commit d77ae193bcd87a2cb8cbce6bcf84ea4b504d5670 parent daae333f0f7d387f6bc69a3605812cae13d6d845 Author: Philip Jägenstedt <foolip@chromium.org> Date: Sat, 22 Nov 2025 21:11:03 +0000 Bug 2001304 [wpt PR 56135] - Update media element pseudo-class tests to fail fast, a=testonly Automatic update from web-platform-tests Update media element pseudo-class tests to fail fast Assert that the pseudo-class is supported at the start of each promise test, and also use getVideoURI() to make the tests work where MP4 isn't supported. Also fix some plural/singular issues in subtest names. Bug: 40246121 Change-Id: Ie7573c9e41aefa1b28df7028047fb0dba1b4997b Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7170105 Reviewed-by: Dale Curtis <dalecurtis@chromium.org> Reviewed-by: Rune Lillesveen <futhark@chromium.org> Commit-Queue: Philip Jägenstedt <foolip@chromium.org> Auto-Submit: Philip Jägenstedt <foolip@chromium.org> Cr-Commit-Position: refs/heads/main@{#1547678} -- wpt-commits: e5bad3961d89c3fb965927fa420349d6c0c10af5 wpt-pr: 56135 Diffstat:
5 files changed, 30 insertions(+), 14 deletions(-)
diff --git a/testing/web-platform/tests/css/selectors/invalidation/media-loading-pseudo-classes-in-has.html b/testing/web-platform/tests/css/selectors/invalidation/media-loading-pseudo-classes-in-has.html @@ -20,6 +20,7 @@ <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> +<script src="/common/media.js"></script> <script> const BLUE = "rgb(0, 0, 255)"; const GREEN = "rgb(0, 128, 0)"; @@ -39,11 +40,12 @@ function assert_stalled_state(stalled) { } promise_test(async (t) => { + assert_implements(CSS.supports("selector(:stalled)"), ":stalled is not supported"); const video = document.querySelector("video"); assert_stalled_state(false); await new Promise((r) => { video.addEventListener("stalled", r, { once: true }); - video.src = `/media/counting.mp4?pipe=trickle(100:d1:r2)&random=${Math.random()}`; + video.src = `${getVideoURI("/media/counting")}?pipe=trickle(100:d1:r2)&random=${Math.random()}`; }); assert_stalled_state(false); const promise = video.play(); @@ -58,11 +60,12 @@ promise_test(async (t) => { }, "Test :has(:stalled) invalidation"); promise_test(async (t) => { + assert_implements(CSS.supports("selector(:buffering)"), ":buffering is not supported"); const video = document.querySelector("video"); assert_buffering_state(false); await new Promise((r) => { video.addEventListener("stalled", r, { once: true }); - video.src = `/media/counting.mp4?pipe=trickle(100:d1:r2)&random=${Math.random()}`; + video.src = `${getVideoURI("/media/counting")}?pipe=trickle(100:d1:r2)&random=${Math.random()}`; }); video.currentTime = 10; assert_buffering_state(false); diff --git a/testing/web-platform/tests/css/selectors/invalidation/media-pseudo-classes-in-has.html b/testing/web-platform/tests/css/selectors/invalidation/media-pseudo-classes-in-has.html @@ -31,6 +31,7 @@ </div> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> + <script src="/common/media.js"></script> <script> const GREEN = "rgb(0, 128, 0)"; const ORANGE = "rgb(255, 165, 0)"; @@ -52,6 +53,7 @@ } promise_test(async (t) => { + assert_implements(CSS.supports("selector(:playing)"), ":playing is not supported"); t.add_cleanup(() => { video.muted = false; video.pause(); @@ -63,7 +65,7 @@ assert_matches_seeking(false); await new Promise((r) => { video.addEventListener("canplay", r, { once: true }); - video.src = "/media/counting.mp4"; + video.src = getVideoURI("/media/counting"); }); video.muted = true; // allows us to play the video assert_matches_muted(true); @@ -72,9 +74,10 @@ video.play(); }); assert_matches_playing(true); - }, "Test :playing pseudo-classes"); + }, "Test :playing pseudo-class"); promise_test(async (t) => { + assert_implements(CSS.supports("selector(:seeking)"), ":seeking is not supported"); t.add_cleanup(() => { video.removeAttribute("src"); }); @@ -84,7 +87,7 @@ assert_matches_seeking(false); await new Promise((r) => { video.addEventListener("canplay", r, { once: true }); - video.src = "/media/counting.mp4"; + video.src = getVideoURI("/media/counting"); }); assert_matches_seeking(false); @@ -96,13 +99,14 @@ }, "Test :seeking pseudo-class"); promise_test(async (t) => { + assert_implements(CSS.supports("selector(:muted)"), ":muted is not supported"); t.add_cleanup(() => { video.removeAttribute("src"); }); const video = document.querySelector("video"); await new Promise((r) => { video.addEventListener("canplay", r, { once: true }); - video.src = "/media/counting.mp4"; + video.src = getVideoURI("/media/counting"); }); assert_matches_muted(false); video.muted = true; diff --git a/testing/web-platform/tests/css/selectors/media/media-loading-state.html b/testing/web-platform/tests/css/selectors/media/media-loading-state.html @@ -7,6 +7,7 @@ /> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> +<script src="/common/media.js"></script> <body> <video width="300" height="300" muted loop controls></video> <script type="module"> @@ -21,10 +22,11 @@ }, "Test :pseudo-class syntax is supported without throwing a SyntaxError"); promise_test(async (t) => { + assert_implements(CSS.supports("selector(:stalled)"), ":stalled is not supported"); const video = document.querySelector("video"); await new Promise((r) => { video.addEventListener("stalled", r, { once: true }); - video.src = `/media/counting.mp4?pipe=trickle(100:d1:r2)&random=${Math.random()}`; + video.src = `${getVideoURI("/media/counting")}?pipe=trickle(100:d1:r2)&random=${Math.random()}`; }); const promise = video.play(); assert_equals( @@ -40,10 +42,11 @@ }, "Test :stalled pseudo-class"); promise_test(async (t) => { + assert_implements(CSS.supports("selector(:buffering)"), ":buffering is not supported"); const video = document.querySelector("video"); await new Promise((r) => { video.addEventListener("stalled", r, { once: true }); - video.src = `/media/counting.mp4?pipe=trickle(100:d1:r2)&random=${Math.random()}`; + video.src = `${getVideoURI("/media/counting")}?pipe=trickle(100:d1:r2)&random=${Math.random()}`; }); video.currentTime = 10; const promise = video.play(); diff --git a/testing/web-platform/tests/css/selectors/media/media-playback-state.html b/testing/web-platform/tests/css/selectors/media/media-playback-state.html @@ -8,6 +8,7 @@ /> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> +<script src="/common/media.js"></script> <body> <video width="300" height="300" muted loop></video> <script> @@ -22,10 +23,11 @@ }, "Test :pseudo-class syntax is supported without throwing a SyntaxError"); promise_test(async (t) => { + assert_implements(CSS.supports("selector(:playing)"), ":playing is not supported"); const video = document.querySelector("video"); await new Promise((r) => { video.addEventListener("canplay", r, { once: true }); - video.src = "/media/counting.mp4"; + video.src = getVideoURI("/media/counting"); }); video.muted = true; // allows us to play the video assert_true(video.muted, "video is muted"); @@ -39,26 +41,28 @@ assert_equals(document.querySelector("video:not(:playing)"), null); assert_equals(document.querySelector("video:paused"), null); assert_equals(document.querySelector("video:not(:paused)"), video); - }, "Test :playing pseudo-classes"); + }, "Test :playing pseudo-class"); promise_test(async (t) => { + assert_implements(CSS.supports("selector(:paused)"), ":paused is not supported"); const video = document.querySelector("video"); await new Promise((r) => { video.addEventListener("canplay", r, { once: true }); - video.src = "/media/counting.mp4"; + video.src = getVideoURI("/media/counting"); }); assert_equals(video.paused, true); assert_equals(document.querySelector("video:playing"), null); assert_equals(document.querySelector("video:not(:playing)"), video); assert_equals(document.querySelector("video:paused"), video); assert_equals(document.querySelector("video:not(:paused)"), null); - }, "Test :paused pseudo-classes"); + }, "Test :paused pseudo-class"); promise_test(async (t) => { + assert_implements(CSS.supports("selector(:seeking)"), ":seeking is not supported"); const video = document.querySelector("video"); await new Promise((r) => { video.addEventListener("canplay", r, { once: true }); - video.src = "/media/counting.mp4"; + video.src = getVideoURI("/media/counting"); }); assert_equals(document.querySelector("video:seeking"), null); assert_equals(document.querySelector("video:not(:seeking)"), video); diff --git a/testing/web-platform/tests/css/selectors/media/sound-state.html b/testing/web-platform/tests/css/selectors/media/sound-state.html @@ -6,6 +6,7 @@ /> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> +<script src="/common/media.js"></script> <body> <video width="300" height="300" loop></video> <script type="module"> @@ -23,6 +24,7 @@ }, "Test :pseudo-class syntax is supported without throwing a SyntaxError"); promise_test(async (t) => { + assert_implements(CSS.supports("selector(:muted)"), ":muted is not supported"); assert_equals( document.querySelector("video:muted"), null, @@ -31,7 +33,7 @@ const video = document.querySelector("video"); await new Promise((r) => { video.addEventListener("canplay", r, { once: true }); - video.src = "/media/counting.mp4"; + video.src = getVideoURI("/media/counting"); }); video.muted = false; assert_false(video.muted, "video is unmuted");