mirror of
https://github.com/AutoMaker-Org/automaker.git
synced 2026-02-03 21:03:08 +00:00
initial commit
This commit is contained in:
76
app/tests/foundation.spec.ts
Normal file
76
app/tests/foundation.spec.ts
Normal file
@@ -0,0 +1,76 @@
|
||||
import { test, expect } from "@playwright/test";
|
||||
|
||||
test.describe("Application Foundation", () => {
|
||||
test("loads the application with sidebar and welcome view", async ({ page }) => {
|
||||
await page.goto("/");
|
||||
|
||||
// Verify main container exists
|
||||
await expect(page.getByTestId("app-container")).toBeVisible();
|
||||
|
||||
// Verify sidebar is visible
|
||||
await expect(page.getByTestId("sidebar")).toBeVisible();
|
||||
|
||||
// Verify welcome view is shown by default
|
||||
await expect(page.getByTestId("welcome-view")).toBeVisible();
|
||||
});
|
||||
|
||||
test("displays Automaker title in sidebar", async ({ page }) => {
|
||||
await page.goto("/");
|
||||
|
||||
// Verify the title is visible in the sidebar (be specific to avoid matching welcome heading)
|
||||
await expect(page.getByTestId("sidebar").getByRole("heading", { name: "Automaker" })).toBeVisible();
|
||||
});
|
||||
|
||||
test("shows New Project and Open Project buttons", async ({ page }) => {
|
||||
await page.goto("/");
|
||||
|
||||
// Verify project action buttons in welcome view
|
||||
await expect(page.getByTestId("new-project-card")).toBeVisible();
|
||||
await expect(page.getByTestId("open-project-card")).toBeVisible();
|
||||
});
|
||||
|
||||
test("sidebar can be collapsed and expanded", async ({ page }) => {
|
||||
await page.goto("/");
|
||||
|
||||
const sidebar = page.getByTestId("sidebar");
|
||||
const toggleButton = page.getByTestId("toggle-sidebar");
|
||||
|
||||
// Initially sidebar should be expanded (width 256px / w-64)
|
||||
await expect(sidebar).toHaveClass(/w-64/);
|
||||
|
||||
// Click to collapse
|
||||
await toggleButton.click();
|
||||
await expect(sidebar).toHaveClass(/w-16/);
|
||||
|
||||
// Click to expand again
|
||||
await toggleButton.click();
|
||||
await expect(sidebar).toHaveClass(/w-64/);
|
||||
});
|
||||
|
||||
test("shows Web Mode indicator when running in browser", async ({ page }) => {
|
||||
await page.goto("/");
|
||||
|
||||
// When running in browser (not Electron), should show mock indicator
|
||||
await expect(page.getByText("Web Mode (Mock IPC)")).toBeVisible();
|
||||
});
|
||||
});
|
||||
|
||||
test.describe("Theme Toggle", () => {
|
||||
test("toggles between dark and light mode", async ({ page }) => {
|
||||
await page.goto("/");
|
||||
|
||||
const themeButton = page.getByTestId("toggle-theme");
|
||||
const html = page.locator("html");
|
||||
|
||||
// Initially should be in dark mode
|
||||
await expect(html).toHaveClass(/dark/);
|
||||
|
||||
// Click to switch to light mode
|
||||
await themeButton.click();
|
||||
await expect(html).not.toHaveClass(/dark/);
|
||||
|
||||
// Click to switch back to dark mode
|
||||
await themeButton.click();
|
||||
await expect(html).toHaveClass(/dark/);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user