Skip to content

feat: adversarial tests, indexer load testing, RPC chaos resilience, and cross-browser E2E matrix - #920

Merged
thegreatfeez merged 1 commit into
Ac0rdP:mainfrom
stephanieefeakpokrire-droid:feat/issues-847-850
Oct 19, 2026
Merged

thegreatfeez merged 1 commit into
Ac0rdP:mainfrom
stephanieefeakpokrire-droid:feat/issues-847-850

Conversation

@stephanieefeakpokrire-droid

Copy link
Copy Markdown
Contributor

Summary

This pull request resolves issues #847, #848, #849, and #850:

  1. Issue Add an adversarial and negative test suite for every money-moving path #847: Adversarial and Negative Test Suite for Money Paths

    • Added exhaustive adversarial tests in contracts/accord/src/test.rs covering unauthorized withdrawals, proposal re-execution/double-spend attacks, spending limit bypass attempts, premature/cancelled recurring payments, and operations while contract is frozen or in recovery.
    • Verified that contract state and balances remain unchanged upon rejection.
  2. Issue Add load testing for the indexer against a large historical backfill #848: Indexer Load Testing Against Historical Backfill

    • Created indexer/test/load.test.js to benchmark historical backfills with synthetic datasets of 2,500+ events across 500 ledgers.
    • Asserted zero lost events, zero duplicates, idempotency on re-run, and balance accuracy.
    • Added documentation in docs/indexer-load-testing.md outlining methodology, throughput baselines (~1,200–2,400 events/sec), sustained ingestion ceilings, and regression tracking guidelines.
  3. Issue Add RPC-failure and chaos tests for polling, submit, and the indexer #849: RPC Failure and Chaos Tests for Polling, Submission, and Indexer

    • Added submission deduplication and resilient status check in frontend/src/lib/submit.ts to prevent concurrent double-submissions.
    • Added ledger validation in frontend/src/hooks/useEventPolling.ts against malformed or partial RPC responses.
    • Added chaos tests in frontend/src/lib/__tests__/rpcChaos.test.ts verifying exponential backoff, error surfacing, and graceful recovery.
    • Added indexer chaos tests in indexer/test/chaos.test.js verifying mid-backfill outage recovery without data corruption.
  4. Issue Add a cross-browser end-to-end matrix with Chromium, Firefox, and WebKit #850: Cross-Browser E2E Matrix (Chromium, Firefox, WebKit)

    • Configured cross-browser project matrix with Chromium (Desktop Chrome), Firefox (Desktop Firefox), and WebKit (Desktop Safari) in frontend/playwright.config.ts.
    • Enabled fullyParallel: true and per-engine JSON/HTML reporting.
    • Added npm scripts "e2e:chromium", "e2e:firefox", "e2e:webkit", and "e2e:matrix" in frontend/package.json.
    • Updated .github/workflows/frontend-ci.yml to install chromium firefox webkit and run npm run e2e:matrix.
    • Documented matrix workflow in frontend/docs/testing.md.

Closes #847
Closes #848
Closes #849
Closes #850

…and cross-browser E2E matrix

- Add adversarial and negative test suite for every money-moving path (Ac0rdP#847)
- Add load testing suite and performance docs for historical backfill (Ac0rdP#848)
- Add RPC-failure and chaos tests across polling, submit, and indexer (Ac0rdP#849)
- Add cross-browser E2E matrix with Chromium, Firefox, and WebKit (Ac0rdP#850)

Closes Ac0rdP#847
Closes Ac0rdP#848
Closes Ac0rdP#849
Closes Ac0rdP#850
@vercel

vercel Bot commented Oct 19, 2026

Copy link
Copy Markdown

@stephanieefeakpokrire-droid is attempting to deploy a commit to the thegreatfeez's projects Team on Vercel.

A member of the Team first needs to authorize it.

@drips-wave

drips-wave Bot commented Oct 19, 2026

Copy link
Copy Markdown

@stephanieefeakpokrire-droid Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

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