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" });
}