fix(games): carry game kind on live events + fix the New Game lock funnel
CI / changes (pull_request) Successful in 2s
CI / unit (pull_request) Successful in 11s
CI / integration (pull_request) Successful in 21s
CI / ui (pull_request) Successful in 1m10s
CI / conformance (pull_request) Successful in 10s
CI / gate (pull_request) Successful in 0s
CI / deploy (pull_request) Successful in 1m56s
CI / changes (pull_request) Successful in 2s
CI / unit (pull_request) Successful in 11s
CI / integration (pull_request) Successful in 21s
CI / ui (pull_request) Successful in 1m10s
CI / conformance (pull_request) Successful in 10s
CI / gate (pull_request) Successful in 0s
CI / deploy (pull_request) Successful in 1m56s
Address review of the active-game limit lock: - Live-event GameViews (opponent_moved, match_found, game_started, ...) did not carry game_kind, so a lobby patch from an event zeroed a game's kind and the client's per-kind count under-counted — a capped kind read as free (a disabled start instead of the lock, and a wrong per-kind result). Thread Kind through notify.GameSummary → the event GameView. - New Game screen refreshes the lobby games on mount so the per-kind count reflects the current set, not a stale cached snapshot. - The guest funnel's login button routes to the profile screen (the account controls), not settings. - Copy: the guest prompt is "sign in to use all the game's features"; the durable notice is "finish your active games to start a new one". Regression tests: the notify opponent-moved payload carries kind; the client lock locks only the reached kind (vs_ai at cap leaves random open).
This commit is contained in:
@@ -28,7 +28,7 @@ test('new game: a start locks at its per-kind cap and the funnel modal opens', a
|
||||
|
||||
// Tapping the locked start opens the modal instead of a game, and does not navigate away.
|
||||
await start.click();
|
||||
const notice = page.getByText(/reached the limit of simultaneous games/i);
|
||||
const notice = page.getByText(/reached the limit/i);
|
||||
await expect(notice).toBeVisible();
|
||||
await expect(page).toHaveURL(/\/new$/);
|
||||
await page.getByRole('button', { name: /^ok$/i }).click();
|
||||
|
||||
Reference in New Issue
Block a user