Skip to content

FW Lite viewer: two WebKit-specific UI behavior differences (skipped on WebKit in #2677) #2678

Description

@hahn-kev-bot

Summary

PR #2677 adds WebKit (Safari's engine) as a second browser for the FW Lite viewer UI Playwright suite (running on Linux). Two UI tests reveal genuine WebKit-specific behavior differences and are temporarily skipped on WebKit (they pass on Chromium). This issue tracks investigating whether each is a real Safari UX bug to fix in the app, or acceptable behavior the test should tolerate.

Both are skipped via test.skip(browserName === 'webkit', ...) with a comment pointing here.

1. Virtualized entry list — selection not preserved on filter clear

Test: frontend/viewer/tests/ui/entries-list.test.ts › "clearing search filter with entry selected keeps entry visible".

Flow: scroll far down the virtualized entry list, filter to a headword, select the row, then clear the filter. On Chromium the selected ([aria-selected="true"]) row stays rendered/visible; on WebKit it is not in the rendered virtual window after the filter clears — the virtualized list's scroll position isn't restored to the selection.

Question to resolve: should the app explicitly scroll/restore the selected entry into view when the filter is cleared, or is losing scroll position acceptable?

2. Duplicate-check jump pill not dismissed after smooth scroll

Test: frontend/viewer/tests/ui/new-entry-duplicates.test.ts › "an out-of-view duplicate strip surfaces a jump pill".

Flow: in the new-entry dialog, an out-of-view duplicate strip surfaces a floating "jump" pill. Clicking it scrollIntoView({behavior:'smooth'})s the duplicate widget into view, which is meant to hide the pill. The pill's visibility is driven by an IntersectionObserver (root = the dialog scroll container, rootMargin: '-16px') in frontend/viewer/src/lib/entry-editor/duplicate-check/DuplicateCheckSection.svelte. Playwright confirms the widget is in the viewport, but on WebKit the observer never reports it as intersecting after the smooth scroll settles, so the pill lingers.

Question to resolve: is this a real Safari issue (e.g. dismiss the pill directly on jump rather than relying solely on the observer, or adjust the observer root/margin), or test timing?

Notes

  • Can't easily repro locally on this setup; CI (Linux WebKit) is the signal.
  • Once resolved, remove the test.skip guards.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions