Files
CollectFlow/_bmad/tea/workflows/testarch/atdd/steps-c/step-04-generate-tests.md
T

5.8 KiB

name, description, nextStepFile
name description nextStepFile
step-04-generate-tests Orchestrate parallel FAILING test generation (TDD red phase) ./step-04c-aggregate.md

Step 4: Orchestrate Parallel FAILING Test Generation

STEP GOAL

Launch parallel subprocesses to generate FAILING API and E2E tests simultaneously (TDD RED PHASE) for maximum performance.

MANDATORY EXECUTION RULES

  • 📖 Read the entire step file before acting
  • ✅ Speak in {communication_language}
  • ✅ Launch TWO subprocesses in PARALLEL
  • ✅ Generate FAILING tests only (TDD red phase)
  • ✅ Wait for BOTH subprocesses to complete
  • ❌ Do NOT generate sequential tests (use subprocesses)
  • ❌ Do NOT generate passing tests (this is red phase)
  • ❌ Do NOT proceed until both subprocesses finish

EXECUTION PROTOCOLS:

  • 🎯 Follow the MANDATORY SEQUENCE exactly
  • 💾 Wait for subprocess outputs
  • 📖 Load the next step only when instructed

CONTEXT BOUNDARIES:

  • Available context: config, acceptance criteria from Step 1, test strategy from Step 3
  • Focus: subprocess orchestration only
  • Limits: do not generate tests directly (delegate to subprocesses)
  • Dependencies: Steps 1-3 outputs

MANDATORY SEQUENCE

CRITICAL: Follow this sequence exactly. Do not skip, reorder, or improvise.

1. Prepare Subprocess Inputs

Generate unique timestamp for temp file naming:

const timestamp = new Date().toISOString().replace(/[:.]/g, '-');

Prepare input context for both subprocesses:

const subprocessContext = {
  story_acceptance_criteria: /* from Step 1 */,
  test_strategy: /* from Step 3 */,
  knowledge_fragments_loaded: /* list of fragments */,
  config: {
    test_framework: config.test_framework,
    use_playwright_utils: config.tea_use_playwright_utils,
    browser_automation: config.tea_browser_automation
  },
  timestamp: timestamp
};

2. Launch Subprocess A: Failing API Test Generation

Launch subprocess in parallel:

  • Subprocess File: ./step-04a-subprocess-api-failing.md
  • Output File: /tmp/tea-atdd-api-tests-${timestamp}.json
  • Context: Pass subprocessContext
  • Execution: PARALLEL (non-blocking)
  • TDD Phase: RED (failing tests)

System Action:

🚀 Launching Subprocess A: FAILING API Test Generation (RED PHASE)
📝 Output: /tmp/tea-atdd-api-tests-${timestamp}.json
🔴 TDD Phase: RED (tests will fail until feature implemented)
⏳ Status: Running in parallel...

3. Launch Subprocess B: Failing E2E Test Generation

Launch subprocess in parallel:

  • Subprocess File: ./step-04b-subprocess-e2e-failing.md
  • Output File: /tmp/tea-atdd-e2e-tests-${timestamp}.json
  • Context: Pass subprocessContext
  • Execution: PARALLEL (non-blocking)
  • TDD Phase: RED (failing tests)

System Action:

🚀 Launching Subprocess B: FAILING E2E Test Generation (RED PHASE)
📝 Output: /tmp/tea-atdd-e2e-tests-${timestamp}.json
🔴 TDD Phase: RED (tests will fail until feature implemented)
⏳ Status: Running in parallel...

4. Wait for Both Subprocesses to Complete

Monitor subprocess execution:

⏳ Waiting for subprocesses to complete...
  ├── Subprocess A (API RED): Running... ⟳
  └── Subprocess B (E2E RED): Running... ⟳

[... time passes ...]

  ├── Subprocess A (API RED): Complete ✅
  └── Subprocess B (E2E RED): Complete ✅

✅ All subprocesses completed successfully!

Verify both outputs exist:

const apiOutputExists = fs.existsSync(`/tmp/tea-atdd-api-tests-${timestamp}.json`);
const e2eOutputExists = fs.existsSync(`/tmp/tea-atdd-e2e-tests-${timestamp}.json`);

if (!apiOutputExists || !e2eOutputExists) {
  throw new Error('One or both subprocess outputs missing!');
}

5. TDD Red Phase Report

Display TDD status:

🔴 TDD RED PHASE: Failing Tests Generated

✅ Both subprocesses completed:
- API Tests: Generated with test.skip()
- E2E Tests: Generated with test.skip()

📋 All tests assert EXPECTED behavior
📋 All tests will FAIL until feature implemented
📋 This is INTENTIONAL (TDD red phase)

Next: Aggregation will verify TDD compliance

6. Performance Report

Display performance metrics:

🚀 Performance Report:
- Execution Mode: PARALLEL (2 subprocesses)
- API Test Generation: ~X minutes
- E2E Test Generation: ~Y minutes
- Total Elapsed: ~max(X, Y) minutes
- Sequential Would Take: ~(X + Y) minutes
- Performance Gain: ~50% faster!

7. Proceed to Aggregation

Load aggregation step: Load next step: {nextStepFile}

The aggregation step (4C) will:

  • Read both subprocess outputs
  • Verify TDD red phase compliance (all tests have test.skip())
  • Write all test files to disk
  • Generate ATDD checklist
  • Calculate summary statistics

EXIT CONDITION

Proceed to Step 4C (Aggregation) when:

  • ✅ Subprocess A (API failing tests) completed successfully
  • ✅ Subprocess B (E2E failing tests) completed successfully
  • ✅ Both output files exist and are valid JSON
  • ✅ TDD red phase status reported

Do NOT proceed if:

  • ❌ One or both subprocesses failed
  • ❌ Output files missing or corrupted
  • ❌ Subprocess generated passing tests (wrong - must be failing)

🚨 SYSTEM SUCCESS/FAILURE METRICS:

✅ SUCCESS:

  • Both subprocesses launched successfully
  • Both subprocesses completed without errors
  • Output files generated and valid
  • Tests generated with test.skip() (TDD red phase)
  • Parallel execution achieved ~50% performance gain

❌ SYSTEM FAILURE:

  • Failed to launch subprocesses
  • One or both subprocesses failed
  • Output files missing or invalid
  • Tests generated without test.skip() (wrong phase)
  • Attempted sequential generation instead of parallel

Master Rule: TDD RED PHASE requires FAILING tests (with test.skip()). Parallel subprocess execution is MANDATORY for performance.