e2e: harness — create a Room and join it from a second browser #192
Labels
No labels
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
spec
wayfinder:grilling
wayfinder:map
wayfinder:prototype
wayfinder:research
wayfinder:task
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Blocks
#193 e2e: a Game played to checkmate across two browsers
amaurycoudr/chess-project
#194 e2e: resignation, and a reload that preserves the Seat
amaurycoudr/chess-project
#198 e2e: entry paths — typed Room code, unknown code, copied invite
amaurycoudr/chess-project
#199 e2e: opponent presence over an advanced browser clock
amaurycoudr/chess-project
Reference
amaurycoudr/chess-project#192
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Parent
#191
What to build
The first crossing of the browser seam, end to end: a Player creates a Room in one browser, a second Player opens the invite link in another browser, and both see the Room's two Seats filled.
This is the tracer bullet for the whole suite, so it carries the harness the later tickets build on. The suite lives in its own workspace package,
@chess/e2e, which declares no dependency on the front-end package — that is the mechanism enforcing the seam, not a convention to be remembered.The suite drives the real front-end and the real API over real SSE Connections. In CI the servers serve built artifacts, so a pass speaks about the bundle a Player actually receives; locally they are the dev servers, for speed, selected by environment variable. Playwright's own web-server support starts both.
Port derivation is mandatory. Dev ports are assigned per worktree in blocks, and the API's configuration loader throws when its port is absent, so the Playwright configuration must load the worktree's environment (or run the repo's port-sync script) and derive its base URL from the assigned front-end port. A hardcoded port would silently drive another worktree's servers and the failure would be baffling.
Each Player is a separate browser context, which gives each its own storage and therefore its own Seat token with no extra machinery. A shared fixture provides a seated pair in a fresh Room.
Two repo prerequisites ride along, both needed before this ticket can be committed at all: the allowed commit scopes must gain
e2e, and the Playwright MCP project configuration is committed if it is to be shared (it is an authoring aid only — no committed test may require an MCP server).Acceptance criteria
@chess/e2eexists and its manifest declares no dependency on the front-end packagetest:slowtask, and does not implementtestpnpm testand the pre-commit hook do not run any browser; the five-command gate is unchanged locallye2ementioned in issue #193
mentioned in issue #194
mentioned in issue #198
mentioned in issue #199
marked this issue as related to #199
marked this issue as related to #198
marked this issue as related to #194
marked this issue as related to #193