Skip to content

[codex] stabilize onboarding e2e persistence wait - #934

Merged
kkroo merged 4 commits into
masterfrom
codex/e2e-onboarding-wait-budget
Aug 2, 2026
Merged

[codex] stabilize onboarding e2e persistence wait#934
kkroo merged 4 commits into
masterfrom
codex/e2e-onboarding-wait-budget

Conversation

@kkroo

@kkroo kkroo commented Aug 2, 2026

Copy link
Copy Markdown

Thinking Path

  • Several unrelated Paperclip PRs are blocked by the same e2e failure pattern.
  • The failed specs are onboarding/NUX flows waiting for the Create your team lead step after Confirm mission.
  • That transition persists a company and goal before the wizard advances, so it is sensitive to CI load and embedded database startup pressure.
  • The product heading still exists on master; this is not stale copy or a missing UI state.
  • The narrow fix is to give only that persistence-backed transition more CI headroom while leaving the faster in-memory wizard transitions unchanged.

Linked Issues or Issue Description

CI failure observed across unrelated open PRs including #925, #915, #906, and #927.

Failure shape:

  • tests/e2e/conference-room-typing-intro.spec.ts timed out waiting for the Create your team lead heading.
  • tests/e2e/nux-phase4-screenshots.spec.ts timed out waiting for the same heading.
  • The failures appeared after clicking Confirm mission, which waits on company and goal persistence before advancing to the next step.
  • The changed PRs are not onboarding/UI changes, so the shared test wait budget is the common bottleneck.

What Changed

  • Added a named WIZARD_PERSISTENCE_TIMEOUT_MS constant to both affected e2e specs.
  • Increased only the persistence-backed Confirm mission -> Create your team lead assertion from 15s to 45s.
  • Left the other wizard assertion timeouts unchanged so genuinely stuck steps still fail quickly.

Verification

  • PATH=/opt/homebrew/bin:$PATH pnpm install --frozen-lockfile
  • PATH=/opt/homebrew/bin:$PATH npx playwright test --config tests/e2e/playwright.config.ts tests/e2e/conference-room-typing-intro.spec.ts tests/e2e/nux-phase4-screenshots.spec.ts --list
  • git diff --check
  • Attempted the focused e2e run locally; it did not reach browser execution because embedded PostgreSQL failed during local web-server startup with Postgres init script exited with code 1.

Risks

  • A real persistence deadlock now takes up to 45s to fail in these two specs instead of 15s.
  • This does not change product code; it only reduces CI false negatives caused by slow persistence under load.
  • If CI failures continue after this, the next likely culprit is the shared e2e environment rather than this wizard transition.

Model Used

Codex / GPT-5, tool-assisted code editing and CI log inspection.

Checklist

  • I have included a thinking path that traces from project context to this change
  • I have specified the model used (with version and capability details available to this PR)
  • I have checked ROADMAP.md and confirmed this PR does not duplicate planned core work
  • I have searched GitHub for duplicate or related PRs and linked them above
  • I have either (a) linked existing issues with Fixes: # / Closes # / Refs # OR (b) described the issue in-PR following the relevant issue template
  • I have run tests locally and they pass
  • I have added or updated tests where applicable
  • If this change affects the UI, I have included before/after screenshots
  • I have updated relevant documentation to reflect my changes
  • I have considered and documented any risks above
  • All Paperclip CI gates are green
  • Greptile is 5/5 with no open P2s, recommendations, or follow-ups
  • I will address all Greptile and reviewer comments before requesting merge

Co-Authored-By: Paperclip <noreply@paperclip.ing>
@cursor

cursor Bot commented Aug 2, 2026

Copy link
Copy Markdown

Bugbot is not enabled for your account, so this pull request was not reviewed.

Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs.

@kkroo

kkroo commented Aug 2, 2026

Copy link
Copy Markdown
Author

/test
/ally review

@allyblockcast allyblockcast Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ally — Consolidated PR Review

Lenses: pr-review-toolkit (code, tests, comments, errors, types) + gstack/review + native-codex.
Reviewed head: e4b7b58

