Skip to main content

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 in source.

  • 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, and replacedBy when 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)

IDKindAreaScenarioEvidence requested
PUB-001JourneyPublic ShellPublic routes use website shell, not PWA shellScreenshot of one public desktop route
PUB-002JourneyPublic ShellMobile public navigation worksMobile screenshot or short video
PUB-003Data integrityGarden DiscoveryGardens listing renders real data at volume with searchScreenshot of listing and detail
PUB-014TransactionFundingDonate end to end from /fund: token pick, USD⇄WETH switch, connect-from-card, approve+deposit, reject recoveryScreen recording of the two-prompt flow
PUB-015TransactionFundingEndow a garden from /fund incl. approval-reset path and no-vault messageScreenshot of success + no-vault message
PUB-017TransactionFundingCampaign vault checkout on /vaults: amount, connect, wrap ETH if needed, multi-step endowRecording of the multi-step checkout
PUB-019TransactionCookiesClaim from a campaign cookie jar: eligibility, cooldown, fixed vs variable amountsScreenshot of claim toast + balance

P1 (14)

IDKindAreaScenarioEvidence requested
PUB-006Data integrityImpactImpact page loads without stale loading or blank metricsScreenshot
PUB-007Content & vocabularyActionsActions route renders public-safe contentScreenshot
PUB-008ResilienceCookiesCookies route and direct jar route degrade gracefullyScreenshot
PUB-012ResilienceFundingWallet edge states fail helpfully: none installed, wrong networkScreenshots of both states
PUB-016TransactionFundingWithdraw an endowment via Manage Endowments: expand position, Max, withdrawScreenshot of updated position
PUB-018TransactionFundingRedeem a campaign position from Manage positionsScreenshot of redeem result
PUB-020TransactionCookiesDeposit into a campaign jar + deep-link ?jar= focus + connection-line 'Disconnect' behaviorScreenshot of deep-link focus
PUB-021JourneyInstallInstall App branches: desktop QR dialog, mobile steps, copy-URL, Open App flipScreenshot of each branch
PUB-023JourneyGarden DiscoveryGarden detail deep interactions: field-note drawer, lightbox, show-more, Support handoffScreenshot of drawer + highlighted fund row
PUB-024JourneyImpactImpact filters, pagination, evidence drawer, and Cite this recordScreenshot of filtered results
PUB-026JourneyGarden RecordsOpen a field-note record: media mosaic, lightbox, feedback, attestation linkScreenshot of record + explorer tab
PUB-027JourneyGarden RecordsRead the public commitments story across pool statesScreenshots per state
PUB-030JourneyFundingRead-only browse of /vaults and /fund without signingScreenshot of read-only browse
PUB-031Content & vocabularyLocale QualityEditorial language switch: en/pt/es with persistence and no mixed-language pagesScreenshot per locale

P2 (9)

IDKindAreaScenarioEvidence requested
PUB-010Content & vocabularyOrientationGlossary and orientation routes stay understandableScreenshot or notes
PUB-011AccessibilityResponsive ShellEditorial shell holds at 375px and 1440px with keyboard accessScreenshots at both widths
PUB-013ResilienceGarden DiscoveryUnknown or broken garden URL degrades honestlyScreenshot of the not-found state
PUB-022JourneyHomeHome engagement: seasonal-letter subscribe, schedule a call, persona accordionScreenshot of inline thanks
PUB-025AccessibilityResponsive ShellEditorial media fallbacks and hero CTA legibilityScreenshots light + dark
PUB-028JourneyGarden RecordsCycle details and the certificate tie-inScreenshot of matching counts
PUB-029JourneyGarden RecordsCertificates and steward identities on the garden pageScreenshot of both sections
PUB-032Content & vocabularySEO & MetaSocial and SEO meta on home and garden detailScreenshot of preview render
PUB-033Content & vocabularyVocabularyEditorial vocabulary holds: no admin/cockpit jargon on public pagesList of offending terms with routes (or a clean pass note)

