Skip to content

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

KindPatternExample
Ownerowner<n>owner1, owner2
Garagegara<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
Customercustomer<owner>-<garage>-<n>customer1-1-1
Suppliersupplier<owner>-<garage>-<n>supplier1-1-1
Platform usersadmin, support<n>admin (Platform Admin), support1 (admin staff)
Supplier usersupplieruser<n>supplieruser1 (linked to supplier1-1-1 in the supplier portal)
Single-use sign-up e-mailsignup.<scenario id>.<unique>signup.iam001.7f3a: created by E2E-IAM-001
Full nameQA <Role> <scope>QA Advisor 1-1
Phone (users)0900 000 <owner digit><nn>Owner1’s people: 0900000101–0900000199
GarageQA Gara <owner>-<n> <district>QA Gara 1-1 Quan 1
CustomerQA Customer <given name> <family name>QA Customer An Nguyen
Phone (customers)0911 000 <nnn>0911000001
SupplierQA Supplier …QA Supplier Phu Tung Sai Gon
Custom role, group, planQA … / 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

KeyE-mailFull namePhoneWhat it is for
admin[email protected]QA Platform Admin0900000001Platform admin (listed in PLATFORM_ADMIN_EMAILS); owns no garage
support1[email protected]QA Support 10900000002Platform staff, billing-support role. Needs Release 8.1 (requires: phase-8)
owner1[email protected]QA Owner 10900000101Owner of garages 1-1 and 1-2, on the Pro plan
owner2[email protected]QA Owner 20900000201Owner of garage 2-1, on the trial. Another tenant, used for isolation checks
manager1-1[email protected]QA Manager 1-10900000111Staff in 1-1, group Manager (every permission except roles and subscription)
accountant1-1[email protected]QA Accountant 1-10900000112Staff in 1-1, group Accountant
advisor1-1[email protected]QA Advisor 1-10900000113Staff in 1-1, group Service Advisor (customers write, suppliers read)
technician1-1[email protected]QA Technician 1-10900000114Staff in 1-1 and 1-2, group Technician (no customer or staff access)
inventory1-1[email protected]QA Inventory 1-10900000115Staff in 1-1, group Inventory Staff
viewer1-1[email protected]QA Viewer 1-10900000116Staff in 1-1, custom group QA Customer Viewers (customers read only)
freelancer[email protected]QA Freelancer0900000301Verified 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 10900000401Linked 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):

E-mailCreated 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

KeyNameAddressPhoneTax codeOwner
gara1-1QA Gara 1-1 Quan 112 Le Loi, Ben Nghe, Quan 1, TP.HCM02830001010312345601owner1
gara1-2QA Gara 1-2 Thu Duc34 Vo Van Ngan, Thu Duc, TP.HCM02830001020312345602owner1
gara2-1QA Gara 2-1 Ba Dinh56 Kim Ma, Ba Dinh, Ha Noi02430002010112345601owner2

Staff memberships (which user works where, in which group):

UserGarageGroup
manager1-1gara1-1Manager
accountant1-1gara1-1Accountant
advisor1-1gara1-1Service Advisor
technician1-1gara1-1Technician
technician1-1gara1-2Technician
inventory1-1gara1-1Inventory Staff
viewer1-1gara1-1QA Customer Viewers

3.2. Roles, groups and plans

KindNameDefinition
Custom role (owner1)QA Customer ViewerOnly Customers & vehicles → View (customer.read)
Custom group (gara1-1)QA Customer ViewersRole QA Customer Viewer; member viewer1-1
Custom plan (admin)QA Small, code qa-small100,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):

RolePermissions
ManagerEverything in the garage
AccountantView customers, suppliers, subscription, quotes, repair orders, inventory, reports; view and write billing
Service AdvisorView and write customers, quotes, repair orders; view suppliers and inventory
TechnicianView and write repair orders; view inventory
Inventory StaffView 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

KeyGarageCustomerPhoneE-mailConsentVehicles
customer1-1-1gara1-1QA Customer An Nguyen0911000001[email protected]Given51A-111.11 Toyota Vios 2020
customer1-1-2gara1-1QA Customer Binh Tran0911000002[email protected]Given51B-222.22 Honda City 2019
customer1-2-1gara1-2QA Customer Chi Le0911000003—Given29A-333.33 Hyundai Accent 2021
customer2-1-1gara2-1QA Customer Dung Pham0911000001 (same as An, other tenant)—Given30A-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).

KeyGarageSupplierTax codeContact personPhoneE-mail
supplier1-1-1gara1-1QA Supplier Phu Tung Sai Gon0301234567Mr. Hai0912000001[email protected]
supplier1-1-2gara1-1QA Supplier Lop Xe Viet0307654321Ms. Mai0912000004[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):

SKUNameCategoryBrandBase unitSelling priceReorder thresholdDefault supplier
OIL-5W30Engine oil 5W-30Synthetic (Engine oil)Castrollitre (L; packed 4 L per can)120,00010supplier1-1-1
FLT-OIL-01Oil filterFiltersBoschpiece (pc; packed 24 per case)85,0005supplier1-1-1
WPR-24Wiper blade 24 inchWipersBoschpiece (pc; packed 10 per case)250,0004supplier1-1-2
BEER-330Beer 330 mlBeveragesSabecocan (can; packed 24 per case, case price 200,000)9,000100supplier1-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).

StepSigned in asAction
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
B5owner1Subscription → choose Pro and confirm
B6owner1Garages → create gara1-1, then gara1-2, with the data in §3.1
B7owner2Garages → create gara2-1
B8owner1Roles & groups → create role QA Customer Viewer; with gara1-1 active, create group QA Customer Viewers with that role
B9owner1Active 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)
B10each inviteeOpen the invitation e-mail link in Mailpit, sign in and Accept (technician1-1 accepts both)
B11owner1gara1-1 → Customers: create An Nguyen and Binh Tran with their vehicles; Suppliers: create both suppliers. gara1-2 → Customers: create Chi Le with her vehicle
B12owner2gara2-1 → Customers: create Dung Pham with his vehicle
B13adminAdmin → 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 nameDataset 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 Nguyencustomer1-1-1 (unchanged name, phone, plate)
QA Customer Binh Trancustomer1-1-2 (now has e-mail [email protected], consent given, plate 51B-222.22 Honda City 2019)
QA Customer Chi Lecustomer1-2-1 (no e-mail, plate 29A-333.33 Hyundai Accent 2021)
QA Customer Dung Phamcustomer2-1-1 (unchanged)
QA Supplier Phu Tung Sai Gonsupplier1-1-1 (now with tax code and contact e-mail)
QA Insurer An TamRemoved (insurance left in Release 5.0; returns in Phase 17)
signup.<scenario id>@vietgara.testsignup.<scenario id>.<unique>@vietgara.test
A real Google account (GOOGLE_QA)No record: Google sign-in goes through the stub (see §2)