Skip to content

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's Jira column link the AC to RC-8 (the registration child of Epic RC-21).
  • Downward: Linked TCs lists the test cases in 01_Features/registration/registration_tc.md that 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)

  1. 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, code MV) — keep the two registers in sync to avoid divergence.
  2. 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.
  3. 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.
  4. 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).
  5. 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).
  6. 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.
  7. 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.)
  8. 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.
  9. 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 the MV vehicle form is documented here and intentionally not duplicated in my_vehicle.
  10. 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.
  11. SRS text. 01_Features/registration/registration_srs.md exists but holds screenshots only — the written requirement text is still missing.