PWA

P0 — run these first (20)

IDKindAreaScenarioEvidence requested
PWA-020JourneyAuthDesktop-shell wallet login connects, signs, and recovers from a rejected signatureRecording of reject + retry
PWA-021TransactionGarden JoinJoin flows: open joining, request-to-join with note, withdraw request, steward welcome/declineScreenshots of each toast
PWA-028TransactionCookiesClaim from a garden cookie jar in the Wallet drawer (purpose required)Screenshot of claim result
PWA-030JourneyMy WorkWork dashboard: drafts resume/delete, pending and completed filters, open itemsScreenshot of dashboard states
PWA-031TransactionWork SubmissionFull work submission on desktop shell: action, garden, media upload, audio note, details, location, review, submitRecording of wizard + submit
PWA-033TransactionCommitmentsCommitment detail acts: take up, withdraw with reason, confirm / not-yet, link work, steward claim decisionsScreenshots per act
PWA-035TransactionReviewReview work on desktop shell: approve with optional feedback, reject requires feedbackScreenshot of decided states
PWA-AND-001JourneyInstall[Android] Fresh Android install launches standaloneScreen recording
PWA-AND-002ResilienceUpdate[Android] Existing Android install updates without split stateScreen recording
PWA-AND-003Data integrityUpload[Android] Camera and gallery image handling works on AndroidScreen recording
PWA-AND-004TransactionOffline QueueOffline queue survives app close and reconnectScreen recording plus queue/status screenshot
PWA-IOS-001JourneyInstall[iOS] Fresh iOS install launches standalonePhoto or screen recording
PWA-IOS-002ResilienceUpdate[iOS] Existing iOS install updates without split stateScreen recording
PWA-IOS-003ResilienceAuthLogin/passkey/wallet gate is recoverable on iOSScreen recording plus account role
PWA-IOS-004Data integrityUpload[iOS] Camera capture preview and draft persist on iOSScreen recording
PWA-IOS-006TransactionOffline QueueOffline work submission queues and flushes onceScreen recording plus queue/status screenshot
PWA-IOS-014TransactionUploadSubmission validation blocks incomplete work and rapid double-tapsScreenshot of validation errors; work list showing a single submission
PWA-ROLE-001TransactionReviewApprove pending work with valid role on iOSScreen recording plus account role
PWA-ROLE-002TransactionReviewReject pending work with reason on iOSScreen recording plus account role
PWA-ROLE-003JourneyPermissionsInsufficient-role user cannot approve or reject on iOSScreenshot plus account role

P1 (25)

