queued 2026-09-25 00:22:38 · started 00:22:52 · finished 00:22:55 · duration 3s · target v2.0.0 · chromium · trigger: cli-adopted · batch: 7 tests (terminal)
What went wrong
1 of 1 test(s) failed: the public API keeps its promises -- contract: field 'eta' is missing (the response has: booked_at, customer, delivered_at, destination, estimated_delivery, events, id, origin, pieces, price, service, status, status_label, weight_kg)
Technical details (full error)
1 of 1 test(s) failed: the public API keeps its promises -- contract: field 'eta' is missing (the response has: booked_at, customer, delivered_at, destination, estimated_delivery, events, id, origin, pieces, price, service, status, status_label, weight_kg)
Step timings every page action is timed automatically
| at | step | took |
|---|---|---|
| +0.04s | ⏱ the public API keeps its promises | 218 ms |
| +0.04s | ⏱ auth: no key | 22 ms |
| +0.04s | GET freight/api/v1/shipments/AF-100001 | 16 ms |
| +0.06s | ⏱ contract: a shipment | 65 ms |
| +0.06s | GET freight/api/v1/shipments/AF-100001 | 37 ms |
| +0.13s | ⏱ money: SPRING10 | 26 ms |
| +0.13s | POST freight/api/v1/quotes | 21 ms |
| +0.15s | ⏱ limits: six calls on the trial key | 52 ms |
| +0.15s | GET freight/api/v1/shipments/AF-100002 | 18 ms |
| +0.17s | GET freight/api/v1/shipments/AF-100002 | 6 ms |
| +0.18s | GET freight/api/v1/shipments/AF-100002 | 4 ms |
| +0.19s | GET freight/api/v1/shipments/AF-100002 | 4 ms |
| +0.19s | GET freight/api/v1/shipments/AF-100002 | 4 ms |
| +0.20s | GET freight/api/v1/shipments/AF-100002 | 5 ms |
Times are when each step began, on the replay's clock. Add your own phases with
await test.step('label', async () => { … }).
Screenshots
No screenshots (use ctx.screenshot("name") in the test).
Artifacts
| Run log | run.log |
| Playwright trace | trace.zip
open with: playwright show-trace trace.zip |
| Result JSON | result.json |
| Folder | results/DEMO-T13/20260925-002252-r417/ |
Full log
Read from the S3 bucket (the last 20 KB; the whole file is the Run log link above).
[ts-harness] @playwright/test project=chromium file=DEMO-T13__freight_api_typescript.spec.ts
Running 1 test using 1 worker
✘ 1 [chromium] › DEMO-T13__freight_api_typescript.spec.ts:11:5 › the public API keeps its promises (218ms)
1) [chromium] › DEMO-T13__freight_api_typescript.spec.ts:11:5 › the public API keeps its promises › contract: a shipment
Error: contract: field 'eta' is missing (the response has: booked_at, customer, delivered_at, destination, estimated_delivery, events, id, origin, pieces, price, service, status, status_label, weight_kg)
[2mexpect([22m[31mreceived[39m[2m).[22mtoHaveProperty[2m([22m[32mpath[39m[2m)[22m
Expected path: [32m"eta"[39m
Received path: [31m[][39m
Received value: [31m{"booked_at": "2026-09-22T06:00", "customer": "Lumen Optics", "delivered_at": null, "destination": "Frankfurt, Hessen, DE", "estimated_delivery": "2026-09-24", "events": [{"at": "2026-09-22T06:00", "code": "booked", "location": "Los Angeles, California, US", "text": "Booked with Acme Freight (express)"}, {"at": "2026-09-22T18:00", "code": "picked_up", "location": "Los Angeles, California, US", "text": "Picked up by courier"}, {"at": "2026-09-23T08:00", "code": "at_hub", "location": "Los Angeles, California, US", "text": "Arrived at LAX hub"}, {"at": "2026-09-23T18:00", "code": "in_transit", "location": "Los Angeles, California, US", "text": "Departed LAX for FRA"}], "id": "AF-100001", "origin": "Los Angeles, California, US", "pieces": 3, "price": {"amount": "717.54", "currency": "USD"}, "service": "express", "status": "in_transit", "status_label": "In transit", "weight_kg": 42.5}[39m
22 | const has = Object.keys(body).sort().join(', ');
23 | for (const field of ['id', 'status', 'origin', 'destination', 'service', 'weight_kg', 'eta', 'events']) {
> 24 | expect.soft(body, `contract: field '${field}' is missing (the response has: ${has})`).toHaveProperty(field);
| ^
25 | }
26 | }
27 | });
at /opt/pw-testhub/data/tests/DEMO-T13__freight_api_typescript.spec.ts:24:95
at /opt/pw-testhub/data/tests/DEMO-T13__freight_api_typescript.spec.ts:17:3
attachment #1: trace (application/zip) ─────────────────────────────────────────────────────────
../results/DEMO-T13/20260925-002252-r417/test-results/DEMO-T13__freight_api_type-42378-blic-API-keeps-its-promises-chromium/trace.zip
Usage:
npx playwright show-trace ../results/DEMO-T13/20260925-002252-r417/test-results/DEMO-T13__freight_api_type-42378-blic-API-keeps-its-promises-chromium/trace.zip
────────────────────────────────────────────────────────────────────────────────────────────────
1 failed
[chromium] › DEMO-T13__freight_api_typescript.spec.ts:11:5 › the public API keeps its promises ─
[ts-harness] activity reel: 0 change-frames extracted from the trace screencast