maestro cases
This commit is contained in:
@@ -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.
|
||||
|
||||
138
docs/testing/M4-manual-test-report.md
Normal file
138
docs/testing/M4-manual-test-report.md
Normal 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.
|
||||
|
||||
Reference in New Issue
Block a user