Files
Krow-workspace/docs/QA_TESTING_CHECKLIST.md
Achintha Isuru 08b96cea6f feat: Introduce CoverageWorker entity and update coverage repository
- Added CoverageWorker entity to represent worker status and check-in information.
- Updated CoverageRepositoryImpl to utilize CoverageWorker and its status.
- Removed legacy coverage_entities.dart file and replaced references with krow_domain imports.
- Enhanced coverage statistics calculations based on new worker status logic.
- Updated UI components to reflect changes in worker status representation.
- Modified acceptance of shifts to align with new status definitions.
- Cleaned up QA testing checklist to remove outdated items and clarify requirements.
2026-02-01 21:05:14 -05:00

26 KiB
Raw Blame History

🧪 KROW Workforce Platform - QA Testing Checklist

Version: 1.0
Date: February 1, 2026
Coverage: Client App + Staff App
Purpose: Manual QA and Regression Testing


📋 TABLE OF CONTENTS

  1. Feature-Level QA Checklist
  2. Cross-Application Test Scenarios
  3. Shared Infrastructure Validation
  4. Regression & Release Checklist

1 FEATURE-LEVEL QA CHECKLIST

CLIENT APP FEATURES


📱 CLIENT-001: Authentication

Applications: Client
Entry Points:

  • Launch app → Get Started → Sign In
  • Launch app → Get Started → Sign Up

Happy Path Test Cases:

  • Sign in with valid email and password displays home dashboard
  • Sign up with business details creates account and navigates to home

Validation & Error States:

  • Invalid email format shows validation error
  • Incorrect password shows authentication error
  • Weak password in sign-up shows strength requirements
  • Duplicate email in sign-up shows "already registered" error
  • Empty fields show required field errors

Loading & Empty States:

  • Loading spinner displays during authentication
  • OAuth redirect shows appropriate loading state

📱 CLIENT-002: Home Dashboard

Applications: Client
Entry Points:

  • Home tab (bottom navigation)

Happy Path Test Cases:

  • Dashboard displays current day coverage widget
  • Spending analytics widget shows correct totals
  • Recent reorders display completed shift roles
  • Quick action buttons navigate to correct features
  • Drag-and-drop widget reordering works correctly

Validation & Error States:

  • Empty state shows "No data available" when no orders exist

Loading & Empty States:

  • Empty coverage shows "No shifts today"
  • Empty reorders shows "No recent orders"

📱 CLIENT-003: Create Order

Applications: Client
Entry Points:

  • Home → Create Order button
  • Orders tab → + FAB button
  • Order type → One-Time

Happy Path Test Cases:

  • Order type selection displays.
  • Hub selection shows list of business hubs
  • Role selection displays vendor roles
  • Position quantity can be incremented/decremented (min 1)
  • Date picker displays correct calendar
  • Time pickers show valid time ranges
  • Break duration affects total hours calculation
  • Cost preview calculates correctly (rate × positions × hours)
  • Order submission creates order, shift, and shift roles
  • Success confirmation displays after submission
  • New order appears in View Orders list

Validation & Error States:

  • Empty hub field shows validation error
  • Empty role field shows validation error
  • Zero positions shows validation error
  • Invalid date (past) shows validation error
  • Start time after end time shows validation error
  • Missing required fields prevent submission
  • Backend validation errors display appropriately

Loading & Empty States:

  • Hub list shows "No hubs" if none exist
  • Role list shows "No roles" if none configured
  • Loading spinner displays during submission
  • Submission progress indicator updates

📱 CLIENT-004: View Orders

Applications: Client
Entry Points:

  • Orders tab (bottom navigation)

Happy Path Test Cases:

  • Orders list displays orders for selected date
  • Calendar date selection updates order list
  • Each order card shows hub name and address
  • Each order card shows shift time range
  • Each order card shows role positions (filled/total)
  • Each order card shows hourly rate and total cost
  • Accepted applications section displays confirmed staff
  • Staff names and photos display correctly
  • Order list scrolls smoothly with many orders

