mirror of
https://github.com/AutoMaker-Org/automaker.git
synced 2026-01-30 06:12:03 +00:00
113 lines
4.0 KiB
TypeScript
113 lines
4.0 KiB
TypeScript
import { test, expect } from "@playwright/test";
|
|
|
|
test.describe("Settings - API Key Management", () => {
|
|
test("can navigate to settings page", async ({ page }) => {
|
|
await page.goto("/");
|
|
|
|
// Click settings button in sidebar
|
|
await page.getByTestId("settings-button").click();
|
|
|
|
// Should show settings view
|
|
await expect(page.getByTestId("settings-view")).toBeVisible();
|
|
await expect(page.getByRole("heading", { name: "Settings" })).toBeVisible();
|
|
await expect(page.getByText("API Keys", { exact: true })).toBeVisible();
|
|
});
|
|
|
|
test("shows Anthropic and Google API key inputs", async ({ page }) => {
|
|
await page.goto("/");
|
|
await page.getByTestId("settings-button").click();
|
|
|
|
// Check input fields exist
|
|
await expect(page.getByTestId("anthropic-api-key-input")).toBeVisible();
|
|
await expect(page.getByTestId("google-api-key-input")).toBeVisible();
|
|
});
|
|
|
|
test("can enter and save Anthropic API key", async ({ page }) => {
|
|
await page.goto("/");
|
|
await page.getByTestId("settings-button").click();
|
|
|
|
// Enter API key
|
|
await page.getByTestId("anthropic-api-key-input").fill("sk-ant-test-key-123");
|
|
|
|
// Save
|
|
await page.getByTestId("save-settings").click();
|
|
|
|
// Should show saved confirmation
|
|
await expect(page.getByText("Saved!")).toBeVisible();
|
|
|
|
// Reload page and verify key persists
|
|
await page.reload();
|
|
await page.getByTestId("settings-button").click();
|
|
|
|
// Toggle visibility to see the key
|
|
await page.getByTestId("toggle-anthropic-visibility").click();
|
|
await expect(page.getByTestId("anthropic-api-key-input")).toHaveValue("sk-ant-test-key-123");
|
|
});
|
|
|
|
test("can enter and save Google API key", async ({ page }) => {
|
|
await page.goto("/");
|
|
await page.getByTestId("settings-button").click();
|
|
|
|
// Enter API key
|
|
await page.getByTestId("google-api-key-input").fill("AIzaSyTest123");
|
|
|
|
// Save
|
|
await page.getByTestId("save-settings").click();
|
|
|
|
// Reload page and verify key persists
|
|
await page.reload();
|
|
await page.getByTestId("settings-button").click();
|
|
|
|
// Toggle visibility
|
|
await page.getByTestId("toggle-google-visibility").click();
|
|
await expect(page.getByTestId("google-api-key-input")).toHaveValue("AIzaSyTest123");
|
|
});
|
|
|
|
test("API key inputs are password type by default", async ({ page }) => {
|
|
await page.goto("/");
|
|
await page.getByTestId("settings-button").click();
|
|
|
|
// Check input types are password
|
|
await expect(page.getByTestId("anthropic-api-key-input")).toHaveAttribute("type", "password");
|
|
await expect(page.getByTestId("google-api-key-input")).toHaveAttribute("type", "password");
|
|
});
|
|
|
|
test("can toggle API key visibility", async ({ page }) => {
|
|
await page.goto("/");
|
|
await page.getByTestId("settings-button").click();
|
|
|
|
// Initially password type
|
|
await expect(page.getByTestId("anthropic-api-key-input")).toHaveAttribute("type", "password");
|
|
|
|
// Toggle visibility
|
|
await page.getByTestId("toggle-anthropic-visibility").click();
|
|
|
|
// Now should be text type
|
|
await expect(page.getByTestId("anthropic-api-key-input")).toHaveAttribute("type", "text");
|
|
|
|
// Toggle back
|
|
await page.getByTestId("toggle-anthropic-visibility").click();
|
|
await expect(page.getByTestId("anthropic-api-key-input")).toHaveAttribute("type", "password");
|
|
});
|
|
|
|
test("can navigate back to home from settings", async ({ page }) => {
|
|
await page.goto("/");
|
|
await page.getByTestId("settings-button").click();
|
|
|
|
// Click back to home
|
|
await page.getByTestId("back-to-home").click();
|
|
|
|
// Should be back on welcome view
|
|
await expect(page.getByTestId("welcome-view")).toBeVisible();
|
|
});
|
|
|
|
test("shows security notice about local storage", async ({ page }) => {
|
|
await page.goto("/");
|
|
await page.getByTestId("settings-button").click();
|
|
|
|
// Should show security notice
|
|
await expect(page.getByText("Security Notice")).toBeVisible();
|
|
await expect(page.getByText(/stored in your browser's local storage/i)).toBeVisible();
|
|
});
|
|
});
|