Skip to content

[experiment] Parallelize recovery phone functional tests for PR workflow#20687

Draft
nshirley wants to merge 2 commits into
mainfrom
parallel-phone-tests-pr
Draft

[experiment] Parallelize recovery phone functional tests for PR workflow#20687
nshirley wants to merge 2 commits into
mainfrom
parallel-phone-tests-pr

Conversation

@nshirley

@nshirley nshirley commented Jun 3, 2026

Copy link
Copy Markdown
Contributor

⚠️ Experimental — do not merge. Opened to measure CI wall-clock impact.

Purpose

Recovery phone (#phone) functional tests run serially on CI node 0, making it the long pole while the other parallel nodes finish and idle. This experiment runs them in the parallel timings split for the PR workflow only (codes are read from Redis per-uid locally, so parallel runs don't collide), and tags three stray phone tests that were running unserialized against the shared test number.

Goal: measure the functional-test wall-clock delta vs baseline, and surface any intra-file ordering or Twilio test-credential throttling issues under parallelism.

Smoke / nightly / tag workflows keep the existing serial-on-node-0 behavior.

nshirley added 2 commits June 3, 2026 16:54
Because:
 - Recovery phone (#phone) tests run serially on CI node 0, making it the
   long pole while the other parallel nodes finish and idle.
 - Several phone tests were not tagged #phone, so they ran unserialized
   against the shared test number — a latent smoke flakiness source.

This commit:
 - Adds a phoneTestMode() helper gated on PLAYWRIGHT_PHONE_PARALLEL; locally
   codes are read from Redis per-uid so phone tests can run in parallel.
 - Tags the stray phone tests (replace2fa, cms-2fa, totp) with #phone so they
   serialize correctly for stage/prod smoke.
 - Adds a parallelize_phone_tests param to the PR functional job that runs
   #phone tests in the parallel timings split and raises the per-number
   registration cap.

Experimental — not for merge.
Because:
 - The PR phone-test parallelization is experimental and may hit phone-number
   conflicts or Twilio rate limits; we need a fast, obvious way to disable it.

This commit:
 - Promotes the PR parallelize_phone_tests job arg to a top-level pipeline
   parameter (default true) documented alongside the other enable_* toggles.
 - Flipping the default to false reverts PR functional runs to the previous
   serial-on-node-0 behavior with no other changes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant