feat(doku): Anleitung, PDF und Ende-zu-Ende-Abnahme (#36)
Prüfung / pruefung (push) Canceled after 0s
Prüfung / e2e (push) Canceled after 0s

This commit was merged in pull request #36.
This commit is contained in:
2026-09-26 09:04:15 +00:00
parent 9bd198a531
commit fbbb634e56
104 changed files with 4527 additions and 299 deletions
+8 -13
View File
@@ -1,5 +1,6 @@
import { expect, test, type Page } from "@playwright/test";
import { expect, test } from "@playwright/test";
import "dotenv/config";
import { anmelden, SEED_TAG } from "./helfer";
/**
* Der Einstieg ueber den Aufkleber (#014).
@@ -11,18 +12,12 @@ import "dotenv/config";
* bringt den Techniker genauso ans Ziel wie der gescannte. Das ist kein
* Ersatzweg fuer den Notfall, sondern der Weg, den jeder geht, dessen Browser
* keine Kamera freigibt.
*
* Der Code kommt aus `SEED_TAG` und nicht abgetippt aus dem Kopf: dass es ihn in
* dieser Datenbank gibt, prueft `tests/e2e/global-setup.ts` vor dem ersten
* Ablauf (#018).
*/
async function anmelden(seite: Page) {
const email = process.env["SEED_ADMIN_EMAIL"];
const passwort = process.env["SEED_ADMIN_PASSWORD"];
if (!email || !passwort) throw new Error("SEED_ADMIN_EMAIL und SEED_ADMIN_PASSWORD fehlen.");
await seite.goto("/anmelden");
await seite.fill('input[name="email"]', email);
await seite.fill('input[name="passwort"]', passwort);
await Promise.all([seite.waitForURL("**/"), seite.click('button[type="submit"]')]);
}
test.describe("Scannen", () => {
test("ist über den Knopf in der Hülle erreichbar", async ({ page }) => {
await anmelden(page);
@@ -36,10 +31,10 @@ test.describe("Scannen", () => {
await page.goto("/scannen");
// Ohne Kamera bleibt das Feld – und es nimmt auch Kleinschreibung an.
await page.getByLabel("Code eintippen").fill("lz-7k3f9q");
await page.getByLabel("Code eintippen").fill(SEED_TAG.toLowerCase());
await page.getByRole("button", { name: "Öffnen" }).click();
await page.waitForURL("**/t/LZ-7K3F9Q");
await page.waitForURL(`**/t/${SEED_TAG}`);
});
test("lässt einen unsinnigen Code gar nicht erst abschicken", async ({ page }) => {