diff --git a/e2e/specs/real/email-login-from-other-options.spec.ts b/e2e/specs/real/email-login-from-other-options.spec.ts new file mode 100644 index 00000000..61c9e37e --- /dev/null +++ b/e2e/specs/real/email-login-from-other-options.spec.ts @@ -0,0 +1,52 @@ +import { expect, test } from "@playwright/test"; + +const preReleaseHost = "frontend-test.banlv-ai.com"; +const baseURL = process.env.PLAYWRIGHT_BASE_URL ?? ""; + +test.describe("pre-release email login smoke", () => { + test.skip( + !baseURL.includes(preReleaseHost), + `Run this test only with PLAYWRIGHT_BASE_URL pointing at ${preReleaseHost}.`, + ); + + test("guest can switch to email login from other sign-in options and return to chat", async ({ + page, + }) => { + await page.goto("/splash", { waitUntil: "domcontentloaded" }); + + await expect(page.getByRole("button", { name: "Skip" })).toBeVisible(); + await Promise.all([ + page.waitForURL(/\/chat(?:\?.*)?$/, { timeout: 20_000 }), + page.getByRole("button", { name: "Skip" }).click(), + ]); + + await expect( + page.getByRole("button", { name: "Sign up to unlock more features" }), + ).toBeVisible(); + await Promise.all([ + page.waitForURL(/\/auth(?:\?.*)?$/, { timeout: 20_000 }), + page + .getByRole("button", { name: "Sign up to unlock more features" }) + .click(), + ]); + + await page.getByRole("button", { name: "Other Sign In Options" }).click(); + await expect( + page.getByRole("dialog", { name: "Other sign-in options" }), + ).toBeVisible(); + + await page.getByRole("button", { name: "Email Sign In" }).click(); + await expect(page.getByPlaceholder("Email")).toHaveValue( + "chanwillian0@gmail.com", + ); + await expect(page.getByPlaceholder("Password")).toHaveValue("12345678"); + + await Promise.all([ + page.waitForURL(/\/chat(?:\?.*)?$/, { timeout: 20_000 }), + page.getByRole("button", { name: "Login" }).click(), + ]); + + await expect(page.getByRole("button", { name: "Menu" })).toBeVisible(); + await expect(page.getByRole("textbox", { name: "Message" })).toBeVisible(); + }); +});