Validation & Error States:

  • Invalid date selection shows error

  • Missing staff data shows placeholder

Loading & Empty States:

  • Empty date shows "No orders for this date"
  • Empty accepted applications shows "No confirmed staff"

📱 CLIENT-005: Coverage Monitoring

Applications: Client
Entry Points:

  • Coverage tab (bottom navigation)

Happy Path Test Cases:

  • Coverage overview displays current date
  • Coverage stats show needed/confirmed/checked-in counts
  • Shift cards display hub name and time range
  • Worker cards show staff name and photo
  • Check-in status indicators update correctly (late, en-route, checked-in)
  • Late workers display with warning indicator
  • Coverage progress bar updates correctly

Validation & Error States:

  • Missing worker photo shows default avatar

Loading & Empty States:

  • Empty coverage shows "No shifts today"
  • No workers show "No staff assigned"

State Persistence:

  • Coverage data refreshes automatically every X minutes
  • Manual refresh via pull-to-refresh gesture

Backend Dependency Validation:

  • listShiftRolesByBusinessAndDateRange returns shift requirements
  • listStaffsApplicationsByBusinessForDay returns staff status
  • Attendance status correctly mapped from backend

📱 CLIENT-006: Billing & Invoices

Applications: Client
Entry Points:

  • Billing tab (bottom navigation)

Happy Path Test Cases:

  • Current bill amount displays correctly
  • Pending invoices list shows open invoices
  • Invoice history shows paid invoices
  • Savings amount displays correctly
  • Spending breakdown shows costs by role
  • Period filter (weekly/monthly) updates data
  • Invoice detail view shows line items
  • Invoice PDF download works (if implemented)

Validation & Error States:

  • Zero billing shows $0.00 (not error)
  • Negative savings shows correctly
  • Missing invoice data shows placeholder

Loading & Empty States:

  • Empty pending invoices shows "No pending invoices"
  • Empty history shows "No invoice history"
  • Empty spending breakdown shows "No spending data"

📱 CLIENT-007: Hub Management

Applications: Client
Entry Points:

  • Settings → Hubs
  • Create Order → Add Hub button

Happy Path Test Cases:

  • Hubs list displays all business hubs
  • Hub cards show name and full address
  • Add hub button opens creation form
  • Google Places autocomplete suggests addresses
  • Address selection auto-fills all address fields
  • Hub name can be customized
  • Hub creation adds to list immediately
  • Hub deletion removes from list (with confirmation)
  • Team entity auto-created for business if missing

Validation & Error States:

  • Empty hub name shows validation error
  • Empty address shows validation error
  • Invalid address format shows error
  • Duplicate hub name shows warning
  • Hub with active orders prevents deletion (validation error)

Loading & Empty States:

  • Empty hubs list shows "No hubs configured"
  • Hub creation shows loading spinner

📱 CLIENT-008: Settings

Applications: Client
Entry Points:

  • Settings (navigation menu)

Happy Path Test Cases:

  • User profile displays name and email
  • Business name displays correctly
  • Hubs link navigates to hub management
  • Sign out logs out user and returns to auth screen

Validation & Error States:

  • Missing profile photo shows default avatar
  • Sign out error shows retry option

Loading & Empty States:

  • Profile data loads on page mount

📱 CLIENT-009: Client Main Navigation

Applications: Client
Entry Points:

  • Main app shell after authentication

Happy Path Test Cases:

  • Bottom navigation displays 5 tabs (Home, Coverage, Billing, Orders, Reports)
  • Tab selection updates active indicator
  • Tab selection navigates to correct feature
  • Deep links navigate to correct tab
  • Back button navigates correctly within nested routes
  • Tab state persists after device rotation

Validation & Error States:

  • Invalid route shows 404 or redirects to home
  • Reports tab shows placeholder (not yet implemented)

