import { IdentityProvider } from "@calcom/prisma/enums"; import { expect } from "@playwright/test"; import { test } from "./lib/fixtures"; test.describe.configure({ mode: "parallel" }); test.afterEach(({ users }) => users.deleteAll()); test.describe("Onboarding", () => { const testOnboarding = (identityProvider: IdentityProvider) => { test(`Onboarding Flow (v3) - ${identityProvider} user`, async ({ page, users }) => { const user = await users.create({ completedOnboarding: false, name: null, identityProvider, }); await user.apiLogin(); await page.goto("/onboarding/getting-started"); await page.waitForURL("/onboarding/getting-started"); await test.step("step 1 - Plan Selection", async () => { await expect(page.getByTestId("onboarding-continue-btn")).toBeVisible(); await page.getByTestId("onboarding-continue-btn").click(); await page.waitForURL(/.*\/onboarding\/personal\/settings/); }); await test.step("step 2 - Personal Settings", async () => { const nameInput = page.locator('input[name="name"]'); await nameInput.fill("new user 2"); await page.locator('button[type="submit"]').click(); await page.waitForURL(/.*\/onboarding\/personal\/calendar/); const userComplete = await user.self(); expect(userComplete.name).toBe("new user 2"); }); await test.step("step 3 - Calendar Connection", async () => { await expect(page.getByTestId("onboarding-continue-btn")).toBeVisible(); await page.getByTestId("onboarding-continue-btn").click(); await page.waitForURL("/event-types**"); const userComplete = await user.self(); expect(userComplete.completedOnboarding).toBe(true); }); }); }; testOnboarding(IdentityProvider.GOOGLE); testOnboarding(IdentityProvider.CAL); testOnboarding(IdentityProvider.SAML); testOnboarding(IdentityProvider.AZUREAD); });