Breaks the monolithic planner.test.ts (581 lines, 25 tests) into five focused files grouped by feature area, with BRouter mocked by default via test.beforeEach in files that need routing. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
71 lines
2.9 KiB
TypeScript
71 lines
2.9 KiB
TypeScript
import { test, expect } from "./fixtures/test";
|
||
import { mockBRouter } from "./fixtures/brouter-mock";
|
||
import { createSession } from "./helpers/planner";
|
||
|
||
test.beforeEach(async ({ page }) => {
|
||
await mockBRouter(page);
|
||
});
|
||
|
||
const WITH_ROUTE = encodeURIComponent(JSON.stringify([
|
||
{ lat: 52.520, lon: 13.405 },
|
||
{ lat: 52.515, lon: 13.351 },
|
||
]));
|
||
|
||
test.describe("Planner – route coloring", () => {
|
||
test("session has color mode toggle", async ({ page, request }) => {
|
||
const url = await createSession(request);
|
||
|
||
await page.goto(`${url}?waypoints=${WITH_ROUTE}`);
|
||
await expect(page.locator(".leaflet-container")).toBeVisible({ timeout: 10000 });
|
||
await expect(page.getByText("Connected")).toBeVisible({ timeout: 15000 });
|
||
|
||
await expect(page.locator("canvas")).toBeVisible({ timeout: 10000 });
|
||
const select = page.locator("select", { has: page.locator("option[value='highway']") });
|
||
await expect(select).toBeVisible({ timeout: 5000 });
|
||
await expect(select).toHaveValue("plain");
|
||
|
||
await select.selectOption("elevation");
|
||
await expect(select).toHaveValue("elevation");
|
||
});
|
||
|
||
test("road type color mode renders chart and shows legend", async ({ page, request }) => {
|
||
const url = await createSession(request);
|
||
|
||
await page.goto(`${url}?waypoints=${WITH_ROUTE}`);
|
||
await expect(page.locator(".leaflet-container")).toBeVisible({ timeout: 10000 });
|
||
await expect(page.getByText("Connected")).toBeVisible({ timeout: 15000 });
|
||
|
||
await expect(page.locator("canvas")).toBeVisible({ timeout: 10000 });
|
||
const select = page.locator("select", { has: page.locator("option[value='highway']") });
|
||
await expect(select).toBeVisible({ timeout: 5000 });
|
||
|
||
await select.selectOption("highway");
|
||
await expect(select).toHaveValue("highway");
|
||
|
||
await expect(page.getByText("Road Type Profile")).toBeVisible({ timeout: 5000 });
|
||
await expect(page.getByText("secondary")).toBeVisible({ timeout: 5000 });
|
||
await expect(page.getByText("residential")).toBeVisible({ timeout: 5000 });
|
||
});
|
||
|
||
test("road type hover label shows highway type", async ({ page, request }) => {
|
||
const url = await createSession(request);
|
||
|
||
await page.goto(`${url}?waypoints=${WITH_ROUTE}`);
|
||
await expect(page.locator(".leaflet-container")).toBeVisible({ timeout: 10000 });
|
||
await expect(page.getByText("Connected")).toBeVisible({ timeout: 15000 });
|
||
|
||
await expect(page.locator("canvas")).toBeVisible({ timeout: 10000 });
|
||
const select = page.locator("select", { has: page.locator("option[value='highway']") });
|
||
await expect(select).toBeVisible({ timeout: 5000 });
|
||
await select.selectOption("highway");
|
||
|
||
const canvas = page.locator("canvas");
|
||
await expect(canvas).toBeVisible({ timeout: 5000 });
|
||
const box = await canvas.boundingBox();
|
||
if (box) {
|
||
await page.mouse.move(box.x + box.width / 2, box.y + box.height / 2);
|
||
}
|
||
|
||
await expect(canvas).toBeVisible();
|
||
});
|
||
});
|