Skip to content

ci: the WebKit interaction lane runs the pager's proof for the pager files - #9377

Merged
cixzhang merged 5 commits into
mainfrom
ci/webkit-scope-pager
Nov 2, 2026
Merged

cixzhang merged 5 commits into
mainfrom
ci/webkit-scope-pager

Conversation

@cixzhang

@cixzhang cixzhang commented Nov 1, 2026 •

Copy link
Copy Markdown
Contributor

Maintainer impact

  • Before: the WebKit interaction proof (pr-interaction-webkit) runs for the press, touch and gesture code it guards. The pager hook (from vjeux's pager work) is touch-driven, so edits there should get the same real-WebKit proof.
  • After: the lane also runs for hooks/usePager, its browser spec and its bundle (hooks/__tests__/usePager, hooks/__tests__/pagerBundle), and its run includes the pager's proof (hooks/__tests__/usePager.interaction). That spec bundles its own page with esbuild, like the gesture and motion specs.
  • Carousel paging stays out. Its spec renders its Storybook story, and this lane leaves Storybook-rendering specs to the Chromium proofs, so its files would start a WebKit run that tests nothing of theirs.
  • A fork pull request's .github changes can't run with the repository's workflows, so the CI-scope change lands here on its own, credited to its author.

Change

  • .github/workflows/ci.yml, pr-interaction-webkit:
    • scope paths adds hooks/(…|useIsomorphicLayoutEffect|usePager|__tests__/(usePager|pagerBundle)) and utils/(…|sharedResizeObserver). Those two shared files are in the pager page's bundle at the pager pull request's head, so an edit to either changes what the proof runs;
    • the run step adds packages/core/src/hooks/__tests__/usePager.interaction;
    • the lane comment names the pager.
  • .github/scripts/ci-interaction-webkit.test.mjs:
    • the three pager paths and the two shared files join the "runs for gesture, motion…" cases;
    • a bundle-reach case for the pager's page runs once that page exists (skipped until then), so its next import is caught;
    • the pager proof joins the run's targets;
    • Carousel paging's files are pinned out of scope and out of the run.

Evidence

  • I checked the import closure of the pager's page at the pager pull requests' heads against the new scope. Every file is in scope; only sharedResizeObserver and useIsomorphicLayoutEffect were missing before.
  • The pager files don't exist on main yet. Of the two shared files, sharedResizeObserver changed twice in 90 days and useIsomorphicLayoutEffect never.
  • ci-interaction-webkit, ci-interaction, workflow-paths and ci-tooling-routing tests pass (73 tests).
  • CI impact: no runner-class change; the WebKit lane keeps its standard runner. The WebKit lane also runs, and runs the pager's proof, for the pager files. Those don't exist on main until the pager lands (until then, Playwright's run finds the other targets as today). It also runs for the two shared files, which rarely change (twice in 90 days), so runner-pool use and time to green are unchanged today.

Scope

  • One change: the WebKit proof's scope and run for the pager.
  • Public text contains no internal Meta context.

…paging files

Co-authored-by: vjeux <197597+vjeux@users.noreply.github.com>
@vercel

vercel Bot commented Nov 1, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
astryx Ready Ready Preview Nov 2, 2026 8:09am UTC

Request Review

@meta-cla meta-cla Bot added the CLA Signed This label is managed by the Meta Open Source bot. label Nov 1, 2026
@astracat-bot

astracat-bot Bot commented Nov 1, 2026 •

Copy link
Copy Markdown

AI review status for this pull request.

Review status Updated
🟢 Reviewed (for maintainers only) Nov 2, 2026, 8:15 AM UTC

@cixzhang
cixzhang marked this pull request as ready for review November 1, 2026 18:09
@github-actions

github-actions Bot commented Nov 1, 2026 •

Copy link
Copy Markdown
Contributor

PR Analysis Report

🔎 Preview · 92e72ed

Storybook · Sandbox · built from this PR's head

Package size: no published package changed; no new dependencies.

API changes: none in this pull request

Committed API report behind this build: core 5 rows; run pnpm api:report.

Not run on this PR: add ci:run-visual, ci:run-a11y or ci:run-rtl to run them.

CI impact: +5.1 job-min per update · pool +7.7% · time to green +1.8 min · standard runners · 1 CI action or script file changed (not measured)
Before After Change
Job-minutes per PR update 65.6 70.7 +5.1
Runner pool, runner-minutes a day 27,180 29,279 +2,099 (+7.7%)
Average concurrent jobs 18.9 20.3 +1.5
Time to green (median → this run) 15.7 min 17.4 min +1.8 min
Runs a day 414 414 0

Changed jobs: pr-interaction-webkit changed: standard

Not measured (the jobs that use these keep their recent minutes above): .github/scripts/ci-interaction-webkit.test.mjs.

Assumptions: before is each job's average over the last 20 pull-request runs; after keeps that for unchanged jobs and uses this run's minutes for added or changed ones, weighted by how often each changed job ran in those runs; runs a day averages the seven whole days before today; time to green compares this run with the median of those runs that ran the same jobs.


Generated by PR Enrichment workflow | View full report

@astracat-bot astracat-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changes requested: the new scope starts the WebKit lane for the pager and Carousel-paging files, but the lane's run step (.github/workflows/ci.yml lines 2187–2194) still selects only the gesture, motion and harness specs, so neither pager spec would run in WebKit. Please add packages/core/src/hooks/__tests__/usePager.interaction to that run step and to the routing test's targets list. For Carousel paging, either drop it from the scope (its spec renders Storybook stories, which this lane keeps with the Chromium proofs) or add its spec and update the lane's comment. The new routing cases themselves are correct and fail against main as expected.

[Automated review]

Comment thread .github/workflows/ci.yml Outdated
uses: ./.test-scope/.github/actions/test-scope
with:
paths: '^(packages/core/src/gestures/|packages/core/src/motion/|packages/core/src/internal/touch|packages/core/src/utils/(press|touch|primaryClick|isApplePlatform)|packages/core/src/hooks/(useMenuPress|menuPress|useLongPress|usePressFeedback)|internal/interaction-harness/|internal/a11y-spec/|playwright\.interaction\.config\.ts$|packages/themes/[^/]+/src/|apps/storybook/|\.github/workflows/ci\.yml$|package\.json$|pnpm-lock\.yaml$|\.github/actions/test-scope/)'
paths: '^(packages/core/src/gestures/|packages/core/src/motion/|packages/core/src/internal/touch|packages/core/src/utils/(press|touch|primaryClick|isApplePlatform)|packages/core/src/hooks/(useMenuPress|menuPress|useLongPress|usePressFeedback|usePager|__tests__/(usePager|pagerBundle))|packages/core/src/Carousel/(useCarouselPaging|__tests__/CarouselPaging)|internal/interaction-harness/|internal/a11y-spec/|playwright\.interaction\.config\.ts$|packages/themes/[^/]+/src/|apps/storybook/|\.github/workflows/ci\.yml$|package\.json$|pnpm-lock\.yaml$|\.github/actions/test-scope/)'

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This starts the lane for the pager files, but the run step below (lines 2187–2194) still passes only the gesture, motion and harness targets to Playwright, so usePager.interaction.browser.spec.ts and CarouselPaging.interaction.browser.spec.ts never run in WebKit. Add packages/core/src/hooks/__tests__/usePager.interaction there and to the test's targets list. For Carousel paging, either drop the Carousel/(…) alternative or add its spec and revise the lane comment at lines 2068–2072, which keeps Storybook-rendering specs with Chromium.

@cixzhang
cixzhang marked this pull request as draft November 1, 2026 18:21
@cixzhang
cixzhang marked this pull request as ready for review November 1, 2026 18:23

@astracat-bot astracat-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changes requested: the new scope starts the WebKit lane for the pager and Carousel-paging files, but the lane's run step (.github/workflows/ci.yml lines 2187–2194) still selects only the gesture, motion and harness specs, so neither pager spec would run in WebKit. Please add packages/core/src/hooks/__tests__/usePager.interaction to that run step and to the routing test's targets list. For Carousel paging, either drop it from the scope (its spec renders Storybook stories, which this lane keeps with the Chromium proofs) or add its spec and update the lane's comment. The merge from main resolves the scope regex correctly, and the routing tests pass.

[Automated review]

Comment thread .github/workflows/ci.yml Outdated
uses: ./.test-scope/.github/actions/test-scope
with:
paths: '^(packages/core/src/gestures/|packages/core/src/motion/|packages/core/src/internal/touch|packages/core/src/utils/(press|touch|primaryClick|isApplePlatform|flatTree|inputStream|clickGuard|selectionLock|coarsePointer)|packages/core/src/privateAttributes/hapticSwitch\.stylex\.ts$|packages/core/src/hooks/(useMenuPress|menuPress|useLongPress|usePressFeedback|isRtlElement)|internal/interaction-harness/|internal/a11y-spec/|playwright\.interaction\.config\.ts$|packages/themes/[^/]+/src/|apps/storybook/|\.github/workflows/ci\.yml$|package\.json$|pnpm-lock\.yaml$|\.github/actions/test-scope/)'
paths: '^(packages/core/src/gestures/|packages/core/src/motion/|packages/core/src/internal/touch|packages/core/src/utils/(press|touch|primaryClick|isApplePlatform|flatTree|inputStream|clickGuard|selectionLock|coarsePointer)|packages/core/src/privateAttributes/hapticSwitch\.stylex\.ts$|packages/core/src/hooks/(useMenuPress|menuPress|useLongPress|usePressFeedback|isRtlElement|usePager|__tests__/(usePager|pagerBundle))|packages/core/src/Carousel/(useCarouselPaging|__tests__/CarouselPaging)|internal/interaction-harness/|internal/a11y-spec/|playwright\.interaction\.config\.ts$|packages/themes/[^/]+/src/|apps/storybook/|\.github/workflows/ci\.yml$|package\.json$|pnpm-lock\.yaml$|\.github/actions/test-scope/)'

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This starts the lane for the pager files, but the run step below (lines 2187–2194) still passes only the gesture, motion and harness targets to Playwright, so usePager.interaction.browser.spec.ts and CarouselPaging.interaction.browser.spec.ts never run in WebKit. Add packages/core/src/hooks/__tests__/usePager.interaction there and to the test's targets list. For Carousel paging, either drop the Carousel/(…) alternative or add its spec and revise the lane comment at lines 2068–2071, which keeps Storybook-rendering specs with Chromium.

cixzhang and others added 2 commits November 1, 2026 23:35
…h the Chromium proofs

The pager spec bundles its own page with esbuild, so it runs in WebKit like
the gesture and motion specs. Carousel paging's spec renders its Storybook
story, which this lane leaves to the Chromium proofs, so its files no longer
start a WebKit run that would test nothing of theirs.

Co-authored-by: vjeux <197597+vjeux@users.noreply.github.com>
@cixzhang
cixzhang marked this pull request as draft November 2, 2026 07:37
@cixzhang cixzhang changed the title ci: the WebKit interaction lane also runs for the pager and Carousel paging files ci: the WebKit interaction lane runs the pager's proof for the pager files Nov 2, 2026
@cixzhang
cixzhang marked this pull request as ready for review November 2, 2026 07:37

@astracat-bot astracat-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changes requested: the run step now includes the pager's proof and Carousel paging stays with the Chromium proofs, but the scope misses two files the pager's page bundles. At the pager pull request's current head, usePager.ts imports packages/core/src/utils/sharedResizeObserver.ts (calling observeResize on every attach) and packages/core/src/hooks/useIsomorphicLayoutEffect.ts, so once it lands an edit to either would change what the WebKit proof runs without starting it, which the lane's own rule (ci.yml lines 2386–2388 and the bundle-reach note in ci-interaction-webkit.test.mjs) rules out. Please add both paths to the scope regex and the "runs for" cases, and add hooks/__tests__/pagerBundle.ts to the bundle-reach cases (skipped until the file exists, or in the pager pull request) so the next import it gains is caught.

[Automated review]

Comment thread .github/workflows/ci.yml Outdated
uses: ./.test-scope/.github/actions/test-scope
with:
paths: '^(packages/core/src/gestures/|packages/core/src/motion/|packages/core/src/internal/touch|packages/core/src/utils/(press|touch|primaryClick|isApplePlatform|flatTree|inputStream|clickGuard|selectionLock|coarsePointer)|packages/core/src/privateAttributes/hapticSwitch\.stylex\.ts$|packages/core/src/hooks/(useMenuPress|menuPress|useLongPress|usePressFeedback|isRtlElement)|internal/interaction-harness/|internal/a11y-spec/|playwright\.interaction\.config\.ts$|packages/themes/[^/]+/src/|apps/storybook/|\.github/workflows/ci\.yml$|package\.json$|pnpm-lock\.yaml$|\.github/actions/test-scope/)'
paths: '^(packages/core/src/gestures/|packages/core/src/motion/|packages/core/src/internal/touch|packages/core/src/utils/(press|touch|primaryClick|isApplePlatform|flatTree|inputStream|clickGuard|selectionLock|coarsePointer)|packages/core/src/privateAttributes/hapticSwitch\.stylex\.ts$|packages/core/src/hooks/(useMenuPress|menuPress|useLongPress|usePressFeedback|isRtlElement|usePager|__tests__/(usePager|pagerBundle))|internal/interaction-harness/|internal/a11y-spec/|playwright\.interaction\.config\.ts$|packages/themes/[^/]+/src/|apps/storybook/|\.github/workflows/ci\.yml$|package\.json$|pnpm-lock\.yaml$|\.github/actions/test-scope/)'

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

At #8146's current head the pager's page also bundles packages/core/src/utils/sharedResizeObserver.ts (usePager.ts calls observeResize on attach) and packages/core/src/hooks/useIsomorphicLayoutEffect.ts; neither matches this regex. Adding sharedResizeObserver to the utils/(…) group and useIsomorphicLayoutEffect to the hooks/(…) group keeps the lane's bundle-reach rule (lines 2386–2388).

…dles

usePager reads sharedResizeObserver and useIsomorphicLayoutEffect, so an edit
to either changes what the pager's WebKit proof runs. A bundle-reach case for
the pager's page runs once that page exists.

Co-authored-by: vjeux <197597+vjeux@users.noreply.github.com>
@cixzhang
cixzhang marked this pull request as draft November 2, 2026 07:59
@cixzhang
cixzhang marked this pull request as ready for review November 2, 2026 08:00

@astracat-bot astracat-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good: the WebKit lane's scope now includes sharedResizeObserver and useIsomorphicLayoutEffect, so every file the pager's page bundles at the pager pull requests' heads starts the WebKit proof, and the new routing cases fail against the previous scope. The skipped bundle-reach case will check the pager's imports once pagerBundle.ts lands, so no further change is needed here.

[Automated review]

@cixzhang
cixzhang merged commit f40893a into main Nov 2, 2026
97 checks passed
@github-actions
github-actions Bot deleted the ci/webkit-scope-pager branch November 3, 2026 06:05

This branch was successfully deployed

1 active deployment
Preview — 92e72ed5 Deployed Nov 2, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA Signed This label is managed by the Meta Open Source bot.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant