2026-10-16T05:04:05.253Z start test on stage (full/parallel, trigger manual)
2026-10-16T05:04:05.339Z deployed: {"hotel-backend-core":"942b12070ff5cd3580c842fdcbb7062480c5ff37","hotel-frontend-core":"89986c7af7f60c301bd73dd45f6785148c95b641"}
2026-10-16T05:04:05.340Z $ git fetch --quiet --prune origin (cwd /home/ubuntu/regression-runner/repos/stage/hotel-backend-core)
2026-10-16T05:04:06.262Z -> exit 0
2026-10-16T05:04:06.262Z $ git cat-file -e 942b12070ff5cd3580c842fdcbb7062480c5ff37^{commit} (cwd /home/ubuntu/regression-runner/repos/stage/hotel-backend-core)
2026-10-16T05:04:06.272Z -> exit 0
2026-10-16T05:04:06.272Z $ git diff --name-only 942b12070ff5cd3580c842fdcbb7062480c5ff37 origin/stage (cwd /home/ubuntu/regression-runner/repos/stage/hotel-backend-core)
2026-10-16T05:04:06.281Z apps/hotel-backend/src/ai-receptionist/domain/pay-to-confirm.ts
2026-10-16T05:04:06.281Z apps/hotel-backend/src/ai-receptionist/services/receptionist-admin.chain-number.spec.ts
2026-10-16T05:04:06.281Z apps/hotel-backend/src/ai-receptionist/services/receptionist-admin.service.ts
2026-10-16T05:04:06.281Z apps/hotel-backend/src/ai-receptionist/services/receptionist-booking.service.ts
2026-10-16T05:04:06.281Z apps/hotel-backend/src/ai-receptionist/services/receptionist-payment.service.ts
2026-10-16T05:04:06.281Z apps/hotel-backend/src/digistay-payments/digistay-booking-confirm.service.spec.ts
2026-10-16T05:04:06.281Z apps/hotel-backend/src/digistay-payments/digistay-booking-confirm.service.ts
2026-10-16T05:04:06.281Z apps/hotel-backend/src/digistay-payments/digistay-paylink.service.ts
2026-10-16T05:04:06.281Z apps/hotel-backend/src/property-admins/property-admins.controller.ts
2026-10-16T05:04:06.281Z apps/hotel-backend/test/ai-receptionist/harness.ts
2026-10-16T05:04:06.281Z apps/hotel-backend/test/ai-receptionist/pay-to-confirm.int.ts
2026-10-16T05:04:06.281Z e2e/api/MATRIX.md
2026-10-16T05:04:06.281Z e2e/api/README.md
2026-10-16T05:04:06.281Z e2e/api/specs/channel-manager.spec.ts
2026-10-16T05:04:06.281Z e2e/api/support/channel-manager.ts
2026-10-16T05:04:06.281Z e2e/api/support/session.ts
2026-10-16T05:04:06.281Z scripts/e2e/prepare-property.mjs
2026-10-16T05:04:06.282Z -> exit 0
2026-10-16T05:04:06.282Z $ git checkout --quiet --detach 942b12070ff5cd3580c842fdcbb7062480c5ff37 && git clean -fdq -e playwright-report -e .auth && git rev-parse HEAD (cwd /home/ubuntu/regression-runner/repos/stage/hotel-backend-core)
2026-10-16T05:04:06.329Z 942b12070ff5cd3580c842fdcbb7062480c5ff37
2026-10-16T05:04:06.329Z -> exit 0
2026-10-16T05:04:06.330Z $ CI=1 corepack pnpm@9.15.4 install --no-frozen-lockfile --config.confirmModulesPurge=false --reporter=append-only (cwd /home/ubuntu/regression-runner/repos/stage/hotel-backend-core)
2026-10-16T05:04:06.766Z Scope: all 31 workspace projects
2026-10-16T05:04:06.968Z Lockfile is up to date, resolution step is skipped
2026-10-16T05:04:07.169Z Already up to date
2026-10-16T05:04:08.161Z . prepare$ husky
2026-10-16T05:04:08.220Z . prepare: Done
2026-10-16T05:04:08.333Z Done in 1.9s
2026-10-16T05:04:08.368Z -> exit 0
2026-10-16T05:04:08.368Z $ git fetch --quiet --prune origin (cwd /home/ubuntu/regression-runner/repos/stage/hotel-frontend-core)
2026-10-16T05:04:09.285Z -> exit 0
2026-10-16T05:04:09.285Z $ git cat-file -e 89986c7af7f60c301bd73dd45f6785148c95b641^{commit} (cwd /home/ubuntu/regression-runner/repos/stage/hotel-frontend-core)
2026-10-16T05:04:09.294Z -> exit 0
2026-10-16T05:04:09.294Z $ git diff --name-only 89986c7af7f60c301bd73dd45f6785148c95b641 origin/stage (cwd /home/ubuntu/regression-runner/repos/stage/hotel-frontend-core)
2026-10-16T05:04:09.303Z __tests__/components/module/ai-receptionist/aiReceptionist.display.test.ts
2026-10-16T05:04:09.303Z components/module/ai-receptionist/AiReceptionistPageClient.tsx
2026-10-16T05:04:09.303Z components/module/ai-receptionist/aiReceptionist.display.ts
2026-10-16T05:04:09.303Z components/module/ai-receptionist/settings/SettingsView.tsx
2026-10-16T05:04:09.303Z e2e/PRD-2026-005-MATRIX.md
2026-10-16T05:04:09.303Z e2e/PRD-2026-007-MATRIX.md
2026-10-16T05:04:09.303Z e2e/README.md
2026-10-16T05:04:09.303Z e2e/SMOKE-PROD-MATRIX.md
2026-10-16T05:04:09.303Z e2e/fixtures/arm-api.ts
2026-10-16T05:04:09.303Z e2e/fixtures/arm-ui-w3.ts
2026-10-16T05:04:09.303Z e2e/fixtures/arm-ui-w4.ts
2026-10-16T05:04:09.303Z e2e/fixtures/auth.ts
2026-10-16T05:04:09.303Z e2e/fixtures/env.ts
2026-10-16T05:04:09.303Z e2e/fixtures/hotel-session.ts
2026-10-16T05:04:09.303Z e2e/fixtures/invoicing-data.ts
2026-10-16T05:04:09.303Z e2e/fixtures/w5-helpers.ts
2026-10-16T05:04:09.303Z e2e/specs/hfe-food-item-search-all-category.spec.ts
2026-10-16T05:04:09.303Z e2e/specs/prd-2026-005-active-template.spec.ts
2026-10-16T05:04:09.303Z e2e/specs/prd-2026-005-deep-verification.spec.ts
2026-10-16T05:04:09.303Z e2e/specs/prd-2026-005-invoice-editor.spec.ts
2026-10-16T05:04:09.303Z e2e/specs/prd-2026-005-mobile.spec.ts
2026-10-16T05:04:09.303Z e2e/specs/prd-2026-005-supplementary-docs.spec.ts
2026-10-16T05:04:09.303Z e2e/specs/prd-2026-007-create-reservation.spec.ts
2026-10-16T05:04:09.303Z e2e/specs/prd-2026-007-finance.spec.ts
2026-10-16T05:04:09.303Z e2e/specs/prd-2026-007-lock-move-swap.spec.ts
2026-10-16T05:04:09.303Z e2e/specs/prd-2026-007-noshow-cancel.spec.ts
2026-10-16T05:04:09.303Z e2e/specs/prd-2026-007-partial-checkin.spec.ts
2026-10-16T05:04:09.303Z e2e/specs/prd-2026-007-rbac-ux.spec.ts
2026-10-16T05:04:09.303Z e2e/specs/prd-2026-007-room-cards.spec.ts
2026-10-16T05:04:09.303Z e2e/specs/prd-2026-007-slots-multicycle.spec.ts
2026-10-16T05:04:09.303Z e2e/specs/prd-2026-007-status-aggregation.spec.ts
2026-10-16T05:04:09.303Z e2e/specs/prd-2026-007-stay-view.spec.ts
2026-10-16T05:04:09.303Z e2e/specs/prod-stay-journey.spec.ts
2026-10-16T05:04:09.303Z utils/service/api/ai-receptionist.service.ts
2026-10-16T05:04:09.304Z -> exit 0
2026-10-16T05:04:09.304Z $ git checkout --quiet --detach 89986c7af7f60c301bd73dd45f6785148c95b641 && git clean -fdq -e playwright-report -e .auth && git rev-parse HEAD (cwd /home/ubuntu/regression-runner/repos/stage/hotel-frontend-core)
2026-10-16T05:04:09.334Z 89986c7af7f60c301bd73dd45f6785148c95b641
2026-10-16T05:04:09.335Z -> exit 0
2026-10-16T05:04:09.335Z $ CI=1 corepack pnpm@9.15.4 install --frozen-lockfile --config.confirmModulesPurge=false --reporter=append-only (cwd /home/ubuntu/regression-runner/repos/stage/hotel-frontend-core)
2026-10-16T05:04:09.851Z Lockfile is up to date, resolution step is skipped
2026-10-16T05:04:10.009Z Already up to date
2026-10-16T05:04:10.622Z . prepare$ husky
2026-10-16T05:04:10.678Z . prepare: Done
2026-10-16T05:04:10.680Z Done in 1.2s
2026-10-16T05:04:10.702Z -> exit 0
2026-10-16T05:04:10.703Z $ corepack pnpm@9.15.4 e2e:prepare-property -- --count 8 (cwd /home/ubuntu/regression-runner/repos/stage/hotel-backend-core)
2026-10-16T05:04:11.084Z > hotel-backend-core@ e2e:prepare-property /home/ubuntu/regression-runner/repos/stage/hotel-backend-core
2026-10-16T05:04:11.084Z > node scripts/e2e/prepare-property.mjs "--" "--count" "8"
2026-10-16T05:04:11.892Z ✓ E2E Hotel 01 (2ada23e1-4c1e-4ec9-909d-d31945728a5e): test user has access
2026-10-16T05:04:12.535Z ✓ E2E Hotel 02 (7ea986de-cbe0-47e5-a3ba-78d8ff9a9a8a): test user has access
2026-10-16T05:04:13.062Z ✓ E2E Hotel 03 (42d19440-fc22-4b19-9b99-2d91edc96d5b): test user has access
2026-10-16T05:04:13.636Z ✓ E2E Hotel 04 (4f5eaff5-08c7-43c8-b225-815924c73049): test user has access
2026-10-16T05:04:14.193Z ✓ E2E Hotel 05 (691e5e40-b42f-4fb1-a97a-70db2d1089f3): test user has access
2026-10-16T05:04:14.778Z ✓ E2E Hotel 06 (b4efab29-34cd-43d8-8da4-862ddcffb9cd): test user has access
2026-10-16T05:04:15.361Z ✓ E2E Hotel 07 (194dadb0-5436-4b4e-8de8-a6d04df90597): test user has access
2026-10-16T05:04:15.944Z ✓ E2E Hotel 08 (689cbadd-593b-460a-badf-162608435ed8): test user has access
2026-10-16T05:04:15.944Z E2E_PROPERTIES=[{"id":"2ada23e1-4c1e-4ec9-909d-d31945728a5e","name":"E2E Hotel 01"},{"id":"7ea986de-cbe0-47e5-a3ba-78d8ff9a9a8a","name":"E2E Hotel 02"},{"id":"42d19440-fc22-4b19-9b99-2d91edc96d5b","name":"E2E Hotel 03"},{"id":"4f5eaff5-08c7-43c8-b225-815924c73049","name":"E2E Hotel 04"},{"id":"691e5e40-b42f-4fb1-a97a-70db2d1089f3","name":"E2E Hotel 05"},{"id":"b4efab29-34cd-43d8-8da4-862ddcffb9cd","name":"E2E Hotel 06"},{"id":"194dadb0-5436-4b4e-8de8-a6d04df90597","name":"E2E Hotel 07"},{"id":"689cbadd-593b-460a-badf-162608435ed8","name":"E2E Hotel 08"}]
2026-10-16T05:04:15.965Z -> exit 0
2026-10-16T05:04:15.965Z === hotel-backend-core ===
2026-10-16T05:04:15.965Z $ corepack pnpm@9.15.4 e2e (cwd /home/ubuntu/regression-runner/repos/stage/hotel-backend-core)
2026-10-16T05:04:16.346Z > hotel-backend-core@ e2e /home/ubuntu/regression-runner/repos/stage/hotel-backend-core
2026-10-16T05:04:16.346Z > playwright test -c e2e/api/playwright.config.ts
2026-10-16T05:04:18.347Z Running 3 tests using 3 workers
2026-10-16T05:04:19.049Z ✓ 3 e2e/api/specs/health.spec.ts:4:7 › Backend health › TC-API-HEALTH-1 health reports database and redis up @smoke (87ms)
2026-10-16T05:04:20.017Z ✓ 2 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 (766ms)
2026-10-16T05:04:20.072Z ✘ 1 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 (677ms)
2026-10-16T05:04:20.089Z 3 passed (3.1s)
2026-10-16T05:04:20.153Z -> exit 0
2026-10-16T05:04:20.157Z === hotel-frontend-core ===
2026-10-16T05:04:20.157Z $ corepack pnpm@9.15.4 e2e (cwd /home/ubuntu/regression-runner/repos/stage/hotel-frontend-core)
2026-10-16T05:04:20.541Z > hotel-frontend-core@0.1.0 e2e /home/ubuntu/regression-runner/repos/stage/hotel-frontend-core
2026-10-16T05:04:20.541Z > playwright test
2026-10-16T05:04:34.630Z Running 320 tests using 8 workers
2026-10-16T05:04:35.671Z ✓ 1 [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:106:7 › Static code checks: no browser required › [TC-HFE-026] CategoryItemsGrid: allItems and onToggleSearchScope props are optional (18ms)
2026-10-16T05:04:35.705Z ✓ 3 [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:133:7 › Static code checks: no browser required › [TC-HFE-028] allItemsDeduped useMemo deduplication logic present in CreateOrderComponent (28ms)
2026-10-16T05:04:35.716Z ✓ 2 [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:118:7 › Static code checks: no browser required › [TC-HFE-027] filterFoodItems handles empty allItems array and empty query without crashing (36ms)
2026-10-16T05:04:35.721Z ✓ 5 [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:76:7 › Static code checks: no browser required › [TC-HFE-023] Scope toggle chip uses Tailwind classes only — no inline style or raw hex colour (21ms)
2026-10-16T05:04:35.728Z ✓ 6 [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:91:7 › Static code checks: no browser required › [TC-HFE-024] AllCategoriesGrid category heading uses Text.Semibold14 token (11ms)
2026-10-16T05:04:35.731Z ✓ 4 [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:67:7 › Static code checks: no browser required › [TC-HFE-022] FoodItemEmptyState uses Text.Medium14 (no raw
or inline style) (23ms)
2026-10-16T05:04:35.756Z ✓ 9 [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:100:7 › Static code checks: no browser required › [TC-HFE-025] AllCategoriesGridProps includes allItems and searchQuery (no type errors) (26ms)
2026-10-16T05:04:46.888Z ✘ 8 [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:153:7 › AC-1: All tab is selected by default [AC-1] › [TC-HFE-001] All tab is selected and shows all items on first render (desktop) (10.9s)
2026-10-16T05:04:47.189Z ✘ 7 [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:159:7 › AC-1: All tab is selected by default [AC-1] › [TC-HFE-002] All tab shows loading state when categories have not yet resolved (11.2s)
2026-10-16T05:04:47.264Z ✘ 10 [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:169:7 › AC-1: All tab is selected by default [AC-1] › [TC-HFE-003] All tab default when kitchen has exactly one category (11.2s)
2026-10-16T05:04:58.801Z ✘ 18 [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:250:7 › AC-4: allItemsDeduped — no duplicates in All tab [AC-4] › [TC-HFE-011] Item assigned to multiple categories appears exactly once on All tab (no search) (10.6s)
2026-10-16T05:06:07.176Z ✘ 11 [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:179:7 › AC-2: Search on All tab returns cross-category results [AC-2] › [TC-HFE-004] Search on All tab returns flat results across every category (1.5m)
2026-10-16T05:06:07.179Z ✘ 13 [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:187:7 › AC-2: Search on All tab returns cross-category results [AC-2] › [TC-HFE-005] Search on All tab with itemCode (weight-1 field) returns match (1.5m)
2026-10-16T05:06:07.258Z ✘ 12 [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:194:7 › AC-2: Search on All tab returns cross-category results [AC-2] › [TC-HFE-006] Clearing search restores grouped-by-category layout on All tab (1.5m)
2026-10-16T05:06:07.308Z ✘ 15 [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:217:7 › AC-3: Scope toggle chip behaviour [AC-3] › [TC-HFE-008] Clicking toggle chip scopes search to current category only (1.5m)
2026-10-16T05:06:07.350Z ✘ 14 [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:206:7 › AC-3: Scope toggle chip behaviour [AC-3] › [TC-HFE-007] Search on specific category shows cross-category results by default (1.5m)
2026-10-16T05:06:08.457Z ✓ 20 [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:263:7 › AC-4: allItemsDeduped — no duplicates in All tab [AC-4] › [TC-HFE-013] allItemsDeduped useMemo respects displayItems priority over items (313ms)
2026-10-16T05:06:18.371Z ✘ 16 [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:228:7 › AC-3: Scope toggle chip behaviour [AC-3] › [TC-HFE-009] Toggle chip is NOT visible when search field is empty on a specific category tab (1.5m)
2026-10-16T05:06:18.726Z ✘ 17 [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:235:7 › AC-3: Scope toggle chip behaviour [AC-3] › [TC-HFE-010] Switching category tab resets search scope to cross-category (1.5m)
2026-10-16T05:06:19.513Z ✘ 24 [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:300:7 › AC-6: Empty categories show inline empty state [AC-6] › [TC-HFE-017] Empty category shows inline empty state in All-tab grouped view (10.9s)
2026-10-16T05:06:29.839Z ✘ 26 [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:317:7 › AC-6: Empty categories show inline empty state [AC-6] › [TC-HFE-019] Empty category still renders its heading — old isEmpty guard removed (10.5s)
2026-10-16T05:06:30.302Z ✘ 27 [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:330:7 › AC-7: All tab is first and unique in sidebar [AC-7] › [TC-HFE-020] All tab is first (topmost) item in sidebar on kitchen with many categories (10.6s)
2026-10-16T05:06:30.309Z ✘ 19 [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:256:7 › AC-4: allItemsDeduped — no duplicates in All tab [AC-4] › [TC-HFE-012] Item assigned to multiple categories appears exactly once in All-tab search results (1.5m)
2026-10-16T05:06:31.275Z ✘ 28 [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:341:7 › AC-7: All tab is first and unique in sidebar [AC-7] › [TC-HFE-021] All tab is never rendered more than once even with multiple categories (10.6s)
2026-10-16T05:07:39.048Z ✘ 21 [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:273:7 › AC-5: FoodItemEmptyState on no results [AC-5] › [TC-HFE-014] FoodItemEmptyState renders when All-tab search returns no results (1.5m)
2026-10-16T05:07:39.273Z ✘ 23 [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:289:7 › AC-5: FoodItemEmptyState on no results [AC-5] › [TC-HFE-016] Empty state uses size='lg' (320px image) not 'sm' in full-grid context (1.5m)
2026-10-16T05:07:39.315Z ✘ 22 [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:281:7 › AC-5: FoodItemEmptyState on no results [AC-5] › [TC-HFE-015] FoodItemEmptyState renders when specific-category search returns no results (1.5m)
2026-10-16T05:07:39.442Z ✘ 25 [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:308:7 › AC-6: Empty categories show inline empty state [AC-6] › [TC-HFE-018] Clicking empty category tab in sidebar shows FoodItemEmptyState (1.5m)
2026-10-16T05:07:40.178Z ✓ 33 [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:391:7 › Regression: existing behaviours unaffected by feature merge › [TC-HFE-033] clearItems() resets selectedCategory to 'all' and clears searchQuery (213ms)
2026-10-16T05:07:42.610Z ✘ 37 [chromium] › e2e/specs/prd-2026-005-active-template.spec.ts:38:6 › PRD-2026-005 — Active custom template wins › TC-PRD-090 assigning a custom template makes regenerated PDF use it (1.5s)
2026-10-16T05:07:42.610Z - 38 [chromium] › e2e/specs/prd-2026-005-active-template.spec.ts:187:6 › PRD-2026-005 — Active custom template wins › TC-PRD-092 template with rect color=transparent still renders (no hex crash)
2026-10-16T05:07:42.611Z - 39 [chromium] › e2e/specs/prd-2026-005-active-template.spec.ts:302:6 › PRD-2026-005 — Active custom template wins › TC-PRD-091 template with unregistered fontName still renders (no font crash)
2026-10-16T05:07:42.611Z - 40 [chromium] › e2e/specs/prd-2026-005-active-template.spec.ts:408:6 › PRD-2026-005 — Active custom template wins › TC-PRD-093 template with empty image schemas still renders (no SOI crash)
2026-10-16T05:07:43.059Z ✘ 36 [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:413:7 › Performance: All-tab initial render › [TC-HFE-036] All-tab initial render with 200-item catalog completes within 2 seconds (2.6s)
2026-10-16T05:07:45.441Z ✓ 42 [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 (1.6s)
2026-10-16T05:07:45.814Z ✓ 41 [chromium] › e2e/specs/prd-2026-005-auto-triggers.spec.ts:8:6 › PRD-2026-005 — Auto-Triggers › TC-PRD-030/031 toggle Room Check-Out persists across reload (2.5s)
2026-10-16T05:07:47.107Z ✓ 43 [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 (1.6s)
2026-10-16T05:07:47.951Z ✓ 44 [chromium] › e2e/specs/prd-2026-005-auto-triggers.spec.ts:50:6 › PRD-2026-005 — Auto-Triggers › TC-PRD-032 toggle Restaurant Session Settle persists (2.1s)
2026-10-16T05:07:48.943Z ✓ 45 [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 (1.8s)
2026-10-16T05:07:50.961Z ✘ 34 [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:397:7 › Regression: existing behaviours unaffected by feature merge › [TC-HFE-034] FoodItemCard 'Unavailable' badge still renders for unavailable items in All tab (10.6s)
2026-10-16T05:07:51.009Z ✘ 35 [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:403:7 › Regression: existing behaviours unaffected by feature merge › [TC-HFE-035] Category 'Off' badge still renders for inactive/closed categories in sidebar (10.6s)
2026-10-16T05:07:51.109Z ✓ 47 [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 (2.1s)
2026-10-16T05:07:52.939Z ✓ 48 [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 (1.8s)
2026-10-16T05:07:54.648Z ✘ 49 [chromium] › e2e/specs/prd-2026-005-deep-verification.spec.ts:96:7 › PRD-2026-005 — deep verification › TC-PRD-071/CLASSIC CLASSIC invoice PDF prints primary bank account block (2.2s)
2026-10-16T05:07:54.668Z ✘ 50 [chromium] › e2e/specs/prd-2026-005-deep-verification.spec.ts:96:7 › PRD-2026-005 — deep verification › TC-PRD-071/MODERN MODERN invoice PDF prints primary bank account block (2.1s)
2026-10-16T05:07:57.195Z ✓ 51 [chromium] › e2e/specs/prd-2026-005-bank-accounts.spec.ts:108:6 › PRD-2026-005 — Bank Accounts › TC-PRD-016 delete removes row (4.2s)
2026-10-16T05:07:58.280Z ✘ 53 [chromium] › e2e/specs/prd-2026-005-deep-verification.spec.ts:96:7 › PRD-2026-005 — deep verification › TC-PRD-071/MODERN_BW MODERN_BW invoice PDF prints primary bank account block (2.1s)
2026-10-16T05:08:00.195Z ✘ 54 [chromium] › e2e/specs/prd-2026-005-deep-verification.spec.ts:207:6 › PRD-2026-005 — deep verification › TC-PRD-074 HSN/SAC card change propagates to regenerated invoice PDF (2.3s)
2026-10-16T05:08:01.723Z ✘ 31 [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:372:7 › Regression: existing behaviours unaffected by feature merge › [TC-HFE-031] Mobile OrderSummary search returns flat cross-category results (no duplication) (1.5m)
2026-10-16T05:08:02.164Z ✘ 46 [chromium] › e2e/specs/prd-2026-005-deep-verification.spec.ts:29:6 › PRD-2026-005 — deep verification › TC-PRD-070 IGST selection survives save → backend GET returns taxMode=IGST (12.8s)
2026-10-16T05:08:02.233Z ✘ 29 [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:351:7 › Regression: existing behaviours unaffected by feature merge › [TC-HFE-029] Existing category-tab item display unaffected after feature merge (1.5m)
2026-10-16T05:08:02.660Z ✘ 32 [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:383:7 › Regression: existing behaviours unaffected by feature merge › [TC-HFE-032] Mobile empty state renders on no search results in OrderSummary (1.5m)
2026-10-16T05:08:02.932Z ✘ 30 [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:360:7 › Regression: existing behaviours unaffected by feature merge › [TC-HFE-030] SelectOptionModal still opens when item with options is clicked (1.5m)
2026-10-16T05:08:03.498Z ✓ 56 [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 (2.3s)
2026-10-16T05:08:06.390Z ✓ 57 [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 (3.3s)
2026-10-16T05:08:07.624Z ✓ 60 [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 (3.9s)
2026-10-16T05:08:08.022Z ✓ 58 [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 (4.5s)
2026-10-16T05:08:10.993Z ✓ 61 [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 (6.7s)
2026-10-16T05:08:11.247Z ✘ 52 [chromium] › e2e/specs/prd-2026-005-deep-verification.spec.ts:145:6 › PRD-2026-005 — deep verification › TC-PRD-073 Invoice PDF column header reflects persisted taxMode (IGST) (13.6s)
2026-10-16T05:08:16.666Z ✘ 55 [chromium] › e2e/specs/prd-2026-005-deep-verification.spec.ts:265:6 › PRD-2026-005 — deep verification › TC-PRD-072 Credit Note PDF carries the issued CN number in text (16.6s)
2026-10-16T05:08:18.386Z ✓ 66 [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.3s)
2026-10-16T05:08:19.411Z ✓ 67 [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 (6.8s)
2026-10-16T05:08:20.532Z ✘ 59 [chromium] › e2e/specs/prd-2026-005-invoice-editor.spec.ts:42:6 › PRD-2026-005 — Invoice editor › TC-PRD-042 toggling to IGST switches per-line header (16.1s)
2026-10-16T05:08:21.709Z ✘ 62 [chromium] › e2e/specs/prd-2026-005-invoice-editor.spec.ts:19:6 › PRD-2026-005 — Invoice editor › TC-PRD-040/041 Tax Mode card visible with default CGST+SGST and matching header (16.1s)
2026-10-16T05:08:21.814Z ✓ 70 [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.4s)
2026-10-16T05:08:23.062Z ✓ 69 [chromium] › e2e/specs/prod-stay-journey.spec.ts:47:6 › Stay journey (prod-safe) › TC-PROD-001 a direct booking for tonight shows as upcoming @prod (4.4s)
2026-10-16T05:08:23.543Z ✘ 63 [chromium] › e2e/specs/prd-2026-005-invoice-editor.spec.ts:57:6 › PRD-2026-005 — Invoice editor › TC-PRD-043 Reset to default returns to backend choice (16.0s)
2026-10-16T05:08:24.732Z ✓ 71 [chromium] › e2e/specs/smoke-core-pages.spec.ts:23:7 › Core pages open › TC-SMOKE-002 Stay View opens on the test hotel @smoke (2.9s)
2026-10-16T05:08:25.052Z ✓ 72 [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-16T05:08:26.489Z ✓ 73 [chromium] › e2e/specs/smoke-core-pages.spec.ts:23:7 › Core pages open › TC-SMOKE-003 Reservations opens on the test hotel @smoke (3.3s)
2026-10-16T05:08:27.865Z ✓ 74 [chromium] › e2e/specs/prod-stay-journey.spec.ts:85:6 › Stay journey (prod-safe) › TC-PROD-002 checking the room in shows the stay as checked in @prod (4.8s)
2026-10-16T05:08:27.907Z ✓ 75 [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-16T05:08:28.817Z ✓ 76 [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.5s)
2026-10-16T05:08:28.879Z ✓ 77 [chromium] › e2e/specs/smoke-core-pages.spec.ts:23:7 › Core pages open › TC-SMOKE-007 Ledger opens on the test hotel @smoke (3.8s)
2026-10-16T05:08:29.622Z ✓ 78 [chromium] › e2e/specs/smoke-core-pages.spec.ts:23:7 › Core pages open › TC-SMOKE-008 Reports opens on the test hotel @smoke (3.1s)
2026-10-16T05:08:32.073Z ✓ 79 [chromium] › e2e/specs/prod-stay-journey.spec.ts:94:6 › Stay journey (prod-safe) › TC-PROD-003 checking the room out closes the stay @prod (4.1s)
2026-10-16T05:08:34.268Z ✓ 83 [arm] › e2e/specs/prd-2026-007-create-reservation.spec.ts:47:6 › PRD-2026-007 — reservation creation (API semantics) › TC-ARM-200 single-room create: UPCOMING, one room instance, default slot [CR-1] (2.4s)
2026-10-16T05:08:34.932Z ✓ 84 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:62:6 › PRD-2026-007 — reservation-level rollup (G6/Must 8/NG4) › TC-ARM-260 created booking exposes a reservation-level finance summary [Must 8] (990ms)
2026-10-16T05:08:35.698Z ✓ 85 [arm] › e2e/specs/prd-2026-007-create-reservation.spec.ts:58: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] (1.4s)
2026-10-16T05:08:36.204Z ✓ 86 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:69:6 › PRD-2026-007 — reservation-level rollup (G6/Must 8/NG4) › TC-ARM-261 partial check-in does not change totals [G6] (1.3s)
2026-10-16T05:08:36.724Z ✓ 87 [arm] › e2e/specs/prd-2026-007-create-reservation.spec.ts:67:6 › PRD-2026-007 — reservation creation (API semantics) › TC-ARM-202 created rooms carry the requested physical room numbers [Must 6] (1.0s)
2026-10-16T05:08:37.106Z ✓ 88 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:79:6 › PRD-2026-007 — reservation-level rollup (G6/Must 8/NG4) › TC-ARM-262 explicit recalculate is idempotent on totals [G6 "no unexplained delta"] (883ms)
2026-10-16T05:08:37.253Z ✓ 89 [arm] › e2e/specs/prd-2026-007-create-reservation.spec.ts:76:6 › PRD-2026-007 — reservation creation (API semantics) › TC-ARM-203 guest name persists and the booking window round-trips [data integrity] (518ms)
2026-10-16T05:08:37.276Z ✓ 91 [arm] › e2e/specs/prd-2026-007-create-reservation.spec.ts:86:6 › PRD-2026-007 — reservation creation (API semantics) › TC-ARM-204 missing guestName → validation error [validation] (11ms)
2026-10-16T05:08:38.140Z ✓ 90 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:89: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] (1.0s)
2026-10-16T05:08:38.826Z ✘ 92 [arm] › e2e/specs/prd-2026-007-create-reservation.spec.ts:103:6 › PRD-2026-007 — reservation creation (API semantics) › TC-ARM-205 checkOut ≤ checkIn → rejected [validation] (581ms)
2026-10-16T05:08:40.220Z ✘ 93 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:105:6 › PRD-2026-007 — reservation-level rollup (G6/Must 8/NG4) › TC-ARM-264 cancellation charge lands at reservation level [NG4/S-23] (893ms)
2026-10-16T05:08:40.354Z ✓ 94 [arm] › e2e/specs/prd-2026-007-create-reservation.spec.ts:121: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] (469ms)
2026-10-16T05:08:40.431Z ✓ 95 [arm] › e2e/specs/prd-2026-007-create-reservation.spec.ts:156:6 › PRD-2026-007 — reservation creation (API semantics) › TC-ARM-207 unknown roomTypeId → rejected [validation] (59ms)
2026-10-16T05:08:40.456Z - 96 [arm] › e2e/specs/prd-2026-007-create-reservation.spec.ts:174: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-16T05:08:41.299Z ✓ 97 [arm] › e2e/specs/prd-2026-007-create-reservation.spec.ts:195:6 › PRD-2026-007 — reservation creation (API semantics) › TC-ARM-209 per-room stay windows at create produce per-room card windows [Must 7] (828ms)
2026-10-16T05:08:42.166Z ✓ 98 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:117: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] (973ms)
2026-10-16T05:08:42.501Z ✓ 99 [arm] › e2e/specs/prd-2026-007-create-reservation.spec.ts:230:6 › PRD-2026-007 — reservation creation (API semantics) › TC-ARM-210 created booking releases its rooms again after cancel [inventory release/S-23] (1.2s)
2026-10-16T05:08:43.385Z ✓ 100 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:129:6 › PRD-2026-007 — reservation-level rollup (G6/Must 8/NG4) › TC-ARM-266 totals stable across a full staggered journey [G6 drift check] (1.2s)
2026-10-16T05:08:43.529Z ✘ 80 [mobile-chromium] › e2e/specs/prd-2026-005-mobile.spec.ts:14:6 › PRD-2026-005 — mobile › TC-PRD-047 Tax Mode card visible on mobile invoice editor (13.3s)
2026-10-16T05:08:44.218Z ✘ 81 [mobile-chromium] › e2e/specs/prd-2026-005-mobile.spec.ts:48:6 › PRD-2026-005 — mobile › TC-PRD-049 IGST save round-trip on mobile persists to DB (13.4s)
2026-10-16T05:08:44.247Z ✘ 82 [mobile-chromium] › e2e/specs/prd-2026-005-mobile.spec.ts:28:6 › PRD-2026-005 — mobile › TC-PRD-048 IGST toggle changes selection on mobile (13.3s)
2026-10-16T05:08:44.339Z ✓ 102 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:144:6 › PRD-2026-007 — charges, discounts, payments, add-ons › TC-ARM-267 add a misc charge → total rises by amount (+tax) [charges] (930ms)
2026-10-16T05:08:45.498Z ✓ 103 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:153: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] (1.1s)
2026-10-16T05:08:45.997Z ✓ 104 [arm] › e2e/specs/prd-2026-007-lock-move-swap.spec.ts:68:6 › PRD-2026-007 — Move/Swap lock › TC-ARM-140 API: lock then unlock round-trips [lock] (1.0s)
2026-10-16T05:08:46.242Z ✓ 107 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:165:6 › PRD-2026-007 — charges, discounts, payments, add-ons › TC-ARM-269 record a payment → due drops by the amount [payments] (732ms)
2026-10-16T05:08:47.852Z ✓ 108 [arm] › e2e/specs/prd-2026-007-lock-move-swap.spec.ts:87:6 › PRD-2026-007 — Move/Swap lock › TC-ARM-141 API: batch lock of 3 rooms in one call [lock] (1.8s)
2026-10-16T05:08:49.493Z ✘ 68 [chromium] › e2e/specs/prd-2026-012-pricing-rules-readiness.spec.ts:4:7 › PRD-2026-012 pricing rules production readiness › renders pricing controls and the non-mutating remove-cap path (31.6s)
2026-10-16T05:08:50.838Z ✓ 111 [arm] › e2e/specs/prd-2026-007-rbac-ux.spec.ts:59:6 › PRD-2026-007 — authentication wall (Must 18) › TC-ARM-300 every ARM mutation endpoint returns 401 without a token [Must 18] (221ms)
2026-10-16T05:08:50.882Z ✘ 109 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:175:6 › PRD-2026-007 — charges, discounts, payments, add-ons › TC-ARM-270 apply a flat discount → total drops accordingly [discounts] (1.1s)
2026-10-16T05:08:50.883Z ✓ 112 [arm] › e2e/specs/prd-2026-007-rbac-ux.spec.ts:68:6 › PRD-2026-007 — authentication wall (Must 18) › TC-ARM-301 garbage bearer token → 401 [Must 18] (28ms)
2026-10-16T05:08:50.933Z ✓ 110 [arm] › e2e/specs/prd-2026-007-lock-move-swap.spec.ts:99:6 › PRD-2026-007 — Move/Swap lock › TC-ARM-142 API: lock survives an unrelated lifecycle op on a sibling room [lock persistence] (3.1s)
2026-10-16T05:08:50.952Z ✓ 113 [arm] › e2e/specs/prd-2026-007-rbac-ux.spec.ts:80:6 › PRD-2026-007 — authentication wall (Must 18) › TC-ARM-302 reads are also walled (checkin detail, finance, guest accounts) [Must 18] (48ms)
2026-10-16T05:08:53.741Z ✓ 116 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:184:6 › PRD-2026-007 — charges, discounts, payments, add-ons › TC-ARM-271 zero/negative charge amount is rejected [validation] (491ms)
2026-10-16T05:08:54.330Z ✓ 106 [arm] › e2e/specs/prd-2026-007-partial-checkin.spec.ts:69: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] (8.5s)
2026-10-16T05:08:55.154Z ✓ 117 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:191: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] (1.4s)
2026-10-16T05:08:55.927Z ✓ 119 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:218:6 › PRD-2026-007 — guest accounts (party) under room ops › TC-ARM-273 booking carries at least one default guest account [party model] (740ms)
2026-10-16T05:08:56.673Z ✘ 118 [arm] › e2e/specs/prd-2026-007-partial-checkin.spec.ts:84:6 › PRD-2026-007 — partial check-in › TC-ARM-071 modal lists only UPCOMING rooms — checked-in and cancelled rooms are absent [Must 3] (1.9s)
2026-10-16T05:08:56.813Z ✓ 120 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:225:6 › PRD-2026-007 — guest accounts (party) under room ops › TC-ARM-274 guest-account balances reconcile with the finance read [party vs finance] (869ms)
2026-10-16T05:08:59.691Z ✘ 121 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:238:6 › PRD-2026-007 — guest accounts (party) under room ops › TC-ARM-275 room checkout locks its guest account (isLocked=true) [party lock] (1.6s)
2026-10-16T05:09:01.629Z ✓ 123 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:256: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] (614ms)
2026-10-16T05:09:02.299Z ✓ 124 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:271: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] (639ms)
2026-10-16T05:09:02.517Z ✓ 122 [arm] › e2e/specs/prd-2026-007-partial-checkin.spec.ts:97:6 › PRD-2026-007 — partial check-in › TC-ARM-072 group Select All selects every room of the type; Clear All clears [UX] (4.3s)
2026-10-16T05:09:03.233Z ✓ 125 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:290: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] (904ms)
2026-10-16T05:09:04.999Z ✘ 126 [arm] › e2e/specs/prd-2026-007-partial-checkin.spec.ts:109:6 › PRD-2026-007 — partial check-in › TC-ARM-073 Continue stays disabled with zero rooms selected [UX] (1.9s)
2026-10-16T05:09:06.416Z ✓ 127 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:307: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] (3.0s)
2026-10-16T05:09:08.465Z ✘ 115 [arm] › e2e/specs/prd-2026-007-rbac-ux.spec.ts:95: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] (15.8s)
2026-10-16T05:09:09.516Z ✘ 114 [arm] › e2e/specs/prd-2026-007-lock-move-swap.spec.ts:110:6 › PRD-2026-007 — Move/Swap lock › TC-ARM-143 UI: lock one room through the modal; reopening pre-selects it [lock/§6 modal] (15.9s)
2026-10-16T05:09:11.034Z ✓ 128 [arm] › e2e/specs/prd-2026-007-partial-checkin.spec.ts:116:6 › PRD-2026-007 — partial check-in › TC-ARM-074 closing the modal mutates nothing [S-18 analog] (4.4s)
2026-10-16T05:09:11.959Z ✘ 132 [arm] › e2e/specs/prd-2026-007-partial-checkin.spec.ts:127:6 › PRD-2026-007 — partial check-in › TC-ARM-075 API: checking in a subset flips only those rooms [Must 3/S-08] (57ms)
2026-10-16T05:09:13.828Z ✓ 130 [arm] › e2e/specs/prd-2026-007-rbac-ux.spec.ts:105: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] (3.5s)
2026-10-16T05:09:14.943Z ✓ 133 [arm] › e2e/specs/prd-2026-007-partial-checkin.spec.ts:141:6 › PRD-2026-007 — partial check-in › TC-ARM-076 API: untouched rooms keep null actualCheckInTime [audit integrity, §1] (1.1s)
2026-10-16T05:09:15.420Z ✘ 135 [arm] › e2e/specs/prd-2026-007-partial-checkin.spec.ts:153:6 › PRD-2026-007 — partial check-in › TC-ARM-077 API: arrival timestamp ≈ now on checked rooms [audit-true arrival] (63ms)
2026-10-16T05:09:16.950Z ✓ 134 [arm] › e2e/specs/prd-2026-007-rbac-ux.spec.ts:115: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] (3.1s)
2026-10-16T05:09:17.347Z ✓ 136 [arm] › e2e/specs/prd-2026-007-partial-checkin.spec.ts:164:6 › PRD-2026-007 — partial check-in › TC-ARM-078 API: explicit actualCheckInTime is honored [Must 3] (622ms)
2026-10-16T05:09:17.641Z ✘ 138 [arm] › e2e/specs/prd-2026-007-partial-checkin.spec.ts:174: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] (43ms)
2026-10-16T05:09:20.164Z ✘ 129 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:316:6 › PRD-2026-007 — finance surfaces in the UI › TC-ARM-280 guest-account screen lists the booking's accounts [party UI] (12.7s)
2026-10-16T05:09:20.211Z ✓ 139 [arm] › e2e/specs/prd-2026-007-partial-checkin.spec.ts:187:6 › PRD-2026-007 — partial check-in › TC-ARM-080 full-subset check-in (all rooms at once) lands parent CHECKED_IN [Must 3] (1.1s)
2026-10-16T05:09:20.451Z ✘ 140 [arm] › e2e/specs/prd-2026-007-partial-checkin.spec.ts:196: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] (41ms)
2026-10-16T05:09:23.638Z ✓ 142 [arm] › e2e/specs/prd-2026-007-partial-checkin.spec.ts:212:6 › PRD-2026-007 — partial check-in › TC-ARM-082 one-by-one staggering over 5 rooms keeps every intermediate state exact [Must 12] (1.9s)
2026-10-16T05:09:23.995Z ✘ 143 [arm] › e2e/specs/prd-2026-007-partial-checkin.spec.ts:225: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] (55ms)
2026-10-16T05:09:26.098Z ✘ 131 [arm] › e2e/specs/prd-2026-007-lock-move-swap.spec.ts:128:6 › PRD-2026-007 — Move/Swap lock › TC-ARM-144 UI: Continue stays disabled with no delta from initial state [LMS modal] (14.4s)
2026-10-16T05:09:27.829Z ✘ 144 [arm] › e2e/specs/prd-2026-007-partial-checkin.spec.ts:236:6 › PRD-2026-007 — partial check-in › TC-ARM-084 UI reflects partial state immediately after API check-in + reload [G5] (2.0s)
2026-10-16T05:09:29.614Z ✘ 145 [arm] › e2e/specs/prd-2026-007-lock-move-swap.spec.ts:135:6 › PRD-2026-007 — Move/Swap lock › TC-ARM-145 UI: CANCELLED/NO_SHOW rooms are not offered for locking [LMS eligibility] (1.7s)
2026-10-16T05:09:31.597Z ✘ 146 [arm] › e2e/specs/prd-2026-007-partial-checkin.spec.ts:245:6 › PRD-2026-007 — partial check-in › TC-ARM-085 reservations list pill shows the partial state [Must 12/G5] (1.9s)
2026-10-16T05:09:33.403Z ✘ 147 [arm] › e2e/specs/prd-2026-007-lock-move-swap.spec.ts:148:6 › PRD-2026-007 — Move/Swap lock › TC-ARM-146 UI: terminal-only booking hides the Lock/Unlock entry entirely [LMS-003] (1.6s)
2026-10-16T05:09:35.267Z ✘ 141 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:323:6 › PRD-2026-007 — finance surfaces in the UI › TC-ARM-281 details payment summary reflects an added charge after reload [Must 8 UI] (13.2s)
2026-10-16T05:09:35.267Z - 150 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:340:6 › TC-ARM-282 folio list shows the booking folio; detail opens [folio]
2026-10-16T05:09:35.267Z - 151 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:341:6 › TC-ARM-283 link a charge to a folio; folio totals update [folio]
2026-10-16T05:09:35.268Z - 152 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:342:6 › TC-ARM-284 unlink restores the unassigned pool [folio]
2026-10-16T05:09:35.268Z - 153 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:343:6 › TC-ARM-285 folio totals reconcile with the finance read after a room cancel [G6]
2026-10-16T05:09:35.268Z - 154 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:344:6 › TC-ARM-286 move charges between guest accounts shifts balances, total unchanged [NG4]
2026-10-16T05:09:35.268Z - 155 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:345:6 › TC-ARM-287 locked (checked-out) account rejects charge moves [party lock]
2026-10-16T05:09:35.268Z - 156 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:346:6 › TC-ARM-288 discount scoped to a guest account [discounts]
2026-10-16T05:09:35.268Z - 157 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:347:6 › TC-ARM-289 payment distribution strategies (EQUAL/SINGLE/MANUAL) [payments]
2026-10-16T05:09:35.268Z - 158 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:348:6 › TC-ARM-290 invoice generation still reservation-scoped after partial ops [NG4/PRD-2026-005 seam]
2026-10-16T05:09:35.268Z - 159 [arm] › e2e/specs/prd-2026-007-finance.spec.ts:349:6 › TC-ARM-291 ledger entries balanced after the full §6.2 journey (no dangling entry) [G6]
2026-10-16T05:09:35.299Z ✘ 148 [arm] › e2e/specs/prd-2026-007-partial-checkin.spec.ts:258:6 › PRD-2026-007 — partial check-in › TC-ARM-086 modal on a single-room booking lists exactly that room [S-01 equivalence] (2.0s)
2026-10-16T05:09:37.381Z ✘ 149 [arm] › e2e/specs/prd-2026-007-lock-move-swap.spec.ts:159: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] (1.9s)
2026-10-16T05:09:39.297Z ✘ 162 [arm] › e2e/specs/prd-2026-007-lock-move-swap.spec.ts:177:6 › PRD-2026-007 — Move/Swap lock › TC-ARM-148 API: lock with a foreign roomInstanceId is rejected [tenancy] (57ms)
2026-10-16T05:09:39.949Z ✘ 161 [arm] › e2e/specs/prd-2026-007-partial-checkin.spec.ts:267:6 › PRD-2026-007 — partial check-in › TC-ARM-087 selected chip toggles off on second click (deselect) [UX] (2.4s)
2026-10-16T05:09:40.862Z ✘ 65 [chromium] › e2e/specs/prd-2026-005-supplementary-docs.spec.ts:24:6 › PRD-2026-005 — Supplementary documents › TC-PRD-050 Generate dropdown lists all three doc types (1.5m)
2026-10-16T05:09:40.863Z - 165 [chromium] › e2e/specs/prd-2026-005-supplementary-docs.spec.ts:35:6 › PRD-2026-005 — Supplementary documents › TC-PRD-051 Credit Note (full reversal) generates 201 + PDF blob
2026-10-16T05:09:40.863Z - 166 [chromium] › e2e/specs/prd-2026-005-supplementary-docs.spec.ts:65:6 › PRD-2026-005 — Supplementary documents › TC-PRD-053 Debit Note (full) generates 201 + PDF blob
2026-10-16T05:09:40.863Z - 167 [chromium] › e2e/specs/prd-2026-005-supplementary-docs.spec.ts:85:6 › PRD-2026-005 — Supplementary documents › TC-PRD-054 Refund Voucher generates 201 + sequential RV number
2026-10-16T05:09:40.913Z ✘ 163 [arm] › e2e/specs/prd-2026-007-lock-move-swap.spec.ts:190:6 › PRD-2026-007 — Move/Swap/Bulk-assign Phase-2c contract (PRD-GAP) › TC-ARM-149 move/preview → 422 Phase-2c stub [Must 17 GAP] (61ms)
2026-10-16T05:09:42.345Z ✘ 64 [chromium] › e2e/specs/prd-2026-005-invoice-editor.spec.ts:70:6 › PRD-2026-005 — Invoice editor › TC-PRD-046 Place of Supply input accepts state name (1.5m)
2026-10-16T05:09:42.566Z ✘ 169 [arm] › e2e/specs/prd-2026-007-lock-move-swap.spec.ts:201:6 › PRD-2026-007 — Move/Swap/Bulk-assign Phase-2c contract (PRD-GAP) › TC-ARM-150 move commit → 422 Phase-2c stub [Must 6 GAP] (87ms)
2026-10-16T05:09:43.626Z ✘ 164 [arm] › e2e/specs/prd-2026-007-partial-checkin.spec.ts:277:6 › PRD-2026-007 — partial check-in › TC-ARM-088 navigating away from the wizard without confirming leaves rooms UPCOMING [S-18] (2.0s)
2026-10-16T05:09:44.020Z ✘ 171 [arm] › e2e/specs/prd-2026-007-lock-move-swap.spec.ts:212:6 › PRD-2026-007 — Move/Swap/Bulk-assign Phase-2c contract (PRD-GAP) › TC-ARM-151 swap/preview → 422 Phase-2c stub [Must 16 GAP] (49ms)
2026-10-16T05:09:44.123Z ✘ 168 [arm] › e2e/specs/prd-2026-007-slots-multicycle.spec.ts:71: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] (1.7s)
2026-10-16T05:09:44.769Z ✘ 170 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:146:7 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-001 all UPCOMING → UPCOMING [CR-2/S-02] (881ms)
2026-10-16T05:09:45.569Z ✘ 173 [arm] › e2e/specs/prd-2026-007-lock-move-swap.spec.ts:223:6 › PRD-2026-007 — Move/Swap/Bulk-assign Phase-2c contract (PRD-GAP) › TC-ARM-152 swap commit → 422 Phase-2c stub [Must 16/S-30 GAP] (61ms)
2026-10-16T05:09:45.684Z ✘ 174 [arm] › e2e/specs/prd-2026-007-slots-multicycle.spec.ts:80:6 › PRD-2026-007 — default slot guarantee (CR-1) › TC-ARM-171 single-room booking also carries its default slot [S-01/CR-1] (48ms)
2026-10-16T05:09:46.620Z ✘ 175 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:146:7 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-002 all CHECKED_IN → CHECKED_IN [CR-2/S-04] (61ms)
2026-10-16T05:09:47.218Z ✘ 176 [arm] › e2e/specs/prd-2026-007-lock-move-swap.spec.ts:234:6 › PRD-2026-007 — Move/Swap/Bulk-assign Phase-2c contract (PRD-GAP) › TC-ARM-153 bulk-assign → 422 Phase-2c stub [Must 10/S-27 GAP] (67ms)
2026-10-16T05:09:47.340Z ✘ 177 [arm] › e2e/specs/prd-2026-007-slots-multicycle.spec.ts:87: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] (76ms)
2026-10-16T05:09:47.347Z ✘ 172 [arm] › e2e/specs/prd-2026-007-partial-checkin.spec.ts:289:6 › PRD-2026-007 — partial check-in › TC-ARM-089 fully-terminal booking offers no partial check-in entry [state gating] (2.1s)
2026-10-16T05:09:48.152Z ✘ 178 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:146:7 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-003 all CHECKED_OUT → CHECKED_OUT (terminal close) [CR-2/CR-3] (64ms)
2026-10-16T05:09:48.584Z ✓ 179 [arm] › e2e/specs/prd-2026-007-lock-move-swap.spec.ts:243:6 › PRD-2026-007 — Move/Swap/Bulk-assign Phase-2c contract (PRD-GAP) › TC-ARM-154 stubs still enforce auth: unauthenticated move → 401, not 422 [Must 18] (20ms)
2026-10-16T05:09:48.946Z ✘ 180 [arm] › e2e/specs/prd-2026-007-slots-multicycle.spec.ts:97: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] (69ms)
2026-10-16T05:09:49.923Z ✘ 183 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:146:7 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-004 all CANCELLED → CANCELLED [CR-2/S-05] (65ms)
2026-10-16T05:09:50.495Z ✘ 160 [arm] › e2e/specs/prd-2026-007-room-cards.spec.ts:78: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] (12.9s)
2026-10-16T05:09:50.852Z ✘ 184 [arm] › e2e/specs/prd-2026-007-slots-multicycle.spec.ts:116:6 › PRD-2026-007 — default slot guarantee (CR-1) › TC-ARM-174 default slot window equals the reservation window [CR-1] (62ms)
2026-10-16T05:09:51.459Z ✘ 182 [arm] › e2e/specs/prd-2026-007-lock-move-swap.spec.ts:251:6 › PRD-2026-007 — Move/Swap/Bulk-assign Phase-2c contract (PRD-GAP) › TC-ARM-155 UI: no dead-end Move/Swap affordance is exposed while the backend is stubbed [UX] (2.3s)
2026-10-16T05:09:51.460Z - 186 [arm] › e2e/specs/prd-2026-007-lock-move-swap.spec.ts:272:6 › TC-ARM-156 move shows Current → New → Price diff before confirm [S-28]
2026-10-16T05:09:51.460Z - 187 [arm] › e2e/specs/prd-2026-007-lock-move-swap.spec.ts:273:6 › TC-ARM-157 move sets isDirty on the vacated room and recalculates finance [Must 6/S-26]
2026-10-16T05:09:51.460Z - 188 [arm] › e2e/specs/prd-2026-007-lock-move-swap.spec.ts:274:6 › TC-ARM-158 swap exchanges two occupied rooms bidirectionally [S-30]
2026-10-16T05:09:51.460Z - 189 [arm] › e2e/specs/prd-2026-007-lock-move-swap.spec.ts:275:6 › TC-ARM-159 swap moves room add-ons with each room [Must 16]
2026-10-16T05:09:51.460Z - 190 [arm] › e2e/specs/prd-2026-007-lock-move-swap.spec.ts:276:6 › TC-ARM-160 bulk auto-allocate fills by room type without over-allocating [Must 10]
2026-10-16T05:09:51.460Z - 191 [arm] › e2e/specs/prd-2026-007-lock-move-swap.spec.ts:277:6 › TC-ARM-161 bulk assignment blocks requests beyond availability up front [S-27]
2026-10-16T05:09:51.460Z - 192 [arm] › e2e/specs/prd-2026-007-lock-move-swap.spec.ts:278:6 › TC-ARM-162 move to a locked room is prevented [lock semantics]
2026-10-16T05:09:51.460Z - 193 [arm] › e2e/specs/prd-2026-007-lock-move-swap.spec.ts:279:6 › TC-ARM-163 swap respects Move/Swap locks on either side [lock semantics]
2026-10-16T05:09:51.600Z ✘ 181 [arm] › e2e/specs/prd-2026-007-partial-checkin.spec.ts:298: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] (2.3s)
2026-10-16T05:09:51.600Z - 195 [arm] › e2e/specs/prd-2026-007-partial-checkin.spec.ts:319:6 › TC-ARM-091 §6.2 story: 10-room block, 6 arrive at 3pm, 4 at 5pm — full wizard journey [S-08/S-12]
2026-10-16T05:09:51.740Z ✘ 185 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:146:7 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-005 all NO_SHOW → NO_SHOW [CR-2] (56ms)
2026-10-16T05:09:52.358Z ✘ 196 [arm] › e2e/specs/prd-2026-007-slots-multicycle.spec.ts:132: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] (69ms)
2026-10-16T05:09:53.852Z ✘ 199 [arm] › e2e/specs/prd-2026-007-slots-multicycle.spec.ts:143: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] (87ms)
2026-10-16T05:09:54.020Z ✘ 194 [arm] › e2e/specs/prd-2026-007-room-cards.spec.ts:89:6 › PRD-2026-007 — room cards on Booking Details › TC-ARM-041 UPCOMING card is blue; CHECKED_IN card is red [Must 2/G5] (1.8s)
2026-10-16T05:09:54.049Z ✘ 198 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:146:7 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-006 1 CHECKED_IN + 2 UPCOMING → PARTIAL_CHECKED_IN [CR-2/S-03] (858ms)
2026-10-16T05:09:54.599Z ✘ 197 [arm] › e2e/specs/prd-2026-007-stay-view.spec.ts:85: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] (1.6s)
2026-10-16T05:09:55.266Z ✘ 200 [arm] › e2e/specs/prd-2026-007-slots-multicycle.spec.ts:157: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] (51ms)
2026-10-16T05:09:55.543Z ✘ 202 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:146:7 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-007 4 CHECKED_IN + 1 UPCOMING → PARTIAL_CHECKED_IN [CR-2] (69ms)
2026-10-16T05:09:56.864Z ✘ 204 [arm] › e2e/specs/prd-2026-007-slots-multicycle.spec.ts:166: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] (70ms)
2026-10-16T05:09:57.148Z ✘ 205 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:146: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] (78ms)
2026-10-16T05:09:57.838Z ✘ 201 [arm] › e2e/specs/prd-2026-007-room-cards.spec.ts:100:6 › PRD-2026-007 — room cards on Booking Details › TC-ARM-042 CHECKED_IN room past its checkout time shows checkout-due orange [Must 2] (2.1s)
2026-10-16T05:09:58.077Z ✘ 203 [arm] › e2e/specs/prd-2026-007-stay-view.spec.ts:92: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] (1.9s)
2026-10-16T05:09:58.440Z ✘ 206 [arm] › e2e/specs/prd-2026-007-slots-multicycle.spec.ts:176: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] (54ms)
2026-10-16T05:09:58.691Z ✘ 207 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:146:7 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-009 UPCOMING + CHECKED_OUT (no CHECKED_IN) → VARIED_STATUS [CR-2 else-branch] (58ms)
2026-10-16T05:09:59.838Z ✘ 210 [arm] › e2e/specs/prd-2026-007-slots-multicycle.spec.ts:189: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] (61ms)
2026-10-16T05:10:00.251Z ✘ 211 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:146:7 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-010 UPCOMING + CHECKED_IN + CHECKED_OUT → VARIED_STATUS [CR-2 else-branch] (113ms)
2026-10-16T05:10:01.477Z ✘ 208 [arm] › e2e/specs/prd-2026-007-room-cards.spec.ts:121:7 › PRD-2026-007 — room cards on Booking Details › TC-ARM-043 CANCELLED room card is grey and stays listed [Must 2] (2.2s)
2026-10-16T05:10:01.550Z ✘ 209 [arm] › e2e/specs/prd-2026-007-stay-view.spec.ts:105:6 › PRD-2026-007 — stay view blocks per room/slot › TC-ARM-232 UPCOMING reservation block is purple family [stay view colors] (1.9s)
2026-10-16T05:10:01.603Z ✘ 212 [arm] › e2e/specs/prd-2026-007-slots-multicycle.spec.ts:210: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] (54ms)
2026-10-16T05:10:01.885Z ✘ 213 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:146: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] (53ms)
2026-10-16T05:10:03.025Z ✘ 216 [arm] › e2e/specs/prd-2026-007-slots-multicycle.spec.ts:220: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] (89ms)
2026-10-16T05:10:03.428Z ✘ 217 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:146:7 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-012 NO_SHOW + UPCOMING → UPCOMING (collapse) [CR-2 collapse/S-11] (106ms)
2026-10-16T05:10:04.647Z ✘ 215 [arm] › e2e/specs/prd-2026-007-stay-view.spec.ts:112:6 › PRD-2026-007 — stay view blocks per room/slot › TC-ARM-233 CHECKED_IN room block is red family [stay view colors] (1.6s)
2026-10-16T05:10:04.780Z ✘ 218 [arm] › e2e/specs/prd-2026-007-slots-multicycle.spec.ts:254: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] (52ms)
2026-10-16T05:10:04.899Z ✘ 214 [arm] › e2e/specs/prd-2026-007-room-cards.spec.ts:121:7 › PRD-2026-007 — room cards on Booking Details › TC-ARM-044 NO_SHOW room card is grey and stays listed [Must 2] (2.1s)
2026-10-16T05:10:05.067Z ✘ 219 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:146:7 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-013 CANCELLED + CHECKED_IN → CHECKED_IN (collapse) [CR-2 collapse] (59ms)
2026-10-16T05:10:06.173Z ✘ 221 [arm] › e2e/specs/prd-2026-007-slots-multicycle.spec.ts:262: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] (65ms)
2026-10-16T05:10:06.657Z ✘ 223 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:146:7 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-014 NO_SHOW + CHECKED_IN → CHECKED_IN (collapse) [CR-2 collapse] (102ms)
2026-10-16T05:10:08.363Z ✘ 225 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:146:7 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-015 CANCELLED + CHECKED_OUT → CHECKED_OUT (collapse) [CR-2 collapse] (65ms)
2026-10-16T05:10:08.454Z ✘ 220 [arm] › e2e/specs/prd-2026-007-stay-view.spec.ts:121:6 › PRD-2026-007 — stay view blocks per room/slot › TC-ARM-234 CHECKED_OUT room block is grey family [stay view colors] (2.2s)
2026-10-16T05:10:08.528Z ✘ 222 [arm] › e2e/specs/prd-2026-007-room-cards.spec.ts:121:7 › PRD-2026-007 — room cards on Booking Details › TC-ARM-045 CHECKED_OUT room card is grey and stays listed [Must 2] (2.2s)
2026-10-16T05:10:10.047Z ✘ 226 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:146: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] (53ms)
2026-10-16T05:10:10.120Z ✘ 224 [arm] › e2e/specs/prd-2026-007-slots-multicycle.spec.ts:269: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] (1.8s)
2026-10-16T05:10:11.749Z ✘ 229 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:146:7 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-017 CANCELLED + NO_SHOW + CHECKED_OUT → VARIED_STATUS [CR-2/S-07] (64ms)
2026-10-16T05:10:11.831Z ✘ 230 [arm] › e2e/specs/prd-2026-007-slots-multicycle.spec.ts:280: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] (59ms)
2026-10-16T05:10:11.992Z ✘ 227 [arm] › e2e/specs/prd-2026-007-stay-view.spec.ts:131: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] (1.8s)
2026-10-16T05:10:12.292Z ✘ 228 [arm] › e2e/specs/prd-2026-007-room-cards.spec.ts:141: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] (1.9s)
2026-10-16T05:10:13.247Z ✘ 231 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:146:7 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-018 CANCELLED + UPCOMING + CHECKED_IN → PARTIAL_CHECKED_IN (terminal ignored) [CR-2] (58ms)
2026-10-16T05:10:13.293Z ✘ 232 [arm] › e2e/specs/prd-2026-007-slots-multicycle.spec.ts:301: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] (46ms)
2026-10-16T05:10:14.789Z ✘ 235 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:146: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] (90ms)
2026-10-16T05:10:14.923Z ✘ 233 [arm] › e2e/specs/prd-2026-007-stay-view.spec.ts:159:6 › PRD-2026-007 — stay view blocks per room/slot › TC-ARM-236 cancelled room frees its row — block no longer rendered [inventory release] (1.3s)
2026-10-16T05:10:15.760Z ✘ 234 [arm] › e2e/specs/prd-2026-007-room-cards.spec.ts:164: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] (1.9s)
2026-10-16T05:10:16.239Z ✘ 101 [arm] › e2e/specs/prd-2026-007-create-reservation.spec.ts:244: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] (1.5m)
2026-10-16T05:10:16.755Z ✘ 236 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:146:7 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-020 single room: created → UPCOMING (zero-regression) [S-01/Must 9] (540ms)
2026-10-16T05:10:18.374Z ✘ 237 [arm] › e2e/specs/prd-2026-007-stay-view.spec.ts:169:6 › PRD-2026-007 — stay view blocks per room/slot › TC-ARM-237 no-show room frees its row likewise [inventory release] (1.8s)
2026-10-16T05:10:18.521Z ✘ 240 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:146:7 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-021 single room: check-in → CHECKED_IN [S-01/Must 9] (110ms)
2026-10-16T05:10:19.715Z ✘ 238 [arm] › e2e/specs/prd-2026-007-room-cards.spec.ts:175: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] (2.2s)
2026-10-16T05:10:20.037Z ✘ 239 [arm] › e2e/specs/prd-2026-007-create-reservation.spec.ts:253: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] (2.0s)
2026-10-16T05:10:20.055Z ✘ 105 [arm] › e2e/specs/prd-2026-007-noshow-cancel.spec.ts:62: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] (1.5m)
2026-10-16T05:10:20.221Z ✘ 242 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:146:7 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-022 single room: checkout → CHECKED_OUT (closed) [S-01/CR-3] (69ms)
2026-10-16T05:10:21.995Z ✘ 246 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:146:7 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-023 single room: cancel → CANCELLED [S-23] (69ms)
2026-10-16T05:10:22.034Z ✘ 241 [arm] › e2e/specs/prd-2026-007-stay-view.spec.ts:179: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] (1.6s)
2026-10-16T05:10:23.796Z ✘ 243 [arm] › e2e/specs/prd-2026-007-room-cards.spec.ts:189:6 › PRD-2026-007 — room cards on Booking Details › TC-ARM-049 checked-in card shows actual in-time; checked-out shows in+out times [Must 7] (2.3s)
2026-10-16T05:10:23.836Z ✘ 247 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:146:7 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-024 single room: no-show → NO_SHOW [S-22] (54ms)
2026-10-16T05:10:24.124Z ✘ 244 [arm] › e2e/specs/prd-2026-007-create-reservation.spec.ts:263:6 › PRD-2026-007 — created reservations in the UI › TC-ARM-213 details page total reflects rooms × nightly price [finance surface] (2.2s)
2026-10-16T05:10:24.124Z - 249 [arm] › e2e/specs/prd-2026-007-create-reservation.spec.ts:286:6 › TC-ARM-214 UI create: single-room reservation end-to-end [§6.7]
2026-10-16T05:10:24.124Z - 250 [arm] › e2e/specs/prd-2026-007-create-reservation.spec.ts:287:6 › TC-ARM-215 UI create: multi-room with per-night rate visible [§6.7]
2026-10-16T05:10:24.125Z - 251 [arm] › e2e/specs/prd-2026-007-create-reservation.spec.ts:288:6 › TC-ARM-216 UI create: availability cap blocks over-request up front [Must 10/S-27]
2026-10-16T05:10:24.125Z - 252 [arm] › e2e/specs/prd-2026-007-create-reservation.spec.ts:289:6 › TC-ARM-217 UI create: error copy names the available count [S-27]
2026-10-16T05:10:24.125Z - 253 [arm] › e2e/specs/prd-2026-007-create-reservation.spec.ts:290:6 › TC-ARM-218 UI create: double-submit guard (no duplicate booking) [S-17]
2026-10-16T05:10:24.125Z - 254 [arm] › e2e/specs/prd-2026-007-create-reservation.spec.ts:291:6 › TC-ARM-219 UI create: created booking visible in stay view immediately [§6.7]
2026-10-16T05:10:24.206Z ✘ 245 [arm] › e2e/specs/prd-2026-007-noshow-cancel.spec.ts:83:6 › PRD-2026-007 — no-show per room › TC-ARM-101 UI: reason is required — CTA disabled while empty [Must 4] (2.3s)
2026-10-16T05:10:25.070Z ✘ 248 [arm] › e2e/specs/prd-2026-007-stay-view.spec.ts:207: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] (1.1s)
2026-10-16T05:10:25.297Z ✘ 256 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:146:7 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-025 5-room staggered full journey lands CHECKED_OUT [G2/G3] (58ms)
2026-10-16T05:10:26.047Z - 255 [arm] › e2e/specs/prd-2026-007-room-cards.spec.ts:205: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-16T05:10:26.903Z ✘ 260 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:154:7 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-026 cannot CANCEL a CHECKED_IN room (NG1) [S-10/NG1] (61ms)
2026-10-16T05:10:27.820Z ✘ 257 [arm] › e2e/specs/prd-2026-007-noshow-cancel.spec.ts:90:6 › PRD-2026-007 — no-show per room › TC-ARM-102 UI: all-rooms no-show lands parent NO_SHOW [CR-2] (1.8s)
2026-10-16T05:10:28.276Z ✘ 259 [arm] › e2e/specs/prd-2026-007-room-cards.spec.ts:223: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] (1.9s)
2026-10-16T05:10:28.430Z ✘ 258 [arm] › e2e/specs/prd-2026-007-stay-view.spec.ts:240:6 › PRD-2026-007 — stay view blocks per room/slot › TC-ARM-240 block context menu offers status-appropriate actions [stay view menu] (1.8s)
2026-10-16T05:10:28.451Z ✘ 261 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:154:7 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-027 cannot NO_SHOW a CHECKED_IN room [state machine] (55ms)
2026-10-16T05:10:29.185Z ✘ 262 [arm] › e2e/specs/prd-2026-007-noshow-cancel.spec.ts:103:6 › PRD-2026-007 — no-show per room › TC-ARM-103 API: noShowReason and noShowMarkedAt persist on the room [Should-1 audit] (55ms)
2026-10-16T05:10:29.743Z ✘ 264 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:154:7 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-028 cannot CHECK_OUT an UPCOMING room [state machine] (67ms)
2026-10-16T05:10:30.680Z ✘ 266 [arm] › e2e/specs/prd-2026-007-noshow-cancel.spec.ts:121: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] (59ms)
2026-10-16T05:10:31.314Z ✘ 267 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:154:7 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-029 cannot CHECK_IN a CANCELLED room [state machine] (67ms)
2026-10-16T05:10:31.395Z ✘ 263 [arm] › e2e/specs/prd-2026-007-room-cards.spec.ts:239:6 › PRD-2026-007 — room cards on Booking Details › TC-ARM-052 card shows the per-night price [Must 7] (1.8s)
2026-10-16T05:10:31.603Z ✘ 265 [arm] › e2e/specs/prd-2026-007-stay-view.spec.ts:252: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] (1.7s)
2026-10-16T05:10:32.098Z ✘ 268 [arm] › e2e/specs/prd-2026-007-noshow-cancel.spec.ts:131: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] (55ms)
2026-10-16T05:10:32.579Z ✘ 269 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:154: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] (58ms)
2026-10-16T05:10:33.527Z ✘ 272 [arm] › e2e/specs/prd-2026-007-noshow-cancel.spec.ts:143:6 › PRD-2026-007 — no-show per room › TC-ARM-106 API: no-show requires a reason (validation) [Must 4] (69ms)
2026-10-16T05:10:34.118Z ✘ 273 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:154:7 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-031 cannot CHECK_IN an already CHECKED_OUT room [CR-3 terminal] (80ms)
2026-10-16T05:10:34.602Z ✘ 271 [arm] › e2e/specs/prd-2026-007-stay-view.spec.ts:262:6 › PRD-2026-007 — stay view blocks per room/slot › TC-ARM-242 stay view reflects a mutation after reload (no stale grid) [freshness] (1.6s)
2026-10-16T05:10:34.693Z ✘ 270 [arm] › e2e/specs/prd-2026-007-room-cards.spec.ts:251:6 › PRD-2026-007 — room cards on Booking Details › TC-ARM-053 card shows a meal-plan label [Must 7] (1.9s)
2026-10-16T05:10:35.507Z ✘ 275 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:154: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] (63ms)
2026-10-16T05:10:37.184Z ✘ 278 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:171: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] (76ms)
2026-10-16T05:10:37.217Z ✘ 274 [arm] › e2e/specs/prd-2026-007-noshow-cancel.spec.ts:152:6 › PRD-2026-007 — no-show per room › TC-ARM-107 UI: no-show entry absent for a CHECKED_IN-only booking [state gating] (1.8s)
2026-10-16T05:10:38.041Z ✘ 277 [arm] › e2e/specs/prd-2026-007-room-cards.spec.ts:259: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] (1.9s)
2026-10-16T05:10:38.290Z ✓ 276 [arm] › e2e/specs/prd-2026-007-stay-view.spec.ts:273: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.4s)
2026-10-16T05:10:38.717Z ✘ 279 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:188:6 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-034 check-in with empty roomInstanceIds → validation error, no mutation (59ms)
2026-10-16T05:10:40.257Z ✘ 281 [arm] › e2e/specs/prd-2026-007-stay-view.spec.ts:281: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] (1.6s)
2026-10-16T05:10:40.410Z ✘ 283 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:196:6 › PRD-2026-007 — CR-2 status aggregation (API) › TC-ARM-035 check-in with a foreign roomInstanceId → 4xx, foreign booking untouched (67ms)
2026-10-16T05:10:40.936Z ✘ 280 [arm] › e2e/specs/prd-2026-007-noshow-cancel.spec.ts:165: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] (1.9s)
2026-10-16T05:10:41.444Z ✘ 282 [arm] › e2e/specs/prd-2026-007-room-cards.spec.ts:271:6 › PRD-2026-007 — room cards on Booking Details › TC-ARM-055 card count equals live RoomInstance count after a cancel [consistency] (1.9s)
2026-10-16T05:10:41.801Z ✘ 285 [arm] › e2e/specs/prd-2026-007-status-aggregation.spec.ts:205: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] (54ms)
2026-10-16T05:10:41.954Z ✘ 286 [arm] › e2e/specs/prd-2026-007-noshow-cancel.spec.ts:193:6 › PRD-2026-007 — cancellation per room › TC-ARM-109 UI: reason AND charge are both required for cancel [Must 5] (1ms)
2026-10-16T05:10:41.954Z - 287 [arm] › e2e/specs/prd-2026-007-noshow-cancel.spec.ts:205:6 › PRD-2026-007 — cancellation per room › TC-ARM-110 UI: "can't be undone" warning is shown [UX/NG1]
2026-10-16T05:10:41.954Z - 288 [arm] › e2e/specs/prd-2026-007-noshow-cancel.spec.ts:212:6 › PRD-2026-007 — cancellation per room › TC-ARM-111 API: cancel metadata persists (reason + amount) [Should-1]
2026-10-16T05:10:41.954Z - 289 [arm] › e2e/specs/prd-2026-007-noshow-cancel.spec.ts:227:6 › PRD-2026-007 — cancellation per room › TC-ARM-112 API: all-rooms cancel lands parent CANCELLED [S-05]
2026-10-16T05:10:41.954Z - 290 [arm] › e2e/specs/prd-2026-007-noshow-cancel.spec.ts:236:6 › PRD-2026-007 — cancellation per room › TC-ARM-113 API: cancelling a CHECKED_IN room is blocked with 409 [S-10/NG1]
2026-10-16T05:10:41.954Z - 291 [arm] › e2e/specs/prd-2026-007-noshow-cancel.spec.ts:247:6 › PRD-2026-007 — cancellation per room › TC-ARM-114 API: CANCELLED is terminal — no later check-in [state machine]
2026-10-16T05:10:41.954Z - 292 [arm] › e2e/specs/prd-2026-007-noshow-cancel.spec.ts:256:6 › PRD-2026-007 — cancellation per room › TC-ARM-115 API: cancel subset across two calls accumulates correctly [Must 12]
2026-10-16T05:10:41.954Z - 293 [arm] › e2e/specs/prd-2026-007-noshow-cancel.spec.ts:268:6 › PRD-2026-007 — cancellation per room › TC-ARM-116 UI: cancelled room card stays visible (grey), booking stays open [§6.4]
2026-10-16T05:10:41.954Z - 294 [arm] › e2e/specs/prd-2026-007-noshow-cancel.spec.ts:281: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]
2026-10-16T05:10:41.954Z - 295 [arm] › e2e/specs/prd-2026-007-noshow-cancel.spec.ts:293:6 › PRD-2026-007 — scheduled cancel/no-show with withdraw window › TC-ARM-118 GET scheduled-action reflects the staged op [staged ops]
2026-10-16T05:10:41.955Z - 296 [arm] › e2e/specs/prd-2026-007-noshow-cancel.spec.ts:305:6 › PRD-2026-007 — scheduled cancel/no-show with withdraw window › TC-ARM-119 withdraw-scheduled aborts the staged action [staged ops]
2026-10-16T05:10:41.955Z - 297 [arm] › e2e/specs/prd-2026-007-noshow-cancel.spec.ts:318:6 › PRD-2026-007 — scheduled cancel/no-show with withdraw window › TC-ARM-120 staged no-show executes after the window elapses [staged ops]
2026-10-16T05:10:41.955Z - 298 [arm] › e2e/specs/prd-2026-007-noshow-cancel.spec.ts:332: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]
2026-10-16T05:10:41.955Z - 299 [arm] › e2e/specs/prd-2026-007-noshow-cancel.spec.ts:347: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]
2026-10-16T05:10:42.424Z ✘ 300 [arm] › e2e/specs/prd-2026-007-room-cards.spec.ts:283:6 › PRD-2026-007 — room cards on Booking Details › TC-ARM-056 booking reachable from reservations list by guest name; detail shows the cards [G5] (0ms)
2026-10-16T05:10:42.424Z - 301 [arm] › e2e/specs/prd-2026-007-room-cards.spec.ts:295:6 › PRD-2026-007 — room cards on Booking Details › TC-ARM-057 payment summary is reservation-level on the details page [NG4/Must 8]
2026-10-16T05:10:42.424Z - 302 [arm] › e2e/specs/prd-2026-007-room-cards.spec.ts:304:6 › PRD-2026-007 — room cards on Booking Details › TC-ARM-058 details reflect fresh API state after reload (no stale card status) [G5]
2026-10-16T05:10:42.424Z - 303 [arm] › e2e/specs/prd-2026-007-room-cards.spec.ts:316:6 › PRD-2026-007 — room cards on Booking Details › TC-ARM-059 max-inventory booking renders its card list within 2s of page load [S-13]
2026-10-16T05:10:42.424Z - 304 [arm] › e2e/specs/prd-2026-007-room-cards.spec.ts:328: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]
2026-10-16T05:10:42.424Z - 305 [arm] › e2e/specs/prd-2026-007-room-cards.spec.ts:343: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]
2026-10-16T05:10:42.424Z - 306 [arm] › e2e/specs/prd-2026-007-room-cards.spec.ts:353:6 › PRD-2026-007 — room cards on Booking Details › TC-ARM-062 room-card layout holds at 1280×720 (chip not clipped) [UX]
2026-10-16T05:10:42.424Z - 307 [arm] › e2e/specs/prd-2026-007-room-cards.spec.ts:368: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]
2026-10-16T05:10:43.332Z ✓ 284 [arm] › e2e/specs/prd-2026-007-stay-view.spec.ts:307:6 › PRD-2026-007 — stay view blocks per room/slot › TC-ARM-245 stay view loads without console errors or 5xx [quality gate] (1.7s)
2026-10-16T05:10:45.163Z ✓ 308 [arm] › e2e/specs/prd-2026-007-stay-view.spec.ts:319: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] (1.8s)
2026-10-16T05:10:45.163Z - 309 [arm] › e2e/specs/prd-2026-007-stay-view.spec.ts:334:6 › TC-ARM-247 maintenance blocks render alongside ARM blocks [regression smoke]
2026-10-16T05:10:45.163Z - 310 [arm] › e2e/specs/prd-2026-007-stay-view.spec.ts:335:6 › TC-ARM-248 date navigation shifts the visible window and keeps blocks aligned [stay view]
2026-10-16T05:10:45.177Z - 311 [arm] › e2e/specs/prd-2026-007-stay-view.spec.ts:336:6 › TC-ARM-249 block spans exactly its slot’s day-cells (per-cell boundary audit) [slots]
2026-10-16T05:10:49.395Z ✘ 137 [arm] › e2e/specs/prd-2026-007-rbac-ux.spec.ts:129:6 › PRD-2026-007 — UX guarantees (§3, G5) › TC-ARM-306 no-show flow is ≤3 interactions from booking details [§3 ≤3-click rule] (1.5m)
2026-10-16T05:10:49.503Z ✘ 312 [arm] › e2e/specs/prd-2026-007-rbac-ux.spec.ts:144:6 › PRD-2026-007 — UX guarantees (§3, G5) › TC-ARM-307 state-machine violations surface as visible errors, not silent failures [S-19 family] (0ms)
2026-10-16T05:10:49.503Z - 313 [arm] › e2e/specs/prd-2026-007-rbac-ux.spec.ts:167:6 › PRD-2026-007 — UX guarantees (§3, G5) › TC-ARM-308 happy-path journey emits no console errors and no 5xx [§6 quality gate]
2026-10-16T05:10:49.503Z - 314 [arm] › e2e/specs/prd-2026-007-rbac-ux.spec.ts:187:6 › PRD-2026-007 — UX guarantees (§3, G5) › TC-ARM-309 reservations list status pills match the detail state for partial bookings [G5 consistency]
2026-10-16T05:10:49.503Z - 315 [arm] › e2e/specs/prd-2026-007-rbac-ux.spec.ts:208:6 › TC-ARM-310 restricted role: room check-in → 403 [S-09/Must 18]
2026-10-16T05:10:49.503Z - 316 [arm] › e2e/specs/prd-2026-007-rbac-ux.spec.ts:209:6 › TC-ARM-311 restricted role: cancel → 403 [S-09]
2026-10-16T05:10:49.503Z - 317 [arm] › e2e/specs/prd-2026-007-rbac-ux.spec.ts:210:6 › TC-ARM-312 restricted role: no-show → 403 [S-09]
2026-10-16T05:10:49.503Z - 318 [arm] › e2e/specs/prd-2026-007-rbac-ux.spec.ts:211:6 › TC-ARM-313 restricted role: lock-move-swap → 403 [Must 18]
2026-10-16T05:10:49.503Z - 319 [arm] › e2e/specs/prd-2026-007-rbac-ux.spec.ts:212:6 › TC-ARM-314 restricted role UI: lifecycle buttons absent/disabled [S-09]
2026-10-16T05:10:49.503Z - 320 [arm] › e2e/specs/prd-2026-007-rbac-ux.spec.ts:213:6 › TC-ARM-315 restricted role: checkout-with-balance strictly blocked [Must 16]
2026-10-16T05:10:49.532Z 1) [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:153:7 › AC-1: All tab is selected by default [AC-1] › [TC-HFE-001] All tab is selected and shows all items on first render (desktop)
2026-10-16T05:10:49.533Z Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeVisible[2m([22m[2m)[22m failed
2026-10-16T05:10:49.533Z Locator: getByRole('button', { name: /^All$/ }).or(locator('[data-testid="category-all-tab"]'))
2026-10-16T05:10:49.533Z Expected: visible
2026-10-16T05:10:49.533Z Timeout: 10000ms
2026-10-16T05:10:49.533Z Error: element(s) not found
2026-10-16T05:10:49.533Z Call log:
2026-10-16T05:10:49.533Z [2m - Expect "toBeVisible" with timeout 10000ms[22m
2026-10-16T05:10:49.533Z [2m - waiting for getByRole('button', { name: /^All$/ }).or(locator('[data-testid="category-all-tab"]'))[22m
2026-10-16T05:10:49.533Z 154 | const foodOrder = new FoodOrderPage(page)
2026-10-16T05:10:49.533Z 155 | await foodOrder.goto(SEED_KITCHEN_ID)
2026-10-16T05:10:49.533Z > 156 | await expect(foodOrder.allTab).toBeVisible()
2026-10-16T05:10:49.533Z | ^
2026-10-16T05:10:49.533Z 157 | })
2026-10-16T05:10:49.533Z 158 |
2026-10-16T05:10:49.533Z 159 | test('[TC-HFE-002] All tab shows loading state when categories have not yet resolved', async ({ page }) => {
2026-10-16T05:10:49.533Z at /home/ubuntu/regression-runner/repos/stage/hotel-frontend-core/e2e/specs/hfe-food-item-search-all-category.spec.ts:156:36
2026-10-16T05:10:49.533Z attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-10-16T05:10:49.533Z test-results/hfe-food-item-search-all-c-a3cc4-ms-on-first-render-desktop--chromium/test-failed-1.png
2026-10-16T05:10:49.533Z ────────────────────────────────────────────────────────────────────────────────────────────────
2026-10-16T05:10:49.533Z Error Context: test-results/hfe-food-item-search-all-c-a3cc4-ms-on-first-render-desktop--chromium/error-context.md
2026-10-16T05:10:49.533Z attachment #3: trace (application/zip) ─────────────────────────────────────────────────────────
2026-10-16T05:10:49.533Z test-results/hfe-food-item-search-all-c-a3cc4-ms-on-first-render-desktop--chromium/trace.zip
2026-10-16T05:10:49.533Z Usage:
2026-10-16T05:10:49.533Z pnpm exec playwright show-trace test-results/hfe-food-item-search-all-c-a3cc4-ms-on-first-render-desktop--chromium/trace.zip
2026-10-16T05:10:49.533Z ────────────────────────────────────────────────────────────────────────────────────────────────
2026-10-16T05:10:49.533Z 2) [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:159:7 › AC-1: All tab is selected by default [AC-1] › [TC-HFE-002] All tab shows loading state when categories have not yet resolved
2026-10-16T05:10:49.533Z Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeVisible[2m([22m[2m)[22m failed
2026-10-16T05:10:49.533Z Locator: getByText('Loading categories...')
2026-10-16T05:10:49.533Z Expected: visible
2026-10-16T05:10:49.533Z Timeout: 10000ms
2026-10-16T05:10:49.533Z Error: element(s) not found
2026-10-16T05:10:49.533Z Call log:
2026-10-16T05:10:49.533Z [2m - Expect "toBeVisible" with timeout 10000ms[22m
2026-10-16T05:10:49.533Z [2m - waiting for getByText('Loading categories...')[22m
2026-10-16T05:10:49.533Z 164 | const foodOrder = new FoodOrderPage(page)
2026-10-16T05:10:49.533Z 165 | await foodOrder.goto(SEED_KITCHEN_ID)
2026-10-16T05:10:49.533Z > 166 | await expect(foodOrder.loadingCategoriesText).toBeVisible()
2026-10-16T05:10:49.533Z | ^
2026-10-16T05:10:49.533Z 167 | })
2026-10-16T05:10:49.533Z 168 |
2026-10-16T05:10:49.533Z 169 | test('[TC-HFE-003] All tab default when kitchen has exactly one category', async ({ page }) => {
2026-10-16T05:10:49.534Z at /home/ubuntu/regression-runner/repos/stage/hotel-frontend-core/e2e/specs/hfe-food-item-search-all-category.spec.ts:166:51
2026-10-16T05:10:49.534Z attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-10-16T05:10:49.534Z test-results/hfe-food-item-search-all-c-7aaf4-ories-have-not-yet-resolved-chromium/test-failed-1.png
2026-10-16T05:10:49.534Z ────────────────────────────────────────────────────────────────────────────────────────────────
2026-10-16T05:10:49.534Z Error Context: test-results/hfe-food-item-search-all-c-7aaf4-ories-have-not-yet-resolved-chromium/error-context.md
2026-10-16T05:10:49.534Z attachment #3: trace (application/zip) ─────────────────────────────────────────────────────────
2026-10-16T05:10:49.534Z test-results/hfe-food-item-search-all-c-7aaf4-ories-have-not-yet-resolved-chromium/trace.zip
2026-10-16T05:10:49.534Z Usage:
2026-10-16T05:10:49.534Z pnpm exec playwright show-trace test-results/hfe-food-item-search-all-c-7aaf4-ories-have-not-yet-resolved-chromium/trace.zip
2026-10-16T05:10:49.534Z ────────────────────────────────────────────────────────────────────────────────────────────────
2026-10-16T05:10:49.534Z 3) [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:169:7 › AC-1: All tab is selected by default [AC-1] › [TC-HFE-003] All tab default when kitchen has exactly one category
2026-10-16T05:10:49.534Z Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeVisible[2m([22m[2m)[22m failed
2026-10-16T05:10:49.534Z Locator: getByRole('button', { name: /^All$/ }).or(locator('[data-testid="category-all-tab"]'))
2026-10-16T05:10:49.534Z Expected: visible
2026-10-16T05:10:49.534Z Timeout: 10000ms
2026-10-16T05:10:49.534Z Error: element(s) not found
2026-10-16T05:10:49.534Z Call log:
2026-10-16T05:10:49.534Z [2m - Expect "toBeVisible" with timeout 10000ms[22m
2026-10-16T05:10:49.534Z [2m - waiting for getByRole('button', { name: /^All$/ }).or(locator('[data-testid="category-all-tab"]'))[22m
2026-10-16T05:10:49.534Z 170 | const foodOrder = new FoodOrderPage(page)
2026-10-16T05:10:49.534Z 171 | await foodOrder.goto(SINGLE_CATEGORY_KITCHEN_ID)
2026-10-16T05:10:49.534Z > 172 | await expect(foodOrder.allTab).toBeVisible()
2026-10-16T05:10:49.534Z | ^
2026-10-16T05:10:49.534Z 173 | })
2026-10-16T05:10:49.534Z 174 | })
2026-10-16T05:10:49.534Z 175 |
2026-10-16T05:10:49.534Z at /home/ubuntu/regression-runner/repos/stage/hotel-frontend-core/e2e/specs/hfe-food-item-search-all-category.spec.ts:172:36
2026-10-16T05:10:49.534Z attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-10-16T05:10:49.534Z test-results/hfe-food-item-search-all-c-0ec3a-en-has-exactly-one-category-chromium/test-failed-1.png
2026-10-16T05:10:49.534Z ────────────────────────────────────────────────────────────────────────────────────────────────
2026-10-16T05:10:49.534Z Error Context: test-results/hfe-food-item-search-all-c-0ec3a-en-has-exactly-one-category-chromium/error-context.md
2026-10-16T05:10:49.534Z attachment #3: trace (application/zip) ─────────────────────────────────────────────────────────
2026-10-16T05:10:49.534Z test-results/hfe-food-item-search-all-c-0ec3a-en-has-exactly-one-category-chromium/trace.zip
2026-10-16T05:10:49.534Z Usage:
2026-10-16T05:10:49.534Z pnpm exec playwright show-trace test-results/hfe-food-item-search-all-c-0ec3a-en-has-exactly-one-category-chromium/trace.zip
2026-10-16T05:10:49.534Z ────────────────────────────────────────────────────────────────────────────────────────────────
2026-10-16T05:10:49.534Z 4) [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:179:7 › AC-2: Search on All tab returns cross-category results [AC-2] › [TC-HFE-004] Search on All tab returns flat results across every category
2026-10-16T05:10:49.534Z [31mTest timeout of 90000ms exceeded.[39m
2026-10-16T05:10:49.534Z Error: locator.fill: Test timeout of 90000ms exceeded.
2026-10-16T05:10:49.534Z Call log:
2026-10-16T05:10:49.534Z [2m - waiting for locator('input[placeholder="Search Item Name/Code"]')[22m
2026-10-16T05:10:49.534Z at ../pages/FoodOrderPage.ts:101
2026-10-16T05:10:49.534Z 99 |
2026-10-16T05:10:49.534Z 100 | async fillSearch(query: string): Promise {
2026-10-16T05:10:49.534Z > 101 | await this.searchInput.fill(query)
2026-10-16T05:10:49.534Z | ^
2026-10-16T05:10:49.534Z 102 | }
2026-10-16T05:10:49.534Z 103 |
2026-10-16T05:10:49.534Z 104 | async clearSearch(): Promise {
2026-10-16T05:10:49.535Z at FoodOrderPage.fillSearch (/home/ubuntu/regression-runner/repos/stage/hotel-frontend-core/e2e/pages/FoodOrderPage.ts:101:28)
2026-10-16T05:10:49.535Z at /home/ubuntu/regression-runner/repos/stage/hotel-frontend-core/e2e/specs/hfe-food-item-search-all-category.spec.ts:182:21
2026-10-16T05:10:49.535Z attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-10-16T05:10:49.535Z test-results/hfe-food-item-search-all-c-a7552-sults-across-every-category-chromium/test-failed-1.png
2026-10-16T05:10:49.535Z ────────────────────────────────────────────────────────────────────────────────────────────────
2026-10-16T05:10:49.535Z Error Context: test-results/hfe-food-item-search-all-c-a7552-sults-across-every-category-chromium/error-context.md
2026-10-16T05:10:49.535Z attachment #3: trace (application/zip) ─────────────────────────────────────────────────────────
2026-10-16T05:10:49.535Z test-results/hfe-food-item-search-all-c-a7552-sults-across-every-category-chromium/trace.zip
2026-10-16T05:10:49.535Z Usage:
2026-10-16T05:10:49.535Z pnpm exec playwright show-trace test-results/hfe-food-item-search-all-c-a7552-sults-across-every-category-chromium/trace.zip
2026-10-16T05:10:49.535Z ────────────────────────────────────────────────────────────────────────────────────────────────
2026-10-16T05:10:49.535Z 5) [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:187:7 › AC-2: Search on All tab returns cross-category results [AC-2] › [TC-HFE-005] Search on All tab with itemCode (weight-1 field) returns match
2026-10-16T05:10:49.535Z [31mTest timeout of 90000ms exceeded.[39m
2026-10-16T05:10:49.535Z Error: locator.fill: Test timeout of 90000ms exceeded.
2026-10-16T05:10:49.535Z Call log:
2026-10-16T05:10:49.535Z [2m - waiting for locator('input[placeholder="Search Item Name/Code"]')[22m
2026-10-16T05:10:49.535Z at ../pages/FoodOrderPage.ts:101
2026-10-16T05:10:49.535Z 99 |
2026-10-16T05:10:49.535Z 100 | async fillSearch(query: string): Promise {
2026-10-16T05:10:49.535Z > 101 | await this.searchInput.fill(query)
2026-10-16T05:10:49.535Z | ^
2026-10-16T05:10:49.535Z 102 | }
2026-10-16T05:10:49.535Z 103 |
2026-10-16T05:10:49.535Z 104 | async clearSearch(): Promise {
2026-10-16T05:10:49.535Z at FoodOrderPage.fillSearch (/home/ubuntu/regression-runner/repos/stage/hotel-frontend-core/e2e/pages/FoodOrderPage.ts:101:28)
2026-10-16T05:10:49.535Z at /home/ubuntu/regression-runner/repos/stage/hotel-frontend-core/e2e/specs/hfe-food-item-search-all-category.spec.ts:190:21
2026-10-16T05:10:49.535Z attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-10-16T05:10:49.535Z test-results/hfe-food-item-search-all-c-30df2-eight-1-field-returns-match-chromium/test-failed-1.png
2026-10-16T05:10:49.535Z ────────────────────────────────────────────────────────────────────────────────────────────────
2026-10-16T05:10:49.535Z Error Context: test-results/hfe-food-item-search-all-c-30df2-eight-1-field-returns-match-chromium/error-context.md
2026-10-16T05:10:49.535Z attachment #3: trace (application/zip) ─────────────────────────────────────────────────────────
2026-10-16T05:10:49.535Z test-results/hfe-food-item-search-all-c-30df2-eight-1-field-returns-match-chromium/trace.zip
2026-10-16T05:10:49.535Z Usage:
2026-10-16T05:10:49.535Z pnpm exec playwright show-trace test-results/hfe-food-item-search-all-c-30df2-eight-1-field-returns-match-chromium/trace.zip
2026-10-16T05:10:49.535Z ────────────────────────────────────────────────────────────────────────────────────────────────
2026-10-16T05:10:49.535Z 6) [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:194:7 › AC-2: Search on All tab returns cross-category results [AC-2] › [TC-HFE-006] Clearing search restores grouped-by-category layout on All tab
2026-10-16T05:10:49.535Z [31mTest timeout of 90000ms exceeded.[39m
2026-10-16T05:10:49.535Z Error: locator.fill: Test timeout of 90000ms exceeded.
2026-10-16T05:10:49.535Z Call log:
2026-10-16T05:10:49.535Z [2m - waiting for locator('input[placeholder="Search Item Name/Code"]')[22m
2026-10-16T05:10:49.535Z at ../pages/FoodOrderPage.ts:101
2026-10-16T05:10:49.535Z 99 |
2026-10-16T05:10:49.535Z 100 | async fillSearch(query: string): Promise {
2026-10-16T05:10:49.535Z > 101 | await this.searchInput.fill(query)
2026-10-16T05:10:49.535Z | ^
2026-10-16T05:10:49.535Z 102 | }
2026-10-16T05:10:49.535Z 103 |
2026-10-16T05:10:49.535Z 104 | async clearSearch(): Promise {
2026-10-16T05:10:49.535Z at FoodOrderPage.fillSearch (/home/ubuntu/regression-runner/repos/stage/hotel-frontend-core/e2e/pages/FoodOrderPage.ts:101:28)
2026-10-16T05:10:49.535Z at /home/ubuntu/regression-runner/repos/stage/hotel-frontend-core/e2e/specs/hfe-food-item-search-all-category.spec.ts:197:21
2026-10-16T05:10:49.535Z attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-10-16T05:10:49.536Z test-results/hfe-food-item-search-all-c-c168e--category-layout-on-All-tab-chromium/test-failed-1.png
2026-10-16T05:10:49.536Z ────────────────────────────────────────────────────────────────────────────────────────────────
2026-10-16T05:10:49.536Z Error Context: test-results/hfe-food-item-search-all-c-c168e--category-layout-on-All-tab-chromium/error-context.md
2026-10-16T05:10:49.536Z attachment #3: trace (application/zip) ─────────────────────────────────────────────────────────
2026-10-16T05:10:49.536Z test-results/hfe-food-item-search-all-c-c168e--category-layout-on-All-tab-chromium/trace.zip
2026-10-16T05:10:49.536Z Usage:
2026-10-16T05:10:49.536Z pnpm exec playwright show-trace test-results/hfe-food-item-search-all-c-c168e--category-layout-on-All-tab-chromium/trace.zip
2026-10-16T05:10:49.536Z ────────────────────────────────────────────────────────────────────────────────────────────────
2026-10-16T05:10:49.536Z 7) [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:206:7 › AC-3: Scope toggle chip behaviour [AC-3] › [TC-HFE-007] Search on specific category shows cross-category results by default
2026-10-16T05:10:49.536Z [31mTest timeout of 90000ms exceeded.[39m
2026-10-16T05:10:49.536Z Error: locator.click: Test timeout of 90000ms exceeded.
2026-10-16T05:10:49.536Z Call log:
2026-10-16T05:10:49.536Z [2m - waiting for getByRole('button', { name: 'Starters' }).or(getByText('Starters', { exact: true })).first()[22m
2026-10-16T05:10:49.536Z at ../pages/FoodOrderPage.ts:128
2026-10-16T05:10:49.536Z 126 | await testIdLocator.click()
2026-10-16T05:10:49.537Z 127 | } else {
2026-10-16T05:10:49.537Z > 128 | await textLocator.first().click()
2026-10-16T05:10:49.537Z | ^
2026-10-16T05:10:49.537Z 129 | }
2026-10-16T05:10:49.537Z 130 | }
2026-10-16T05:10:49.537Z 131 |
2026-10-16T05:10:49.537Z at FoodOrderPage.clickCategoryTab (/home/ubuntu/regression-runner/repos/stage/hotel-frontend-core/e2e/pages/FoodOrderPage.ts:128:33)
2026-10-16T05:10:49.537Z at /home/ubuntu/regression-runner/repos/stage/hotel-frontend-core/e2e/specs/hfe-food-item-search-all-category.spec.ts:209:5
2026-10-16T05:10:49.537Z attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-10-16T05:10:49.537Z test-results/hfe-food-item-search-all-c-ce4f4-category-results-by-default-chromium/test-failed-1.png
2026-10-16T05:10:49.537Z ────────────────────────────────────────────────────────────────────────────────────────────────
2026-10-16T05:10:49.537Z Error Context: test-results/hfe-food-item-search-all-c-ce4f4-category-results-by-default-chromium/error-context.md
2026-10-16T05:10:49.537Z attachment #3: trace (application/zip) ─────────────────────────────────────────────────────────
2026-10-16T05:10:49.537Z test-results/hfe-food-item-search-all-c-ce4f4-category-results-by-default-chromium/trace.zip
2026-10-16T05:10:49.537Z Usage:
2026-10-16T05:10:49.537Z pnpm exec playwright show-trace test-results/hfe-food-item-search-all-c-ce4f4-category-results-by-default-chromium/trace.zip
2026-10-16T05:10:49.537Z ────────────────────────────────────────────────────────────────────────────────────────────────
2026-10-16T05:10:49.537Z 8) [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:217:7 › AC-3: Scope toggle chip behaviour [AC-3] › [TC-HFE-008] Clicking toggle chip scopes search to current category only
2026-10-16T05:10:49.537Z [31mTest timeout of 90000ms exceeded.[39m
2026-10-16T05:10:49.537Z Error: locator.click: Test timeout of 90000ms exceeded.
2026-10-16T05:10:49.537Z Call log:
2026-10-16T05:10:49.537Z [2m - waiting for getByRole('button', { name: 'Starters' }).or(getByText('Starters', { exact: true })).first()[22m
2026-10-16T05:10:49.537Z at ../pages/FoodOrderPage.ts:128
2026-10-16T05:10:49.537Z 126 | await testIdLocator.click()
2026-10-16T05:10:49.537Z 127 | } else {
2026-10-16T05:10:49.537Z > 128 | await textLocator.first().click()
2026-10-16T05:10:49.537Z | ^
2026-10-16T05:10:49.537Z 129 | }
2026-10-16T05:10:49.537Z 130 | }
2026-10-16T05:10:49.537Z 131 |
2026-10-16T05:10:49.537Z at FoodOrderPage.clickCategoryTab (/home/ubuntu/regression-runner/repos/stage/hotel-frontend-core/e2e/pages/FoodOrderPage.ts:128:33)
2026-10-16T05:10:49.537Z at /home/ubuntu/regression-runner/repos/stage/hotel-frontend-core/e2e/specs/hfe-food-item-search-all-category.spec.ts:220:5
2026-10-16T05:10:49.537Z attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-10-16T05:10:49.537Z test-results/hfe-food-item-search-all-c-0db63-ch-to-current-category-only-chromium/test-failed-1.png
2026-10-16T05:10:49.537Z ────────────────────────────────────────────────────────────────────────────────────────────────
2026-10-16T05:10:49.537Z Error Context: test-results/hfe-food-item-search-all-c-0db63-ch-to-current-category-only-chromium/error-context.md
2026-10-16T05:10:49.537Z attachment #3: trace (application/zip) ─────────────────────────────────────────────────────────
2026-10-16T05:10:49.537Z test-results/hfe-food-item-search-all-c-0db63-ch-to-current-category-only-chromium/trace.zip
2026-10-16T05:10:49.537Z Usage:
2026-10-16T05:10:49.537Z pnpm exec playwright show-trace test-results/hfe-food-item-search-all-c-0db63-ch-to-current-category-only-chromium/trace.zip
2026-10-16T05:10:49.537Z ────────────────────────────────────────────────────────────────────────────────────────────────
2026-10-16T05:10:49.538Z 9) [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:228:7 › AC-3: Scope toggle chip behaviour [AC-3] › [TC-HFE-009] Toggle chip is NOT visible when search field is empty on a specific category tab
2026-10-16T05:10:49.538Z [31mTest timeout of 90000ms exceeded.[39m
2026-10-16T05:10:49.538Z Error: locator.click: Test timeout of 90000ms exceeded.
2026-10-16T05:10:49.538Z Call log:
2026-10-16T05:10:49.538Z [2m - waiting for getByRole('button', { name: 'Starters' }).or(getByText('Starters', { exact: true })).first()[22m
2026-10-16T05:10:49.538Z at ../pages/FoodOrderPage.ts:128
2026-10-16T05:10:49.538Z 126 | await testIdLocator.click()
2026-10-16T05:10:49.538Z 127 | } else {
2026-10-16T05:10:49.538Z > 128 | await textLocator.first().click()
2026-10-16T05:10:49.538Z | ^
2026-10-16T05:10:49.538Z 129 | }
2026-10-16T05:10:49.538Z 130 | }
2026-10-16T05:10:49.538Z 131 |
2026-10-16T05:10:49.538Z at FoodOrderPage.clickCategoryTab (/home/ubuntu/regression-runner/repos/stage/hotel-frontend-core/e2e/pages/FoodOrderPage.ts:128:33)
2026-10-16T05:10:49.538Z at /home/ubuntu/regression-runner/repos/stage/hotel-frontend-core/e2e/specs/hfe-food-item-search-all-category.spec.ts:231:5
2026-10-16T05:10:49.538Z attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-10-16T05:10:49.538Z test-results/hfe-food-item-search-all-c-4b3bc--on-a-specific-category-tab-chromium/test-failed-1.png
2026-10-16T05:10:49.538Z ────────────────────────────────────────────────────────────────────────────────────────────────
2026-10-16T05:10:49.538Z Error Context: test-results/hfe-food-item-search-all-c-4b3bc--on-a-specific-category-tab-chromium/error-context.md
2026-10-16T05:10:49.538Z attachment #3: trace (application/zip) ─────────────────────────────────────────────────────────
2026-10-16T05:10:49.538Z test-results/hfe-food-item-search-all-c-4b3bc--on-a-specific-category-tab-chromium/trace.zip
2026-10-16T05:10:49.538Z Usage:
2026-10-16T05:10:49.538Z pnpm exec playwright show-trace test-results/hfe-food-item-search-all-c-4b3bc--on-a-specific-category-tab-chromium/trace.zip
2026-10-16T05:10:49.538Z ────────────────────────────────────────────────────────────────────────────────────────────────
2026-10-16T05:10:49.538Z 10) [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:235:7 › AC-3: Scope toggle chip behaviour [AC-3] › [TC-HFE-010] Switching category tab resets search scope to cross-category
2026-10-16T05:10:49.538Z [31mTest timeout of 90000ms exceeded.[39m
2026-10-16T05:10:49.538Z Error: locator.click: Test timeout of 90000ms exceeded.
2026-10-16T05:10:49.538Z Call log:
2026-10-16T05:10:49.538Z [2m - waiting for getByRole('button', { name: 'Starters' }).or(getByText('Starters', { exact: true })).first()[22m
2026-10-16T05:10:49.538Z at ../pages/FoodOrderPage.ts:128
2026-10-16T05:10:49.538Z 126 | await testIdLocator.click()
2026-10-16T05:10:49.538Z 127 | } else {
2026-10-16T05:10:49.538Z > 128 | await textLocator.first().click()
2026-10-16T05:10:49.538Z | ^
2026-10-16T05:10:49.538Z 129 | }
2026-10-16T05:10:49.538Z 130 | }
2026-10-16T05:10:49.538Z 131 |
2026-10-16T05:10:49.538Z at FoodOrderPage.clickCategoryTab (/home/ubuntu/regression-runner/repos/stage/hotel-frontend-core/e2e/pages/FoodOrderPage.ts:128:33)
2026-10-16T05:10:49.538Z at /home/ubuntu/regression-runner/repos/stage/hotel-frontend-core/e2e/specs/hfe-food-item-search-all-category.spec.ts:238:5
2026-10-16T05:10:49.538Z attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-10-16T05:10:49.539Z test-results/hfe-food-item-search-all-c-2e467-rch-scope-to-cross-category-chromium/test-failed-1.png
2026-10-16T05:10:49.539Z ────────────────────────────────────────────────────────────────────────────────────────────────
2026-10-16T05:10:49.539Z Error Context: test-results/hfe-food-item-search-all-c-2e467-rch-scope-to-cross-category-chromium/error-context.md
2026-10-16T05:10:49.539Z attachment #3: trace (application/zip) ─────────────────────────────────────────────────────────
2026-10-16T05:10:49.539Z test-results/hfe-food-item-search-all-c-2e467-rch-scope-to-cross-category-chromium/trace.zip
2026-10-16T05:10:49.539Z Usage:
2026-10-16T05:10:49.539Z pnpm exec playwright show-trace test-results/hfe-food-item-search-all-c-2e467-rch-scope-to-cross-category-chromium/trace.zip
2026-10-16T05:10:49.539Z ────────────────────────────────────────────────────────────────────────────────────────────────
2026-10-16T05:10:49.539Z 11) [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:250:7 › AC-4: allItemsDeduped — no duplicates in All tab [AC-4] › [TC-HFE-011] Item assigned to multiple categories appears exactly once on All tab (no search)
2026-10-16T05:10:49.539Z Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoHaveCount[2m([22m[32mexpected[39m[2m)[22m failed
2026-10-16T05:10:49.539Z Locator: locator('[data-testid="food-item-card"]').or(locator('.bg-white.rounded-\\[8px\\].border.border-backgroundColor-secondary')).filter({ hasText: 'Shared Item' })
2026-10-16T05:10:49.539Z Expected: [32m1[39m
2026-10-16T05:10:49.539Z Received: [31m0[39m
2026-10-16T05:10:49.539Z Timeout: 10000ms
2026-10-16T05:10:49.539Z Call log:
2026-10-16T05:10:49.539Z [2m - Expect "toHaveCount" with timeout 10000ms[22m
2026-10-16T05:10:49.539Z [2m - waiting for locator('[data-testid="food-item-card"]').or(locator('.bg-white.rounded-\\[8px\\].border.border-backgroundColor-secondary')).filter({ hasText: 'Shared Item' })[22m
2026-10-16T05:10:49.539Z [2m 14 × locator resolved to 0 elements[22m
2026-10-16T05:10:49.539Z [2m - unexpected value "0"[22m
2026-10-16T05:10:49.539Z 251 | const foodOrder = new FoodOrderPage(page)
2026-10-16T05:10:49.539Z 252 | await foodOrder.goto(SEED_KITCHEN_ID)
2026-10-16T05:10:49.539Z > 253 | await expect(foodOrder.itemCardByName('Shared Item')).toHaveCount(1)
2026-10-16T05:10:49.539Z | ^
2026-10-16T05:10:49.539Z 254 | })
2026-10-16T05:10:49.539Z 255 |
2026-10-16T05:10:49.539Z 256 | test('[TC-HFE-012] Item assigned to multiple categories appears exactly once in All-tab search results', async ({ page }) => {
2026-10-16T05:10:49.539Z at /home/ubuntu/regression-runner/repos/stage/hotel-frontend-core/e2e/specs/hfe-food-item-search-all-category.spec.ts:253:59
2026-10-16T05:10:49.539Z attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-10-16T05:10:49.539Z test-results/hfe-food-item-search-all-c-86b2b--once-on-All-tab-no-search--chromium/test-failed-1.png
2026-10-16T05:10:49.539Z ────────────────────────────────────────────────────────────────────────────────────────────────
2026-10-16T05:10:49.539Z Error Context: test-results/hfe-food-item-search-all-c-86b2b--once-on-All-tab-no-search--chromium/error-context.md
2026-10-16T05:10:49.539Z attachment #3: trace (application/zip) ─────────────────────────────────────────────────────────
2026-10-16T05:10:49.539Z test-results/hfe-food-item-search-all-c-86b2b--once-on-All-tab-no-search--chromium/trace.zip
2026-10-16T05:10:49.539Z Usage:
2026-10-16T05:10:49.539Z pnpm exec playwright show-trace test-results/hfe-food-item-search-all-c-86b2b--once-on-All-tab-no-search--chromium/trace.zip
2026-10-16T05:10:49.539Z ────────────────────────────────────────────────────────────────────────────────────────────────
2026-10-16T05:10:49.539Z 12) [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:256:7 › AC-4: allItemsDeduped — no duplicates in All tab [AC-4] › [TC-HFE-012] Item assigned to multiple categories appears exactly once in All-tab search results
2026-10-16T05:10:49.539Z [31mTest timeout of 90000ms exceeded.[39m
2026-10-16T05:10:49.539Z Error: locator.fill: Test timeout of 90000ms exceeded.
2026-10-16T05:10:49.539Z Call log:
2026-10-16T05:10:49.539Z [2m - waiting for locator('input[placeholder="Search Item Name/Code"]')[22m
2026-10-16T05:10:49.539Z at ../pages/FoodOrderPage.ts:101
2026-10-16T05:10:49.539Z 99 |
2026-10-16T05:10:49.540Z 100 | async fillSearch(query: string): Promise {
2026-10-16T05:10:49.540Z > 101 | await this.searchInput.fill(query)
2026-10-16T05:10:49.540Z | ^
2026-10-16T05:10:49.540Z 102 | }
2026-10-16T05:10:49.540Z 103 |
2026-10-16T05:10:49.540Z 104 | async clearSearch(): Promise {
2026-10-16T05:10:49.540Z at FoodOrderPage.fillSearch (/home/ubuntu/regression-runner/repos/stage/hotel-frontend-core/e2e/pages/FoodOrderPage.ts:101:28)
2026-10-16T05:10:49.540Z at /home/ubuntu/regression-runner/repos/stage/hotel-frontend-core/e2e/specs/hfe-food-item-search-all-category.spec.ts:259:21
2026-10-16T05:10:49.540Z attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-10-16T05:10:49.540Z test-results/hfe-food-item-search-all-c-e1660-e-in-All-tab-search-results-chromium/test-failed-1.png
2026-10-16T05:10:49.540Z ────────────────────────────────────────────────────────────────────────────────────────────────
2026-10-16T05:10:49.540Z Error Context: test-results/hfe-food-item-search-all-c-e1660-e-in-All-tab-search-results-chromium/error-context.md
2026-10-16T05:10:49.540Z attachment #3: trace (application/zip) ─────────────────────────────────────────────────────────
2026-10-16T05:10:49.540Z test-results/hfe-food-item-search-all-c-e1660-e-in-All-tab-search-results-chromium/trace.zip
2026-10-16T05:10:49.540Z Usage:
2026-10-16T05:10:49.540Z pnpm exec playwright show-trace test-results/hfe-food-item-search-all-c-e1660-e-in-All-tab-search-results-chromium/trace.zip
2026-10-16T05:10:49.540Z ────────────────────────────────────────────────────────────────────────────────────────────────
2026-10-16T05:10:49.540Z 13) [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:273:7 › AC-5: FoodItemEmptyState on no results [AC-5] › [TC-HFE-014] FoodItemEmptyState renders when All-tab search returns no results
2026-10-16T05:10:49.540Z [31mTest timeout of 90000ms exceeded.[39m
2026-10-16T05:10:49.540Z Error: locator.fill: Test timeout of 90000ms exceeded.
2026-10-16T05:10:49.540Z Call log:
2026-10-16T05:10:49.540Z [2m - waiting for locator('input[placeholder="Search Item Name/Code"]')[22m
2026-10-16T05:10:49.540Z at ../pages/FoodOrderPage.ts:101
2026-10-16T05:10:49.540Z 99 |
2026-10-16T05:10:49.540Z 100 | async fillSearch(query: string): Promise {
2026-10-16T05:10:49.540Z > 101 | await this.searchInput.fill(query)
2026-10-16T05:10:49.540Z | ^
2026-10-16T05:10:49.540Z 102 | }
2026-10-16T05:10:49.540Z 103 |
2026-10-16T05:10:49.540Z 104 | async clearSearch(): Promise {
2026-10-16T05:10:49.540Z at FoodOrderPage.fillSearch (/home/ubuntu/regression-runner/repos/stage/hotel-frontend-core/e2e/pages/FoodOrderPage.ts:101:28)
2026-10-16T05:10:49.540Z at /home/ubuntu/regression-runner/repos/stage/hotel-frontend-core/e2e/specs/hfe-food-item-search-all-category.spec.ts:276:21
2026-10-16T05:10:49.540Z attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-10-16T05:10:49.540Z test-results/hfe-food-item-search-all-c-d4f3b-b-search-returns-no-results-chromium/test-failed-1.png
2026-10-16T05:10:49.540Z ────────────────────────────────────────────────────────────────────────────────────────────────
2026-10-16T05:10:49.540Z Error Context: test-results/hfe-food-item-search-all-c-d4f3b-b-search-returns-no-results-chromium/error-context.md
2026-10-16T05:10:49.540Z attachment #3: trace (application/zip) ─────────────────────────────────────────────────────────
2026-10-16T05:10:49.540Z test-results/hfe-food-item-search-all-c-d4f3b-b-search-returns-no-results-chromium/trace.zip
2026-10-16T05:10:49.540Z Usage:
2026-10-16T05:10:49.541Z pnpm exec playwright show-trace test-results/hfe-food-item-search-all-c-d4f3b-b-search-returns-no-results-chromium/trace.zip
2026-10-16T05:10:49.541Z ────────────────────────────────────────────────────────────────────────────────────────────────
2026-10-16T05:10:49.541Z 14) [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:281:7 › AC-5: FoodItemEmptyState on no results [AC-5] › [TC-HFE-015] FoodItemEmptyState renders when specific-category search returns no results
2026-10-16T05:10:49.541Z [31mTest timeout of 90000ms exceeded.[39m
2026-10-16T05:10:49.541Z Error: locator.click: Test timeout of 90000ms exceeded.
2026-10-16T05:10:49.541Z Call log:
2026-10-16T05:10:49.541Z [2m - waiting for getByRole('button', { name: 'Starters' }).or(getByText('Starters', { exact: true })).first()[22m
2026-10-16T05:10:49.541Z at ../pages/FoodOrderPage.ts:128
2026-10-16T05:10:49.541Z 126 | await testIdLocator.click()
2026-10-16T05:10:49.541Z 127 | } else {
2026-10-16T05:10:49.541Z > 128 | await textLocator.first().click()
2026-10-16T05:10:49.541Z | ^
2026-10-16T05:10:49.541Z 129 | }
2026-10-16T05:10:49.541Z 130 | }
2026-10-16T05:10:49.541Z 131 |
2026-10-16T05:10:49.541Z at FoodOrderPage.clickCategoryTab (/home/ubuntu/regression-runner/repos/stage/hotel-frontend-core/e2e/pages/FoodOrderPage.ts:128:33)
2026-10-16T05:10:49.541Z at /home/ubuntu/regression-runner/repos/stage/hotel-frontend-core/e2e/specs/hfe-food-item-search-all-category.spec.ts:284:5
2026-10-16T05:10:49.541Z attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-10-16T05:10:49.541Z test-results/hfe-food-item-search-all-c-4c837-y-search-returns-no-results-chromium/test-failed-1.png
2026-10-16T05:10:49.541Z ────────────────────────────────────────────────────────────────────────────────────────────────
2026-10-16T05:10:49.541Z Error Context: test-results/hfe-food-item-search-all-c-4c837-y-search-returns-no-results-chromium/error-context.md
2026-10-16T05:10:49.541Z attachment #3: trace (application/zip) ─────────────────────────────────────────────────────────
2026-10-16T05:10:49.541Z test-results/hfe-food-item-search-all-c-4c837-y-search-returns-no-results-chromium/trace.zip
2026-10-16T05:10:49.541Z Usage:
2026-10-16T05:10:49.541Z pnpm exec playwright show-trace test-results/hfe-food-item-search-all-c-4c837-y-search-returns-no-results-chromium/trace.zip
2026-10-16T05:10:49.541Z ────────────────────────────────────────────────────────────────────────────────────────────────
2026-10-16T05:10:49.541Z 15) [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:289:7 › AC-5: FoodItemEmptyState on no results [AC-5] › [TC-HFE-016] Empty state uses size='lg' (320px image) not 'sm' in full-grid context
2026-10-16T05:10:49.541Z [31mTest timeout of 90000ms exceeded.[39m
2026-10-16T05:10:49.541Z Error: locator.fill: Test timeout of 90000ms exceeded.
2026-10-16T05:10:49.541Z Call log:
2026-10-16T05:10:49.541Z [2m - waiting for locator('input[placeholder="Search Item Name/Code"]')[22m
2026-10-16T05:10:49.541Z at ../pages/FoodOrderPage.ts:101
2026-10-16T05:10:49.541Z 99 |
2026-10-16T05:10:49.541Z 100 | async fillSearch(query: string): Promise {
2026-10-16T05:10:49.541Z > 101 | await this.searchInput.fill(query)
2026-10-16T05:10:49.541Z | ^
2026-10-16T05:10:49.541Z 102 | }
2026-10-16T05:10:49.541Z 103 |
2026-10-16T05:10:49.541Z 104 | async clearSearch(): Promise {
2026-10-16T05:10:49.541Z at FoodOrderPage.fillSearch (/home/ubuntu/regression-runner/repos/stage/hotel-frontend-core/e2e/pages/FoodOrderPage.ts:101:28)
2026-10-16T05:10:49.541Z at /home/ubuntu/regression-runner/repos/stage/hotel-frontend-core/e2e/specs/hfe-food-item-search-all-category.spec.ts:292:21
2026-10-16T05:10:49.541Z attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-10-16T05:10:49.542Z test-results/hfe-food-item-search-all-c-0201b-not-sm-in-full-grid-context-chromium/test-failed-1.png
2026-10-16T05:10:49.542Z ────────────────────────────────────────────────────────────────────────────────────────────────
2026-10-16T05:10:49.542Z Error Context: test-results/hfe-food-item-search-all-c-0201b-not-sm-in-full-grid-context-chromium/error-context.md
2026-10-16T05:10:49.542Z attachment #3: trace (application/zip) ─────────────────────────────────────────────────────────
2026-10-16T05:10:49.542Z test-results/hfe-food-item-search-all-c-0201b-not-sm-in-full-grid-context-chromium/trace.zip
2026-10-16T05:10:49.542Z Usage:
2026-10-16T05:10:49.542Z pnpm exec playwright show-trace test-results/hfe-food-item-search-all-c-0201b-not-sm-in-full-grid-context-chromium/trace.zip
2026-10-16T05:10:49.542Z ────────────────────────────────────────────────────────────────────────────────────────────────
2026-10-16T05:10:49.542Z 16) [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:300:7 › AC-6: Empty categories show inline empty state [AC-6] › [TC-HFE-017] Empty category shows inline empty state in All-tab grouped view
2026-10-16T05:10:49.542Z Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeVisible[2m([22m[2m)[22m failed
2026-10-16T05:10:49.542Z Locator: getByText('Specials')
2026-10-16T05:10:49.542Z Expected: visible
2026-10-16T05:10:49.542Z Timeout: 10000ms
2026-10-16T05:10:49.542Z Error: element(s) not found
2026-10-16T05:10:49.542Z Call log:
2026-10-16T05:10:49.542Z [2m - Expect "toBeVisible" with timeout 10000ms[22m
2026-10-16T05:10:49.542Z [2m - waiting for getByText('Specials')[22m
2026-10-16T05:10:49.542Z 301 | const foodOrder = new FoodOrderPage(page)
2026-10-16T05:10:49.542Z 302 | await foodOrder.goto(SEED_KITCHEN_ID)
2026-10-16T05:10:49.542Z > 303 | await expect(page.getByText('Specials')).toBeVisible()
2026-10-16T05:10:49.542Z | ^
2026-10-16T05:10:49.542Z 304 | await expect(foodOrder.noItemsInCategoryText).toBeVisible()
2026-10-16T05:10:49.542Z 305 | await expect(foodOrder.noDataImageSm).toBeVisible()
2026-10-16T05:10:49.542Z 306 | })
2026-10-16T05:10:49.542Z at /home/ubuntu/regression-runner/repos/stage/hotel-frontend-core/e2e/specs/hfe-food-item-search-all-category.spec.ts:303:46
2026-10-16T05:10:49.543Z attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-10-16T05:10:49.543Z test-results/hfe-food-item-search-all-c-2481b-ate-in-All-tab-grouped-view-chromium/test-failed-1.png
2026-10-16T05:10:49.543Z ────────────────────────────────────────────────────────────────────────────────────────────────
2026-10-16T05:10:49.543Z Error Context: test-results/hfe-food-item-search-all-c-2481b-ate-in-All-tab-grouped-view-chromium/error-context.md
2026-10-16T05:10:49.543Z attachment #3: trace (application/zip) ─────────────────────────────────────────────────────────
2026-10-16T05:10:49.543Z test-results/hfe-food-item-search-all-c-2481b-ate-in-All-tab-grouped-view-chromium/trace.zip
2026-10-16T05:10:49.543Z Usage:
2026-10-16T05:10:49.543Z pnpm exec playwright show-trace test-results/hfe-food-item-search-all-c-2481b-ate-in-All-tab-grouped-view-chromium/trace.zip
2026-10-16T05:10:49.543Z ────────────────────────────────────────────────────────────────────────────────────────────────
2026-10-16T05:10:49.543Z 17) [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:308:7 › AC-6: Empty categories show inline empty state [AC-6] › [TC-HFE-018] Clicking empty category tab in sidebar shows FoodItemEmptyState
2026-10-16T05:10:49.543Z [31mTest timeout of 90000ms exceeded.[39m
2026-10-16T05:10:49.543Z Error: locator.click: Test timeout of 90000ms exceeded.
2026-10-16T05:10:49.543Z Call log:
2026-10-16T05:10:49.544Z [2m - waiting for getByRole('button', { name: 'Specials' }).or(getByText('Specials', { exact: true })).first()[22m
2026-10-16T05:10:49.544Z at ../pages/FoodOrderPage.ts:128
2026-10-16T05:10:49.544Z 126 | await testIdLocator.click()
2026-10-16T05:10:49.544Z 127 | } else {
2026-10-16T05:10:49.544Z > 128 | await textLocator.first().click()
2026-10-16T05:10:49.544Z | ^
2026-10-16T05:10:49.544Z 129 | }
2026-10-16T05:10:49.544Z 130 | }
2026-10-16T05:10:49.544Z 131 |
2026-10-16T05:10:49.544Z at FoodOrderPage.clickCategoryTab (/home/ubuntu/regression-runner/repos/stage/hotel-frontend-core/e2e/pages/FoodOrderPage.ts:128:33)
2026-10-16T05:10:49.544Z at /home/ubuntu/regression-runner/repos/stage/hotel-frontend-core/e2e/specs/hfe-food-item-search-all-category.spec.ts:311:5
2026-10-16T05:10:49.544Z attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-10-16T05:10:49.544Z test-results/hfe-food-item-search-all-c-58d91-ar-shows-FoodItemEmptyState-chromium/test-failed-1.png
2026-10-16T05:10:49.544Z ────────────────────────────────────────────────────────────────────────────────────────────────
2026-10-16T05:10:49.544Z Error Context: test-results/hfe-food-item-search-all-c-58d91-ar-shows-FoodItemEmptyState-chromium/error-context.md
2026-10-16T05:10:49.544Z attachment #3: trace (application/zip) ─────────────────────────────────────────────────────────
2026-10-16T05:10:49.544Z test-results/hfe-food-item-search-all-c-58d91-ar-shows-FoodItemEmptyState-chromium/trace.zip
2026-10-16T05:10:49.544Z Usage:
2026-10-16T05:10:49.544Z pnpm exec playwright show-trace test-results/hfe-food-item-search-all-c-58d91-ar-shows-FoodItemEmptyState-chromium/trace.zip
2026-10-16T05:10:49.544Z ────────────────────────────────────────────────────────────────────────────────────────────────
2026-10-16T05:10:49.544Z 18) [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:317:7 › AC-6: Empty categories show inline empty state [AC-6] › [TC-HFE-019] Empty category still renders its heading — old isEmpty guard removed
2026-10-16T05:10:49.544Z Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeVisible[2m([22m[2m)[22m failed
2026-10-16T05:10:49.544Z Locator: getByText('Specials')
2026-10-16T05:10:49.544Z Expected: visible
2026-10-16T05:10:49.544Z Timeout: 10000ms
2026-10-16T05:10:49.544Z Error: element(s) not found
2026-10-16T05:10:49.544Z Call log:
2026-10-16T05:10:49.544Z [2m - Expect "toBeVisible" with timeout 10000ms[22m
2026-10-16T05:10:49.545Z [2m - waiting for getByText('Specials')[22m
2026-10-16T05:10:49.545Z 321 | await foodOrder.goto(SEED_KITCHEN_ID)
2026-10-16T05:10:49.545Z 322 | // The "Specials" heading must appear in the DOM even without any items
2026-10-16T05:10:49.545Z > 323 | await expect(page.getByText('Specials')).toBeVisible()
2026-10-16T05:10:49.545Z | ^
2026-10-16T05:10:49.545Z 324 | })
2026-10-16T05:10:49.545Z 325 | })
2026-10-16T05:10:49.545Z 326 |
2026-10-16T05:10:49.545Z at /home/ubuntu/regression-runner/repos/stage/hotel-frontend-core/e2e/specs/hfe-food-item-search-all-category.spec.ts:323:46
2026-10-16T05:10:49.545Z attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-10-16T05:10:49.545Z test-results/hfe-food-item-search-all-c-af8d3-—-old-isEmpty-guard-removed-chromium/test-failed-1.png
2026-10-16T05:10:49.545Z ────────────────────────────────────────────────────────────────────────────────────────────────
2026-10-16T05:10:49.545Z Error Context: test-results/hfe-food-item-search-all-c-af8d3-—-old-isEmpty-guard-removed-chromium/error-context.md
2026-10-16T05:10:49.545Z attachment #3: trace (application/zip) ─────────────────────────────────────────────────────────
2026-10-16T05:10:49.545Z test-results/hfe-food-item-search-all-c-af8d3-—-old-isEmpty-guard-removed-chromium/trace.zip
2026-10-16T05:10:49.545Z Usage:
2026-10-16T05:10:49.545Z pnpm exec playwright show-trace test-results/hfe-food-item-search-all-c-af8d3-—-old-isEmpty-guard-removed-chromium/trace.zip
2026-10-16T05:10:49.545Z ────────────────────────────────────────────────────────────────────────────────────────────────
2026-10-16T05:10:49.545Z 19) [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:330:7 › AC-7: All tab is first and unique in sidebar [AC-7] › [TC-HFE-020] All tab is first (topmost) item in sidebar on kitchen with many categories
2026-10-16T05:10:49.545Z Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeVisible[2m([22m[2m)[22m failed
2026-10-16T05:10:49.545Z Locator: getByRole('button', { name: /^All$/ }).or(locator('[data-testid="category-all-tab"]'))
2026-10-16T05:10:49.545Z Expected: visible
2026-10-16T05:10:49.545Z Timeout: 10000ms
2026-10-16T05:10:49.545Z Error: element(s) not found
2026-10-16T05:10:49.545Z Call log:
2026-10-16T05:10:49.545Z [2m - Expect "toBeVisible" with timeout 10000ms[22m
2026-10-16T05:10:49.545Z [2m - waiting for getByRole('button', { name: /^All$/ }).or(locator('[data-testid="category-all-tab"]'))[22m
2026-10-16T05:10:49.545Z 333 | const foodOrder = new FoodOrderPage(page)
2026-10-16T05:10:49.546Z 334 | await foodOrder.goto(overflowKitchenId)
2026-10-16T05:10:49.546Z > 335 | await expect(foodOrder.allTab).toBeVisible()
2026-10-16T05:10:49.546Z | ^
2026-10-16T05:10:49.546Z 336 | // All tab must be visible even after scrolling the sidebar to the bottom
2026-10-16T05:10:49.546Z 337 | await page.keyboard.press('End')
2026-10-16T05:10:49.546Z 338 | await expect(foodOrder.allTab).toBeInViewport()
2026-10-16T05:10:49.546Z at /home/ubuntu/regression-runner/repos/stage/hotel-frontend-core/e2e/specs/hfe-food-item-search-all-category.spec.ts:335:36
2026-10-16T05:10:49.546Z attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-10-16T05:10:49.546Z test-results/hfe-food-item-search-all-c-3b467-itchen-with-many-categories-chromium/test-failed-1.png
2026-10-16T05:10:49.546Z ────────────────────────────────────────────────────────────────────────────────────────────────
2026-10-16T05:10:49.546Z Error Context: test-results/hfe-food-item-search-all-c-3b467-itchen-with-many-categories-chromium/error-context.md
2026-10-16T05:10:49.546Z attachment #3: trace (application/zip) ─────────────────────────────────────────────────────────
2026-10-16T05:10:49.546Z test-results/hfe-food-item-search-all-c-3b467-itchen-with-many-categories-chromium/trace.zip
2026-10-16T05:10:49.546Z Usage:
2026-10-16T05:10:49.546Z pnpm exec playwright show-trace test-results/hfe-food-item-search-all-c-3b467-itchen-with-many-categories-chromium/trace.zip
2026-10-16T05:10:49.546Z ────────────────────────────────────────────────────────────────────────────────────────────────
2026-10-16T05:10:49.546Z 20) [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:341:7 › AC-7: All tab is first and unique in sidebar [AC-7] › [TC-HFE-021] All tab is never rendered more than once even with multiple categories
2026-10-16T05:10:49.546Z Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoHaveCount[2m([22m[32mexpected[39m[2m)[22m failed
2026-10-16T05:10:49.546Z Locator: getByRole('button', { name: /^All$/ }).or(locator('[data-testid="category-all-tab"]'))
2026-10-16T05:10:49.546Z Expected: [32m1[39m
2026-10-16T05:10:49.546Z Received: [31m0[39m
2026-10-16T05:10:49.546Z Timeout: 10000ms
2026-10-16T05:10:49.546Z Call log:
2026-10-16T05:10:49.546Z [2m - Expect "toHaveCount" with timeout 10000ms[22m
2026-10-16T05:10:49.546Z [2m - waiting for getByRole('button', { name: /^All$/ }).or(locator('[data-testid="category-all-tab"]'))[22m
2026-10-16T05:10:49.546Z [2m 14 × locator resolved to 0 elements[22m
2026-10-16T05:10:49.546Z [2m - unexpected value "0"[22m
2026-10-16T05:10:49.547Z 342 | const foodOrder = new FoodOrderPage(page)
2026-10-16T05:10:49.547Z 343 | await foodOrder.goto(SEED_KITCHEN_ID)
2026-10-16T05:10:49.547Z > 344 | await expect(foodOrder.allTab).toHaveCount(1)
2026-10-16T05:10:49.547Z | ^
2026-10-16T05:10:49.547Z 345 | })
2026-10-16T05:10:49.547Z 346 | })
2026-10-16T05:10:49.547Z 347 |
2026-10-16T05:10:49.547Z at /home/ubuntu/regression-runner/repos/stage/hotel-frontend-core/e2e/specs/hfe-food-item-search-all-category.spec.ts:344:36
2026-10-16T05:10:49.547Z attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-10-16T05:10:49.547Z test-results/hfe-food-item-search-all-c-a16a4-en-with-multiple-categories-chromium/test-failed-1.png
2026-10-16T05:10:49.547Z ────────────────────────────────────────────────────────────────────────────────────────────────
2026-10-16T05:10:49.547Z Error Context: test-results/hfe-food-item-search-all-c-a16a4-en-with-multiple-categories-chromium/error-context.md
2026-10-16T05:10:49.547Z attachment #3: trace (application/zip) ─────────────────────────────────────────────────────────
2026-10-16T05:10:49.547Z test-results/hfe-food-item-search-all-c-a16a4-en-with-multiple-categories-chromium/trace.zip
2026-10-16T05:10:49.547Z Usage:
2026-10-16T05:10:49.547Z pnpm exec playwright show-trace test-results/hfe-food-item-search-all-c-a16a4-en-with-multiple-categories-chromium/trace.zip
2026-10-16T05:10:49.547Z ────────────────────────────────────────────────────────────────────────────────────────────────
2026-10-16T05:10:49.547Z 21) [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:351:7 › Regression: existing behaviours unaffected by feature merge › [TC-HFE-029] Existing category-tab item display unaffected after feature merge
2026-10-16T05:10:49.547Z [31mTest timeout of 90000ms exceeded.[39m
2026-10-16T05:10:49.547Z Error: locator.click: Test timeout of 90000ms exceeded.
2026-10-16T05:10:49.547Z Call log:
2026-10-16T05:10:49.547Z [2m - waiting for getByRole('button', { name: 'Starters' }).or(getByText('Starters', { exact: true })).first()[22m
2026-10-16T05:10:49.547Z at ../pages/FoodOrderPage.ts:128
2026-10-16T05:10:49.547Z 126 | await testIdLocator.click()
2026-10-16T05:10:49.547Z 127 | } else {
2026-10-16T05:10:49.547Z > 128 | await textLocator.first().click()
2026-10-16T05:10:49.547Z | ^
2026-10-16T05:10:49.547Z 129 | }
2026-10-16T05:10:49.547Z 130 | }
2026-10-16T05:10:49.548Z 131 |
2026-10-16T05:10:49.548Z at FoodOrderPage.clickCategoryTab (/home/ubuntu/regression-runner/repos/stage/hotel-frontend-core/e2e/pages/FoodOrderPage.ts:128:33)
2026-10-16T05:10:49.548Z at /home/ubuntu/regression-runner/repos/stage/hotel-frontend-core/e2e/specs/hfe-food-item-search-all-category.spec.ts:354:5
2026-10-16T05:10:49.548Z attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-10-16T05:10:49.548Z test-results/hfe-food-item-search-all-c-071b4-ffected-after-feature-merge-chromium/test-failed-1.png
2026-10-16T05:10:49.548Z ────────────────────────────────────────────────────────────────────────────────────────────────
2026-10-16T05:10:49.548Z Error Context: test-results/hfe-food-item-search-all-c-071b4-ffected-after-feature-merge-chromium/error-context.md
2026-10-16T05:10:49.548Z attachment #3: trace (application/zip) ─────────────────────────────────────────────────────────
2026-10-16T05:10:49.548Z test-results/hfe-food-item-search-all-c-071b4-ffected-after-feature-merge-chromium/trace.zip
2026-10-16T05:10:49.548Z Usage:
2026-10-16T05:10:49.548Z pnpm exec playwright show-trace test-results/hfe-food-item-search-all-c-071b4-ffected-after-feature-merge-chromium/trace.zip
2026-10-16T05:10:49.548Z ────────────────────────────────────────────────────────────────────────────────────────────────
2026-10-16T05:10:49.548Z 22) [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:360:7 › Regression: existing behaviours unaffected by feature merge › [TC-HFE-030] SelectOptionModal still opens when item with options is clicked
2026-10-16T05:10:49.548Z [31mTest timeout of 90000ms exceeded.[39m
2026-10-16T05:10:49.548Z Error: locator.click: Test timeout of 90000ms exceeded.
2026-10-16T05:10:49.548Z Call log:
2026-10-16T05:10:49.548Z [2m - waiting for locator('[data-testid="food-item-card"]').or(locator('.bg-white.rounded-\\[8px\\].border.border-backgroundColor-secondary')).first()[22m
2026-10-16T05:10:49.548Z 363 | await foodOrder.goto(SEED_KITCHEN_ID)
2026-10-16T05:10:49.548Z 364 | // Click the first item in the grid that has options
2026-10-16T05:10:49.548Z > 365 | await foodOrder.itemCards().first().click()
2026-10-16T05:10:49.548Z | ^
2026-10-16T05:10:49.548Z 366 | /* NEEDS_TESTID: select-option-modal — SelectOptionModal dialog root */
2026-10-16T05:10:49.548Z 367 | await expect(page.locator('[data-testid="select-option-modal"]').or(
2026-10-16T05:10:49.548Z 368 | page.getByRole('dialog')
2026-10-16T05:10:49.548Z at /home/ubuntu/regression-runner/repos/stage/hotel-frontend-core/e2e/specs/hfe-food-item-search-all-category.spec.ts:365:41
2026-10-16T05:10:49.548Z attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-10-16T05:10:49.548Z test-results/hfe-food-item-search-all-c-ac433-tem-with-options-is-clicked-chromium/test-failed-1.png
2026-10-16T05:10:49.548Z ────────────────────────────────────────────────────────────────────────────────────────────────
2026-10-16T05:10:49.549Z Error Context: test-results/hfe-food-item-search-all-c-ac433-tem-with-options-is-clicked-chromium/error-context.md
2026-10-16T05:10:49.549Z attachment #3: trace (application/zip) ─────────────────────────────────────────────────────────
2026-10-16T05:10:49.549Z test-results/hfe-food-item-search-all-c-ac433-tem-with-options-is-clicked-chromium/trace.zip
2026-10-16T05:10:49.549Z Usage:
2026-10-16T05:10:49.549Z pnpm exec playwright show-trace test-results/hfe-food-item-search-all-c-ac433-tem-with-options-is-clicked-chromium/trace.zip
2026-10-16T05:10:49.549Z ────────────────────────────────────────────────────────────────────────────────────────────────
2026-10-16T05:10:49.549Z 23) [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:372:7 › Regression: existing behaviours unaffected by feature merge › [TC-HFE-031] Mobile OrderSummary search returns flat cross-category results (no duplication)
2026-10-16T05:10:49.549Z [31mTest timeout of 90000ms exceeded.[39m
2026-10-16T05:10:49.549Z Error: locator.fill: Test timeout of 90000ms exceeded.
2026-10-16T05:10:49.549Z Call log:
2026-10-16T05:10:49.549Z [2m - waiting for locator('input[placeholder="Search Item Name/Code"]')[22m
2026-10-16T05:10:49.549Z at ../pages/FoodOrderPage.ts:101
2026-10-16T05:10:49.549Z 99 |
2026-10-16T05:10:49.549Z 100 | async fillSearch(query: string): Promise {
2026-10-16T05:10:49.549Z > 101 | await this.searchInput.fill(query)
2026-10-16T05:10:49.549Z | ^
2026-10-16T05:10:49.549Z 102 | }
2026-10-16T05:10:49.549Z 103 |
2026-10-16T05:10:49.549Z 104 | async clearSearch(): Promise {
2026-10-16T05:10:49.549Z at FoodOrderPage.fillSearch (/home/ubuntu/regression-runner/repos/stage/hotel-frontend-core/e2e/pages/FoodOrderPage.ts:101:28)
2026-10-16T05:10:49.549Z at /home/ubuntu/regression-runner/repos/stage/hotel-frontend-core/e2e/specs/hfe-food-item-search-all-category.spec.ts:376:21
2026-10-16T05:10:49.549Z attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-10-16T05:10:49.549Z test-results/hfe-food-item-search-all-c-41536-ory-results-no-duplication--chromium/test-failed-1.png
2026-10-16T05:10:49.549Z ────────────────────────────────────────────────────────────────────────────────────────────────
2026-10-16T05:10:49.549Z Error Context: test-results/hfe-food-item-search-all-c-41536-ory-results-no-duplication--chromium/error-context.md
2026-10-16T05:10:49.549Z attachment #3: trace (application/zip) ─────────────────────────────────────────────────────────
2026-10-16T05:10:49.549Z test-results/hfe-food-item-search-all-c-41536-ory-results-no-duplication--chromium/trace.zip
2026-10-16T05:10:49.549Z Usage:
2026-10-16T05:10:49.549Z pnpm exec playwright show-trace test-results/hfe-food-item-search-all-c-41536-ory-results-no-duplication--chromium/trace.zip
2026-10-16T05:10:49.549Z ────────────────────────────────────────────────────────────────────────────────────────────────
2026-10-16T05:10:49.549Z 24) [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:383:7 › Regression: existing behaviours unaffected by feature merge › [TC-HFE-032] Mobile empty state renders on no search results in OrderSummary
2026-10-16T05:10:49.550Z [31mTest timeout of 90000ms exceeded.[39m
2026-10-16T05:10:49.550Z Error: locator.fill: Test timeout of 90000ms exceeded.
2026-10-16T05:10:49.550Z Call log:
2026-10-16T05:10:49.550Z [2m - waiting for locator('input[placeholder="Search Item Name/Code"]')[22m
2026-10-16T05:10:49.550Z at ../pages/FoodOrderPage.ts:101
2026-10-16T05:10:49.550Z 99 |
2026-10-16T05:10:49.550Z 100 | async fillSearch(query: string): Promise {
2026-10-16T05:10:49.550Z > 101 | await this.searchInput.fill(query)
2026-10-16T05:10:49.550Z | ^
2026-10-16T05:10:49.550Z 102 | }
2026-10-16T05:10:49.550Z 103 |
2026-10-16T05:10:49.550Z 104 | async clearSearch(): Promise {
2026-10-16T05:10:49.550Z at FoodOrderPage.fillSearch (/home/ubuntu/regression-runner/repos/stage/hotel-frontend-core/e2e/pages/FoodOrderPage.ts:101:28)
2026-10-16T05:10:49.550Z at /home/ubuntu/regression-runner/repos/stage/hotel-frontend-core/e2e/specs/hfe-food-item-search-all-category.spec.ts:387:21
2026-10-16T05:10:49.550Z attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-10-16T05:10:49.550Z test-results/hfe-food-item-search-all-c-96df8-rch-results-in-OrderSummary-chromium/test-failed-1.png
2026-10-16T05:10:49.550Z ────────────────────────────────────────────────────────────────────────────────────────────────
2026-10-16T05:10:49.550Z Error Context: test-results/hfe-food-item-search-all-c-96df8-rch-results-in-OrderSummary-chromium/error-context.md
2026-10-16T05:10:49.550Z attachment #3: trace (application/zip) ─────────────────────────────────────────────────────────
2026-10-16T05:10:49.550Z test-results/hfe-food-item-search-all-c-96df8-rch-results-in-OrderSummary-chromium/trace.zip
2026-10-16T05:10:49.550Z Usage:
2026-10-16T05:10:49.550Z pnpm exec playwright show-trace test-results/hfe-food-item-search-all-c-96df8-rch-results-in-OrderSummary-chromium/trace.zip
2026-10-16T05:10:49.550Z ────────────────────────────────────────────────────────────────────────────────────────────────
2026-10-16T05:10:49.550Z 25) [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:397:7 › Regression: existing behaviours unaffected by feature merge › [TC-HFE-034] FoodItemCard 'Unavailable' badge still renders for unavailable items in All tab
2026-10-16T05:10:49.550Z Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeVisible[2m([22m[2m)[22m failed
2026-10-16T05:10:49.550Z Locator: getByText('Unavailable')
2026-10-16T05:10:49.550Z Expected: visible
2026-10-16T05:10:49.550Z Timeout: 10000ms
2026-10-16T05:10:49.550Z Error: element(s) not found
2026-10-16T05:10:49.550Z Call log:
2026-10-16T05:10:49.550Z [2m - Expect "toBeVisible" with timeout 10000ms[22m
2026-10-16T05:10:49.550Z [2m - waiting for getByText('Unavailable')[22m
2026-10-16T05:10:49.551Z 398 | const foodOrder = new FoodOrderPage(page)
2026-10-16T05:10:49.551Z 399 | await foodOrder.goto(SEED_KITCHEN_ID)
2026-10-16T05:10:49.551Z > 400 | await expect(page.getByText('Unavailable')).toBeVisible()
2026-10-16T05:10:49.551Z | ^
2026-10-16T05:10:49.551Z 401 | })
2026-10-16T05:10:49.551Z 402 |
2026-10-16T05:10:49.551Z 403 | test('[TC-HFE-035] Category \'Off\' badge still renders for inactive/closed categories in sidebar', async ({ page }) => {
2026-10-16T05:10:49.551Z at /home/ubuntu/regression-runner/repos/stage/hotel-frontend-core/e2e/specs/hfe-food-item-search-all-category.spec.ts:400:49
2026-10-16T05:10:49.551Z attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-10-16T05:10:49.551Z test-results/hfe-food-item-search-all-c-f2610-navailable-items-in-All-tab-chromium/test-failed-1.png
2026-10-16T05:10:49.551Z ────────────────────────────────────────────────────────────────────────────────────────────────
2026-10-16T05:10:49.551Z Error Context: test-results/hfe-food-item-search-all-c-f2610-navailable-items-in-All-tab-chromium/error-context.md
2026-10-16T05:10:49.551Z attachment #3: trace (application/zip) ─────────────────────────────────────────────────────────
2026-10-16T05:10:49.551Z test-results/hfe-food-item-search-all-c-f2610-navailable-items-in-All-tab-chromium/trace.zip
2026-10-16T05:10:49.551Z Usage:
2026-10-16T05:10:49.551Z pnpm exec playwright show-trace test-results/hfe-food-item-search-all-c-f2610-navailable-items-in-All-tab-chromium/trace.zip
2026-10-16T05:10:49.551Z ────────────────────────────────────────────────────────────────────────────────────────────────
2026-10-16T05:10:49.551Z 26) [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:403:7 › Regression: existing behaviours unaffected by feature merge › [TC-HFE-035] Category 'Off' badge still renders for inactive/closed categories in sidebar
2026-10-16T05:10:49.551Z Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeVisible[2m([22m[2m)[22m failed
2026-10-16T05:10:49.551Z Locator: getByText('Off')
2026-10-16T05:10:49.551Z Expected: visible
2026-10-16T05:10:49.551Z Timeout: 10000ms
2026-10-16T05:10:49.551Z Error: element(s) not found
2026-10-16T05:10:49.552Z Call log:
2026-10-16T05:10:49.552Z [2m - Expect "toBeVisible" with timeout 10000ms[22m
2026-10-16T05:10:49.552Z [2m - waiting for getByText('Off')[22m
2026-10-16T05:10:49.552Z 404 | const foodOrder = new FoodOrderPage(page)
2026-10-16T05:10:49.552Z 405 | await foodOrder.goto(SEED_KITCHEN_ID)
2026-10-16T05:10:49.552Z > 406 | await expect(page.getByText('Off')).toBeVisible()
2026-10-16T05:10:49.552Z | ^
2026-10-16T05:10:49.552Z 407 | })
2026-10-16T05:10:49.552Z 408 | })
2026-10-16T05:10:49.552Z 409 |
2026-10-16T05:10:49.552Z at /home/ubuntu/regression-runner/repos/stage/hotel-frontend-core/e2e/specs/hfe-food-item-search-all-category.spec.ts:406:41
2026-10-16T05:10:49.552Z attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-10-16T05:10:49.552Z test-results/hfe-food-item-search-all-c-745a0-losed-categories-in-sidebar-chromium/test-failed-1.png
2026-10-16T05:10:49.552Z ────────────────────────────────────────────────────────────────────────────────────────────────
2026-10-16T05:10:49.552Z Error Context: test-results/hfe-food-item-search-all-c-745a0-losed-categories-in-sidebar-chromium/error-context.md
2026-10-16T05:10:49.552Z attachment #3: trace (application/zip) ─────────────────────────────────────────────────────────
2026-10-16T05:10:49.552Z test-results/hfe-food-item-search-all-c-745a0-losed-categories-in-sidebar-chromium/trace.zip
2026-10-16T05:10:49.552Z Usage:
2026-10-16T05:10:49.552Z pnpm exec playwright show-trace test-results/hfe-food-item-search-all-c-745a0-losed-categories-in-sidebar-chromium/trace.zip
2026-10-16T05:10:49.552Z ────────────────────────────────────────────────────────────────────────────────────────────────
2026-10-16T05:10:49.552Z 27) [chromium] › e2e/specs/hfe-food-item-search-all-category.spec.ts:413:7 › Performance: All-tab initial render › [TC-HFE-036] All-tab initial render with 200-item catalog completes within 2 seconds
2026-10-16T05:10:49.552Z Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoBeVisible[2m([22m[2m)[22m failed
2026-10-16T05:10:49.552Z Locator: locator('[data-testid="food-item-card"]').or(locator('.bg-white.rounded-\\[8px\\].border.border-backgroundColor-secondary')).first()
2026-10-16T05:10:49.552Z Expected: visible
2026-10-16T05:10:49.553Z Timeout: 2000ms
2026-10-16T05:10:49.553Z Error: element(s) not found
2026-10-16T05:10:49.553Z Call log:
2026-10-16T05:10:49.553Z [2m - Expect "toBeVisible" with timeout 2000ms[22m
2026-10-16T05:10:49.553Z [2m - waiting for locator('[data-testid="food-item-card"]').or(locator('.bg-white.rounded-\\[8px\\].border.border-backgroundColor-secondary')).first()[22m
2026-10-16T05:10:49.553Z 418 | await foodOrder.goto(largeKitchenId)
2026-10-16T05:10:49.553Z 419 | // Wait for item cards to be visible (indicates page is interactive)
2026-10-16T05:10:49.553Z > 420 | await expect(foodOrder.itemCards().first()).toBeVisible({ timeout: 2000 })
2026-10-16T05:10:49.553Z | ^
2026-10-16T05:10:49.553Z 421 | const elapsed = Date.now() - startTime
2026-10-16T05:10:49.553Z 422 | expect(elapsed, `Page should be interactive within 2000ms, was ${elapsed}ms`).toBeLessThanOrEqual(2000)
2026-10-16T05:10:49.553Z 423 | })
2026-10-16T05:10:49.553Z at /home/ubuntu/regression-runner/repos/stage/hotel-frontend-core/e2e/specs/hfe-food-item-search-all-category.spec.ts:420:49
2026-10-16T05:10:49.553Z attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-10-16T05:10:49.554Z test-results/hfe-food-item-search-all-c-43310--completes-within-2-seconds-chromium/test-failed-1.png
2026-10-16T05:10:49.554Z ────────────────────────────────────────────────────────────────────────────────────────────────
2026-10-16T05:10:49.554Z Error Context: test-results/hfe-food-item-search-all-c-43310--completes-within-2-seconds-chromium/error-context.md
2026-10-16T05:10:49.554Z attachment #3: trace (application/zip) ─────────────────────────────────────────────────────────
2026-10-16T05:10:49.554Z test-results/hfe-food-item-search-all-c-43310--completes-within-2-seconds-chromium/trace.zip
2026-10-16T05:10:49.554Z Usage:
2026-10-16T05:10:49.554Z pnpm exec playwright show-trace test-results/hfe-food-item-search-all-c-43310--completes-within-2-seconds-chromium/trace.zip
2026-10-16T05:10:49.554Z ────────────────────────────────────────────────────────────────────────────────────────────────
2026-10-16T05:10:49.554Z 28) [chromium] › e2e/specs/prd-2026-005-active-template.spec.ts:38:6 › PRD-2026-005 — Active custom template wins › TC-PRD-090 assigning a custom template makes regenerated PDF use it
2026-10-16T05:10:49.554Z Error: [2mexpect([22m[31mreceived[39m[2m).[22mtoBe[2m([22m[32mexpected[39m[2m) // Object.is equality[22m
2026-10-16T05:10:49.554Z Expected: [32mtrue[39m
2026-10-16T05:10:49.554Z Received: [31mfalse[39m
2026-10-16T05:10:49.554Z 106 | },
2026-10-16T05:10:49.554Z 107 | );
2026-10-16T05:10:49.554Z > 108 | expect(createResp.ok()).toBe(true);
2026-10-16T05:10:49.554Z | ^
2026-10-16T05:10:49.554Z 109 | const created = (await createResp.json()) as { id: string };
2026-10-16T05:10:49.554Z 110 |
2026-10-16T05:10:49.554Z 111 | // 2. Capture current assignment so we can restore it.
2026-10-16T05:10:49.554Z at /home/ubuntu/regression-runner/repos/stage/hotel-frontend-core/e2e/specs/prd-2026-005-active-template.spec.ts:108:27
2026-10-16T05:10:49.555Z attachment #1: screenshot (image/png) ──────────────────────────────────────────────────────────
2026-10-16T05:10:49.555Z test-results/prd-2026-005-active-templa-5f274-akes-regenerated-PDF-use-it-chromium/test-failed-1.png
2026-10-16T05:10:49.555Z ────────────────────────────────────────────────────────────────────────────────────────────────
2026-10-16T05:10:49.555Z Error Context: test-results/prd-2026-005-active-templa-5f274-akes-regenerated-PDF-use-it-chromium/error-context.md
2026-10-16T05:10:49.555Z attachment #3: trace (application/zip) ─────────────────────────────────────────────────────────
2026-10-16T05:10:49.555Z test-results/prd-2026-005-active-templa-5f274-akes-regenerated-PDF-use-it-chromium/trace.zip
2026-10-16T05:10:49.555Z Usage:
2026-10-16T05:10:49.555Z pnpm exec playwright show-trace test-results/prd-2026-005-active-templa-5f274-akes-regenerated-PDF-use-it-chromium/trace.zip
2026-10-16T05:10:49.555Z ────────────────────────────────────────────────────────────────────────────────────────────────
2026-10-16T05:10:49.555Z 29) [chromium] › e2e/specs/prd-2026-005-deep-verification.spec.ts:29:6 › PRD-2026-005 — deep verification › TC-PRD-070 IGST selection survives save → backend GET returns taxMode=IGST
2026-10-16T05:10:49.555Z Error: [2mexpect([22m[31mlocator[39m[2m).[22mtoHaveAttribute[2m([22m[32mexpected[39m[2m)[22m failed
2026-10-16T05:10:49.555Z Locator: getByTestId('invoice-tax-mode-igst')
2026-10-16T05:10:49.555Z Expected: [32m"true"[39m
2026-10-16T05:10:49.555Z Received: [31m""[39m
2026-10-16T05:10:49.555Z Timeout: 10000ms
2026-10-16T05:10:49.555Z Call log:
2026-10-16T05:10:49.555Z [2m - Expect "toHaveAttribute" with timeout 10000ms[22m
2026-10-16T05:10:49.555Z [2m - waiting for getByTestId('invoice-tax-mode-igst')[22m
2026-10-16T05:10:49.555Z [2m 14 × locator resolved to