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
-`customer-list.spec.ts` – Tests für die Kundenliste
25
+
-`customer-detail.spec.ts` – Tests für die Kundendetailansicht inkl. Adressen
26
+
-`create-customer.spec.ts` – Tests für das Anlegen eines neuen Kunden (**bereits auf Pact umgebaut, dient als Referenz**)
27
27
28
-
### API Management
28
+
Die Tests in `customer-list.spec.ts` und `customer-detail.spec.ts` verwenden aktuell Playwright's eingebautes `page.route()`, um API-Aufrufe direkt im Browser abzufangen und mit statischen Antworten zu mocken. Dieser Ansatz dokumentiert den API-Vertrag nicht maschinenlesbar und kann nicht automatisch gegen den echten Service verifiziert werden.
Baue die Playwright-Tests in `customer-list.spec.ts` und `customer-detail.spec.ts` so um, dass sie statt `page.route()` den Pact-Mock-Server nutzen. Orientiere dich dabei an `create-customer.spec.ts`.
36
37
37
-
### API Evolution
38
+
Für jeden Test, der API-Aufrufe mockt, gilt folgendes Muster:
39
+
40
+
```typescript
41
+
awaitcreateProvider()
42
+
.addInteraction({
43
+
uponReceiving: 'Beschreibung der Anfrage',
44
+
withRequest: {
45
+
method: 'GET',
46
+
path: '/customers/',
47
+
},
48
+
willRespondWith: {
49
+
status: 200,
50
+
headers: { 'Content-Type': 'application/json' },
51
+
body: [ /* ... */ ],
52
+
},
53
+
})
54
+
.executeTest(async (mockServer) => {
55
+
awaitsetupApiProxy(page, mockServer.url);
56
+
// eigentlicher Test
57
+
});
58
+
```
59
+
60
+
**Hinweise:**
61
+
- Tests, die keinerlei API-Aufrufe machen (z. B. reine UI-Validierungen), müssen nicht umgebaut werden.
62
+
- Wenn ein Test mehrere API-Endpunkte anspricht, können mehrere `.addInteraction()`-Aufrufe verkettet werden.
63
+
- Nach dem Umbau werden die Pact-Dateien automatisch im Verzeichnis `pacts/` erzeugt. Prüfe, ob die erzeugten Pacts den erwarteten Vertrag korrekt abbilden.
64
+
-`beforeEach`-Blöcke mit `page.route()` müssen in die jeweiligen `executeTest`-Callbacks verschoben werden, weil `setupApiProxy` erst innerhalb des Callbacks aufgerufen werden kann.
65
+
66
+
### Ziel
67
+
68
+
Nach dem Umbau laufen alle Tests weiterhin erfolgreich, und im Verzeichnis `pacts/` liegt eine aktualisierte JSON-Datei mit den Consumer-Driven Contracts, die später gegen den echten Customer Service verifiziert werden können.
0 commit comments