47 lines
1.4 KiB
TypeScript
47 lines
1.4 KiB
TypeScript
import { expect, test } from "@playwright/test";
|
|
|
|
import { mockCoreApis } from "@e2e/fixtures/api-mocks";
|
|
import { clearBrowserState } 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(/\/chat$/);
|
|
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,
|
|
});
|
|
});
|