Bug 1781917 - Add logging to test_videocontrols_audio.html to get information about the frequent failures. r=mhowell

Adding more logging to test test_videocontrols_audio.html test to gather more information about test failure.

Differential Revision: https://phabricator.services.mozilla.com/D155424
This commit is contained in:
Bernard Igiri 2022-09-09 15:22:57 +00:00
parent 4d221eced0
commit 61cba40702
4 changed files with 31 additions and 40 deletions

View File

@ -65,23 +65,3 @@ function once(target, name, cb) {
}
return p;
}
class EventLogger {
constructor(expectedNumberOfEvents = Number.MAX_VALUE) {
this._log = [];
this._eventsPromise = new Promise(r => (this._countReached = r));
this._expectedNumberOfEvents = expectedNumberOfEvents;
}
handleEvent(event) {
this._log.push(event);
if (this._log.length >= this._expectedNumberOfEvents) {
this._countReached(this._log);
}
}
get log() {
return this._log;
}
waitForExpectedEvents() {
return this._eventsPromise;
}
}

View File

@ -37,9 +37,6 @@ skip-if = (toolkit == 'android') || (os == 'linux') #Bug 1366957
[test_videocontrols_iframe_fullscreen.html]
[test_videocontrols_size.html]
[test_videocontrols_audio.html]
skip-if =
win10_2004 && !debug # Bug 1781917
apple_catalina && !debug # Bug 1781917
[test_videocontrols_audio_direction.html]
skip-if = xorigin # Rendering of reftest videocontrols_direction-2a.html should not be different to the reference, fails/passes inconsistently
[test_videocontrols_jsdisabled.html]

View File

@ -107,6 +107,7 @@ async function waitForEvent(...eventTypes) {
}
add_task(async function setup() {
SimpleTest.requestCompleteLog();
await SpecialPowers.pushPrefEnv({
"set": [
["media.cache_size", 40000],
@ -446,17 +447,15 @@ add_task(async function ensure_fullscreen_button() {
});
add_task(async function ensure_doubleclick_triggers_fullscreen() {
const logger = new EventLogger(1);
document.addEventListener("mozfullscreenchange", logger);
const fullscreenPromise = new Promise(resolve => {
document.addEventListener("mozfullscreenchange", resolve, { once: true });
});
const { x, y } = video.getBoundingClientRect();
info("attempt double click");
info("Simulate double click on media player.");
synthesizeMouse(video, x, y, { clickCount: 2 });
const events = await logger.waitForExpectedEvents();
is(
events[0].type,
"mozfullscreenchange",
"Double clicking should trigger fullscreen event"
);
info("Waiting for fullscreen event...");
await fullscreenPromise;
ok(true, "Double clicking should trigger fullscreen event");
});
</script>

View File

@ -38,21 +38,36 @@
}
function loadedmetadata(event) {
SimpleTest.requestCompleteLog();
SimpleTest.executeSoon(async function test_fullscreen_unavailable() {
const { x, y } = video.getBoundingClientRect();
const controlBar = findElementByAttribute(video, "class", "controlBar");
SimpleTest.requestFlakyTimeout("Waiting to ensure that fullscreen event does not fire");
const endedPromise = new Promise(resolve => {
video.addEventListener("ended", () => {
info('Video ended event fired!');
resolve();
}, { once: true });
setTimeout( () => {
info('Video ran out of time before ended event fired!');
resolve();
}, video.duration * 1000);
});
let noFullscreenEvent = true;
is(controlBar.getAttribute("fullscreen-unavailable"), "true", "Fullscreen button is hidden");
const eventLogger = new EventLogger(2);
video.addEventListener("play", eventLogger);
video.addEventListener("pause", eventLogger);
document.addEventListener("mozfullscreenchange", eventLogger);
document.addEventListener("mozfullscreenchange", () => {
noFullscreenEvent = false;
}, { once: true });
info("Simulate double click on media player.");
synthesizeMouse(video, x, y, { clickCount: 2 });
const events = await eventLogger.waitForExpectedEvents();
info("Waiting for video to end...");
await endedPromise;
// By this point, if the double click was going to trigger fullscreen then
// it should have happened by now.
ok(
!events.find(e => e.type === "mozfullscreenchange"),
noFullscreenEvent,
"Double clicking should not trigger fullscreen event"
);
is(events.length, 2, "Two events should have been fired.");
SimpleTest.finish();
});
}
@ -60,7 +75,7 @@
SpecialPowers.pushPrefEnv({"set": [["media.cache_size", 40000]]}, startTest);
function startTest() {
// Kick off test once audio has loaded.
video.addEventListener("loadedmetadata", loadedmetadata);
video.addEventListener("loadedmetadata", loadedmetadata, { once: true });
video.src = "audio.ogg";
}