Files
ladybird/Tests/LibWeb/Screenshot/input/css-background-blob-url.html
Aliaksandr Kalenik d2528dd5ce LibWeb: Compare Screenshot tests directly against expected PNGs
Instead of rendering a reference HTML page that wraps an <img> tag
pointing to a PNG, Screenshot tests now load the expected PNG directly
from disk and compare it against the rendered screenshot. This
eliminates the indirection of loading and rendering a second page just
to display a static image.

This also means --rebaseline now works for Screenshot tests, generating
the expected PNG automatically instead of requiring manual screenshot
capture and placement.

Changes:
- Add TestMode::Screenshot with its own collector and runner
- Move PNGs from Screenshot/images/ to Screenshot/expected/ with
  normalized names matching input filenames
- Remove all 92 reference HTML wrapper files and the images/
  directory
- Remove <link rel="match"> from all 94 Screenshot input HTML
  files
- Update add_libweb_test.py Screenshot boilerplate accordingly
- Add Screenshot mode to results viewer image comparison tabs
2026-02-24 09:55:14 +01:00

42 lines
1.6 KiB
HTML

<!DOCTYPE html>
<html lang="en" class="reftest-wait">
<head>
<style>
#background {
width: 50px;
height: 50px;
border: 2px solid blue;
background-repeat: no-repeat;
}
</style>
</head>
<body>
<div id="background"></div>
<!-- HACK: Force the document to wait for the image to load -->
<img src="../data/smiley.png" style="opacity: 0"/>
<script>
fetch("../data/smiley.png")
.then(response => response.blob())
.then(blob => {
const url = URL.createObjectURL(blob);
background.style.backgroundImage = `url('${url}')`;
// FIXME: This is pretty hacky. We don't have a way to wait for the background image URL to load to
// signal that the test is done. So we load a second blob URL using Image, which we can wait
// upon. Since these are sequential, the second image load indicates that the first is done.
requestAnimationFrame(() => {
const image = new Image();
image.addEventListener("load", () => {
requestAnimationFrame(() => {
document.documentElement.classList.remove("reftest-wait");
});
});
image.src = URL.createObjectURL(blob);
});
});
</script>
</body>
</html>