Skip to content

[#1124 followup] command-palette typing-search 'banResults' not visible on mobile-chromium #1206

@rumblefrog

Description

@rumblefrog

Symptom

web/tests/e2e/specs/flows/ui/command-palette.spec.ts:110typing surfaces a seeded ban — fails reliably on the mobile-chromium project (chromium project passes deterministically). Both the original 14-char prefix shape and the post-#1205 full-unique-nick shape hit the same wall:

✘ specs/flows/ui/command-palette.spec.ts:110:9 [mobile-chromium]
  Error: expect(locator).toBeVisible() failed
  Locator: locator('[data-testid="palette-result"][data-result-kind="ban"]').first()
  Timeout: 5000ms
  Error: element(s) not found

This is the only test that surfaced after #1205 turned failOnFlakyTests: true and dropped CI to workers: 1. The entire rest of the suite (87 tests including the same spec on chromium and the enter subtest on mobile-chromium) passes deterministic green.

What's been ruled out

Likely shape of the bug

Something specific to the mobile-chromium project (iPhone 13 device descriptor, defaultBrowserType: 'chromium', viewport 390×844) interacts with the palette dialog's <dialog> rendering or the post-fill input handling so the bans.search either:

  1. doesn't actually land a request (the click on data-loading clears because the helper deletes the attribute on "no envelope" too), or
  2. lands and returns rows but the rendered <a data-testid=\"palette-result\"> isn't laid out inside the visible dialog rect (so Playwright's toBeVisible() returns false), or
  3. lands but the <dialog> has been closed/re-opened by some mobile-specific keyboard handling between the assertions.

Investigation paths:

  • Add a page.waitForResponse(POST /api.php with action: 'Bans.Search') and inspect data.bans.length directly to disambiguate (1) from (2)/(3).
  • Pull a Playwright trace from CI (trace: 'on-first-retry' already on) and look at the DOM snapshot at the failed assertion.
  • Reproduce locally with ./sbpp.sh e2e --project=mobile-chromium --grep \"typing surfaces a seeded ban\".

Workaround in #1205

The test is conditionally skipped on mobile-chromium with a comment pointing at this issue:

```ts
test.skip(testInfo.project.name === 'mobile-chromium', 'tracked in #');
```

Chromium coverage of the same surface remains. Removing the skip is the success criterion for closing this issue.

Refs

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions