Files
cozsweet-frontend-nextjs/e2e/specs/mock/chat/commercial-action-navigation.spec.ts
T
Codex 4dae805a88
Docker Image / Build and Push Docker Image (push) Successful in 1m55s
feat(payment): support user-bound seven-discount offers
2026-07-23 16:13:22 +08:00

50 lines
1.5 KiB
TypeScript

import { expect, test } from "@playwright/test";
import { mockCoreApis } from "@e2e/fixtures/api-mocks";
import {
clearBrowserState,
enterChatFromSplash,
} from "@e2e/fixtures/test-helpers";
test.beforeEach(async ({ baseURL, context, page }) => {
await clearBrowserState(context, page, baseURL);
await mockCoreApis(page);
});
test("renders a backend commercial action and opens the private zone", async ({
page,
}) => {
await enterChatFromSplash(page);
const input = page.getByRole("textbox", { name: "Message" });
await expect(input).toBeEnabled();
await input.fill("private album offer test");
await input.press("Enter");
const offer = page.getByLabel("Open private zone");
await expect(offer).toContainText(
"There are more private photos waiting for you.",
);
await offer.getByRole("button", { name: "Open private zone" }).click();
await expect(page).toHaveURL(/\/characters\/elio\/private-zone$/);
});
test("asks for consent before opening a user-bound discount plan", async ({
page,
}) => {
await enterChatFromSplash(page);
const input = page.getByRole("textbox", { name: "Message" });
await input.fill("discount offer test");
await input.press("Enter");
const offer = page.getByLabel("Yes, ask for me");
await expect(offer).toContainText("Want me to ask for my best private offer?");
await offer.getByRole("button", { name: "Yes, ask for me" }).click();
await expect(page).toHaveURL(
/\/subscription\?type=vip.*planId=vip_annual.*commercialOfferId=13ec8a10/,
);
});