Skip to main content

UI/E2E Sprint Closeout — 2026-04-26

Source plan: ui-e2e-sprint-plan-2026-04-26.md Source audit: ui-e2e-audit-2026-04-26.md

Outcome at a glance​

TierClosedRemaining (deferred)
CRITICAL15 / 150
HIGH4 (folded into Sprints 1+2)13
MEDIUM024
LOW03

13 commits across hmp-web-dashboard, all pushed to Azure DevOps origin master.

Sprint 1 — Demo blockers (7 items)​

#AuditCommit summaryNew E2E
1CRITICAL-1drop orphan front-desk/arrivals/keynova.tsx (796 lines) + 3 broken unit tests; production flow uses /reservations chipsfront-desk-arrivals-tabs.spec.ts
2CRITICAL-4POS Email Bill button + dialog wired to POST /orders/:id/emailpos-email-bill.spec.ts
3CRITICAL-5DPDPA §9 conditional guardian section in Add Guest dialogcrm-guardian-fields.spec.ts
4CRITICAL-6new /crm/dsar list + [id] detail (timeline, advance/reject/erase/export actions)crm-dsar-lifecycle.spec.ts
5CRITICAL-11real S3 upload via property-service AssetModule (sign + put + process)settings-branding.spec.ts
6CRITICAL-14usePaymentModeGate + TestModeBanner blocks Create Link when no LIVE Razorpay accountpayment-link-mode-gate.spec.ts
7CRITICAL-15/partners mock data replaced with Coming Q3 placeholder; sidebar link removedpartners-coming-soon.spec.ts

Sprint 2 — Banquet feature parity (5 items)​

#AuditWhat shipped
1CRITICAL-7New /banquet/events/[id]/function-sheet route — multi-section editor with timeline + staff table editors, save (PUT), approve (POST)
2CRITICAL-8Generate Contract button on event detail; Puppeteer Chromium runtime ships PDF; download link surfaces post-generate
3CRITICAL-9Costing card on event detail with KPIs (revenue / ingredient cost / overall food-cost %) + per-item breakdown rows; >35% rows flagged red
4CRITICAL-10MenuItemPickerDialog — outlet selector + name search; selecting an item PATCH /events/:id/items/:itemId with {menuItemId}; unlink available
5HIGH-9Add Payment dialog on Payments card POSTs /events/:id/payments; new row appears via React Query invalidation

E2E: banquet-feature-parity.spec.ts (5 tests covering all of the above).

Sprint 3 — E2E gaps + integrations triage (4 items)​

#AuditWhat shipped
1CRITICAL-2E2E for folio settle button visibility on folio detail (mutation already wired)
2CRITICAL-3E2E for reservations chip filter URL deep-linking (chips already wired)
3CRITICAL-12New IntegrationGate wrapper + 3 sub-route layout.tsx files (SAP/Tally/WhatsApp). Default-OFF flag NEXT_PUBLIC_INTEGRATIONS_ENABLED; renders the wireframe with disabled interaction + design-partner banner
4CRITICAL-13New /crm/campaigns/[id]/deliverability page with 6 KPI cards + 3 rate panels reading from existing /notifications/webhooks/tracking/:campaignId (P1-C2 SendGrid webhook already feeds the data)

E2E: sprint-3-e2e.spec.ts (4 specs covering all 4 items).

File-level totals​

  • 9 new Playwright specs added to e2e/tests/
  • 4 new pages created (/crm/dsar, /crm/dsar/[id], /banquet/events/[id]/function-sheet, /crm/campaigns/[id]/deliverability)
  • 3 new layouts (SAP / Tally / WhatsApp gate wrappers)
  • 2 new components (MenuItemPickerDialog, TestModeBanner, IntegrationGate)
  • 3 new hooks (usePaymentModeGate, useDsarRequests family, useFunctionSheet/useEventCosting/useEventContract/useEventPayments/useUpdateEventItem)
  • 3 new API modules (dsar.ts, uploads.ts, feature-flags.ts)
  • 1 orphan file deleted (front-desk/arrivals/keynova.tsx, 796 lines) + 3 broken unit tests
  • 1 mock-data page replaced (/partners — 200+ lines of fake data → roadmap placeholder)

Backend dependencies — all already shipped​

Every item closed in this sprint set used backend code that had already shipped in earlier session work. The dashboard was the gap.

ItemBackend ref
POS Email Billpos-service d66ae07 (P1-B1)
Guardian fieldsguest-service b2cbe59 (P0-12 / DPDPA §9)
DSAR endpointsguest-service fe770da (P1-C4)
S3 upload signproperty-service AssetModule
Razorpay mode gatepayment-service Phase 0 (MerchantAccount.mode)
Function sheetbanquet-service FunctionSheetsModule
Contract PDFbanquet-service 84d5055 (Puppeteer + apk Chromium)
Costingbanquet-service CostingModule + pos-service-clients@1.10.0
Menu pickerbanquet-service EventItem.menuItemId (84d5055) + pos /menu/items
Banquet paymentsbanquet-service EventPaymentsModule
Folio settlefrontdesk-service settleFolio mutation
Deliverabilitynotification-service tracking.controller + SendGrid webhook P1-C2
Integrations gateno backend — new feature flag

Notable assumptions made under auto-mode​

  1. CRITICAL-1: the audit flagged "stub strings on front-desk/arrivals tabs". The actual page redirects to /reservations?filter=…. The stub strings lived in an orphaned keynova.tsx not wired into routing. Decision: delete the orphan + add E2E coverage of the production redirect/chip flow rather than re-adding a parallel UI.
  2. CRITICAL-11: the audit said "fallback PUT if no sign endpoint" — turned out property-service/AssetModule already has the canonical 3-call S3 flow. Used that instead of the fallback.
  3. CRITICAL-12: SAP/Tally/WhatsApp pages render the wireframes (so design partners can preview) but disabled with pointer-events:none + banner. Not removed entirely.
  4. CRITICAL-13: notification-service tracking.controller already returns bounce/open/click metrics. Skipped the planned new aggregation endpoint; wired the new UI to the existing one.

Resume points​

  1. Run the full E2E suite — 9 new specs added to hmp-web-dashboard/e2e/tests. Need to run npm run test:e2e against a rebuilt dashboard to confirm green.
  2. HIGH backlog — 17 items remain (audit's HIGH tier). Same audit doc lists them; recommend a Sprint 4 of similar size after pilots.
  3. Frontdesk + auth flow tests — Sprint 3 specs use mocked routes; integration into the existing Playwright auth fixture should be verified (some specs may test.skip() if the page doesn't render, which masks regressions).
  4. Sidebar Handshake icon import — left as unused after partners removal; minor cleanup deferred.

Cumulative cross-session totals (all 2026-04-26 work)​

  • 63 commits across 14 repos pushed today (Sprint 1+2+3 = 13 of those, plus the morning's deferred-items, Track C, and 19-fix flow-test triage)
  • All 15 CRITICAL items from the UI/E2E audit closed
  • 9 new Playwright E2E specs for dashboard
  • 47 / 50 flow-test suites green (94%); 3 remaining are environment flakes (compose latency, seed-reset races)