fix(e2e): dismiss import prompt in prod-smoke setup - #404
Merged
Conversation
The onboarding-before-auth change (#396) added a one-time post-login "Import from another app?" overlay, gated on `hasCompletedOnboarding && !hasSeenImportPrompt`. The smoke setup marks the account onboarded but never set hasSeenImportPrompt, so the z-[9999] overlay rendered over Today and intercepted the create-habit FAB click, timing the suite out. Dismiss it in setup (like onboarding) so the account starts clean. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub. 1 Skipped Deployment
|
There was a problem hiding this comment.
Review Summary
Scope: PR #404 — fix(e2e): dismiss import prompt in smoke setup so it can't block Today
Recommendation: APPROVE
| Severity | Count |
|---|---|
| Critical (incl. |
0 |
| High | 0 |
| Medium | 0 |
| Low / Info | 0 |
Diff
3 lines added to apps/web/e2e/global.setup.ts — adds a PUT /api/profile/import-prompt/dismiss call right after the existing PUT /api/profile/onboarding call, mirroring the same pattern.
What was verified
- Endpoint chain traced end-to-end:
packages/shared/src/api/endpoints.ts(importPromptDismiss: '/api/profile/import-prompt/dismiss') →apps/web/app/actions/onboarding.ts(dismissImportPrompt,PUTviaserverAuthFetch) → BFF catch-all proxy (apps/web/app/api/[...path]/route.ts) already forwardsPUT. The literal path added in setup matches exactly. - Ordering is correct: runs after the smoke-account reset (which would otherwise clear the flag) and before
storageStateis persisted. - No
apps/web/e2e/*.spec.tsexercises the import-prompt flow, so suppressing it in setup costs no test coverage. - Root cause framed correctly — the overlay is intentional real-user behavior; only the smoke fixture was incomplete, same class as the existing
orbit_trial_expired_seenseed two lines below. - Cross-cutting gates: no
apps/mobilemirror needed (sanctioned web-only smoke exception per rootCLAUDE.md), no user-facing strings, no shared-type/DTO changes, noorbit-apichanges, no backward-compat concerns.
Not verifiable in this job
- Cross-repo contract check (orbit-api not checked out in this CI job) — not applicable here since no shared/DTO changes are in this diff.
- Lint/type-check/tests — covered by required Build/Unit Tests/SonarCloud checks per this workflow's CI adaptation; skipped here by design.
No follow-up needed; safe to merge as-is.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Summary
Prod Smoke went red immediately after #400 (onboarding-before-auth) merged. Root cause: #396 added a one-time post-login "Import from another app?" overlay gated on
hasCompletedOnboarding && !hasSeenImportPrompt. The smokeglobal.setupmarks the account onboarded but never setshasSeenImportPrompt, so thefixed inset-0 z-[9999]overlay rendered over Today and its "Not now" button intercepted the create-habit FAB click — the suite timed out oncreate-habit.spec.ts.Fix mirrors the existing onboarding-complete step:
PUT /api/profile/import-prompt/dismissin setup so the smoke account starts with the prompt already dismissed. Same class of fix as the earlierorbit_trial_expired_seenseed for the trial modal.Not a product regression — the prompt behaves correctly for real users; it just needs suppressing in the smoke harness like the trial modal does.
🤖 Generated with Claude Code