maestro cases

This commit is contained in:
2026-03-02 19:18:35 +05:30
parent 07a0a29106
commit c0a69707e6
46 changed files with 1108 additions and 89 deletions

View File

@@ -8,10 +8,17 @@ Credentials are injected via env variables — **never hardcoded** in YAML.
|------|---------------|
| **Client sign-in** | `TEST_CLIENT_EMAIL`, `TEST_CLIENT_PASSWORD` |
| **Client sign-up** | `TEST_CLIENT_EMAIL`, `TEST_CLIENT_PASSWORD`, `TEST_CLIENT_COMPANY` |
| **Client sign_in_invalid_password** | `TEST_CLIENT_EMAIL`, `TEST_CLIENT_INVALID_PASSWORD` (default: wrongpass) |
| **Staff sign-in** | `TEST_STAFF_PHONE`, `TEST_STAFF_OTP` |
| **Staff sign-up** | `TEST_STAFF_SIGNUP_PHONE`, `TEST_STAFF_OTP` |
| **Staff sign_in_invalid_otp** | `TEST_STAFF_PHONE`, `TEST_STAFF_INVALID_OTP` (default: 000000) |
**Example values (login):** legendary@krowd.com / Demo2026! (client), 5557654321 / 123456 (staff)
**Sign-in credentials:**
| App | Email/Phone | Password/OTP |
|-----|-------------|--------------|
| **Client** | testclient@gmail.com | testclient! |
| **Staff** | +1 555-555-1234 (use `5555551234` in env) | 123123 |
---
@@ -29,7 +36,7 @@ curl -Ls "https://get.maestro.mobile.dev" | bash
### 2. Add Firebase test phone (Staff app)
Firebase Console → **Authentication****Sign-in method****Phone****Phone numbers for testing**:
- Add **+1 5557654321** with verification code **123456**
- Add **+1 555-555-1234** with verification code **123123**
### 3. Build and install apps
@@ -47,33 +54,57 @@ adb install apps/mobile/apps/staff/build/app/outputs/flutter-apk/app-debug.apk
```bash
# Client login credentials
export TEST_CLIENT_EMAIL=legendary@krowd.com
export TEST_CLIENT_PASSWORD=Demo2026!
export TEST_CLIENT_COMPANY="KROW Demo"
export TEST_CLIENT_EMAIL=testclient@gmail.com
export TEST_CLIENT_PASSWORD=testclient!
export TEST_CLIENT_COMPANY="Test Company"
# Staff login credentials
export TEST_STAFF_PHONE=5557654321
export TEST_STAFF_OTP=123456
export TEST_STAFF_PHONE=5555551234
export TEST_STAFF_OTP=123123
export TEST_STAFF_SIGNUP_PHONE=5555550000 # use a new number for signup
# Run full suite
make test-e2e
# Or run per app
# Run CLIENT only (auth flows)
make test-e2e-client
# Run CLIENT extended (auth + navigation + orders + settings)
make test-e2e-client-extended
# Run STAFF only (auth flows)
make test-e2e-staff
# Run STAFF extended (auth + navigation + profile + compliance + shifts + benefits)
make test-e2e-staff-extended
```
### 5. Run flows directly (without Make)
### 5. Run Client only (Windows PowerShell)
```bash
maestro test apps/mobile/apps/client/maestro/auth/sign_in.yaml \
-e TEST_CLIENT_EMAIL=legendary@krowd.com \
-e TEST_CLIENT_PASSWORD=Demo2026!
```powershell
$env:TEST_CLIENT_EMAIL = "testclient@gmail.com"
$env:TEST_CLIENT_PASSWORD = "testclient!"
$env:TEST_CLIENT_COMPANY = "Test Company"
maestro test apps/mobile/apps/staff/maestro/auth/sign_in.yaml \
-e TEST_STAFF_PHONE=5557654321 \
-e TEST_STAFF_OTP=123456
# Auth only
make test-e2e-client
# Extended (auth + navigation + orders + settings)
make test-e2e-client-extended
```
### 6. Run Staff only (Windows PowerShell)
```powershell
$env:TEST_STAFF_PHONE = "5555551234"
$env:TEST_STAFF_OTP = "123123"
$env:TEST_STAFF_SIGNUP_PHONE = "5555550000"
# Auth only
make test-e2e-staff
# Extended (auth + navigation + profile + compliance + shifts + benefits)
make test-e2e-staff-extended
```
---
@@ -81,12 +112,117 @@ maestro test apps/mobile/apps/staff/maestro/auth/sign_in.yaml \
## Folder structure
```
apps/mobile/apps/client/maestro/auth/
sign_in.yaml
sign_up.yaml
apps/mobile/apps/staff/maestro/auth/
sign_in.yaml
sign_up.yaml
apps/mobile/apps/client/maestro/
auth/
sign_in.yaml
sign_up.yaml
sign_out.yaml
sign_in_invalid_password.yaml
navigation/
home.yaml
orders.yaml
billing.yaml
coverage.yaml
reports.yaml
orders/
view_orders.yaml
completed_no_edit_icon.yaml # #492
create_order_entry.yaml
settings/
settings_page.yaml
edit_profile.yaml
apps/mobile/apps/staff/maestro/
auth/
sign_in.yaml
sign_up.yaml
sign_out.yaml
sign_in_invalid_otp.yaml
navigation/
home.yaml
shifts.yaml
profile.yaml
payments.yaml
clock_in.yaml
profile/
personal_info.yaml
documents_list.yaml
certificates_list.yaml
time_card.yaml
bank_account.yaml
faqs.yaml
privacy_security.yaml
emergency_contact.yaml
compliance/
document_upload_banner.yaml # #550
certificate_upload_banner.yaml # #551
attire_upload_banner.yaml # #552
shifts/
find_shifts.yaml
incomplete_profile_banner.yaml # #549 (requires incomplete-profile user)
home/
benefits.yaml # #524
```
### Direct Maestro commands
To run flows like `sign_in` with explicit paths and env vars:
```bash
# Single flow
maestro test apps/mobile/apps/staff/maestro/auth/sign_in.yaml -e TEST_STAFF_PHONE=5555551234 -e TEST_STAFF_OTP=123123
# Multiple flows (use --shard-split=1; if tcp:7001 persists, run as 2 commands)
maestro test --shard-split=1 apps/mobile/apps/staff/maestro/auth/sign_in.yaml apps/mobile/apps/staff/maestro/compliance/document_upload_banner.yaml -e TEST_STAFF_PHONE=5555551234 -e TEST_STAFF_OTP=123123
# Workaround: run sign_in first, then the feature flow (avoids tcp:7001 between flows)
maestro test apps/mobile/apps/staff/maestro/auth/sign_in.yaml -e TEST_STAFF_PHONE=5555551234 -e TEST_STAFF_OTP=123123
maestro test apps/mobile/apps/staff/maestro/compliance/document_upload_banner.yaml -e TEST_STAFF_PHONE=5555551234 -e TEST_STAFF_OTP=123123
```
### Make targets
| Target | Description |
|--------|-------------|
| `make test-e2e` | Auth flows (sign_in, sign_up for both apps) |
| `make test-e2e-client` | Client auth flows |
| `make test-e2e-client-extended` | Client full suite (auth + nav + orders + settings) |
| `make test-e2e-client-auth` | Client auth (sign_in, sign_up) |
| `make test-e2e-client-navigation` | Client navigation (sign_in + home, orders, billing, coverage, reports) |
| `make test-e2e-client-orders` | Client orders (sign_in + view_orders, completed_no_edit_icon, create_order_entry) |
| `make test-e2e-client-settings` | Client settings (sign_in + settings_page, edit_profile) |
| `make test-e2e-client-sign-out` | Client sign out flow |
| `make test-e2e-staff` | Staff auth flows |
| `make test-e2e-staff-extended` | Staff full suite |
| `make test-e2e-staff-auth` | Staff auth (sign_in, sign_up) |
| `make test-e2e-staff-navigation` | Staff navigation (sign_in + home, shifts, profile, payments, clock_in) |
| `make test-e2e-staff-profile` | Staff profile (sign_in + personal_info, documents_list, certificates_list) |
| `make test-e2e-staff-profile-extended` | Staff profile + time_card, bank_account |
| `make test-e2e-staff-sign-out` | Staff sign out flow |
| `make test-e2e-staff-shifts` | Staff shifts (sign_in + find_shifts, incomplete_profile_banner) |
| `make test-e2e-staff-compliance` | Staff compliance (sign_in + document/certificate/attire upload banners) |
| `make test-e2e-staff-home` | Staff home (sign_in + benefits) |
| `make test-e2e-extended` | Full suite (both apps, auth + all feature flows) |
---
## Troubleshooting
**`tcp:7001: closed` or `device offline` when running flows**
1. Restart ADB before running: `adb kill-server && adb start-server`
2. Try `--shard-split=1` when running multiple flows: `maestro test --shard-split=1 flow1.yaml flow2.yaml -e ...`
3. If the error persists between flows, run each flow as a **separate command**. The app stays logged in between runs (Firebase Auth persists):
```powershell
maestro test apps/mobile/apps/staff/maestro/auth/sign_in.yaml -e TEST_STAFF_PHONE=5555551234 -e TEST_STAFF_OTP=123123
maestro test apps/mobile/apps/staff/maestro/compliance/document_upload_banner.yaml -e TEST_STAFF_PHONE=5555551234 -e TEST_STAFF_OTP=123123
```
**Client and Staff flows use sign_in-first pattern**
All flows assume `auth/sign_in.yaml` runs first (via Make targets). Flows use `launchApp` and expect the app to be already logged in. Example:
```bash
maestro test apps/mobile/apps/staff/maestro/auth/sign_in.yaml apps/mobile/apps/staff/maestro/compliance/document_upload_banner.yaml -e TEST_STAFF_PHONE=5555551234 -e TEST_STAFF_OTP=123123
```
---
@@ -94,7 +230,21 @@ apps/mobile/apps/staff/maestro/auth/
## Checklist
- [ ] Maestro CLI installed
- [ ] Firebase test phone +1 5557654321 / 123456 added
- [ ] Firebase test phone +1 555-555-1234 / 123123 added
- [ ] Client & Staff apps built and installed
- [ ] Env vars exported
- [ ] `make test-e2e` run from project root
- [ ] `make test-e2e-client` or `make test-e2e-staff` run from project root
---
## GitHub Actions
A `.github/workflows/maestro-e2e.yml` workflow runs Maestro E2E on:
- Manual trigger (`workflow_dispatch`)
- PR/push when maestro flows change
**Required secrets** (Repository Settings → Secrets):
- `TEST_STAFF_PHONE`, `TEST_STAFF_OTP`, `TEST_STAFF_SIGNUP_PHONE`
- `TEST_CLIENT_EMAIL`, `TEST_CLIENT_PASSWORD`, `TEST_CLIENT_COMPANY`
The workflow builds both APKs, starts an Android emulator, installs the apps, and runs auth flows.

View File

@@ -0,0 +1,138 @@
# Manual End-to-End (E2E) Test Report
**Project:** KROW Workforce Mobile Applications (Staff & Client)
**Milestone:** M4
**Document Version:** 1.0
**Date:** March 2, 2026
**Status:** DRAFT *(Pending Execution)*
---
## Table of Contents
1. [Executive Summary](#1-executive-summary)
2. [Test Scope: M4 Features Completed](#2-test-scope-m4-features-completed)
3. [Test Environment & Accounts](#3-test-environment--accounts)
4. [Test Execution Results](#4-test-execution-results)
5. [Defect Summary](#5-defect-summary)
6. [Sign-off & Approvals](#6-sign-off--approvals)
---
## 1. Executive Summary
This document serves as the formal record of manual End-to-End (E2E) testing conducted for all features completed in Milestone 4 (M4) across the KROW Workforce mobile applications. The objective of this testing phase is to thoroughly test all new functionalities manually, ensuring they meet the acceptance criteria and function seamlessly across both iOS and Android platforms prior to client delivery.
---
## 2. Test Scope: M4 Features Completed
The scope of this test cycle includes the core features implemented during the M4 development phase, as outlined in the underlying M4 documentation. Below is the detailed breakdown of the functionality to be validated.
### 2.1 Staff Mobile Application Features
| Feature Name | Description |
| :--- | :--- |
| **Show Google Maps Location in Shift Details** | Navigate to the shift details page and verify the shift location renders correctly on Google Maps. |
| **Show Shift Requirements in Shift Details** | Verify that requirements (such as required attire) are visible to the worker before accepting a shift. |
| **Implement Attire Screen** | Verify the new attire screen lists "Must Have" and "Nice to Have" items. Ensure the image upload flow for attires works and images link to the worker profile. |
| **Implement FAQ Screen** | Verify the FAQ screen is accessible from the appropriate navigation menu and contents display correctly. |
| **Privacy and Security Screen** | Verify the privacy and security screen exists and contains profile visibility options, Terms of Service (TOS), and Privacy Policy. |
| **Restrict Navigation When Profile is Incomplete** | For incomplete profiles, verify that navigation is severely restricted (showing only **Profile** and **Home** screens). |
| **Preferred Location Edit** | Verify workers can navigate to a separate page to edit their preferred working locations. |
| **Maintain Auth Session** | Restart the app after login and verify the worker remains authenticated without being prompted to log in again. |
| **Enable iOS Deployment** | Ensure the iOS build compiles, deploys, and behaves on par with the Android build without platform-specific issues. |
### 2.2 Client Mobile Application Features
| Feature Name | Description |
| :--- | :--- |
| **Hide Edit Icon for Past/Completed Orders** | Verify the edit icon is hidden when viewing orders that are already in the past or have a "Completed" status. |
| **Implement Rapid Order Creation** | Test using voice/text input to rapidly describe a same-day order and verify the one-time order creation screen is populated correctly. |
| **Implement Recurring Order** | Test the complete UI flow to successfully create and submit a recurring order. |
| **Implement Permanent Order** | Test the complete UI flow to successfully create and submit a permanent order. |
| **Update Reorder Modal** | Verify the reorder modal correctly maps fields across one-time, recurring, and permanent order types. |
| **Complete Reports Interface with AI Insights** | Verify the main reports UI shows correct data and generates the 3 required AI insights without using placeholder UI. |
| **Daily Ops Report** | Verify the "Daily Ops" report renders real backend data. |
| **Spend Report** | Verify the "Spend" report renders real backend data. |
| **Coverage Report** | Verify the "Coverage" report renders real backend data. |
| **No-Show Report** | Verify the "No-Show" report renders real backend data. |
| **Performance Report** | Verify the "Performance" report renders real backend data. |
| **Display Hub Details Interface** | Verify there is a dedicated UI page to view Hub Details. |
| **Enable Hub Editing** | Verify Hub Details can be edited successfully on a separate, dedicated view. |
| **Maintain Auth Session** | Restart the app after login and verify the client remains authenticated without being prompted to log in again. |
| **Enable iOS Deployment** | Ensure the iOS build compiles, deploys, and behaves on par with the Android build without platform-specific issues. |
---
## 3. Test Environment & Accounts
### 3.1 Devices under Test
*Testing should be performed on the latest stable releases unless otherwise specified. Test across iOS and Android.*
- **Android Target:** `[Insert Device Model & OS Version]`
- **iOS Target:** `[Insert Device Model & OS Version]`
### 3.2 Key Test Accounts
To thoroughly evaluate the M4 acceptance criteria, the following test data and accounts are required:
**Incomplete Profile Staff Account**
*(Used specifically to validate the "Restrict Navigation When Profile Is Incomplete" feature)*
- **Email / Phone:** `[Fill Out Before Testing]`
- **Password / OTP:** `[Fill Out Before Testing]`
- **Configuration:** This account must bypass completing onboarding profile steps to trigger the mandated restriction constraint on the mobile application interface. If needed, use a backend script/dataconnect command to strip the required profile parameters before testing.
**Standard Client Tester Account**
- **Email / Phone:** `[Fill Out Before Testing]`
- **Password / OTP:** `[Fill Out Before Testing]`
---
## 4. Test Execution Results
*Instructions for QA: Mark status as 'Pass', 'Fail', or 'Blocked'. Device & OS Version should be specified if different from above. Add a ticket link if a defect is found.*
### 4.1 Staff App Execution
| Feature | Pass / Fail | Device & OS Version | Defect / Issue Link | Tester Notes & Edge Cases |
| :--- | :--- | :--- | :--- | :--- |
| Google Maps Location | `[ ]` | | | |
| Shift Requirements | `[ ]` | | | |
| Attire Screen & Upload | `[ ]` | | | |
| FAQ Screen | `[ ]` | | | |
| Privacy and Security | `[ ]` | | | |
| Incomplete Profile Restrictions | `[ ]` | | | |
| Preferred Location Edit | `[ ]` | | | |
| Maintain Auth Session | `[ ]` | | | |
| Enable iOS Deployment | `[ ]` | | | |
### 4.2 Client App Execution
| Feature | Pass / Fail | Device & OS Version | Defect / Issue Link | Tester Notes & Edge Cases |
| :--- | :--- | :--- | :--- | :--- |
| Hide Edit Icon (Past Orders) | `[ ]` | | | |
| Rapid Order Creation | `[ ]` | | | |
| Recurring Order | `[ ]` | | | |
| Permanent Order | `[ ]` | | | |
| Update Reorder Modal | `[ ]` | | | |
| Reports w/ AI Insights | `[ ]` | | | |
| Daily Ops Report | `[ ]` | | | |
| Spend Report | `[ ]` | | | |
| Coverage Report | `[ ]` | | | |
| No-Show Report | `[ ]` | | | |
| Performance Report | `[ ]` | | | |
| Display Hub Details | `[ ]` | | | |
| Enable Hub Editing | `[ ]` | | | |
| Maintain Auth Session | `[ ]` | | | |
| Enable iOS Deployment | `[ ]` | | | |
---
## 5. Defect Summary
All bugs identified during E2E testing must map back to an issue raised in the repository's tracker. Ensure all failed/blocked tests above have a corresponding row here.
| Defect ID / Link | Severity | Feature | Description | Status |
| :--- | :--- | :--- | :--- | :--- |
| `[#XXX](url)` | `[High/Med/Low]` | `[Feature]` | `[Brief description of the bug]` | `[Open]` |
| `[#XXX](url)` | `[High/Med/Low]` | `[Feature]` | `[Brief description of the bug]` | `[Open]` |
*(Add rows as necessary during test execution)*
---
## 6. Sign-off & Approvals
By signing below, the internal testing team confirms that the E2E manual testing for M4 has been executed according to the scope defined in this document, that both the Client and Staff apps have been evaluated, and that all discovered defects have been formally documented.