Bug 1456857 - Part 3: Add a test for pausing/playing animations. r?pbro draft
authorDaisuke Akatsuka <dakatsuka@mozilla.com>
Tue, 22 May 2018 17:09:10 +0900
changeset 797971 22e00d175c4ca42348900a89baeb938c042d1295
parent 797970 c9e335cddbf92410efbed3833ba7302521af9677
child 797992 a34f9c62f891d975c0be920a8015d926ffb5c5c6
child 798075 3c50b41158114952ab5eada50412648e49544179
push id110652
push userbmo:dakatsuka@mozilla.com
push dateTue, 22 May 2018 08:13:26 +0000
reviewerspbro
bugs1456857
milestone62.0a1
Bug 1456857 - Part 3: Add a test for pausing/playing animations. r?pbro MozReview-Commit-ID: I2pLacSKb6P
devtools/client/inspector/animation/test/browser.ini
devtools/client/inspector/animation/test/browser_animation_pause-resume-button_respectively.js
--- 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");
+}