13 KiB
Step 7.3: Run Test Scenarios
Your Task
Execute all test scenarios defined in the test scenario file and document results.
Before You Start
Ensure you have:
- ✅ Completed step 7.2 (preparation complete)
- ✅ Test scenario file open
- ✅ Environment accessible
- ✅ Recording tools ready
Testing Order
Follow this sequence:
- Happy Path Tests (Most important)
- Error State Tests
- Edge Case Tests
- Design System Validation
- Accessibility Tests
Why this order?
- Happy path must work first
- Errors and edge cases build on happy path
- Design system and accessibility are final polish
1. Happy Path Tests
For Each Happy Path Test
Load test from TS-XXX.yaml:
happy_path:
- id: 'HP-001'
name: 'New User Complete Onboarding'
steps:
- action: 'Open app'
expected: 'Welcome screen appears'
design_ref: 'C-Scenarios/01-welcome/Frontend/specifications.md'
Execute Test Steps
For each step:
-
Start screen recording (for full flow)
-
Perform the action
- Follow exactly as written
- Use prepared test data
- Note any deviations
-
Observe the result
- What actually happened?
- Does it match expected result?
- Any delays or glitches?
-
Compare to design reference
- Open design specification
- Check every detail
- Note any differences
-
Mark as Pass or Fail
✓ PASS: Matches expected result ✗ FAIL: Doesn't match expected result -
Take screenshot if FAIL
- Capture the issue
- Annotate if needed
- Save with clear name:
HP-001-step-3-FAIL.png
-
Document in notes
## HP-001: New User Complete Onboarding ### Step 1: Open app - Action: Opened app - Expected: Welcome screen appears - Actual: Welcome screen appears ✓ - Result: PASS ### Step 2: Tap "Get Started" - Action: Tapped "Get Started" button - Expected: Login/Signup choice appears - Actual: Login/Signup choice appears ✓ - Result: PASS ### Step 3: Tap "Create Account" - Action: Tapped "Create Account" - Expected: Signup form with smooth 300ms transition - Actual: Signup form appears instantly (no transition) - Result: FAIL ✗ - Issue: Transition too fast, feels jarring - Screenshot: HP-001-step-3-FAIL.png
Record Results
Create results summary:
# Happy Path Test Results
## HP-001: New User Complete Onboarding
- Status: FAIL
- Steps: 9 total
- Passed: 8/9 (89%)
- Failed: 1/9 (11%)
- Issues: 1 (transition animation missing)
- Duration: 2 minutes 15 seconds
- Recording: happy-path-HP-001.mov
## HP-002: Returning User Login
- Status: PASS
- Steps: 5 total
- Passed: 5/5 (100%)
- Failed: 0/5 (0%)
- Issues: 0
- Duration: 45 seconds
- Recording: happy-path-HP-002.mov
## Summary
- Total Tests: 2
- Passed: 1/2 (50%)
- Failed: 1/2 (50%)
- Total Issues: 1
2. Error State Tests
For Each Error State Test
Load test from TS-XXX.yaml:
error_states:
- id: 'ES-001'
name: 'Email Already Exists'
steps:
- action: 'Enter existing email'
- action: "Tap 'Create Account'"
- expected: "Error message: 'This email is already registered...'"
Execute Error Tests
For each error test:
-
Set up error condition
- Use prepared test data
- Example: Use
existing@example.com
-
Trigger the error
- Perform action that causes error
- Example: Try to create account with existing email
-
Verify error handling
- Is error message shown?
- Is error message clear and helpful?
- Is error styling correct?
- Can user recover?
-
Check against design spec
- Open error state specification
- Verify exact error message
- Verify error styling
- Verify recovery options
-
Document results
## ES-001: Email Already Exists - Setup: Used test2@example.com (existing account) - Action: Entered email, tapped "Create Account" - Expected: Error: "This email is already registered. Try logging in instead." - Actual: Error: "Email exists" (too brief) - Result: FAIL ✗ - Issue: Error message not helpful enough - Screenshot: ES-001-error-message-FAIL.png
Record Error Test Results
# Error State Test Results
## ES-001: Email Already Exists
- Status: FAIL
- Issue: Error message too brief
- Severity: Medium
## ES-002: Invalid Email Format
- Status: PASS
- Real-time validation works correctly
## ES-003: Weak Password
- Status: PASS
- Password strength indicator works
## ES-004: Network Timeout
- Status: FAIL
- Issue: No timeout handling, app hangs
- Severity: High
## Summary
- Total Tests: 4
- Passed: 2/4 (50%)
- Failed: 2/4 (50%)
- Total Issues: 2
3. Edge Case Tests
For Each Edge Case Test
Load test from TS-XXX.yaml:
edge_cases:
- id: 'EC-001'
name: 'User Closes App Mid-Onboarding'
steps:
- action: 'Start onboarding, complete signup'
- action: 'Close app (force quit)'
- action: 'Reopen app'
- expected: 'Resume at Family Setup'
Execute Edge Case Tests
For each edge case:
-
Set up unusual scenario
- Follow setup instructions
- Create edge condition
-
Perform edge case action
- Example: Force quit app
- Example: Enter 100-character name
- Example: Navigate back
-
Verify graceful handling
- Does app crash? ✗
- Does app handle gracefully? ✓
- Is user experience smooth?
-
Document results
## EC-001: User Closes App Mid-Onboarding - Setup: Completed signup, at Family Setup screen - Action: Force quit app, reopened - Expected: Resume at Family Setup (progress saved) - Actual: Started at Welcome screen (progress lost) - Result: FAIL ✗ - Issue: Progress not saved - Severity: High - Screenshot: EC-001-progress-lost-FAIL.png
Record Edge Case Results
# Edge Case Test Results
## EC-001: User Closes App Mid-Onboarding
- Status: FAIL
- Issue: Progress not saved
- Severity: High
## EC-002: User Navigates Back
- Status: PASS
- Confirmation dialog works correctly
## EC-003: Very Long Family Name
- Status: PASS
- Field truncates at 50 characters
## Summary
- Total Tests: 3
- Passed: 2/3 (67%)
- Failed: 1/3 (33%)
- Total Issues: 1
4. Design System Validation
For Each Component
Load design system checks from TS-XXX.yaml:
design_system_checks:
- id: 'DS-001'
name: 'Button Components'
checks:
- component: 'Primary Button'
instances: ['Get Started', 'Create Account']
verify:
- 'Height: 48px'
- 'Background: #2563EB'
- 'Text: #FFFFFF'
- 'Typography: 16px, semibold'
Validate Component Usage
For each component instance:
-
Locate component
- Find all instances in the flow
- Example: "Get Started" button, "Create Account" button
-
Measure dimensions
- Use browser dev tools or design tools
- Check height, width, padding
-
Check colors
- Use color picker tool
- Compare to design tokens
- Check hex values exactly
-
Check typography
- Font size
- Font weight
- Line height
- Letter spacing
-
Check spacing
- Padding inside component
- Margin around component
- Spacing between elements
-
Check states
- Default state
- Hover state (if applicable)
- Active/pressed state
- Disabled state
- Focus state
-
Document results
## DS-001: Button Components ### Primary Button: "Get Started" - Height: 48px ✓ - Background: #3B82F6 ✗ (Expected: #2563EB) - Text: #FFFFFF ✓ - Typography: 16px, semibold ✓ - Border radius: 8px ✓ - Padding: 12px 24px ✓ - Result: FAIL (wrong background color) - Screenshot: DS-001-button-color-FAIL.png ### Primary Button: "Create Account" - Height: 48px ✓ - Background: #3B82F6 ✗ (Expected: #2563EB) - Text: #FFFFFF ✓ - Typography: 16px, semibold ✓ - Result: FAIL (same color issue)
Record Design System Results
# Design System Validation Results
## DS-001: Button Components
- Status: FAIL
- Issue: Primary button color incorrect (#3B82F6 vs #2563EB)
- Instances: All primary buttons affected
- Severity: High
## DS-002: Input Components
- Status: PASS
- All input fields match specifications
## DS-003: Spacing and Layout
- Status: PASS
- Screen padding: 20px ✓
- Element spacing: 16px ✓
## Summary
- Total Components: 3 types
- Compliant: 2/3 (67%)
- Non-compliant: 1/3 (33%)
- Target: >95% compliance
- Result: FAIL (below threshold)
5. Accessibility Tests
Screen Reader Testing
Enable screen reader:
- iOS: VoiceOver (Settings → Accessibility)
- Android: TalkBack (Settings → Accessibility)
Test navigation:
-
Navigate through flow using only screen reader
- Can you complete the flow?
- Are all elements announced?
- Is navigation order logical?
-
Check button labels
- Are buttons descriptive?
- "Button" vs "Get Started button"
-
Check form field labels
- Are fields announced with purpose?
- "Text field" vs "Email address text field"
-
Check error announcements
- Are errors announced?
- Are they clear?
-
Document results
## A11Y-001: Screen Reader Navigation - Setup: Enabled VoiceOver on iOS - Test: Navigated through onboarding - Result: PARTIAL PASS Issues: - "Get Started" button announced as just "Button" ✗ - Email field announced correctly ✓ - Password field announced correctly ✓ - Error messages not announced ✗ Severity: Medium
Color Contrast Testing
Use contrast checker tool:
-
Check text on background
- Body text: 4.5:1 minimum (WCAG AA)
- Large text: 3:1 minimum
-
Check button text
- Button text on button background: 4.5:1 minimum
-
Check error text
- Error text on background: 4.5:1 minimum
-
Document results
## A11Y-002: Color Contrast - Body text on white: 7.2:1 ✓ (PASS) - Button text on primary: 5.1:1 ✓ (PASS) - Error text on white: 4.8:1 ✓ (PASS) - Link text on white: 3.9:1 ✗ (FAIL - below 4.5:1) Result: FAIL (link contrast too low)
Touch Target Testing
Measure interactive elements:
-
Check all buttons
- Minimum: 44×44px
- Measure actual size
-
Check all input fields
- Minimum height: 44px
- Measure actual height
-
Check spacing
- Minimum 8px between targets
- Measure actual spacing
-
Document results
## A11Y-003: Touch Targets - Primary buttons: 48×120px ✓ (PASS) - Input fields: 48px height ✓ (PASS) - Text links: 32px height ✗ (FAIL - below 44px) - Spacing between buttons: 16px ✓ (PASS) Result: FAIL (text links too small)
Record Accessibility Results
# Accessibility Test Results
## A11Y-001: Screen Reader Navigation
- Status: PARTIAL PASS
- Issues: 2 (button labels, error announcements)
- Severity: Medium
## A11Y-002: Color Contrast
- Status: FAIL
- Issue: Link contrast too low (3.9:1)
- Severity: Medium
## A11Y-003: Touch Targets
- Status: FAIL
- Issue: Text links too small (32px)
- Severity: Low
## Summary
- Total Tests: 3
- Passed: 0/3 (0%)
- Partial: 1/3 (33%)
- Failed: 2/3 (67%)
- Total Issues: 4
Overall Test Summary
Compile all results:
# Test Summary: DD-XXX [Flow Name]
**Date:** 2024-12-09
**Tester:** [Your name]
**Build:** v0.1.0-beta.1
**Device:** iPhone 14 Pro (iOS 17)
## Overall Result
**Status:** FAIL (8 issues found, 3 high severity)
## Test Coverage
- Happy Path: 8/9 passed (89%)
- Error States: 2/4 passed (50%)
- Edge Cases: 2/3 passed (67%)
- Design System: 2/3 compliant (67%)
- Accessibility: 0/3 passed (0%)
## Issues Summary
**Total Issues:** 8
**By Severity:**
- Critical: 0
- High: 3
- Medium: 3
- Low: 2
**By Category:**
- Functionality: 3
- Design System: 1
- Accessibility: 4
## Next Steps
1. Create issue tickets for all 8 issues
2. Create detailed test report
3. Send to BMad for fixes
4. Schedule retest after fixes
Next Step
After completing all tests:
[C] Continue to step-7.4-create-issues.md
Success Metrics
✅ All happy path tests executed ✅ All error state tests executed ✅ All edge case tests executed ✅ Design system validation complete ✅ Accessibility tests complete ✅ All results documented ✅ Screenshots captured for issues ✅ Screen recordings saved
Failure Modes
❌ Skipping test categories ❌ Not documenting results ❌ No screenshots for issues ❌ Not checking design references ❌ Rushing through tests ❌ Not measuring design system compliance
Remember: Be thorough! Every issue you find now prevents problems in production!