Acceptance Criteria — Registration (REG)¶
User Story¶
As a new (unauthenticated) Repaircheck web-app user I want to create an account through a guided multi-step flow (personal info → email verification → address → password → vehicle) So that I can register my vehicle(s) and use the app's repair features.
Source: RC-8 — Web app – Implement UI of the Registration page (child of Epic RC-21 User management). Grounded against the Figma screenshots in 01_Features/registration/screens.
Scenario-based AC — Given / When / Then¶
| AC ID | Scenario | Jira | Type | Criticality | Given (context) | When (action / trigger) | Then (expected outcome) | Linked TCs | Status |
|---|---|---|---|---|---|---|---|---|---|
| AC-REG-01 | Complete registration end-to-end | RC-8 | Happy | 🔴 Critical | A guest with an unused, valid email | They complete all steps with valid data and finish | A new account is created, the user is signed in, and the home page is shown | TC-REG-001 |
Draft |
| AC-REG-02 | Enter registration from Login screen | RC-8 | Alternate | 🟡 Medium | A guest on the Login screen | They select "Don't have an account? Register" | Step 1 "Enter your personal info" is shown | TC-REG-002 |
Draft |
| AC-REG-03 | Submit valid personal info (Step 1) | RC-8 | Happy | 🔴 Critical | Step 1 with a valid, unused email and a first & last name entered | They proceed to the next step | A verification code is emailed to that address and the "Enter your verification code" screen is shown | TC-REG-003 |
Draft |
| AC-REG-04 | Reject invalid email format | RC-8 | Negative | 🟠 High | Step 1 | They enter an email not in valid format (e.g. abcd.xyz) and try to proceed |
Registration does not advance and an "Invalid email format" message is shown against the email field | TC-REG-004 |
Draft |
| AC-REG-05 | Reject already-registered email | RC-8 | Negative | 🔴 Critical | An email already linked to an existing account | They submit Step 1 with that email | Registration does not advance and an "Email has already been registered" message is shown | TC-REG-005 |
Draft |
| AC-REG-06 | Block proceeding with missing required fields | RC-8 | Negative | 🟠 High | Step 1 with email, first name or last name empty | They attempt to proceed | The Next action stays disabled and a "Please fill first and last name" prompt indicates the missing required field(s) | TC-REG-006 |
Draft |
| AC-REG-07 | Warn on implausible name (non-blocking) | RC-8 | Edge | ⚪ Low | Step 1 | They enter a name consisting only of digits (e.g. 12345) |
A soft warning "Are you sure you entered your name correctly?" is shown, but the user can still proceed | TC-REG-007 |
Draft |
| AC-REG-08 | Accept correct verification code | RC-8 | Happy | 🔴 Critical | A verification code has been emailed for the entered address | They enter the correct 6-digit code | The code is accepted and the flow advances to Step 2 "Enter your address" | TC-REG-008 |
Draft |
| AC-REG-09 | Reject incorrect verification code | RC-8 | Negative | 🔴 Critical | A verification code has been emailed | They enter an incorrect code | The code is rejected, an "Incorrect code, please enter it again" message is shown, and the flow stays on the code screen | TC-REG-009 |
Draft |
| AC-REG-10 | Resend verification code after cooldown | RC-8 | Alternate | 🟡 Medium | The verification screen shows a resend cooldown (5 minutes) | The cooldown reaches zero and they select "Resend" | A new verification code is emailed and the cooldown restarts; before it expires the resend action is unavailable | TC-REG-010 |
Draft |
| AC-REG-11 | Submit valid address manually (Step 2) | RC-8 | Happy | 🟠 High | Step 2 with a valid postcode and street name & number entered | They proceed | The flow advances to Step 3 "Set your password" | TC-REG-011 |
Draft |
| AC-REG-12 | Reject invalid postcode | RC-8 | Negative | 🟡 Medium | Step 2 | They enter an invalid postcode (e.g. 12abc@#) and try to proceed |
Registration does not advance and a "Please enter a valid postcode" message is shown | TC-REG-012 |
Draft |
| AC-REG-13 | Select address via map search | RC-8 | Alternate | 🟡 Medium | Step 2 | They open "Search your address", search, and select a suggestion or place the map pin | The selected postcode and street name & number are autofilled into the address fields | TC-REG-013 |
Draft |
| AC-REG-14 | Block proceeding with missing address fields | RC-8 | Negative | 🟡 Medium | Step 2 with postcode or street name & number empty | They attempt to proceed | The Next action stays disabled | TC-REG-014 |
Draft |
| AC-REG-15 | Strong password enables continue (Step 3) | RC-8 | Happy | 🔴 Critical | Step 3 | They enter a password meeting all rules (≥8 chars, ≥1 symbol/number, ≥1 capital, no spaces) | Every rule is marked satisfied, strength shows "Strong", and the Next action is enabled | TC-REG-015, TC-REG-017 |
Draft |
| AC-REG-16 | Weak password blocks continue | RC-8 | Negative | 🟠 High | Step 3 | They enter a password failing at least one rule (e.g. containing a space) | The unmet rule(s) are marked failed, strength shows "Weak", and the Next action stays disabled | TC-REG-016 |
Draft |
| AC-REG-17 | Complete registration by adding a vehicle | RC-8 | Happy | 🟠 High | Step 4 "Register your vehicle" reached after setting a password | They register at least one vehicle and finish | Registration completes, the account is created/signed in, and the user is returned to the home page | TC-REG-022 |
Draft |
| AC-REG-18 | Preserve entered data on back navigation | RC-8 | Alternate | ⚪ Low | The user is on any step after Step 1 | They navigate back to a previous step | The previous step is shown with the data they already entered retained | TC-REG-018 |
Draft |
| AC-REG-19 | Responsive layout on phone and tablet | RC-8 | Edge | 🟡 Medium | The registration flow opened in the mobile web app | It is viewed on a phone and on a tablet | The layout renders correctly and all fields/controls remain usable on both form factors | TC-REG-019 |
Draft |
| AC-REG-20 | Register a vehicle with all fields (Step 4) | RC-8 | Happy | 🟠 High | On Step 4 "Register your vehicle" with the vehicle form open | They select Brand, Modell, Baujahr, Fahrzeugkategorie, Motor, No. of doors, No. of seats, enter KW, choose ownership (Owner/Rental) and register | The vehicle is added and appears in the registered-vehicle list | TC-REG-021 |
Draft |
| AC-REG-35 | Vehicle ownership defaults to Owner | RC-8 | Alternate | 🟡 Medium | On the vehicle registration form (Step 4) with the "Owner / Rental" choice shown | The vehicle form loads and the user views the ownership choice | "Owner" is pre-selected by default; the user can switch to "Rental"; exactly one option is selected at any time and the chosen value is saved with the vehicle | TC-REG-038, TC-REG-021 |
Draft |
| AC-REG-21 | Search within Brand / Modell dropdown | RC-8 | Alternate | 🟡 Medium | On the vehicle form with the Brand (or Modell) dropdown open | They type a search term | The dropdown list filters to matching options; Modell options depend on the selected Brand | TC-REG-023 |
Draft |
| AC-REG-22 | Block registering a vehicle with missing fields | RC-8 | Negative | 🟠 High | On the vehicle form with a required field not selected/entered | They attempt to register the vehicle | The vehicle is not registered and the missing required field(s) are indicated | TC-REG-024 |
Draft |
| AC-REG-23 | Add more vehicles up to the limit | RC-8 | Alternate | 🟡 Medium | The user has fewer than 4 vehicles registered | They choose "Register more vehicles" and add another | The additional vehicle is added to the list (total ≤ 4) | TC-REG-025 |
Draft |
| AC-REG-24 | Block adding a 5th vehicle (limit reached) | RC-8 | Negative | 🟡 Medium | The user already has 4 vehicles registered | They attempt to add another vehicle | Adding is blocked and a popup states the 4-vehicle limit with a contact address (Alexis@repaircheck.com) |
TC-REG-026 |
Draft |
| AC-REG-25 | Edit a registered vehicle | RC-8 | Alternate | 🟡 Medium | The user has at least one registered vehicle in the list | They choose "Edit Vehicle" and change one or more fields | The vehicle's details are updated in the list | TC-REG-027 |
Draft |
| AC-REG-26 | Remove a registered vehicle | RC-8 | Alternate | 🟡 Medium | The user has at least one registered vehicle in the list | They choose "Remove Vehicle" | The vehicle is removed from the list | TC-REG-028 |
Draft |
| AC-REG-27 | Re-register email of a deleted account | RC-8 | Edge | 🟡 Medium | An email that previously belonged to an account which has since been deleted | They submit Step 1 with that email | The email is treated as available and registration proceeds to email verification (not blocked as "already registered") | TC-REG-029 |
Draft |
| AC-REG-28 | Reject expired verification code | RC-8 | Negative | 🟠 High | A verification code was emailed more than 5 minutes ago (expired) | They enter the expired code | The code is rejected as expired, a message prompts requesting a new code, and the flow does not advance | TC-REG-030 |
Draft |
| AC-REG-29 | Adjust location by moving the map pin | RC-8 | Alternate | 🟡 Medium | Step 2 with the map open ("Move the pin until you are done") | They drag the pin to a new location | The address displayed above the map updates to the pin's location and can be confirmed into the address fields | TC-REG-031 |
Draft |
| AC-REG-30 | Password visibility toggle (masked by default) | RC-8 | Edge | ⚪ Low | Step 3 with a password entered | They view the field and toggle the eye (reveal/hide) icon | The password is masked by default; the eye icon reveals it and toggling again re-masks (hides) it | TC-REG-020, TC-REG-032, TC-REG-033 |
Draft |
| AC-REG-31 | Step 4 default empty state (no vehicle yet) | RC-8 | Alternate | 🟡 Medium | The user reaches Step 4 "Register your vehicle" with no vehicle registered yet | The step loads | An empty state ("Let's start registering your vehicle", "You can register up to 4 vehicles") with a "Register vehicle" button is shown; no vehicle list is present | TC-REG-034 |
Draft |
| AC-REG-32 | Step 4 autofill state (≥1 vehicle) | RC-8 | Alternate | 🟡 Medium | The user has registered ≥1 and fewer than 4 vehicles on Step 4 | The Step 4 list view is shown | The registered vehicle(s) are listed with their details, a "Register more vehicles" option ("You can add upto 4 vehicles") and a Finish action are shown | TC-REG-035 |
Draft |
| AC-REG-33 | Open vehicle actions via 3-dot menu | RC-8 | Alternate | 🟡 Medium | A vehicle is listed on Step 4 | They tap the vehicle's 3-dot menu | A context menu offering "Edit Vehicle" and "Remove Vehicle" is shown, from which the vehicle can be edited or removed | TC-REG-036, TC-REG-027, TC-REG-028 |
Draft |
| AC-REG-34 | Removing a vehicle at the limit re-enables adding | RC-8 | Alternate | 🟡 Medium | The user has 4 vehicles registered (limit reached, adding blocked) | They remove one vehicle (now 3 registered) | Adding is no longer blocked: the "Register more vehicles" option ("You can register up to 4 vehicles") reappears and a new vehicle can be added | TC-REG-037 |
Draft |
Business Rules (rule-based AC)¶
| Rule ID | Business Rule | Jira | Rationale / Source | Criticality | Linked TCs | Status |
|---|---|---|---|---|---|---|
| BR-REG-01 | An email address may be registered only once — a second registration attempt with an existing email is rejected. | RC-8 | RC-8 ("Email has already been registered") | 🔴 Critical | TC-REG-005 |
Draft |
| BR-REG-02 | The email must be a syntactically valid email address before Step 1 can be submitted. | RC-8 | RC-8 ("Invalid email format") | 🟠 High | TC-REG-004 |
Draft |
| BR-REG-03 | Password must meet ALL of: ≥8 characters; ≥1 symbol or number; ≥1 capital letter; contains no spaces. The continue action is enabled only when all four pass. | RC-8 | RC-8 Step 3 password rules | 🔴 Critical | TC-REG-015, TC-REG-016, TC-REG-017 |
Draft |
| BR-REG-04 | Email ownership is verified by a 6-digit code sent to the entered address; the correct code must be entered to proceed past verification. | RC-8 | RC-8 Step 1 verification | 🔴 Critical | TC-REG-003, TC-REG-008 |
Draft |
| BR-REG-05 | The verification code can be resent only after the resend cooldown expires (5 minutes). | RC-8 | Stakeholder (5 min) — ⚠️ Figma shows "00:23" | 🟡 Medium | TC-REG-010 |
Draft |
| BR-REG-06 | Required fields — Step 1: email, first name, last name; Step 2: postcode, street name & number. Each step cannot be completed until its required fields are filled. | RC-8 | RC-8 Steps 1–2 | 🟠 High | TC-REG-006, TC-REG-011, TC-REG-014 |
Draft |
| BR-REG-07 | The postcode must be in a valid format before Step 2 can be submitted. | RC-8 | RC-8 ("Please enter a valid postcode") | 🟡 Medium | TC-REG-012 |
Draft |
| BR-REG-08 | At least one vehicle must be registered to complete the registration flow. | RC-8 | RC-8 Step 4 | 🟠 High | TC-REG-022 |
Draft |
| BR-REG-09 | A user may register a maximum of 4 vehicles; beyond that, adding is blocked and a contact-support popup is shown (Alexis@repaircheck.com). |
RC-8 | RC-8 Step 4 / RC-20 (my_vehicle) | 🟡 Medium | TC-REG-025, TC-REG-026 |
Draft |
| BR-REG-10 | A verification code is valid for 5 minutes; once it expires it is rejected and a new code must be requested. | RC-8 | RC-8 Step 1 verification (5-min expiry, confirmed) | 🟡 Medium | TC-REG-030 |
Draft |
| BR-REG-11 | Vehicle ownership is a mandatory single choice between "Owner" and "Rental", pre-selected to "Owner" by default; exactly one is always selected. | RC-8 | Stakeholder decision (2026-07-04) — default Owner | 🟡 Medium | TC-REG-038, TC-REG-021 |
Draft |
Traceability¶
Epic RC-21 (User management)
└─ RC-8 (Registration page) ──▶ AC-REG-01…35 / BR-REG-01…11 ──▶ TC-REG-NNN (via /gen-tc)
- Upward: header
SRS ref+ each row'sJiracolumn link the AC toRC-8(the registration child of EpicRC-21). - Downward:
Linked TCslists the test cases in01_Features/registration/registration_tc.mdthat verify each AC. - Coverage rule: every 🔴 Critical / 🟠 High AC and every business rule must have ≥1 Linked TC once TCs exist.
Open Questions / Assumptions (BA — confirm with stakeholders before TC generation)¶
- Step 4 scope (vehicle registration) — DECIDED: in scope. RC-8's comment "Skip Register Vehicle step for now" is disregarded per stakeholder decision (2026-07-01); the Register Vehicle step is covered (AC-REG-17, AC-REG-20…26, BR-REG-08/09). Note the vehicle detail overlaps
RC-20(my_vehicle feature, codeMV) — keep the two registers in sync to avoid divergence. - Vehicle field value ranges. The vehicle-form option lists (Brand/Modell/Baujahr/Kategorie/Motor come from API; Baujahr 1990–now; No. of doors 2–6; No. of seats 2/3/4/5/7; KW free text) are specified in RC-20, not RC-8. Confirm these ranges are authoritative for the registration flow too.
- Verification code details. Confirmed: 6-digit code, expiry = 5 minutes (drives AC-REG-28 / BR-REG-10), resend cooldown = 5 minutes (BR-REG-05), no max-attempt lockout (unlimited incorrect entries — no lockout case designed). ⚠️ Discrepancy to resolve with design: the Figma verification screen shows "Send again in 00:23" (23s), which conflicts with the confirmed 5-minute cooldown — align the mockup or the value.
- Password bounds. RC-8 gives a lower bound (≥8) and composition rules but no maximum length. Confirm max length and whether a strength label other than Weak/Strong exists (e.g. Medium).
- Name validation. The digits-only name produces a soft warning ("Are you sure…") in Figma — assumed non-blocking (AC-REG-07). Confirm it never blocks submission and whether any hard character rules apply (min/max length, allowed characters).
- Postcode validity. Assumed a format check only (Germany-oriented, per the German field labels). Confirm whether the postcode is validated against a real postcode service / must match the map-selected address.
- Email change before verification. If the user goes back and edits the email after a code was sent, is a new code required? (Not specified.)
- Deleted-account email reuse (AC-REG-27). Assumed an email freed by account deletion becomes available for a fresh registration. Confirm whether deleted-account emails are truly released, reserved for a grace period, or permanently blocked.
- Vehicle ownership field — DECIDED (2026-07-04). The "Owner / Rental" choice belongs to registration (this feature), not
MV. It is a required single choice defaulting to "Owner" (pre-checked); the user can switch to "Rental". Covered by AC-REG-35 / BR-REG-11. The same field on theMVvehicle form is documented here and intentionally not duplicated inmy_vehicle. - Password visibility (AC-REG-30). Assumed the field is masked by default with an eye icon that reveals and re-hides. Confirm the default state and whether the toggle persists across steps.
- SRS text.
01_Features/registration/registration_srs.mdexists but holds screenshots only — the written requirement text is still missing.