Loading & Empty States:

  • Navigation bar displays immediately
  • Initial tab loads first

STAFF APP FEATURES


📱 STAFF-001: Authentication

Applications: Staff
Entry Points:

  • Launch app → Get Started → Phone Verification

Happy Path Test Cases:

  • Phone number entry accepts valid formats
  • OTP sent confirmation displays
  • OTP verification succeeds with valid code
  • Profile setup wizard displays for new users
  • Authenticated users bypass auth and show home

Validation & Error States:

  • Invalid phone format shows validation error
  • Incorrect OTP shows verification error
  • Expired OTP shows re-send option
  • Empty fields show required field errors
  • Network error displays retry option

Loading & Empty States:

  • Loading spinner displays during phone verification
  • OTP input shows countdown timer
  • Profile setup shows progress indicator

📱 STAFF-002: Home Dashboard

Applications: Staff
Entry Points:

  • Home tab (bottom navigation)

Happy Path Test Cases:

  • Today's shifts display with time and location
  • Tomorrow's shifts display correctly
  • Recommended shifts show available opportunities
  • Shift cards show role, location, and pay rate
  • Quick actions navigate to correct features
  • Dashboard refreshes on pull-to-refresh

Validation & Error States:

  • Missing shift data shows placeholder

Loading & Empty States:

  • Empty today's shifts shows "No shifts today"
  • Empty recommended shows "No available shifts"

📱 STAFF-003: Profile

Applications: Staff
Entry Points:

  • Profile tab (bottom navigation)

Happy Path Test Cases:

  • Profile displays name, email, phone, and photo
  • Statistics show total shifts, ratings, reliability score
  • Profile sections list displays all sections
  • Section navigation works correctly
  • Sign out logs out user and returns to auth screen

Validation & Error States:

  • Missing profile photo shows default avatar
  • Missing statistics show 0 or default values
  • Sign out error shows retry option

Loading & Empty States:

  • Profile data loads on page mount

📱 STAFF-004: Shifts Management

Applications: Staff
Entry Points:

  • Shifts tab (bottom navigation)
  • Tab navigation: My Shifts / Available / Pending / Cancelled / History

Happy Path Test Cases:

  • My Shifts tab displays assigned shifts
  • Available Shifts tab shows open positions
  • Pending tab shows applications awaiting approval
  • Cancelled tab shows cancelled shifts
  • History tab shows past shifts
  • Shift detail view displays full information
  • Accept shift updates status to confirmed
  • Decline shift updates status to declined
  • Apply for shift creates application
  • Shift cards show time, location, role, and pay

Validation & Error States:

  • Empty tabs show appropriate empty state messages
  • Already applied shift prevents duplicate application
  • Past shifts cannot be applied to
  • Cancelled shifts show cancellation reason

📱 STAFF-005: Availability Management

Applications: Staff
Entry Points:

  • Worker Main → Availability
  • Profile → Availability section

Happy Path Test Cases:

  • Weekly grid displays Monday-Sunday
  • Time slots (Morning/Afternoon/Evening) toggle correctly
  • Quick-set buttons work (Weekdays/Weekends/All Week)
  • Individual day/slot updates save correctly
  • Green checkmarks indicate availability
  • Gray states indicate unavailability
  • Changes save automatically

Validation & Error States:

  • Save failure shows error message

Loading & Empty States:

  • Loading spinner displays while fetching availability
  • Default state shows all unavailable

📱 STAFF-006: Clock In/Out

Applications: Staff
Entry Points:

  • Clock In tab (bottom navigation)

Happy Path Test Cases:

  • Today's shift displays with clock in button
  • Clock in button creates attendance record
  • Clock in time displays correctly
  • Clock out button appears after clocking in
  • Clock out creates end time record
  • Total hours calculated correctly
  • Attendance status updates immediately

Validation & Error States:

  • No shift today shows "No shifts to clock in"

  • Already clocked in prevents duplicate clock in

  • Clock in outside shift time shows warning

