Context
PR #206 added smoke:partykit:presence-cursor, which soaks the generic presence transport with Node/WebSocket clients. That is useful for fanout and connection stability, but it does not open real browser pages or validate cursor DOM rendering, style updates, proximity logic, page console health, or browser-side performance.
Goal
Add a browser-level regression smoke that proves real PlayHTML pages can observe many cursor peers without dropping rendered cursors or surfacing runtime errors.
Suggested approach
- Use Playwright against a built local site or a staging URL.
- Open one or more real browser pages as observers.
- Drive additional synthetic presence peers through the generic presence WebSocket so the browser sees realistic fanout without requiring 20 full browser contexts.
- Move observer cursors enough to exercise local publish, remote render, visibility/style refresh, and proximity paths.
- Collect browser console errors, page errors, cursor DOM counts, observed peer counts, and disconnect/protocol errors.
Acceptance criteria
- The smoke fails if browser observers see fewer remote cursor elements than expected after settle.
- The smoke fails on PlayHTML console errors, uncaught page errors, presence protocol errors, or unexpected socket closes.
- The smoke can run against local build and staging by configuration.
smoke-tests/README.md documents how to run it and how it differs from smoke:partykit:presence-cursor.
Related: PR #206.
Context
PR #206 added
smoke:partykit:presence-cursor, which soaks the generic presence transport with Node/WebSocket clients. That is useful for fanout and connection stability, but it does not open real browser pages or validate cursor DOM rendering, style updates, proximity logic, page console health, or browser-side performance.Goal
Add a browser-level regression smoke that proves real PlayHTML pages can observe many cursor peers without dropping rendered cursors or surfacing runtime errors.
Suggested approach
Acceptance criteria
smoke-tests/README.mddocuments how to run it and how it differs fromsmoke:partykit:presence-cursor.Related: PR #206.