Important Issues (1)

  • [pr-review-toolkit/native-codex] tests/e2e/conference-room-typing-intro.spec.ts:83 - The new 45-second assertion does not reliably provide a 45-second persistence allowance because this spec inherits the config's 60-second timeout for the entire test. Time spent loading onboarding and completing the earlier steps consumes that same budget, and the hire, review, dashboard, and API assertions after this wait still need to run. Under the slow CI condition this PR targets, Playwright can therefore hit the enclosing timeout before this assertion reaches its new limit, or immediately afterward before validating the persisted result.
    • Add an explicit per-test timeout with enough headroom for the full flow, as nux-phase4-screenshots.spec.ts already does with 180 seconds, while retaining the scoped 45-second assertion timeout.

Strengths

  • The larger assertion timeout is limited to the persistence-backed transition rather than weakening every wizard assertion.
  • The visual QA spec already reserves a 180-second test budget, and the current e2e CI job passes.

Recommended Action

  1. Address the Important issue this cycle by increasing the enclosing timeout for the conference-room onboarding spec.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
@kkroo

kkroo commented Aug 2, 2026

Copy link
Copy Markdown
Author

Addressed Ally's Important finding by giving the enclosing conference-room onboarding Playwright test a 180s budget, matching the existing NUX visual QA headroom, while keeping the scoped 45s persistence assertion.

Verification:

  • pnpm install --frozen-lockfile
  • pnpm exec playwright test --config tests/e2e/playwright.config.ts tests/e2e/conference-room-typing-intro.spec.ts --list listed the focused test
  • git diff --check

/test
/ally review

allyblockcast[bot]
allyblockcast Bot previously approved these changes Aug 2, 2026

@allyblockcast allyblockcast Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ally — Consolidated PR Review

Lenses: pr-review-toolkit (code, tests, comments, errors, types) + gstack/review + native-codex.
Reviewed head: 8a6c5ae

Prior Findings Dispositioned (1)

  • prior:e4b7b58 important 1 — fixed — tests/e2e/conference-room-typing-intro.spec.ts:17 — The spec now sets a 180-second enclosing timeout, leaving sufficient full-flow headroom around the scoped 45-second persistence wait.

Looks good. The persistence allowance is narrowly scoped, and both affected full-flow specs now have explicit 180-second test budgets.

Strengths

  • The change extends only the persistence-backed wizard transition rather than weakening all assertions.
  • The named timeout documents why this transition needs a larger CI allowance.

Recommended Action

  1. Merge after required CI checks pass.

allyblockcast
allyblockcast previously approved these changes Aug 2, 2026

@allyblockcast allyblockcast left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ally — Consolidated PR Review

Lenses: pr-review-toolkit (code, tests, comments, errors, types) + gstack/review + native-codex.
Reviewed head: 8a6c5ae

Prior Findings Dispositioned (1)

  • prior:e4b7b58 important 1 — fixed — tests/e2e/conference-room-typing-intro.spec.ts:17 — The spec now sets a 180-second enclosing timeout, leaving sufficient full-flow headroom around the scoped 45-second persistence wait.

Looks good. The persistence allowance is narrowly scoped, and both affected full-flow specs now have explicit 180-second test budgets.

Strengths

  • The change extends only the persistence-backed wizard transition rather than weakening all assertions.
  • The named timeout documents why this transition needs a larger CI allowance.

Recommended Action

  1. Merge after required CI checks pass.

@kkroo
kkroo dismissed allyblockcast[bot]’s stale review August 2, 2026 05:00

Superseded duplicate Ally approval; keeping latest operative Ally approval 4837026098 for head 8a6c5ae.

allyblockcast[bot]
allyblockcast Bot previously approved these changes Aug 2, 2026

@allyblockcast allyblockcast Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ally — Consolidated PR Review

Lenses: pr-review-toolkit (code, tests, comments, errors, types) + gstack/review + native-codex.
Reviewed head: dcc1e02

Looks good. The persistence-backed wizard transition has a narrowly scoped 45-second assertion timeout, while both affected full-flow specs retain enough enclosing test headroom.

Strengths

  • tests/e2e/conference-room-typing-intro.spec.ts:17 explicitly reserves 180 seconds for the complete flow, resolving the earlier enclosing-timeout concern.
  • The longer assertion timeout applies only to the persistence-sensitive transition rather than weakening unrelated wizard checks.

Recommended Action

  1. Merge after required CI checks pass.

