diff --git a/playwright.config.ts b/playwright.config.ts new file mode 100644 index 0000000..02deef3 --- /dev/null +++ b/playwright.config.ts @@ -0,0 +1,14 @@ +import { defineConfig } from '@playwright/test'; + +export default defineConfig({ + testDir: 'tests/e2e', + timeout: 15000, + webServer: { + command: 'npm run dev', + port: 5173, + reuseExistingServer: true + }, + use: { + baseURL: 'http://localhost:5173' + } +}); diff --git a/tests/e2e/admin-guard.test.ts b/tests/e2e/admin-guard.test.ts new file mode 100644 index 0000000..d6f5dfe --- /dev/null +++ b/tests/e2e/admin-guard.test.ts @@ -0,0 +1,11 @@ +import { test, expect } from '@playwright/test'; + +test('admin redirects to login when not authenticated', async ({ page }) => { + await page.goto('/admin'); + await expect(page).toHaveURL(/\/login/); +}); + +test('foster redirects to login when not authenticated', async ({ page }) => { + await page.goto('/foster'); + await expect(page).toHaveURL(/\/login/); +}); diff --git a/tests/e2e/public-pages.test.ts b/tests/e2e/public-pages.test.ts new file mode 100644 index 0000000..41e0880 --- /dev/null +++ b/tests/e2e/public-pages.test.ts @@ -0,0 +1,16 @@ +import { test, expect } from '@playwright/test'; + +test('home page loads', async ({ page }) => { + await page.goto('/'); + await expect(page).toHaveTitle(/./); +}); + +test('pets page loads', async ({ page }) => { + await page.goto('/pets'); + await expect(page.locator('h1')).toBeVisible(); +}); + +test('login page loads', async ({ page }) => { + await page.goto('/login'); + await expect(page.locator('form')).toBeVisible(); +});