Combined: WCAG a11y audit, Playwright E2E, Soroban deploy CI, OpenAPI 3.1/SDK (#1198 #1199 #1200 #1201) - #1409
Merged
blurbeast merged 3 commits intoAug 31, 2026
Conversation
…ypt#1198) - Add LiveValue throttled aria-live region for ticking balances (IncomingStreamCard claimable, stream-details StatCard claimable) so screen readers announce on user query rather than per frame. - Respect prefers-reduced-motion in useStreamingAmount: compute accrued value once instead of running the rAF loop. - Global :focus-visible outline token for keyboard users (2.4.7). - Fix dark-mode contrast for ticker labels, badges, and modal copy (slate/emerald/amber/indigo utilities get dark: variants). - give the clipboard icon button in StreamDetailsModal an accessible name. - Replace invalid dl/dt/dd layout in IncomingStreamCard with div-based structure to satisfy axe definition-list/dlitem rules. - Add axe-core a11y suite (a11y.test.tsx) asserting zero critical/serious violations across IncomingStreamCard, StreamDetailsModal, TopUpModal, WalletModal; unit tests for LiveValue throttling.
…ifecycle (LabsCrypt#1199) Adds a Playwright E2E harness for the FlowFi frontend: - Global setup generates self-signed TLS certs for the local Soroban RPC mock. - A combined mock server (REST + SSE + Soroban RPC over HTTPS) supports the wallet connection, stream creation, and stream detail endpoints. - A window-level Freighter postMessage mock plus a persisted non-mocked wallet session enables full create/withdraw flows against the mocked chain. - Tests run against Turbopack dev (port 3101) with mocked API/RPC on 3100/3102 in chromium and firefox. Also pins the Turbopack workspace root so stray package-lock files outside the repo do not break the dev server.
This was referenced Aug 30, 2026
4 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #1198
Closes #1199
Closes #1200
Closes #1201
Single combined PR covering the four open FlowFi issues.
#1198 — WCAG 2.1 AA accessibility audit & remediation
LiveValuecomponent for screen-reader-safe live value announcements; replaced all fixed font-size/light-text values in stream row / card values.<html lang>set from the current locale,aria-label/aria-live/roleimprovements across navigation, stream cards, and progress bars (e.g.ProgressBarpolling a single focus for all progress elements).sr-onlylabels, heading hierarchy fixes, and animated/contrast adjustments for the summary card.frontend/src/__tests__/a11y.test.tsx,live-value.test.tsx.#1199 — Playwright E2E suite (6/6 passing, chromium + firefox)
frontend/playwright.config.ts+ global web-server; local HTTPS certs; forgedwindow.freighterviae2e/utils/freighter.ts; mock API server (e2e/mocks/api-server.mjs) that proxies to the real backend and stubs Soroban RPC (getLedgerEntries,getTransaction,sendTransaction) plus freighter signing.wallet-connection,stream-creation,stream-lifecycle.test:e2e,test:e2e:headed.#1200 — Soroban contract deploy CI
.github/workflows/deploy-contracts.yml: compiles + optimizes WASM, runs contract tests, asserts the optimized WASM stays under the 64 KB budget viastellar contract inspect, deploys to Testnet (workflow_dispatch) / Mainnet (release tags) and runsinitialize(admin, treasury, fee_rate_bps)throughscripts/deploy.sh.STREAM_CONTRACT_ID+ deployment info in the job summary, uploads the optimized WASM/deployment info as artifacts, and commitsdeployment-info.jsonon release deploys.contracts/stream_contract/README.md.#1201 — OpenAPI 3.1 + generated API types (zero-drift) + SDK generator
stream,events,user,auth,admin,webhook, andhealthroutes — request params, Zod-validated request bodies, 200/201 responses with BigInt fields serialized as strings, and 400/401/403/404/409/429/500 errors. Added component schemas (list responses, summaries, claimable, pause/resume, top-up, withdraw, cancel, auth, SSE stats, webhooks, health)./api/v1/webhooks→/v1/webhooks) and duplicate/incorrect top-up response field.backend/scripts/export-openapi.mtsexports the spec offline tobackend/swagger/flowfi.openapi.json(committed, no server needed).codegen:api-typesregeneratesfrontend/src/lib/api-types.generated.ts(committed) directly from the spec file..github/workflows/ci.ymlfails when regenerated spec/types differ from the committed files.scripts/generate-sdk.shproduces a typed client inpackages/flowfi-sdkvia openapi-generator.Verification
tscbuild passes; frontend lint 0 errors; frontend unit tests 324 passing.