Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
- This WPT test may be referenced by the following Test IDs:
- /css/css-properties-values-api/animation/custom-property-transition-length.html - WPT Dashboard Interop Dashboard
<!DOCTYPE html>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="../resources/utils.js"></script>
<div id="target"></div>
<script>
transition_test({
syntax: "<length>",
from: "100px",
to: "200px",
expected: "150px"
}, 'A custom property of type <length> can yield a CSS Transition');
// This tests if there is a transition to a random floating-point number.
promise_test(async () => {
const customProperty = generate_name();
CSS.registerProperty({
name: customProperty,
syntax: "<length>",
inherits: false,
initialValue: "100px"
});
assert_equals(
getComputedStyle(target).getPropertyValue(customProperty),
"100px",
"Element has the expected initial value"
);
const transitionEventPromise = new Promise(resolve => {
let listener = event => {
target.removeEventListener("transitionrun", listener);
assert_equals(
event.propertyName,
customProperty,
"TransitionEvent has the expected property name"
);
resolve();
};
target.addEventListener("transitionrun", listener);
});
target.style.transition = `${customProperty} 1s -500ms linear`;
target.style.setProperty(customProperty, "112.24859px");
const animations = target.getAnimations();
assert_equals(animations.length, 1, "A single animation is running");
const transition = animations[0];
assert_class_string(
transition,
"CSSTransition",
"A CSSTransition is running"
);
assert_equals(transition.playState, "running", "The transition is running");
await transitionEventPromise;
}, 'The to value of a custom property to a random floating-point number can ' +
'yield a CSS Transition');
</script>