Skip to content

Combined: WCAG a11y audit, Playwright E2E, Soroban deploy CI, OpenAPI 3.1/SDK (#1198 #1199 #1200 #1201) - #1409

Merged
blurbeast merged 3 commits into
LabsCrypt:mainfrom
dimka90:fix/combined-1198-1199-1200-1201
Aug 31, 2026
Merged

Combined: WCAG a11y audit, Playwright E2E, Soroban deploy CI, OpenAPI 3.1/SDK (#1198 #1199 #1200 #1201)#1409
blurbeast merged 3 commits into
LabsCrypt:mainfrom
dimka90:fix/combined-1198-1199-1200-1201

Conversation

@dimka90

@dimka90 dimka90 commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

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

  • New shared LiveValue component 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/role improvements across navigation, stream cards, and progress bars (e.g. ProgressBar polling a single focus for all progress elements).
  • Focus-visible rings, sr-only labels, heading hierarchy fixes, and animated/contrast adjustments for the summary card.
  • Unit tests: 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; forged window.freighter via e2e/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.
  • Specs: wallet-connection, stream-creation, stream-lifecycle.
  • Scripts: 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 via stellar contract inspect, deploys to Testnet (workflow_dispatch) / Mainnet (release tags) and runs initialize(admin, treasury, fee_rate_bps) through scripts/deploy.sh.
  • Emits STREAM_CONTRACT_ID + deployment info in the job summary, uploads the optimized WASM/deployment info as artifacts, and commits deployment-info.json on release deploys.
  • Documented in contracts/stream_contract/README.md.

#1201 — OpenAPI 3.1 + generated API types (zero-drift) + SDK generator

  • Spec bumped to OpenAPI 3.1.0; completed annotations across stream, events, user, auth, admin, webhook, and health routes — 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).
  • Fixed webhook path prefix mismatch (/api/v1/webhooks/v1/webhooks) and duplicate/incorrect top-up response field.
  • backend/scripts/export-openapi.mts exports the spec offline to backend/swagger/flowfi.openapi.json (committed, no server needed).
  • Frontend codegen:api-types regenerates frontend/src/lib/api-types.generated.ts (committed) directly from the spec file.
  • CI drift gate in .github/workflows/ci.yml fails when regenerated spec/types differ from the committed files.
  • scripts/generate-sdk.sh produces a typed client in packages/flowfi-sdk via openapi-generator.

Verification

  • Backend tsc build passes; frontend lint 0 errors; frontend unit tests 324 passing.
  • Playwright E2E: 6/6 green on chromium and firefox.
  • OpenAPI/API-types drift check: clean.

dimka90 and others added 3 commits August 31, 2026 00:36
…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.
@blurbeast
blurbeast merged commit 6db14d7 into LabsCrypt:main Aug 31, 2026
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants