121 lines
4.1 KiB
TypeScript
121 lines
4.1 KiB
TypeScript
// The Lucia project.
|
|
// Copyright 2026-2026 DSP, inc. All rights reserved.
|
|
// Authors:
|
|
// imacat.yang@dsp.im (imacat), 2026/03/22
|
|
|
|
import { test, expect } from "@playwright/test";
|
|
import { loginWithMSW } from "../helpers";
|
|
|
|
test.describe("Discover Tab Navigation", () => {
|
|
test.beforeEach(async ({ context }) => {
|
|
await loginWithMSW(context);
|
|
});
|
|
|
|
test.describe("navigating from Map page", () => {
|
|
test.beforeEach(async ({ page }) => {
|
|
await page.goto("/discover/log/297310264/map");
|
|
await expect(page.locator("#cy")).toBeVisible();
|
|
});
|
|
|
|
test("shows DISCOVER heading and MAP/CONFORMANCE/PERFORMANCE tabs", async ({
|
|
page,
|
|
}) => {
|
|
await expect(
|
|
page.locator("#nav_bar", { hasText: "DISCOVER" }),
|
|
).toBeVisible();
|
|
const navItems = page.locator(".nav-item");
|
|
await expect(navItems).toHaveCount(3);
|
|
await expect(navItems.nth(0)).toContainText("MAP");
|
|
await expect(navItems.nth(1)).toContainText("CONFORMANCE");
|
|
await expect(navItems.nth(2)).toContainText("PERFORMANCE");
|
|
});
|
|
|
|
test("clicking PERFORMANCE tab navigates to performance page", async ({
|
|
page,
|
|
}) => {
|
|
await page.locator(".nav-item", { hasText: "PERFORMANCE" }).click();
|
|
await expect(page).toHaveURL(/\/performance/);
|
|
await expect(
|
|
page.locator(".z-\\[9999\\]"),
|
|
).not.toBeVisible({ timeout: 10000 });
|
|
await expect(page.getByText("Time Usage").first()).toBeVisible();
|
|
});
|
|
|
|
test("clicking CONFORMANCE tab navigates to conformance page", async ({
|
|
page,
|
|
}) => {
|
|
await page.locator(".nav-item", { hasText: "CONFORMANCE" }).click();
|
|
await expect(page).toHaveURL(/\/conformance/);
|
|
await expect(
|
|
page.locator(".z-\\[9999\\]"),
|
|
).not.toBeVisible({ timeout: 10000 });
|
|
await expect(page.getByText("Rule Settings")).toBeVisible();
|
|
});
|
|
|
|
test("shows back arrow to return to Files", async ({ page }) => {
|
|
await expect(page.locator("#backPage")).toBeVisible();
|
|
await expect(
|
|
page.locator("#backPage"),
|
|
).toHaveAttribute("href", "/files");
|
|
});
|
|
});
|
|
|
|
test.describe("navigating from Performance page", () => {
|
|
test.beforeEach(async ({ page }) => {
|
|
await page.goto("/discover/log/297310264/performance");
|
|
await expect(
|
|
page.locator(".chart-container, canvas").first(),
|
|
).toBeVisible();
|
|
await expect(
|
|
page.locator(".z-\\[9999\\]"),
|
|
).not.toBeVisible({ timeout: 10000 });
|
|
});
|
|
|
|
test("clicking MAP tab navigates to map page", async ({ page }) => {
|
|
await page.locator(".nav-item", { hasText: "MAP" }).click();
|
|
await expect(page).toHaveURL(/\/map/);
|
|
await expect(page.locator("#cy")).toBeVisible();
|
|
});
|
|
|
|
test("clicking CONFORMANCE tab navigates to conformance page", async ({
|
|
page,
|
|
}) => {
|
|
await page.locator(".nav-item", { hasText: "CONFORMANCE" }).click();
|
|
await expect(page).toHaveURL(/\/conformance/);
|
|
await expect(
|
|
page.locator(".z-\\[9999\\]"),
|
|
).not.toBeVisible({ timeout: 10000 });
|
|
await expect(page.getByText("Rule Settings")).toBeVisible();
|
|
});
|
|
});
|
|
|
|
test.describe("navigating from Conformance page", () => {
|
|
test.beforeEach(async ({ page }) => {
|
|
await page.goto("/discover/log/297310264/conformance");
|
|
await expect(
|
|
page.locator(".p-radiobutton, [class*=conformance]").first(),
|
|
).toBeVisible();
|
|
await expect(
|
|
page.locator(".z-\\[9999\\]"),
|
|
).not.toBeVisible({ timeout: 10000 });
|
|
});
|
|
|
|
test("clicking MAP tab navigates to map page", async ({ page }) => {
|
|
await page.locator(".nav-item", { hasText: "MAP" }).click();
|
|
await expect(page).toHaveURL(/\/map/);
|
|
await expect(page.locator("#cy")).toBeVisible();
|
|
});
|
|
|
|
test("clicking PERFORMANCE tab navigates to performance page", async ({
|
|
page,
|
|
}) => {
|
|
await page.locator(".nav-item", { hasText: "PERFORMANCE" }).click();
|
|
await expect(page).toHaveURL(/\/performance/);
|
|
await expect(
|
|
page.locator(".z-\\[9999\\]"),
|
|
).not.toBeVisible({ timeout: 10000 });
|
|
await expect(page.getByText("Time Usage").first()).toBeVisible();
|
|
});
|
|
});
|
|
});
|