- e2e/reader.spec.js: ein Test-EPUB (e2e/make_epub.py) hochladen, öffnen ohne zu senden, lesen und Lesestand nach Neuladen, Fußnote, Markierung und Notizleiste, Hell/Dunkel samt Reader, alle Tabs ohne Seitenfehler. - e2e/env.js: E2E_PORT und E2E_PYTHON; nie einen laufenden Server wiederverwenden (dahinter läge eine echte Datenbank). - CI: eigener Job e2e (Playwright + Chromium); blockiert den Docker-Build nicht. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
38 lines
1.2 KiB
JavaScript
38 lines
1.2 KiB
JavaScript
// Playwright config for diora's e2e smoke tests.
|
|
//
|
|
// Tests run against a real `manage.py runserver` instance backed by its own
|
|
// throwaway SQLite database (DIORA_DB_NAME), so they never touch the dev
|
|
// database at data/db.sqlite3. See e2e/global-setup.js for how that DB is
|
|
// migrated and seeded with a test user.
|
|
const path = require('path');
|
|
const { defineConfig, devices } = require('@playwright/test');
|
|
const { BASE_URL, PORT, PYTHON, SERVER_ENV } = require('./e2e/env');
|
|
|
|
module.exports = defineConfig({
|
|
testDir: './e2e',
|
|
fullyParallel: false,
|
|
workers: 1,
|
|
reporter: [['list']],
|
|
timeout: 30_000,
|
|
use: {
|
|
baseURL: BASE_URL,
|
|
trace: 'retain-on-failure',
|
|
screenshot: 'only-on-failure',
|
|
},
|
|
projects: [
|
|
{
|
|
name: 'chromium',
|
|
use: { ...devices['Desktop Chrome'] },
|
|
},
|
|
],
|
|
globalSetup: require.resolve('./e2e/global-setup.js'),
|
|
webServer: {
|
|
command: `${PYTHON} manage.py runserver 127.0.0.1:${PORT} --noreload`,
|
|
url: BASE_URL + '/accounts/login/',
|
|
// Never reuse: a server already on the port has someone's real database behind it.
|
|
reuseExistingServer: false,
|
|
timeout: 30_000,
|
|
cwd: path.join(__dirname),
|
|
env: SERVER_ENV,
|
|
},
|
|
});
|