Auth with passwords + Playwright E2E tests + PostHog analytics

- bcrypt password hashing in auth (register, login, change-password)
- Login/register pages with password fields
- Profile update + OAuth placeholder endpoints
- Playwright test suite: auth, pages, API (3 test files)
- PostHog Docker analytics on :8010

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-29 14:26:51 +00:00
parent b4b8439f80
commit dd995d9c0f
13 changed files with 439 additions and 16 deletions

34
tests/tasks.spec.ts Normal file
View File

@@ -0,0 +1,34 @@
import { test, expect } from '@playwright/test';
test.describe('Tasks', () => {
test('tasks page loads', async ({ page }) => {
await page.goto('/tasks');
await page.waitForTimeout(1000);
await expect(page.locator('body')).toBeVisible();
});
test('calendar page loads', async ({ page }) => {
await page.goto('/calendar');
await expect(page.locator('body')).toBeVisible();
});
test('chat page loads', async ({ page }) => {
await page.goto('/chat');
await expect(page.locator('body')).toBeVisible();
});
test('goals page loads', async ({ page }) => {
await page.goto('/goals');
await expect(page.locator('body')).toBeVisible();
});
test('settings page loads', async ({ page }) => {
await page.goto('/settings');
await expect(page.locator('body')).toBeVisible();
});
test('projects page loads', async ({ page }) => {
await page.goto('/projects');
await expect(page.locator('body')).toBeVisible();
});
});