test(web): move dashboard tracer-bullet into smoke/ and harden Playwright config

This commit is contained in:
Anish Sarkar 2026-05-06 17:20:14 +05:30
parent 87dd5af259
commit a2976ee0b6
3 changed files with 25 additions and 24 deletions

View file

@ -19,7 +19,7 @@ const baseURL = process.env.PLAYWRIGHT_BASE_URL || `http://localhost:${PORT}`;
export default defineConfig({ export default defineConfig({
testDir: "./tests", testDir: "./tests",
timeout: 30_000, timeout: 30_000,
expect: { timeout: 5_000 }, expect: { timeout: 15_000 },
fullyParallel: true, fullyParallel: true,
forbidOnly: !!process.env.CI, forbidOnly: !!process.env.CI,
retries: process.env.CI ? 2 : 0, retries: process.env.CI ? 2 : 0,
@ -53,10 +53,11 @@ export default defineConfig({
webServer: process.env.PLAYWRIGHT_NO_WEB_SERVER webServer: process.env.PLAYWRIGHT_NO_WEB_SERVER
? undefined ? undefined
: { : {
command: "pnpm dev", // Pin to webpack dev (Turbopack has caused stale-lock panics in E2E).
command: "pnpm exec next dev",
url: `http://localhost:${PORT}`, url: `http://localhost:${PORT}`,
reuseExistingServer: !process.env.CI, reuseExistingServer: !process.env.CI,
timeout: 120_000, timeout: 180_000,
env: { env: {
NEXT_PUBLIC_FASTAPI_BACKEND_URL: `http://localhost:${BACKEND_PORT}`, NEXT_PUBLIC_FASTAPI_BACKEND_URL: `http://localhost:${BACKEND_PORT}`,
NEXT_PUBLIC_FASTAPI_BACKEND_AUTH_TYPE: "LOCAL", NEXT_PUBLIC_FASTAPI_BACKEND_AUTH_TYPE: "LOCAL",

View file

@ -1,21 +0,0 @@
import { expect, test } from "@playwright/test";
/**
* Tracer-bullet test: proves the entire E2E pipeline works end-to-end.
*
* Verifies:
* - Web server is reachable
* - Auth setup ran successfully (storageState contains valid token)
* - Dashboard route renders for an authenticated user
*
* Keep this test minimal. Product-specific behaviour belongs in dedicated
* spec files (new-chat, search-spaces, editor-panel, etc.).
*/
test.describe("Dashboard", () => {
test("loads dashboard with sidebar navigation for authenticated user", async ({ page }) => {
await page.goto("/dashboard");
await expect(page).toHaveURL(/\/dashboard/);
await expect(page.getByRole("navigation").first()).toBeVisible();
});
});

View file

@ -0,0 +1,21 @@
import { expect, test } from "@playwright/test";
/**
* Tracer-bullet smoke test: proves the entire E2E pipeline is wired up.
*
* Verifies:
* - Web server is reachable
* - tests/auth.setup.ts ran and stored a valid bearer token
* - Dashboard route renders for an authenticated user
*
* Keep minimal. Connector- or feature-specific behaviour belongs under
* tests/connectors/ or tests/<feature>/.
*/
test.describe("Smoke", () => {
test("dashboard loads for authenticated user", async ({ page }) => {
await page.goto("/dashboard");
// Sidebar is <aside> (role=complementary); its visibility implies redirect + auth fetch.
await expect(page.getByRole("complementary").first()).toBeVisible({ timeout: 60_000 });
});
});