10 KiB
10 KiB
Test Framework Setup - Validation Checklist
This checklist ensures the framework workflow completes successfully and all deliverables meet quality standards.
Prerequisites
Before starting the workflow:
- Project root contains valid
package.json - No existing modern E2E framework detected (
playwright.config.*,cypress.config.*) - Project type identifiable (React, Vue, Angular, Next.js, Node, etc.)
- Bundler identifiable (Vite, Webpack, Rollup, esbuild) or not applicable
- User has write permissions to create directories and files
Process Steps
Step 1: Preflight Checks
- package.json successfully read and parsed
- Project type extracted correctly
- Bundler identified (or marked as N/A for backend projects)
- No framework conflicts detected
- Architecture documents located (if available)
Step 2: Framework Selection
- Framework auto-detection logic executed
- Framework choice justified (Playwright vs Cypress)
- Framework preference respected (if explicitly set)
- User notified of framework selection and rationale
Step 3: Directory Structure
tests/root directory createdtests/e2e/directory created (or user's preferred structure)tests/support/directory created (critical pattern)tests/support/fixtures/directory createdtests/support/fixtures/factories/directory createdtests/support/helpers/directory createdtests/support/page-objects/directory created (if applicable)- All directories have correct permissions
Note: Test organization is flexible (e2e/, api/, integration/). The support/ folder is the key pattern.
Step 4: Configuration Files
- Framework config file created (
playwright.config.tsorcypress.config.ts) - Config file uses TypeScript (if
use_typescript: true) - Timeouts configured correctly (action: 15s, navigation: 30s, test: 60s)
- Base URL configured with environment variable fallback
- Trace/screenshot/video set to retain-on-failure
- Multiple reporters configured (HTML + JUnit + console)
- Parallel execution enabled
- CI-specific settings configured (retries, workers)
- Config file is syntactically valid (no compilation errors)
Step 5: Environment Configuration
.env.examplecreated in project rootTEST_ENVvariable definedBASE_URLvariable defined with defaultAPI_URLvariable defined (if applicable)- Authentication variables defined (if applicable)
- Feature flag variables defined (if applicable)
.nvmrccreated with appropriate Node version
Step 6: Fixture Architecture
tests/support/fixtures/index.tscreated- Base fixture extended from Playwright/Cypress
- Type definitions for fixtures created
- mergeTests pattern implemented (if multiple fixtures)
- Auto-cleanup logic included in fixtures
- Fixture architecture follows knowledge base patterns
Step 7: Data Factories
- At least one factory created (e.g., UserFactory)
- Factories use @faker-js/faker for realistic data
- Factories track created entities (for cleanup)
- Factories implement
cleanup()method - Factories integrate with fixtures
- Factories follow knowledge base patterns
Step 8: Sample Tests
- Example test file created (
tests/e2e/example.spec.ts) - Test uses fixture architecture
- Test demonstrates data factory usage
- Test uses proper selector strategy (data-testid)
- Test follows Given-When-Then structure
- Test includes proper assertions
- Network interception demonstrated (if applicable)
Step 9: Helper Utilities
- API helper created (if API testing needed)
- Network helper created (if network mocking needed)
- Auth helper created (if authentication needed)
- Helpers follow functional patterns
- Helpers have proper error handling
Step 10: Documentation
tests/README.mdcreated- Setup instructions included
- Running tests section included
- Architecture overview section included
- Best practices section included
- CI integration section included
- Knowledge base references included
- Troubleshooting section included
Step 11: Package.json Updates
- Minimal test script added to package.json:
test:e2e - Test framework dependency added (if not already present)
- Type definitions added (if TypeScript)
- Users can extend with additional scripts as needed
Output Validation
Configuration Validation
- Config file loads without errors
- Config file passes linting (if linter configured)
- Config file uses correct syntax for chosen framework
- All paths in config resolve correctly
- Reporter output directories exist or are created on test run
Test Execution Validation
- Sample test runs successfully
- Test execution produces expected output (pass/fail)
- Test artifacts generated correctly (traces, screenshots, videos)
- Test report generated successfully
- No console errors or warnings during test run
Directory Structure Validation
- All required directories exist
- Directory structure matches framework conventions
- No duplicate or conflicting directories
- Directories accessible with correct permissions
File Integrity Validation
- All generated files are syntactically correct
- No placeholder text left in files (e.g., "TODO", "FIXME")
- All imports resolve correctly
- No hardcoded credentials or secrets in files
- All file paths use correct separators for OS
Quality Checks
Code Quality
- Generated code follows project coding standards
- TypeScript types are complete and accurate (no
anyunless necessary) - No unused imports or variables
- Consistent code formatting (matches project style)
- No linting errors in generated files
Best Practices Compliance
- Fixture architecture follows pure function → fixture → mergeTests pattern
- Data factories implement auto-cleanup
- Network interception occurs before navigation
- Selectors use data-testid strategy
- Artifacts only captured on failure
- Tests follow Given-When-Then structure
- No hard-coded waits or sleeps
Knowledge Base Alignment
- Fixture pattern matches
fixture-architecture.md - Data factories match
data-factories.md - Network handling matches
network-first.md - Config follows
playwright-config.mdortest-config.md - Test quality matches
test-quality.md
Security Checks
- No credentials in configuration files
- .env.example contains placeholders, not real values
- Sensitive test data handled securely
- API keys and tokens use environment variables
- No secrets committed to version control
Integration Points
Status File Integration
bmm-workflow-status.mdexists- Framework initialization logged in Quality & Testing Progress section
- Status file updated with completion timestamp
- Status file shows framework: Playwright or Cypress
Knowledge Base Integration
- Relevant knowledge fragments identified from tea-index.csv
- Knowledge fragments successfully loaded
- Patterns from knowledge base applied correctly
- Knowledge base references included in documentation
Workflow Dependencies
- Can proceed to
ciworkflow after completion - Can proceed to
test-designworkflow after completion - Can proceed to
atddworkflow after completion - Framework setup compatible with downstream workflows
Completion Criteria
All of the following must be true:
- All prerequisite checks passed
- All process steps completed without errors
- All output validations passed
- All quality checks passed
- All integration points verified
- Sample test executes successfully
- User can run
npm run test:e2ewithout errors - Documentation is complete and accurate
- No critical issues or blockers identified
Post-Workflow Actions
User must complete:
- Copy
.env.exampleto.env - Fill in environment-specific values in
.env - Run
npm installto install test dependencies - Run
npm run test:e2eto verify setup - Review
tests/README.mdfor project-specific guidance
Recommended next workflows:
- Run
ciworkflow to set up CI/CD pipeline - Run
test-designworkflow to plan test coverage - Run
atddworkflow when ready to develop stories
Rollback Procedure
If workflow fails and needs to be rolled back:
- Delete
tests/directory - Remove test scripts from package.json
- Delete
.env.example(if created) - Delete
.nvmrc(if created) - Delete framework config file
- Remove test dependencies from package.json (if added)
- Run
npm installto clean up node_modules
Notes
Common Issues
Issue: Config file has TypeScript errors
- Solution: Ensure
@playwright/testorcypresstypes are installed
Issue: Sample test fails to run
- Solution: Check BASE_URL in .env, ensure app is running
Issue: Fixture cleanup not working
- Solution: Verify cleanup() is called in fixture teardown
Issue: Network interception not working
- Solution: Ensure route setup occurs before page.goto()
Framework-Specific Considerations
Playwright:
- Requires Node.js 18+
- Browser binaries auto-installed on first run
- Trace viewer requires running
npx playwright show-trace
Cypress:
- Requires Node.js 18+
- Cypress app opens on first run
- Component testing requires additional setup
Version Compatibility
- Node.js version matches .nvmrc
- Framework version compatible with Node.js version
- TypeScript version compatible with framework
- All peer dependencies satisfied
Checklist Complete: Sign off when all items checked and validated.
Completed by: {name} Date: {date} Framework: { Playwright / Cypress or something else} Notes: {notes}