Task #129 — added 4 browser test scenarios in
artifacts/tx-os/tests/executive-meetings-schedule-features.spec.mjs:
1. Rich-text title editing (bold + red color via Tiptap toolbar)
round-trips through the API and persists after reload — checks
both the rendered cell HTML and the DB column.
2. Drag-to-reorder rows: dragging row 2 above row 1 swaps daily
numbers AND start times; verified after page reload.
3. Custom highlight color from the customize popover paints the
current meeting row with an inset box-shadow ring matching the
chosen swatch (default green vs custom red).
4. A non-mutate user (executive_viewer) sees no grip handle and no
edit-mode toggle on the schedule.
Implementation notes / drift:
- Tests seed meetings directly via DATABASE_URL using pg.Pool and
clean up in afterAll (meetings, attendees, audit logs, and any
granted executive_viewer role assignments are revoked).
- Meeting dates use a per-process random base ~1+ year out so reruns
never collide on the (meeting_date, daily_number) unique key.
- The bold+color assertion checks whichever language column was
written (title_ar vs title_en), since admin's preferredLanguage
overrides the localStorage tx-lang init script after login.
- Re-used existing test IDs already exposed by the schedule UI
(em-edit-title, em-edit-toolbar, em-edit-bold, em-edit-color-red,
em-edit-save, em-row-grip, em-customize-columns-trigger,
em-highlight-toggle, em-highlight-color-#hex, em-edit-mode-toggle,
data-current-meeting). No production code changes.
All 4 tests pass against the live workflows (40s total).
Replit-Task-Id: 761dc96a-5bcb-47ef-bdb2-acfbebc68fc5