IDKindAreaScenarioEvidence requested
PWA-023JourneyRoutingRefresh and direct deep links preserve garden/work contextScreenshot after refresh
PWA-025Content & vocabularyLocale QualityPortuguese/Spanish render dates, plurals, and diacritics on the clientScreenshots per locale
PWA-026ResilienceAuthIn-app wallet edge states: wrong network and mid-session disconnect recoverScreenshot of the network gate
PWA-027JourneyHomeHome orientation: pull-to-refresh (online/offline), filters, drawer entry points, arrival toastScreenshot of filters + drawer
PWA-029TransactionWalletSend tokens: recipient search/QR/browse, amount+Max, review with note, confirmRecording of the full send
PWA-032TransactionCommitmentsCompose a commitment: beats, draft resume, read-to-end gate, place offer/requestScreenshot of done screen
PWA-034TransactionCommitmentsProof composer: media and audio capture, beats, submit proofScreenshot of composer
PWA-036TransactionGovernanceAllocate conviction support points in the governance drawerScreenshot of updated stake
PWA-037TransactionEndowmentGarden endowment drawer: vault deposit, own-deposit withdraw, in-drawer jar claimScreenshot of drawer states
PWA-038TransactionProfileProfile actions: avatar edit/remove with draft recovery, theme, language, ENS claim/release, badges, logoutScreenshots of profile flows
PWA-040ResilienceOfflineOffline mid-browse: toggle devtools offline while navigating, then reconnectScreenshot of offline state
PWA-041ResilienceUpdateDesktop service-worker update: banner on a new deploy, refresh applies cleanlyScreenshot of the banner
PWA-042AccessibilityAccessibilityKeyboard and focus smoke on core PWA flows: wizard, drawers, dialogsNotes per surface + screenshots
PWA-043ResiliencePerformanceBoot performance: warm reload locally; cold-start budget on a production buildConsole timings screenshot
PWA-AND-005AccessibilityMobile UIKeyboard and drawer layout remain usable on AndroidScreenshots
PWA-IOS-005Data integrityUpload[iOS] HEIC or library image survives submission draftScreenshot before and after reopen
PWA-IOS-007AccessibilityMobile UIDrawers and bottom nav respect safe areasScreenshots with drawer and keyboard
PWA-IOS-008Data integrityGarden DiscoveryHome and Garden discovery handle real, empty, and stale dataScreenshots of home, list, and detail
PWA-IOS-010JourneyAssessmentsAssessment detail is readable without losing garden contextScreenshots of assessment and return
PWA-IOS-012JourneyInstalled NavigationBottom AppBar behavior holds through flows and back navigationScreen recording of navigation loop
PWA-IOS-013JourneyAuthLogout clears the session and re-login works cleanlyScreen recording of the loop
PWA-ROLE-004TransactionReviewApprove pending work with valid role on AndroidScreen recording plus account role
PWA-ROLE-005TransactionReviewReject pending work with reason on AndroidScreen recording plus account role
PWA-ROLE-006JourneyPermissionsInsufficient-role user cannot approve or reject on AndroidScreenshot plus account role
XPLAT-005JourneyInstallWebsite-to-install handoff keeps browser and PWA shells separateScreen recording across the handoff

P2 (3)

IDKindAreaScenarioEvidence requested
PWA-039JourneyHomeNotifications popover, ENS reminder toast, AppBar badges and auto-hideScreenshot of popover + badge
PWA-044Data integrityIdentityIdentity parity: the same gardener across website records, PWA, and admin queueThree-surface screenshot set
PWA-045Content & vocabularyVocabularyPWA vocabulary holds: gardener-facing language, no internal or admin termsList of offending terms with routes (or a clean pass note)

Admin Dashboard

P0 — run these first (15)

IDKindAreaScenarioEvidence requested
ADM-001JourneyShellAdmin hub loads with canonical canvas shellScreenshot
ADM-002JourneyRoutingPrimary admin direct routes reloadScreenshot set or notes
ADM-003JourneyAuth GatesUnauthenticated admin state is clearScreenshot
ADM-004JourneyWork QueueWork queue/detail state is usableScreenshot
ADM-005JourneyAssessAssessment create flow gates invalid inputScreenshot or video
ADM-006JourneyCertifyCertification flow does not overpromise transaction stateScreenshot
ADM-007JourneyEndowmentEndowment and vault routes are role-gated and readableScreenshot
ADM-012TransactionHub Work ReviewFull review decision path completes with actions visibleScreen recording; screenshot of the action region at ~1084x637
ADM-013TransactionHub ConfirmationsCommitment confirmation states who and what before commitScreenshots of confirmation and result
ADM-018TransactionHub Work ReviewDecision integrity: no double decisions, honest tx failureScreenshots of the blocked second decision and the failure state
ADM-020TransactionGarden SettingsGarden settings: per-field edits, banner upload/remove+undo, joining toggle, gardener cap, domainsRecording of sequential saves
ADM-021TransactionMembersMembers: batch add via 0x/ENS/clipboard, remove with confirm, join-request queue welcome/declineScreenshot of queue states
ADM-022TransactionGarden PoolPool lifecycle: set up commitments, start/open a season or campaign, cancel with reason, pause/resume, close/archive/reopenScreenshots per lifecycle step
ADM-023TransactionEndowmentEndowment operations: vault deposit with limits, withdraw, harvest & distribute, emergency pause, auto-allocateScreenshot of harvest report
ADM-025TransactionHub ConfirmationsCommitment inspector steward acts: confirm ordinary/fallback, raise & resolve dispute, expire, recovery overridesScreenshots per act

