.
This commit is contained in:
@@ -72,6 +72,38 @@ async function ensureAuthenticated(page: any, request: any) {
|
||||
]);
|
||||
}
|
||||
|
||||
async function patchProjectStatusForCurrentUser(
|
||||
page: import("@playwright/test").Page,
|
||||
request: import("@playwright/test").APIRequestContext,
|
||||
slug: string,
|
||||
status: "DRAFT" | "PUBLISHED" | "ARCHIVED",
|
||||
) {
|
||||
const cookies = await page.context().cookies();
|
||||
const pbCookie = cookies.find((c) => c.name === "pb_access");
|
||||
expect(pbCookie).toBeTruthy();
|
||||
|
||||
const res = await request.patch(`/api/projects/${slug}`, {
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
Cookie: `pb_access=${pbCookie!.value}`,
|
||||
},
|
||||
data: { status },
|
||||
});
|
||||
|
||||
const code = res.status();
|
||||
if (code !== 200) {
|
||||
console.log("[block-styles-regression] patchProjectStatus error status=", code);
|
||||
try {
|
||||
const bodyText = await res.text();
|
||||
console.log("[block-styles-regression] patchProjectStatus error body=", bodyText);
|
||||
} catch (e) {
|
||||
console.log("[block-styles-regression] patchProjectStatus error: body read failed", e);
|
||||
}
|
||||
}
|
||||
|
||||
expect(code).toBe(200);
|
||||
}
|
||||
|
||||
test("텍스트/버튼/리스트/이미지/비디오/폼 입력 필드 스타일이 프리뷰와 퍼블릭 페이지에서 동일해야 한다", async ({ page, request }) => {
|
||||
const now = Date.now();
|
||||
const slug = `style-regression-${now}`;
|
||||
@@ -214,6 +246,7 @@ test("텍스트/버튼/리스트/이미지/비디오/폼 입력 필드 스타일
|
||||
await page.getByRole("button", { name: "Save (local + server)" }).click();
|
||||
|
||||
await expect(page).toHaveURL(/\/_?projects/);
|
||||
await patchProjectStatusForCurrentUser(page, request, slug, "PUBLISHED");
|
||||
await page.goto(`/p/${slug}`);
|
||||
|
||||
// 4) 동일한 slug 의 퍼블릭 페이지(/p/[slug])로 이동해 같은 요소들의 스타일을 다시 측정한다.
|
||||
@@ -402,6 +435,7 @@ test("버튼 너비/패딩/색상/둥글기 스타일이 프리뷰와 퍼블릭
|
||||
await page.getByRole("button", { name: "Save (local + server)" }).click();
|
||||
|
||||
await page.waitForURL(/\/projects/);
|
||||
await patchProjectStatusForCurrentUser(page, request, slug, "PUBLISHED");
|
||||
await page.goto(`/p/${slug}`);
|
||||
|
||||
const publicButton = page.getByRole("link", { name: "Button" }).first();
|
||||
@@ -526,6 +560,7 @@ test("폼 셀렉트/체크박스/라디오 기본 텍스트 스타일이 프리
|
||||
await page.getByRole("button", { name: "Save (local + server)" }).click();
|
||||
|
||||
await page.waitForURL(/\/projects/);
|
||||
await patchProjectStatusForCurrentUser(page, request, slug, "PUBLISHED");
|
||||
await page.goto(`/p/${slug}`);
|
||||
|
||||
// 4) 동일한 slug 의 퍼블릭 페이지(/p/[slug])로 이동해 같은 텍스트들의 스타일을 다시 측정한다.
|
||||
@@ -749,6 +784,7 @@ test("폼 셀렉트/체크박스/라디오 레이아웃/패딩/너비/간격 스
|
||||
await page.getByRole("button", { name: "Save (local + server)" }).click();
|
||||
|
||||
await page.waitForURL(/\/projects/);
|
||||
await patchProjectStatusForCurrentUser(page, request, slug, "PUBLISHED");
|
||||
await page.goto(`/p/${slug}`);
|
||||
|
||||
const publicSelectWrapper = page.locator(".pb-form-field").first();
|
||||
@@ -1031,6 +1067,7 @@ test("섹션 배경/레이아웃 스타일이 프리뷰와 퍼블릭 페이지
|
||||
await page.getByRole("button", { name: "Save (local + server)" }).click();
|
||||
|
||||
await page.waitForURL(/\/projects/);
|
||||
await patchProjectStatusForCurrentUser(page, request, slug, "PUBLISHED");
|
||||
await page.goto(`/p/${slug}`);
|
||||
|
||||
// 4) 퍼블릭 페이지에서 같은 섹션 레이아웃의 스타일을 다시 측정한다.
|
||||
@@ -1141,6 +1178,7 @@ test("구분선 스타일이 프리뷰와 퍼블릭 페이지에서 동일해야
|
||||
await page.getByRole("button", { name: "Save (local + server)" }).click();
|
||||
|
||||
await page.waitForURL(/\/projects/);
|
||||
await patchProjectStatusForCurrentUser(page, request, slug, "PUBLISHED");
|
||||
await page.goto(`/p/${slug}`);
|
||||
|
||||
const publicDivider = page.locator("hr.pb-divider").first();
|
||||
|
||||
Reference in New Issue
Block a user