Test Cases
This page projects scenario definitions only. Live results, identities, owners, defect links, and session evidence are intentionally excluded.
Each surface groups its cases by priority — the same P0/P1/P2 bands as the QA app's Priority view — and sorts by ID within a band. IDs are permanent addresses: never renumbered, never reused; retired cases keep their ID in the catalog history.
- P0 — walk first — the highest-priority coverage for an applicable session.
- P1 — walk next — important coverage after the P0 band.
- P2 — walk after P0 and P1 when the session scope allows.
Priority sets run order only. A failure's severity is assigned separately during triage.
Each case carries one kind, the category axis:
- Journey — A person completes, or is honestly gated out of, a flow in the UI — no wallet transaction involved.
- Transaction — The walk performs real wallet or on-chain writes: approvals, attestations, deposits, claims (always tx-tagged).
- Data integrity — Chain, indexer, and UI agree, and queues, drafts, and identity survive restarts and surface switches.
- Content & vocabulary — Copy, vocabulary, locale quality, and guide truth hold on the rendered surface.
- Accessibility — Keyboard, focus, contrast, touch targets, safe areas, and responsive layout stay usable.
- Resilience — Offline behavior, error recovery, updates, and performance degrade and recover honestly.
How this catalog changes
scripts/data/qa-test-catalog.json is the source of truth, and it changes the way code does: by pull request. Every case carries one status:
-
active — Walked in sessions; ships to the QA app run sheet and the Test Cases page.
-
retired — No longer walked; keeps its ID, retirement date, and reason in the catalog and never ships to a run sheet.
-
A new case enters as
active, takes the next number in its surface prefix, is appended to the ID ledger (scripts/data/qa-test-id-ledger.json), and names where it came from insource. -
Wording, step, and evidence edits happen in place — the ID keeps meaning the same check.
-
When what a case proves changes, it is retired with
retiredOn,retiredReason, andreplacedBywhen successors exist, and the new check gets a new ID — so every past verdict keeps its meaning. -
After a catalog change merges, redeploy the QA app (a deployment pins the catalog revision it shipped with) and regenerate this page with
bun run docs:generate; CI rejects a stale copy.
The catalog contract test enforces all of this, and retired cases are listed at the end of this page.
Public Website
P0 — run these first (7)
| ID | Kind | Area | Scenario | Evidence requested |
|---|---|---|---|---|
PUB-001 | Journey | Public Shell | Public routes use website shell, not PWA shell | Screenshot of one public desktop route |
PUB-002 | Journey | Public Shell | Mobile public navigation works | Mobile screenshot or short video |
PUB-003 | Data integrity | Garden Discovery | Gardens listing renders real data at volume with search | Screenshot of listing and detail |
PUB-014 | Transaction | Funding | Donate end to end from /fund: token pick, USD⇄WETH switch, connect-from-card, approve+deposit, reject recovery | Screen recording of the two-prompt flow |
PUB-015 | Transaction | Funding | Endow a garden from /fund incl. approval-reset path and no-vault message | Screenshot of success + no-vault message |
PUB-017 | Transaction | Funding | Campaign vault checkout on /vaults: amount, connect, wrap ETH if needed, multi-step endow | Recording of the multi-step checkout |
PUB-019 | Transaction | Cookies | Claim from a campaign cookie jar: eligibility, cooldown, fixed vs variable amounts | Screenshot of claim toast + balance |
P1 (14)
| ID | Kind | Area | Scenario | Evidence requested |
|---|---|---|---|---|
PUB-006 | Data integrity | Impact | Impact page loads without stale loading or blank metrics | Screenshot |
PUB-007 | Content & vocabulary | Actions | Actions route renders public-safe content | Screenshot |
PUB-008 | Resilience | Cookies | Cookies route and direct jar route degrade gracefully | Screenshot |
PUB-012 | Resilience | Funding | Wallet edge states fail helpfully: none installed, wrong network | Screenshots of both states |
PUB-016 | Transaction | Funding | Withdraw an endowment via Manage Endowments: expand position, Max, withdraw | Screenshot of updated position |
PUB-018 | Transaction | Funding | Redeem a campaign position from Manage positions | Screenshot of redeem result |
PUB-020 | Transaction | Cookies | Deposit into a campaign jar + deep-link ?jar= focus + connection-line 'Disconnect' behavior | Screenshot of deep-link focus |
PUB-021 | Journey | Install | Install App branches: desktop QR dialog, mobile steps, copy-URL, Open App flip | Screenshot of each branch |
PUB-023 | Journey | Garden Discovery | Garden detail deep interactions: field-note drawer, lightbox, show-more, Support handoff | Screenshot of drawer + highlighted fund row |
PUB-024 | Journey | Impact | Impact filters, pagination, evidence drawer, and Cite this record | Screenshot of filtered results |
PUB-026 | Journey | Garden Records | Open a field-note record: media mosaic, lightbox, feedback, attestation link | Screenshot of record + explorer tab |
PUB-027 | Journey | Garden Records | Read the public commitments story across pool states | Screenshots per state |
PUB-030 | Journey | Funding | Read-only browse of /vaults and /fund without signing | Screenshot of read-only browse |
PUB-031 | Content & vocabulary | Locale Quality | Editorial language switch: en/pt/es with persistence and no mixed-language pages | Screenshot per locale |
P2 (9)
| ID | Kind | Area | Scenario | Evidence requested |
|---|---|---|---|---|
PUB-010 | Content & vocabulary | Orientation | Glossary and orientation routes stay understandable | Screenshot or notes |
PUB-011 | Accessibility | Responsive Shell | Editorial shell holds at 375px and 1440px with keyboard access | Screenshots at both widths |
PUB-013 | Resilience | Garden Discovery | Unknown or broken garden URL degrades honestly | Screenshot of the not-found state |
PUB-022 | Journey | Home | Home engagement: seasonal-letter subscribe, schedule a call, persona accordion | Screenshot of inline thanks |
PUB-025 | Accessibility | Responsive Shell | Editorial media fallbacks and hero CTA legibility | Screenshots light + dark |
PUB-028 | Journey | Garden Records | Cycle details and the certificate tie-in | Screenshot of matching counts |
PUB-029 | Journey | Garden Records | Certificates and steward identities on the garden page | Screenshot of both sections |
PUB-032 | Content & vocabulary | SEO & Meta | Social and SEO meta on home and garden detail | Screenshot of preview render |
PUB-033 | Content & vocabulary | Vocabulary | Editorial vocabulary holds: no admin/cockpit jargon on public pages | List of offending terms with routes (or a clean pass note) |
PWA
P0 — run these first (20)
| ID | Kind | Area | Scenario | Evidence requested |
|---|---|---|---|---|
PWA-020 | Journey | Auth | Desktop-shell wallet login connects, signs, and recovers from a rejected signature | Recording of reject + retry |
PWA-021 | Transaction | Garden Join | Join flows: open joining, request-to-join with note, withdraw request, steward welcome/decline | Screenshots of each toast |
PWA-028 | Transaction | Cookies | Claim from a garden cookie jar in the Wallet drawer (purpose required) | Screenshot of claim result |
PWA-030 | Journey | My Work | Work dashboard: drafts resume/delete, pending and completed filters, open items | Screenshot of dashboard states |
PWA-031 | Transaction | Work Submission | Full work submission on desktop shell: action, garden, media upload, audio note, details, location, review, submit | Recording of wizard + submit |
PWA-033 | Transaction | Commitments | Commitment detail acts: take up, withdraw with reason, confirm / not-yet, link work, steward claim decisions | Screenshots per act |
PWA-035 | Transaction | Review | Review work on desktop shell: approve with optional feedback, reject requires feedback | Screenshot of decided states |
PWA-AND-001 | Journey | Install | [Android] Fresh Android install launches standalone | Screen recording |
PWA-AND-002 | Resilience | Update | [Android] Existing Android install updates without split state | Screen recording |
PWA-AND-003 | Data integrity | Upload | [Android] Camera and gallery image handling works on Android | Screen recording |
PWA-AND-004 | Transaction | Offline Queue | Offline queue survives app close and reconnect | Screen recording plus queue/status screenshot |
PWA-IOS-001 | Journey | Install | [iOS] Fresh iOS install launches standalone | Photo or screen recording |
PWA-IOS-002 | Resilience | Update | [iOS] Existing iOS install updates without split state | Screen recording |
PWA-IOS-003 | Resilience | Auth | Login/passkey/wallet gate is recoverable on iOS | Screen recording plus account role |
PWA-IOS-004 | Data integrity | Upload | [iOS] Camera capture preview and draft persist on iOS | Screen recording |
PWA-IOS-006 | Transaction | Offline Queue | Offline work submission queues and flushes once | Screen recording plus queue/status screenshot |
PWA-IOS-014 | Transaction | Upload | Submission validation blocks incomplete work and rapid double-taps | Screenshot of validation errors; work list showing a single submission |
PWA-ROLE-001 | Transaction | Review | Approve pending work with valid role on iOS | Screen recording plus account role |
PWA-ROLE-002 | Transaction | Review | Reject pending work with reason on iOS | Screen recording plus account role |
PWA-ROLE-003 | Journey | Permissions | Insufficient-role user cannot approve or reject on iOS | Screenshot plus account role |
P1 (25)
| ID | Kind | Area | Scenario | Evidence requested |
|---|---|---|---|---|
PWA-023 | Journey | Routing | Refresh and direct deep links preserve garden/work context | Screenshot after refresh |
PWA-025 | Content & vocabulary | Locale Quality | Portuguese/Spanish render dates, plurals, and diacritics on the client | Screenshots per locale |
PWA-026 | Resilience | Auth | In-app wallet edge states: wrong network and mid-session disconnect recover | Screenshot of the network gate |
PWA-027 | Journey | Home | Home orientation: pull-to-refresh (online/offline), filters, drawer entry points, arrival toast | Screenshot of filters + drawer |
PWA-029 | Transaction | Wallet | Send tokens: recipient search/QR/browse, amount+Max, review with note, confirm | Recording of the full send |
PWA-032 | Transaction | Commitments | Compose a commitment: beats, draft resume, read-to-end gate, place offer/request | Screenshot of done screen |
PWA-034 | Transaction | Commitments | Proof composer: media and audio capture, beats, submit proof | Screenshot of composer |
PWA-036 | Transaction | Governance | Allocate conviction support points in the governance drawer | Screenshot of updated stake |
PWA-037 | Transaction | Endowment | Garden endowment drawer: vault deposit, own-deposit withdraw, in-drawer jar claim | Screenshot of drawer states |
PWA-038 | Transaction | Profile | Profile actions: avatar edit/remove with draft recovery, theme, language, ENS claim/release, badges, logout | Screenshots of profile flows |
PWA-040 | Resilience | Offline | Offline mid-browse: toggle devtools offline while navigating, then reconnect | Screenshot of offline state |
PWA-041 | Resilience | Update | Desktop service-worker update: banner on a new deploy, refresh applies cleanly | Screenshot of the banner |
PWA-042 | Accessibility | Accessibility | Keyboard and focus smoke on core PWA flows: wizard, drawers, dialogs | Notes per surface + screenshots |
PWA-043 | Resilience | Performance | Boot performance: warm reload locally; cold-start budget on a production build | Console timings screenshot |
PWA-AND-005 | Accessibility | Mobile UI | Keyboard and drawer layout remain usable on Android | Screenshots |
PWA-IOS-005 | Data integrity | Upload | [iOS] HEIC or library image survives submission draft | Screenshot before and after reopen |
PWA-IOS-007 | Accessibility | Mobile UI | Drawers and bottom nav respect safe areas | Screenshots with drawer and keyboard |
PWA-IOS-008 | Data integrity | Garden Discovery | Home and Garden discovery handle real, empty, and stale data | Screenshots of home, list, and detail |
PWA-IOS-010 | Journey | Assessments | Assessment detail is readable without losing garden context | Screenshots of assessment and return |
PWA-IOS-012 | Journey | Installed Navigation | Bottom AppBar behavior holds through flows and back navigation | Screen recording of navigation loop |
PWA-IOS-013 | Journey | Auth | Logout clears the session and re-login works cleanly | Screen recording of the loop |
PWA-ROLE-004 | Transaction | Review | Approve pending work with valid role on Android | Screen recording plus account role |
PWA-ROLE-005 | Transaction | Review | Reject pending work with reason on Android | Screen recording plus account role |
PWA-ROLE-006 | Journey | Permissions | Insufficient-role user cannot approve or reject on Android | Screenshot plus account role |
XPLAT-005 | Journey | Install | Website-to-install handoff keeps browser and PWA shells separate | Screen recording across the handoff |
P2 (3)
| ID | Kind | Area | Scenario | Evidence requested |
|---|---|---|---|---|
PWA-039 | Journey | Home | Notifications popover, ENS reminder toast, AppBar badges and auto-hide | Screenshot of popover + badge |
PWA-044 | Data integrity | Identity | Identity parity: the same gardener across website records, PWA, and admin queue | Three-surface screenshot set |
PWA-045 | Content & vocabulary | Vocabulary | PWA vocabulary holds: gardener-facing language, no internal or admin terms | List of offending terms with routes (or a clean pass note) |
Admin Dashboard
P0 — run these first (15)
| ID | Kind | Area | Scenario | Evidence requested |
|---|---|---|---|---|
ADM-001 | Journey | Shell | Admin hub loads with canonical canvas shell | Screenshot |
ADM-002 | Journey | Routing | Primary admin direct routes reload | Screenshot set or notes |
ADM-003 | Journey | Auth Gates | Unauthenticated admin state is clear | Screenshot |
ADM-004 | Journey | Work Queue | Work queue/detail state is usable | Screenshot |
ADM-005 | Journey | Assess | Assessment create flow gates invalid input | Screenshot or video |
ADM-006 | Journey | Certify | Certification flow does not overpromise transaction state | Screenshot |
ADM-007 | Journey | Endowment | Endowment and vault routes are role-gated and readable | Screenshot |
ADM-012 | Transaction | Hub Work Review | Full review decision path completes with actions visible | Screen recording; screenshot of the action region at ~1084x637 |
ADM-013 | Transaction | Hub Confirmations | Commitment confirmation states who and what before commit | Screenshots of confirmation and result |
ADM-018 | Transaction | Hub Work Review | Decision integrity: no double decisions, honest tx failure | Screenshots of the blocked second decision and the failure state |
ADM-020 | Transaction | Garden Settings | Garden settings: per-field edits, banner upload/remove+undo, joining toggle, gardener cap, domains | Recording of sequential saves |
ADM-021 | Transaction | Members | Members: batch add via 0x/ENS/clipboard, remove with confirm, join-request queue welcome/decline | Screenshot of queue states |
ADM-022 | Transaction | Garden Pool | Pool lifecycle: set up commitments, start/open a season or campaign, cancel with reason, pause/resume, close/archive/reopen | Screenshots per lifecycle step |
ADM-023 | Transaction | Endowment | Endowment operations: vault deposit with limits, withdraw, harvest & distribute, emergency pause, auto-allocate | Screenshot of harvest report |
ADM-025 | Transaction | Hub Confirmations | Commitment inspector steward acts: confirm ordinary/fallback, raise & resolve dispute, expire, recovery overrides | Screenshots per act |
P1 (16)
| ID | Kind | Area | Scenario | Evidence requested |
|---|---|---|---|---|
ADM-008 | Journey | Coordination | Coordination routes render without broken state | Screenshot |
ADM-009 | Journey | Actions | Create and edit action forms validate correctly | Screenshot or video |
ADM-010 | Journey | Cookies | Campaign cookie jar management and deploy gating are clear | Screenshot |
ADM-011 | Journey | Garden Admin | Garden health, settings, members, and impact routes render | Screenshot |
ADM-014 | Journey | Garden Pool | Pool console statuses, seeding, and detail are coherent | Screenshots of pool, seed review, and detail |
ADM-015 | Journey | Cross-Route Continuity | Workspace selection survives back, refresh, and deep links | Screen recording of the loop |
ADM-016 | Content & vocabulary | Locale Quality | Portuguese and Spanish render dates, plurals, and units correctly | Screenshots of pt/es views with real records |
ADM-017 | Transaction | Garden Lifecycle | Garden creation reviews before submit and lands usable | Screenshots of validation, review, and landing |
ADM-024 | Transaction | Payouts | Cookie jar payouts: deposit, withdraw with purpose within limits and cooldown | Screenshot of withdraw result |
ADM-026 | Transaction | Garden Pool | Seed a commitment: 4-step wizard, named confirmers, review, queued creation | Screenshot of queued row |
ADM-027 | Transaction | Coordination | Coordination: create signal pools, manage strategies, register/deregister items, allocate weights | Screenshot of saved weights |
ADM-028 | Transaction | Impact | Hypercert marketplace: approvals gate, list for yield, cancel listing — including whether it's reachable at all | Screenshot of listing state |
ADM-029 | Journey | Shell | Global chrome: garden switch chip, command palette (⌘K), notifications sheet, view-public | Screenshot of palette |
ADM-030 | Transaction | Work Submission | Admin submit-work wizard with review-step edit jumps and offline queueing | Screenshot of review step |
ADM-031 | Journey | Work Queue | Hub queue at volume: full scroll, search/sort, deep item open and return | Recording of scroll return |
ADM-033 | Transaction | Garden Lifecycle | First-run: zero-garden steward sees an honest no-access state; a deployer gets the create funnel | Screenshot of empty state |
P2 (6)
| ID | Kind | Area | Scenario | Evidence requested |
|---|---|---|---|---|
ADM-019 | Journey | Profile | Admin profile renders identity and sign-out lands sensibly | Screenshot of profile + landing |
ADM-032 | Resilience | Error Recovery | Data-source failure on the hub: throttle/offline the network and load | Screenshot of error + recovery |
ADM-034 | Accessibility | Accessibility | Admin keyboard smoke: palette, dialogs, wizard focus order | Notes + screenshots |
ADM-035 | Content & vocabulary | Vocabulary | Admin vocabulary holds: cockpit language, no editorial 'hero/story' terms | List of offending terms with routes (or a clean pass note) |
ADM-036 | Accessibility | Accessibility | Admin light and dark themes keep every control legible | Paired light/dark screenshots of any issue |
XPLAT-007 | Transaction | Hub Work Review | Two stewards acting on the same submission converge on one state | Screenshots from both sessions |
Docs
P0 — run these first (2)
| ID | Kind | Area | Scenario | Evidence requested |
|---|---|---|---|---|
DOCS-007 | Content & vocabulary | Guide Truth | Gardener guide walks true against the live PWA (joining, uploading work, offline sync, track status) | List of drifted pages |
DOCS-008 | Content & vocabulary | Guide Truth | Steward guide walks true against the live admin (create garden, review work, assessments, actions/payouts/endowments) | List of drifted pages |
P1 (7)
| ID | Kind | Area | Scenario | Evidence requested |
|---|---|---|---|---|
DOCS-001 | Journey | Navigation | Sidebar, top nav, and direct URLs resolve across sections | Screenshots or notes |
DOCS-002 | Journey | Search | Local search returns relevant results with keyboard flow | Screenshot of results |
DOCS-003 | Content & vocabulary | Glossary Anchors | Glossary anchor links resolve — they are a client API | Screenshots of anchored terms |
DOCS-004 | Accessibility | Responsive Shell | Docs shell holds at 375px and 1440px | Screenshots at both widths |
DOCS-009 | Content & vocabulary | Guide Truth | Funder guide walks true against the editorial funding surfaces (donate, fund, vaults, withdraw) — read-only | List of drifted pages |
DOCS-010 | Content & vocabulary | Guide Truth | Evaluator guide holds: in-product assessment steps plus runnable query-eas / query-indexer / export instructions | Query output screenshots |
DOCS-011 | Content & vocabulary | Builder Docs | Builder onboarding path: getting-started and env-management commands run on a fresh checkout | Terminal transcript |
P2 (4)
| ID | Kind | Area | Scenario | Evidence requested |
|---|---|---|---|---|
DOCS-005 | Accessibility | Keyboard & Focus | Docs are navigable by keyboard with visible focus | Notes or short recording |
DOCS-006 | Accessibility | Theme & Diagrams | Dark mode and mermaid diagrams render legibly | Paired light/dark screenshots |
DOCS-012 | Content & vocabulary | Builder Docs | Builder journeys and quality pages describe shipped reality | List of drifted pages |
DOCS-013 | Content & vocabulary | Reference | Reference layer truth: FAQ, changelog, generated ontology/claims pages, glossary consistency | List of stale entries |
Retired cases
Retired cases never ship to a run sheet, but their IDs stay reserved and their history stays here.
| ID | Was | Retired on | Why | Covered now by |
|---|---|---|---|---|
PUB-004 | Public Website · Fund page and funding dialog render without provider crash | 2026-08-29 | Superseded by the end-to-end funding walks in catalog v2 | PUB-014, PUB-030 |
PUB-005 | Public Website · Funding dialog is usable on mobile | 2026-08-29 | Mobile funding-dialog coverage folded into the end-to-end donate walk in catalog v2 | PUB-014 |
PUB-009 | Public Website · Vaults page explains donate/endow boundaries and fails safely | 2026-08-29 | Vaults explanation and safe-failure coverage folded into the vault checkout and read-only browse walks | PUB-017, PUB-030 |
PWA-IOS-009 | PWA iOS · Commitment compose, accept/decline, and proof loop is coherent | 2026-08-29 | PWA tabs merged in catalog v2; commitments are covered by device-neutral rows | PWA-032, PWA-033, PWA-034 |
PWA-IOS-011 | PWA iOS · Profile handles identity, language, and session exit | 2026-08-29 | PWA tabs merged in catalog v2; profile is covered by the device-neutral row | PWA-038 |
XPLAT-001 | Cross Surface · No code-correct but visually broken controls | 2026-08-29 | Cross Surface dissolved in catalog v2; visual integrity is checked inside each surface's shell and accessibility rows | — |
XPLAT-002 | Cross Surface · No banned or wrong-surface vocabulary appears | 2026-08-29 | Cross Surface dissolved in catalog v2; replaced by per-surface vocabulary rows | PUB-033, PWA-045, ADM-035 |
XPLAT-003 | Cross Surface · Network/media failures degrade gracefully | 2026-08-29 | Cross Surface dissolved in catalog v2; replaced by per-surface error-recovery rows, with the image-failure half covered by the editorial media-fallback row | PUB-008, PWA-040, ADM-032, PUB-025 |
XPLAT-004 | Cross Surface · Every failing test has enough evidence to triage | 2026-08-29 | Cross Surface dissolved in catalog v2; evidence expectations now live on every row's evidence field | — |
XPLAT-006 | Cross Surface · Light and dark themes keep every control legible | 2026-08-29 | Cross Surface dissolved in catalog v2; theme legibility is covered per surface (editorial, docs, and admin) | PUB-025, DOCS-006, ADM-036 |
XPLAT-008 | Cross Surface · Long lists stay usable at real data volumes | 2026-08-29 | Cross Surface dissolved in catalog v2; behavior at real data volume is covered per surface | PUB-003, ADM-031 |