2026-10-16T09:29:27.840Z start test on dev (full/parallel, trigger manual) 2026-10-16T09:29:27.939Z deployed: {"hotel-backend-core":"9338e28e79db480f72b45314ca85b3c9c3060df9","hotel-frontend-core":"2edac7677d85c5cbe64b00af518cd5d749b51fd7"} 2026-10-16T09:29:27.939Z $ git fetch --quiet --prune origin (cwd /home/ubuntu/regression-runner/repos/dev/hotel-backend-core) 2026-10-16T09:29:28.867Z -> exit 0 2026-10-16T09:29:28.867Z $ git cat-file -e 9338e28e79db480f72b45314ca85b3c9c3060df9^{commit} (cwd /home/ubuntu/regression-runner/repos/dev/hotel-backend-core) 2026-10-16T09:29:28.876Z -> exit 0 2026-10-16T09:29:28.876Z $ git diff --name-only 9338e28e79db480f72b45314ca85b3c9c3060df9 origin/dev (cwd /home/ubuntu/regression-runner/repos/dev/hotel-backend-core) 2026-10-16T09:29:28.885Z apps/hotel-backend/src/revenue/ai/revenue-ai.providers.ts 2026-10-16T09:29:28.885Z e2e/api/MATRIX.md 2026-10-16T09:29:28.885Z e2e/api/README.md 2026-10-16T09:29:28.885Z e2e/api/specs/channel-manager.spec.ts 2026-10-16T09:29:28.886Z e2e/api/specs/checkin-id-per-adult.spec.ts 2026-10-16T09:29:28.886Z e2e/api/support/channel-manager.ts 2026-10-16T09:29:28.886Z e2e/api/support/checkin-id.ts 2026-10-16T09:29:28.886Z e2e/api/support/fixtures/id-front.jpg 2026-10-16T09:29:28.886Z e2e/api/support/session.ts 2026-10-16T09:29:28.886Z scripts/e2e/lib.mjs 2026-10-16T09:29:28.886Z scripts/e2e/prepare-property.mjs 2026-10-16T09:29:28.886Z -> exit 0 2026-10-16T09:29:28.886Z $ git checkout --quiet --detach 9338e28e79db480f72b45314ca85b3c9c3060df9 && git clean -fdq -e playwright-report -e .auth && git rev-parse HEAD (cwd /home/ubuntu/regression-runner/repos/dev/hotel-backend-core) 2026-10-16T09:29:28.941Z 9338e28e79db480f72b45314ca85b3c9c3060df9 2026-10-16T09:29:28.941Z -> exit 0 2026-10-16T09:29:28.941Z $ CI=1 corepack pnpm@9.15.4 install --no-frozen-lockfile --config.confirmModulesPurge=false --reporter=append-only (cwd /home/ubuntu/regression-runner/repos/dev/hotel-backend-core) 2026-10-16T09:29:29.395Z Scope: all 31 workspace projects 2026-10-16T09:29:29.590Z Lockfile is up to date, resolution step is skipped 2026-10-16T09:29:29.790Z Already up to date 2026-10-16T09:29:30.790Z . prepare$ husky 2026-10-16T09:29:30.845Z . prepare: Done 2026-10-16T09:29:30.970Z Done in 1.9s 2026-10-16T09:29:31.003Z -> exit 0 2026-10-16T09:29:31.003Z $ git fetch --quiet --prune origin (cwd /home/ubuntu/regression-runner/repos/dev/hotel-frontend-core) 2026-10-16T09:29:32.611Z -> exit 0 2026-10-16T09:29:32.612Z $ git cat-file -e 2edac7677d85c5cbe64b00af518cd5d749b51fd7^{commit} (cwd /home/ubuntu/regression-runner/repos/dev/hotel-frontend-core) 2026-10-16T09:29:32.621Z -> exit 0 2026-10-16T09:29:32.621Z $ git diff --name-only 2edac7677d85c5cbe64b00af518cd5d749b51fd7 origin/dev (cwd /home/ubuntu/regression-runner/repos/dev/hotel-frontend-core) 2026-10-16T09:29:32.631Z e2e/PRD-2026-005-MATRIX.md 2026-10-16T09:29:32.631Z e2e/PRD-2026-007-MATRIX.md 2026-10-16T09:29:32.631Z e2e/README.md 2026-10-16T09:29:32.631Z e2e/SMOKE-PROD-MATRIX.md 2026-10-16T09:29:32.631Z e2e/fixtures/arm-api.ts 2026-10-16T09:29:32.631Z e2e/fixtures/arm-ui-w3.ts 2026-10-16T09:29:32.631Z e2e/fixtures/arm-ui-w4.ts 2026-10-16T09:29:32.631Z e2e/fixtures/auth.ts 2026-10-16T09:29:32.631Z e2e/fixtures/env.ts 2026-10-16T09:29:32.631Z e2e/fixtures/files/id-card.jpg 2026-10-16T09:29:32.632Z e2e/fixtures/hotel-session.ts 2026-10-16T09:29:32.632Z e2e/fixtures/id-per-adult.ts 2026-10-16T09:29:32.632Z e2e/fixtures/invoicing-data.ts 2026-10-16T09:29:32.632Z e2e/fixtures/w5-helpers.ts 2026-10-16T09:29:32.632Z e2e/specs/checkin-id-per-adult.spec.ts 2026-10-16T09:29:32.632Z e2e/specs/hfe-food-item-search-all-category.spec.ts 2026-10-16T09:29:32.632Z e2e/specs/prd-2026-005-active-template.spec.ts 2026-10-16T09:29:32.632Z e2e/specs/prd-2026-005-auto-triggers.spec.ts 2026-10-16T09:29:32.632Z e2e/specs/prd-2026-005-deep-verification.spec.ts 2026-10-16T09:29:32.632Z e2e/specs/prd-2026-005-invoice-editor.spec.ts 2026-10-16T09:29:32.632Z e2e/specs/prd-2026-005-mobile.spec.ts 2026-10-16T09:29:32.632Z e2e/specs/prd-2026-005-supplementary-docs.spec.ts 2026-10-16T09:29:32.632Z e2e/specs/prd-2026-007-create-reservation.spec.ts 2026-10-16T09:29:32.632Z e2e/specs/prd-2026-007-finance.spec.ts 2026-10-16T09:29:32.632Z e2e/specs/prd-2026-007-lock-move-swap.spec.ts 2026-10-16T09:29:32.632Z e2e/specs/prd-2026-007-noshow-cancel.spec.ts 2026-10-16T09:29:32.632Z e2e/specs/prd-2026-007-partial-checkin.spec.ts 2026-10-16T09:29:32.632Z e2e/specs/prd-2026-007-rbac-ux.spec.ts 2026-10-16T09:29:32.632Z e2e/specs/prd-2026-007-room-cards.spec.ts 2026-10-16T09:29:32.632Z e2e/specs/prd-2026-007-slots-multicycle.spec.ts 2026-10-16T09:29:32.632Z e2e/specs/prd-2026-007-status-aggregation.spec.ts 2026-10-16T09:29:32.632Z e2e/specs/prd-2026-007-stay-view.spec.ts 2026-10-16T09:29:32.632Z e2e/specs/prod-stay-journey.spec.ts 2026-10-16T09:29:32.632Z -> exit 0 2026-10-16T09:29:32.632Z hotel-frontend-core: branch head differs from the served commit by 33 test-only file(s); testing from origin/dev 2026-10-16T09:29:32.632Z $ git checkout --quiet --detach origin/dev && git clean -fdq -e playwright-report -e .auth && git rev-parse HEAD (cwd /home/ubuntu/regression-runner/repos/dev/hotel-frontend-core) 2026-10-16T09:29:32.671Z 2dc974f404cf30ffc2793fb47e0ca4388e53d659 2026-10-16T09:29:32.671Z -> exit 0 2026-10-16T09:29:32.671Z $ CI=1 corepack pnpm@9.15.4 install --frozen-lockfile --config.confirmModulesPurge=false --reporter=append-only (cwd /home/ubuntu/regression-runner/repos/dev/hotel-frontend-core) 2026-10-16T09:29:33.194Z Lockfile is up to date, resolution step is skipped 2026-10-16T09:29:33.330Z Already up to date 2026-10-16T09:29:33.926Z . prepare$ husky 2026-10-16T09:29:33.981Z . prepare: Done 2026-10-16T09:29:33.983Z Done in 1.2s 2026-10-16T09:29:34.010Z -> exit 0 2026-10-16T09:29:34.010Z $ corepack pnpm@9.15.4 e2e:prepare-property -- --count 8 (cwd /home/ubuntu/regression-runner/repos/dev/hotel-backend-core) 2026-10-16T09:29:34.395Z > hotel-backend-core@ e2e:prepare-property /home/ubuntu/regression-runner/repos/dev/hotel-backend-core 2026-10-16T09:29:34.395Z > node scripts/e2e/prepare-property.mjs "--" "--count" "8" 2026-10-16T09:29:36.771Z ✓ E2E Hotel 01 (b4c88cd6-2371-4049-aaaf-2158fb4b6b9e): test user has access 2026-10-16T09:29:39.311Z ✓ E2E Hotel 02 (c7396f01-f0a3-4b84-91a8-ac8b5b32c065): test user has access 2026-10-16T09:29:41.625Z ✓ E2E Hotel 03 (6cbd78a1-33c7-4a8d-b4b1-beabfe263880): test user has access 2026-10-16T09:29:44.275Z ✓ E2E Hotel 04 (d4905069-731a-4384-9cea-14f9cf362595): test user has access 2026-10-16T09:29:46.564Z ✓ E2E Hotel 05 (7d049255-56e3-421f-a309-9ad5f8eb0e22): test user has access 2026-10-16T09:29:49.021Z ✓ E2E Hotel 06 (8e43c66d-f413-41a7-ac7a-4a413d4d2632): test user has access 2026-10-16T09:29:51.405Z ✓ E2E Hotel 07 (729211be-07c8-48a4-8fc5-f28d261617f9): test user has access 2026-10-16T09:29:53.990Z ✓ E2E Hotel 08 (4f50832d-5d39-480f-a913-230148668b50): test user has access 2026-10-16T09:29:53.990Z E2E_PROPERTIES=[{"id":"b4c88cd6-2371-4049-aaaf-2158fb4b6b9e","name":"E2E Hotel 01"},{"id":"c7396f01-f0a3-4b84-91a8-ac8b5b32c065","name":"E2E Hotel 02"},{"id":"6cbd78a1-33c7-4a8d-b4b1-beabfe263880","name":"E2E Hotel 03"},{"id":"d4905069-731a-4384-9cea-14f9cf362595","name":"E2E Hotel 04"},{"id":"7d049255-56e3-421f-a309-9ad5f8eb0e22","name":"E2E Hotel 05"},{"id":"8e43c66d-f413-41a7-ac7a-4a413d4d2632","name":"E2E Hotel 06"},{"id":"729211be-07c8-48a4-8fc5-f28d261617f9","name":"E2E Hotel 07"},{"id":"4f50832d-5d39-480f-a913-230148668b50","name":"E2E Hotel 08"}] 2026-10-16T09:29:54.012Z -> exit 0 2026-10-16T09:29:54.012Z === hotel-backend-core === 2026-10-16T09:29:54.012Z $ corepack pnpm@9.15.4 e2e (cwd /home/ubuntu/regression-runner/repos/dev/hotel-backend-core) 2026-10-16T09:29:54.393Z > hotel-backend-core@ e2e /home/ubuntu/regression-runner/repos/dev/hotel-backend-core 2026-10-16T09:29:54.393Z > playwright test -c e2e/api/playwright.config.ts 2026-10-16T09:30:04.777Z Running 25 tests using 4 workers 2026-10-16T09:30:05.532Z ✓ 2 e2e/api/specs/health.spec.ts:4:7 › Backend health › TC-API-HEALTH-1 health reports database and redis up @smoke (121ms) 2026-10-16T09:30:06.216Z ✓ 3 e2e/api/specs/checkin-settings.spec.ts:17:7 › Check-in settings › TC-CHECKIN-SETTINGS-API-1 a partial PUT changes only the switch it sends and keeps the other (243ms) 2026-10-16T09:30:06.339Z ✓ 1 e2e/api/specs/checkin-settings.spec.ts:41:7 › Check-in settings › TC-CHECKIN-SETTINGS-API-2 an empty PUT is refused 400 CHECKIN_SETTINGS_EMPTY and changes nothing (132ms) 2026-10-16T09:30:06.554Z ✓ 4 e2e/api/specs/checkin-settings.spec.ts:52:7 › Check-in settings › TC-CHECKIN-SETTINGS-API-3 a non-boolean switch value is refused 400 and never coerced (359ms) 2026-10-16T09:30:10.377Z ✓ 7 e2e/api/specs/reservation-unassign.spec.ts:163:7 › Reservation unassign › TC-UNASSIGN-API-7 a room locked for Move & Swap is refused 409 UNASSIGN_ROOM_LOCKED (4.0s) 2026-10-16T09:30:10.387Z - 9 e2e/api/specs/reservation-unassign.spec.ts:190:7 › Reservation unassign › TC-UNASSIGN-API-8 another hotel's booking id answers 404, never its data 2026-10-16T09:30:10.525Z ✓ 5 e2e/api/specs/reservation-unassign.spec.ts:36:7 › Reservation unassign › TC-UNASSIGN-API-1 with the switch off, unassign is refused 403 UNASSIGN_DISABLED and the room stays (4.2s) 2026-10-16T09:30:11.361Z ✘ 6 e2e/api/specs/reservation-unassign.spec.ts:99:7 › Reservation unassign › TC-UNASSIGN-API-4 the batch read ?checkInIds= returns the ACTIVE records of the listed bookings only (4.0s) 2026-10-16T09:30:11.641Z ✓ 8 e2e/api/specs/reservation-unassign.spec.ts:241:7 › Reservation unassign › TC-UNASSIGN-API-10 checking in an unassigned room is refused 400 CHECKIN_ROOM_UNASSIGNED (5.1s) 2026-10-16T09:30:11.860Z ✘ 10 e2e/api/specs/reservation-unassign.spec.ts:197:7 › Reservation unassign › TC-UNASSIGN-API-9 placing the booking back with Move closes the record PLACED (379ms) 2026-10-16T09:30:11.980Z ✘ 11 e2e/api/specs/reservation-unassign.spec.ts:51:7 › Reservation unassign › TC-UNASSIGN-API-2 with the switch on, unassign frees the room: 201 and an ACTIVE record (327ms) 2026-10-16T09:30:15.803Z ✓ 13 e2e/api/specs/reservation-unassign.spec.ts:122:7 › Reservation unassign › TC-UNASSIGN-API-5 unassigning an already unassigned room is refused 409 UNASSIGN_ALREADY_UNASSIGNED (3.4s) 2026-10-16T09:30:16.062Z ✘ 12 e2e/api/specs/reservation-unassign.spec.ts:265:7 › Reservation unassign › TC-UNASSIGN-API-11 unassigning puts the freed room back on sale: its type's availability goes up by one (2.4s) 2026-10-16T09:30:16.803Z ✓ 14 e2e/api/specs/reservations.spec.ts:22:7 › Reservations › TC-API-RES-1 a direct reservation is created as upcoming and can be cancelled @prod (3.5s) 2026-10-16T09:30:16.838Z - 18 e2e/api/specs/revenue-ai-actions.spec.ts:106:7 › Revenue AI action facade › TC-API-REV-ACTION-1 a committed plan replays idempotently and can be undone 2026-10-16T09:30:16.881Z ✘ 19 e2e/api/specs/revenue-ai-actions.spec.ts:176:7 › Revenue AI action facade › TC-API-REV-ACTION-2 settings revision changes reject a stale preview (22ms) 2026-10-16T09:30:17.094Z ✓ 15 e2e/api/specs/reservation-unassign.spec.ts:77:7 › Reservation unassign › TC-UNASSIGN-API-3 GET /room-rearrangements/unassign/:checkInId returns the booking's record (3.0s) 2026-10-16T09:30:17.167Z ✘ 20 e2e/api/specs/revenue-ai-actions.spec.ts:240:7 › Revenue AI action facade › TC-API-REV-REPORT-1 forged and cross-property source jobs are rejected before enqueue (49ms) 2026-10-16T09:30:17.893Z ✓ 22 e2e/api/specs/revenue-ai-context.spec.ts:24:5 › TC-REV-AI-CTX-1 @smoke unauthenticated Revenue AI context is rejected (132ms) 2026-10-16T09:30:18.197Z - 21 e2e/api/specs/revenue-ai-actions.spec.ts:228:7 › Revenue AI action facade › TC-API-REV-ACTION-3 a plan cannot be read through another property scope 2026-10-16T09:30:18.252Z - 24 e2e/api/specs/revenue-ai-context.spec.ts:100:5 › TC-REV-AI-CTX-3 @smoke invalid factor weight and monthly budget are rejected 2026-10-16T09:30:18.474Z ✘ 25 e2e/api/specs/revenue-guardrails.spec.ts:43:5 › TC-REV-GUARD-API-1 public quotes omit every plan outside final-price limits (195ms) 2026-10-16T09:30:18.581Z - 23 e2e/api/specs/revenue-ai-context.spec.ts:37:5 › TC-REV-AI-CTX-2 @smoke authenticated context and settings expose complete defaults 2026-10-16T09:30:20.144Z ✘ 17 e2e/api/specs/reservations.spec.ts:61:7 › Reservations › TC-API-RES-2 a reservation whose check-out is before its check-in is rejected (2.0s) 2026-10-16T09:30:20.250Z ✓ 16 e2e/api/specs/reservation-unassign.spec.ts:136:7 › Reservation unassign › TC-UNASSIGN-API-6 a checked-in room is refused 409 UNASSIGN_NOT_UPCOMING (2.6s) 2026-10-16T09:30:20.269Z 1) e2e/api/specs/reservation-unassign.spec.ts:51:7 › Reservation unassign › TC-UNASSIGN-API-2 with the switch on, unassign frees the room: 201 and an ACTIVE record 2026-10-16T09:30:20.269Z Error: POST /reservations → 400: {"statusCode":400,"message":"One or more selected rooms are already blocked or occupied during the selected period.","timestamp":"2026-10-16T09:30:10.852Z","path":"/reservations","requestId":"7f82d2d7-e29b-4678-a7c2-b74609fcd45b"} 2026-10-16T09:30:20.269Z expect(received).toBeTruthy() 2026-10-16T09:30:20.269Z Received: false 2026-10-16T09:30:20.269Z at ../support/unassign.ts:130 2026-10-16T09:30:20.269Z 128 | res.ok(), 2026-10-16T09:30:20.269Z 129 | `POST /reservations → ${res.status()}: ${await res.text()}`, 2026-10-16T09:30:20.269Z > 130 | ).toBeTruthy(); 2026-10-16T09:30:20.269Z | ^ 2026-10-16T09:30:20.269Z 131 | const checkInId = idOf(await res.json()); 2026-10-16T09:30:20.269Z 132 | expect(checkInId, "reservation id").toBeTruthy(); 2026-10-16T09:30:20.269Z 133 | registerForCleanup(checkInId!); 2026-10-16T09:30:20.269Z at createBooking (/home/ubuntu/regression-runner/repos/dev/hotel-backend-core/e2e/api/support/unassign.ts:130:5) 2026-10-16T09:30:20.269Z at /home/ubuntu/regression-runner/repos/dev/hotel-backend-core/e2e/api/specs/reservation-unassign.spec.ts:54:21 2026-10-16T09:30:20.269Z Error Context: test-results/reservation-unassign-Reser-548e0-om-201-and-an-ACTIVE-record/error-context.md 2026-10-16T09:30:20.269Z Error Context: test-results/reservation-unassign-Reser-548e0-om-201-and-an-ACTIVE-record/error-context.md 2026-10-16T09:30:20.269Z 2) e2e/api/specs/reservation-unassign.spec.ts:99:7 › Reservation unassign › TC-UNASSIGN-API-4 the batch read ?checkInIds= returns the ACTIVE records of the listed bookings only 2026-10-16T09:30:20.269Z Error: POST /reservations → 400: {"statusCode":400,"message":"One or more selected rooms are already blocked or occupied during the selected period.","timestamp":"2026-10-16T09:30:10.249Z","path":"/reservations","requestId":"ab2db2fb-beb7-4d1a-9dd3-ff525316ee0a"} 2026-10-16T09:30:20.269Z expect(received).toBeTruthy() 2026-10-16T09:30:20.269Z Received: false 2026-10-16T09:30:20.269Z at ../support/unassign.ts:130 2026-10-16T09:30:20.269Z 128 | res.ok(), 2026-10-16T09:30:20.269Z 129 | `POST /reservations → ${res.status()}: ${await res.text()}`, 2026-10-16T09:30:20.269Z > 130 | ).toBeTruthy(); 2026-10-16T09:30:20.269Z | ^ 2026-10-16T09:30:20.269Z 131 | const checkInId = idOf(await res.json()); 2026-10-16T09:30:20.269Z 132 | expect(checkInId, "reservation id").toBeTruthy(); 2026-10-16T09:30:20.269Z 133 | registerForCleanup(checkInId!); 2026-10-16T09:30:20.270Z at createBooking (/home/ubuntu/regression-runner/repos/dev/hotel-backend-core/e2e/api/support/unassign.ts:130:5) 2026-10-16T09:30:20.270Z at /home/ubuntu/regression-runner/repos/dev/hotel-backend-core/e2e/api/specs/reservation-unassign.spec.ts:105:22 2026-10-16T09:30:20.270Z Error Context: test-results/reservation-unassign-Reser-2eb59-of-the-listed-bookings-only/error-context.md 2026-10-16T09:30:20.270Z Error Context: test-results/reservation-unassign-Reser-2eb59-of-the-listed-bookings-only/error-context.md 2026-10-16T09:30:20.270Z 3) e2e/api/specs/reservation-unassign.spec.ts:197:7 › Reservation unassign › TC-UNASSIGN-API-9 placing the booking back with Move closes the record PLACED 2026-10-16T09:30:20.270Z Error: POST /reservations → 400: {"statusCode":400,"message":"One or more selected rooms are already blocked or occupied during the selected period.","timestamp":"2026-10-16T09:30:10.767Z","path":"/reservations","requestId":"09f157ea-8f65-4089-b0be-f60f14a574b2"} 2026-10-16T09:30:20.270Z expect(received).toBeTruthy() 2026-10-16T09:30:20.270Z Received: false 2026-10-16T09:30:20.270Z at ../support/unassign.ts:130 2026-10-16T09:30:20.270Z 128 | res.ok(), 2026-10-16T09:30:20.270Z 129 | `POST /reservations → ${res.status()}: ${await res.text()}`, 2026-10-16T09:30:20.270Z > 130 | ).toBeTruthy(); 2026-10-16T09:30:20.270Z | ^ 2026-10-16T09:30:20.270Z 131 | const checkInId = idOf(await res.json()); 2026-10-16T09:30:20.270Z 132 | expect(checkInId, "reservation id").toBeTruthy(); 2026-10-16T09:30:20.270Z 133 | registerForCleanup(checkInId!); 2026-10-16T09:30:20.270Z at createBooking (/home/ubuntu/regression-runner/repos/dev/hotel-backend-core/e2e/api/support/unassign.ts:130:5) 2026-10-16T09:30:20.270Z at /home/ubuntu/regression-runner/repos/dev/hotel-backend-core/e2e/api/specs/reservation-unassign.spec.ts:200:21 2026-10-16T09:30:20.270Z Error Context: test-results/reservation-unassign-Reser-00246-ve-closes-the-record-PLACED/error-context.md 2026-10-16T09:30:20.270Z Error Context: test-results/reservation-unassign-Reser-00246-ve-closes-the-record-PLACED/error-context.md 2026-10-16T09:30:20.270Z 4) e2e/api/specs/reservation-unassign.spec.ts:265:7 › Reservation unassign › TC-UNASSIGN-API-11 unassigning puts the freed room back on sale: its type's availability goes up by one 2026-10-16T09:30:20.270Z Error: expect(received).toBe(expected) // Object.is equality 2026-10-16T09:30:20.270Z Expected: false 2026-10-16T09:30:20.270Z Received: true 2026-10-16T09:30:20.270Z 270 | ); 2026-10-16T09:30:20.270Z 271 | const before = await availabilityOf(api, booking); 2026-10-16T09:30:20.270Z > 272 | expect(before.includesRoom).toBe(false); 2026-10-16T09:30:20.270Z | ^ 2026-10-16T09:30:20.270Z 273 | await withCheckinSettings(api, ON, async () => { 2026-10-16T09:30:20.270Z 274 | expect((await unassign(api, booking)).status()).toBe(201); 2026-10-16T09:30:20.270Z 275 | }); 2026-10-16T09:30:20.270Z at /home/ubuntu/regression-runner/repos/dev/hotel-backend-core/e2e/api/specs/reservation-unassign.spec.ts:272:33 2026-10-16T09:30:20.270Z Error Context: test-results/reservation-unassign-Reser-c9eb6-availability-goes-up-by-one/error-context.md 2026-10-16T09:30:20.271Z Error Context: test-results/reservation-unassign-Reser-c9eb6-availability-goes-up-by-one/error-context.md 2026-10-16T09:30:20.271Z 5) e2e/api/specs/revenue-ai-actions.spec.ts:176:7 › Revenue AI action facade › TC-API-REV-ACTION-2 settings revision changes reject a stale preview 2026-10-16T09:30:20.271Z Error: AI settings → 403 2026-10-16T09:30:20.271Z expect(received).toBeTruthy() 2026-10-16T09:30:20.271Z Received: false 2026-10-16T09:30:20.271Z 182 | settingsRes.ok(), 2026-10-16T09:30:20.271Z 183 | `AI settings → ${settingsRes.status()}`, 2026-10-16T09:30:20.271Z > 184 | ).toBeTruthy(); 2026-10-16T09:30:20.271Z | ^ 2026-10-16T09:30:20.271Z 185 | const original = unwrap(await settingsRes.json()) as AnyRecord; 2026-10-16T09:30:20.271Z 186 | const { preview } = await previewRate(api, hotel.id); 2026-10-16T09:30:20.271Z 187 | const objective = (original.objective ?? {}) as AnyRecord; 2026-10-16T09:30:20.271Z at /home/ubuntu/regression-runner/repos/dev/hotel-backend-core/e2e/api/specs/revenue-ai-actions.spec.ts:184:7 2026-10-16T09:30:20.271Z Error Context: test-results/revenue-ai-actions-Revenue-aaa61-nges-reject-a-stale-preview/error-context.md 2026-10-16T09:30:20.271Z 6) e2e/api/specs/revenue-ai-actions.spec.ts:240:7 › Revenue AI action facade › TC-API-REV-REPORT-1 forged and cross-property source jobs are rejected before enqueue 2026-10-16T09:30:20.271Z Error: expect(received).toBe(expected) // Object.is equality 2026-10-16T09:30:20.271Z Expected: 400 2026-10-16T09:30:20.271Z Received: 403 2026-10-16T09:30:20.271Z 250 | }, 2026-10-16T09:30:20.271Z 251 | }); 2026-10-16T09:30:20.271Z > 252 | expect(foreignSourceRes.status()).toBe(400); 2026-10-16T09:30:20.271Z | ^ 2026-10-16T09:30:20.271Z 253 | expect(await foreignSourceRes.text()).toMatch(/not in this property/i); 2026-10-16T09:30:20.271Z 254 | 2026-10-16T09:30:20.271Z 255 | const missingSourceRes = await api.post(reportRunPath, { 2026-10-16T09:30:20.271Z at /home/ubuntu/regression-runner/repos/dev/hotel-backend-core/e2e/api/specs/revenue-ai-actions.spec.ts:252:39 2026-10-16T09:30:20.271Z Error Context: test-results/revenue-ai-actions-Revenue-78190-are-rejected-before-enqueue/error-context.md 2026-10-16T09:30:20.271Z 7) e2e/api/specs/revenue-guardrails.spec.ts:43:5 › TC-REV-GUARD-API-1 public quotes omit every plan outside final-price limits 2026-10-16T09:30:20.271Z Error: GET public property → 404: {"statusCode":404,"message":"Property not found for booking engine","timestamp":"2026-10-16T09:30:18.451Z","path":"/booking-engine/public/property/c7396f01-f0a3-4b84-91a8-ac8b5b32c065?adults=2&children=0","requestId":"1d539966-e24e-4bbc-9993-233312dff191"} 2026-10-16T09:30:20.271Z expect(received).toBeTruthy() 2026-10-16T09:30:20.271Z Received: false 2026-10-16T09:30:20.271Z 37 | response.ok(), 2026-10-16T09:30:20.271Z 38 | `${method} → ${response.status()}: ${await response.text()}`, 2026-10-16T09:30:20.271Z > 39 | ).toBeTruthy(); 2026-10-16T09:30:20.271Z | ^ 2026-10-16T09:30:20.271Z 40 | return response.json() as Promise; 2026-10-16T09:30:20.271Z 41 | } 2026-10-16T09:30:20.271Z 42 | 2026-10-16T09:30:20.271Z at successfulJson (/home/ubuntu/regression-runner/repos/dev/hotel-backend-core/e2e/api/specs/revenue-guardrails.spec.ts:39:5) 2026-10-16T09:30:20.272Z at /home/ubuntu/regression-runner/repos/dev/hotel-backend-core/e2e/api/specs/revenue-guardrails.spec.ts:51:24 2026-10-16T09:30:20.272Z Error Context: test-results/revenue-guardrails-TC-REV--ac7c6--outside-final-price-limits/error-context.md 2026-10-16T09:30:20.272Z 7 failed 2026-10-16T09:30:20.272Z e2e/api/specs/reservation-unassign.spec.ts:51:7 › Reservation unassign › TC-UNASSIGN-API-2 with the switch on, unassign frees the room: 201 and an ACTIVE record 2026-10-16T09:30:20.272Z e2e/api/specs/reservation-unassign.spec.ts:99:7 › Reservation unassign › TC-UNASSIGN-API-4 the batch read ?checkInIds= returns the ACTIVE records of the listed bookings only 2026-10-16T09:30:20.272Z e2e/api/specs/reservation-unassign.spec.ts:197:7 › Reservation unassign › TC-UNASSIGN-API-9 placing the booking back with Move closes the record PLACED 2026-10-16T09:30:20.272Z e2e/api/specs/reservation-unassign.spec.ts:265:7 › Reservation unassign › TC-UNASSIGN-API-11 unassigning puts the freed room back on sale: its type's availability goes up by one 2026-10-16T09:30:20.272Z e2e/api/specs/revenue-ai-actions.spec.ts:176:7 › Revenue AI action facade › TC-API-REV-ACTION-2 settings revision changes reject a stale preview 2026-10-16T09:30:20.272Z e2e/api/specs/revenue-ai-actions.spec.ts:240:7 › Revenue AI action facade › TC-API-REV-REPORT-1 forged and cross-property source jobs are rejected before enqueue 2026-10-16T09:30:20.272Z e2e/api/specs/revenue-guardrails.spec.ts:43:5 › TC-REV-GUARD-API-1 public quotes omit every plan outside final-price limits 2026-10-16T09:30:20.272Z 5 skipped 2026-10-16T09:30:20.272Z 13 passed (25.2s) 2026-10-16T09:30:20.346Z  ELIFECYCLE  Command failed with exit code 1. 2026-10-16T09:30:20.371Z -> exit 1 2026-10-16T09:30:20.377Z === hotel-frontend-core === 2026-10-16T09:30:20.377Z $ corepack pnpm@9.15.4 e2e (cwd /home/ubuntu/regression-runner/repos/dev/hotel-frontend-core) 2026-10-16T09:30:20.754Z > hotel-frontend-core@0.1.0 e2e /home/ubuntu/regression-runner/repos/dev/hotel-frontend-core 2026-10-16T09:30:20.754Z > playwright test 2026-10-16T09:30:40.892Z Running 291 tests using 4 workers 2026-10-16T09:30:44.366Z ✓ 2 [chromium] › e2e/specs/prd-2026-005-bank-accounts.spec.ts:29:6 › PRD-2026-005 — Bank Accounts › TC-PRD-010 list view renders the Add button and existing rows (2.7s) 2026-10-16T09:30:45.441Z ✓ 3 [chromium] › e2e/specs/checkin-id-per-adult.spec.ts:53:6 › One ID per adult — check-in form › TC-IDPA-UI-1 the Advanced settings switch saves the rule for the hotel (3.0s) 2026-10-16T09:30:45.487Z ✓ 1 [chromium] › e2e/specs/prd-2026-005-auto-triggers.spec.ts:9:6 › PRD-2026-005 — Auto-Triggers › TC-PRD-032 toggle Restaurant Session Settle persists (3.9s) 2026-10-16T09:30:47.228Z ✓ 5 [chromium] › e2e/specs/prd-2026-005-bank-accounts.spec.ts:37:6 › PRD-2026-005 — Bank Accounts › TC-PRD-011 empty form keeps modal open with validation errors (2.8s) 2026-10-16T09:30:48.506Z ✓ 7 [chromium] › e2e/specs/prd-2026-005-flags-gating.spec.ts:16:6 › PRD-2026-005 — flag visibility › TC-PRD-003 Bank Accounts page renders Add button when permission granted (3.0s) 2026-10-16T09:30:51.219Z ✓ 8 [chromium] › e2e/specs/prd-2026-005-bank-accounts.spec.ts:48:6 › PRD-2026-005 — Bank Accounts › TC-PRD-012 valid form creates row and closes modal (4.0s) 2026-10-16T09:30:51.344Z ✓ 9 [chromium] › e2e/specs/prd-2026-005-flags-gating.spec.ts:23:6 › PRD-2026-005 — flag visibility › TC-PRD-004 manage-taxes page renders HSN/SAC card when GST flag on (2.8s) 2026-10-16T09:30:52.108Z ✘ 4 [chromium] › e2e/specs/prd-2026-005-active-template.spec.ts:61:6 › PRD-2026-005 — Active custom template wins › TC-PRD-092 template with rect color=transparent still renders (no hex crash) (2.9s) 2026-10-16T09:30:52.109Z - 12 [chromium] › e2e/specs/prd-2026-005-active-template.spec.ts:176:6 › PRD-2026-005 — Active custom template wins › TC-PRD-091 template with unregistered fontName still renders (no font crash) 2026-10-16T09:30:52.109Z - 13 [chromium] › e2e/specs/prd-2026-005-active-template.spec.ts:282:6 › PRD-2026-005 — Active custom template wins › TC-PRD-093 template with empty image schemas still renders (no SOI crash) 2026-10-16T09:30:54.311Z ✓ 11 [chromium] › e2e/specs/prd-2026-005-flags-gating.spec.ts:30:6 › PRD-2026-005 — flag visibility › TC-PRD-005 Invoice Settings surfaces Documents sections (Templates + Bank + Auto-Create); HSN/SAC stays consolidated (2.9s) 2026-10-16T09:30:54.710Z ✓ 14 [chromium] › e2e/specs/prd-2026-005-flags-gating.spec.ts:43:6 › PRD-2026-005 — flag visibility › TC-PRD-001 propertyConfig delivers the 4 INVOICE flags (1.5s) 2026-10-16T09:30:55.299Z ✓ 10 [chromium] › e2e/specs/prd-2026-005-bank-accounts.spec.ts:69:6 › PRD-2026-005 — Bank Accounts › TC-PRD-013/014 edit modal opens prefilled and saves UPI (4.1s) 2026-10-16T09:30:57.928Z ✓ 17 [chromium] › e2e/specs/prd-2026-005-bank-accounts.spec.ts:91:6 › PRD-2026-005 — Bank Accounts › TC-PRD-015 make primary toggles the badge (2.6s) 2026-10-16T09:30:58.825Z ✓ 15 [chromium] › e2e/specs/prd-2026-005-hsn-sac.spec.ts:8:6 › PRD-2026-005 — HSN/SAC defaults › TC-PRD-020/021/022 expand → fill → save → reload preserves values (4.5s) 2026-10-16T09:31:02.401Z ✓ 16 [chromium] › e2e/specs/prd-2026-005-invoice-editor.spec.ts:33:6 › PRD-2026-005 — Invoice editor › TC-PRD-040/041 IGST switch is off by default and the header reads CGST + SGST (7.6s) 2026-10-16T09:31:03.148Z ✓ 18 [chromium] › e2e/specs/prd-2026-005-bank-accounts.spec.ts:108:6 › PRD-2026-005 — Bank Accounts › TC-PRD-016 delete removes row (5.2s) 2026-10-16T09:31:06.286Z ✓ 19 [chromium] › e2e/specs/prd-2026-005-invoice-editor.spec.ts:41:6 › PRD-2026-005 — Invoice editor › TC-PRD-042 switching IGST on changes the per-line header (7.4s) 2026-10-16T09:31:10.732Z ✓ 20 [chromium] › e2e/specs/prd-2026-005-invoice-editor.spec.ts:48:6 › PRD-2026-005 — Invoice editor › TC-PRD-043 switching IGST back off returns to the default mode (8.3s) 2026-10-16T09:31:10.783Z ✓ 21 [chromium] › e2e/specs/prd-2026-005-invoice-editor.spec.ts:61:6 › PRD-2026-005 — Invoice editor › TC-PRD-046 Place of Supply input accepts a state name once IGST is on (7.6s) 2026-10-16T09:31:15.228Z ✘ 6 [chromium] › e2e/specs/checkin-id-per-adult.spec.ts:70:6 › One ID per adult — check-in form › TC-IDPA-UI-2 Check-in short of IDs shows the counts and checks nothing in (27.4s) 2026-10-16T09:31:15.228Z - 25 [chromium] › e2e/specs/checkin-id-per-adult.spec.ts:89:6 › One ID per adult — check-in form › TC-IDPA-UI-3 "Add 1 more ID" goes back to the ID step, and with every ID in the stay checks in 2026-10-16T09:31:15.228Z - 26 [chromium] › e2e/specs/checkin-id-per-adult.spec.ts:112:6 › One ID per adult — check-in form › TC-IDPA-UI-4 a stay moved to another room mid-stay asks for its 2 adults once, not 4 2026-10-16T09:31:15.229Z - 27 [chromium] › e2e/specs/checkin-id-per-adult.spec.ts:142:6 › One ID per adult — check-in form › TC-IDPA-UI-5 a partial check-in of picked rooms is checked too 2026-10-16T09:31:15.230Z - 28 [chromium] › e2e/specs/checkin-id-per-adult.spec.ts:160:6 › One ID per adult — check-in form › TC-IDPA-UI-6 with the rule off, Check-in is not stopped for IDs 2026-10-16T09:31:15.230Z - 29 [chromium] › e2e/specs/checkin-id-per-adult.spec.ts:177:6 › One ID per adult — check-in form › TC-IDPA-UI-7 when the form did not check (rule switched on after it loaded), the backend refusal shows the same line 2026-10-16T09:31:15.230Z - 30 [chromium] › e2e/specs/checkin-id-per-adult.spec.ts:203:6 › One ID per adult — check-in form › TC-IDPA-UI-8 a slot-wise stay (one room tonight, another tomorrow) asks for its 2 adults once 2026-10-16T09:31:15.230Z - 31 [chromium] › e2e/specs/checkin-id-per-adult.spec.ts:234:6 › One ID per adult — check-in form › TC-IDPA-UI-9 a cancelled room's adults are not asked for 2026-10-16T09:31:15.230Z - 32 [chromium] › e2e/specs/checkin-id-per-adult.spec.ts:250:6 › One ID per adult — check-in form › TC-IDPA-UI-10 a partial check-in with an ID for every adult checks in only the picked room 2026-10-16T09:31:15.230Z - 33 [chromium] › e2e/specs/checkin-id-per-adult.spec.ts:275:6 › One ID per adult — check-in form › TC-IDPA-UI-11 the setting stays as saved after a reload 2026-10-16T09:31:18.454Z ✓ 24 [chromium] › e2e/specs/prd-2026-005-template-builder.spec.ts:76:6 › PRD-2026-005 — Template Builder › TC-PRD-081 Saving from Designer hits PATCH /document-templates/:id (7.6s) 2026-10-16T09:31:18.560Z ✓ 23 [chromium] › e2e/specs/prd-2026-005-template-builder.spec.ts:15:6 › PRD-2026-005 — Template Builder › TC-PRD-080 Templates gallery opens visual Designer for custom templates (7.8s) 2026-10-16T09:31:20.296Z ✓ 34 [chromium] › e2e/specs/prd-2026-012-pricing-rules-readiness.spec.ts:7:5 › PRD-2026-012 @smoke respects pricing access and opens current guardrail controls (3.7s) 2026-10-16T09:31:25.589Z ✓ 35 [chromium] › e2e/specs/prod-stay-journey.spec.ts:59:6 › Stay journey (prod-safe) › TC-PROD-001 a direct booking for tonight shows as upcoming @prod (6.6s) 2026-10-16T09:31:27.062Z ✓ 36 [chromium] › e2e/specs/reservation-unassign-action.spec.ts:79:6 › Reservation Unassign: Unassign Room action › TC-UNASSIGN-1 Unassign Room is offered on an upcoming booking with an assigned room when the switch is on (7.9s) 2026-10-16T09:31:28.493Z ✓ 37 [chromium] › e2e/specs/reservation-unassign-action.spec.ts:93:6 › Reservation Unassign: Unassign Room action › TC-UNASSIGN-3 Unassign Room is not offered once the booking is checked in (7.6s) 2026-10-16T09:31:29.945Z ✓ 38 [chromium] › e2e/specs/prod-stay-journey.spec.ts:97:6 › Stay journey (prod-safe) › TC-PROD-002 checking the room in shows the stay as checked in @prod (4.3s) 2026-10-16T09:31:33.746Z ✓ 41 [chromium] › e2e/specs/prod-stay-journey.spec.ts:106:6 › Stay journey (prod-safe) › TC-PROD-004 a charge added to the stay shows on its charges screen @prod (3.8s) 2026-10-16T09:31:34.578Z ✓ 39 [chromium] › e2e/specs/reservation-unassign-action.spec.ts:86:6 › Reservation Unassign: Unassign Room action › TC-UNASSIGN-2 Unassign Room is not offered when the property switch is off (7.5s) 2026-10-16T09:31:38.245Z ✓ 40 [chromium] › e2e/specs/reservation-unassign-action.spec.ts:101:6 › Reservation Unassign: Unassign Room action › TC-UNASSIGN-4 confirming frees the room: tag "Unassigned · was Room N" and the banner appear (9.7s) 2026-10-16T09:31:38.347Z ✓ 42 [chromium] › e2e/specs/prod-stay-journey.spec.ts:114:6 › Stay journey (prod-safe) › TC-PROD-005 paying the full due settles the stay @prod (4.6s) 2026-10-16T09:31:42.950Z ✓ 45 [chromium] › e2e/specs/prod-stay-journey.spec.ts:127:6 › Stay journey (prod-safe) › TC-PROD-003 checking the room out closes the stay @prod (4.3s) 2026-10-16T09:31:45.835Z ✓ 46 [chromium] › e2e/specs/reservation-unassign-advanced-settings.spec.ts:35:6 › Reservation Unassign: Advanced settings › TC-ADVSET-1 Advanced settings shows the settings in two groups: Reservations and Check-in (2.3s) 2026-10-16T09:31:47.352Z ✓ 44 [chromium] › e2e/specs/reservation-unassign-action.spec.ts:173:6 › Reservation Unassign: Unassign Room action › TC-UNASSIGN-7 check-in is blocked with "Assign a room before checking in." (8.7s) 2026-10-16T09:31:50.355Z ✓ 43 [chromium] › e2e/specs/reservation-unassign-action.spec.ts:133:6 › Reservation Unassign: Unassign Room action › TC-UNASSIGN-5 an unassigned booking is listed in the Unassigned tab with its tag (15.3s) 2026-10-16T09:31:50.948Z ✓ 47 [chromium] › e2e/specs/reservation-unassign-advanced-settings.spec.ts:63:6 › Reservation Unassign: Advanced settings › TC-ADVSET-2 Allow unassigning a room saves on flip, sends only that field, and persists after reload (4.5s) 2026-10-16T09:31:55.330Z ✓ 50 [chromium] › e2e/specs/reservation-unassign-advanced-settings.spec.ts:91:6 › Reservation Unassign: Advanced settings › TC-ADVSET-3 ?tab=advanced opens Advanced settings, and switching tabs keeps ?tab= in the URL (3.8s) 2026-10-16T09:31:55.913Z ✓ 48 [chromium] › e2e/specs/reservation-unassign-action.spec.ts:194:6 › Reservation Unassign: Unassign Room action › TC-UNASSIGN-8 a locked room shows as a disabled tile with the reason; nothing is unassigned (8.5s) 2026-10-16T09:31:58.500Z ✓ 51 [chromium] › e2e/specs/reservation-unassign-advanced-settings.spec.ts:108:6 › Reservation Unassign: Advanced settings › TC-ADVSET-4 the page is named "Reservations & Check-in" in the breadcrumb and the settings nav @smoke (2.5s) 2026-10-16T09:31:59.473Z ✘ 52 [chromium] › e2e/specs/reservation-unassign.spec.ts:8:5 › TC-UNASSIGN-MONEY-1 frees and returns a reservation room without changing its money (3.2s) 2026-10-16T09:32:00.151Z ✘ 53 [chromium] › e2e/specs/revenue-guardrail-removal.spec.ts:23:5 › TC-REV-GUARD-1 clearing both configured limits removes the guardrail (1.5s) 2026-10-16T09:32:04.002Z - 55 [chromium] › e2e/specs/revenue-manager.spec.ts:50:5 › TC-RM-2 @smoke renders actual server signal settings without starting a paid run 2026-10-16T09:32:04.603Z ✓ 54 [chromium] › e2e/specs/revenue-manager.spec.ts:6:5 › TC-RM-1 @smoke protects Revenue Manager and retains the selected workspace tab (4.1s) 2026-10-16T09:32:06.732Z ✓ 56 [chromium] › e2e/specs/smoke-core-pages.spec.ts:23:7 › Core pages open › TC-SMOKE-001 Room View opens on the test hotel @smoke (2.7s) 2026-10-16T09:32:07.607Z ✓ 57 [chromium] › e2e/specs/smoke-core-pages.spec.ts:23:7 › Core pages open › TC-SMOKE-002 Stay View opens on the test hotel @smoke (3.0s) 2026-10-16T09:32:07.744Z ✘ 49 [chromium] › e2e/specs/reservation-unassign-action.spec.ts:149:6 › Reservation Unassign: Unassign Room action › TC-UNASSIGN-6 Return to Room N puts the booking back in its room (16.2s) 2026-10-16T09:32:09.505Z ✓ 58 [chromium] › e2e/specs/smoke-core-pages.spec.ts:23:7 › Core pages open › TC-SMOKE-003 Reservations opens on the test hotel @smoke (2.7s) 2026-10-16T09:32:10.862Z ✓ 59 [chromium] › e2e/specs/smoke-core-pages.spec.ts:23:7 › Core pages open › TC-SMOKE-004 Guests opens on the test hotel @smoke (3.2s) 2026-10-16T09:32:12.250Z ✓ 60 [chromium] › e2e/specs/smoke-core-pages.spec.ts:23:7 › Core pages open › TC-SMOKE-005 All Checkins opens on the test hotel @smoke (3.3s) 2026-10-16T09:32:12.633Z ✓ 61 [chromium] › e2e/specs/smoke-core-pages.spec.ts:23:7 › Core pages open › TC-SMOKE-006 Invoices opens on the test hotel @smoke (3.1s) 2026-10-16T09:32:14.133Z ✓ 62 [chromium] › e2e/specs/smoke-core-pages.spec.ts:23:7 › Core pages open › TC-SMOKE-007 Ledger opens on the test hotel @smoke (3.2s) 2026-10-16T09:32:14.735Z ✓ 63 [chromium] › e2e/specs/smoke-core-pages.spec.ts:23:7 › Core pages open › TC-SMOKE-008 Reports opens on the test hotel @smoke (2.4s) 2026-10-16T09:32:18.199Z ✓ 66 [arm] › e2e/specs/prd-2026-007-create-reservation.spec.ts:45:6 › PRD-2026-007 — reservation creation (API semantics) › TC-ARM-200 single-room create: UPCOMING, one room instance, default slot [CR-1] (1.9s) 2026-10-16T09:32:21.021Z ✓ 64 [mobile-chromium] › e2e/specs/prd-2026-005-mobile.spec.ts:25:6 › PRD-2026-005 — mobile › TC-PRD-047 Tax Mode card visible on mobile invoice editor (7.1s) 2026-10-16T09:32:21.349Z ✓ 67 [arm] › e2e/specs/prd-2026-007-create-reservation.spec.ts:56:6 › PRD-2026-007 — reservation creation (API semantics) › TC-ARM-201 multi-room (3) create: three instances sharing the default slot [Must 1/CR-1] (3.1s) 2026-10-16T09:32:21.725Z ✓ 65 [mobile-chromium] › e2e/specs/prd-2026-005-mobile.spec.ts:38:6 › PRD-2026-005 — mobile › TC-PRD-048 IGST toggle changes selection on mobile (6.7s) 2026-10-16T09:32:23.630Z ✓ 68 [arm] › e2e/specs/prd-2026-007-create-reservation.spec.ts:65:6 › PRD-2026-007 — reservation creation (API semantics) › TC-ARM-202 created rooms carry the requested physical room numbers [Must 6] (2.3s) 2026-10-16T09:32:24.626Z ✓ 69 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:84:6 › PRD-2026-007 — reservation-level rollup (G6/Must 8/NG4) › TC-ARM-260 created booking exposes a reservation-level finance summary [Must 8] (2.1s) 2026-10-16T09:32:25.448Z ✓ 71 [arm] › e2e/specs/prd-2026-007-create-reservation.spec.ts:74:6 › PRD-2026-007 — reservation creation (API semantics) › TC-ARM-203 guest name persists and the booking window round-trips [data integrity] (1.8s) 2026-10-16T09:32:25.493Z ✓ 73 [arm] › e2e/specs/prd-2026-007-create-reservation.spec.ts:84:6 › PRD-2026-007 — reservation creation (API semantics) › TC-ARM-204 missing guestName → validation error [validation] (30ms) 2026-10-16T09:32:26.877Z ✓ 70 [arm] › e2e/specs/prd-2026-007-lock-move-swap.spec.ts:61:6 › PRD-2026-007 — Move/Swap lock › TC-ARM-140 API: lock then unlock round-trips [lock] (4.0s) 2026-10-16T09:32:27.249Z ✘ 74 [arm] › e2e/specs/prd-2026-007-create-reservation.spec.ts:101:6 › PRD-2026-007 — reservation creation (API semantics) › TC-ARM-205 checkOut ≤ checkIn → rejected [validation] (1.7s) 2026-10-16T09:32:27.249Z ✓ 72 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:91:6 › PRD-2026-007 — reservation-level rollup (G6/Must 8/NG4) › TC-ARM-261 partial check-in does not change totals [G6] (2.6s) 2026-10-16T09:32:29.353Z ✓ 76 [arm] › e2e/specs/prd-2026-007-create-reservation.spec.ts:126:6 › PRD-2026-007 — reservation creation (API semantics) › TC-ARM-206 double-booking the same physical room for the same window — pin actual behavior [Must 10/S-27 probe] (2.1s) 2026-10-16T09:32:29.668Z ✓ 78 [arm] › e2e/specs/prd-2026-007-create-reservation.spec.ts:161:6 › PRD-2026-007 — reservation creation (API semantics) › TC-ARM-207 unknown roomTypeId → rejected [validation] (294ms) 2026-10-16T09:32:29.710Z - 79 [arm] › e2e/specs/prd-2026-007-create-reservation.spec.ts:179:6 › PRD-2026-007 — reservation creation (API semantics) › TC-ARM-208 booking-level add-ons at create are accepted and priced [Must 7 add-ons] 2026-10-16T09:32:29.998Z ✓ 77 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:101:6 › PRD-2026-007 — reservation-level rollup (G6/Must 8/NG4) › TC-ARM-262 explicit recalculate is idempotent on totals [G6 "no unexplained delta"] (2.7s) 2026-10-16T09:32:31.400Z ✓ 75 [arm] › e2e/specs/prd-2026-007-lock-move-swap.spec.ts:80:6 › PRD-2026-007 — Move/Swap lock › TC-ARM-141 API: batch lock of 3 rooms in one call [lock] (4.5s) 2026-10-16T09:32:32.900Z ✓ 80 [arm] › e2e/specs/prd-2026-007-create-reservation.spec.ts:200:6 › PRD-2026-007 — reservation creation (API semantics) › TC-ARM-209 per-room stay windows at create produce per-room card windows [Must 7] (3.2s) 2026-10-16T09:32:33.629Z ✓ 81 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:111:6 › PRD-2026-007 — reservation-level rollup (G6/Must 8/NG4) › TC-ARM-263 cancelling one room updates totals consistently (recalc has run) [Must 5/G6] (3.6s) 2026-10-16T09:32:35.190Z ✓ 82 [arm] › e2e/specs/prd-2026-007-lock-move-swap.spec.ts:92:6 › PRD-2026-007 — Move/Swap lock › TC-ARM-142 API: lock survives an unrelated lifecycle op on a sibling room [lock persistence] (3.8s) 2026-10-16T09:32:36.411Z ✓ 84 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:127:6 › PRD-2026-007 — reservation-level rollup (G6/Must 8/NG4) › TC-ARM-264 cancellation charge lands at reservation level [NG4/S-23] (2.8s) 2026-10-16T09:32:37.243Z ✓ 83 [arm] › e2e/specs/prd-2026-007-create-reservation.spec.ts:235:6 › PRD-2026-007 — reservation creation (API semantics) › TC-ARM-210 created booking releases its rooms again after cancel [inventory release/S-23] (4.3s) 2026-10-16T09:32:40.534Z ✓ 86 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:142:6 › PRD-2026-007 — reservation-level rollup (G6/Must 8/NG4) › TC-ARM-265 intermediate room checkout leaves the other rooms' charges untouched [CR-3] (4.1s) 2026-10-16T09:32:42.260Z ✓ 87 [arm] › e2e/specs/prd-2026-007-create-reservation.spec.ts:249:6 › PRD-2026-007 — created reservations in the UI › TC-ARM-211 created booking appears in the reservations list with an Upcoming pill [§6.7] (4.9s) 2026-10-16T09:32:45.050Z ✘ 22 [chromium] › e2e/specs/prd-2026-005-supplementary-docs.spec.ts:48:6 › PRD-2026-005 — Supplementary documents › TC-PRD-051 Credit Note (full reversal) generates 201 + PDF blob (1.5m) 2026-10-16T09:32:45.050Z - 90 [chromium] › e2e/specs/prd-2026-005-supplementary-docs.spec.ts:80:6 › PRD-2026-005 — Supplementary documents › TC-PRD-053 Debit Note (full) generates 201 + PDF blob 2026-10-16T09:32:45.050Z - 91 [chromium] › e2e/specs/prd-2026-005-supplementary-docs.spec.ts:102:6 › PRD-2026-005 — Supplementary documents › TC-PRD-054 Refund Voucher generates 201 + sequential RV number 2026-10-16T09:32:45.430Z ✓ 88 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:154:6 › PRD-2026-007 — reservation-level rollup (G6/Must 8/NG4) › TC-ARM-266 totals stable across a full staggered journey [G6 drift check] (4.9s) 2026-10-16T09:32:45.596Z ✓ 85 [arm] › e2e/specs/prd-2026-007-lock-move-swap.spec.ts:103:6 › PRD-2026-007 — Move/Swap lock › TC-ARM-143 UI: lock one room through the modal; reopening pre-selects it [lock/§6 modal] (10.3s) 2026-10-16T09:32:48.421Z ✓ 92 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:169:6 › PRD-2026-007 — charges, discounts, payments, add-ons › TC-ARM-267 add a misc charge → total rises by amount (+tax) [charges] (3.0s) 2026-10-16T09:32:48.528Z ✓ 89 [arm] › e2e/specs/prd-2026-007-create-reservation.spec.ts:258:6 › PRD-2026-007 — created reservations in the UI › TC-ARM-212 multi-room created booking opens with N room cards [§6.7/Must 7] (6.2s) 2026-10-16T09:32:52.701Z ✓ 95 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:178:6 › PRD-2026-007 — charges, discounts, payments, add-ons › TC-ARM-268 charge scoped to a room instance still rolls up to the reservation [NG4] (4.3s) 2026-10-16T09:32:53.401Z ✓ 93 [arm] › e2e/specs/prd-2026-007-lock-move-swap.spec.ts:121:6 › PRD-2026-007 — Move/Swap lock › TC-ARM-144 UI: Continue stays disabled with no delta from initial state [LMS modal] (7.8s) 2026-10-16T09:32:55.305Z ✓ 96 [arm] › e2e/specs/prd-2026-007-create-reservation.spec.ts:268:6 › PRD-2026-007 — created reservations in the UI › TC-ARM-213 details page total reflects rooms × nightly price [finance surface] (6.8s) 2026-10-16T09:32:55.392Z ✓ 97 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:190:6 › PRD-2026-007 — charges, discounts, payments, add-ons › TC-ARM-269 record a payment → due drops by the amount [payments] (2.7s) 2026-10-16T09:32:58.442Z ✓ 100 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:200:6 › PRD-2026-007 — charges, discounts, payments, add-ons › TC-ARM-270 apply a flat discount → total drops accordingly [discounts] (3.0s) 2026-10-16T09:32:58.901Z ✘ 94 [arm] › e2e/specs/prd-2026-007-noshow-cancel.spec.ts:82:6 › PRD-2026-007 — no-show per room › TC-ARM-100 UI: single-room no-show leaves siblings untouched [Must 4/S-11/§6.3] (9.4s) 2026-10-16T09:33:00.191Z ✓ 101 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:211:6 › PRD-2026-007 — charges, discounts, payments, add-ons › TC-ARM-271 zero/negative charge amount is rejected [validation] (1.7s) 2026-10-16T09:33:02.416Z ✓ 98 [arm] › e2e/specs/prd-2026-007-lock-move-swap.spec.ts:128:6 › PRD-2026-007 — Move/Swap lock › TC-ARM-145 UI: CANCELLED/NO_SHOW rooms are not offered for locking [LMS eligibility] (9.0s) 2026-10-16T09:33:06.042Z ✓ 103 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:218:6 › PRD-2026-007 — charges, discounts, payments, add-ons › TC-ARM-272 charges on a fully terminal (all-cancelled) booking are rejected or isolated [G6 dangling-entry guard] (5.8s) 2026-10-16T09:33:08.374Z ✓ 105 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:245:6 › PRD-2026-007 — guest accounts (party) under room ops › TC-ARM-273 booking carries at least one default guest account [party model] (2.3s) 2026-10-16T09:33:09.682Z ✓ 104 [arm] › e2e/specs/prd-2026-007-lock-move-swap.spec.ts:141:6 › PRD-2026-007 — Move/Swap lock › TC-ARM-146 UI: terminal-only booking hides the Lock/Unlock entry entirely [LMS-003] (7.2s) 2026-10-16T09:33:10.761Z ✘ 102 [arm] › e2e/specs/prd-2026-007-noshow-cancel.spec.ts:103:6 › PRD-2026-007 — no-show per room › TC-ARM-101 UI: reason is required — CTA disabled while empty [Must 4] (8.4s) 2026-10-16T09:33:12.077Z ✓ 106 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:252:6 › PRD-2026-007 — guest accounts (party) under room ops › TC-ARM-274 guest-account balances reconcile with the finance read [party vs finance] (3.7s) 2026-10-16T09:33:17.433Z ✘ 109 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:265:6 › PRD-2026-007 — guest accounts (party) under room ops › TC-ARM-275 room checkout locks its guest account (isLocked=true) [party lock] (5.3s) 2026-10-16T09:33:21.188Z ✓ 107 [arm] › e2e/specs/prd-2026-007-lock-move-swap.spec.ts:152:6 › PRD-2026-007 — Move/Swap lock › TC-ARM-147 UI: mixed batch (lock A, unlock B) applies both directions in one Continue [LMS modal] (11.5s) 2026-10-16T09:33:22.281Z ✓ 110 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:281:6 › PRD-2026-007 — guest accounts (party) under room ops › TC-ARM-276 custom guest account: create on a room, then delete at zero balance [party CRUD] (4.9s) 2026-10-16T09:33:23.142Z ✓ 99 [arm] › e2e/specs/prd-2026-007-create-reservation.spec.ts:309:6 › PRD-2026-007 — create reservation panel (UI) › TC-ARM-216 UI create: availability cap blocks over-request up front [Must 10/S-27] (27.8s) 2026-10-16T09:33:23.156Z - 113 [arm] › e2e/specs/prd-2026-007-create-reservation.spec.ts:339:7 › PRD-2026-007 — create reservation panel (UI) › TC-ARM-217 UI create: error copy names the available count [S-27] 2026-10-16T09:33:23.612Z ✘ 108 [arm] › e2e/specs/prd-2026-007-noshow-cancel.spec.ts:110:6 › PRD-2026-007 — no-show per room › TC-ARM-102 UI: all-rooms no-show lands parent NO_SHOW [CR-2] (9.2s) 2026-10-16T09:33:26.575Z ✓ 112 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:296:6 › PRD-2026-007 — balance-at-checkout gate (Must 14/16) › TC-ARM-277 room checkout with outstanding balance: gate behavior pinned [ship-blocker risk row] (4.3s) 2026-10-16T09:33:30.193Z ✓ 111 [arm] › e2e/specs/prd-2026-007-lock-move-swap.spec.ts:171:6 › PRD-2026-007 — Move/Swap lock › TC-ARM-148 API: lock with a foreign roomInstanceId is rejected [tenancy] (9.0s) 2026-10-16T09:33:31.415Z ✓ 115 [arm] › e2e/specs/prd-2026-007-noshow-cancel.spec.ts:126:6 › PRD-2026-007 — no-show per room › TC-ARM-103 API: noShowReason and noShowMarkedAt persist on the room [Should-1 audit] (5.2s) 2026-10-16T09:33:33.432Z ✓ 116 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:315:6 › PRD-2026-007 — balance-at-checkout gate (Must 14/16) › TC-ARM-278 settle then check out: succeeds and closes the room [Must 14] (6.8s) 2026-10-16T09:33:34.640Z ✓ 118 [arm] › e2e/specs/prd-2026-007-noshow-cancel.spec.ts:144:6 › PRD-2026-007 — no-show per room › TC-ARM-104 API: NO_SHOW is terminal — late guest cannot be checked into the same room [S-22/NG1] (3.2s) 2026-10-16T09:33:34.712Z ✓ 117 [arm] › e2e/specs/prd-2026-007-lock-move-swap.spec.ts:185:6 › PRD-2026-007 — Move / Swap / Bulk-assign contract › TC-ARM-149 move/preview returns the price preview and changes nothing [Must 17] (4.5s) 2026-10-16T09:33:38.220Z ✓ 120 [arm] › e2e/specs/prd-2026-007-noshow-cancel.spec.ts:154:6 › PRD-2026-007 — no-show per room › TC-ARM-105 API: second no-show on the same room is rejected, single effect [S-20 manual leg] (3.6s) 2026-10-16T09:33:39.700Z ✓ 121 [arm] › e2e/specs/prd-2026-007-lock-move-swap.spec.ts:200:6 › PRD-2026-007 — Move / Swap / Bulk-assign contract › TC-ARM-150 move commit puts the guest in the target room [Must 6] (5.0s) 2026-10-16T09:33:40.001Z ✓ 119 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:332:6 › PRD-2026-007 — finance surfaces in the UI › TC-ARM-279 charges screen adds a charge that lands in the payment summary [charges UI] (6.5s) 2026-10-16T09:33:40.064Z ✓ 122 [arm] › e2e/specs/prd-2026-007-noshow-cancel.spec.ts:166:6 › PRD-2026-007 — no-show per room › TC-ARM-106 API: no-show requires a reason (validation) [Must 4] (1.8s) 2026-10-16T09:33:47.501Z ✓ 123 [arm] › e2e/specs/prd-2026-007-lock-move-swap.spec.ts:213:6 › PRD-2026-007 — Move / Swap / Bulk-assign contract › TC-ARM-151 swap/preview names both rooms and a zero price delta [Must 16] (7.8s) 2026-10-16T09:33:48.216Z ✓ 125 [arm] › e2e/specs/prd-2026-007-noshow-cancel.spec.ts:175:6 › PRD-2026-007 — no-show per room › TC-ARM-107 UI: no-show entry absent for a CHECKED_IN-only booking [state gating] (8.1s) 2026-10-16T09:33:50.107Z ✓ 124 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:341:6 › PRD-2026-007 — finance surfaces in the UI › TC-ARM-281 details payment summary reflects an added charge after reload [Must 8 UI] (10.1s) 2026-10-16T09:33:53.434Z ✓ 128 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:407:6 › PRD-2026-007 — folios, charge moves and ledger integrity › TC-ARM-282 folio list shows the booking folio; detail opens [folio] (3.3s) 2026-10-16T09:33:54.107Z ✓ 126 [arm] › e2e/specs/prd-2026-007-lock-move-swap.spec.ts:229:6 › PRD-2026-007 — Move / Swap / Bulk-assign contract › TC-ARM-152 swap commit exchanges the two rooms [Must 16/S-30] (6.6s) 2026-10-16T09:33:58.024Z ✓ 130 [arm] › e2e/specs/prd-2026-007-lock-move-swap.spec.ts:243:6 › PRD-2026-007 — Move / Swap / Bulk-assign contract › TC-ARM-153 bulk-assign is still a 422 stub [Must 10/S-27 — not built] (3.9s) 2026-10-16T09:33:58.071Z ✓ 131 [arm] › e2e/specs/prd-2026-007-lock-move-swap.spec.ts:252:6 › PRD-2026-007 — Move / Swap / Bulk-assign contract › TC-ARM-154 move and swap still enforce auth: unauthenticated move → 401 [Must 18] (37ms) 2026-10-16T09:33:58.285Z ✓ 129 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:419:6 › PRD-2026-007 — folios, charge moves and ledger integrity › TC-ARM-283 link a charge to a folio; folio totals update [folio] (4.8s) 2026-10-16T09:34:05.969Z ✓ 133 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:431:6 › PRD-2026-007 — folios, charge moves and ledger integrity › TC-ARM-284 unlink restores the unassigned pool [folio] (7.7s) 2026-10-16T09:34:07.208Z ✘ 127 [arm] › e2e/specs/prd-2026-007-noshow-cancel.spec.ts:188:6 › PRD-2026-007 — cancellation per room › TC-ARM-108 UI: cancel one of five rooms; the other four stay live [Must 5/S-23/§6.4] (8.3s) 2026-10-16T09:34:07.901Z ✓ 132 [arm] › e2e/specs/prd-2026-007-lock-move-swap.spec.ts:260:6 › PRD-2026-007 — Move / Swap / Bulk-assign contract › TC-ARM-155 UI: More actions offers only Lock/Unlock Room — Move and Swap live in the Room Details edit sheet [UX] (9.8s) 2026-10-16T09:34:14.880Z ✓ 134 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:446:6 › PRD-2026-007 — folios, charge moves and ledger integrity › TC-ARM-285 folio totals reconcile with the finance read after a room cancel [G6] (8.9s) 2026-10-16T09:34:21.573Z ✓ 135 [arm] › e2e/specs/prd-2026-007-lock-move-swap.spec.ts:279:6 › PRD-2026-007 — Move / Swap behaviour › TC-ARM-156 move shows Current → New → Price diff before confirm [S-28] (13.7s) 2026-10-16T09:34:27.582Z ✓ 137 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:462:6 › PRD-2026-007 — folios, charge moves and ledger integrity › TC-ARM-286 move charges between guest accounts shifts balances, total unchanged [NG4] (12.7s) 2026-10-16T09:34:29.122Z ✘ 136 [arm] › e2e/specs/prd-2026-007-noshow-cancel.spec.ts:215:6 › PRD-2026-007 — cancellation per room › TC-ARM-109 UI: reason AND charge are both required for cancel [Must 5] (16.8s) 2026-10-16T09:34:32.851Z ✘ 138 [arm] › e2e/specs/prd-2026-007-lock-move-swap.spec.ts:305:6 › PRD-2026-007 — Move / Swap behaviour › TC-ARM-157 move sets isDirty on the vacated room and recalculates finance [Must 6/S-26] (11.3s) 2026-10-16T09:34:36.048Z ✘ 139 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:480:6 › PRD-2026-007 — folios, charge moves and ledger integrity › TC-ARM-287 locked (checked-out) account rejects charge moves [party lock] (8.4s) 2026-10-16T09:34:37.988Z ✓ 140 [arm] › e2e/specs/prd-2026-007-noshow-cancel.spec.ts:226:6 › PRD-2026-007 — cancellation per room › TC-ARM-110 UI: "can't be undone" warning is shown [UX/NG1] (5.6s) 2026-10-16T09:34:39.360Z ✓ 142 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:497:6 › PRD-2026-007 — folios, charge moves and ledger integrity › TC-ARM-288 discount scoped to a guest account [discounts] (3.3s) 2026-10-16T09:34:41.205Z ✓ 143 [arm] › e2e/specs/prd-2026-007-noshow-cancel.spec.ts:233:6 › PRD-2026-007 — cancellation per room › TC-ARM-111 API: cancel metadata persists (reason + amount) [Should-1] (3.2s) 2026-10-16T09:34:42.973Z ✓ 141 [arm] › e2e/specs/prd-2026-007-lock-move-swap.spec.ts:323:6 › PRD-2026-007 — Move / Swap behaviour › TC-ARM-158 swap exchanges two occupied rooms bidirectionally, across bookings too [S-30] (10.1s) 2026-10-16T09:34:43.037Z - 146 [arm] › e2e/specs/prd-2026-007-lock-move-swap.spec.ts:339:6 › PRD-2026-007 — Move / Swap behaviour › TC-ARM-159 swap moves room add-ons with each room [Must 16] 2026-10-16T09:34:43.038Z - 147 [arm] › e2e/specs/prd-2026-007-lock-move-swap.spec.ts:345:7 › PRD-2026-007 — Move / Swap behaviour › TC-ARM-160 bulk auto-allocate fills by room type without over-allocating [Must 10] — not built: bulk-assign is still a 422 stub 2026-10-16T09:34:43.038Z - 148 [arm] › e2e/specs/prd-2026-007-lock-move-swap.spec.ts:346:7 › PRD-2026-007 — Move / Swap behaviour › TC-ARM-161 bulk assignment blocks requests beyond availability up front [S-27] — not built: bulk-assign is still a 422 stub 2026-10-16T09:34:43.495Z ✓ 144 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:511:6 › PRD-2026-007 — folios, charge moves and ledger integrity › TC-ARM-289 payment distribution strategies (EQUAL/SINGLE/MANUAL) [payments] (4.1s) 2026-10-16T09:34:49.538Z ✓ 145 [arm] › e2e/specs/prd-2026-007-noshow-cancel.spec.ts:248:6 › PRD-2026-007 — cancellation per room › TC-ARM-112 API: all-rooms cancel lands parent CANCELLED [S-05] (8.3s) 2026-10-16T09:34:51.519Z ✓ 149 [arm] › e2e/specs/prd-2026-007-lock-move-swap.spec.ts:348:6 › PRD-2026-007 — Move / Swap behaviour › TC-ARM-162 a Move/Swap-locked room cannot be moved; unlocking allows it [lock semantics] (8.5s) 2026-10-16T09:34:52.277Z ✓ 151 [arm] › e2e/specs/prd-2026-007-noshow-cancel.spec.ts:257:6 › PRD-2026-007 — cancellation per room › TC-ARM-113 API: cancelling a CHECKED_IN room is blocked with 409 [S-10/NG1] (2.7s) 2026-10-16T09:34:52.614Z ✓ 150 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:545:6 › PRD-2026-007 — folios, charge moves and ledger integrity › TC-ARM-290 invoice generation still reservation-scoped after partial ops [NG4/PRD-2026-005 seam] (9.1s) 2026-10-16T09:34:55.294Z ✓ 153 [arm] › e2e/specs/prd-2026-007-noshow-cancel.spec.ts:268:6 › PRD-2026-007 — cancellation per room › TC-ARM-114 API: CANCELLED is terminal — no later check-in [state machine] (3.0s) 2026-10-16T09:34:57.891Z ✘ 114 [arm] › e2e/specs/prd-2026-007-partial-checkin.spec.ts:87:6 › PRD-2026-007 — partial check-in › TC-ARM-070 modal selects 2 of 4 rooms and hands them to the wizard URL [Must 3/S-12] (1.5m) 2026-10-16T09:34:58.347Z ✓ 152 [arm] › e2e/specs/prd-2026-007-lock-move-swap.spec.ts:367:6 › PRD-2026-007 — Move / Swap behaviour › TC-ARM-163 swap respects Move/Swap locks on either side [lock semantics] (6.8s) 2026-10-16T09:34:58.873Z ✓ 156 [arm] › e2e/specs/prd-2026-007-rbac-ux.spec.ts:56:6 › PRD-2026-007 — authentication wall (Must 18) › TC-ARM-300 every ARM mutation endpoint returns 401 without a token [Must 18] (192ms) 2026-10-16T09:34:58.904Z ✓ 158 [arm] › e2e/specs/prd-2026-007-rbac-ux.spec.ts:65:6 › PRD-2026-007 — authentication wall (Must 18) › TC-ARM-301 garbage bearer token → 401 [Must 18] (21ms) 2026-10-16T09:34:58.960Z ✓ 159 [arm] › e2e/specs/prd-2026-007-rbac-ux.spec.ts:77:6 › PRD-2026-007 — authentication wall (Must 18) › TC-ARM-302 reads are also walled (checkin detail, finance, guest accounts) [Must 18] (47ms) 2026-10-16T09:35:01.095Z ✓ 155 [arm] › e2e/specs/prd-2026-007-noshow-cancel.spec.ts:277:6 › PRD-2026-007 — cancellation per room › TC-ARM-115 API: cancel subset across two calls accumulates correctly [Must 12] (5.8s) 2026-10-16T09:35:08.905Z ✓ 160 [arm] › e2e/specs/prd-2026-007-rbac-ux.spec.ts:92:6 › PRD-2026-007 — full-permission UI affordances (positive RBAC) › TC-ARM-303 owner-role kebab exposes all ARM actions on an UPCOMING booking [§10] (9.9s) 2026-10-16T09:35:09.904Z ✓ 161 [arm] › e2e/specs/prd-2026-007-noshow-cancel.spec.ts:289:6 › PRD-2026-007 — cancellation per room › TC-ARM-116 UI: cancelled room card stays visible (grey), booking stays open [§6.4] (8.8s) 2026-10-16T09:35:12.443Z ✓ 163 [arm] › e2e/specs/prd-2026-007-noshow-cancel.spec.ts:302:6 › PRD-2026-007 — scheduled cancel/no-show with withdraw window › TC-ARM-117 schedule-cancel stages the action and reports an expiry [staged ops] (2.5s) 2026-10-16T09:35:14.389Z ✓ 164 [arm] › e2e/specs/prd-2026-007-noshow-cancel.spec.ts:314:6 › PRD-2026-007 — scheduled cancel/no-show with withdraw window › TC-ARM-118 GET scheduled-action reflects the staged op [staged ops] (1.9s) 2026-10-16T09:35:14.783Z ✓ 162 [arm] › e2e/specs/prd-2026-007-rbac-ux.spec.ts:102:6 › PRD-2026-007 — full-permission UI affordances (positive RBAC) › TC-ARM-304 partial check-in entry visible for an in-window UPCOMING booking [§10] (5.9s) 2026-10-16T09:35:20.572Z ✓ 166 [arm] › e2e/specs/prd-2026-007-rbac-ux.spec.ts:111:6 › PRD-2026-007 — UX guarantees (§3, G5) › TC-ARM-305 room number, status color, type, plan and dates co-located — zero extra clicks [G5] (5.8s) 2026-10-16T09:35:24.696Z ✘ 157 [arm] › e2e/specs/prd-2026-007-partial-checkin.spec.ts:102:6 › PRD-2026-007 — partial check-in › TC-ARM-071 modal lists only UPCOMING rooms — checked-in and cancelled rooms are absent [Must 3] (24.8s) 2026-10-16T09:35:27.013Z ✓ 167 [arm] › e2e/specs/prd-2026-007-rbac-ux.spec.ts:125:6 › PRD-2026-007 — UX guarantees (§3, G5) › TC-ARM-306 no-show flow is ≤3 interactions from booking details [§3 ≤3-click rule] (6.4s) 2026-10-16T09:35:33.815Z ✓ 169 [arm] › e2e/specs/prd-2026-007-rbac-ux.spec.ts:145:6 › PRD-2026-007 — UX guarantees (§3, G5) › TC-ARM-307 state-machine violations surface as visible errors, not silent failures [S-19 family] (6.8s) 2026-10-16T09:35:34.369Z ✓ 154 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:571:6 › PRD-2026-007 — folios, charge moves and ledger integrity › TC-ARM-291 ledger entries balanced after the full §6.2 journey (no dangling entry) [G6] (6.2s) 2026-10-16T09:35:39.151Z ✓ 170 [arm] › e2e/specs/prd-2026-007-rbac-ux.spec.ts:168:6 › PRD-2026-007 — UX guarantees (§3, G5) › TC-ARM-308 happy-path journey emits no console errors and no 5xx [§6 quality gate] (5.3s) 2026-10-16T09:35:41.323Z ✓ 171 [arm] › e2e/specs/prd-2026-007-room-cards.spec.ts:86:6 › PRD-2026-007 — room cards on Booking Details › TC-ARM-040 multi-room booking renders one card per room with number, type and dates [Must 7/S-02] (6.4s) 2026-10-16T09:35:44.351Z ✓ 172 [arm] › e2e/specs/prd-2026-007-rbac-ux.spec.ts:188:6 › PRD-2026-007 — UX guarantees (§3, G5) › TC-ARM-309 reservations list status pills match the detail state for partial bookings [G5 consistency] (5.2s) 2026-10-16T09:35:44.351Z - 174 [arm] › e2e/specs/prd-2026-007-rbac-ux.spec.ts:212:6 › TC-ARM-310 restricted role: room check-in → 403 [S-09/Must 18] 2026-10-16T09:35:44.351Z - 175 [arm] › e2e/specs/prd-2026-007-rbac-ux.spec.ts:213:6 › TC-ARM-311 restricted role: cancel → 403 [S-09] 2026-10-16T09:35:44.351Z - 176 [arm] › e2e/specs/prd-2026-007-rbac-ux.spec.ts:214:6 › TC-ARM-312 restricted role: no-show → 403 [S-09] 2026-10-16T09:35:44.351Z - 177 [arm] › e2e/specs/prd-2026-007-rbac-ux.spec.ts:215:6 › TC-ARM-313 restricted role: lock-move-swap → 403 [Must 18] 2026-10-16T09:35:44.351Z - 178 [arm] › e2e/specs/prd-2026-007-rbac-ux.spec.ts:216:6 › TC-ARM-314 restricted role UI: lifecycle buttons absent/disabled [S-09] 2026-10-16T09:35:46.719Z ✓ 173 [arm] › e2e/specs/prd-2026-007-room-cards.spec.ts:97:6 › PRD-2026-007 — room cards on Booking Details › TC-ARM-041 UPCOMING card is blue; CHECKED_IN card is red [Must 2/G5] (5.4s) 2026-10-16T09:35:53.647Z - 179 [arm] › e2e/specs/prd-2026-007-rbac-ux.spec.ts:217:6 › TC-ARM-315 restricted role: checkout-with-balance strictly blocked [Must 16] 2026-10-16T09:35:59.205Z ✓ 181 [arm] › e2e/specs/prd-2026-007-slots-multicycle.spec.ts:74:6 › PRD-2026-007 — default slot guarantee (CR-1) › TC-ARM-170 new reservation is backed by exactly one slot grouping all rooms [CR-1/Must 13] (5.1s) 2026-10-16T09:36:01.613Z ✓ 180 [arm] › e2e/specs/prd-2026-007-room-cards.spec.ts:108:6 › PRD-2026-007 — room cards on Booking Details › TC-ARM-042 CHECKED_IN room near/after its checkout time shows checkout-due yellow, then overdue orange [Must 2] (14.9s) 2026-10-16T09:36:03.651Z ✓ 182 [arm] › e2e/specs/prd-2026-007-slots-multicycle.spec.ts:83:6 › PRD-2026-007 — default slot guarantee (CR-1) › TC-ARM-171 single-room booking also carries its default slot [S-01/CR-1] (4.4s) 2026-10-16T09:36:09.517Z ✓ 184 [arm] › e2e/specs/prd-2026-007-slots-multicycle.spec.ts:90:6 › PRD-2026-007 — default slot guarantee (CR-1) › TC-ARM-172 lifecycle ops do not change the slot count — status lives on the room [CR-1] (5.8s) 2026-10-16T09:36:10.090Z ✓ 183 [arm] › e2e/specs/prd-2026-007-room-cards.spec.ts:150:7 › PRD-2026-007 — room cards on Booking Details › TC-ARM-043 CANCELLED room card is grey and stays listed [Must 2] (8.5s) 2026-10-16T09:36:14.321Z ✓ 185 [arm] › e2e/specs/prd-2026-007-slots-multicycle.spec.ts:100:6 › PRD-2026-007 — default slot guarantee (CR-1) › TC-ARM-173 mutation response slots[] carries window + roomCount and no name/status [CR-1/S-32] (4.8s) 2026-10-16T09:36:17.092Z ✓ 186 [arm] › e2e/specs/prd-2026-007-room-cards.spec.ts:150:7 › PRD-2026-007 — room cards on Booking Details › TC-ARM-044 NO_SHOW room card is grey and stays listed [Must 2] (7.0s) 2026-10-16T09:36:17.811Z ✓ 187 [arm] › e2e/specs/prd-2026-007-slots-multicycle.spec.ts:118:6 › PRD-2026-007 — default slot guarantee (CR-1) › TC-ARM-174 default slot window equals the reservation window [CR-1] (3.5s) 2026-10-16T09:36:22.021Z ✓ 165 [arm] › e2e/specs/prd-2026-007-noshow-cancel.spec.ts:326:6 › PRD-2026-007 — scheduled cancel/no-show with withdraw window › TC-ARM-119 withdraw-scheduled aborts the staged action [staged ops] (1.1m) 2026-10-16T09:36:22.118Z ✓ 189 [arm] › e2e/specs/prd-2026-007-slots-multicycle.spec.ts:134:6 › PRD-2026-007 — multi-cycle via re-check-in (G7/OQ-6) › TC-ARM-175 re-check-in creates a NEW room instance; the source stays CHECKED_OUT [OQ-6] (4.3s) 2026-10-16T09:36:23.758Z ✓ 188 [arm] › e2e/specs/prd-2026-007-room-cards.spec.ts:150:7 › PRD-2026-007 — room cards on Booking Details › TC-ARM-045 CHECKED_OUT room card is grey and stays listed [Must 2] (6.7s) 2026-10-16T09:36:26.540Z ✓ 191 [arm] › e2e/specs/prd-2026-007-slots-multicycle.spec.ts:145:6 › PRD-2026-007 — multi-cycle via re-check-in (G7/OQ-6) › TC-ARM-176 after re-check-in the booking has two slots with distinct windows [G7/S-31] (4.4s) 2026-10-16T09:36:28.552Z ✓ 192 [arm] › e2e/specs/prd-2026-007-room-cards.spec.ts:170:6 › PRD-2026-007 — room cards on Booking Details › TC-ARM-046 status legend lists Upcoming / Checked-In / Check-Out Due / Checked-Out [Should-2] (4.8s) 2026-10-16T09:36:31.323Z ✓ 193 [arm] › e2e/specs/prd-2026-007-slots-multicycle.spec.ts:159:6 › PRD-2026-007 — multi-cycle via re-check-in (G7/OQ-6) › TC-ARM-177 reservation does NOT close after cycle-1 checkout while cycle 2 exists [CR-3/S-31] (4.8s) 2026-10-16T09:36:34.310Z ✓ 194 [arm] › e2e/specs/prd-2026-007-room-cards.spec.ts:181:6 › PRD-2026-007 — room cards on Booking Details › TC-ARM-047 single-room booking renders exactly one room card and no slot wording [S-01/CR-1] (5.7s) 2026-10-16T09:36:37.025Z ✓ 195 [arm] › e2e/specs/prd-2026-007-slots-multicycle.spec.ts:168:6 › PRD-2026-007 — multi-cycle via re-check-in (G7/OQ-6) › TC-ARM-178 cycle 2 check-in → PARTIALLY_CHECKED_OUT; final checkout closes the reservation [CR-3] (5.7s) 2026-10-16T09:36:39.724Z ✓ 196 [arm] › e2e/specs/prd-2026-007-room-cards.spec.ts:192:6 › PRD-2026-007 — room cards on Booking Details › TC-ARM-048 per-room date range on the card matches the reservation window [Must 7] (5.4s) 2026-10-16T09:36:39.821Z ✓ 197 [arm] › e2e/specs/prd-2026-007-slots-multicycle.spec.ts:178:6 › PRD-2026-007 — multi-cycle via re-check-in (G7/OQ-6) › TC-ARM-179 re-check-in is rejected while the source room is not CHECKED_OUT [OQ-6 guard] (2.8s) 2026-10-16T09:36:40.441Z - 198 [arm] › e2e/specs/prd-2026-007-room-cards.spec.ts:211:6 › PRD-2026-007 — room cards on Booking Details › TC-ARM-050 >6-room booking collapses with an expand control that reveals all rooms [S-13] 2026-10-16T09:36:44.691Z ✘ 199 [arm] › e2e/specs/prd-2026-007-slots-multicycle.spec.ts:190:6 › PRD-2026-007 — multi-cycle via re-check-in (G7/OQ-6) › TC-ARM-180 re-check-in into a different physical room via targetRoomId [G7] (4.8s) 2026-10-16T09:36:48.005Z ✓ 200 [arm] › e2e/specs/prd-2026-007-room-cards.spec.ts:225:6 › PRD-2026-007 — room cards on Booking Details › TC-ARM-051 mixed-state booking shows the full mix inline — zero extra clicks [G5/S-03] (7.6s) 2026-10-16T09:36:50.530Z ✓ 201 [arm] › e2e/specs/prd-2026-007-slots-multicycle.spec.ts:211:6 › PRD-2026-007 — multi-cycle via re-check-in (G7/OQ-6) › TC-ARM-181 multi-room re-check-in (2 rooms into the new cycle) [G7] (5.8s) 2026-10-16T09:36:53.050Z ✓ 202 [arm] › e2e/specs/prd-2026-007-room-cards.spec.ts:241:6 › PRD-2026-007 — room cards on Booking Details › TC-ARM-052 card shows the per-night price [Must 7] (5.0s) 2026-10-16T09:36:58.171Z ✓ 204 [arm] › e2e/specs/prd-2026-007-room-cards.spec.ts:252:6 › PRD-2026-007 — room cards on Booking Details › TC-ARM-053 card shows a meal-plan label [Must 7] (5.1s) 2026-10-16T09:36:59.756Z ✓ 203 [arm] › e2e/specs/prd-2026-007-slots-multicycle.spec.ts:221:6 › PRD-2026-007 — multi-cycle via re-check-in (G7/OQ-6) › TC-ARM-182 §6.8 story: 1→10 window run as two cycles in ONE reservation, zero re-creation [G7/S-31] (9.2s) 2026-10-16T09:37:00.720Z ✘ 168 [arm] › e2e/specs/prd-2026-007-partial-checkin.spec.ts:115:6 › PRD-2026-007 — partial check-in › TC-ARM-072 group Select All selects every room of the type; Clear All clears [UX] (1.6m) 2026-10-16T09:37:04.426Z ✓ 206 [arm] › e2e/specs/prd-2026-007-slots-multicycle.spec.ts:258:6 › PRD-2026-007 — multi-cycle via re-check-in (G7/OQ-6) › TC-ARM-183 slot windows of sequential cycles do not overlap [data sanity] (4.7s) 2026-10-16T09:37:04.513Z ✓ 205 [arm] › e2e/specs/prd-2026-007-room-cards.spec.ts:260:6 › PRD-2026-007 — room cards on Booking Details › TC-ARM-054 parent status chip reflects CR-2 for a mixed set [CR-2/Must 12] (6.3s) 2026-10-16T09:37:09.195Z ✓ 208 [arm] › e2e/specs/prd-2026-007-slots-multicycle.spec.ts:266:6 › PRD-2026-007 — multi-cycle via re-check-in (G7/OQ-6) › TC-ARM-184 slots in mutation response agree with slotIds on the read [consistency] (4.8s) 2026-10-16T09:37:11.433Z ✓ 207 [arm] › e2e/specs/prd-2026-007-partial-checkin.spec.ts:127:6 › PRD-2026-007 — partial check-in › TC-ARM-073 Continue stays disabled with zero rooms selected [UX] (9.1s) 2026-10-16T09:37:12.883Z ✓ 209 [arm] › e2e/specs/prd-2026-007-room-cards.spec.ts:272:6 › PRD-2026-007 — room cards on Booking Details › TC-ARM-055 card count equals live RoomInstance count after a cancel [consistency] (8.4s) 2026-10-16T09:37:18.688Z ✓ 212 [arm] › e2e/specs/prd-2026-007-room-cards.spec.ts:284:6 › PRD-2026-007 — room cards on Booking Details › TC-ARM-057 payment summary is reservation-level on the details page [NG4/Must 8] (5.8s) 2026-10-16T09:37:25.396Z ✘ 210 [arm] › e2e/specs/prd-2026-007-slots-multicycle.spec.ts:273:6 › PRD-2026-007 — multi-cycle via re-check-in (G7/OQ-6) › TC-ARM-185 UI: booking details after re-check-in shows the cycle-2 room card with its own window [Must 7/G5] (16.2s) 2026-10-16T09:37:27.816Z ✓ 213 [arm] › e2e/specs/prd-2026-007-room-cards.spec.ts:293:6 › PRD-2026-007 — room cards on Booking Details › TC-ARM-058 details reflect fresh API state after reload (no stale card status) [G5] (9.1s) 2026-10-16T09:37:28.064Z ✓ 190 [arm] › e2e/specs/prd-2026-007-noshow-cancel.spec.ts:339:6 › PRD-2026-007 — scheduled cancel/no-show with withdraw window › TC-ARM-120 staged no-show executes after the window elapses [staged ops] (1.1m) 2026-10-16T09:37:29.861Z ✓ 214 [arm] › e2e/specs/prd-2026-007-slots-multicycle.spec.ts:285:6 › PRD-2026-007 — multi-cycle via re-check-in (G7/OQ-6) › TC-ARM-186 re-check-in on a closed (all-CHECKED_OUT) reservation re-opens operability [G7] (4.5s) 2026-10-16T09:37:31.834Z ✓ 216 [arm] › e2e/specs/prd-2026-007-noshow-cancel.spec.ts:353:6 › PRD-2026-007 — scheduled cancel/no-show with withdraw window › TC-ARM-121 concurrent cancel + check-in race resolves to exactly one winner [S-19] (3.8s) 2026-10-16T09:37:33.536Z ✓ 215 [arm] › e2e/specs/prd-2026-007-room-cards.spec.ts:305:6 › PRD-2026-007 — room cards on Booking Details › TC-ARM-060 no console errors or 5xx network responses on the details page [quality gate] (5.7s) 2026-10-16T09:37:40.450Z ✓ 219 [arm] › e2e/specs/prd-2026-007-room-cards.spec.ts:320:6 › PRD-2026-007 — room cards on Booking Details › TC-ARM-061 cancelled-room reason is not silently lost (API carries reason; UI shows terminal state) [Should-1] (6.9s) 2026-10-16T09:37:42.762Z ✓ 218 [arm] › e2e/specs/prd-2026-007-noshow-cancel.spec.ts:368:6 › PRD-2026-007 — scheduled cancel/no-show with withdraw window › TC-ARM-122 two parallel identical cancels: one wins, one 409s, state single-applied [S-20] (3.0s) 2026-10-16T09:37:47.203Z ✓ 220 [arm] › e2e/specs/prd-2026-007-room-cards.spec.ts:330:6 › PRD-2026-007 — room cards on Booking Details › TC-ARM-062 room-card layout holds at 1280×720 (chip not clipped) [UX] (6.7s) 2026-10-16T09:37:47.777Z ✓ 221 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:143:7 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-001 all UPCOMING → UPCOMING [CR-2/S-02] (4.6s) 2026-10-16T09:37:49.955Z ✓ 217 [arm] › e2e/specs/prd-2026-007-slots-multicycle.spec.ts:305:6 › PRD-2026-007 — multi-cycle via re-check-in (G7/OQ-6) › TC-ARM-187 legacy pre-ARM booking reads back with a backfilled slot [S-21 migration] (300ms) 2026-10-16T09:37:52.573Z ✓ 223 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:143:7 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-002 all CHECKED_IN → CHECKED_IN [CR-2/S-04] (4.8s) 2026-10-16T09:37:55.510Z ✓ 224 [arm] › e2e/specs/prd-2026-007-stay-view.spec.ts:119:6 › PRD-2026-007 — stay view blocks per room/slot › TC-ARM-230 created booking appears as a block with the guest name [stay view] (5.1s) 2026-10-16T09:37:56.164Z ✓ 225 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:143:7 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-003 all CHECKED_OUT → CHECKED_OUT (terminal close) [CR-2/CR-3] (3.6s) 2026-10-16T09:38:00.820Z ✓ 227 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:143:7 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-004 all CANCELLED → CANCELLED [CR-2/S-05] (4.6s) 2026-10-16T09:38:01.100Z ✓ 226 [arm] › e2e/specs/prd-2026-007-stay-view.spec.ts:125:6 › PRD-2026-007 — stay view blocks per room/slot › TC-ARM-231 multi-room booking renders one block per room row [stay view/slots] (5.6s) 2026-10-16T09:38:06.530Z ✓ 228 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:143:7 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-005 all NO_SHOW → NO_SHOW [CR-2] (5.7s) 2026-10-16T09:38:06.608Z ✓ 229 [arm] › e2e/specs/prd-2026-007-stay-view.spec.ts:132:6 › PRD-2026-007 — stay view blocks per room/slot › TC-ARM-232 UPCOMING reservation block is purple family [stay view colors] (5.5s) 2026-10-16T09:38:12.328Z ✓ 231 [arm] › e2e/specs/prd-2026-007-stay-view.spec.ts:138:6 › PRD-2026-007 — stay view blocks per room/slot › TC-ARM-233 CHECKED_IN room block is red family [stay view colors] (5.7s) 2026-10-16T09:38:12.482Z ✓ 230 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:143:7 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-006 1 CHECKED_IN + 2 UPCOMING → PARTIAL_CHECKED_IN [CR-2/S-03] (5.9s) 2026-10-16T09:38:18.632Z ✓ 232 [arm] › e2e/specs/prd-2026-007-stay-view.spec.ts:146:6 › PRD-2026-007 — stay view blocks per room/slot › TC-ARM-234 CHECKED_OUT room block is grey family [stay view colors] (6.3s) 2026-10-16T09:38:18.741Z ✓ 233 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:143:7 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-007 4 CHECKED_IN + 1 UPCOMING → PARTIAL_CHECKED_IN [CR-2] (6.2s) 2026-10-16T09:38:23.118Z ✓ 222 [arm] › e2e/specs/prd-2026-007-room-cards.spec.ts:345:6 › PRD-2026-007 — room cards on Booking Details › TC-ARM-063 NO_SHOW + UPCOMING mix: parent collapses to UPCOMING in UI too [CR-2 collapse] (6.9s) 2026-10-16T09:38:23.689Z ✓ 235 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:143:7 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-008 1 CHECKED_OUT + 1 CHECKED_IN → PARTIALLY_CHECKED_OUT (stays open) [CR-2/CR-3/S-31] (4.9s) 2026-10-16T09:38:25.116Z ✓ 234 [arm] › e2e/specs/prd-2026-007-stay-view.spec.ts:162:6 › PRD-2026-007 — stay view blocks per room/slot › TC-ARM-235 partial state renders mixed blocks: one red, one purple, same reservation [Must 2/slots] (6.5s) 2026-10-16T09:38:28.495Z ✓ 236 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:143:7 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-009 UPCOMING + CHECKED_OUT (no CHECKED_IN) → VARIED_STATUS [CR-2 else-branch] (4.8s) 2026-10-16T09:38:33.556Z ✓ 237 [arm] › e2e/specs/prd-2026-007-stay-view.spec.ts:175:6 › PRD-2026-007 — stay view blocks per room/slot › TC-ARM-236 cancelled room frees its row — block no longer rendered [inventory release] (8.4s) 2026-10-16T09:38:33.964Z ✓ 238 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:143:7 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-010 UPCOMING + CHECKED_IN + CHECKED_OUT → VARIED_STATUS [CR-2 else-branch] (5.5s) 2026-10-16T09:38:38.668Z ✓ 240 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:143:7 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-011 CANCELLED + UPCOMING → UPCOMING (collapse; deviates from PRD §6.4 prose) [CR-2 collapse/S-23] (4.7s) 2026-10-16T09:38:41.198Z ✓ 239 [arm] › e2e/specs/prd-2026-007-stay-view.spec.ts:184:6 › PRD-2026-007 — stay view blocks per room/slot › TC-ARM-237 no-show room frees its row likewise [inventory release] (7.6s) 2026-10-16T09:38:43.067Z ✓ 241 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:143:7 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-012 NO_SHOW + UPCOMING → UPCOMING (collapse) [CR-2 collapse/S-11] (4.4s) 2026-10-16T09:38:45.820Z ✘ 211 [arm] › e2e/specs/prd-2026-007-partial-checkin.spec.ts:134:6 › PRD-2026-007 — partial check-in › TC-ARM-074 closing the modal mutates nothing [S-18 analog] (1.6m) 2026-10-16T09:38:47.819Z ✓ 243 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:143:7 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-013 CANCELLED + CHECKED_IN → CHECKED_IN (collapse) [CR-2 collapse] (4.7s) 2026-10-16T09:38:51.914Z ✓ 245 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:143:7 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-014 NO_SHOW + CHECKED_IN → CHECKED_IN (collapse) [CR-2 collapse] (4.1s) 2026-10-16T09:38:53.219Z ✓ 244 [arm] › e2e/specs/prd-2026-007-partial-checkin.spec.ts:145:6 › PRD-2026-007 — partial check-in › TC-ARM-075 API: checking in a subset flips only those rooms [Must 3/S-08] (5.8s) 2026-10-16T09:38:56.698Z ✓ 246 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:143:7 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-015 CANCELLED + CHECKED_OUT → CHECKED_OUT (collapse) [CR-2 collapse] (4.8s) 2026-10-16T09:38:57.875Z ✓ 247 [arm] › e2e/specs/prd-2026-007-partial-checkin.spec.ts:159:6 › PRD-2026-007 — partial check-in › TC-ARM-076 API: untouched rooms keep null actualCheckInTime [audit integrity, §1] (4.6s) 2026-10-16T09:38:57.965Z ✘ 242 [arm] › e2e/specs/prd-2026-007-stay-view.spec.ts:214:6 › PRD-2026-007 — stay view blocks per room/slot › TC-ARM-238 multi-cycle reservation renders one block PER SLOT with a gap between cycles [G7/slots — the slot-correctness check] (16.7s) 2026-10-16T09:39:02.052Z ✓ 248 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:143:7 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-016 CANCELLED + NO_SHOW (mixed terminals only) → VARIED_STATUS [CR-2 else/S-07] (5.3s) 2026-10-16T09:39:02.467Z ✓ 249 [arm] › e2e/specs/prd-2026-007-partial-checkin.spec.ts:171:6 › PRD-2026-007 — partial check-in › TC-ARM-077 API: arrival timestamp ≈ now on checked rooms [audit-true arrival] (4.6s) 2026-10-16T09:39:06.655Z ✓ 252 [arm] › e2e/specs/prd-2026-007-partial-checkin.spec.ts:182:6 › PRD-2026-007 — partial check-in › TC-ARM-078 API: explicit actualCheckInTime is honored [Must 3] (4.2s) 2026-10-16T09:39:08.333Z ✓ 251 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:143:7 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-017 CANCELLED + NO_SHOW + CHECKED_OUT → CHECKED_OUT (single progression state collapses) [CR-2 collapse/S-07] (6.3s) 2026-10-16T09:39:11.159Z ✘ 250 [arm] › e2e/specs/prd-2026-007-stay-view.spec.ts:226:6 › PRD-2026-007 — stay view blocks per room/slot › TC-ARM-239 cycle-2 block sits on its own dates (not stretched across the gap) [slots] (13.2s) 2026-10-16T09:39:12.343Z ✓ 253 [arm] › e2e/specs/prd-2026-007-partial-checkin.spec.ts:192:6 › PRD-2026-007 — partial check-in › TC-ARM-079 staggered arrival journey: 2 then 2 — parent PARTIAL_CHECKED_IN then CHECKED_IN [S-03/S-04/§6.2] (5.7s) 2026-10-16T09:39:13.844Z ✓ 254 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:143:7 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-018 CANCELLED + UPCOMING + CHECKED_IN → PARTIAL_CHECKED_IN (terminal ignored) [CR-2] (5.5s) 2026-10-16T09:39:16.445Z ✓ 255 [arm] › e2e/specs/prd-2026-007-stay-view.spec.ts:246:6 › PRD-2026-007 — stay view blocks per room/slot › TC-ARM-240 block context menu offers status-appropriate actions [stay view menu] (5.3s) 2026-10-16T09:39:16.892Z ✓ 256 [arm] › e2e/specs/prd-2026-007-partial-checkin.spec.ts:205:6 › PRD-2026-007 — partial check-in › TC-ARM-080 full-subset check-in (all rooms at once) lands parent CHECKED_IN [Must 3] (4.5s) 2026-10-16T09:39:19.483Z ✓ 257 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:143:7 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-019 NO_SHOW + CHECKED_IN + CHECKED_OUT → PARTIALLY_CHECKED_OUT (terminal ignored) [CR-2] (5.6s) 2026-10-16T09:39:21.863Z ✓ 259 [arm] › e2e/specs/prd-2026-007-partial-checkin.spec.ts:214:6 › PRD-2026-007 — partial check-in › TC-ARM-081 retried check-in call is rejected and does not double-apply [S-16/S-17] (5.0s) 2026-10-16T09:39:22.379Z ✓ 258 [arm] › e2e/specs/prd-2026-007-stay-view.spec.ts:257:6 › PRD-2026-007 — stay view blocks per room/slot › TC-ARM-241 block menu navigates to the booking details of that checkin [stay view → details] (5.9s) 2026-10-16T09:39:23.028Z ✓ 260 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:143:7 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-020 single room: created → UPCOMING (zero-regression) [S-01/Must 9] (3.5s) 2026-10-16T09:39:26.538Z ✓ 263 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:143:7 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-021 single room: check-in → CHECKED_IN [S-01/Must 9] (3.5s) 2026-10-16T09:39:29.993Z ✓ 262 [arm] › e2e/specs/prd-2026-007-stay-view.spec.ts:266:6 › PRD-2026-007 — stay view blocks per room/slot › TC-ARM-242 stay view reflects a mutation after reload (no stale grid) [freshness] (7.6s) 2026-10-16T09:39:30.216Z ✓ 261 [arm] › e2e/specs/prd-2026-007-partial-checkin.spec.ts:230:6 › PRD-2026-007 — partial check-in › TC-ARM-082 one-by-one staggering over 5 rooms keeps every intermediate state exact [Must 12] (8.3s) 2026-10-16T09:39:30.293Z ✓ 264 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:143:7 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-022 single room: checkout → CHECKED_OUT (closed) [S-01/CR-3] (3.7s) 2026-10-16T09:39:32.586Z ✓ 265 [arm] › e2e/specs/prd-2026-007-stay-view.spec.ts:275:6 › PRD-2026-007 — stay view blocks per room/slot › TC-ARM-243 every clean inventory room has a row in the grid [stay view completeness] (2.6s) 2026-10-16T09:39:34.253Z ✓ 267 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:143:7 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-023 single room: cancel → CANCELLED [S-23] (3.9s) 2026-10-16T09:39:35.768Z ✓ 266 [arm] › e2e/specs/prd-2026-007-partial-checkin.spec.ts:243:6 › PRD-2026-007 — partial check-in › TC-ARM-083 check-in proceeds while a sibling room is NO_SHOW (terminal+progression mix) [CR-2] (5.5s) 2026-10-16T09:39:38.526Z ✓ 269 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:143:7 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-024 single room: no-show → NO_SHOW [S-22] (4.3s) 2026-10-16T09:39:39.161Z ✓ 268 [arm] › e2e/specs/prd-2026-007-stay-view.spec.ts:283:6 › PRD-2026-007 — stay view blocks per room/slot › TC-ARM-244 two back-to-back bookings on one room render side by side without overlap [slot boundaries] (6.6s) 2026-10-16T09:39:42.055Z ✓ 272 [arm] › e2e/specs/prd-2026-007-stay-view.spec.ts:297:6 › PRD-2026-007 — stay view blocks per room/slot › TC-ARM-245 stay view loads without console errors or 5xx [quality gate] (2.9s) 2026-10-16T09:39:43.255Z ✓ 270 [arm] › e2e/specs/prd-2026-007-partial-checkin.spec.ts:254:6 › PRD-2026-007 — partial check-in › TC-ARM-084 UI reflects partial state immediately after API check-in + reload [G5] (7.4s) 2026-10-16T09:39:45.339Z ✓ 273 [arm] › e2e/specs/prd-2026-007-stay-view.spec.ts:309:6 › PRD-2026-007 — stay view blocks per room/slot › TC-ARM-246 stay view interactive within 3s on a warm server [soft perf, logged] (3.3s) 2026-10-16T09:39:46.202Z ✓ 271 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:143:7 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-025 5-room staggered full journey lands CHECKED_OUT [G2/G3] (7.7s) 2026-10-16T09:39:49.814Z ✓ 274 [arm] › e2e/specs/prd-2026-007-partial-checkin.spec.ts:263:6 › PRD-2026-007 — partial check-in › TC-ARM-086 single-room booking has no partial check-in entry — plain Create check-in only [S-01 equivalence] (6.5s) 2026-10-16T09:39:51.265Z ✓ 276 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:151:7 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-026 cannot CANCEL a CHECKED_IN room (NG1) [S-10/NG1] (5.1s) 2026-10-16T09:39:56.292Z ✓ 278 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:151:7 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-027 cannot NO_SHOW a CHECKED_IN room [state machine] (5.0s) 2026-10-16T09:40:01.113Z ✓ 279 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:151:7 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-028 cannot CHECK_OUT an UPCOMING room [state machine] (4.8s) 2026-10-16T09:40:06.768Z ✓ 280 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:151:7 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-029 cannot CHECK_IN a CANCELLED room [state machine] (5.6s) 2026-10-16T09:40:08.023Z ✓ 275 [arm] › e2e/specs/prd-2026-007-stay-view.spec.ts:318:6 › PRD-2026-007 — stay view blocks per room/slot › TC-ARM-247 maintenance blocks render alongside ARM blocks [regression smoke] (5.7s) 2026-10-16T09:40:11.808Z ✓ 281 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:151:7 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-030 cannot CHECK_IN a NO_SHOW room (late guest ⇒ new reservation) [S-22] (5.0s) 2026-10-16T09:40:16.929Z ✓ 282 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:151:7 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-031 cannot CHECK_IN an already CHECKED_OUT room [CR-3 terminal] (5.1s) 2026-10-16T09:40:21.779Z ✓ 283 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:151:7 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-032 batch is all-or-nothing: one ineligible room rejects the whole call [room-lifecycle.guards assertBatch] (4.8s) 2026-10-16T09:40:25.889Z ✓ 284 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:168:6 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-033 double check-in of the same room: second call rejected, state stable [S-16/S-17] (4.1s) 2026-10-16T09:40:29.617Z ✓ 285 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:185:6 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-034 check-in with empty roomInstanceIds → validation error, no mutation (3.7s) 2026-10-16T09:40:37.331Z ✓ 286 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:193:6 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-035 check-in with a foreign roomInstanceId → 4xx, foreign booking untouched (7.7s) 2026-10-16T09:40:44.767Z ✓ 287 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:202:6 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-036 parent status persists correctly after EVERY step of a staggered journey [CR-2] (7.4s) 2026-10-16T09:41:24.158Z ✘ 277 [arm] › e2e/specs/prd-2026-007-partial-checkin.spec.ts:273:6 › PRD-2026-007 — partial check-in › TC-ARM-087 selected chip toggles off on second click (deselect) [UX] (1.5m) 2026-10-16T09:41:34.625Z ✓ 288 [arm] › e2e/specs/prd-2026-007-partial-checkin.spec.ts:283:6 › PRD-2026-007 — partial check-in › TC-ARM-088 navigating away from the wizard without confirming leaves rooms UPCOMING [S-18] (9.4s) 2026-10-16T09:41:39.521Z ✓ 289 [arm] › e2e/specs/prd-2026-007-partial-checkin.spec.ts:295:6 › PRD-2026-007 — partial check-in › TC-ARM-089 fully-terminal booking offers no partial check-in entry [state gating] (4.9s) 2026-10-16T09:41:46.047Z ✘ 290 [arm] › e2e/specs/prd-2026-007-partial-checkin.spec.ts:304:6 › PRD-2026-007 — partial check-in › TC-ARM-090 parent transitions live in a second context (fresh read, no cross-session staleness) [S-19-lite] (6.2s) 2026-10-16T09:42:36.836Z ✘ 291 [arm] › e2e/specs/prd-2026-007-partial-checkin.spec.ts:347:5 › TC-ARM-091 §6.2 story: 4-room block, 2 arrive first, 2 later — full wizard journey [S-08/S-12] (49.1s) 2026-10-16T09:42:36.867Z 1) [chromium] › e2e/specs/checkin-id-per-adult.spec.ts:70:6 › One ID per adult — check-in form › TC-IDPA-UI-2 Check-in short of IDs shows the counts and checks nothing in 2026-10-16T09:42:36.867Z Error: expect(locator).toBeVisible() failed 2026-10-16T09:42:36.867Z Locator: getByTestId('checkin__id_per_adult_notice') 2026-10-16T09:42:36.867Z Expected: visible 2026-10-16T09:42:36.867Z Timeout: 10000ms 2026-10-16T09:42:36.867Z Error: element(s) not found 2026-10-16T09:42:36.867Z Call log: 2026-10-16T09:42:36.867Z  - Expect "toBeVisible" with timeout 10000ms 2026-10-16T09:42:36.867Z  - waiting for getByTestId('checkin__id_per_adult_notice') 2026-10-16T09:42:36.867Z 79 | 2026-10-16T09:42:36.867Z 80 | const notice = page.getByTestId('checkin__id_per_adult_notice'); 2026-10-16T09:42:36.867Z > 81 | await expect(notice).toBeVisible(); 2026-10-16T09:42:36.867Z | ^ 2026-10-16T09:42:36.867Z 82 | await expect(notice).toHaveAttribute('data-adults', '2'); 2026-10-16T09:42:36.867Z 83 | await expect(notice).toHaveAttribute('data-ids', '1'); 2026-10-16T09:42:36.867Z 84 | await expect(notice).toContainText('2 adults added, 1 guest ID uploaded.'); 2026-10-16T09:42:36.867Z at /home/ubuntu/regression-runner/repos/dev/hotel-frontend-core/e2e/specs/checkin-id-per-adult.spec.ts:81:24 2026-10-16T09:42:36.867Z attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── 2026-10-16T09:42:36.867Z test-results/checkin-id-per-adult-One-I-e1688-ounts-and-checks-nothing-in-chromium/test-failed-1.png 2026-10-16T09:42:36.867Z ──────────────────────────────────────────────────────────────────────────────────────────────── 2026-10-16T09:42:36.867Z Error Context: test-results/checkin-id-per-adult-One-I-e1688-ounts-and-checks-nothing-in-chromium/error-context.md 2026-10-16T09:42:36.867Z Error Context: test-results/checkin-id-per-adult-One-I-e1688-ounts-and-checks-nothing-in-chromium/error-context.md 2026-10-16T09:42:36.867Z attachment #4: trace (application/zip) ───────────────────────────────────────────────────────── 2026-10-16T09:42:36.867Z test-results/checkin-id-per-adult-One-I-e1688-ounts-and-checks-nothing-in-chromium/trace.zip 2026-10-16T09:42:36.868Z Usage: 2026-10-16T09:42:36.868Z pnpm exec playwright show-trace test-results/checkin-id-per-adult-One-I-e1688-ounts-and-checks-nothing-in-chromium/trace.zip 2026-10-16T09:42:36.868Z ──────────────────────────────────────────────────────────────────────────────────────────────── 2026-10-16T09:42:36.868Z 2) [chromium] › e2e/specs/prd-2026-005-active-template.spec.ts:61:6 › PRD-2026-005 — Active custom template wins › TC-PRD-092 template with rect color=transparent still renders (no hex crash) 2026-10-16T09:42:36.868Z Error: expect(received).toBe(expected) // Object.is equality 2026-10-16T09:42:36.868Z Expected: true 2026-10-16T09:42:36.868Z Received: false 2026-10-16T09:42:36.868Z 122 | }, 2026-10-16T09:42:36.868Z 123 | ); 2026-10-16T09:42:36.868Z > 124 | expect(created.ok()).toBe(true); 2026-10-16T09:42:36.868Z | ^ 2026-10-16T09:42:36.868Z 125 | const createdBody = (await created.json()) as { id: string }; 2026-10-16T09:42:36.868Z 126 | 2026-10-16T09:42:36.868Z 127 | const beforeResp = await authedPage.request.get( 2026-10-16T09:42:36.868Z at /home/ubuntu/regression-runner/repos/dev/hotel-frontend-core/e2e/specs/prd-2026-005-active-template.spec.ts:124:24 2026-10-16T09:42:36.868Z attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── 2026-10-16T09:42:36.868Z test-results/prd-2026-005-active-templa-69acc-still-renders-no-hex-crash--chromium/test-failed-1.png 2026-10-16T09:42:36.868Z ──────────────────────────────────────────────────────────────────────────────────────────────── 2026-10-16T09:42:36.868Z Error Context: test-results/prd-2026-005-active-templa-69acc-still-renders-no-hex-crash--chromium/error-context.md 2026-10-16T09:42:36.868Z Error Context: test-results/prd-2026-005-active-templa-69acc-still-renders-no-hex-crash--chromium/error-context.md 2026-10-16T09:42:36.868Z attachment #4: trace (application/zip) ───────────────────────────────────────────────────────── 2026-10-16T09:42:36.868Z test-results/prd-2026-005-active-templa-69acc-still-renders-no-hex-crash--chromium/trace.zip 2026-10-16T09:42:36.868Z Usage: 2026-10-16T09:42:36.868Z pnpm exec playwright show-trace test-results/prd-2026-005-active-templa-69acc-still-renders-no-hex-crash--chromium/trace.zip 2026-10-16T09:42:36.868Z ──────────────────────────────────────────────────────────────────────────────────────────────── 2026-10-16T09:42:36.868Z 3) [chromium] › e2e/specs/prd-2026-005-supplementary-docs.spec.ts:48:6 › PRD-2026-005 — Supplementary documents › TC-PRD-051 Credit Note (full reversal) generates 201 + PDF blob 2026-10-16T09:42:36.868Z Test timeout of 90000ms exceeded. 2026-10-16T09:42:36.868Z Error: page.waitForResponse: Test timeout of 90000ms exceeded. 2026-10-16T09:42:36.868Z 63 | await authedPage.locator('#reason').fill('E2E QA · CN full reversal'); 2026-10-16T09:42:36.868Z 64 | const [response] = await Promise.all([ 2026-10-16T09:42:36.868Z > 65 | authedPage.waitForResponse( 2026-10-16T09:42:36.868Z | ^ 2026-10-16T09:42:36.869Z 66 | (r) => 2026-10-16T09:42:36.869Z 67 | r.url().includes('/credit-notes') && 2026-10-16T09:42:36.869Z 68 | r.request().method() === 'POST' && 2026-10-16T09:42:36.869Z at /home/ubuntu/regression-runner/repos/dev/hotel-frontend-core/e2e/specs/prd-2026-005-supplementary-docs.spec.ts:65:15 2026-10-16T09:42:36.869Z attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── 2026-10-16T09:42:36.869Z test-results/prd-2026-005-supplementary-eda04-rsal-generates-201-PDF-blob-chromium/test-failed-1.png 2026-10-16T09:42:36.869Z ──────────────────────────────────────────────────────────────────────────────────────────────── 2026-10-16T09:42:36.869Z Error Context: test-results/prd-2026-005-supplementary-eda04-rsal-generates-201-PDF-blob-chromium/error-context.md 2026-10-16T09:42:36.869Z Error Context: test-results/prd-2026-005-supplementary-eda04-rsal-generates-201-PDF-blob-chromium/error-context.md 2026-10-16T09:42:36.869Z attachment #4: trace (application/zip) ───────────────────────────────────────────────────────── 2026-10-16T09:42:36.869Z test-results/prd-2026-005-supplementary-eda04-rsal-generates-201-PDF-blob-chromium/trace.zip 2026-10-16T09:42:36.869Z Usage: 2026-10-16T09:42:36.869Z pnpm exec playwright show-trace test-results/prd-2026-005-supplementary-eda04-rsal-generates-201-PDF-blob-chromium/trace.zip 2026-10-16T09:42:36.869Z ──────────────────────────────────────────────────────────────────────────────────────────────── 2026-10-16T09:42:36.869Z 4) [chromium] › e2e/specs/reservation-unassign-action.spec.ts:149:6 › Reservation Unassign: Unassign Room action › TC-UNASSIGN-6 Return to Room N puts the booking back in its room 2026-10-16T09:42:36.869Z Error: expect(locator).toHaveText(expected) failed 2026-10-16T09:42:36.869Z Locator: getByTestId('unassigned-room-banner__return') 2026-10-16T09:42:36.869Z Expected: "Return to Room 101" 2026-10-16T09:42:36.869Z Timeout: 10000ms 2026-10-16T09:42:36.869Z Error: element(s) not found 2026-10-16T09:42:36.869Z Call log: 2026-10-16T09:42:36.869Z  - Expect "toHaveText" with timeout 10000ms 2026-10-16T09:42:36.869Z  - waiting for getByTestId('unassigned-room-banner__return') 2026-10-16T09:42:36.869Z 154 | await page.goto(bookingUrl(checkInId)); 2026-10-16T09:42:36.869Z 155 | const returnButton = page.getByTestId('unassigned-room-banner__return'); 2026-10-16T09:42:36.869Z > 156 | await expect(returnButton).toHaveText(`Return to Room ${roomNumber}`); 2026-10-16T09:42:36.869Z | ^ 2026-10-16T09:42:36.869Z 157 | 2026-10-16T09:42:36.869Z 158 | const moved = page.waitForResponse( 2026-10-16T09:42:36.869Z 159 | (r) => /\/checkins\/[^/]+\/rooms\/[^/]+\/move$/.test(r.url()) && r.request().method() === 'POST', 2026-10-16T09:42:36.869Z at /home/ubuntu/regression-runner/repos/dev/hotel-frontend-core/e2e/specs/reservation-unassign-action.spec.ts:156:30 2026-10-16T09:42:36.869Z attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── 2026-10-16T09:42:36.869Z test-results/reservation-unassign-actio-42b73-he-booking-back-in-its-room-chromium/test-failed-1.png 2026-10-16T09:42:36.869Z ──────────────────────────────────────────────────────────────────────────────────────────────── 2026-10-16T09:42:36.869Z Error Context: test-results/reservation-unassign-actio-42b73-he-booking-back-in-its-room-chromium/error-context.md 2026-10-16T09:42:36.869Z Error Context: test-results/reservation-unassign-actio-42b73-he-booking-back-in-its-room-chromium/error-context.md 2026-10-16T09:42:36.869Z attachment #4: trace (application/zip) ───────────────────────────────────────────────────────── 2026-10-16T09:42:36.869Z test-results/reservation-unassign-actio-42b73-he-booking-back-in-its-room-chromium/trace.zip 2026-10-16T09:42:36.869Z Usage: 2026-10-16T09:42:36.869Z pnpm exec playwright show-trace test-results/reservation-unassign-actio-42b73-he-booking-back-in-its-room-chromium/trace.zip 2026-10-16T09:42:36.869Z ──────────────────────────────────────────────────────────────────────────────────────────────── 2026-10-16T09:42:36.869Z 5) [chromium] › e2e/specs/reservation-unassign.spec.ts:8:5 › TC-UNASSIGN-MONEY-1 frees and returns a reservation room without changing its money 2026-10-16T09:42:36.870Z Error: createReservation → 400: {"statusCode":400,"message":"One or more selected rooms are already blocked or occupied during the selected period.","timestamp":"2026-10-16T09:31:57.951Z","path":"/reservations","requestId":"75c9876e-bc39-416a-a2f9-bb22997ed671"} 2026-10-16T09:42:36.870Z expect(received).toBeTruthy() 2026-10-16T09:42:36.870Z Received: false 2026-10-16T09:42:36.870Z at ../fixtures/arm-api.ts:154 2026-10-16T09:42:36.870Z 152 | }); 2026-10-16T09:42:36.870Z 153 | const text = await res.text(); 2026-10-16T09:42:36.870Z > 154 | expect(res.ok(), `createReservation → ${res.status()}: ${text.slice(0, 500)}`).toBeTruthy(); 2026-10-16T09:42:36.870Z | ^ 2026-10-16T09:42:36.870Z 155 | const body = JSON.parse(text); 2026-10-16T09:42:36.870Z 156 | const checkInId: string = body.id ?? body.checkInId ?? body.data?.id; 2026-10-16T09:42:36.870Z 157 | expect(checkInId, `reservation id missing in response: ${text.slice(0, 300)}`).toBeTruthy(); 2026-10-16T09:42:36.870Z at ArmApi.createReservation (/home/ubuntu/regression-runner/repos/dev/hotel-frontend-core/e2e/fixtures/arm-api.ts:154:82) 2026-10-16T09:42:36.870Z at /home/ubuntu/regression-runner/repos/dev/hotel-frontend-core/e2e/specs/reservation-unassign.spec.ts:26:25 2026-10-16T09:42:36.870Z attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── 2026-10-16T09:42:36.870Z test-results/reservation-unassign-TC-UN-3c625--without-changing-its-money-chromium/test-failed-1.png 2026-10-16T09:42:36.870Z ──────────────────────────────────────────────────────────────────────────────────────────────── 2026-10-16T09:42:36.870Z Error Context: test-results/reservation-unassign-TC-UN-3c625--without-changing-its-money-chromium/error-context.md 2026-10-16T09:42:36.870Z attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── 2026-10-16T09:42:36.870Z test-results/reservation-unassign-TC-UN-3c625--without-changing-its-money-chromium/trace.zip 2026-10-16T09:42:36.870Z Usage: 2026-10-16T09:42:36.870Z pnpm exec playwright show-trace test-results/reservation-unassign-TC-UN-3c625--without-changing-its-money-chromium/trace.zip 2026-10-16T09:42:36.870Z ──────────────────────────────────────────────────────────────────────────────────────────────── 2026-10-16T09:42:36.870Z 6) [chromium] › e2e/specs/revenue-guardrail-removal.spec.ts:23:5 › TC-REV-GUARD-1 clearing both configured limits removes the guardrail 2026-10-16T09:42:36.870Z Error: GET guardrails → 403 2026-10-16T09:42:36.870Z expect(received).toBeTruthy() 2026-10-16T09:42:36.871Z Received: false 2026-10-16T09:42:36.871Z 17 | async function currentGuardrails(api: Awaited>, path: string): Promise { 2026-10-16T09:42:36.871Z 18 | const response = await api.get(path); 2026-10-16T09:42:36.871Z > 19 | expect(response.ok(), `GET guardrails → ${response.status()}`).toBeTruthy(); 2026-10-16T09:42:36.871Z | ^ 2026-10-16T09:42:36.871Z 20 | return ((await response.json()) as GuardrailResponse).data; 2026-10-16T09:42:36.871Z 21 | } 2026-10-16T09:42:36.871Z 22 | 2026-10-16T09:42:36.871Z at currentGuardrails (/home/ubuntu/regression-runner/repos/dev/hotel-frontend-core/e2e/specs/revenue-guardrail-removal.spec.ts:19:65) 2026-10-16T09:42:36.871Z at /home/ubuntu/regression-runner/repos/dev/hotel-frontend-core/e2e/specs/revenue-guardrail-removal.spec.ts:31:16 2026-10-16T09:42:36.871Z attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── 2026-10-16T09:42:36.871Z test-results/revenue-guardrail-removal--445ed-imits-removes-the-guardrail-chromium/test-failed-1.png 2026-10-16T09:42:36.871Z ──────────────────────────────────────────────────────────────────────────────────────────────── 2026-10-16T09:42:36.871Z Error Context: test-results/revenue-guardrail-removal--445ed-imits-removes-the-guardrail-chromium/error-context.md 2026-10-16T09:42:36.871Z attachment #3: trace (application/zip) ───────────────────────────────────────────────────────── 2026-10-16T09:42:36.871Z test-results/revenue-guardrail-removal--445ed-imits-removes-the-guardrail-chromium/trace.zip 2026-10-16T09:42:36.871Z Usage: 2026-10-16T09:42:36.871Z pnpm exec playwright show-trace test-results/revenue-guardrail-removal--445ed-imits-removes-the-guardrail-chromium/trace.zip 2026-10-16T09:42:36.871Z ──────────────────────────────────────────────────────────────────────────────────────────────── 2026-10-16T09:42:36.871Z 7) [arm] › e2e/specs/prd-2026-007-noshow-cancel.spec.ts:82:6 › PRD-2026-007 — no-show per room › TC-ARM-100 UI: single-room no-show leaves siblings untouched [Must 4/S-11/§6.3] 2026-10-16T09:42:36.871Z Error: expect(locator).toBeVisible() failed 2026-10-16T09:42:36.871Z Locator: getByRole('dialog') 2026-10-16T09:42:36.871Z Expected: visible 2026-10-16T09:42:36.871Z Error: strict mode violation: getByRole('dialog') resolved to 2 elements: 2026-10-16T09:42:36.871Z 1) aka getByRole('dialog', { name: 'Mark As No-Show' }) 2026-10-16T09:42:36.871Z 2) aka locator('#engagement-toast-responsive-inner-div') 2026-10-16T09:42:36.871Z Call log: 2026-10-16T09:42:36.872Z  - Expect "toBeVisible" with timeout 10000ms 2026-10-16T09:42:36.872Z  - waiting for getByRole('dialog') 2026-10-16T09:42:36.872Z 59 | .getByRole('menuitem', { name: mode === 'NO_SHOW' ? /mark as no-show/i : /^cancel reservation$/i }) 2026-10-16T09:42:36.872Z 60 | .click(); 2026-10-16T09:42:36.872Z > 61 | await expect(page.getByRole('dialog')).toBeVisible(); 2026-10-16T09:42:36.872Z | ^ 2026-10-16T09:42:36.872Z 62 | await expect(confirmCta(page, mode)).toBeVisible(); 2026-10-16T09:42:36.872Z 63 | } 2026-10-16T09:42:36.872Z 64 | 2026-10-16T09:42:36.872Z at openModal (/home/ubuntu/regression-runner/repos/dev/hotel-frontend-core/e2e/specs/prd-2026-007-noshow-cancel.spec.ts:61:41) 2026-10-16T09:42:36.872Z at /home/ubuntu/regression-runner/repos/dev/hotel-frontend-core/e2e/specs/prd-2026-007-noshow-cancel.spec.ts:87:3 2026-10-16T09:42:36.872Z attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── 2026-10-16T09:42:36.872Z test-results/prd-2026-007-noshow-cancel-185d7-untouched-Must-4-S-11-§6-3--arm/test-failed-1.png 2026-10-16T09:42:36.872Z ──────────────────────────────────────────────────────────────────────────────────────────────── 2026-10-16T09:42:36.872Z Error Context: test-results/prd-2026-007-noshow-cancel-185d7-untouched-Must-4-S-11-§6-3--arm/error-context.md 2026-10-16T09:42:36.872Z Error Context: test-results/prd-2026-007-noshow-cancel-185d7-untouched-Must-4-S-11-§6-3--arm/error-context.md 2026-10-16T09:42:36.872Z attachment #4: trace (application/zip) ───────────────────────────────────────────────────────── 2026-10-16T09:42:36.872Z test-results/prd-2026-007-noshow-cancel-185d7-untouched-Must-4-S-11-§6-3--arm/trace.zip 2026-10-16T09:42:36.872Z Usage: 2026-10-16T09:42:36.872Z pnpm exec playwright show-trace test-results/prd-2026-007-noshow-cancel-185d7-untouched-Must-4-S-11-§6-3--arm/trace.zip 2026-10-16T09:42:36.872Z ──────────────────────────────────────────────────────────────────────────────────────────────── 2026-10-16T09:42:36.873Z 8) [arm] › e2e/specs/prd-2026-007-noshow-cancel.spec.ts:103:6 › PRD-2026-007 — no-show per room › TC-ARM-101 UI: reason is required — CTA disabled while empty [Must 4] 2026-10-16T09:42:36.873Z Error: expect(locator).toBeVisible() failed 2026-10-16T09:42:36.873Z Locator: getByRole('dialog') 2026-10-16T09:42:36.873Z Expected: visible 2026-10-16T09:42:36.873Z Error: strict mode violation: getByRole('dialog') resolved to 2 elements: 2026-10-16T09:42:36.873Z 1) aka getByRole('dialog', { name: 'Mark As No-Show' }) 2026-10-16T09:42:36.873Z 2) aka locator('#engagement-toast-responsive-inner-div') 2026-10-16T09:42:36.873Z Call log: 2026-10-16T09:42:36.873Z  - Expect "toBeVisible" with timeout 10000ms 2026-10-16T09:42:36.873Z  - waiting for getByRole('dialog') 2026-10-16T09:42:36.873Z 59 | .getByRole('menuitem', { name: mode === 'NO_SHOW' ? /mark as no-show/i : /^cancel reservation$/i }) 2026-10-16T09:42:36.873Z 60 | .click(); 2026-10-16T09:42:36.873Z > 61 | await expect(page.getByRole('dialog')).toBeVisible(); 2026-10-16T09:42:36.873Z | ^ 2026-10-16T09:42:36.873Z 62 | await expect(confirmCta(page, mode)).toBeVisible(); 2026-10-16T09:42:36.873Z 63 | } 2026-10-16T09:42:36.873Z 64 | 2026-10-16T09:42:36.873Z at openModal (/home/ubuntu/regression-runner/repos/dev/hotel-frontend-core/e2e/specs/prd-2026-007-noshow-cancel.spec.ts:61:41) 2026-10-16T09:42:36.873Z at /home/ubuntu/regression-runner/repos/dev/hotel-frontend-core/e2e/specs/prd-2026-007-noshow-cancel.spec.ts:106:3 2026-10-16T09:42:36.873Z attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── 2026-10-16T09:42:36.873Z test-results/prd-2026-007-noshow-cancel-81e15-isabled-while-empty-Must-4--arm/test-failed-1.png 2026-10-16T09:42:36.873Z ──────────────────────────────────────────────────────────────────────────────────────────────── 2026-10-16T09:42:36.873Z Error Context: test-results/prd-2026-007-noshow-cancel-81e15-isabled-while-empty-Must-4--arm/error-context.md 2026-10-16T09:42:36.873Z Error Context: test-results/prd-2026-007-noshow-cancel-81e15-isabled-while-empty-Must-4--arm/error-context.md 2026-10-16T09:42:36.873Z attachment #4: trace (application/zip) ───────────────────────────────────────────────────────── 2026-10-16T09:42:36.873Z test-results/prd-2026-007-noshow-cancel-81e15-isabled-while-empty-Must-4--arm/trace.zip 2026-10-16T09:42:36.873Z Usage: 2026-10-16T09:42:36.874Z pnpm exec playwright show-trace test-results/prd-2026-007-noshow-cancel-81e15-isabled-while-empty-Must-4--arm/trace.zip 2026-10-16T09:42:36.874Z ──────────────────────────────────────────────────────────────────────────────────────────────── 2026-10-16T09:42:36.874Z 9) [arm] › e2e/specs/prd-2026-007-noshow-cancel.spec.ts:110:6 › PRD-2026-007 — no-show per room › TC-ARM-102 UI: all-rooms no-show lands parent NO_SHOW [CR-2] 2026-10-16T09:42:36.874Z Error: expect(locator).toBeVisible() failed 2026-10-16T09:42:36.874Z Locator: getByRole('dialog') 2026-10-16T09:42:36.874Z Expected: visible 2026-10-16T09:42:36.874Z Error: strict mode violation: getByRole('dialog') resolved to 2 elements: 2026-10-16T09:42:36.874Z 1) aka getByRole('dialog', { name: 'Mark As No-Show' }) 2026-10-16T09:42:36.874Z 2) aka locator('#engagement-toast-responsive-inner-div') 2026-10-16T09:42:36.874Z Call log: 2026-10-16T09:42:36.874Z  - Expect "toBeVisible" with timeout 10000ms 2026-10-16T09:42:36.874Z  - waiting for getByRole('dialog') 2026-10-16T09:42:36.874Z  3 × locator resolved to  2026-10-16T09:42:36.874Z  - unexpected value "hidden" 2026-10-16T09:42:36.874Z 59 | .getByRole('menuitem', { name: mode === 'NO_SHOW' ? /mark as no-show/i : /^cancel reservation$/i }) 2026-10-16T09:42:36.874Z 60 | .click(); 2026-10-16T09:42:36.874Z > 61 | await expect(page.getByRole('dialog')).toBeVisible(); 2026-10-16T09:42:36.874Z | ^ 2026-10-16T09:42:36.874Z 62 | await expect(confirmCta(page, mode)).toBeVisible(); 2026-10-16T09:42:36.874Z 63 | } 2026-10-16T09:42:36.874Z 64 | 2026-10-16T09:42:36.874Z at openModal (/home/ubuntu/regression-runner/repos/dev/hotel-frontend-core/e2e/specs/prd-2026-007-noshow-cancel.spec.ts:61:41) 2026-10-16T09:42:36.874Z at /home/ubuntu/regression-runner/repos/dev/hotel-frontend-core/e2e/specs/prd-2026-007-noshow-cancel.spec.ts:115:3 2026-10-16T09:42:36.874Z attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── 2026-10-16T09:42:36.874Z test-results/prd-2026-007-noshow-cancel-91308--lands-parent-NO-SHOW-CR-2--arm/test-failed-1.png 2026-10-16T09:42:36.874Z ──────────────────────────────────────────────────────────────────────────────────────────────── 2026-10-16T09:42:36.874Z Error Context: test-results/prd-2026-007-noshow-cancel-91308--lands-parent-NO-SHOW-CR-2--arm/error-context.md 2026-10-16T09:42:36.874Z Error Context: test-results/prd-2026-007-noshow-cancel-91308--lands-parent-NO-SHOW-CR-2--arm/error-context.md 2026-10-16T09:42:36.874Z attachment #4: trace (application/zip) ───────────────────────────────────────────────────────── 2026-10-16T09:42:36.874Z test-results/prd-2026-007-noshow-cancel-91308--lands-parent-NO-SHOW-CR-2--arm/trace.zip 2026-10-16T09:42:36.874Z Usage: 2026-10-16T09:42:36.874Z pnpm exec playwright show-trace test-results/prd-2026-007-noshow-cancel-91308--lands-parent-NO-SHOW-CR-2--arm/trace.zip 2026-10-16T09:42:36.875Z ──────────────────────────────────────────────────────────────────────────────────────────────── 2026-10-16T09:42:36.875Z 10) [arm] › e2e/specs/prd-2026-007-noshow-cancel.spec.ts:188:6 › PRD-2026-007 — cancellation per room › TC-ARM-108 UI: cancel one of five rooms; the other four stay live [Must 5/S-23/§6.4] 2026-10-16T09:42:36.875Z Error: expect(locator).toBeVisible() failed 2026-10-16T09:42:36.875Z Locator: getByRole('dialog') 2026-10-16T09:42:36.875Z Expected: visible 2026-10-16T09:42:36.875Z Error: strict mode violation: getByRole('dialog') resolved to 2 elements: 2026-10-16T09:42:36.875Z 1) aka getByRole('dialog', { name: 'Cancel reservation' }) 2026-10-16T09:42:36.875Z 2) aka locator('#engagement-toast-responsive-inner-div') 2026-10-16T09:42:36.875Z Call log: 2026-10-16T09:42:36.875Z  - Expect "toBeVisible" with timeout 10000ms 2026-10-16T09:42:36.875Z  - waiting for getByRole('dialog') 2026-10-16T09:42:36.875Z  3 × locator resolved to  2026-10-16T09:42:36.875Z  - unexpected value "hidden" 2026-10-16T09:42:36.875Z 59 | .getByRole('menuitem', { name: mode === 'NO_SHOW' ? /mark as no-show/i : /^cancel reservation$/i }) 2026-10-16T09:42:36.875Z 60 | .click(); 2026-10-16T09:42:36.875Z > 61 | await expect(page.getByRole('dialog')).toBeVisible(); 2026-10-16T09:42:36.875Z | ^ 2026-10-16T09:42:36.875Z 62 | await expect(confirmCta(page, mode)).toBeVisible(); 2026-10-16T09:42:36.875Z 63 | } 2026-10-16T09:42:36.875Z 64 | 2026-10-16T09:42:36.875Z at openModal (/home/ubuntu/regression-runner/repos/dev/hotel-frontend-core/e2e/specs/prd-2026-007-noshow-cancel.spec.ts:61:41) 2026-10-16T09:42:36.875Z at /home/ubuntu/regression-runner/repos/dev/hotel-frontend-core/e2e/specs/prd-2026-007-noshow-cancel.spec.ts:193:3 2026-10-16T09:42:36.875Z attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── 2026-10-16T09:42:36.876Z test-results/prd-2026-007-noshow-cancel-97061-stay-live-Must-5-S-23-§6-4--arm/test-failed-1.png 2026-10-16T09:42:36.876Z ──────────────────────────────────────────────────────────────────────────────────────────────── 2026-10-16T09:42:36.876Z Error Context: test-results/prd-2026-007-noshow-cancel-97061-stay-live-Must-5-S-23-§6-4--arm/error-context.md 2026-10-16T09:42:36.876Z Error Context: test-results/prd-2026-007-noshow-cancel-97061-stay-live-Must-5-S-23-§6-4--arm/error-context.md 2026-10-16T09:42:36.876Z attachment #4: trace (application/zip) ───────────────────────────────────────────────────────── 2026-10-16T09:42:36.876Z test-results/prd-2026-007-noshow-cancel-97061-stay-live-Must-5-S-23-§6-4--arm/trace.zip 2026-10-16T09:42:36.876Z Usage: 2026-10-16T09:42:36.876Z pnpm exec playwright show-trace test-results/prd-2026-007-noshow-cancel-97061-stay-live-Must-5-S-23-§6-4--arm/trace.zip 2026-10-16T09:42:36.876Z ──────────────────────────────────────────────────────────────────────────────────────────────── 2026-10-16T09:42:36.876Z 11) [arm] › e2e/specs/prd-2026-007-noshow-cancel.spec.ts:215:6 › PRD-2026-007 — cancellation per room › TC-ARM-109 UI: reason AND charge are both required for cancel [Must 5] 2026-10-16T09:42:36.876Z Error: expect(locator).toBeVisible() failed 2026-10-16T09:42:36.876Z Locator: getByRole('dialog') 2026-10-16T09:42:36.876Z Expected: visible 2026-10-16T09:42:36.876Z Error: strict mode violation: getByRole('dialog') resolved to 2 elements: 2026-10-16T09:42:36.876Z 1) aka getByRole('dialog', { name: 'Cancel reservation' }) 2026-10-16T09:42:36.876Z 2) aka locator('#engagement-toast-responsive-inner-div') 2026-10-16T09:42:36.876Z Call log: 2026-10-16T09:42:36.876Z  - Expect "toBeVisible" with timeout 10000ms 2026-10-16T09:42:36.876Z  - waiting for getByRole('dialog') 2026-10-16T09:42:36.876Z  3 × locator resolved to  2026-10-16T09:42:36.876Z  - unexpected value "hidden" 2026-10-16T09:42:36.876Z 59 | .getByRole('menuitem', { name: mode === 'NO_SHOW' ? /mark as no-show/i : /^cancel reservation$/i }) 2026-10-16T09:42:36.876Z 60 | .click(); 2026-10-16T09:42:36.876Z > 61 | await expect(page.getByRole('dialog')).toBeVisible(); 2026-10-16T09:42:36.877Z | ^ 2026-10-16T09:42:36.877Z 62 | await expect(confirmCta(page, mode)).toBeVisible(); 2026-10-16T09:42:36.877Z 63 | } 2026-10-16T09:42:36.877Z 64 | 2026-10-16T09:42:36.877Z at openModal (/home/ubuntu/regression-runner/repos/dev/hotel-frontend-core/e2e/specs/prd-2026-007-noshow-cancel.spec.ts:61:41) 2026-10-16T09:42:36.877Z at /home/ubuntu/regression-runner/repos/dev/hotel-frontend-core/e2e/specs/prd-2026-007-noshow-cancel.spec.ts:218:3 2026-10-16T09:42:36.877Z attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── 2026-10-16T09:42:36.877Z test-results/prd-2026-007-noshow-cancel-5ee96-required-for-cancel-Must-5--arm/test-failed-1.png 2026-10-16T09:42:36.877Z ──────────────────────────────────────────────────────────────────────────────────────────────── 2026-10-16T09:42:36.877Z Error Context: test-results/prd-2026-007-noshow-cancel-5ee96-required-for-cancel-Must-5--arm/error-context.md 2026-10-16T09:42:36.877Z Error Context: test-results/prd-2026-007-noshow-cancel-5ee96-required-for-cancel-Must-5--arm/error-context.md 2026-10-16T09:42:36.877Z attachment #4: trace (application/zip) ───────────────────────────────────────────────────────── 2026-10-16T09:42:36.877Z test-results/prd-2026-007-noshow-cancel-5ee96-required-for-cancel-Must-5--arm/trace.zip 2026-10-16T09:42:36.877Z Usage: 2026-10-16T09:42:36.877Z pnpm exec playwright show-trace test-results/prd-2026-007-noshow-cancel-5ee96-required-for-cancel-Must-5--arm/trace.zip 2026-10-16T09:42:36.877Z ──────────────────────────────────────────────────────────────────────────────────────────────── 2026-10-16T09:42:36.877Z 12) [arm] › e2e/specs/prd-2026-007-partial-checkin.spec.ts:87:6 › PRD-2026-007 — partial check-in › TC-ARM-070 modal selects 2 of 4 rooms and hands them to the wizard URL [Must 3/S-12] 2026-10-16T09:42:36.877Z Test timeout of 90000ms exceeded. 2026-10-16T09:42:36.877Z Error: locator.click: Test timeout of 90000ms exceeded. 2026-10-16T09:42:36.877Z Call log: 2026-10-16T09:42:36.877Z  - waiting for getByRole('dialog').getByText('101', { exact: true }).first() 2026-10-16T09:42:36.877Z 90 | const byRoom = await instanceByRoomNumber(api, checkInId); // instance order is not booking order 2026-10-16T09:42:36.877Z 91 | await openPartialModal(page, checkInId); 2026-10-16T09:42:36.877Z > 92 | await chip(page, rooms[0].roomNumber).click(); 2026-10-16T09:42:36.877Z | ^ 2026-10-16T09:42:36.877Z 93 | await chip(page, rooms[1].roomNumber).click(); 2026-10-16T09:42:36.877Z 94 | await page.getByRole('button', { name: 'Continue' }).click(); 2026-10-16T09:42:36.877Z 95 | await page.waitForURL(/checkins\/new\?.*partialRoomIds=/); 2026-10-16T09:42:36.877Z at /home/ubuntu/regression-runner/repos/dev/hotel-frontend-core/e2e/specs/prd-2026-007-partial-checkin.spec.ts:92:41 2026-10-16T09:42:36.877Z attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── 2026-10-16T09:42:36.877Z test-results/prd-2026-007-partial-check-71800-the-wizard-URL-Must-3-S-12--arm/test-failed-1.png 2026-10-16T09:42:36.878Z ──────────────────────────────────────────────────────────────────────────────────────────────── 2026-10-16T09:42:36.878Z Error Context: test-results/prd-2026-007-partial-check-71800-the-wizard-URL-Must-3-S-12--arm/error-context.md 2026-10-16T09:42:36.878Z Error Context: test-results/prd-2026-007-partial-check-71800-the-wizard-URL-Must-3-S-12--arm/error-context.md 2026-10-16T09:42:36.878Z attachment #4: trace (application/zip) ───────────────────────────────────────────────────────── 2026-10-16T09:42:36.878Z test-results/prd-2026-007-partial-check-71800-the-wizard-URL-Must-3-S-12--arm/trace.zip 2026-10-16T09:42:36.878Z Usage: 2026-10-16T09:42:36.878Z pnpm exec playwright show-trace test-results/prd-2026-007-partial-check-71800-the-wizard-URL-Must-3-S-12--arm/trace.zip 2026-10-16T09:42:36.878Z ──────────────────────────────────────────────────────────────────────────────────────────────── 2026-10-16T09:42:36.878Z 13) [arm] › e2e/specs/prd-2026-007-partial-checkin.spec.ts:102:6 › PRD-2026-007 — partial check-in › TC-ARM-071 modal lists only UPCOMING rooms — checked-in and cancelled rooms are absent [Must 3] 2026-10-16T09:42:36.878Z Error: expect(locator).toBeVisible() failed 2026-10-16T09:42:36.878Z Locator: getByRole('dialog').getByText('103', { exact: true }).first() 2026-10-16T09:42:36.878Z Expected: visible 2026-10-16T09:42:36.878Z Timeout: 10000ms 2026-10-16T09:42:36.878Z Error: element(s) not found 2026-10-16T09:42:36.878Z Call log: 2026-10-16T09:42:36.878Z  - Expect "toBeVisible" with timeout 10000ms 2026-10-16T09:42:36.878Z  - waiting for getByRole('dialog').getByText('103', { exact: true }).first() 2026-10-16T09:42:36.878Z 107 | await api.ok(api.roomCancel(checkInId, [byRoom[rooms[1].roomNumber]])); 2026-10-16T09:42:36.878Z 108 | await openPartialModal(page, checkInId); 2026-10-16T09:42:36.878Z > 109 | await expect(chip(page, rooms[2].roomNumber)).toBeVisible(); 2026-10-16T09:42:36.878Z | ^ 2026-10-16T09:42:36.878Z 110 | await expect(chip(page, rooms[3].roomNumber)).toBeVisible(); 2026-10-16T09:42:36.878Z 111 | await expect(chip(page, rooms[0].roomNumber)).toHaveCount(0); 2026-10-16T09:42:36.878Z 112 | await expect(chip(page, rooms[1].roomNumber)).toHaveCount(0); 2026-10-16T09:42:36.878Z at /home/ubuntu/regression-runner/repos/dev/hotel-frontend-core/e2e/specs/prd-2026-007-partial-checkin.spec.ts:109:49 2026-10-16T09:42:36.878Z attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── 2026-10-16T09:42:36.878Z test-results/prd-2026-007-partial-check-a5843-ed-rooms-are-absent-Must-3--arm/test-failed-1.png 2026-10-16T09:42:36.878Z ──────────────────────────────────────────────────────────────────────────────────────────────── 2026-10-16T09:42:36.878Z Error Context: test-results/prd-2026-007-partial-check-a5843-ed-rooms-are-absent-Must-3--arm/error-context.md 2026-10-16T09:42:36.878Z Error Context: test-results/prd-2026-007-partial-check-a5843-ed-rooms-are-absent-Must-3--arm/error-context.md 2026-10-16T09:42:36.878Z attachment #4: trace (application/zip) ───────────────────────────────────────────────────────── 2026-10-16T09:42:36.879Z test-results/prd-2026-007-partial-check-a5843-ed-rooms-are-absent-Must-3--arm/trace.zip 2026-10-16T09:42:36.879Z Usage: 2026-10-16T09:42:36.879Z pnpm exec playwright show-trace test-results/prd-2026-007-partial-check-a5843-ed-rooms-are-absent-Must-3--arm/trace.zip 2026-10-16T09:42:36.879Z ──────────────────────────────────────────────────────────────────────────────────────────────── 2026-10-16T09:42:36.879Z 14) [arm] › e2e/specs/prd-2026-007-partial-checkin.spec.ts:115:6 › PRD-2026-007 — partial check-in › TC-ARM-072 group Select All selects every room of the type; Clear All clears [UX] 2026-10-16T09:42:36.879Z Test timeout of 90000ms exceeded. 2026-10-16T09:42:36.879Z Error: locator.click: Test timeout of 90000ms exceeded. 2026-10-16T09:42:36.879Z Call log: 2026-10-16T09:42:36.879Z  - waiting for getByRole('dialog').getByText('Select All').first() 2026-10-16T09:42:36.879Z 117 | const { checkInId } = await api.createReservation({ label: 'pci-selall', rooms }); 2026-10-16T09:42:36.879Z 118 | await openPartialModal(page, checkInId); 2026-10-16T09:42:36.879Z > 119 | await page.getByRole('dialog').getByText('Select All').first().click(); 2026-10-16T09:42:36.879Z | ^ 2026-10-16T09:42:36.879Z 120 | // All selected → toggle label flips to Clear All and Continue arms. 2026-10-16T09:42:36.879Z 121 | await expect(page.getByRole('dialog').getByText('Clear All').first()).toBeVisible(); 2026-10-16T09:42:36.879Z 122 | await expect(page.getByRole('button', { name: 'Continue' })).toBeEnabled(); 2026-10-16T09:42:36.879Z at /home/ubuntu/regression-runner/repos/dev/hotel-frontend-core/e2e/specs/prd-2026-007-partial-checkin.spec.ts:119:66 2026-10-16T09:42:36.879Z attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── 2026-10-16T09:42:36.879Z test-results/prd-2026-007-partial-check-00882-e-type-Clear-All-clears-UX--arm/test-failed-1.png 2026-10-16T09:42:36.879Z ──────────────────────────────────────────────────────────────────────────────────────────────── 2026-10-16T09:42:36.879Z Error Context: test-results/prd-2026-007-partial-check-00882-e-type-Clear-All-clears-UX--arm/error-context.md 2026-10-16T09:42:36.879Z Error Context: test-results/prd-2026-007-partial-check-00882-e-type-Clear-All-clears-UX--arm/error-context.md 2026-10-16T09:42:36.879Z attachment #4: trace (application/zip) ───────────────────────────────────────────────────────── 2026-10-16T09:42:36.879Z test-results/prd-2026-007-partial-check-00882-e-type-Clear-All-clears-UX--arm/trace.zip 2026-10-16T09:42:36.879Z Usage: 2026-10-16T09:42:36.879Z pnpm exec playwright show-trace test-results/prd-2026-007-partial-check-00882-e-type-Clear-All-clears-UX--arm/trace.zip 2026-10-16T09:42:36.879Z ──────────────────────────────────────────────────────────────────────────────────────────────── 2026-10-16T09:42:36.879Z 15) [arm] › e2e/specs/prd-2026-007-partial-checkin.spec.ts:134:6 › PRD-2026-007 — partial check-in › TC-ARM-074 closing the modal mutates nothing [S-18 analog] 2026-10-16T09:42:36.879Z Test timeout of 90000ms exceeded. 2026-10-16T09:42:36.879Z Error: locator.click: Test timeout of 90000ms exceeded. 2026-10-16T09:42:36.879Z Call log: 2026-10-16T09:42:36.879Z  - waiting for getByRole('dialog').getByText('101', { exact: true }).first() 2026-10-16T09:42:36.879Z 136 | const { checkInId } = await api.createReservation({ label: 'pci-close', rooms }); 2026-10-16T09:42:36.880Z 137 | await openPartialModal(page, checkInId); 2026-10-16T09:42:36.880Z > 138 | await chip(page, rooms[0].roomNumber).click(); 2026-10-16T09:42:36.880Z | ^ 2026-10-16T09:42:36.880Z 139 | await page.keyboard.press('Escape'); 2026-10-16T09:42:36.880Z 140 | const detail = await api.getCheckin(checkInId); 2026-10-16T09:42:36.880Z 141 | expect(roomsOf(detail).every((r) => r.status === 'UPCOMING')).toBeTruthy(); 2026-10-16T09:42:36.880Z at /home/ubuntu/regression-runner/repos/dev/hotel-frontend-core/e2e/specs/prd-2026-007-partial-checkin.spec.ts:138:41 2026-10-16T09:42:36.880Z attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── 2026-10-16T09:42:36.880Z test-results/prd-2026-007-partial-check-f0724-utates-nothing-S-18-analog--arm/test-failed-1.png 2026-10-16T09:42:36.880Z ──────────────────────────────────────────────────────────────────────────────────────────────── 2026-10-16T09:42:36.880Z Error Context: test-results/prd-2026-007-partial-check-f0724-utates-nothing-S-18-analog--arm/error-context.md 2026-10-16T09:42:36.880Z Error Context: test-results/prd-2026-007-partial-check-f0724-utates-nothing-S-18-analog--arm/error-context.md 2026-10-16T09:42:36.880Z attachment #4: trace (application/zip) ───────────────────────────────────────────────────────── 2026-10-16T09:42:36.880Z test-results/prd-2026-007-partial-check-f0724-utates-nothing-S-18-analog--arm/trace.zip 2026-10-16T09:42:36.880Z Usage: 2026-10-16T09:42:36.880Z pnpm exec playwright show-trace test-results/prd-2026-007-partial-check-f0724-utates-nothing-S-18-analog--arm/trace.zip 2026-10-16T09:42:36.880Z ──────────────────────────────────────────────────────────────────────────────────────────────── 2026-10-16T09:42:36.880Z 16) [arm] › e2e/specs/prd-2026-007-partial-checkin.spec.ts:273:6 › PRD-2026-007 — partial check-in › TC-ARM-087 selected chip toggles off on second click (deselect) [UX] 2026-10-16T09:42:36.880Z Test timeout of 90000ms exceeded. 2026-10-16T09:42:36.880Z Error: locator.click: Test timeout of 90000ms exceeded. 2026-10-16T09:42:36.880Z Call log: 2026-10-16T09:42:36.880Z  - waiting for getByRole('dialog').getByText('101', { exact: true }).first() 2026-10-16T09:42:36.880Z 275 | const { checkInId } = await api.createReservation({ label: 'pci-toggle', rooms }); 2026-10-16T09:42:36.880Z 276 | await openPartialModal(page, checkInId); 2026-10-16T09:42:36.880Z > 277 | await chip(page, rooms[0].roomNumber).click(); 2026-10-16T09:42:36.880Z | ^ 2026-10-16T09:42:36.880Z 278 | await expect(page.getByRole('button', { name: 'Continue' })).toBeEnabled(); 2026-10-16T09:42:36.880Z 279 | await chip(page, rooms[0].roomNumber).click(); 2026-10-16T09:42:36.880Z 280 | await expect(page.getByRole('button', { name: 'Continue' })).toBeDisabled(); 2026-10-16T09:42:36.880Z at /home/ubuntu/regression-runner/repos/dev/hotel-frontend-core/e2e/specs/prd-2026-007-partial-checkin.spec.ts:277:41 2026-10-16T09:42:36.880Z attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── 2026-10-16T09:42:36.880Z test-results/prd-2026-007-partial-check-b8890-n-second-click-deselect-UX--arm/test-failed-1.png 2026-10-16T09:42:36.880Z ──────────────────────────────────────────────────────────────────────────────────────────────── 2026-10-16T09:42:36.880Z Error Context: test-results/prd-2026-007-partial-check-b8890-n-second-click-deselect-UX--arm/error-context.md 2026-10-16T09:42:36.880Z Error Context: test-results/prd-2026-007-partial-check-b8890-n-second-click-deselect-UX--arm/error-context.md 2026-10-16T09:42:36.880Z attachment #4: trace (application/zip) ───────────────────────────────────────────────────────── 2026-10-16T09:42:36.880Z test-results/prd-2026-007-partial-check-b8890-n-second-click-deselect-UX--arm/trace.zip 2026-10-16T09:42:36.880Z Usage: 2026-10-16T09:42:36.881Z pnpm exec playwright show-trace test-results/prd-2026-007-partial-check-b8890-n-second-click-deselect-UX--arm/trace.zip 2026-10-16T09:42:36.881Z ──────────────────────────────────────────────────────────────────────────────────────────────── 2026-10-16T09:42:36.881Z 17) [arm] › e2e/specs/prd-2026-007-partial-checkin.spec.ts:304:6 › PRD-2026-007 — partial check-in › TC-ARM-090 parent transitions live in a second context (fresh read, no cross-session staleness) [S-19-lite] 2026-10-16T09:42:36.881Z Error: page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:3000/dashboard/checkins/f22c812b-66d3-4424-96db-dfb7d9601cac 2026-10-16T09:42:36.881Z Call log: 2026-10-16T09:42:36.881Z  - navigating to "http://localhost:3000/dashboard/checkins/f22c812b-66d3-4424-96db-dfb7d9601cac", waiting until "load" 2026-10-16T09:42:36.881Z 310 | const ctx2 = await browser.newContext({ storageState: AUTH_STATE_PATH }); 2026-10-16T09:42:36.881Z 311 | const page2 = await ctx2.newPage(); 2026-10-16T09:42:36.881Z > 312 | await page2.goto(`http://localhost:3000${detailsUrl(checkInId)}`); 2026-10-16T09:42:36.881Z | ^ 2026-10-16T09:42:36.881Z 313 | await expect(page2.getByText(/partial(ly)?[ _-]?check/i).first()).toBeVisible(); 2026-10-16T09:42:36.881Z 314 | await ctx2.close(); 2026-10-16T09:42:36.881Z 315 | }); 2026-10-16T09:42:36.881Z at /home/ubuntu/regression-runner/repos/dev/hotel-frontend-core/e2e/specs/prd-2026-007-partial-checkin.spec.ts:312:15 2026-10-16T09:42:36.881Z attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── 2026-10-16T09:42:36.881Z test-results/prd-2026-007-partial-check-e3dc2-ession-staleness-S-19-lite--arm/test-failed-2.png 2026-10-16T09:42:36.881Z ──────────────────────────────────────────────────────────────────────────────────────────────── 2026-10-16T09:42:36.881Z attachment #2: screenshot (image/png) ────────────────────────────────────────────────────────── 2026-10-16T09:42:36.881Z test-results/prd-2026-007-partial-check-e3dc2-ession-staleness-S-19-lite--arm/test-failed-1.png 2026-10-16T09:42:36.881Z ──────────────────────────────────────────────────────────────────────────────────────────────── 2026-10-16T09:42:36.881Z Error Context: test-results/prd-2026-007-partial-check-e3dc2-ession-staleness-S-19-lite--arm/error-context.md 2026-10-16T09:42:36.881Z Error Context: test-results/prd-2026-007-partial-check-e3dc2-ession-staleness-S-19-lite--arm/error-context.md 2026-10-16T09:42:36.881Z attachment #5: trace (application/zip) ───────────────────────────────────────────────────────── 2026-10-16T09:42:36.881Z test-results/prd-2026-007-partial-check-e3dc2-ession-staleness-S-19-lite--arm/trace.zip 2026-10-16T09:42:36.881Z Usage: 2026-10-16T09:42:36.881Z pnpm exec playwright show-trace test-results/prd-2026-007-partial-check-e3dc2-ession-staleness-S-19-lite--arm/trace.zip 2026-10-16T09:42:36.881Z ──────────────────────────────────────────────────────────────────────────────────────────────── 2026-10-16T09:42:36.881Z 18) [arm] › e2e/specs/prd-2026-007-partial-checkin.spec.ts:347:5 › TC-ARM-091 §6.2 story: 4-room block, 2 arrive first, 2 later — full wizard journey [S-08/S-12] 2026-10-16T09:42:36.881Z Error: expect(received).not.toBe(expected) // Object.is equality 2026-10-16T09:42:36.881Z Expected: not "waiting" 2026-10-16T09:42:36.881Z Call Log: 2026-10-16T09:42:36.881Z - Timeout 30000ms exceeded while waiting on the predicate 2026-10-16T09:42:36.881Z 341 | const refused = page.getByText(/upload failed: (front|back)/i).first(); 2026-10-16T09:42:36.881Z 342 | const outcome = async () => ((await refused.count()) > 0 ? 'refused' : page.url().includes('/checkins/new') ? 'waiting' : 'left'); 2026-10-16T09:42:36.881Z > 343 | await expect.poll(outcome, { timeout: 30_000 }).not.toBe('waiting'); 2026-10-16T09:42:36.881Z | ^ 2026-10-16T09:42:36.881Z 344 | return (await outcome()) === 'left'; 2026-10-16T09:42:36.881Z 345 | } 2026-10-16T09:42:36.881Z 346 | 2026-10-16T09:42:36.881Z at finishWizard (/home/ubuntu/regression-runner/repos/dev/hotel-frontend-core/e2e/specs/prd-2026-007-partial-checkin.spec.ts:343:2) 2026-10-16T09:42:36.881Z at /home/ubuntu/regression-runner/repos/dev/hotel-frontend-core/e2e/specs/prd-2026-007-partial-checkin.spec.ts:357:19 2026-10-16T09:42:36.881Z attachment #1: screenshot (image/png) ────────────────────────────────────────────────────────── 2026-10-16T09:42:36.881Z test-results/prd-2026-007-partial-check-19ef1-l-wizard-journey-S-08-S-12--arm/test-failed-1.png 2026-10-16T09:42:36.881Z ──────────────────────────────────────────────────────────────────────────────────────────────── 2026-10-16T09:42:36.882Z Error Context: test-results/prd-2026-007-partial-check-19ef1-l-wizard-journey-S-08-S-12--arm/error-context.md 2026-10-16T09:42:36.882Z Error Context: test-results/prd-2026-007-partial-check-19ef1-l-wizard-journey-S-08-S-12--arm/error-context.md 2026-10-16T09:42:36.882Z attachment #4: trace (application/zip) ───────────────────────────────────────────────────────── 2026-10-16T09:42:36.882Z test-results/prd-2026-007-partial-check-19ef1-l-wizard-journey-S-08-S-12--arm/trace.zip 2026-10-16T09:42:36.882Z Usage: 2026-10-16T09:42:36.882Z pnpm exec playwright show-trace test-results/prd-2026-007-partial-check-19ef1-l-wizard-journey-S-08-S-12--arm/trace.zip 2026-10-16T09:42:36.882Z ──────────────────────────────────────────────────────────────────────────────────────────────── 2026-10-16T09:42:36.882Z 18 failed 2026-10-16T09:42:36.882Z [chromium] › e2e/specs/checkin-id-per-adult.spec.ts:70:6 › One ID per adult — check-in form › TC-IDPA-UI-2 Check-in short of IDs shows the counts and checks nothing in 2026-10-16T09:42:36.882Z [chromium] › e2e/specs/prd-2026-005-active-template.spec.ts:61:6 › PRD-2026-005 — Active custom template wins › TC-PRD-092 template with rect color=transparent still renders (no hex crash) 2026-10-16T09:42:36.882Z [chromium] › e2e/specs/prd-2026-005-supplementary-docs.spec.ts:48:6 › PRD-2026-005 — Supplementary documents › TC-PRD-051 Credit Note (full reversal) generates 201 + PDF blob 2026-10-16T09:42:36.882Z [chromium] › e2e/specs/reservation-unassign-action.spec.ts:149:6 › Reservation Unassign: Unassign Room action › TC-UNASSIGN-6 Return to Room N puts the booking back in its room 2026-10-16T09:42:36.882Z [chromium] › e2e/specs/reservation-unassign.spec.ts:8:5 › TC-UNASSIGN-MONEY-1 frees and returns a reservation room without changing its money 2026-10-16T09:42:36.882Z [chromium] › e2e/specs/revenue-guardrail-removal.spec.ts:23:5 › TC-REV-GUARD-1 clearing both configured limits removes the guardrail 2026-10-16T09:42:36.882Z [arm] › e2e/specs/prd-2026-007-noshow-cancel.spec.ts:82:6 › PRD-2026-007 — no-show per room › TC-ARM-100 UI: single-room no-show leaves siblings untouched [Must 4/S-11/§6.3] 2026-10-16T09:42:36.882Z [arm] › e2e/specs/prd-2026-007-noshow-cancel.spec.ts:103:6 › PRD-2026-007 — no-show per room › TC-ARM-101 UI: reason is required — CTA disabled while empty [Must 4] 2026-10-16T09:42:36.882Z [arm] › e2e/specs/prd-2026-007-noshow-cancel.spec.ts:110:6 › PRD-2026-007 — no-show per room › TC-ARM-102 UI: all-rooms no-show lands parent NO_SHOW [CR-2] 2026-10-16T09:42:36.882Z [arm] › e2e/specs/prd-2026-007-noshow-cancel.spec.ts:188:6 › PRD-2026-007 — cancellation per room › TC-ARM-108 UI: cancel one of five rooms; the other four stay live [Must 5/S-23/§6.4] 2026-10-16T09:42:36.882Z [arm] › e2e/specs/prd-2026-007-noshow-cancel.spec.ts:215:6 › PRD-2026-007 — cancellation per room › TC-ARM-109 UI: reason AND charge are both required for cancel [Must 5] 2026-10-16T09:42:36.882Z [arm] › e2e/specs/prd-2026-007-partial-checkin.spec.ts:87:6 › PRD-2026-007 — partial check-in › TC-ARM-070 modal selects 2 of 4 rooms and hands them to the wizard URL [Must 3/S-12] 2026-10-16T09:42:36.882Z [arm] › e2e/specs/prd-2026-007-partial-checkin.spec.ts:102:6 › PRD-2026-007 — partial check-in › TC-ARM-071 modal lists only UPCOMING rooms — checked-in and cancelled rooms are absent [Must 3] 2026-10-16T09:42:36.882Z [arm] › e2e/specs/prd-2026-007-partial-checkin.spec.ts:115:6 › PRD-2026-007 — partial check-in › TC-ARM-072 group Select All selects every room of the type; Clear All clears [UX] 2026-10-16T09:42:36.882Z [arm] › e2e/specs/prd-2026-007-partial-checkin.spec.ts:134:6 › PRD-2026-007 — partial check-in › TC-ARM-074 closing the modal mutates nothing [S-18 analog] 2026-10-16T09:42:36.882Z [arm] › e2e/specs/prd-2026-007-partial-checkin.spec.ts:273:6 › PRD-2026-007 — partial check-in › TC-ARM-087 selected chip toggles off on second click (deselect) [UX] 2026-10-16T09:42:36.882Z [arm] › e2e/specs/prd-2026-007-partial-checkin.spec.ts:304:6 › PRD-2026-007 — partial check-in › TC-ARM-090 parent transitions live in a second context (fresh read, no cross-session staleness) [S-19-lite] 2026-10-16T09:42:36.882Z [arm] › e2e/specs/prd-2026-007-partial-checkin.spec.ts:347:5 › TC-ARM-091 §6.2 story: 4-room block, 2 arrive first, 2 later — full wizard journey [S-08/S-12] 2026-10-16T09:42:36.882Z 13 skipped 2026-10-16T09:42:36.882Z 13 did not run 2026-10-16T09:42:36.882Z 247 passed (12.3m) 2026-10-16T09:42:37.510Z  ELIFECYCLE  Command failed with exit code 1. 2026-10-16T09:42:37.533Z -> exit 1 2026-10-16T09:42:38.241Z slack: 202 2026-10-16T09:42:39.259Z github status hotel-backend-core@9338e28e7: 201 2026-10-16T09:42:40.338Z github status hotel-frontend-core@2edac7677: 201