Loading & Empty States:

  • Loading spinner displays while fetching shift
  • Empty state shows "No shifts scheduled"

📱 STAFF-007: Payments

Applications: Staff
Entry Points:

  • Payments tab (bottom navigation)

Happy Path Test Cases:

  • Payment summary displays total earnings
  • Payment history lists all transactions
  • Payment cards show amount, date, and status
  • Payment detail view shows breakdown
  • Filter by date range works correctly

Validation & Error States:

  • Zero earnings show $0.00 (not error)
  • Missing payment data shows placeholder

Loading & Empty States:

  • Empty history shows "No payment history"

📱 STAFF-008: Personal Info (Onboarding)

Applications: Staff
Entry Points:

  • Profile → Personal Info
  • Onboarding wizard

Happy Path Test Cases:

  • Form displays current profile data
  • Name field allows text input
  • Email field validates email format
  • Phone field validates phone format
  • Photo upload works correctly
  • Preferred locations multi-select works
  • Save button updates profile

Validation & Error States:

  • Empty required fields show validation errors

  • Invalid email format shows error

  • Invalid phone format shows error

  • Photo upload failure shows error

Loading & Empty States:

  • Form loads with skeleton placeholders
  • Photo upload shows progress indicator
  • Save button shows loading spinner

📱 STAFF-009: Emergency Contact (Onboarding)

Applications: Staff
Entry Points:

  • Profile → Emergency Contact
  • Onboarding wizard

Happy Path Test Cases:

  • Contact list displays all contacts
  • Add contact button opens form
  • Contact form validates name and phone
  • Relationship dropdown shows options (Family/Spouse/Friend/Other)
  • Remove contact deletes from list
  • Save updates all contacts
  • Multiple contacts supported

Validation & Error States:

  • Empty name shows validation error
  • Invalid phone format shows error
  • At least one contact required (if applicable)

Loading & Empty States:

  • Loading spinner displays while fetching contacts
  • Empty state shows "No emergency contacts"
  • Save button shows loading spinner

📱 STAFF-010: Experience & Skills (Onboarding)

Applications: Staff
Entry Points:

  • Profile → Experience
  • Onboarding wizard

Happy Path Test Cases:

  • Industries multi-select displays options
  • Skills multi-select displays options
  • Selected items show checkmarks
  • Deselection removes items
  • Save updates profile

Validation & Error States:

  • At least one industry required (if applicable)
  • At least one skill required (if applicable)

Loading & Empty States:

  • Loading spinner displays while fetching data
  • Save button shows loading spinner

📱 STAFF-012: Bank Account (Finances)

Applications: Staff
Entry Points:

  • Profile → Bank Account

Happy Path Test Cases:

  • Account list displays all accounts
  • Add account button opens form
  • Form validates routing and account numbers
  • Account type dropdown shows options (Checking/Savings)
  • First account auto-sets as primary
  • Save adds account to list
  • Primary account indicator displays

Validation & Error States:

  • Empty routing number shows validation error
  • Invalid routing number format shows error
  • Empty account number shows validation error
  • Invalid account number format shows error
  • Duplicate account shows warning

Loading & Empty States:

  • Loading spinner displays while fetching accounts
  • Empty state shows "No bank accounts"
  • Save button shows loading spinner

State Persistence:

  • Accounts persist after save
  • Account list refreshes after addition

Backend Dependency Validation:

  • getAccountsByOwnerId fetches staff accounts
  • createAccount creates new account
  • First account auto-flagged as primary

📱 STAFF-013: Time Card History (Finances)

Applications: Staff
Entry Points:

  • Profile → Time Card

Happy Path Test Cases:

  • Time card list displays all records
  • Each card shows shift details (date, time, location)
  • Each card shows clock in/out times
  • Each card shows total hours worked
  • Scrolling loads more records (pagination)

Validation & Error States:

  • Missing attendance data shows "Not recorded"

Loading & Empty States:

  • Empty state shows "No time card history"

