import { expect, test } from "@playwright/test"; import { mockCoreApis } from "@e2e/fixtures/api-mocks"; import { clearBrowserState, defaultCharacterChatUrl, } from "@e2e/fixtures/test-helpers"; const psid = "e2e-facebook-psid"; test.beforeEach(async ({ baseURL, context, page }) => { await clearBrowserState(context, page, baseURL); await mockCoreApis(page, { psidLoginFlow: true }); }); test("user enters from an external PSID link and becomes a guest", async ({ page, }) => { const psidLoginRequestPromise = page.waitForRequest( "**/api/auth/login/facebook/psid", ); await page.goto(`/external-entry?target=chat&psid=${psid}`); const psidLoginRequest = await psidLoginRequestPromise; expect(psidLoginRequest.method()).toBe("POST"); expect(psidLoginRequest.postDataJSON()).toMatchObject({ psid, bindToGuest: true, }); expect(psidLoginRequest.postDataJSON().deviceId).toEqual(expect.any(String)); await expect(page).toHaveURL(defaultCharacterChatUrl); await expect(page.getByRole("textbox", { name: "Message" })).toBeVisible(); await expect .poll(() => page.evaluate(() => ({ loginProvider: localStorage.getItem("cozsweet:login_provider"), guestToken: localStorage.getItem("cozsweet:guest_token"), psid: localStorage.getItem("cozsweet:psid"), })), ) .toMatchObject({ loginProvider: "guest", guestToken: "e2e-psid-guest-token", psid, }); });