import { expect, test } from "@playwright/test"; const apiBaseURL = process.env.E2E_API_BASE_URL; test.describe("real backend smoke", () => { test("splash page can be opened", async ({ page }) => { await page.goto("/splash", { waitUntil: "domcontentloaded" }); await expect(page.getByRole("button", { name: "Skip" })).toBeVisible(); await expect( page.getByRole("button", { name: "Login with Facebook" }), ).toBeVisible(); }); test("protected subscription page redirects anonymous visitors safely", async ({ page, }) => { await page.goto("/subscription?type=vip", { waitUntil: "domcontentloaded", }); await expect(page.getByRole("button", { name: "Skip" })).toBeVisible(); await expect(page).toHaveURL(/\/splash(?:\?.*)?$/); }); test("real payment plans API returns a usable plan list", async ({ request, }) => { test.skip(!apiBaseURL, "Set E2E_API_BASE_URL to test real backend APIs."); const response = await request.get(`${apiBaseURL}/api/payment/plans`); expect(response.ok()).toBe(true); const body = await response.json(); expect(body.success).toBe(true); expect(Array.isArray(body.data?.plans)).toBe(true); expect(body.data.plans.length).toBeGreaterThan(0); expect(body.data.plans[0]).toEqual( expect.objectContaining({ plan_id: expect.any(String), plan_name: expect.any(String), amount_cents: expect.any(Number), currency: expect.any(String), }), ); }); test("auth page exposes the social login entry without completing OAuth", async ({ page, }) => { await page.goto("/auth", { waitUntil: "domcontentloaded" }); await expect( page.getByRole("button", { name: /facebook/i }), ).toBeVisible(); }); });