📱 STAFF-014: Tax Forms (Compliance)

Applications: Staff
Entry Points:

  • Profile → Tax Forms

Happy Path Test Cases:

  • Forms list displays required forms (I-9, W-4)
  • Form status shows completed/incomplete
  • I-9 form opens editor
  • I-9 form validates all fields
  • W-4 form opens editor
  • W-4 form validates all fields
  • Form submission updates status to completed
  • Completed forms show edit option

Validation & Error States:

  • Empty required fields show validation errors
  • Invalid SSN format shows error
  • Invalid date format shows error
  • Signature required validation

Loading & Empty States:

  • Loading spinner displays while fetching forms
  • Form editor loads with skeleton placeholders
  • Save button shows loading spinner

📱 STAFF-017: Staff Main Navigation

Applications: Staff
Entry Points:

  • Main app shell after authentication

Happy Path Test Cases:

  • Bottom navigation displays 5 tabs (Shifts, Payments, Home, Clock In, Profile)
  • Tab selection updates active indicator
  • Tab selection navigates to correct feature
  • Deep links navigate to correct tab and nested route
  • Back button navigates correctly within nested routes
  • Tab state persists after device rotation
  • Nested routes (onboarding, emergency-contact, etc.) accessible

Validation & Error States:

  • Invalid route shows 404 or redirects to home
  • Navigation errors log appropriately

Loading & Empty States:

  • Navigation bar displays immediately
  • Initial tab loads first

State Persistence:

  • Active tab persists after app background → foreground
  • Tab state resets to home on app restart

Backend Dependency Validation:

  • No direct backend calls (navigation only)

2 CROSS-APPLICATION TEST SCENARIOS

Scenario 1: Order Creation → Staff Application Flow

Preconditions:

  • Client user authenticated
  • Staff user authenticated
  • At least one hub configured

Steps:

  1. CLIENT APP:

    • Create one-time order with specific hub, role, date, and time
    • Verify order appears in View Orders list
    • Verify shift shows as unfilled (0/X positions)
  2. STAFF APP:

    • Open Shifts tab → Available tab
    • Verify new shift appears in available list
    • Verify shift details match order (hub, role, time, pay)
    • Apply for shift position
  3. CLIENT APP:

    • Refresh View Orders
    • Verify shift shows pending application (0/X filled, pending)
  4. STAFF APP:

    • Verify application appears in Pending tab
    • Verify shift removed from Available tab

Expected Results:

  • Order created in Client appears in Staff Available Shifts
  • Application in Staff shows pending in both apps
  • Shift counts update correctly in real-time

Scenario 2: Shift Acceptance → Coverage Tracking

Preconditions:

  • Scenario 1 completed (pending application exists)

Steps:

  1. STAFF APP:

    • Go to Shifts → Pending tab
    • Accept pending shift assignment
  2. CLIENT APP:

    • Refresh View Orders
    • Verify shift shows as filled (1/X positions)
    • Verify staff name and photo appear in accepted applications
    • Navigate to Coverage tab
    • Verify shift appears with assigned staff
  3. STAFF APP:

    • Verify shift moved from Pending to My Shifts tab
    • Verify shift appears on Home dashboard

Expected Results:

  • Accepted shift reflects in Client orders immediately
  • Staff appears in Coverage monitoring
  • Shift moves to My Shifts in Staff app

Scenario 3: Clock In → Real-Time Coverage Update

Preconditions:

  • Scenario 2 completed (staff has accepted shift)
  • Current date/time is during shift window

Steps:

  1. STAFF APP:

    • Navigate to Clock In tab
    • Verify today's shift displays
    • Click Clock In button
    • Verify clock in time recorded
  2. CLIENT APP:

    • Navigate to Coverage tab
    • Verify staff status changed to "Checked In"
    • Verify check-in time displays
    • Verify coverage stats updated (checked-in count incremented)
  3. STAFF APP:

    • Wait until shift end time
    • Click Clock Out button
    • Verify clock out time recorded
  4. CLIENT APP:

    • Refresh Coverage tab
    • Verify staff status changed to "Completed"
  5. STAFF APP:

    • Navigate to Time Card
    • Verify attendance record appears with correct times and hours

