Use this checklist to validate that the automate workflow has been executed correctly and all deliverables meet quality standards.
Before starting this workflow, verify:
Halt only if: Framework scaffolding is completely missing (run framework workflow first)
Note: BMad artifacts (story, tech-spec, PRD) are OPTIONAL - workflow can run without them
Note: automate generates tests; it does not run *atdd or *test-review. If ATDD outputs exist, use them as input and avoid duplicate coverage.
{story_file} provided){use_tech_spec} true and file exists){use_test_design} true and file exists){use_prd} true and file exists){test_dir}{test_dir} (if {analyze_coverage} true)test-levels-framework.md - Test level selectiontest-priorities.md - Priority classification (P0-P3)fixture-architecture.md - Fixture patterns with auto-cleanupdata-factories.md - Factory patterns using fakerselective-testing.md - Targeted test execution strategiesci-burn-in.md - Flaky test detection patternstest-quality.md - Test design principlesBMad-Integrated Mode (if story available):
Standalone Mode (if no story):
{target_feature} specified){target_files} specified){auto_discover_features} true)test-levels-framework.md)test-priorities.md framework{include_p0} = true (always include){include_p1} = true (high priority){include_p2} = true (medium priority){include_p3} = false (low priority, skip by default)tests/support/fixtures/{generate_fixtures} true)test.extend() patterntests/support/factories/{generate_factories} true)@faker-js/faker for random data (no hardcoded values)tests/support/helpers/ (if {update_helpers} true)tests/e2e/ for E2E teststests/api/ for API teststests/component/ for component teststests/unit/ for unit teststests/support/ for fixtures/factories/helperstests/e2e/tests/api/tests/component/tests/unit/await page.waitForTimeout() (forbidden)if (await element.isVisible()) (forbidden)page.route() called before page.goto() to prevent race conditions{auto_validate} setting noted (default: true){auto_heal_failures} setting noted (default: false){max_healing_iterations} setting noted (default: 3){use_mcp_healing} setting noted (default: true)test-healing-patterns.md loaded (common failure patterns and fixes)selector-resilience.md loaded (selector refactoring guide)timing-debugging.md loaded (race condition fixes){auto_validate} true){auto_heal_failures} true AND tests failed)test.fixme() (if {mark_unhealable_as_fixme} true)tests/README.md created or updated (if {update_readme} true){update_package_scripts} true)test:e2e script for all E2E teststest:e2e:p0 script for P0 tests onlytest:e2e:p1 script for P0 + P1 teststest:api script for API teststest:component script for component teststest:unit script for unit tests (if applicable){run_tests_after_generation} true){output_summary}test-levels-framework.md)test-priorities.md)fixture-architecture.md)data-factories.md)selective-testing.md)ci-burn-in.md)test-quality.md)With Story Workflow:
With test-design Workflow:
With atdd Workflow:
atdd not auto-run)All of the following must be true before marking this workflow as complete:
Problem: Story, tech-spec, or PRD files not found when variables are set.
Resolution:
Problem: No playwright.config.ts or cypress.config.ts found.
Resolution:
bmad tea *framework first."Problem: Neither story, target_feature, nor target_files specified, and auto-discover finds nothing.
Resolution:
target_feature: "src/auth/" or target_files: "src/auth/login.ts,src/auth/session.ts"Problem: Same behavior tested at multiple levels (E2E + API + Component).
Resolution:
Problem: Tests use hardcoded email addresses, passwords, or other data.
Resolution:
createUser({ email: faker.internet.email() })Problem: Tests fail intermittently, pass on retry.
Resolution:
page.waitForTimeout())page.waitForSelector())if (await element.isVisible()))Problem: Test data persists after test run, causing test pollution.
Resolution:
await use(data)Problem: Tests take longer than 90 seconds (max_test_duration).
Resolution: