36 lines
1 KiB
TypeScript
36 lines
1 KiB
TypeScript
import { expect, test } from "@playwright/test";
|
|
|
|
test.skip(
|
|
process.env.E2E_PREVIEW_BUILD !== "1",
|
|
"프로덕션 build를 vite preview로 띄운 옵트인 검증이다.",
|
|
);
|
|
|
|
test("recovers a failed production lazy chunk with exactly one document reload @single-run", async ({
|
|
page,
|
|
}) => {
|
|
let loginChunkRequests = 0;
|
|
let documentRequests = 0;
|
|
|
|
page.on("request", (request) => {
|
|
if (request.isNavigationRequest()) documentRequests += 1;
|
|
});
|
|
await page.route("**/assets/Login-*.js", async (route) => {
|
|
loginChunkRequests += 1;
|
|
if (loginChunkRequests === 1) {
|
|
await route.abort("failed");
|
|
return;
|
|
}
|
|
await route.continue();
|
|
});
|
|
|
|
await page.goto("/login", { waitUntil: "domcontentloaded" });
|
|
|
|
await expect(page.getByRole("heading", { name: "로그인" })).toBeVisible({ timeout: 15_000 });
|
|
expect(loginChunkRequests).toBe(2);
|
|
expect(documentRequests).toBe(2);
|
|
await expect
|
|
.poll(() =>
|
|
page.evaluate(() => sessionStorage.getItem("vignette:chunk-recovery:/login")),
|
|
)
|
|
.toBeNull();
|
|
});
|