Expected Results:

  • Clock in updates Coverage status in Client
  • Clock out completes attendance record
  • Time card displays correct hours in Staff app
  • Coverage monitoring reflects real-time status

Scenario 4: Hub Creation → Order Placement

Preconditions:

  • Client user authenticated
  • No existing hubs

Steps:

  1. CLIENT APP:

    • Navigate to Settings → Hubs
    • Verify empty state "No hubs configured"
    • Click Add Hub button
    • Enter hub name and use Google Places autocomplete
    • Select address from suggestions
    • Verify address fields auto-filled
    • Save hub
  2. CLIENT APP:

    • Navigate to Create Order
    • Verify new hub appears in hub selection list
    • Select new hub and complete order creation
  3. STAFF APP:

    • Navigate to Shifts → Available
    • Verify shift shows correct hub name and address

Expected Results:

  • Hub created in Settings appears in order creation
  • Hub address propagates to shift details in Staff app

Scenario 5: Shift Cancellation → Staff Notification

Preconditions:

  • Staff has accepted shift assignment

Steps:

  1. CLIENT APP:

    • Navigate to View Orders
    • Select order with assigned staff
    • Cancel shift (if feature exists) or delete order
  2. STAFF APP:

    • Refresh Shifts tab
    • Verify shift moved to Cancelled tab
    • Verify shift removed from My Shifts
    • Verify cancellation reason displays
  3. STAFF APP:

    • Verify shift removed from Home dashboard

Expected Results:

  • Cancelled shift moves to Cancelled tab
  • Shift removed from active assignments
  • ⚠️ Requires clarification: Cancellation feature may not be fully implemented

Scenario 6: Authentication State Sharing

Preconditions:

  • Neither app authenticated

Steps:

  1. CLIENT APP:

    • Sign in with email/password
    • Verify Firebase Auth token generated
  2. STAFF APP:

    • Launch app
    • Verify Staff app requires separate authentication
    • Verify Client session does not carry over
  3. CLIENT APP:

    • Sign out
  4. STAFF APP:

    • Verify Staff app session persists (independent)

Expected Results:

  • Client and Staff apps maintain independent auth sessions
  • Signing out of one app does not affect the other

Scenario 7: Data Created in Client → Visible in Staff

Preconditions:

  • Client creates multiple orders

Steps:

  1. CLIENT APP:

    • Create 5 orders on different dates
    • Create 3 orders on same date with different hubs
  2. STAFF APP:

    • Navigate to Shifts → Available
    • Verify all 8 shifts appear
    • Verify date grouping correct
    • Verify hub addresses correct
    • Apply for 2 shifts
  3. CLIENT APP:

    • Navigate to View Orders
    • Verify 2 shifts show pending applications
    • Navigate to Coverage
    • Verify 0 checked-in (pending acceptance)

Expected Results:

  • All orders visible in both apps
  • Application states sync correctly
  • Data consistency maintained across apps

Scenario 8: Role-Based Access Differences

Preconditions:

  • Client user authenticated
  • Staff user authenticated

Steps:

  1. CLIENT APP:

    • Navigate to Billing
    • Verify billing data displays (Client-only feature)
    • Navigate to Create Order
    • Verify order creation available (Client-only feature)
  2. STAFF APP:

    • Verify no Billing tab exists
    • Verify no Create Order feature
    • Navigate to Availability
    • Verify availability editing available (Staff-only feature)
  3. CLIENT APP:

    • Verify no Availability feature exists
    • Verify no Clock In feature exists

Expected Results:

  • Client app has business management features (orders, billing, hubs)
  • Staff app has worker features (availability, clock in, payments)
  • No feature overlap or unauthorized access