37 lines
1.2 KiB
JavaScript
37 lines
1.2 KiB
JavaScript
import { expect, test } from "../support/browser/strict-browser-test.js";
|
|
import { successEnvelope } from "../mocks/contracts/envelopes.js";
|
|
import { ROUTE_REGISTRY } from "../../src/features/installed-feature-contracts.js";
|
|
|
|
test("opens the protected integration route through the local demo seam", async ({
|
|
page,
|
|
}) => {
|
|
const protectedRoute = Object.values(ROUTE_REGISTRY).find(
|
|
(definition) => definition.access === "integration-defined",
|
|
);
|
|
if (!protectedRoute) throw new Error("An integration route is required");
|
|
await page.route(
|
|
"http://localhost:8080/api/reference-resources?*",
|
|
(route) =>
|
|
route.fulfill({
|
|
json: successEnvelope([
|
|
{
|
|
id: "browser-reference",
|
|
name: "Browser reference",
|
|
createdAt: "2026-07-26T00:00:00.000Z",
|
|
},
|
|
]),
|
|
}),
|
|
);
|
|
await page.goto(protectedRoute.path);
|
|
await expect(
|
|
page.getByRole("heading", { name: "세션이 필요합니다." }),
|
|
).toBeVisible();
|
|
|
|
await page.getByRole("button", { name: "로그인 시작" }).click();
|
|
|
|
await expect(
|
|
page.getByRole("heading", { name: protectedRoute.title }),
|
|
).toBeVisible();
|
|
await expect(page.getByText("인증됨")).toBeVisible();
|
|
});
|