Steuerkram/tests/e2e/global-setup.js
fds2610-bot 7cea573ffc Fix #e2e: E2E-Tests ergänzt, /accounts/new und /assets/new lieferten HTTP 500
Steuerkram an den e2e-runner angebunden (tests/e2e/, 44 Playwright-Tests).
Der erste Smoke-Lauf fand zwei Seiten mit HTTP 500: AccountController::create
las $_GET['from'] ungeprüft, assets/form.php nutzte $testMode und
$defaultKontoId außerhalb des Bearbeiten-Zweigs. Beides war bis zur
Fehler-Härtung (#142) nur eine stille Warning.

Test 67 räumt sein Belegverzeichnis jetzt mit ab - es blieb als root-eigenes
Verzeichnis liegen und blockierte spätere echte Uploads mit HTTP 500.

Test 77 (neu) sichert die Löschsperre von Beleg::delete() ab.
2026-08-02 11:58:33 +02:00

48 lines
1.9 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// @ts-check
// Einmalig per Login-Formular anmelden und den Session-Zustand (Cookies) als
// storageState speichern — alle Tests starten damit eingeloggt.
//
// Steuerkram sperrt einen Account nach mehreren Fehlversuchen (Login-Throttle,
// siehe tests/53_LoginThrottleTest.php). Ein falsches Passwort hier würde den
// Testnutzer also sperren – deshalb bricht das Setup mit einer klaren Meldung ab,
// statt es erneut zu versuchen.
const { chromium } = require('@playwright/test')
const { BASE_URL, E2E_USER, E2E_PASSWORD } = require('./helpers/env')
module.exports = async () => {
const browser = await chromium.launch()
const page = await browser.newPage({ baseURL: BASE_URL })
await page.goto('/login')
// Ist noch kein Benutzer angelegt, zeigt Steuerkram die Ersteinrichtung.
// Dann liefe der Login ins Leere – lieber sofort verständlich abbrechen.
if (await page.locator('#password2').count() > 0) {
await browser.close()
throw new Error(
`Die Instanz unter ${BASE_URL} ist im Ersteinrichtungs-Modus (kein Benutzer vorhanden). ` +
'Bitte zuerst einen Benutzer anlegen, dann scripts/e2e-user.php ausführen.'
)
}
await page.fill('#username', E2E_USER)
await page.fill('#password', E2E_PASSWORD)
await page.click('form[action="/login"] button[type="submit"]')
// Erfolgreicher Login = Redirect weg von /login (Dashboard).
try {
await page.waitForURL(url => !url.pathname.startsWith('/login'), { timeout: 15000 })
} catch {
const fehler = await page.locator('.flash-error').first().textContent().catch(() => null)
await browser.close()
throw new Error(
`Login als "${E2E_USER}" auf ${BASE_URL} fehlgeschlagen` +
(fehler ? `: ${fehler.trim()}` : '.') +
'\nTestnutzer anlegen: docker compose exec web php scripts/e2e-user.php' +
'\n(Abweichende Zugangsdaten via E2E_USER / E2E_PASSWORD.)'
)
}
await page.context().storageState({ path: '.auth/user.json' })
await browser.close()
}