Der Eingang des Spiegels ist die einzige Tuer, die ohne Anmeldung aufgeht. Vier Faelle: ohne Signatur, falsch signiert, zu alt, und der gute Fall — bei dem eine nicht mehr geschickte Belegung auch hier verschwinden muss. Der Testserver bekommt dafuer dasselbe Geheimnis wie der Test. Eine Pruefung, die immer uebersprungen wird, prueft nichts. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
50 lines
1.4 KiB
TypeScript
50 lines
1.4 KiB
TypeScript
import { defineConfig, devices } from '@playwright/test'
|
||
import 'dotenv/config'
|
||
import { SPIEGEL_GEHEIMNIS } from './e2e/hilfe'
|
||
|
||
const PORT = Number(process.env.E2E_PORT ?? 3100)
|
||
const BASIS = `http://127.0.0.1:${PORT}`
|
||
|
||
/**
|
||
* E2E-Tests gegen eine echte, gebaute Anwendung.
|
||
*
|
||
* Der Testserver läuft auf einem eigenen Port, damit er einer laufenden
|
||
* Entwicklungsinstanz nicht in die Quere kommt. Die Datenbank ist dieselbe wie
|
||
* im Entwicklungsbetrieb – die Tests legen nur Daten mit eigenem Präfix an und
|
||
* räumen hinter sich auf.
|
||
*/
|
||
export default defineConfig({
|
||
testDir: './e2e',
|
||
fullyParallel: false,
|
||
forbidOnly: Boolean(process.env.CI),
|
||
retries: process.env.CI ? 1 : 0,
|
||
workers: 1,
|
||
reporter: process.env.CI ? 'github' : 'list',
|
||
timeout: 30_000,
|
||
|
||
use: {
|
||
baseURL: BASIS,
|
||
locale: 'de-DE',
|
||
timezoneId: 'Europe/Berlin',
|
||
trace: 'retain-on-failure',
|
||
screenshot: 'only-on-failure',
|
||
},
|
||
|
||
projects: [{ name: 'chromium', use: { ...devices['Desktop Chrome'] } }],
|
||
|
||
webServer: {
|
||
command: 'npm run start',
|
||
url: `${BASIS}/api/health`,
|
||
reuseExistingServer: !process.env.CI,
|
||
timeout: 120_000,
|
||
env: {
|
||
PORT: String(PORT),
|
||
APP_URL: BASIS,
|
||
WEBAUTHN_ORIGIN: BASIS,
|
||
WEBAUTHN_RP_ID: '127.0.0.1',
|
||
// Ohne Geheimnis waere der Spiegel-Eingang zu und sein Test sinnlos.
|
||
SPIEGEL_GEHEIMNIS,
|
||
},
|
||
},
|
||
})
|