Files
sousa-gecko/testing/web-platform/tests/css/css-view-transitions/old-content-is-inline.html
T
Daniel Holbert 681f25341f Bug 2012579 [wpt PR 57340] - Use Ahem font in WPT old-content-is-inline.html, a=testonly
Automatic update from web-platform-tests
Use Ahem font in WPT old-content-is-inline.html (#57340)

This testcase is only valid (i.e. it only actually matches its reference case)
if the text doesn't linewrap.  So it needs to specify a specific font in order
to have some guarantees that linewrapping won't happen.

Hence, this patch switches to the Ahem font, and reduces the length of the
strings so that they're short enough to fit on a single line in that font.

This patch also removes the styling that was making the text transparent, and
makes the text blue instead; with the Ahem font, we're not at as much risk of
fuzzy failures from subtle antialiasing differences.

Fixes https://github.com/web-platform-tests/interop/issues/1250
--

wpt-commits: fadfaa1a530fbbc35dddef0d2651f89a8a24a23d
wpt-pr: 57340
2026-01-29 12:17:29 +00:00

152 lines
3.6 KiB
HTML

<!DOCTYPE html>
<html class=reftest-wait>
<title>View transitions: Old content is an inline element.</title>
<link rel="help" href="https://www.w3.org/TR/css-view-transitions-1/">
<link rel="author" href="mailto:bokan@chromium.org">
<link rel="match" href="old-content-is-inline-ref.html">
<link rel="stylesheet" href="/fonts/ahem.css">
<script src="/common/reftest-wait.js"></script>
<style>
body {
margin : 0;
font: 20px/1 Ahem;
}
.container {
position: absolute;
left: 100px;
width: 400px;
height: 100px;
background-color: grey;
}
.container.start {
top: 100px;
view-transition-name: container-start;
}
.container.end {
top: 300px;
view-transition-name: container-end;
}
.transitioned .container {
left: 20px;
width: 600px;
transform: translateY(-50px);
}
.inline {
background-color: limegreen;
color: blue;
}
.start .inline {
view-transition-name: start;
}
.end .inline {
view-transition-name: end;
}
.transitioned .inline {
background-color: coral;
}
/* Overlay the page with purple to ensure screenshots taken are of the view
* transition. */
:root {
view-transition-name: none;
}
::view-transition {
background-color: rebeccapurple;
}
/* This step function keeps the old snapshots in their initial state for half
* the duration, then the new snapshots in their final state for the last half
* of the duration. */
html::view-transition-group(*),
html::view-transition-new(*),
html::view-transition-old(*) {
animation-timing-function: steps(2, jump-none);
}
/* Set different durations for start and end so the two subtrees can be
* differentiated. The test will manually control animation playback so
* duration doesn't matter. */
html::view-transition-group(container-start),
html::view-transition-group(start),
html::view-transition-new(container-start),
html::view-transition-old(container-start) {
animation-duration: 2s;
}
html::view-transition-group(container-end),
html::view-transition-group(end),
html::view-transition-new(container-end),
html::view-transition-old(container-end) {
animation-duration: 3s;
}
/* Hide the new states for the inlines, they're tested in
* new-content-is-inline.html */
html::view-transition-new(start),
html::view-transition-new(end) {
animation: unset;
opacity: 0;
}
html::view-transition-old(start),
html::view-transition-old(end) {
animation: unset;
opacity: 1;
}
</style>
<!--
This subtree will be held at the animation start to test the old content's
starting position.
-->
<div class="container start">
<span>FILL FILL</span>
<span id="start" class="inline">INL INL</span>
<p>START STATE</p>
</div>
<!--
This subtree will be held at the animation end to test the old content's
ending position.
-->
<div class="container end">
<span>FILL FILL</span>
<span id="end" class="inline">INL INL</span>
<p>END STATE</p>
</div>
<script>
if (typeof failIfNot != 'undefined')
failIfNot(document.startViewTransition, "Missing document.startViewTransition");
async function runTest() {
let transition = document.startViewTransition(() => {
document.body.classList.add('transitioned');
});
transition.ready.then(() => {
for (const anim of document.getAnimations()) {
anim.pause();
if (anim.effect.getTiming().duration == 3000) {
// This is an animation for the end subtree. Adjust it to the end
// (without finishing the animation) so we're displaying the final
// position.
anim.currentTime = anim.effect.getTiming().duration - 1;
}
}
requestAnimationFrame(takeScreenshot);
});
}
onload = () => requestAnimationFrame(() => requestAnimationFrame(runTest));
</script>