Skip to content

Testing quality e2e mutation offline loadtest - #349

Open
celina005 wants to merge 4 commits into
ethos-protocol:mainfrom
celina005:testing-quality-e2e-mutation-offline-loadtest
Open

Testing quality e2e mutation offline loadtest#349
celina005 wants to merge 4 commits into
ethos-protocol:mainfrom
celina005:testing-quality-e2e-mutation-offline-loadtest

Conversation

@celina005

Copy link
Copy Markdown

Summary

Changes

  1. f416ba8 — Cross-platform beneficiary acceptance-flow E2E (Issue 1): new jobs in e2e-cross-platform.yml seed a shared vault+invitation fixture, then both iOS and Android open the invitation link via a cold app launch (the exact path Formalize the Beneficiary-Acceptance Token Requirement (or Deliberately Drop It) #109/Add Manage Beneficiary Screen to Android #195 broke) and verify acceptance server-side.
  2. 6231192 — Mutation-testing gap-fill for Stellar validation (Issue 2): added PIT/Mull configs, a shared/MUTATION_TESTING.md baseline doc, and 3 new fixtures/tests per platform closing gaps in the version-byte and mid-payload-checksum reject conditions.
  3. e5eeca4 — Offline→online check-in sync E2E (Issue 3): new Android/iOS jobs toggle real device network off/on around a real check-in queue drain, asserting final server state; includes a note for extending to deposit/withdraw once Add Manual "Retry Now" Control for Queued Offline Actions #240 ships.
  4. 361e907 — WebSocket reconnect-storm load test (Issue 4): a k6 script + methodology doc simulating a server-restart reconnect storm with a jitter on/off toggle to compare against Support Subscribing to Multiple Vault IDs Over a Single WebSocket Connection #253's backoff jitter, plus a results table to fill in.

Testing

Parity checklist

This project maintains a feature-parity table in PARITY.md that
tracks which features are implemented on iOS vs Android. Please answer the
questions below before requesting review.

  • This PR does not add, change, or remove any user-facing feature on either
    platform — no PARITY.md update needed.

    — OR —

  • This PR adds/changes/removes a user-facing feature. I have updated PARITY.md:

    • Updated the status symbol(s) for the affected row(s).
    • Added or updated "Notes" if the implementation is partial or has caveats.
    • Removed or updated any rows in the "Known gaps" table that this PR closes.

Related issues

Closes #288
Closes #289
Closes #290
Closes #291

…hos-protocol#109/ethos-protocol#195

Add a full vault-creation -> invitation-link -> beneficiary-opens-link ->
acceptance e2e job to e2e-cross-platform.yml, run against a shared staging
fixture (one seeded vault/invitation reused by both platform jobs).
Both iOS and Android open the invitation deep link on a cold app launch
(simctl openurl / am start VIEW after a fresh install) so the token travels
through the same onCreate()/getIntent() cold-start path where ethos-protocol#109/ethos-protocol#195
forwarded the wrong beneficiary token, then independently verifies
server-side acceptance state rather than trusting client-side success.
Add PIT (Android) and Mull (iOS) mutation-testing configs scoped to
StellarAddress, and document the process/baseline in
shared/MUTATION_TESTING.md. A manual walkthrough of the six reject
conditions in stellar-validation-spec.md against the existing fixtures
found two conditions with no dedicated test (version-byte mismatch, and a
checksum corruption outside the last character) plus a character-set
boundary case only tested mid-string. Add matching fixtures/tests to both
StellarAddressTest.kt and EthosProtocolTests.swift, generated directly from
the spec's algorithm, and record the new fixtures in the shared spec doc.
…platform.yml

PendingActionSyncWorker/CheckInSyncTask are covered at the unit level, but
unit tests mock away real WorkManager/BGProcessingTask scheduling. Add
Android and iOS e2e jobs that disable network on a real emulator/simulator,
queue a check-in offline, re-enable network, and assert the queue drains
via the real scheduler against the real staging API - then verify
server-side state directly rather than trusting the client's local queue
being empty. Deposit/withdraw queuing is left as a follow-up (tracked
behind ethos-protocol#240) with a note pointing at the same job to extend.
Add a k6 script simulating N simultaneously-dropped clients reconnecting
via VaultEventSocket's exponential-backoff-with-full-jitter schedule
(ReconnectBackoff.delayForAttempt, ethos-protocol#253), with a JITTER_DISABLED flag to
reproduce pre-ethos-protocol#253 behavior for an ablation comparison against the same
staging endpoint. Document methodology, metrics to watch, and a findings
table to fill in once both runs are executed against staging.
@drips-wave

drips-wave Bot commented Aug 29, 2026

Copy link
Copy Markdown

@celina005 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

1 participant