P1 (16)

IDKindAreaScenarioEvidence requested
ADM-008JourneyCoordinationCoordination routes render without broken stateScreenshot
ADM-009JourneyActionsCreate and edit action forms validate correctlyScreenshot or video
ADM-010JourneyCookiesCampaign cookie jar management and deploy gating are clearScreenshot
ADM-011JourneyGarden AdminGarden health, settings, members, and impact routes renderScreenshot
ADM-014JourneyGarden PoolPool console statuses, seeding, and detail are coherentScreenshots of pool, seed review, and detail
ADM-015JourneyCross-Route ContinuityWorkspace selection survives back, refresh, and deep linksScreen recording of the loop
ADM-016Content & vocabularyLocale QualityPortuguese and Spanish render dates, plurals, and units correctlyScreenshots of pt/es views with real records
ADM-017TransactionGarden LifecycleGarden creation reviews before submit and lands usableScreenshots of validation, review, and landing
ADM-024TransactionPayoutsCookie jar payouts: deposit, withdraw with purpose within limits and cooldownScreenshot of withdraw result
ADM-026TransactionGarden PoolSeed a commitment: 4-step wizard, named confirmers, review, queued creationScreenshot of queued row
ADM-027TransactionCoordinationCoordination: create signal pools, manage strategies, register/deregister items, allocate weightsScreenshot of saved weights
ADM-028TransactionImpactHypercert marketplace: approvals gate, list for yield, cancel listing — including whether it's reachable at allScreenshot of listing state
ADM-029JourneyShellGlobal chrome: garden switch chip, command palette (⌘K), notifications sheet, view-publicScreenshot of palette
ADM-030TransactionWork SubmissionAdmin submit-work wizard with review-step edit jumps and offline queueingScreenshot of review step
ADM-031JourneyWork QueueHub queue at volume: full scroll, search/sort, deep item open and returnRecording of scroll return
ADM-033TransactionGarden LifecycleFirst-run: zero-garden steward sees an honest no-access state; a deployer gets the create funnelScreenshot of empty state

P2 (6)

IDKindAreaScenarioEvidence requested
ADM-019JourneyProfileAdmin profile renders identity and sign-out lands sensiblyScreenshot of profile + landing
ADM-032ResilienceError RecoveryData-source failure on the hub: throttle/offline the network and loadScreenshot of error + recovery
ADM-034AccessibilityAccessibilityAdmin keyboard smoke: palette, dialogs, wizard focus orderNotes + screenshots
ADM-035Content & vocabularyVocabularyAdmin vocabulary holds: cockpit language, no editorial 'hero/story' termsList of offending terms with routes (or a clean pass note)
ADM-036AccessibilityAccessibilityAdmin light and dark themes keep every control legiblePaired light/dark screenshots of any issue
XPLAT-007TransactionHub Work ReviewTwo stewards acting on the same submission converge on one stateScreenshots from both sessions

Docs

P0 — run these first (2)

IDKindAreaScenarioEvidence requested
DOCS-007Content & vocabularyGuide TruthGardener guide walks true against the live PWA (joining, uploading work, offline sync, track status)List of drifted pages
DOCS-008Content & vocabularyGuide TruthSteward guide walks true against the live admin (create garden, review work, assessments, actions/payouts/endowments)List of drifted pages

P1 (7)

