diff --git a/e2e-tests/__screenshots__/darwin/add-entity-page.spec.ts/can-add-an-entity-page-6.png b/e2e-tests/__screenshots__/darwin/add-entity-page.spec.ts/can-add-an-entity-page-6.png index 6333bbee9..9db0ab1fd 100644 Binary files a/e2e-tests/__screenshots__/darwin/add-entity-page.spec.ts/can-add-an-entity-page-6.png and b/e2e-tests/__screenshots__/darwin/add-entity-page.spec.ts/can-add-an-entity-page-6.png differ diff --git a/e2e-tests/__screenshots__/darwin/add-entity-page.spec.ts/can-add-an-entity-page-7.png b/e2e-tests/__screenshots__/darwin/add-entity-page.spec.ts/can-add-an-entity-page-7.png index 1aa2ea78b..2b8f76608 100644 Binary files a/e2e-tests/__screenshots__/darwin/add-entity-page.spec.ts/can-add-an-entity-page-7.png and b/e2e-tests/__screenshots__/darwin/add-entity-page.spec.ts/can-add-an-entity-page-7.png differ diff --git a/e2e-tests/__screenshots__/darwin/add-entity-page.spec.ts/can-add-an-entity-page-8.png b/e2e-tests/__screenshots__/darwin/add-entity-page.spec.ts/can-add-an-entity-page-8.png new file mode 100644 index 000000000..3d30eb668 Binary files /dev/null and b/e2e-tests/__screenshots__/darwin/add-entity-page.spec.ts/can-add-an-entity-page-8.png differ diff --git a/e2e-tests/__screenshots__/darwin/add-page-with-layout.spec.ts/can-add-a-page-using-a-layout-1.png b/e2e-tests/__screenshots__/darwin/add-page-with-layout.spec.ts/can-add-a-page-using-a-layout-1.png new file mode 100644 index 000000000..973b09c56 Binary files /dev/null and b/e2e-tests/__screenshots__/darwin/add-page-with-layout.spec.ts/can-add-a-page-using-a-layout-1.png differ diff --git a/e2e-tests/__screenshots__/darwin/add-page-with-layout.spec.ts/can-add-a-page-using-a-layout-2.png b/e2e-tests/__screenshots__/darwin/add-page-with-layout.spec.ts/can-add-a-page-using-a-layout-2.png new file mode 100644 index 000000000..4c11b1d1f Binary files /dev/null and b/e2e-tests/__screenshots__/darwin/add-page-with-layout.spec.ts/can-add-a-page-using-a-layout-2.png differ diff --git a/e2e-tests/__screenshots__/darwin/add-page-with-layout.spec.ts/can-add-a-page-using-a-layout-3.png b/e2e-tests/__screenshots__/darwin/add-page-with-layout.spec.ts/can-add-a-page-using-a-layout-3.png new file mode 100644 index 000000000..582764cb6 Binary files /dev/null and b/e2e-tests/__screenshots__/darwin/add-page-with-layout.spec.ts/can-add-a-page-using-a-layout-3.png differ diff --git a/e2e-tests/__screenshots__/darwin/add-page-with-layout.spec.ts/can-add-a-page-using-a-layout-4.png b/e2e-tests/__screenshots__/darwin/add-page-with-layout.spec.ts/can-add-a-page-using-a-layout-4.png new file mode 100644 index 000000000..5f6021f6d Binary files /dev/null and b/e2e-tests/__screenshots__/darwin/add-page-with-layout.spec.ts/can-add-a-page-using-a-layout-4.png differ diff --git a/e2e-tests/__screenshots__/darwin/add-page-with-layout.spec.ts/can-add-a-page-using-a-layout-5.png b/e2e-tests/__screenshots__/darwin/add-page-with-layout.spec.ts/can-add-a-page-using-a-layout-5.png new file mode 100644 index 000000000..921275f16 Binary files /dev/null and b/e2e-tests/__screenshots__/darwin/add-page-with-layout.spec.ts/can-add-a-page-using-a-layout-5.png differ diff --git a/e2e-tests/__screenshots__/darwin/add-page-with-layout.spec.ts/can-add-a-page-using-a-layout-6.png b/e2e-tests/__screenshots__/darwin/add-page-with-layout.spec.ts/can-add-a-page-using-a-layout-6.png new file mode 100644 index 000000000..fe0ad2023 Binary files /dev/null and b/e2e-tests/__screenshots__/darwin/add-page-with-layout.spec.ts/can-add-a-page-using-a-layout-6.png differ diff --git a/e2e-tests/__screenshots__/darwin/add-page-with-layout.spec.ts/can-add-a-page-using-a-layout-7.png b/e2e-tests/__screenshots__/darwin/add-page-with-layout.spec.ts/can-add-a-page-using-a-layout-7.png new file mode 100644 index 000000000..481c6eaac Binary files /dev/null and b/e2e-tests/__screenshots__/darwin/add-page-with-layout.spec.ts/can-add-a-page-using-a-layout-7.png differ diff --git a/e2e-tests/__screenshots__/darwin/add-page-with-layout.spec.ts/can-add-a-page-using-a-layout-8.png b/e2e-tests/__screenshots__/darwin/add-page-with-layout.spec.ts/can-add-a-page-using-a-layout-8.png new file mode 100644 index 000000000..0f84496ce Binary files /dev/null and b/e2e-tests/__screenshots__/darwin/add-page-with-layout.spec.ts/can-add-a-page-using-a-layout-8.png differ diff --git a/e2e-tests/__screenshots__/darwin/add-static-page.spec.ts/can-add-a-static-page-4.png b/e2e-tests/__screenshots__/darwin/add-static-page.spec.ts/can-add-a-static-page-4.png index caaacd67a..9db0ab1fd 100644 Binary files a/e2e-tests/__screenshots__/darwin/add-static-page.spec.ts/can-add-a-static-page-4.png and b/e2e-tests/__screenshots__/darwin/add-static-page.spec.ts/can-add-a-static-page-4.png differ diff --git a/e2e-tests/__screenshots__/darwin/add-static-page.spec.ts/can-add-a-static-page-5.png b/e2e-tests/__screenshots__/darwin/add-static-page.spec.ts/can-add-a-static-page-5.png index 2f07f519b..3ab6a5a19 100644 Binary files a/e2e-tests/__screenshots__/darwin/add-static-page.spec.ts/can-add-a-static-page-5.png and b/e2e-tests/__screenshots__/darwin/add-static-page.spec.ts/can-add-a-static-page-5.png differ diff --git a/e2e-tests/__screenshots__/darwin/add-static-page.spec.ts/can-add-a-static-page-6.png b/e2e-tests/__screenshots__/darwin/add-static-page.spec.ts/can-add-a-static-page-6.png new file mode 100644 index 000000000..59e528d7a Binary files /dev/null and b/e2e-tests/__screenshots__/darwin/add-static-page.spec.ts/can-add-a-static-page-6.png differ diff --git a/e2e-tests/src/layouts/LocationLayout.tsx b/e2e-tests/src/layouts/LocationLayout.tsx new file mode 100644 index 000000000..7b7a51a02 --- /dev/null +++ b/e2e-tests/src/layouts/LocationLayout.tsx @@ -0,0 +1,13 @@ +import Header from "../components/Header"; + +function LocationLayout() { + return ( +
+ ); +} + +export default LocationLayout; diff --git a/e2e-tests/tests/__fixtures__/add-layout-page-expected.tsx b/e2e-tests/tests/__fixtures__/add-layout-page-expected.tsx new file mode 100644 index 000000000..5766a5cb8 --- /dev/null +++ b/e2e-tests/tests/__fixtures__/add-layout-page-expected.tsx @@ -0,0 +1,16 @@ +import { GetPath, TemplateProps } from "@yext/pages"; +import Header from "../components/Header"; + +export const getPath: GetPath = () => { + return "index.html"; +}; + +export default function LayoutPage() { + return ( +
+ ); +} \ No newline at end of file diff --git a/e2e-tests/tests/add-page-with-layout.spec.ts b/e2e-tests/tests/add-page-with-layout.spec.ts new file mode 100644 index 000000000..f7b10f19e --- /dev/null +++ b/e2e-tests/tests/add-page-with-layout.spec.ts @@ -0,0 +1,22 @@ +import { expect } from "@playwright/test"; +import { studioTest } from "./infra/studioTest.js"; +import fs from "fs"; + +const expectedPage = fs.readFileSync( + "./tests/__fixtures__/add-layout-page-expected.tsx", + "utf-8" +); + +studioTest("can add a page using a layout", async ({ page, studioPage }) => { + const pageName = "LayoutPage" + await studioPage.takePageScreenshotAfterImgRender(); + const pageInTree = page.getByText(pageName); + await expect(pageInTree).toHaveCount(0); + await studioPage.addStaticPage(pageName, "index.html", "LocationLayout"); + await expect(pageInTree).toHaveCount(1); + await studioPage.takePageScreenshotAfterImgRender(); + await studioPage.saveButton.click(); + const pagePath = studioPage.getPagePath(pageName); + await expect(pagePath).toHaveContents(expectedPage); + await studioPage.takePageScreenshotAfterImgRender(); +}); diff --git a/e2e-tests/tests/infra/StudioPlaywrightPage.ts b/e2e-tests/tests/infra/StudioPlaywrightPage.ts index b8bfd805f..6ff29ddd7 100644 --- a/e2e-tests/tests/infra/StudioPlaywrightPage.ts +++ b/e2e-tests/tests/infra/StudioPlaywrightPage.ts @@ -59,21 +59,24 @@ export default class StudioPlaywrightPage { this.gitOps = new GitOperations(git); } - async addStaticPage(pageName: string, urlSlug: string) { + async addStaticPage(pageName: string, urlSlug: string, layoutName?: string) { await this.addPageButton.click(); await this.selectPageType(false); await this.enterBasicPageData(pageName, urlSlug); + await this.selectLayout(layoutName) } async addEntityPage( pageName: string, streamScopeForm?: StreamScopeForm, - urlSlug?: string + urlSlug?: string, + layoutName?: string ) { await this.addPageButton.click(); await this.selectPageType(true); await this.enterStreamScope(streamScopeForm); await this.enterBasicPageData(pageName, urlSlug); + await this.selectLayout(layoutName); } private async selectPageType(isEntityPage: boolean) { @@ -112,7 +115,18 @@ export default class StudioPlaywrightPage { await this.typeIntoModal(basicDataModal, "URL Slug", urlSlug); } await this.takePageScreenshotAfterImgRender(); - await this.clickModalButton(basicDataModal, "Save"); + await this.clickModalButton(basicDataModal, "Next"); + } + + private async selectLayout(layoutName?: string) { + const modalName = "Select Layout"; + await this.takePageScreenshotAfterImgRender(); + if (layoutName) { + const layoutModal = this.page.getByRole("dialog", {name: modalName}) + await layoutModal.getByRole("combobox").selectOption({label: layoutName}) + await this.takePageScreenshotAfterImgRender(); + } + await this.clickModalButton(modalName, "Save"); await this.page.getByRole("dialog").waitFor({ state: "hidden" }); }