import { test } from "@playwright/test"; import { createAppFixture, createFixture, js, } from "./helpers/create-fixture.js"; import type { AppFixture } from "./helpers/create-fixture.js"; import { PlaywrightFixture } from "./helpers/playwright-fixture.js"; test.describe("pathless layout routes", () => { let appFixture: AppFixture; test.beforeAll(async () => { appFixture = await createAppFixture( await createFixture({ files: { "app/routes/_layout.tsx": js` import { Outlet } from "react-router"; export default () =>
; `, "app/routes/_layout._index.tsx": js` export default () =>
Layout index
; `, "app/routes/_layout.subroute.tsx": js` export default () =>
Layout subroute
; `, "app/routes/sandwiches._pathless.tsx": js` import { Outlet } from "react-router"; export default () =>
; `, "app/routes/sandwiches._pathless._index.tsx": js` export default () =>
Sandwiches pathless index
; `, }, }), ); }); test.afterAll(() => { appFixture.close(); }); test("should render pathless index route", async ({ page }) => { let app = new PlaywrightFixture(appFixture, page); await app.goto("/"); await page.waitForSelector("[data-testid='layout-route']"); await page.waitForSelector("[data-testid='layout-index']"); }); test("should render pathless sub route", async ({ page }) => { let app = new PlaywrightFixture(appFixture, page); await app.goto("/subroute"); await page.waitForSelector("[data-testid='layout-route']"); await page.waitForSelector("[data-testid='layout-subroute']"); }); test("should render pathless index as a sub route", async ({ page }) => { let app = new PlaywrightFixture(appFixture, page); await app.goto("/sandwiches"); await page.waitForSelector("[data-testid='sandwiches-pathless-route']"); await page.waitForSelector("[data-testid='sandwiches-pathless-index']"); }); });