e2e: a Game played to checkmate across two browsers #193

Closed
opened 2026-09-01 13:44:32 +00:00 by root · 6 comments
root commented 2026-09-01 13:44:32 +00:00 (Migrated from gitlab.core-project.space)

Imported from GitHub amaurycoudr/chess-project#193, opened by @amaurycoudr on 2026-09-01 13:44 UTC.
Closed on GitHub on 2026-09-02 13:23 UTC as completed.


Parent

#191

What to build

Two Players play a Game to checkmate in the same Room, each in their own browser, and both are told who won.

This establishes the two things every later multi-Player ticket needs: the helper that plays a Move by selecting a square and clicking its target, and the strategy for waiting until an SSE-driven update has actually landed in the other Player's browser. Both belong to the suite, not to any one test.

The Game is the four-Move mate. After each Move, both Players' boards are asserted to agree — a one-sided assertion would pass against a broken fan-out, so every shared behaviour is checked in both contexts.

Position assertion is targeted, never exhaustive: the squares the behaviour concerns, the status line, and the move list in readable notation. Nothing in the DOM exposes a machine-readable position and none is added. Checkmate itself needs no position read — the status line names the winner and the mated King's square carries its check attribute.

Acceptance criteria

  • A reusable helper plays a Move by selecting a square and clicking its target
  • A reusable helper waits until an update raised by one Player has landed in the other Player's browser
  • Both Players alternate Moves through to checkmate in a single Game
  • After each Move, both Players' boards are asserted to agree on the squares that changed
  • The Player who moved sees their own Move without waiting for a round trip
  • The last Move is highlighted for both Players
  • At checkmate, both Players are told who won
  • The mated King's square carries its check state
  • The move list shows the Game in readable notation
  • No square is read exhaustively across the whole board; assertions name the squares the behaviour concerns
  • Only role-and-name queries and the permitted domain-anchored hooks are used
  • All five gate commands pass, and the suite passes
> _Imported from GitHub [amaurycoudr/chess-project#193](https://github.com/amaurycoudr/chess-project/issues/193), opened by [@amaurycoudr](https://github.com/amaurycoudr) on 2026-09-01 13:44 UTC._ > _Closed on GitHub on 2026-09-02 13:23 UTC as completed._ <!-- github-issue:193 --> --- ## Parent #191 ## What to build Two Players play a Game to checkmate in the same Room, each in their own browser, and both are told who won. This establishes the two things every later multi-Player ticket needs: the helper that plays a Move by selecting a square and clicking its target, and the strategy for waiting until an SSE-driven update has actually landed in the *other* Player's browser. Both belong to the suite, not to any one test. The Game is the four-Move mate. After each Move, both Players' boards are asserted to agree — a one-sided assertion would pass against a broken fan-out, so every shared behaviour is checked in both contexts. Position assertion is targeted, never exhaustive: the squares the behaviour concerns, the status line, and the move list in readable notation. Nothing in the DOM exposes a machine-readable position and none is added. Checkmate itself needs no position read — the status line names the winner and the mated King's square carries its check attribute. ## Acceptance criteria - [ ] A reusable helper plays a Move by selecting a square and clicking its target - [ ] A reusable helper waits until an update raised by one Player has landed in the other Player's browser - [ ] Both Players alternate Moves through to checkmate in a single Game - [ ] After each Move, both Players' boards are asserted to agree on the squares that changed - [ ] The Player who moved sees their own Move without waiting for a round trip - [ ] The last Move is highlighted for both Players - [ ] At checkmate, both Players are told who won - [ ] The mated King's square carries its check state - [ ] The move list shows the Game in readable notation - [ ] No square is read exhaustively across the whole board; assertions name the squares the behaviour concerns - [ ] Only role-and-name queries and the permitted domain-anchored hooks are used - [ ] All five gate commands pass, and the suite passes
root commented 2026-09-01 13:44:32 +00:00 (Migrated from gitlab.core-project.space)

GitHub issue relations, imported as "related" links (GitLab CE has no sub-issues or blocking links).

> _GitHub issue relations, imported as "related" links (GitLab CE has no sub-issues or blocking links)._ <!-- github-relations --> - Blocked by: #192 - Blocking: #197
root (Migrated from gitlab.core-project.space) closed this issue 2026-09-02 13:23:08 +00:00
root commented 2026-10-13 08:39:10 +00:00 (Migrated from gitlab.core-project.space)

mentioned in issue #197

mentioned in issue #197
root commented 2026-10-13 08:40:46 +00:00 (Migrated from gitlab.core-project.space)

mentioned in issue #192

mentioned in issue #192
root commented 2026-10-13 08:41:45 +00:00 (Migrated from gitlab.core-project.space)

marked this issue as related to #192

marked this issue as related to #192
root commented 2026-10-13 08:41:46 +00:00 (Migrated from gitlab.core-project.space)

marked this issue as related to #197

marked this issue as related to #197
root commented 2026-10-13 10:19:27 +00:00 (Migrated from gitlab.core-project.space)

mentioned in commit ac398ab1c6

mentioned in commit ac398ab1c638b6c129e3f967fdab2e83e46474c7
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Reference
amaurycoudr/chess-project#193
No description provided.