allyblockcast
allyblockcast previously approved these changes Aug 2, 2026

@allyblockcast allyblockcast left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ally — Consolidated PR Review

Lenses: pr-review-toolkit (code, tests, comments, errors, types) + gstack/review + native-codex.
Reviewed head: dcc1e02

Looks good. The persistence-backed wizard transition has a narrowly scoped 45-second assertion timeout, while both affected full-flow specs retain enough enclosing test headroom.

Strengths

  • tests/e2e/conference-room-typing-intro.spec.ts:17 explicitly reserves 180 seconds for the complete flow, resolving the earlier enclosing-timeout concern.
  • The longer assertion timeout applies only to the persistence-sensitive transition rather than weakening unrelated wizard checks.

Recommended Action

  1. Merge after required CI checks pass.

@kkroo
kkroo dismissed stale reviews from allyblockcast and allyblockcast[bot] August 2, 2026 06:48

Dismiss stale Ally approval: body attests 8a6c5ae while GitHub recorded dcc1e02; keeping latest exact-head approval.

@kkroo
kkroo dismissed allyblockcast’s stale review August 2, 2026 09:45

Resolve Ally review-consistency guard: stale approval attests an older head after branch update.

@kkroo

kkroo commented Aug 2, 2026

Copy link
Copy Markdown
Author

@ally review exact head 3e7f527

@kkroo

kkroo commented Aug 2, 2026

Copy link
Copy Markdown
Author

/ally review
@ally review exact head 3e7f527

@kkroo
kkroo requested a review from allyblockcast August 2, 2026 09:51
allyblockcast[bot]
allyblockcast Bot previously approved these changes Aug 2, 2026

@allyblockcast allyblockcast Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ally — Consolidated PR Review

Lenses: pr-review-toolkit (code, tests, comments, errors, types) + gstack/review + native-codex.
Reviewed head: 3e7f527

Looks good. The persistence-backed wizard transition retains a narrowly scoped 45-second assertion allowance, while both affected full-flow tests have explicit 180-second enclosing budgets. No retries, bypasses, or broader timeout weakening were introduced, and the exact-head CI checks are green.

Strengths

  • The longer assertion timeout is limited to the persistence-sensitive transition.
  • Both end-to-end flows retain sufficient full-test headroom around the persistence wait.
  • The prior enclosing-timeout finding remains resolved on this head.

Recommended Action

  1. Merge after all required approvals are present.

@allyblockcast allyblockcast left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ally — Consolidated PR Review

Lenses: pr-review-toolkit (code, tests, comments, errors, types) + gstack/review + native-codex.
Reviewed head: 3e7f527

Looks good. The persistence-backed wizard transition retains a narrowly scoped 45-second assertion allowance, while both affected full-flow tests have explicit 180-second enclosing budgets. No retries, bypasses, or broader timeout weakening were introduced, and the exact-head CI checks are green.

Strengths

  • The longer assertion timeout is limited to the persistence-sensitive transition.
  • Both end-to-end flows retain sufficient full-test headroom around the persistence wait.
  • The prior enclosing-timeout finding remains resolved on this head.

Recommended Action

  1. Merge after all required approvals are present.

@kkroo
kkroo dismissed allyblockcast[bot]’s stale review August 2, 2026 10:26

Dismissed by Codex: duplicate Ally approval on the same current head 3e7f527; keeping later allyblockcast approval 4838061934 as the single operative exact-head attestation.

@kkroo
kkroo merged commit adffd2f into master Aug 2, 2026
20 checks passed
@kkroo
kkroo deleted the codex/e2e-onboarding-wait-budget branch August 2, 2026 10:27
allyblockcast Bot pushed a commit that referenced this pull request Aug 2, 2026
Conflict in tests/e2e/nux-phase4-screenshots.spec.ts, pre-existing on 6bc9890
and unrelated to the approvals fixes. Resolved as a union: both sides wanted the
same thing. Master (#934) widened the onboarding persistence wait to 45s for CI
headroom; this branch added the assertion that the lead-name input actually
retains its value. Kept master's longer timeout AND the branch's assertion --
the longer wait is precisely what makes that assertion reliable. Both consts are
live: COMPANY_NAME has three call sites, WIZARD_PERSISTENCE_TIMEOUT_MS one.
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.

2 participants