Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

/* Any copyright is dedicated to the Public Domain.
"use strict";
// Test whether pausing/resuming the each animations correctly.
add_task(async function () {
await addTab(URL_ROOT + "doc_simple_animation.html");
await removeAnimatedElementsExcept([".animated", ".compositor-all"]);
const { animationInspector, inspector, panel } =
await openAnimationInspector();
const buttonEl = panel.querySelector(".pause-resume-button");
info(
"Check '.compositor-all' animation is still running " +
"after even pausing '.animated' animation"
);
await selectNode(".animated", inspector);
clickOnPauseResumeButton(animationInspector, panel);
await waitUntilAnimationsPlayState(animationInspector, "paused");
ok(buttonEl.classList.contains("paused"), "State of button should be paused");
await selectNode("body", inspector);
await assertStatus(
animationInspector.state.animations,
buttonEl,
["paused", "running"],
false
);
info(
"Check both animations are paused after clicking pause/resume " +
"while displaying both animations"
);
clickOnPauseResumeButton(animationInspector, panel);
await assertStatus(
animationInspector.state.animations,
buttonEl,
["paused", "paused"],
true
);
info(
"Check '.animated' animation is still paused " +
"after even resuming '.compositor-all' animation"
);
await selectNode(".compositor-all", inspector);
clickOnPauseResumeButton(animationInspector, panel);
await waitUntil(() =>
animationInspector.state.animations.some(
a => a.state.playState === "running"
)
);
ok(
!buttonEl.classList.contains("paused"),
"State of button should be running"
);
await selectNode("body", inspector);
await assertStatus(
animationInspector.state.animations,
buttonEl,
["paused", "running"],
false
);
});
async function assertStatus(
animations,
buttonEl,
expectedAnimationStates,
shouldButtonPaused
) {
await waitUntil(() => {
for (let i = 0; i < expectedAnimationStates.length; i++) {
const animation = animations[i];
const state = expectedAnimationStates[i];
if (animation.state.playState !== state) {
return false;
}
}
return true;
});
expectedAnimationStates.forEach((state, index) => {
is(
animations[index].state.playState,
state,
`Animation ${index} should be ${state}`
);
});
is(
buttonEl.classList.contains("paused"),
shouldButtonPaused,
"State of button is correct"
);
}