summaryrefslogtreecommitdiffstats
path: root/devtools/client/inspector/animation/test/browser_animation_infinity-duration_current-time-scrubber.js
blob: b4f82a950e236c45c3f1811e181137971064341f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/* Any copyright is dedicated to the Public Domain.
   http://creativecommons.org/publicdomain/zero/1.0/ */

"use strict";

// Test whether the scrubber was working for even the animation of infinity duration.

add_task(async function () {
  await addTab(URL_ROOT + "doc_infinity_duration.html");
  await removeAnimatedElementsExcept([".infinity-delay-iteration-start"]);
  const { animationInspector, panel } = await openAnimationInspector();

  info("Set initial state");
  clickOnCurrentTimeScrubberController(animationInspector, panel, 0);
  await waitUntilAnimationsPlayState(animationInspector, "paused");
  const initialCurrentTime =
    animationInspector.state.animations[0].state.currentTime;

  info("Check whether the animation currentTime was increased");
  clickOnCurrentTimeScrubberController(animationInspector, panel, 1);
  await waitUntil(
    () =>
      initialCurrentTime <
      animationInspector.state.animations[0].state.currentTime
  );
  ok(true, "currentTime should be increased");

  info("Check whether the progress bar was moved");
  const areaEl = panel.querySelector(".keyframes-progress-bar-area");
  const barEl = areaEl.querySelector(".keyframes-progress-bar");
  const controllerBounds = areaEl.getBoundingClientRect();
  const barBounds = barEl.getBoundingClientRect();
  const barX = barBounds.x + barBounds.width / 2 - controllerBounds.x;
  const expectedBarX = controllerBounds.width * 0.5;
  Assert.less(
    Math.abs(barX - expectedBarX),
    1,
    "Progress bar should indicate at progress of 0.5"
  );
});