You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+68-1Lines changed: 68 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,73 @@
2
2
3
3
Herzlich willkommen zum Workshop API Design.
4
4
5
-
## Übungen
5
+
## Übung: Playwright Tests mit WireMock
6
+
7
+
In dieser Übung werden die Playwright-Tests so angepasst, dass sie nicht mehr gegen den echten Backend-Service laufen, sondern alle HTTP-Requests über WireMock gemockt werden.
8
+
9
+
### Ausgangssituation
10
+
11
+
Im Verzeichnis `customer-client/test/` befinden sich drei Testdateien:
12
+
13
+
-`customer-list.spec.ts` – Tests für die Kundenliste
14
+
-`customer-detail.spec.ts` – Tests für die Kundendetailseite (Adressen anlegen und bearbeiten)
15
+
-`create-customer.spec.ts` – Tests für das Anlegen neuer Kunden
16
+
17
+
Die Tests laufen aktuell gegen den echten Backend-Service (`http://localhost:8181`).
18
+
Im Verzeichnis `wiremock/mappings/` liegen bereits zwei WireMock-Mappings:
WireMock wird per Docker Compose gestartet und ist auf Port `8080` erreichbar:
24
+
25
+
```bash
26
+
docker compose up wiremock
27
+
```
28
+
29
+
### Ziel
30
+
31
+
Alle HTTP-Requests in den Playwright-Tests sollen durch WireMock-Mappings ersetzt werden, sodass der echte Backend-Service für die Tests nicht mehr benötigt wird.
32
+
33
+
### Aufgaben
34
+
35
+
1.**Playwright auf WireMock umstellen**
36
+
Ändere in `customer-client/playwright.config.ts` die `VITE_API_URL` so, dass sie auf den WireMock-Server (`http://localhost:8080`) zeigt.
37
+
38
+
2.**WireMock-Mappings für die Kundenliste ergänzen**
39
+
Die Mappings für `GET /customers/` und `OPTIONS /customers/` sind bereits vorhanden.
40
+
Führe die Tests aus und prüfe, welche weiteren Requests fehlen.
41
+
42
+
3.**WireMock-Mappings für die Kundendetailseite anlegen**
43
+
Für die Tests in `customer-detail.spec.ts` werden Kundendaten für `0815` (Max Mustermann) und `007` (James Bond) benötigt. Lege entsprechende Mappings an:
44
+
-`GET /customers/0815` – Max Mustermann mit Rechnungs- und Lieferadresse
- Adressvalidierung (PLZ-Prüfung) für die entsprechenden Testszenarien
49
+
50
+
4.**WireMock-Mapping für das Anlegen neuer Kunden anlegen**
51
+
Für `create-customer.spec.ts` wird ein `POST /customers/` benötigt, der einen neuen Kunden anlegt.
52
+
53
+
5.**Alle Tests erfolgreich ausführen**
54
+
Starte WireMock per Docker Compose und führe die Tests aus:
55
+
```bash
56
+
docker compose up wiremock
57
+
cd customer-client
58
+
npm test
59
+
```
60
+
61
+
### Tipps
62
+
63
+
- WireMock-Mappings liegen als JSON-Dateien in `wiremock/mappings/`. WireMock lädt diese Dateien beim Start automatisch.
64
+
- Die bestehenden Mappings (`get-customers.json`, `options-customers.json`) können als Vorlage für neue Mappings genutzt werden.
65
+
- Für das Laden neuer Mappings ohne Neustart kann die WireMock Admin API unter `http://localhost:8080/__admin/mappings` genutzt werden – oder WireMock einfach neu starten.
66
+
- Bei einem `POST`- oder `PUT`-Request muss ggf. auch der entsprechende `OPTIONS`-Preflight-Request gemockt werden (CORS).
67
+
- Die Adressvalidierung in `customer-detail.spec.ts` erwartet spezifische Fehlermeldungen – die Responses im Mapping müssen die exakten Fehlertexte aus den Tests zurückliefern.
68
+
69
+
---
70
+
71
+
## Alle Übungen
6
72
7
73
### API Design
8
74
@@ -12,6 +78,7 @@ Herzlich willkommen zum Workshop API Design.
0 commit comments