mirror of
https://github.com/ManchildProductions/UXP-Fixed.git
synced 2026-06-18 10:48:46 +00:00
60 lines
2.3 KiB
JavaScript
60 lines
2.3 KiB
JavaScript
/* vim: set ts=2 et sw=2 tw=80: */
|
|
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
"use strict";
|
|
|
|
requestLongerTimeout(2);
|
|
|
|
// Check that the timeline shows correct time graduations in the header.
|
|
|
|
const {findOptimalTimeInterval, TimeScale} = require("devtools/client/animationinspector/utils");
|
|
|
|
// Should be kept in sync with TIME_GRADUATION_MIN_SPACING in
|
|
// animation-timeline.js
|
|
const TIME_GRADUATION_MIN_SPACING = 40;
|
|
|
|
add_task(function* () {
|
|
yield addTab(URL_ROOT + "doc_simple_animation.html");
|
|
|
|
// System scrollbar is enabled by default on our testing envionment and it
|
|
// would shrink width of inspector and affect number of time-ticks causing
|
|
// unexpected results. So, we set it wider to avoid this kind of edge case.
|
|
yield pushPref("devtools.toolsidebar-width.inspector", 350);
|
|
|
|
let {panel} = yield openAnimationInspector();
|
|
|
|
let timeline = panel.animationsTimelineComponent;
|
|
let headerEl = timeline.timeHeaderEl;
|
|
|
|
info("Find out how many time graduations should there be");
|
|
let width = headerEl.offsetWidth;
|
|
|
|
let animationDuration = TimeScale.maxEndTime - TimeScale.minStartTime;
|
|
let minTimeInterval = TIME_GRADUATION_MIN_SPACING * animationDuration / width;
|
|
|
|
// Note that findOptimalTimeInterval is tested separately in xpcshell test
|
|
// test_findOptimalTimeInterval.js, so we assume that it works here.
|
|
let interval = findOptimalTimeInterval(minTimeInterval);
|
|
let nb = Math.ceil(animationDuration / interval);
|
|
|
|
is(headerEl.querySelectorAll(".header-item").length, nb,
|
|
"The expected number of time ticks were found");
|
|
|
|
info("Make sure graduations are evenly distributed and show the right times");
|
|
[...headerEl.querySelectorAll(".time-tick")].forEach((tick, i) => {
|
|
let left = parseFloat(tick.style.left);
|
|
let expectedPos = i * interval * 100 / animationDuration;
|
|
is(Math.round(left), Math.round(expectedPos),
|
|
`Graduation ${i} is positioned correctly`);
|
|
|
|
// Note that the distancetoRelativeTime and formatTime functions are tested
|
|
// separately in xpcshell test test_timeScale.js, so we assume that they
|
|
// work here.
|
|
let formattedTime = TimeScale.formatTime(
|
|
TimeScale.distanceToRelativeTime(expectedPos, width));
|
|
is(tick.textContent, formattedTime,
|
|
`Graduation ${i} has the right text content`);
|
|
});
|
|
});
|