diff --git a/.dockerignore b/.dockerignore index 7b5f75ca0..04e509cd3 100644 --- a/.dockerignore +++ b/.dockerignore @@ -15,5 +15,4 @@ TODO.md # Sibling projects / test harness - not part of the webmail image examples/ integration/ -e2e/ **/node_modules diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0f4627209..bd80fe888 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -85,7 +85,6 @@ These checks run automatically on commit via Husky pre-commit hooks. | **Unit** | `npx vitest run` | Vitest + jsdom. Tests live in `__tests__/` folders next to the code | | **Translations** | `npm run test:translations` | Locale files checked for structural drift against English | | **Integration** | `npm run test:integration` | Playwright against a real Stalwart server in Docker | -| **E2E smoke** | `npx playwright test` | UI smoke tests against `npm run dev` | Run a single unit test file with `npx vitest run lib/__tests__/.test.ts`, or `npx vitest` to watch. @@ -240,7 +239,6 @@ webmail/ ├── locales/ # Translation files, one directory per locale ├── stores/ # Zustand state stores ├── public/ # Static assets and branding -├── e2e/ # Playwright smoke tests (against `npm run dev`) └── integration/ # Dockerized Stalwart + Playwright suite ``` diff --git a/e2e/contacts.spec.ts b/e2e/contacts.spec.ts deleted file mode 100644 index 4570907b5..000000000 --- a/e2e/contacts.spec.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { test, expect } from '@playwright/test'; - -test.describe('Contacts', () => { - test.skip('navigates to contacts page', async ({ page }) => { - await page.goto('/en/contacts'); - await expect(page.locator('text=title')).toBeVisible(); - }); - - test.skip('creates a new contact', async ({ page }) => { - await page.goto('/en/contacts'); - await page.click('text=create_new'); - await page.fill('input[placeholder="given_name"]', 'Test'); - await page.fill('input[placeholder="surname"]', 'User'); - await page.fill('input[type="email"]', 'test@example.com'); - await page.click('button[type="submit"]'); - }); -}); diff --git a/e2e/email.spec.ts b/e2e/email.spec.ts deleted file mode 100644 index b71aaa833..000000000 --- a/e2e/email.spec.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { test, expect } from '@playwright/test'; - -test.describe('Email', () => { - test.skip('loads inbox', async ({ page }) => { - await page.goto('/en'); - await expect(page.locator('[data-testid="email-list"]')).toBeVisible({ timeout: 15000 }); - }); - - test.skip('opens email from list', async ({ page }) => { - await page.goto('/en'); - const firstEmail = page.locator('[data-testid="email-list-item"]').first(); - await firstEmail.click(); - await expect(page.locator('[data-testid="email-viewer"]')).toBeVisible(); - }); - - test.skip('composes new email', async ({ page }) => { - await page.goto('/en'); - await page.keyboard.press('c'); - await expect(page.locator('[data-testid="email-composer"]')).toBeVisible(); - }); -}); diff --git a/e2e/login.spec.ts b/e2e/login.spec.ts deleted file mode 100644 index 9c21d62ba..000000000 --- a/e2e/login.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { test, expect } from '@playwright/test'; - -test.describe('Login', () => { - test('loads login page', async ({ page }) => { - await page.goto('/'); - await expect(page.locator('input[type="text"]')).toBeVisible(); - await expect(page.locator('input[type="password"]')).toBeVisible(); - }); - - test('shows error on invalid credentials', async ({ page }) => { - await page.goto('/'); - await page.fill('input[type="text"]', 'invalid@test.com'); - await page.fill('input[type="password"]', 'wrongpassword'); - await page.click('button[type="submit"]'); - await expect(page.locator('[role="alert"], .text-red-600, .text-destructive')).toBeVisible({ timeout: 10000 }); - }); - - test.skip('logs in with valid credentials', async ({ page }) => { - await page.goto('/'); - await page.fill('input[type="text"]', process.env.TEST_USER || ''); - await page.fill('input[type="password"]', process.env.TEST_PASS || ''); - await page.click('button[type="submit"]'); - await expect(page).toHaveURL(/\/en/, { timeout: 15000 }); - }); -}); diff --git a/eslint.config.mjs b/eslint.config.mjs index e496a7979..7e488c870 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -85,7 +85,6 @@ export default [ "public/**/*.js", "*.config.js", "*.config.mjs", - "e2e/**", "local-data/**/*.mjs", "benchmark/**", "examples/**", diff --git a/playwright.config.ts b/playwright.config.ts deleted file mode 100644 index cdb7336fa..000000000 --- a/playwright.config.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { defineConfig } from '@playwright/test'; - -export default defineConfig({ - testDir: './e2e', - timeout: 30000, - retries: 0, - use: { - baseURL: 'http://localhost:3000', - screenshot: 'only-on-failure', - trace: 'retain-on-failure', - }, - projects: [ - { name: 'chromium', use: { browserName: 'chromium' } }, - ], - webServer: { - command: 'npm run dev', - port: 3000, - reuseExistingServer: true, - }, -}); diff --git a/playwright.integration.config.ts b/playwright.integration.config.ts index fa296df2e..35186f842 100644 --- a/playwright.integration.config.ts +++ b/playwright.integration.config.ts @@ -2,8 +2,7 @@ import { defineConfig } from '@playwright/test'; /** * Integration test config: drives the containerised webmail (+ Stalwart) stack - * managed by integration/tests/global-setup.ts. Distinct from the root - * playwright.config.ts (fast UI smoke tests against `npm run dev`). + * managed by integration/tests/global-setup.ts. * * Run: npx playwright test -c playwright.integration.config.ts */ diff --git a/public/apple-touch-icon-120x120.png b/public/apple-touch-icon-120x120.png deleted file mode 100644 index ff841ef4b..000000000 Binary files a/public/apple-touch-icon-120x120.png and /dev/null differ diff --git a/public/apple-touch-icon-152x152.png b/public/apple-touch-icon-152x152.png deleted file mode 100644 index e7732130c..000000000 Binary files a/public/apple-touch-icon-152x152.png and /dev/null differ diff --git a/public/apple-touch-icon-167x167.png b/public/apple-touch-icon-167x167.png deleted file mode 100644 index 03e902144..000000000 Binary files a/public/apple-touch-icon-167x167.png and /dev/null differ diff --git a/public/apple-touch-icon-180x180.png b/public/apple-touch-icon-180x180.png deleted file mode 100644 index 6603576b3..000000000 Binary files a/public/apple-touch-icon-180x180.png and /dev/null differ diff --git a/public/branding/Bulwark_Favicon.png b/public/branding/Bulwark_Favicon.png deleted file mode 100644 index 0a9e1676e..000000000 Binary files a/public/branding/Bulwark_Favicon.png and /dev/null differ diff --git a/public/branding/Bulwark_Icon_App.svg b/public/branding/Bulwark_Icon_App.svg deleted file mode 100644 index 4b4fae760..000000000 --- a/public/branding/Bulwark_Icon_App.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/public/branding/Bulwark_Logo_Dark.png b/public/branding/Bulwark_Logo_Dark.png deleted file mode 100644 index 8913c8ef8..000000000 Binary files a/public/branding/Bulwark_Logo_Dark.png and /dev/null differ diff --git a/public/branding/Bulwark_Logo_Dark.svg b/public/branding/Bulwark_Logo_Dark.svg deleted file mode 100644 index f1c5afc3d..000000000 --- a/public/branding/Bulwark_Logo_Dark.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/public/branding/Bulwark_Logo_White.png b/public/branding/Bulwark_Logo_White.png deleted file mode 100644 index 896d4967a..000000000 Binary files a/public/branding/Bulwark_Logo_White.png and /dev/null differ diff --git a/public/file.svg b/public/file.svg deleted file mode 100644 index 004145cdd..000000000 --- a/public/file.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/globe.svg b/public/globe.svg deleted file mode 100644 index 567f17b0d..000000000 --- a/public/globe.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/next.svg b/public/next.svg deleted file mode 100644 index 5174b28c5..000000000 --- a/public/next.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/window.svg b/public/window.svg deleted file mode 100644 index b2b2a44f6..000000000 --- a/public/window.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/vitest.config.ts b/vitest.config.ts index c43467197..051e84fbb 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -14,7 +14,7 @@ export default defineConfig({ // must be globbed at any depth or the nested repos/*/node_modules trees // get collected too. // scripts/lite/smoke/** is the Playwright smoke for the static Lite export. - exclude: ['e2e/**', 'integration/**', 'examples/**', 'repos/**', '**/node_modules/**', '.next/**', 'out/**', 'scripts/lite/smoke/**'], + exclude: ['integration/**', 'examples/**', 'repos/**', '**/node_modules/**', '.next/**', 'out/**', 'scripts/lite/smoke/**'], }, resolve: { alias: {