E2E TEST DATA
VietGara — Release 4.0 · Version 2.0 — October 12, 2026 · Dataset: vietgara-testdata v0.2.0
The dataset is the single source of truth for named test personas and records. The backend blackbox suite and the Playwright suite read the same YAML through their loaders, so this document, the API tests and the browser tests cannot drift apart. When the dataset changes, this document is regenerated and the dataset tag above is bumped.
Every scenario refers to the named users and records below. Their names say what they are for: [email protected] is the service advisor of garage 1-1, and QA Gara 1-2 Thu Duc is owner1’s second garage. Every name starts with QA so test data is easy to recognise in any list.
1. Naming rules
| Kind | Pattern | Example |
|---|---|---|
| Owner | owner<n> | owner1, owner2 |
| Garage | gara<owner>-<n> | gara1-1, gara1-2 (first and second garage of owner1), gara2-1 |
| Staff | <role><owner>-<garage> | manager1-1, advisor1-1, technician1-1, inventory1-1, accountant1-1 |
| Customer | customer<owner>-<garage>-<n> | customer1-1-1 |
| Supplier | supplier<owner>-<garage>-<n> | supplier1-1-1 |
| Platform users | admin, support<n> | admin (Platform Admin), support1 (admin staff) |
| Supplier user | supplieruser<n> | supplieruser1 (linked to supplier1-1-1 in the supplier portal) |
| Single-use sign-up e-mail | signup.<scenario id>.<unique> | signup.iam001.7f3a: created by E2E-IAM-001 |
| Full name | QA <Role> <scope> | QA Advisor 1-1 |
| Phone (users) | 0900 000 <owner digit><nn> | Owner1’s people: 0900000101–0900000199 |
| Garage | QA Gara <owner>-<n> <district> | QA Gara 1-1 Quan 1 |
| Customer | QA Customer <given name> <family name> | QA Customer An Nguyen |
| Phone (customers) | 0911 000 <nnn> | 0911000001 |
| Supplier | QA Supplier … | QA Supplier Phu Tung Sai Gon |
| Custom role, group, plan | QA … / plan code qa-… | Role QA Customer Viewer, plan qa-small |
Baseline user e-mails always use the test domain (<key>@vietgara.test), never a real domain, so mail lands in Mailpit. Two kinds of data. Baseline data (everything below) has fixed names and is read-mostly; tests must not leave it changed. Scenario-owned data is created by the test with a unique suffix (sign-up, password reset, destructive scenarios) and deleted in teardown; it is not listed here.
Password for every baseline user on the local and stubbed stacks: Test#2026-local (the platform admin uses Admin#2026-local). Both are disposable test credentials from environments.yaml. On staging the dataset holds only references (passwordRef: TEST_PASSWORD, adminPasswordRef: ADMIN_PASSWORD); the values are CI secrets, the same for every persona, and no staging credential is ever committed.
2. Users
| Key | Full name | Phone | What it is for | |
|---|---|---|---|---|
admin | [email protected] | QA Platform Admin | 0900000001 | Platform admin (listed in PLATFORM_ADMIN_EMAILS); owns no garage |
support1 | [email protected] | QA Support 1 | 0900000002 | Platform staff, billing-support role. Needs Release 8.1 (requires: phase-8) |
owner1 | [email protected] | QA Owner 1 | 0900000101 | Owner of garages 1-1 and 1-2, on the Pro plan |
owner2 | [email protected] | QA Owner 2 | 0900000201 | Owner of garage 2-1, on the trial. Another tenant, used for isolation checks |
manager1-1 | [email protected] | QA Manager 1-1 | 0900000111 | Staff in 1-1, group Manager (every permission except roles and subscription) |
accountant1-1 | [email protected] | QA Accountant 1-1 | 0900000112 | Staff in 1-1, group Accountant |
advisor1-1 | [email protected] | QA Advisor 1-1 | 0900000113 | Staff in 1-1, group Service Advisor (customers write, suppliers read) |
technician1-1 | [email protected] | QA Technician 1-1 | 0900000114 | Staff in 1-1 and 1-2, group Technician (no customer or staff access) |
inventory1-1 | [email protected] | QA Inventory 1-1 | 0900000115 | Staff in 1-1, group Inventory Staff |
viewer1-1 | [email protected] | QA Viewer 1-1 | 0900000116 | Staff in 1-1, custom group QA Customer Viewers (customers read only) |
freelancer | [email protected] | QA Freelancer | 0900000301 | Verified user that belongs to no garage: the invitee in invitation scenarios |
unverified | [email protected] | QA Unverified User | — | Signed up but never verified its e-mail |
supplieruser1 | [email protected] | QA Supplier User 1 | 0900000401 | Linked to supplier1-1-1 by the supplier portal. Needs Release 17.2 (requires: phase-17) |
Single-use users created by scenarios (not part of the baseline; the <unique> suffix keeps reruns apart):
| Created by | |
|---|---|
signup.iam001.<unique> | E2E-IAM-001 sign-up and verification |
signup.iam004.<unique> | E2E-IAM-004 wrong codes |
signup.iam005.<unique> | E2E-IAM-005 expired code |
signup.iam006.<unique> | E2E-IAM-006 resend |
signup.iam007.<unique> | E2E-IAM-007 sign-up validation |
signup.iam011.<unique> | E2E-IAM-011 password reset |
signup.lic001.<unique> | E2E-LIC-001 trial on verification |
signup.lic010.<unique> | E2E-LIC-010 to 012 expiry (an owner whose subscription the tests expire) |
signup.quo012.<unique> | E2E-QUO-012 daily transaction limit (owner of the scenario-created plan qa-txn-limit) |
Google sign-in scenarios (E2E-IAM-014 to 016) use the Google stub on automated targets and need no dataset record. A manual run against a target without the stub still needs a real Google account the QA team owns that has no VietGara user before E2E-IAM-014.
3. Garages and business records
3.1. Garages
| Key | Name | Address | Phone | Tax code | Owner |
|---|---|---|---|---|---|
gara1-1 | QA Gara 1-1 Quan 1 | 12 Le Loi, Ben Nghe, Quan 1, TP.HCM | 0283000101 | 0312345601 | owner1 |
gara1-2 | QA Gara 1-2 Thu Duc | 34 Vo Van Ngan, Thu Duc, TP.HCM | 0283000102 | 0312345602 | owner1 |
gara2-1 | QA Gara 2-1 Ba Dinh | 56 Kim Ma, Ba Dinh, Ha Noi | 0243000201 | 0112345601 | owner2 |
Staff memberships (which user works where, in which group):
| User | Garage | Group |
|---|---|---|
manager1-1 | gara1-1 | Manager |
accountant1-1 | gara1-1 | Accountant |
advisor1-1 | gara1-1 | Service Advisor |
technician1-1 | gara1-1 | Technician |
technician1-1 | gara1-2 | Technician |
inventory1-1 | gara1-1 | Inventory Staff |
viewer1-1 | gara1-1 | QA Customer Viewers |
3.2. Roles, groups and plans
| Kind | Name | Definition |
|---|---|---|
Custom role (owner1) | QA Customer Viewer | Only Customers & vehicles → View (customer.read) |
Custom group (gara1-1) | QA Customer Viewers | Role QA Customer Viewer; member viewer1-1 |
Custom plan (admin) | QA Small, code qa-small | 100,000 VND/month, 1 garage, 2 staff, 10 transactions/day, feature Customers & vehicles |
Default roles created for every verified owner (and a default group of the same name in every garage):
| Role | Permissions |
|---|---|
| Manager | Everything in the garage |
| Accountant | View customers, suppliers, subscription, quotes, repair orders, inventory, reports; view and write billing |
| Service Advisor | View and write customers, quotes, repair orders; view suppliers and inventory |
| Technician | View and write repair orders; view inventory |
| Inventory Staff | View and write inventory and suppliers; view repair orders |
Seeded plans: Free trial (trial, hidden: 1 garage, 5 staff), Starter (299,000 VND: 1 garage, 5 staff), Pro (599,000 VND: 2 garages, 20 staff), Garage chain (1,490,000 VND: 10 garages, 100 staff).
3.3. Customers, vehicles and partners
| Key | Garage | Customer | Phone | Consent | Vehicles | |
|---|---|---|---|---|---|---|
customer1-1-1 | gara1-1 | QA Customer An Nguyen | 0911000001 | [email protected] | Given | 51A-111.11 Toyota Vios 2020 |
customer1-1-2 | gara1-1 | QA Customer Binh Tran | 0911000002 | [email protected] | Given | 51B-222.22 Honda City 2019 |
customer1-2-1 | gara1-2 | QA Customer Chi Le | 0911000003 | — | Given | 29A-333.33 Hyundai Accent 2021 |
customer2-1-1 | gara2-1 | QA Customer Dung Pham | 0911000001 (same as An, other tenant) | — | Given | 30A-444.44 Mazda 3 2021 |
Customers are garage-owned profiles of vehicle owners; they need no user. The same phone in two garages is on purpose (tenant isolation).
| Key | Garage | Supplier | Tax code | Contact person | Phone | |
|---|---|---|---|---|---|---|
supplier1-1-1 | gara1-1 | QA Supplier Phu Tung Sai Gon | 0301234567 | Mr. Hai | 0912000001 | [email protected] |
supplier1-1-2 | gara1-1 | QA Supplier Lop Xe Viet | 0307654321 | Ms. Mai | 0912000004 | [email protected] |
Suppliers sell parts to the garage. They are not customers and not insurers. Until Release 5.0 the API calls them partners of type supplier. The insurer record was removed with insurance in Release 5.0 and returns in Phase 17.
3.4. Parts catalogue
Parts of gara1-1 (needs Release 6.0 for units and categories; before that the seeder creates the parts with their base unit text only):
| SKU | Name | Category | Brand | Base unit | Selling price | Reorder threshold | Default supplier |
|---|---|---|---|---|---|---|---|
OIL-5W30 | Engine oil 5W-30 | Synthetic (Engine oil) | Castrol | litre (L; packed 4 L per can) | 120,000 | 10 | supplier1-1-1 |
FLT-OIL-01 | Oil filter | Filters | Bosch | piece (pc; packed 24 per case) | 85,000 | 5 | supplier1-1-1 |
WPR-24 | Wiper blade 24 inch | Wipers | Bosch | piece (pc; packed 10 per case) | 250,000 | 4 | supplier1-1-2 |
BEER-330 | Beer 330 ml | Beverages | Sabeco | can (can; packed 24 per case, case price 200,000) | 9,000 | 100 | supplier1-1-2 |
Units: litre (L), piece (pc), can (can), case (case). Categories: Engine oil (child: Synthetic), Filters, Wipers, Beverages. BEER-330 and the selling prices need vietgara-testdata v0.3.0.
3.5. Relationship diagram
The diagram summarizes the records in §2–§3: who owns which garage, who works where, and which garage each customer, supplier and part belongs to. Nesting means ownership; dotted arrows are links (custom role to its group, supplier user to its supplier).
flowchart TB
subgraph platform["Platform users · no garage"]
admin["admin<br/>QA Platform Admin"]
support1["support1 · phase-8<br/>billing-support"]
end
subgraph o1box["owner1 · QA Owner 1 · plan Pro"]
o1["owner1"]
role11["role QA Customer Viewer<br/>custom · owner1"]
subgraph gara11["gara1-1 · QA Gara 1-1 Quan 1"]
staff11["manager1-1 · Manager<br/>accountant1-1 · Accountant<br/>advisor1-1 · Service Advisor<br/>technician1-1 · Technician<br/>inventory1-1 · Inventory Staff"]
viewer11["viewer1-1<br/>group QA Customer Viewers"]
cust11["customer1-1-1 An · 51A-111.11<br/>customer1-1-2 Binh · 51B-222.22"]
sup11["supplier1-1-1 Phu Tung Sai Gon<br/>supplier1-1-2 Lop Xe Viet"]
cat11["parts · phase-6<br/>OIL-5W30 · FLT-OIL-01 · WPR-24"]
end
subgraph gara12["gara1-2 · QA Gara 1-2 Thu Duc"]
staff12["technician1-1 · Technician"]
cust12["customer1-2-1 Chi · 29A-333.33"]
end
role11 -. "group QA Customer Viewers<br/>in gara1-1" .-> viewer11
end
subgraph o2box["owner2 · QA Owner 2 · plan trial"]
o2["owner2"]
subgraph gara21["gara2-1 · QA Gara 2-1 Ba Dinh"]
cust21["customer2-1-1 Dung · 30A-444.44"]
end
end
subgraph special["Special users"]
freelancer["freelancer<br/>verified · no garage · invitee"]
unverified["unverified<br/>signed up · never verified"]
supplieruser1["supplieruser1 · phase-17<br/>linked to supplier1-1-1"]
end
supplieruser1 -. "supplier portal" .-> sup11
4. Baseline setup
Run once on a fresh environment (see README §3). It uses only features that have their own scenarios, so a failure here is itself a defect to report. The automated seeder (make seed in vietgara-backend) creates the same baseline through the public API; it currently seeds owners and garages, so the staff, customer, supplier and catalogue steps below are still manual until the seeder is complete (Release 4.0).
| Step | Signed in as | Action |
|---|---|---|
| B1 | — | Check [email protected] and LICENSE_EXPIRY_JOB_INTERVAL=1m in the backend .env |
| B2 | — | Sign up and verify (code from Mailpit) admin, owner1, owner2, manager1-1, accountant1-1, advisor1-1, technician1-1, inventory1-1, viewer1-1 and freelancer, with the names, phones and password in §2. Interface language: Vietnamese (default) |
| B3 | — | Sign up unverified and close the verification page without entering the code |
| B4 | — | Restart the backend so admin becomes a platform admin. Sign in as admin in the admin web: the sidebar shows Plans and Subscriptions |
| B5 | owner1 | Subscription → choose Pro and confirm |
| B6 | owner1 | Garages → create gara1-1, then gara1-2, with the data in §3.1 |
| B7 | owner2 | Garages → create gara2-1 |
| B8 | owner1 | Roles & groups → create role QA Customer Viewer; with gara1-1 active, create group QA Customer Viewers with that role |
| B9 | owner1 | Active garage gara1-1 → Staff → invite by e-mail: manager1-1 (group Manager), accountant1-1 (Accountant), advisor1-1 (Service Advisor), technician1-1 (Technician), inventory1-1 (Inventory Staff), viewer1-1 (QA Customer Viewers). Active garage gara1-2 → invite technician1-1 (Technician) |
| B10 | each invitee | Open the invitation e-mail link in Mailpit, sign in and Accept (technician1-1 accepts both) |
| B11 | owner1 | gara1-1 → Customers: create An Nguyen and Binh Tran with their vehicles; Suppliers: create both suppliers. gara1-2 → Customers: create Chi Le with her vehicle |
| B12 | owner2 | gara2-1 → Customers: create Dung Pham with his vehicle |
| B13 | admin | Admin → Plans: create QA Small (§3.2) |
Check after the baseline: owner1’s Subscription page shows Pro with 2/2 garages.
5. Old → dataset name mapping
Scenarios 01–08 were written before Release 4.0 and still use the old names. They stay valid through this mapping; rename a scenario to the dataset names when it is automated. Baseline users sign in with the dataset password of §2 (Test#2026-local, admin Admin#2026-local); a password shown in a scenario for a user the scenario signs up itself (for example Qa@123456) belongs to that scenario-owned user.
| Old name | Dataset record |
|---|---|
[email protected] (ADMIN) | [email protected] |
[email protected] (OWNER_A) | [email protected] |
[email protected] (OWNER_B) | [email protected] |
[email protected] (MANAGER_A1) | [email protected] |
[email protected] (ADVISOR_A1) | [email protected] |
[email protected] (TECH_A1A2) | [email protected] |
[email protected] (VIEWER_A1) | [email protected] |
[email protected] (FREELANCER) | [email protected] (unchanged) |
[email protected] (UNVERIFIED) | [email protected] (unchanged) |
| QA Gara A1 Quan 1 (A1) | gara1-1 QA Gara 1-1 Quan 1 |
| QA Gara A2 Thu Duc (A2) | gara1-2 QA Gara 1-2 Thu Duc |
| QA Gara B1 Ba Dinh (B1) | gara2-1 QA Gara 2-1 Ba Dinh |
| QA Customer An Nguyen | customer1-1-1 (unchanged name, phone, plate) |
| QA Customer Binh Tran | customer1-1-2 (now has e-mail [email protected], consent given, plate 51B-222.22 Honda City 2019) |
| QA Customer Chi Le | customer1-2-1 (no e-mail, plate 29A-333.33 Hyundai Accent 2021) |
| QA Customer Dung Pham | customer2-1-1 (unchanged) |
| QA Supplier Phu Tung Sai Gon | supplier1-1-1 (now with tax code and contact e-mail) |
| QA Insurer An Tam | Removed (insurance left in Release 5.0; returns in Phase 17) |
signup.<scenario id>@vietgara.test | signup.<scenario id>.<unique>@vietgara.test |
| A real Google account (GOOGLE_QA) | No record: Google sign-in goes through the stub (see §2) |