fix(ui): F8-04b e2e — viewport-agnostic nav + refresh after create
Tests · UI / test (push) Failing after 3m8s

- lobby-create-screen: call lobbyData.refresh() after a successful
  POST so the new game shows up in the private-games panel
  immediately. The shared lobby-data store is otherwise lazy
  (ensure-on-first-mount), which rendered a stale list across the
  post-create navigation in the e2e suite.
- e2e tests that move between lobby sub-panels now go through
  `window.__galaxyNav.go(...)` rather than clicking the sidebar
  items. The mobile sidebar tucks the submenu behind a dropdown, so
  testid-based clicks fail on the mobile-iphone-13 / pixel-5
  viewports — the dev nav surface bypasses that UX (which has its
  own coverage in `lobby-tier-gate` / future submenu specs).
- game-shell-map missing-membership test: assert
  `lobby-account-name` instead of `lobby-create-button` on
  drop-back-to-lobby (the button moved into the paid-only
  private-games sub-panel; the identity strip is the constant lobby
  chrome).
- inspector-ship-group + ship-group-send synthetic loader specs:
  jump straight to the dev-only `synthetic-reports` top-level
  screen via the dev nav surface before looking for the file
  input (the loader moved off Overview in F8-04b).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Ilia Denisov
2026-05-27 00:25:49 +02:00
parent 058c4fcf69
commit cff7cc3859
7 changed files with 48 additions and 21 deletions
@@ -181,8 +181,10 @@ test.describe("F8-04b — tier gate", () => {
await expect(privateGamesEntry).toBeVisible();
// Free-tier callers reach the create form via the DEV-visible
// entry, but the backend still rejects the POST.
await privateGamesEntry.click();
// entry, but the backend still rejects the POST. Use the dev
// nav surface so the assertion works on mobile too (the mobile
// sidebar tucks the private-games entry behind a dropdown).
await page.evaluate(() => window.__galaxyNav!.go("games-private-games"));
await page.getByTestId("lobby-create-button").click();
await expect(page.getByTestId("lobby-create-form")).toBeVisible();
@@ -198,7 +200,7 @@ test.describe("F8-04b — tier gate", () => {
});
await completeLogin(page);
await page.getByTestId("lobby-nav-games-private-games").click();
await page.evaluate(() => window.__galaxyNav!.go("games-private-games"));
await page.getByTestId("lobby-create-button").click();
await expect(page.getByTestId("lobby-create-form")).toBeVisible();
@@ -227,7 +229,7 @@ test.describe("F8-04b — tier gate", () => {
const mocks = await mockGatewayTier(page, { isPaid: true });
await completeLogin(page);
await page.getByTestId("lobby-nav-games-private-games").click();
await page.evaluate(() => window.__galaxyNav!.go("games-private-games"));
await expect(page.getByTestId("lobby-games-private-empty")).toBeVisible();
await expect(page.getByTestId("lobby-create-button")).toBeVisible();
await page.getByTestId("lobby-create-button").click();