feat: enable onboarding-v3 globally and update e2e tests#27922
Merged
Conversation
- Add migration to set onboarding-v3 feature flag enabled=true - Rewrite onboarding.e2e.ts for v3 flow (Plan Selection → Personal Settings → Calendar) - Update URL assertions in signup, team-invitation, org-invitation, ab-tests-redirect, and auth tests to accept both old and new onboarding paths Co-Authored-By: sean@cal.com <Sean@brydon.io>
Contributor
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
Contributor
There was a problem hiding this comment.
2 issues found across 7 files
Prompt for AI agents (all issues)
Check if these issues are valid — if so, understand the root cause of each and fix them.
<file name="apps/web/playwright/onboarding.e2e.ts">
<violation number="1" location="apps/web/playwright/onboarding.e2e.ts:22">
P2: Rule violated: **E2E Tests Best Practices**
Avoid text-based locators in E2E tests. Rule 1 requires using explicit data-testid selectors (getByTestId) instead of text locators like `button:has-text("Continue")` to keep tests resilient.</violation>
<violation number="2" location="apps/web/playwright/onboarding.e2e.ts:40">
P2: `/event-types**` is not a valid glob-style URL pattern for Playwright and may never match, causing the test to hang. Use a proper glob segment (e.g., `**/event-types`) or a regex.</violation>
</file>
Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review.
Contributor
E2E results are ready! |
…s on callbackUrl query param Co-Authored-By: sean@cal.com <Sean@brydon.io>
eunjae-lee
approved these changes
Feb 13, 2026
volnei
added a commit
that referenced
this pull request
Feb 13, 2026
)" This reverts commit 7aefefc.
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.
What does this PR do?
Enables the
onboarding-v3feature flag globally via a Prisma migration (it's been enabled in production for months) and updates all e2e tests that were testing the old onboarding flow.Changes:
onboarding-v3feature flagenabled = truein theFeaturetableonboarding.e2e.ts: Fully rewritten from old 5-step flow to new 3-step v3 flow (Plan Selection → Personal Settings → Calendar Connection)/getting-started) and new (/onboarding/getting-started,/onboarding/personal/settings) onboarding pathswaitForURLfix: ChangedsignupFromInviteLinkandsignupFromEmailInviteLinkhelpers inorganization-invitation.e2e.ts,signup.e2e.ts, andteam-invitation.e2e.tsto match againsturl.pathnameonly instead of the full URL string. The previous regex/\/(getting-started|onboarding\/(getting-started|personal\/settings))/was falsely matching thecallbackUrl=/onboarding/personal/settingsquery parameter in the signup page URL itself, causingwaitForURLto resolve immediately before the signup API call completed — resulting in the user never being persisted to the database.Requested by: @sean-brydon
Link to Devin run
Updates since last revision
Fixed the 4 failing
organization-invitation.e2e.tstests. Root cause: with onboarding-v3 enabled, org invite links includecallbackUrl=/onboarding/personal/settingsas a query param. ThewaitForURLregex matched this query param on the signup page itself, so the test proceeded before signup completed. The fix uses a function-based URL matcher that checks onlyurl.pathname:All 4 previously-failing tests now pass locally.
Mandatory Tasks (DO NOT REMOVE)
How should this be tested?
onboarding-v3flag is enabledonboarding.e2e.tsandorganization-invitation.e2e.ts, to verify they pass against the v3 flow/onboarding/getting-started→/onboarding/personal/settings→/onboarding/personal/calendar)onboarding.e2e.tsselectors need verification: The rewritten test usesbutton:has-text("Continue"),input[name="name"], andbutton[type="submit"]— these should be verified against the actual v3 onboarding UI components. These were not validated against a running dev server with the full UI./onboarding/getting-started) instead of also accepting/getting-started. The dual-accept approach prevents breakage but is a weaker assertion.auth-index.e2e.tslost content assertion: Previously checked for"Welcome to Cal.com!"text visibility; now only asserts the redirect URL. This is a weaker check.ab-tests-redirect.e2e.ts: Now navigates directly to/onboarding/personal/calendarinstead of/getting-started/connected-calendar— assumes the v3 calendar page renders "Apple Calendar" text the same way.Checklist