IDKindAreaScenarioEvidence requested
DOCS-001JourneyNavigationSidebar, top nav, and direct URLs resolve across sectionsScreenshots or notes
DOCS-002JourneySearchLocal search returns relevant results with keyboard flowScreenshot of results
DOCS-003Content & vocabularyGlossary AnchorsGlossary anchor links resolve — they are a client APIScreenshots of anchored terms
DOCS-004AccessibilityResponsive ShellDocs shell holds at 375px and 1440pxScreenshots at both widths
DOCS-009Content & vocabularyGuide TruthFunder guide walks true against the editorial funding surfaces (donate, fund, vaults, withdraw) — read-onlyList of drifted pages
DOCS-010Content & vocabularyGuide TruthEvaluator guide holds: in-product assessment steps plus runnable query-eas / query-indexer / export instructionsQuery output screenshots
DOCS-011Content & vocabularyBuilder DocsBuilder onboarding path: getting-started and env-management commands run on a fresh checkoutTerminal transcript

P2 (4)

IDKindAreaScenarioEvidence requested
DOCS-005AccessibilityKeyboard & FocusDocs are navigable by keyboard with visible focusNotes or short recording
DOCS-006AccessibilityTheme & DiagramsDark mode and mermaid diagrams render legiblyPaired light/dark screenshots
DOCS-012Content & vocabularyBuilder DocsBuilder journeys and quality pages describe shipped realityList of drifted pages
DOCS-013Content & vocabularyReferenceReference layer truth: FAQ, changelog, generated ontology/claims pages, glossary consistencyList of stale entries

Retired cases

Retired cases never ship to a run sheet, but their IDs stay reserved and their history stays here.

IDWasRetired onWhyCovered now by
PUB-004Public Website · Fund page and funding dialog render without provider crash2026-08-29Superseded by the end-to-end funding walks in catalog v2PUB-014, PUB-030
PUB-005Public Website · Funding dialog is usable on mobile2026-08-29Mobile funding-dialog coverage folded into the end-to-end donate walk in catalog v2PUB-014
PUB-009Public Website · Vaults page explains donate/endow boundaries and fails safely2026-08-29Vaults explanation and safe-failure coverage folded into the vault checkout and read-only browse walksPUB-017, PUB-030
PWA-IOS-009PWA iOS · Commitment compose, accept/decline, and proof loop is coherent2026-08-29PWA tabs merged in catalog v2; commitments are covered by device-neutral rowsPWA-032, PWA-033, PWA-034
PWA-IOS-011PWA iOS · Profile handles identity, language, and session exit2026-08-29PWA tabs merged in catalog v2; profile is covered by the device-neutral rowPWA-038
XPLAT-001Cross Surface · No code-correct but visually broken controls2026-08-29Cross Surface dissolved in catalog v2; visual integrity is checked inside each surface's shell and accessibility rows
XPLAT-002Cross Surface · No banned or wrong-surface vocabulary appears2026-08-29Cross Surface dissolved in catalog v2; replaced by per-surface vocabulary rowsPUB-033, PWA-045, ADM-035
XPLAT-003Cross Surface · Network/media failures degrade gracefully2026-08-29Cross Surface dissolved in catalog v2; replaced by per-surface error-recovery rows, with the image-failure half covered by the editorial media-fallback rowPUB-008, PWA-040, ADM-032, PUB-025
XPLAT-004Cross Surface · Every failing test has enough evidence to triage2026-08-29Cross Surface dissolved in catalog v2; evidence expectations now live on every row's evidence field
XPLAT-006Cross Surface · Light and dark themes keep every control legible2026-08-29Cross Surface dissolved in catalog v2; theme legibility is covered per surface (editorial, docs, and admin)PUB-025, DOCS-006, ADM-036
XPLAT-008Cross Surface · Long lists stay usable at real data volumes2026-08-29Cross Surface dissolved in catalog v2; behavior at real data volume is covered per surfacePUB-003, ADM-031