2.0 KiB
2.0 KiB
QA procedure: Profile role card (roles sync pass 6)
Spec: features/roles_sync_profile_role_card.feature. Vitest + Vue Test Utils under task test:web, access from web/src/test/access.ts (ownerAccess, customAccess, writerAccess).
Honesty rules
- Baseline
task test:webfirst. 1. Runner cannot execute: NOT RUN. 2. Report new and edited specs and baseline failures. 3. EN strings are asserted; FR for "Custom", "Locked", "Built-in" is proposed by the coder (gap G1).
Automated (Vitest)
| Spec | Cases |
|---|---|
| views/tests/ProfileView.spec.ts (edit) | the three card states and their tag rows and order, no summary line, no "Assigned by" with an object, null and an absent key (replaces the slice 7 case that asserted "Assigned by Marta Alves"), See what I can do desktop dialog and mobile sheet, Close and focus return, live role change, skeleton, no GET /v1/role call |
| lib/tests/permissions.spec.ts (edit) | role_assigned_by is still parsed but not used by Profile |
| i18n/roleMessages.spec.ts (extend) | keys for Locked, Built-in, Custom in EN and FR |
| components/tests/RoleBadge.spec.ts (extend if it exists) | the Owner crown icon and the locked variant |
Visual (task visual:check)
Run task visual:check -- profile. States: Role card custom role, Role card Owner. Board sample data: Contributor (Custom) and Owner (Locked, Built-in), key line as in the design. Light, dark, desktop, mobile within 10 %. The card sits after the Account card (G8 of slice 7; the coder confirms against the board).
Manual checks
- Tab order: the link is reachable after the badges; focus returns after Close.
- Mobile 390 px: the badge row wraps without overflow, 44 px target for the link.
task lint:webgreen;task test:webexit 0.
Design gaps and notes
- G1 FR copy for the tags is not in the design.
- G2 Backend
role_assigned_bystays (user decision); the SPA ignores it. - G3 The design routes cite GET /v1/me; the real one is /v1/auth/me.
- Leftover, out of scope: screens/profile.md Display name copy is stale.