Bug 1456857 - Part 3: Add a test for pausing/playing animations. r?pbro
MozReview-Commit-ID: I2pLacSKb6P
--- a/devtools/client/inspector/animation/test/browser.ini
+++ b/devtools/client/inspector/animation/test/browser.ini
@@ -38,16 +38,17 @@ support-files =
[browser_animation_keyframes-graph_computed-value-path.js]
[browser_animation_keyframes-graph_computed-value-path_easing-hint.js]
[browser_animation_keyframes-graph_keyframe-marker.js]
[browser_animation_keyframes-progress-bar.js]
[browser_animation_logic_auto-stop.js]
[browser_animation_logic_avoid-updating-during-hiding.js]
[browser_animation_logic_mutations.js]
[browser_animation_pause-resume-button.js]
+[browser_animation_pause-resume-button_respectively.js]
[browser_animation_pause-resume-button_spacebar.js]
[browser_animation_playback-rate-selector.js]
[browser_animation_pseudo-element.js]
[browser_animation_rewind-button.js]
[browser_animation_summary-graph_animation-name.js]
[browser_animation_summary-graph_compositor.js]
[browser_animation_summary-graph_computed-timing-path.js]
[browser_animation_summary-graph_computed-timing-path_different-timescale.js]
new file mode 100644
--- /dev/null
+++ b/devtools/client/inspector/animation/test/browser_animation_pause-resume-button_respectively.js
@@ -0,0 +1,47 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"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 selectNodeAndWaitForAnimations(".animated", inspector);
+ await clickOnPauseResumeButton(animationInspector, panel);
+ ok(buttonEl.classList.contains("paused"), "State of button should be paused");
+ await selectNodeAndWaitForAnimations("body", inspector);
+ assertStatus(animationInspector.state.animations, buttonEl,
+ ["paused", "running"], false);
+
+ info("Check both animations are paused after clicking pause/resume " +
+ "while displaying both animations");
+ await clickOnPauseResumeButton(animationInspector, panel);
+ assertStatus(animationInspector.state.animations, buttonEl,
+ ["paused", "paused"], true);
+
+ info("Check '.animated' animation is still paused " +
+ "after even resuming '.compositor-all' animation");
+ await selectNodeAndWaitForAnimations(".compositor-all", inspector);
+ await clickOnPauseResumeButton(animationInspector, panel);
+ ok(!buttonEl.classList.contains("paused"), "State of button should be running");
+ await selectNodeAndWaitForAnimations("body", inspector);
+ assertStatus(animationInspector.state.animations, buttonEl,
+ ["paused", "running"], false);
+});
+
+function assertStatus(animations, buttonEl,
+ expectedAnimationStates, shouldButtonPaused) {
+ 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");
+}