# ๐Ÿงช 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](#1๏ธโƒฃ-feature-level-qa-checklist) - [Client App Features](#client-app-features) - [Staff App Features](#staff-app-features) 2. [Cross-Application Test Scenarios](#2๏ธโƒฃ-cross-application-test-scenarios) 3. [Shared Infrastructure Validation](#3๏ธโƒฃ-shared-infrastructure-validation) 4. [Regression & Release Checklist](#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 ---