Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 6 additions & 21 deletions src/ui/e2e/journeys/compact-mode-toggle.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,8 @@
// SPDX-License-Identifier: Apache-2.0

import { test, expect } from "@playwright/test";
import {
createPoolResponse,
PoolStatus,
} from "@/mocks/factories";
import {
setupDefaultMocks,
setupPools,
setupProfile,
} from "@/e2e/utils/mock-setup";
import { createPoolResponse, PoolStatus } from "@/mocks/factories";
import { setupDefaultMocks, setupPools, setupProfile } from "@/e2e/utils/mock-setup";

/**
* Compact Mode Toggle Tests
Expand Down Expand Up @@ -68,9 +61,7 @@ test.describe("Compact Mode Toggle — Pools Page", () => {
await page.waitForLoadState("networkidle");

// ASSERT — default is comfortable (not compact)
await expect(
page.getByRole("button", { name: /currently in comfortable view/i }),
).toBeVisible();
await expect(page.getByRole("button", { name: /currently in comfortable view/i })).toBeVisible();
});

test("clicking toggle switches to compact view", async ({ page }) => {
Expand All @@ -83,9 +74,7 @@ test.describe("Compact Mode Toggle — Pools Page", () => {
await toggleButton.click();

// ASSERT — now in compact mode
await expect(
page.getByRole("button", { name: /currently in compact view/i }),
).toBeVisible();
await expect(page.getByRole("button", { name: /currently in compact view/i })).toBeVisible();
});

test("clicking toggle twice returns to comfortable view", async ({ page }) => {
Expand All @@ -96,16 +85,12 @@ test.describe("Compact Mode Toggle — Pools Page", () => {
// Toggle to compact
const toggleButton = page.getByRole("button", { name: /currently in comfortable view/i });
await toggleButton.click();
await expect(
page.getByRole("button", { name: /currently in compact view/i }),
).toBeVisible();
await expect(page.getByRole("button", { name: /currently in compact view/i })).toBeVisible();

// Toggle back to comfortable
await page.getByRole("button", { name: /currently in compact view/i }).click();

// ASSERT — back to comfortable
await expect(
page.getByRole("button", { name: /currently in comfortable view/i }),
).toBeVisible();
await expect(page.getByRole("button", { name: /currently in comfortable view/i })).toBeVisible();
});
});
27 changes: 6 additions & 21 deletions src/ui/e2e/journeys/cross-page-navigation.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,8 @@
// SPDX-License-Identifier: Apache-2.0

import { test, expect } from "@playwright/test";
import {
createPoolResponse,
PoolStatus,
} from "@/mocks/factories";
import {
setupDefaultMocks,
setupProfile,
setupPools,
} from "@/e2e/utils/mock-setup";
import { createPoolResponse, PoolStatus } from "@/mocks/factories";
import { setupDefaultMocks, setupProfile, setupPools } from "@/e2e/utils/mock-setup";

/**
* Pool Quick Links Navigation Tests
Expand Down Expand Up @@ -51,9 +44,7 @@ test.describe("Pool Quick Links Navigation", () => {
);
});

test("resources quick link navigates to resources filtered by pool", async ({
page,
}) => {
test("resources quick link navigates to resources filtered by pool", async ({ page }) => {
// ACT
await page.goto("/pools?all=true&view=prod-gpu");
await page.waitForLoadState("networkidle");
Expand All @@ -73,9 +64,7 @@ test.describe("Pool Quick Links Navigation", () => {
await expect(page).toHaveURL(/prod-gpu/);
});

test("workflows quick link navigates to workflows filtered by pool", async ({
page,
}) => {
test("workflows quick link navigates to workflows filtered by pool", async ({ page }) => {
// ACT
await page.goto("/pools?all=true&view=prod-gpu");
await page.waitForLoadState("networkidle");
Expand All @@ -92,9 +81,7 @@ test.describe("Pool Quick Links Navigation", () => {
await expect(page).toHaveURL(/prod-gpu/);
});

test("occupancy quick link navigates to occupancy filtered by pool", async ({
page,
}) => {
test("occupancy quick link navigates to occupancy filtered by pool", async ({ page }) => {
// ACT
await page.goto("/pools?all=true&view=prod-gpu");
await page.waitForLoadState("networkidle");
Expand All @@ -111,9 +98,7 @@ test.describe("Pool Quick Links Navigation", () => {
await expect(page).toHaveURL(/prod-gpu/);
});

test("quick links show correct href attributes before clicking", async ({
page,
}) => {
test("quick links show correct href attributes before clicking", async ({ page }) => {
// ACT
await page.goto("/pools?all=true&view=prod-gpu");
await page.waitForLoadState("networkidle");
Expand Down
14 changes: 2 additions & 12 deletions src/ui/e2e/journeys/dashboard-errors.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,18 +15,8 @@
// SPDX-License-Identifier: Apache-2.0

import { test, expect } from "@playwright/test";
import {
createPoolResponse,
createWorkflowsResponse,
PoolStatus,
WorkflowStatus,
} from "@/mocks/factories";
import {
setupDefaultMocks,
setupProfile,
setupPools,
setupWorkflows,
} from "@/e2e/utils/mock-setup";
import { createPoolResponse, createWorkflowsResponse, PoolStatus, WorkflowStatus } from "@/mocks/factories";
import { setupDefaultMocks, setupProfile, setupPools, setupWorkflows } from "@/e2e/utils/mock-setup";

/**
* Dashboard Error & Edge Case Tests
Expand Down
39 changes: 6 additions & 33 deletions src/ui/e2e/journeys/dashboard.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,18 +15,8 @@
// SPDX-License-Identifier: Apache-2.0

import { test, expect } from "@playwright/test";
import {
createPoolResponse,
createWorkflowsResponse,
PoolStatus,
WorkflowStatus,
} from "@/mocks/factories";
import {
setupDefaultMocks,
setupPools,
setupProfile,
setupWorkflows,
} from "@/e2e/utils/mock-setup";
import { createPoolResponse, createWorkflowsResponse, PoolStatus, WorkflowStatus } from "@/mocks/factories";
import { setupDefaultMocks, setupPools, setupProfile, setupWorkflows } from "@/e2e/utils/mock-setup";

/**
* Dashboard Journey Tests
Expand Down Expand Up @@ -109,9 +99,7 @@ test.describe("Dashboard Recent Workflows", () => {
await setupPools(page, createPoolResponse([{ name: "prod", status: PoolStatus.ONLINE }]));
await setupWorkflows(
page,
createWorkflowsResponse([
{ name: "recent-e2e-workflow", status: WorkflowStatus.COMPLETED, user: "test-user" },
]),
createWorkflowsResponse([{ name: "recent-e2e-workflow", status: WorkflowStatus.COMPLETED, user: "test-user" }]),
);

// ACT
Expand Down Expand Up @@ -170,12 +158,7 @@ test.describe("Dashboard Stat Card Links", () => {
test("Active Workflows stat card links to workflows filtered by RUNNING status", async ({ page }) => {
// ARRANGE
await setupPools(page, createPoolResponse([{ name: "prod", status: PoolStatus.ONLINE }]));
await setupWorkflows(
page,
createWorkflowsResponse([
{ name: "running-1", status: WorkflowStatus.RUNNING },
]),
);
await setupWorkflows(page, createWorkflowsResponse([{ name: "running-1", status: WorkflowStatus.RUNNING }]));

// ACT
await page.goto("/");
Expand Down Expand Up @@ -276,12 +259,7 @@ test.describe("Dashboard Edge Cases", () => {
test("failed workflows stat card links to workflows filtered by FAILED status", async ({ page }) => {
// ARRANGE
await setupPools(page, createPoolResponse([{ name: "prod", status: PoolStatus.ONLINE }]));
await setupWorkflows(
page,
createWorkflowsResponse([
{ name: "failed-1", status: WorkflowStatus.FAILED },
]),
);
await setupWorkflows(page, createWorkflowsResponse([{ name: "failed-1", status: WorkflowStatus.FAILED }]));

// ACT
await page.goto("/");
Expand All @@ -299,12 +277,7 @@ test.describe("Dashboard Edge Cases", () => {
test("completed workflows stat card links to workflows filtered by COMPLETED status", async ({ page }) => {
// ARRANGE
await setupPools(page, createPoolResponse([{ name: "prod", status: PoolStatus.ONLINE }]));
await setupWorkflows(
page,
createWorkflowsResponse([
{ name: "completed-1", status: WorkflowStatus.COMPLETED },
]),
);
await setupWorkflows(page, createWorkflowsResponse([{ name: "completed-1", status: WorkflowStatus.COMPLETED }]));

// ACT
await page.goto("/");
Expand Down
5 changes: 1 addition & 4 deletions src/ui/e2e/journeys/display-mode-toggle.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,7 @@
// SPDX-License-Identifier: Apache-2.0

import { test, expect } from "@playwright/test";
import {
createResourcesResponse,
BackendResourceType,
} from "@/mocks/factories";
import { createResourcesResponse, BackendResourceType } from "@/mocks/factories";
import { setupDefaultMocks, setupResources, setupProfile } from "@/e2e/utils/mock-setup";

/**
Expand Down
8 changes: 1 addition & 7 deletions src/ui/e2e/journeys/empty-states.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,7 @@ import {
WorkflowStatus,
PoolStatus,
} from "@/mocks/factories";
import {
setupDefaultMocks,
setupProfile,
setupWorkflows,
setupPools,
setupResources,
} from "@/e2e/utils/mock-setup";
import { setupDefaultMocks, setupProfile, setupWorkflows, setupPools, setupResources } from "@/e2e/utils/mock-setup";

/**
* Empty State Tests
Expand Down
24 changes: 5 additions & 19 deletions src/ui/e2e/journeys/log-viewer-recent.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,7 @@
// SPDX-License-Identifier: Apache-2.0

import { test, expect } from "@playwright/test";
import {
setupDefaultMocks,
setupProfile,
} from "@/e2e/utils/mock-setup";
import { setupDefaultMocks, setupProfile } from "@/e2e/utils/mock-setup";

/**
* Log Viewer Recent Workflows Tests
Expand Down Expand Up @@ -81,10 +78,7 @@ test.describe("Log Viewer Recent Workflows", () => {
// ARRANGE
await page.goto("/log-viewer");
await page.evaluate(() => {
localStorage.setItem(
"osmo:recent-workflows",
JSON.stringify(["wf-1", "wf-2"]),
);
localStorage.setItem("osmo:recent-workflows", JSON.stringify(["wf-1", "wf-2"]));
});
await page.reload();
await page.waitForLoadState("networkidle");
Expand All @@ -103,10 +97,7 @@ test.describe("Log Viewer Recent Workflows", () => {
// ARRANGE
await page.goto("/log-viewer");
await page.evaluate(() => {
localStorage.setItem(
"osmo:recent-workflows",
JSON.stringify(["my-recent-workflow"]),
);
localStorage.setItem("osmo:recent-workflows", JSON.stringify(["my-recent-workflow"]));
});
await page.reload();
await page.waitForLoadState("networkidle");
Expand All @@ -122,10 +113,7 @@ test.describe("Log Viewer Recent Workflows", () => {
// ARRANGE
await page.goto("/log-viewer");
await page.evaluate(() => {
localStorage.setItem(
"osmo:recent-workflows",
JSON.stringify(["keep-this", "remove-this"]),
);
localStorage.setItem("osmo:recent-workflows", JSON.stringify(["keep-this", "remove-this"]));
});
await page.reload();
await page.waitForLoadState("networkidle");
Expand All @@ -137,9 +125,7 @@ test.describe("Log Viewer Recent Workflows", () => {
// ACT — hover over "remove-this" to make remove button visible, then click it
const removeThisEntry = page.getByText("remove-this").first();
await removeThisEntry.hover();
await page
.getByRole("button", { name: /remove remove-this from recent workflows/i })
.click();
await page.getByRole("button", { name: /remove remove-this from recent workflows/i }).click();

// ASSERT — "remove-this" is gone, "keep-this" remains
await expect(page.getByText("remove-this")).not.toBeVisible();
Expand Down
5 changes: 1 addition & 4 deletions src/ui/e2e/journeys/log-viewer.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,7 @@
// SPDX-License-Identifier: Apache-2.0

import { test, expect } from "@playwright/test";
import {
setupDefaultMocks,
setupProfile,
} from "@/e2e/utils/mock-setup";
import { setupDefaultMocks, setupProfile } from "@/e2e/utils/mock-setup";

/**
* Log Viewer Page Journey Tests
Expand Down
5 changes: 1 addition & 4 deletions src/ui/e2e/journeys/not-found-page.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -85,10 +85,7 @@ test.describe("Not Found Page Content", () => {
await expect(dashboardAction).toBeVisible();

// Click and wait for navigation
await Promise.all([
page.waitForURL(/\/$/),
dashboardAction.click(),
]);
await Promise.all([page.waitForURL(/\/$/), dashboardAction.click()]);

// ASSERT — navigated to home
await expect(page).toHaveURL(/\/$/);
Expand Down
14 changes: 2 additions & 12 deletions src/ui/e2e/journeys/occupancy-toolbar.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -140,12 +140,7 @@ test.describe("Occupancy Group By Toggle URL State", () => {

test("clicking By User updates URL with groupBy=user", async ({ page }) => {
// ARRANGE
await setupOccupancy(
page,
createOccupancySummaries([
{ user: "alice", pool: "prod", gpu: 4 },
]),
);
await setupOccupancy(page, createOccupancySummaries([{ user: "alice", pool: "prod", gpu: 4 }]));

// ACT
await page.goto("/occupancy");
Expand All @@ -160,12 +155,7 @@ test.describe("Occupancy Group By Toggle URL State", () => {

test("clicking By Pool after By User removes groupBy from URL", async ({ page }) => {
// ARRANGE
await setupOccupancy(
page,
createOccupancySummaries([
{ user: "alice", pool: "prod", gpu: 4 },
]),
);
await setupOccupancy(page, createOccupancySummaries([{ user: "alice", pool: "prod", gpu: 4 }]));

// ACT
await page.goto("/occupancy?groupBy=user");
Expand Down
Loading
Loading