fix(test): restore the skin parity suite and speed up ci - #2717
Merged
Conversation
The suite has timed out on every run since the composable poster and the controls-before-metadata changes landed. The Tailwind React poster carries no semantic class, so locate it through the data-loaded attribute only the poster exposes. Wait for the seek slider to be enabled before comparing panels so both are past the pre-metadata phase, restrict the thumbnail spinner locator to the icon now that the thumbnail slots a light-DOM child, and make the captions wait tolerant of cues that land after the seek.
The local registry pins @videojs/* to the workspace version, which the Shadcn CLI then installs from npm. On a release branch that version is not published yet, so the sandbox setup, and every E2E job behind it, failed. Serve the items without those pins; the fixture already lists the packages, so the CLI copies the files without installing anything. The fixture's package manager pin also moves to pnpm 12.
The sandbox manifest and the registry consumer fixtures still declared pnpm 11, which made pnpm fail under corepack inside apps/sandbox and made pnpm 12 download pnpm 11 for the consumer installs.
…imeout Split the video skin parity preset, which carries twice the cases of the others, and WebKit on main, which took more than twice Chromium's wall time, into two shards each. Give every suite a Playwright global timeout below the job timeout: a job the runner cancels reports as cancelled, uploads no report, and never triggers failure triage, which is how the skin parity failures went unnoticed on main.
Every job waited on the warm-up job before installing from the same pnpm store cache, adding its full wall time to each run. Let the jobs install in parallel and cache pnpm for the SPF job as well.
✅ Deploy Preview for vjs-registry ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
✅ Deploy Preview for vjs10-site ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
@videojs/cdn
@videojs/core
@videojs/element
@videojs/html
@videojs/media
@videojs/react
@videojs/spf
@videojs/store
@videojs/utils
@videojs/cloudflare-video
@videojs/dash-video
@videojs/hlsjs-video
@videojs/mux-audio
@videojs/mux-video
@videojs/native-hls-video
@videojs/shaka-video
@videojs/spotify-audio
@videojs/tiktok-video
@videojs/twitch-video
@videojs/vimeo-video
@videojs/wistia-video
@videojs/youtube-video
@videojs/google-cast
@videojs/mux-data
commit: |
Contributor
📦 Bundle Size Report🎨 @videojs/html — no changesPresets (7)
Media (18)
Players (5)
Skins (29)
UI Components (62)
⚛️ @videojs/react — no changesPresets (7)
Media (22)
Extensions (2)
Players (5)
Skins (18)
UI Components (39)
🧩 @videojs/core — no changesEntries (76)
🏷️ @videojs/element — no changesEntries (2)
📦 @videojs/store — no changesEntries (3)
🔧 @videojs/utils — no changesEntries (13)
📦 @videojs/cdn — no changes📦 @videojs/cloudflare-video — no changes📦 @videojs/dash-video — no changes📦 @videojs/google-cast — no changes📦 @videojs/hlsjs-video — no changes📦 @videojs/media — no changesEntries (3)
📦 @videojs/mux — no changes📦 @videojs/mux-audio — no changesEntries (2)
📦 @videojs/mux-data — no changes📦 @videojs/mux-video — no changesEntries (2)
📦 @videojs/native-hls-video — no changes📦 @videojs/shaka-video — no changes📦 @videojs/spf — no changesEntries (7)
📦 @videojs/spotify-audio — no changes📦 @videojs/tiktok-video — no changes📦 @videojs/twitch-video — no changes📦 @videojs/vimeo-video — no changes📦 @videojs/wistia-video — no changesEntries (2)
📦 @videojs/youtube-video — no changesℹ️ How to interpretEach entry is independently bundled, minified, and brotli-compressed. Initial size includes its static import graph; lazy dynamic chunks are reported separately. Entries are not additive because their dependency graphs overlap. Preset rows represent realistic combined bundles. Changes of 300 B or less across initial, lazy, and total size are collapsed, not discarded. Run |
mihar-22
approved these changes
Sep 10, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Every E2E run on
mainsince Sep 9 has endedcancelled:Skin parity (video)hit its 15-minute job timeout on each run because ~80% of its cases broke when the composable poster (#2563) and controls-before-metadata (#2525) changes landed. A timed-out job reports ascancelled, so no report uploaded andE2E Failure Triagenever fired. This fixes the suite, makes such runs fail visibly instead, fixes the sandbox setup that fails on every release branch, and trims fixed overhead from CI.Changes
data-loaded, which the Tailwind React output exposes where no semantic class exists; waits for the seek slider to be enabled so both panels are past the pre-metadata phase; restricts the thumbnail spinner locator to the icon now that the thumbnail slots a light-DOM child; tolerates caption cues that land after the seek.globalTimeoutunder the 15-minute job timeout, so reports upload and triage runs.main(11–13 min vs ~4.5 for Chromium) each run as two shards.@videojs/*to the unpublished workspace version, so the CLI copies files without apnpm addfrom npm (also faster for every run).installwarm-up job is gone; every job installs from the pnpm store cache in parallel, which removes ~40s from a ~2-minute workflow. The SPF job now caches pnpm too.pnpmunder corepack insideapps/sandboxand made pnpm 12 download pnpm 11 for the registry consumer installs.Why the skin parity suite broke
.media-poster, but the Tailwind transform only emits a semantic class for rules without utilities, so every React case failed atpreparePanel(57 tests).preparePanelnever waited for that phase, so whichever panel got metadata first won: 7px anchor shifts,display: nonevsgrid, nodata-dragging, no active cues, and marginal screenshot mismatches.<slot>to the thumbnail, so the:last-childspinner locator matched two elements.Testing
VJSC_SKIN_PRESET=video playwright test --config suites/skin-parity/playwright.config.ts --workers=2 --retries=0: 104 passed (was 82 failed);VJSC_SKIN_SHARD=1/2runs 52.tsx apps/sandbox/scripts/sync-source-owned-skins.tsinstalls 24 skins in 15s with no package installs.tsgoforapps/e2e, andpnpm check:workspacepass. The workflow changes are validated by this PR's own runs;test:e2eforces the full browser matrix here.Note
Low Risk
Changes are limited to CI workflows, E2E harnesses, and sandbox skin sync; no production player or API behavior is modified.
Overview
Restores failing skin parity E2E after poster/controls/metadata UI changes by updating locators (
[data-loaded]for Tailwind posters), waiting for an enabled seek slider before comparisons, fixing the thumbnail spinner selector, and making caption-cue polling track the showing subtitles/captions track.Makes long E2E runs fail visibly with a 12-minute Playwright
globalTimeout(under the 15-minute job limit) so jobs end as failures with reports/triage instead of runnercancelled. Shards WebKit onmainand the heavyvideoskin-parity preset across two matrix jobs, wired through--shardandVJSC_SKIN_SHARD.CI installs in parallel by dropping the serial
installwarm-up; jobs use cached pnpm installs (--prefer-offline, SPF getscache: pnpm). Sandbox/registry setup strips@videojs/*version pins from the local shadcn registry so release branches can sync skins without npm installs; pnpm 12.3.4 is aligned in sandbox and registry consumer fixtures.Reviewed by Cursor Bugbot for commit 2d5046b. Bugbot is set up for automated code reviews on this repo. Configure here.