summaryrefslogtreecommitdiffstats
path: root/devtools/client/inspector/animation/test/browser_animation_logic_auto-stop.js
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--devtools/client/inspector/animation/test/browser_animation_logic_auto-stop.js94
1 files changed, 94 insertions, 0 deletions
diff --git a/devtools/client/inspector/animation/test/browser_animation_logic_auto-stop.js b/devtools/client/inspector/animation/test/browser_animation_logic_auto-stop.js
new file mode 100644
index 0000000000..fdf1867ffa
--- /dev/null
+++ b/devtools/client/inspector/animation/test/browser_animation_logic_auto-stop.js
@@ -0,0 +1,94 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+// Animation inspector makes the current time to stop
+// after end of animation duration except iterations infinity.
+// Test followings:
+// * state of animations and UI components after end of animation duration
+// * state of animations and UI components after end of animation duration
+// but iteration count is infinity
+
+add_task(async function () {
+ await addTab(URL_ROOT + "doc_simple_animation.html");
+ await removeAnimatedElementsExcept([".compositor-all", ".long"]);
+ const { animationInspector, inspector, panel } =
+ await openAnimationInspector();
+
+ info("Checking state after end of animation duration");
+ await selectNode(".long", inspector);
+ await waitUntil(() => panel.querySelectorAll(".animation-item").length === 1);
+ const pixelsData = getDurationAndRate(animationInspector, panel, 5);
+ clickOnCurrentTimeScrubberController(
+ animationInspector,
+ panel,
+ 1 - pixelsData.rate
+ );
+ await waitUntilAnimationsPlayState(animationInspector, "paused");
+ clickOnPauseResumeButton(animationInspector, panel);
+ await assertStates(animationInspector, panel, false);
+
+ info(
+ "Checking state after end of animation duration and infinity iterations"
+ );
+ clickOnPauseResumeButton(animationInspector, panel);
+ await waitUntilAnimationsPlayState(animationInspector, "paused");
+ await selectNode(".compositor-all", inspector);
+ await waitUntil(() => panel.querySelectorAll(".animation-item").length === 1);
+ clickOnCurrentTimeScrubberController(animationInspector, panel, 1);
+ await waitUntilAnimationsPlayState(animationInspector, "paused");
+ clickOnPauseResumeButton(animationInspector, panel);
+ await assertStates(animationInspector, panel, true);
+});
+
+async function assertStates(animationInspector, panel, shouldRunning) {
+ const buttonEl = panel.querySelector(".pause-resume-button");
+ const labelEl = panel.querySelector(".current-time-label");
+ const scrubberEl = panel.querySelector(".current-time-scrubber");
+
+ const previousLabelContent = labelEl.textContent;
+ const previousScrubberX = scrubberEl.getBoundingClientRect().x;
+
+ await waitUntilAnimationsPlayState(
+ animationInspector,
+ shouldRunning ? "running" : "paused"
+ );
+
+ const currentLabelContent = labelEl.textContent;
+ const currentScrubberX = scrubberEl.getBoundingClientRect().x;
+
+ if (shouldRunning) {
+ isnot(
+ previousLabelContent,
+ currentLabelContent,
+ "Current time label content should change"
+ );
+ isnot(
+ previousScrubberX,
+ currentScrubberX,
+ "Current time scrubber position should change"
+ );
+ ok(
+ !buttonEl.classList.contains("paused"),
+ "State of button should be running"
+ );
+ assertAnimationsRunning(animationInspector);
+ } else {
+ is(
+ previousLabelContent,
+ currentLabelContent,
+ "Current time label Content should not change"
+ );
+ is(
+ previousScrubberX,
+ currentScrubberX,
+ "Current time scrubber position should not change"
+ );
+ ok(
+ buttonEl.classList.contains("paused"),
+ "State of button should be paused"
+ );
+ assertAnimationsPausing(animationInspector);
+ }
+}