Files
firefox/testing/web-platform/tests/css/css-paint-api/one-custom-property-animation.https.html
Olga Gerchikov 84feb7c4d0 Bug 1917058 [wpt PR 47989] - Speculative attempt to unflake one-custom-property-animation.https.html, a=testonly
Automatic update from web-platform-tests
Speculative attempt to unflake one-custom-property-animation.https.html

- Deleted custom-property-animation-on-main-thread.https.html which is
  identical to one-custom-property-animation.https.html.
- Restructured one-custom-property-animation.https.html, added
  logging.

Bug: 40215935
Change-Id: I25cca07c92d018a68c65ebae5213e9fdc75cfc1e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5827942
Commit-Queue: Olga Gerchikov <[email protected]>
Reviewed-by: Kevin Ellis <[email protected]>
Cr-Commit-Position: refs/heads/main@{#1351530}

--

wpt-commits: a7a7cde479f6aec6c7a401e7fb78b7d4cc9a622f
wpt-pr: 47989
2024-09-10 12:30:32 +00:00

99 lines
2.8 KiB
HTML

<!DOCTYPE html>
<html class="reftest-wait">
<link rel="help" href="https://drafts.css-houdini.org/css-paint-api/">
<link rel="match" href="one-custom-property-animation-ref.html">
<style>
.container {
width: 100px;
height: 100px;
}
@keyframes expand {
0% { --foo: 0; }
100% { --foo: 100; }
}
.animate {
background-image: paint(geometry);
/* Use a long animation that start at 50% progress where the slope of the
selected timing function is zero. By setting up the animation in this way,
we accommodate lengthy delays in running the test without a potential drift
in the animated property value. This is important for avoiding flakes,
especially on debug builds. The screenshots are taken as soon as the
animation is ready, thus the long animation duration has no bearing on
the actual duration of the test. */
animation: expand 1000000s cubic-bezier(0,1,1,0) -500000s;
}
#canvas-geometry {
background-color: blue;
}
</style>
<script src="/common/reftest-wait.js"></script>
<script src="/web-animations/testcommon.js"></script>
<body>
<div id="canvas-geometry" class="container"></div>
<div id="log"></div>
<script id="code" type="text/worklet">
registerPaint('geometry', class {
static get inputProperties() { return ['--foo']; }
paint(ctx, geom, properties) {
let fooValue = parseFloat(properties.get('--foo').toString());
ctx.fillStyle = 'green';
ctx.fillRect(0, 0, fooValue, fooValue);
}
});
</script>
<script>
CSS.registerProperty({
name: '--foo',
syntax: '<number>',
initialValue: '0',
inherits: false
});
function logAssert(condition, message) {
if(!condition) {
document.getElementById("log").innerHTML = "<p>" + message + "</p>";
}
}
window.onload = async() => {
await waitForCompositorReady();
const blob = new Blob([document.getElementById('code').textContent],
{type: 'text/javascript'});
// Load the module and verify it was loaded.
try {
await CSS.paintWorklet.addModule(URL.createObjectURL(blob));
} catch (error) {
logAssert(false, 'The module was not loaded: ' + error.message)
}
// Check that custom property is registered.
const style = getComputedStyle(document.documentElement);
logAssert(style.getPropertyValue('--foo'),
'Custom property is not registered');
// Trigger CSS-animation.
document.getElementById('canvas-geometry').classList.add('animate');
const animations = document.getAnimations();
// Verify we have an animation.
logAssert(animations.length == 1, 'Animation was not added');
// Force failure as a result of image mismatch instead of Timeout if
// animation is not created
if(animations.length == 1){
await animations[0].ready;
}
await waitForAnimationFrames(3);
takeScreenshot();
};
</script>
</body>
</html>