Test Case Register — Lawyer (LAW)¶
Coverage Summary¶
| Total TCs | Automated | Manual | Pending | Coverage % |
|---|---|---|---|---|
| 24 | 0 | 0 | 24 | 0% |
| Critical | High | Medium | Low |
|---|---|---|---|
| 7 | 8 | 8 | 1 |
AC source:
01_Features/lawyer/wa_lawyer/./wa_lawyer_ac.md— all 19 AC (AC-LAW-01…19) and 7 business rules (BR-LAW-01…07) have ≥1 covering TC (BR-LAW-06 verified indirectly at the Home-page tile level).⚠️ UI coverage is pending.
01_Features/lawyer/wa_lawyer/screensis empty, so no design was available. TCs marked[DEP] UI pendingassert only behaviour the ticket describes; the concrete lawyer-card contents and filter control type must be confirmed against the design before execution. No UI element was invented.✅ All 14 open questions resolved (2026-08-06) — see
## Confirmed Decisionsin the AC spec: filter semantics (≥N★), unrated-lawyer + tie-break handling, no minimum review count, Calendly link flexibility + new-tab behaviour, "Terminierungsoptionen" single option, login-required permission (Admin config), lazy-loaded list (no hard cap), filter resets on navigate-away/reload, and German-priority localisation. TCs below updated to match; TC-LAW-020 and TC-LAW-021 added.
Test Case Table¶
1. Navigation & List Display¶
| TC ID | Test Scenario | AC | Jira | Priority | Coverage | Cucumber Tag | Preconditions | Test Data | High-level Steps | Expected Result | Status | Note |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| TC-LAW-001 | Open the lawyer list from "Unfall Rechtsberatung" | AC-LAW-01 | RC-116 | 🔴 Critical | 🔵 Pending | @TC-LAW-001 |
The "Unfall Rechtsberatung" entry point is reachable in the Web App At least 3 lawyers exist |
3 lawyers with distinct names and ratings | 1. Open the Web App. 2. Select "Unfall Rechtsberatung". | The Lawyer list page opens and lists all 3 available lawyers; each entry shows at least the lawyer's name and rating. | ⬜ Not Run | [DEP] UI pending — card contents unconfirmed |
| TC-LAW-002 | Reach every lawyer via lazy loading | AC-LAW-14 | RC-116 | 🟠 High | 🔵 Pending | @TC-LAW-002 |
25 lawyers exist — more than fit on one screen | 25 lawyers, uniquely identifiable | 1. Open the Lawyer list page. 2. Scroll to the bottom of the loaded list repeatedly. 3. Count the entries. | Further lawyers load as the user scrolls (lazy loading); all 25 lawyers are eventually reachable — no hard cap (confirmed: not the RC-124 20-item cap bug). |
⬜ Not Run | [DATA] [BUG] related open bug RC-124 |
2. Sorting¶
| TC ID | Test Scenario | AC | Jira | Priority | Coverage | Cucumber Tag | Preconditions | Test Data | High-level Steps | Expected Result | Status | Note |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| TC-LAW-003 | Order the unfiltered list rating-descending | AC-LAW-02, BR-LAW-02 | RC-116 | 🟠 High | 🔵 Pending | @TC-LAW-003 |
Lawyers with differing ratings exist | Lawyers rated 5★, 4★ and 3★ | 1. Open the Lawyer list page without applying any filter. | The 5★ lawyer appears above the 4★ lawyer, which appears above the 3★ lawyer — highest rating on top. | ⬜ Not Run | [DATA] |
| TC-LAW-004 | Keep a stable order for equal ratings | AC-LAW-08, BR-LAW-02 | RC-116 | ⚪ Low | 🔵 Pending | @TC-LAW-004 |
Two lawyers share the same rating | 2 lawyers both rated 4★ | 1. Open the Lawyer list page. 2. Record the order. 3. Reload the page. | Both 4★ lawyers appear consecutively, and their relative order is identical on every reload (confirmed: no secondary sort key required — any consistent order is acceptable). | ⬜ Not Run | [DATA] |
3. Rating Filter¶
| TC ID | Test Scenario | AC | Jira | Priority | Coverage | Cucumber Tag | Preconditions | Test Data | High-level Steps | Expected Result | Status | Note |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| TC-LAW-005 | Filter by 2★ returns that rating and above | AC-LAW-03, BR-LAW-01, BR-LAW-02 | RC-116 | 🔴 Critical | 🔵 Pending | @TC-LAW-005 |
The Lawyer list page is open with no filter applied | Lawyers rated 1★, 2★, 3★ and 4★ | 1. Apply the 2★ rating filter. 2. Inspect the result set and its order. | The 2★, 3★ and 4★ lawyers are listed, the 1★ lawyer is excluded, and the result is ordered 4★ → 3★ → 2★. | ⬜ Not Run | [DATA] |
| TC-LAW-006 | Raise the filter to narrow the result | AC-LAW-04 | RC-116 | 🟡 Medium | 🔵 Pending | @TC-LAW-006 |
The 2★ filter is applied, listing lawyers rated 2★, 3★, 4★ | Lawyers rated 2★, 3★ and 4★ | 1. Change the rating filter from 2★ to 4★. | Only the 4★ lawyer remains listed; the 2★ and 3★ lawyers are removed from the result. | ⬜ Not Run | [DATA] |
| TC-LAW-007 | Clear the rating filter to restore the full list | AC-LAW-05 | RC-116 | 🟡 Medium | 🔵 Pending | @TC-LAW-007 |
A 4★ filter is applied, listing a subset of the lawyers | Lawyers rated 2★, 3★ and 4★ | 1. Clear / reset the rating filter. | All lawyers are listed again in rating-descending order, and the filter control shows no active selection. | ⬜ Not Run | [DEP] UI pending — reset control unconfirmed |
| TC-LAW-008 | Filter by the highest rating with no match | AC-LAW-06 | RC-116 | 🟠 High | 🔵 Pending | @TC-LAW-008 |
No lawyer in the list has a 5★ rating | Lawyers rated 2★, 3★ and 4★ only | 1. Apply the 5★ rating filter. 2. Inspect the page and the filter control. | No lawyer entry is listed, an explicit "no results" state is shown instead of a blank page, and the filter is still set to 5★. | ⬜ Not Run | |
| TC-LAW-009 | Filter by the lowest rating keeps every lawyer | AC-LAW-07 | RC-116 | 🟡 Medium | 🔵 Pending | @TC-LAW-009 |
The Lawyer list page is open with no filter applied | Lawyers spanning 1★ to 5★ | 1. Record the unfiltered list. 2. Apply the lowest rating filter (1★). | Every lawyer rated 1★ or higher is listed — the result is identical to the unfiltered list (lower boundary). | ⬜ Not Run | [DATA] |
| TC-LAW-010 | Offer the full 1★–5★ range in the filter, including lawyers with few reviews | BR-LAW-03 | RC-116 | 🟡 Medium | 🔵 Pending | @TC-LAW-010 |
The Lawyer list page is open At least one lawyer has zero reviews |
1 lawyer with 0 reviews, others with decimal aggregate ratings (e.g. 3.25★) | 1. Open the rating filter control. 2. Inspect the selectable values. 3. Inspect the lawyer with 0 reviews. | The filter offers each whole-star rating from 1★ to 5★; every displayed lawyer's aggregate rating (which may be decimal) falls inside that range; the lawyer with 0 reviews still displays a rating (no minimum-review gating). | ⬜ Not Run |
4. Appointment Scheduling (Calendly)¶
| TC ID | Test Scenario | AC | Jira | Priority | Coverage | Cucumber Tag | Preconditions | Test Data | High-level Steps | Expected Result | Status | Note |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| TC-LAW-011 | Present the scheduling options for a lawyer | AC-LAW-09 | RC-116 | 🟠 High | 🔵 Pending | @TC-LAW-011 |
The Lawyer list page is open with at least one lawyer entry | 1 lawyer offering "Terminierungsoptionen" | 1. Select "Terminierungsoptionen" on a lawyer entry. | "Termin vereinbaren" is presented as the only scheduling option for that lawyer (no other options, unlike expert_call_appointment). |
⬜ Not Run | |
| TC-LAW-012 | Open Calendly via "Termin vereinbaren" | AC-LAW-10, BR-LAW-04 | RC-116 | 🔴 Critical | 🔵 Pending | @TC-LAW-012 |
The "Terminierungsoptionen" options are presented for a lawyer | Calendly page for that lawyer (may be a shared or per-lawyer link — e.g. calendly.com/alextyl/jaekelgmbh) |
1. Select "Termin vereinbaren". 2. Inspect the destination that opens. | The Calendly scheduling page opens in a new browser tab and offers selectable appointment slots. | ⬜ Not Run | [DEP] External service |
| TC-LAW-013 | Return to the list after opening Calendly | AC-LAW-11 | RC-116 | 🟡 Medium | 🔵 Pending | @TC-LAW-013 |
A 3★ filter is applied and Calendly was opened from a lawyer entry in a new tab | Lawyers rated 3★ and 4★ | 1. Switch back to the original Lawyer-list browser tab (Calendly stays open in its own tab). 2. Inspect the filter and result. | The Lawyer list page is usable, the 3★ filter is still applied, and the same lawyers are listed in the same order. | ⬜ Not Run |
5. Error Handling & Resilience¶
| TC ID | Test Scenario | AC | Jira | Priority | Coverage | Cucumber Tag | Preconditions | Test Data | High-level Steps | Expected Result | Status | Note |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| TC-LAW-014 | Handle a lawyer-list load failure | AC-LAW-13 | RC-116 | 🟠 High | 🔵 Pending | @TC-LAW-014 |
The lawyer data source is stubbed to fail (error / timeout) | — | 1. Open the Lawyer list page while the data source is failing. | An error state with a retry action is shown; no empty or partial list is presented as a valid result. | ⬜ Not Run | [DEP] Needs fault injection |
| TC-LAW-015 | Handle Calendly being unreachable | AC-LAW-12 | RC-116 | 🟡 Medium | 🔵 Pending | @TC-LAW-015 |
Access to the Calendly page is blocked A 3★ filter is applied |
— | 1. Select "Termin vereinbaren" on a lawyer entry. 2. Return to the list. | The failure is reported to the user with a way to retry, and the Lawyer list page remains usable with the 3★ filter intact. | ⬜ Not Run | [DEP] Needs network blocking |
6. Responsive / Compatibility¶
| TC ID | Test Scenario | AC | Jira | Priority | Coverage | Cucumber Tag | Preconditions | Test Data | High-level Steps | Expected Result | Status | Note |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| TC-LAW-016 | Operate the Lawyer page on a phone | AC-LAW-15, BR-LAW-05 | RC-116 | 🔴 Critical | 🔵 Pending | @TC-LAW-016 |
A phone-sized viewport At least 3 lawyers exist |
3 lawyers | 1. Open the Lawyer list page on a phone. 2. Apply a rating filter. 3. Open "Terminierungsoptionen". | List entries, the rating filter and "Terminierungsoptionen" are fully visible and operable; nothing is clipped or overlapping and no horizontal scrolling is needed. | ⬜ Not Run | [DEP] UI pending — no design to compare against |
| TC-LAW-017 | Operate the Lawyer page on a tablet, both orientations | AC-LAW-16, BR-LAW-05 | RC-116 | 🔴 Critical | 🔵 Pending | @TC-LAW-017 |
An iPad Pro (or equivalent tablet), portrait then landscape | 3 lawyers | 1. Open the Lawyer list page in portrait. 2. Switch to landscape. 3. Use the rating filter and "Terminierungsoptionen" in both. | The layout renders correctly in both orientations with no clipped, overlapping or misaligned elements, and both controls stay operable. | ⬜ Not Run | [BUG] Verifies the iPad Pro landscape defect fixed under RC-116 |
| TC-LAW-018 | Keep the filter across an orientation change | AC-LAW-17, BR-LAW-07 | RC-116 | 🟡 Medium | 🔵 Pending | @TC-LAW-018 |
A 3★ filter is applied on a tablet in portrait orientation | Lawyers rated 3★, 4★ and 5★ | 1. Rotate the device to landscape. 2. Inspect the filter and the result list. | The 3★ filter is still applied and the same lawyers are listed in the same order (orientation change is the one case where the filter persists — see BR-LAW-07). | ⬜ Not Run |
7. Permission & Filter Reset¶
| TC ID | Test Scenario | AC | Jira | Priority | Coverage | Cucumber Tag | Preconditions | Test Data | High-level Steps | Expected Result | Status | Note |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| TC-LAW-020 | Unauthenticated user cannot access the Lawyer page | AC-LAW-18, BR-LAW-06 | RC-116 | 🔴 Critical | 🔵 Pending | @TC-LAW-020 |
User is logged out The Lawyer feature is Admin-configured "login required" |
— | 1. While logged out, attempt to open the Lawyer page (via entry point or direct route). 2. Observe the result. | The lawyer list is not shown, and the user is redirected to the Login page. | ⬜ Not Run | |
| TC-LAW-021 | Rating filter resets when returning to the page or reloading | AC-LAW-19, BR-LAW-07 | RC-116 | 🟡 Medium | 🔵 Pending | @TC-LAW-021 |
A 3★ filter is applied on the Lawyer list page | — | 1. Apply the 3★ filter. 2. Navigate away to another page, then back to the Lawyer page (and separately, test a page reload). | The filter is reset to its default (no filter) in both cases — unlike an orientation change (TC-LAW-018), which preserves it. | ⬜ Not Run |
8. Regression¶
| TC ID | Test Scenario | AC | Jira | Priority | Coverage | Cucumber Tag | Preconditions | Test Data | High-level Steps | Expected Result | Status | Note |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| TC-LAW-019 | Confirm the Find an Expert page is unaffected | — | RC-116 | 🟠 High | 🔵 Pending | @TC-LAW-019 |
Both the Lawyer page and the Find an Expert page are deployed | — | 1. Open the Find an Expert page. 2. Apply its rating filter. 3. Open its scheduling options. | The Find an Expert list, rating filter and scheduling options behave exactly as before the Lawyer page change — no shared-component regression. | ⬜ Not Run | [DEP] Cross-feature — belongs to expert_call_appointment (RC-112); duplicated here as RC-116 regression cover |
9. Cross-Feature — Web Portal Data Sync (wp_lawyer → lawyer)¶
| TC ID | Test Scenario | AC | Jira | Priority | Coverage | Cucumber Tag | Preconditions | Test Data | High-level Steps | Expected Result | Status | Note |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| TC-LAW-022 | Lawyer added in the Web Portal is available on the Lawyer Web app | AC-LAW-20 / BR-WPLAW-06 | — |
🔴 Critical | 🔵 Pending | @TC-LAW-022 |
Admin has added a new lawyer via the Web Portal (wp_lawyer, TC-WPLAW-001) with valid Full Name, Full address, Rate, and Company name |
Lawyer: QA Lawyer 99; Rate: 4★; Company: Reiner Holzapfel Karosseriebau-Lackierung |
1. In the Web Portal, add the lawyer 2. In the consumer app, open "Unfall Rechtsberatung" 3. Locate the lawyer's entry |
The new lawyer appears as a list entry, with name, firm/company, rating, and address matching exactly what the admin entered in the Web Portal | ⬜ Not Run | Cross-feature with wp_lawyer (feature WPLAW); source AC: feature WPLAW |
| TC-LAW-023 | Lawyer details edited in the Web Portal are reflected on the Lawyer Web app | AC-LAW-21 / BR-WPLAW-06 | — |
🟠 High | 🔵 Pending | @TC-LAW-023 |
Admin has edited a lawyer's Full Name, Full address, Rate, and/or Company name via the Web Portal (wp_lawyer, TC-WPLAW-004) and saved |
Lawyer: Van Lawyer; new Mobile/Rate change per TC-WPLAW-004 |
1. In the Web Portal, edit the lawyer's details and save 2. In the consumer app, view that lawyer's entry on the Lawyer Web app list |
The name, firm, rating, and address shown to the user match the values last saved in the Web Portal — never stale/previous data | ⬜ Not Run | Cross-feature with wp_lawyer (feature WPLAW) |
| TC-LAW-024 | Lawyer deleted in the Web Portal no longer appears on the Lawyer Web app | AC-LAW-22 / BR-WPLAW-06 | — |
🟠 High | 🔵 Pending | @TC-LAW-024 |
Admin has deleted a lawyer via the Web Portal (wp_lawyer, TC-WPLAW-007) and confirmed |
A disposable test lawyer record present on both Web Portal and Lawyer Web app before deletion | 1. In the Web Portal, delete the lawyer and confirm 2. In the consumer app, refresh/open the Lawyer Web app list |
The deleted lawyer no longer appears as a list entry | ⬜ Not Run | Cross-feature with wp_lawyer (feature WPLAW) |
Regression Impact (§15)¶
| Impacted area | Risk | Covered by |
|---|---|---|
| Find an Expert page (RC-112) — shares the list + rating-filter + Calendly pattern | A shared list/filter component changed for the Lawyer page could alter Find an Expert behaviour | TC-LAW-019 |
| "Unfall Rechtsberatung" entry point in the Web App navigation | The entry point had to be wired to the reworked page | TC-LAW-001 |
| Web App list paging (RC-124, open bug) — lists capping at 20 items | Confirmed the Lawyer list uses lazy loading with no cap; if the RC-124 bug's shared paging component regresses, it could still truncate this list | TC-LAW-002 |
| Tablet/landscape layout of sibling Web App pages | The iPad Pro landscape fix may have touched shared responsive styles | ⚠️ Not covered here — flagged for the QA Lead; needs a Web App-wide tablet regression pass |
Web Portal — Manage Lawyers (wp_lawyer, RC-107) — shared lawyer data source |
Add/edit/delete performed in the admin portal must sync correctly to this consumer-facing list; a sync defect here would surface as stale or missing lawyer data | TC-LAW-022, TC-LAW-023, TC-LAW-024 |
Techniques not applied¶
| Technique | Why not applicable |
|---|---|
| §6 Decision Table | The only condition driving the outcome is the selected rating; there is no second interacting condition to combine. |
| §7 Pairwise / all-pairs | Two parameters (rating filter × viewport) — too few to need all-pairs reduction; covered directly by TC-LAW-005…009 and TC-LAW-016/017. |
| §8 State Transition | Browsing, filtering and opening an external scheduling page change no entity lifecycle; the booking state lives in Calendly (BR-LAW-04). |
| §9 Field-level validation | The page has no user-input fields — the rating filter is a selection, not free text. |
| §13 Non-functional (perf / security / a11y / i18n) | RC-116 states no performance target, security requirement, or accessibility/localisation scope. Only compatibility is required, and that is covered by TC-LAW-016/017. |
| §3 Unauthorised access | Now covered — confirmed access follows the Admin feature-config mechanism, currently set to login-required. See TC-LAW-020 (AC-LAW-18, BR-LAW-06). |
Gherkin Mapping (Automated TCs only)¶
Add scenarios here as automation is implemented. The TC ID tag is mandatory for result tracing.
Note Tag Reference¶
| Tag | Meaning |
|---|---|
[FLAKY] |
Unstable — fails intermittently on CI. Check logs before rerunning |
[BUG] |
Blocked by / verifying an open bug — include ticket ID |
[DEP] |
Depends on specific env, mock service, fixture, or config |
[SKIP] |
Temporarily skipped — include reason and owner |
[DATA] |
Requires complex or manual data setup |