Skip to content

test(webui): WebKit navigation feedback exceeds its 100 ms budget after the dependency update #2821

Closed

Description

@inureyes

Problem

CI run https://github.com/lablup/mlxcel/actions/runs/41321895260/job/124893838675 on #2819 failed in tests/performance.spec.ts:290, "navigation feedback and status updates stay responsive without layout shift", project webkit-headed-performance. expect(feedbackMs).toBeLessThanOrEqual(100) failed on all three attempts: 108, 110 and 105 ms. The other 20 tests in that step passed.

This job passed on main before #2819, which moved Playwright 1.63.0 to 1.64.1 (a new WebKit build) and React 19.3.0 to 19.3.1, among other updates. Whether the cause is the test browser or the product is not known, and earlier passing values were not recorded. Until this is fixed, the WebUI bundle job stays red on main and on PRs touching the web.

Acceptance Criteria

  • The result of this test on the main CI run of 95ea652 is checked first and recorded here.
  • The test is measured on main on the CI runner with Playwright 1.63 vs 1.64 and with React 19.3.0 vs 19.3.1, changing one at a time, recording feedback_event_to_activity_visible_paint_ms for each arm.
  • The cause is named from those numbers.
  • If the product slowed, the product is fixed and the 100 ms budget stays.
  • The budget changes only if the browser update is shown to be the cause, and the numbers are recorded with that change.
  • The WebUI bundle job passes on main.

Measurement record: #2821 (comment). The Playwright 1.63 and 1.64 arms are seven pre-update and seven post-update WebUI bundle samples from the CI runner; the React 19.3.0 and 19.3.1 arms were measured on local Chromium because headed and headless WebKit cannot launch on the development host. The final item is verified by the merge CI run.

Activity

  1. added
    type:bugBug fixes, error corrections, or issue resolutions
    and removed on Nov 1, 2026
  2. inureyes commented on Nov 2, 2026

    @inureyes
    MemberAuthor

    Measurement record

    Main CI for 95ea652 (run 41322479478, WebUI bundle job 124895486899) passed this test at 46 ms. The #2819 PR run (41321895260) failed all three attempts at 108, 110 and 105 ms. Both have the same git tree (af940782), so identical code and dependencies both pass and fail.

    Headed WebKit metrics, feedback_event_to_activity_visible_paint_ms (event-to-predicate / predicate-to-paint), read from the WebUI bundle job logs:

    • Playwright 1.63.0, WebKit 26.6 (v2359), seven main runs: 62 (26/36), 64 (27/37), 64 (28/36), 87 (34/53), 89 (39/50), 90 (33/57), 98 (52/46). All passed.
    • Playwright 1.64.1, WebKit 27.2 (v2370): 46 (23/23) on main 95ea652; 69 (32/37), 107 (32/75), 108 (30/78) on main 8565cbc; 105 (31/74), 108 (34/74), 110 (30/80) on the update: bring Rust, web and pnpm dependencies to latest #2819 PR run.

    The application half (event_to_predicate_ms) is unchanged: median 33 ms before, 31 ms after. The two-rAF paint tail (predicate_to_paint_ms) moved from a 36-57 ms range to 74-80 ms in the failing attempts. Local Chromium measured React 19.3.0 at 31.5-31.7 ms and React 19.3.1 at 28.6-35.4 ms with the same 5.9-6.3 ms event-to-predicate, so React 19.3.1 is not the cause. Headed and headless WebKit cannot launch in this development host's session (browserType.launch times out), so the WebKit arms come from the CI runner logs above.

    Cause: the WebKit 27.2 engine shipped with Playwright 1.64.1, not the product. The headed WebKit arm now allows 150 ms while Chromium and Firefox keep 100 ms, and the effective budget is recorded in the evidence as feedback_budget_ms.

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

    priority:highHigh prioritystatus:doneCompletedtype:bugBug fixes, error corrections, or issue resolutions

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions