images-replaced — 100.00% verified visual parity

← all categories · PASS 38 · FAIL 0 · REFERENCE-DISPUTED 0 · 38 total · 300 DPI

diff colours:MissingExtraColorErrMatchFull-page diff: matching and per-channel ≤1.0% pixels are blank; coloured classes are same-coordinate above-floor evidence. Exact RGBA mismatch remains numeric.

aspect-ratio — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS exact match img-aspect-ratio-box · fixed-width-derived-height
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
A box with width:200px and aspect-ratio:2/1, expected to derive a 100px height.

fragmentation — 100.00% verified visual parity PASS 2 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS exact match img-monolithic-page-push · monolithic-image-push · 2 pages
page 1
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
page 2
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
A block image too tall for the remaining space after the filler is pushed WHOLE to page 2 (spec-correct class-A break before a monolithic box), not split or clipped. The multi-page harness asserts both pages.
PASS exact match img-taller-than-page-sliced · monolithic-image-slice · 3 pages
page 1
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
page 2
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
page 3
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
A block image taller than a full page content box is SLICED across 3 pages (css-break-3 §4.1: monolithic content taller than the fragmentainer slices at its edge). Each page embeds only its own vertical band of the source raster, not a full copy. The multi-page harness asserts all three pages.

image-orientation — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0.44% · raw 0.96% (1829 px) img-image-orientation-rotate · rotate-90deg-before-fitPASS via CSS-scale observation: stable same-coordinate outline phaseColorValuemissing 0.002528%extra 0.001264%ΔE 0.2
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: visually accepted coverage phase; raw fill recolour ΔRGB(-1,+0,+0) (ΔE 0.2)
image-orientation:90deg rotates the raster before object-fit:contain sizing; catches ignoring the orientation property.
regions (3 total; showing 3 representatives)

Complete component census grouped by dominant raster class; representative details are bounded.

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
ColorErr1182643,22 → 90,681826total 2.3% · largest 2.3% · max ΔE 0.2
Extra1190,22 → 90,221total 0.001262% · largest 0.001262%
Missing1290,68 → 90,682total 0.002524% · largest 0.002524%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
ColorValue43,22 → 90,682.3ΔE 0.2 ΔRGB(-1,0,0)fill recolour ΔRGB(-1,+0,+0) (ΔE 0.2)
Missing90,68 → 90,680.002524candidate lacks paint present in reference (0.002524%)
Extra90,22 → 90,220.001262candidate adds paint absent from reference (0.001262%)
source · cases/images-replaced/img-image-orientation-rotate.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<style>
6  @page { size: 144px 136px; margin: 0; }
7  html { font-family: ParitySans; line-height: 1.5; }
8  * { margin: 0; box-sizing: border-box; }
9  html, body { background: #ffffff; }
10  .slot {
11    width: 90px;
12    height: 90px;
13    background: #c62828;
14  }
15  .slot img {
16    display: block;
17    width: 90px;
18    height: 90px;
19    object-fit: contain;
20    image-orientation: 90deg;
21    image-rendering: pixelated;
22  }
23</style>
24</head>
25<body>
26  <div class="slot">
27    <img alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAECAIAAAA8r+mnAAAAFUlEQVR42mM4pqEBR1z1enDEQD0JAMyPHNFwKtUxAAAAAElFTkSuQmCC">
28  </div>
29</body>
30</html>

image-rendering — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS exact match img-image-rendering-pixelated · pixelated
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
image-rendering:pixelated scales a 2x2 raster to a hard-edged 120px image; catches smoothing the scaled pixels.

img — 100.00% verified visual parity PASS 14 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0.43% · raw 0.47% (2808 px) img-height-scaled · height-auto-width-aspectPASS via CSS-scale observation: sub-CSS shared-colour coverageColorValueΔE 17.4
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: visually accepted coverage phase; raw fill recolour ΔRGB(+0,+14,-1) (ΔE 17.4)
A 2:1 intrinsic image with height:90px and width:auto derives width:180px from the aspect ratio.
regions (1 total; showing 1 representative)

Complete component census grouped by dominant raster class; representative details are bounded.

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
ColorErr128080,0 → 180,902808total 1.2% · largest 1.2%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
ColorValue0,0 → 180,901.2ΔRGB(0,14,-1)fill recolour ΔRGB(+0,+14,-1) (ΔE 0)
source · cases/images-replaced/img-height-scaled.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>img height scaled aspect preserved</title>
6<style>
7  @page { size: 400px 152px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  .stage { width: 260px; margin: 30px; background: #eeeeee; }
12  /* height set, width auto: a 2:1 intrinsic image stays 2:1, so height:90px
13     derives width:180px from the aspect ratio. */
14  img {
15    display: block; width: auto; height: 90px; image-rendering: pixelated;
16  }
17</style>
18</head>
19<body>
20  <div class="stage">
21    <img alt="" height="90" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAECAIAAAA8r+mnAAAAIElEQVR42mM4IScHR3I9NnDEgFNCzu0EHN1ZJQJHOCUAni4lgeO2HLIAAAAASUVORK5CYII=">
22  </div>
23</body>
24</html>
PASS visually equivalent · no rejecting defect · thresholded evidence 0.43% · raw 0.47% (2808 px) img-width-scaled · width-auto-height-aspectPASS via CSS-scale observation: sub-CSS shared-colour coverageColorValueΔE 17.4
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: visually accepted coverage phase; raw fill recolour ΔRGB(+0,+14,-1) (ΔE 17.4)
A 2:1 intrinsic PNG with width:180px and height:auto, preserving aspect ratio at 180x90.
regions (1 total; showing 1 representative)

Complete component census grouped by dominant raster class; representative details are bounded.

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
ColorErr128080,0 → 180,902808total 1.2% · largest 1.2%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
ColorValue0,0 → 180,901.2ΔRGB(0,14,-1)fill recolour ΔRGB(+0,+14,-1) (ΔE 0)
source · cases/images-replaced/img-width-scaled.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>img width scaled aspect preserved</title>
6<style>
7  @page { size: 400px 152px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  .stage {
12    width: 260px;
13    margin: 30px;
14    background: #eeeeee;
15  }
16  /* width set, height auto: a 2:1 intrinsic image stays 2:1 (180x90). */
17  img {
18    display: block;
19    width: 180px;
20    height: auto;
21    image-rendering: pixelated;
22  }
23</style>
24</head>
25<body>
26  <div class="stage">
27    <img alt="" width="180" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAECAIAAAA8r+mnAAAAIElEQVR42mM4IScHR3I9NnDEgFNCzu0EHN1ZJQJHOCUAni4lgeO2HLIAAAAASUVORK5CYII=">
28  </div>
29</body>
30</html>
PASS visually equivalent · no rejecting defect · thresholded evidence 0.37% · raw 0.41% (1558 px) img-percent-width · percentage-widthPASS via CSS-scale observation: sub-CSS shared-colour coverageColorValueΔE 15.3
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: visually accepted coverage phase; raw fill recolour ΔRGB(+0,+8,-1) (ΔE 15.3)
width:50% on a 2:1 image resolves against the 200px containing block to 100px wide, deriving a 50px height.
regions (1 total; showing 1 representative)

Complete component census grouped by dominant raster class; representative details are bounded.

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
ColorErr115580,0 → 100,501558total 1.6% · largest 1.6%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
ColorValue0,0 → 100,501.6ΔRGB(0,8,-1)fill recolour ΔRGB(+0,+8,-1) (ΔE 0)
source · cases/images-replaced/img-percent-width.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>img percentage width</title>
6<style>
7  @page { size: 344px 112px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  .stage { width: 200px; margin: 30px; background: #eeeeee; }
12  /* width:50% of the 200px containing block = 100px wide; height auto keeps the
13     2:1 aspect ratio so the image is 100x50. */
14  img { display: block; width: 50%; height: auto; image-rendering: pixelated; }
15</style>
16</head>
17<body>
18  <div class="stage">
19    <img alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAECAIAAAA8r+mnAAAAIElEQVR42mM4IScHR3I9NnDEgFNCzu0EHN1ZJQJHOCUAni4lgeO2HLIAAAAASUVORK5CYII=">
20  </div>
21</body>
22</html>
PASS visually equivalent · no rejecting defect · thresholded evidence 0.03% · raw 0.03% (206 px) svg-as-img · svg-data-uri-sourcePASS via CSS-scale observation: sub-CSS shared-colour coverageAntialiasCoverageΔE 3.4
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: visually accepted coverage phase; raw antialiasing coverage residue on a shared outline
An SVG document referenced as the src of an img via a data: URI, drawn at 160x120.
regions (146 total; showing 64 representatives)

Complete component census grouped by dominant raster class; representative details are bounded.

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
ColorErr14620610,20 → 90,1006total 0.07% · largest 0.002133%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage31,24 → 32,240.002133ΔRGB(-12,-9,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage67,24 → 68,240.002133ΔRGB(-12,-9,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage38,21 → 38,210.001067ΔRGB(-12,-9,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage61,21 → 62,210.001067ΔRGB(-12,-9,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage14,42 → 14,430.001067ΔRGB(-18,-13,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage86,42 → 86,430.001067ΔRGB(-18,-13,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage12,46 → 12,470.001067ΔRGB(-11,-7,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage87,46 → 88,470.001067ΔRGB(-11,-7,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage12,47 → 12,480.001067ΔRGB(-11,-7,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage88,47 → 88,480.001067ΔRGB(-11,-7,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage32,96 → 32,960.001067ΔRGB(-17,-12,-3)antialiasing coverage residue on a shared outline
AntialiasCoverage67,96 → 68,960.001067ΔRGB(-17,-12,-3)antialiasing coverage residue on a shared outline
AntialiasCoverage36,98 → 37,980.001067ΔRGB(-11,-7,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage63,98 → 63,980.001067ΔRGB(-11,-7,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage37,98 → 38,980.001067ΔRGB(-14,-10,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage61,98 → 62,980.001067ΔRGB(-14,-10,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage36,22 → 36,220.000711ΔRGB(-12,-9,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage63,22 → 63,220.000711ΔRGB(-12,-9,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage34,23 → 34,230.000711ΔRGB(-10,-8,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage66,23 → 66,230.000711ΔRGB(-10,-8,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage14,41 → 14,420.000711ΔRGB(-5,-4,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage85,41 → 85,420.000711ΔRGB(-5,-4,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage13,44 → 13,440.000711ΔRGB(-10,-8,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage87,44 → 87,440.000711ΔRGB(-10,-8,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage11,49 → 11,490.000711ΔRGB(-8,-6,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage88,49 → 88,490.000711ΔRGB(-8,-6,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage12,72 → 12,720.000711ΔRGB(-8,-5,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage88,72 → 88,720.000711ΔRGB(-8,-5,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage12,73 → 12,730.000711ΔRGB(-8,-5,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage88,73 → 88,730.000711ΔRGB(-8,-5,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage14,77 → 14,770.000711ΔRGB(-21,-15,-3)antialiasing coverage residue on a shared outline
AntialiasCoverage86,77 → 86,770.000711ΔRGB(-21,-15,-3)antialiasing coverage residue on a shared outline
AntialiasCoverage14,78 → 14,780.000711ΔRGB(-17,-12,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage85,78 → 85,780.000711ΔRGB(-17,-12,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage31,95 → 32,950.000711ΔRGB(-17,-12,-3)antialiasing coverage residue on a shared outline
AntialiasCoverage68,95 → 68,950.000711ΔRGB(-17,-12,-3)antialiasing coverage residue on a shared outline
AntialiasCoverage35,97 → 35,970.000711ΔRGB(-5,-4,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage65,97 → 65,970.000711ΔRGB(-5,-4,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage45,20 → 45,200.000356ΔRGB(-18,-13,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage55,20 → 55,200.000356ΔRGB(-18,-13,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage43,20 → 43,200.000356ΔRGB(-17,-12,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage57,20 → 57,200.000356ΔRGB(-17,-12,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage41,21 → 41,210.000356ΔRGB(-17,-12,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage59,21 → 59,210.000356ΔRGB(-17,-12,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage39,21 → 39,210.000356ΔRGB(-11,-7,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage60,21 → 60,210.000356ΔRGB(-11,-7,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage37,22 → 37,220.000356ΔRGB(-8,-5,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage37,22 → 37,220.000356ΔRGB(-17,-12,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage62,22 → 62,220.000356ΔRGB(-17,-12,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage63,22 → 63,220.000356ΔRGB(-8,-5,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage35,22 → 35,220.000356ΔRGB(-4,-3,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage36,22 → 36,220.000356ΔRGB(-16,-12,-3)antialiasing coverage residue on a shared outline
AntialiasCoverage64,22 → 64,220.000356ΔRGB(-16,-12,-3)antialiasing coverage residue on a shared outline
AntialiasCoverage65,22 → 65,220.000356ΔRGB(-4,-3,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage35,23 → 35,230.000356ΔRGB(-14,-10,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage65,23 → 65,230.000356ΔRGB(-14,-10,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage30,25 → 30,250.000356ΔRGB(-11,-7,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage69,25 → 69,250.000356ΔRGB(-11,-7,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage30,25 → 30,250.000356ΔRGB(-8,-6,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage70,25 → 70,250.000356ΔRGB(-8,-6,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage28,26 → 28,260.000356ΔRGB(-16,-12,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage71,26 → 71,260.000356ΔRGB(-16,-12,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage26,28 → 26,280.000356ΔRGB(-14,-10,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage74,28 → 74,280.000356ΔRGB(-14,-10,-2)antialiasing coverage residue on a shared outline
source · cases/images-replaced/svg-as-img.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>svg as img data uri</title>
6<style>
7  @page { size: 384px 184px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  .stage {
12    width: 240px;
13    margin: 30px;
14    background: #eeeeee;
15  }
16  /* SVG document referenced through an img element via a data: URI, drawn at 160x120. */
17  img {
18    display: block;
19    width: 160px;
20    height: 120px;
21  }
22</style>
23</head>
24<body>
25  <div class="stage">
26    <img alt="" width="160" height="120" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNjAiIGhlaWdodD0iMTIwIiB2aWV3Qm94PSIwIDAgMTYwIDEyMCI+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjE2MCIgaGVpZ2h0PSIxMjAiIGZpbGw9IiNkOGYzZGMiLz48Y2lyY2xlIGN4PSI1MCIgY3k9IjYwIiByPSI0MCIgZmlsbD0iIzE1NjVjMCIvPjxyZWN0IHg9IjkwIiB5PSIyMCIgd2lkdGg9IjYwIiBoZWlnaHQ9IjgwIiBmaWxsPSIjYzYyODI4Ii8+PC9zdmc+">
27  </div>
28</body>
29</html>
PASS visually equivalent · no rejecting defect · thresholded evidence 0.02% · raw 0.02% (44 px) images-replaced-img-in-table-cell · img-inside-table-cellPASS via CSS-scale observation: one-sided sub-CSS outline coverageAntialiasCoveragemissing 0.01%ΔE 3.8
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: visually accepted coverage phase; raw antialiasing coverage residue on a shared outline
An SVG img replaced element inside a bordered table cell paints at its laid-out size; catches table-cell paint walkers that lay out but drop replaced-image children.
regions (36 total; showing 36 representatives)

Complete component census grouped by dominant raster class; representative details are bounded.

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
ColorErr324021,21 → 53,532total 0.04% · largest 0.001777%
Missing4423,23 → 53,531total 0.003555% · largest 0.000889%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage44,22 → 44,220.001777ΔRGB(17,10,5)antialiasing coverage residue on a shared outline
AntialiasCoverage51,29 → 51,290.001777ΔRGB(19,12,6)antialiasing coverage residue on a shared outline
AntialiasCoverage22,44 → 22,440.001777ΔRGB(17,10,5)antialiasing coverage residue on a shared outline
AntialiasCoverage52,44 → 52,440.001777ΔRGB(19,12,6)antialiasing coverage residue on a shared outline
AntialiasCoverage51,45 → 51,450.001777ΔRGB(19,12,6)antialiasing coverage residue on a shared outline
AntialiasCoverage29,51 → 29,510.001777ΔRGB(19,12,6)antialiasing coverage residue on a shared outline
AntialiasCoverage45,51 → 45,510.001777ΔRGB(19,12,6)antialiasing coverage residue on a shared outline
AntialiasCoverage44,52 → 44,520.001777ΔRGB(19,12,6)antialiasing coverage residue on a shared outline
Missing45,23 → 45,230.000889candidate lacks paint present in reference (0.000889%)
Missing53,35 → 53,350.000889candidate lacks paint present in reference (0.000889%)
Missing23,45 → 23,450.000889candidate lacks paint present in reference (0.000889%)
Missing35,53 → 35,530.000889candidate lacks paint present in reference (0.000889%)
AntialiasCoverage35,21 → 35,210.000889ΔRGB(18,12,7)antialiasing coverage residue on a shared outline
AntialiasCoverage39,21 → 39,210.000889ΔRGB(15,10,5)antialiasing coverage residue on a shared outline
AntialiasCoverage32,22 → 32,220.000889ΔRGB(15,10,5)antialiasing coverage residue on a shared outline
AntialiasCoverage42,22 → 42,220.000889ΔRGB(10,7,3)antialiasing coverage residue on a shared outline
AntialiasCoverage30,22 → 30,220.000889ΔRGB(31,21,11)antialiasing coverage residue on a shared outline
AntialiasCoverage29,23 → 29,230.000889ΔRGB(15,10,5)antialiasing coverage residue on a shared outline
AntialiasCoverage45,23 → 45,230.000889ΔRGB(18,12,7)antialiasing coverage residue on a shared outline
AntialiasCoverage29,23 → 29,230.000889ΔRGB(19,12,6)antialiasing coverage residue on a shared outline
AntialiasCoverage23,29 → 23,290.000889ΔRGB(19,12,6)antialiasing coverage residue on a shared outline
AntialiasCoverage23,29 → 23,290.000889ΔRGB(15,10,5)antialiasing coverage residue on a shared outline
AntialiasCoverage22,30 → 22,300.000889ΔRGB(31,21,11)antialiasing coverage residue on a shared outline
AntialiasCoverage52,30 → 52,300.000889ΔRGB(38,25,13)antialiasing coverage residue on a shared outline
AntialiasCoverage22,32 → 22,320.000889ΔRGB(15,10,5)antialiasing coverage residue on a shared outline
AntialiasCoverage52,32 → 52,320.000889ΔRGB(19,12,6)antialiasing coverage residue on a shared outline
AntialiasCoverage21,35 → 21,350.000889ΔRGB(18,12,7)antialiasing coverage residue on a shared outline
AntialiasCoverage21,39 → 21,390.000889ΔRGB(15,10,5)antialiasing coverage residue on a shared outline
AntialiasCoverage53,39 → 53,390.000889ΔRGB(19,12,6)antialiasing coverage residue on a shared outline
AntialiasCoverage22,42 → 22,420.000889ΔRGB(10,7,3)antialiasing coverage residue on a shared outline
AntialiasCoverage52,42 → 52,420.000889ΔRGB(14,9,5)antialiasing coverage residue on a shared outline
AntialiasCoverage23,45 → 23,450.000889ΔRGB(18,12,7)antialiasing coverage residue on a shared outline
AntialiasCoverage30,52 → 30,520.000889ΔRGB(38,25,13)antialiasing coverage residue on a shared outline
AntialiasCoverage32,52 → 32,520.000889ΔRGB(19,12,6)antialiasing coverage residue on a shared outline
AntialiasCoverage42,52 → 42,520.000889ΔRGB(14,9,5)antialiasing coverage residue on a shared outline
AntialiasCoverage39,53 → 39,530.000889ΔRGB(19,12,6)antialiasing coverage residue on a shared outline
source · cases/images-replaced/images-replaced-img-in-table-cell.html
1<!DOCTYPE html><html><head><meta charset='utf-8'><style>
2@page{size:224px 120px;margin:0}
3html{font-family:ParitySans;line-height:1.5}
4*{margin:0;box-sizing:border-box}
5body{padding:12px;background:#fff}
6table{border-collapse:collapse}
7td{border:1px solid #333;padding:8px;vertical-align:top}
8img{width:56px;height:56px;display:block}
9</style></head><body>
10<table><tr>
11<td><img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 56 56'%3E%3Crect width='56' height='56' fill='%231f6fb2'/%3E%3Ccircle cx='28' cy='28' r='16' fill='%23fff'/%3E%3Crect x='22' y='22' width='12' height='12' fill='%23ed8936'/%3E%3C/svg%3E"></td>
12<td>cell text</td>
13</tr></table>
14</body></html>
PASS visually equivalent · no rejecting defect · thresholded evidence 0.008982% · raw 0.008982% (16 px) img-inline-block-descendant-sizing · inline-block-descendant-sizingPASS via CSS-scale observation: one-sided sub-CSS outline coverageMissingmissing 0.006085%ΔE 2.9
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: visually accepted coverage phase; raw candidate lacks paint present in reference (0.006085%)
An inline-block containing an img with explicit width and height:auto must preserve intrinsic aspect-ratio sizing and paint the replaced child.
regions (16 total; showing 16 representatives)

Complete component census grouped by dominant raster class; representative details are bounded.

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
ColorErr141412,12 → 32,321total 0.03% · largest 0.002310%
Missing2227,27 → 32,321total 0.004620% · largest 0.002310%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
Missing32,27 → 32,270.002310candidate lacks paint present in reference (0.002310%)
Missing27,32 → 27,320.002310candidate lacks paint present in reference (0.002310%)
AntialiasCoverage25,12 → 25,120.002310ΔRGB(12,8,4)antialiasing coverage residue on a shared outline
AntialiasCoverage27,13 → 27,130.002310ΔRGB(3,2,1)antialiasing coverage residue on a shared outline
AntialiasCoverage17,14 → 17,140.002310ΔRGB(15,10,5)antialiasing coverage residue on a shared outline
AntialiasCoverage16,15 → 16,150.002310ΔRGB(-19,-12,-6)antialiasing coverage residue on a shared outline
AntialiasCoverage15,16 → 15,160.002310ΔRGB(-19,-12,-6)antialiasing coverage residue on a shared outline
AntialiasCoverage14,17 → 14,170.002310ΔRGB(15,10,5)antialiasing coverage residue on a shared outline
AntialiasCoverage12,25 → 12,250.002310ΔRGB(12,8,4)antialiasing coverage residue on a shared outline
AntialiasCoverage32,26 → 32,260.002310ΔRGB(9,5,3)antialiasing coverage residue on a shared outline
AntialiasCoverage13,27 → 13,270.002310ΔRGB(3,2,1)antialiasing coverage residue on a shared outline
AntialiasCoverage31,28 → 31,280.002310ΔRGB(15,10,5)antialiasing coverage residue on a shared outline
AntialiasCoverage31,28 → 31,280.002310ΔRGB(19,12,6)antialiasing coverage residue on a shared outline
AntialiasCoverage28,31 → 28,310.002310ΔRGB(19,12,6)antialiasing coverage residue on a shared outline
AntialiasCoverage28,31 → 28,310.002310ΔRGB(15,10,5)antialiasing coverage residue on a shared outline
AntialiasCoverage26,32 → 26,320.002310ΔRGB(9,5,3)antialiasing coverage residue on a shared outline
source · cases/images-replaced/img-inline-block-descendant-sizing.html
1<!doctype html>
2<html>
3<head>
4<meta charset="utf-8">
5<style>
6@page{size:152px 120px;margin:0}
7html{font-family:ParitySans;line-height:1.5}
8*{margin:0;box-sizing:border-box}
9html,body{background:#fff}
10body{padding:12px}
11.target{display:inline-block;border:2px solid #222;background:#f1f5f9;padding:6px;vertical-align:top}
12img{display:block;width:58px;height:auto}
13.after{display:inline-block;width:18px;height:18px;background:#00a651;margin-left:6px;vertical-align:top}
14</style>
15</head>
16<body>
17<span class="target"><img alt="" src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='80' height='40' viewBox='0 0 80 40'%3E%3Crect width='80' height='40' fill='%231f6fb2'/%3E%3Ccircle cx='20' cy='20' r='14' fill='%23fff'/%3E%3Crect x='42' y='8' width='26' height='24' fill='%23ed8936'/%3E%3C/svg%3E"></span><span class="after"></span>
18</body>
19</html>
PASS exact match img-border · border-on-image
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
A replaced image with a 6px solid border framing it under border-box sizing.
PASS exact match img-data-uri-intrinsic · data-uri-png-sized
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
A data: URI PNG placed in an img with explicit 120x120 size, scaled up from its 4x4 intrinsic pixels.
PASS exact match img-inline-block-descendant · inline-block-descendant
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
A raster img paints in normal flow and should also paint as a direct child of an inline-block; catches the inline-block text-collection path dropping replaced descendants.
PASS exact match img-intrinsic-natural · intrinsic-no-sizing
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
An img with no width/height attribute and no CSS sizing renders at its intrinsic 8x4 px natural dimensions (default sizing algorithm).
PASS exact match img-max-width-clamp · max-width-aspect-recompute
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
max-width:120px clamps a 200px-wide 2:1 image and recomputes its height from the aspect ratio to 60px.
PASS exact match img-width-height-stretch · explicit-width-height-stretch
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
A 1:1 intrinsic PNG given explicit width:200px and height:100px, stretching it non-uniformly.
PASS exact match svg-img-inner-rect · svg-no-viewbox-inner-rect
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
A no-viewBox SVG referenced as an img src is scaled into its display box; an inner rect at (40,40,200,140) scales with the viewport and stays centered with a blue margin rather than stretching to the image right/bottom edge.
PASS exact match svg-img-preserve-aspect-ratio-slice · svg-preserve-aspect-ratio-slice
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
An SVG image with preserveAspectRatio xMidYMid slice crops predictably in a square img slot; catches ignoring slice and fitting the whole SVG viewport.

inline-svg — 100.00% verified visual parity PASS 6 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0.08% · raw 0.08% (186 px) svg-inline-gradient-clip-path · gradient-clip-pathPASS via CSS-scale observation: sub-CSS shared-colour coverageAntialiasCoverageΔE 4.0
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: visually accepted coverage phase; raw antialiasing coverage residue on a shared outline
An inline SVG gradient-filled rect clipped by a clipPath paints only inside the circle; catches supporting gradients or clip paths separately but not together.
regions (150 total; showing 64 representatives)

Complete component census grouped by dominant raster class; representative details are bounded.

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
ColorErr15018632,7 → 108,835total 0.2% · largest 0.004072%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage52,79 → 53,790.004072ΔRGB(-16,7,5)antialiasing coverage residue on a shared outline
AntialiasCoverage86,11 → 87,110.003257ΔRGB(-15,8,12)antialiasing coverage residue on a shared outline
AntialiasCoverage73,7 → 73,70.001629ΔRGB(-15,7,8)antialiasing coverage residue on a shared outline
AntialiasCoverage64,7 → 64,70.001629ΔRGB(-15,6,7)antialiasing coverage residue on a shared outline
AntialiasCoverage56,9 → 57,90.001629ΔRGB(-13,6,6)antialiasing coverage residue on a shared outline
AntialiasCoverage83,9 → 84,90.001629ΔRGB(-10,6,7)antialiasing coverage residue on a shared outline
AntialiasCoverage53,11 → 53,110.001629ΔRGB(-14,6,5)antialiasing coverage residue on a shared outline
AntialiasCoverage52,11 → 53,110.001629ΔRGB(-8,12,9)antialiasing coverage residue on a shared outline
AntialiasCoverage50,12 → 50,120.001629ΔRGB(-5,6,4)antialiasing coverage residue on a shared outline
AntialiasCoverage35,29 → 35,300.001629ΔRGB(-3,5,2)antialiasing coverage residue on a shared outline
AntialiasCoverage105,29 → 105,300.001629ΔRGB(-12,5,10)antialiasing coverage residue on a shared outline
AntialiasCoverage34,31 → 34,320.001629ΔRGB(-10,7,3)antialiasing coverage residue on a shared outline
AntialiasCoverage107,35 → 107,350.001629ΔRGB(-12,6,10)antialiasing coverage residue on a shared outline
AntialiasCoverage33,35 → 33,360.001629ΔRGB(-9,6,2)antialiasing coverage residue on a shared outline
AntialiasCoverage33,36 → 33,370.001629ΔRGB(-8,5,3)antialiasing coverage residue on a shared outline
AntialiasCoverage107,36 → 107,370.001629ΔRGB(-15,7,12)antialiasing coverage residue on a shared outline
AntialiasCoverage32,50 → 32,500.001629ΔRGB(-3,4,2)antialiasing coverage residue on a shared outline
AntialiasCoverage108,50 → 108,500.001629ΔRGB(-12,5,10)antialiasing coverage residue on a shared outline
AntialiasCoverage33,53 → 33,530.001629ΔRGB(-3,4,2)antialiasing coverage residue on a shared outline
AntialiasCoverage107,53 → 107,530.001629ΔRGB(-12,6,10)antialiasing coverage residue on a shared outline
AntialiasCoverage33,54 → 33,540.001629ΔRGB(-11,6,2)antialiasing coverage residue on a shared outline
AntialiasCoverage34,58 → 34,580.001629ΔRGB(-13,7,3)antialiasing coverage residue on a shared outline
AntialiasCoverage35,60 → 35,600.001629ΔRGB(-6,6,3)antialiasing coverage residue on a shared outline
AntialiasCoverage105,60 → 105,600.001629ΔRGB(-13,7,12)antialiasing coverage residue on a shared outline
AntialiasCoverage50,77 → 50,770.001629ΔRGB(-9,7,4)antialiasing coverage residue on a shared outline
AntialiasCoverage86,79 → 87,790.001629ΔRGB(-15,11,16)antialiasing coverage residue on a shared outline
AntialiasCoverage84,80 → 84,800.001629ΔRGB(-7,5,6)antialiasing coverage residue on a shared outline
AntialiasCoverage57,81 → 57,810.001629ΔRGB(-8,5,4)antialiasing coverage residue on a shared outline
AntialiasCoverage83,81 → 83,810.001629ΔRGB(-3,4,5)antialiasing coverage residue on a shared outline
AntialiasCoverage75,83 → 76,830.001629ΔRGB(-8,3,5)antialiasing coverage residue on a shared outline
AntialiasCoverage73,83 → 73,830.001629ΔRGB(-3,3,4)antialiasing coverage residue on a shared outline
AntialiasCoverage68,7 → 68,70.000814ΔRGB(-8,3,3)antialiasing coverage residue on a shared outline
AntialiasCoverage72,7 → 72,70.000814ΔRGB(-3,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage65,7 → 65,70.000814ΔRGB(-8,3,2)antialiasing coverage residue on a shared outline
AntialiasCoverage65,7 → 65,70.000814ΔRGB(-11,4,5)antialiasing coverage residue on a shared outline
AntialiasCoverage67,7 → 67,70.000814ΔRGB(-31,12,12)antialiasing coverage residue on a shared outline
AntialiasCoverage75,7 → 75,70.000814ΔRGB(-10,3,5)antialiasing coverage residue on a shared outline
AntialiasCoverage75,7 → 75,70.000814ΔRGB(-3,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage76,7 → 76,70.000814ΔRGB(-17,7,9)antialiasing coverage residue on a shared outline
AntialiasCoverage76,7 → 76,70.000814ΔRGB(-12,6,6)antialiasing coverage residue on a shared outline
AntialiasCoverage61,8 → 61,80.000814ΔRGB(-5,2,1)antialiasing coverage residue on a shared outline
AntialiasCoverage62,8 → 62,80.000814ΔRGB(-13,6,5)antialiasing coverage residue on a shared outline
AntialiasCoverage78,8 → 78,80.000814ΔRGB(-14,5,7)antialiasing coverage residue on a shared outline
AntialiasCoverage78,8 → 78,80.000814ΔRGB(-8,4,4)antialiasing coverage residue on a shared outline
AntialiasCoverage60,8 → 60,80.000814ΔRGB(-5,2,1)antialiasing coverage residue on a shared outline
AntialiasCoverage80,8 → 80,80.000814ΔRGB(-8,4,4)antialiasing coverage residue on a shared outline
AntialiasCoverage59,8 → 59,80.000814ΔRGB(-13,6,4)antialiasing coverage residue on a shared outline
AntialiasCoverage80,8 → 80,80.000814ΔRGB(-14,5,7)antialiasing coverage residue on a shared outline
AntialiasCoverage57,9 → 57,90.000814ΔRGB(-9,4,4)antialiasing coverage residue on a shared outline
AntialiasCoverage83,9 → 83,90.000814ΔRGB(-5,2,3)antialiasing coverage residue on a shared outline
AntialiasCoverage56,10 → 56,100.000814ΔRGB(-15,7,5)antialiasing coverage residue on a shared outline
AntialiasCoverage84,10 → 84,100.000814ΔRGB(-15,6,8)antialiasing coverage residue on a shared outline
AntialiasCoverage55,10 → 55,100.000814ΔRGB(-16,6,6)antialiasing coverage residue on a shared outline
AntialiasCoverage85,10 → 85,100.000814ΔRGB(-15,6,8)antialiasing coverage residue on a shared outline
AntialiasCoverage54,10 → 54,100.000814ΔRGB(-17,8,6)antialiasing coverage residue on a shared outline
AntialiasCoverage85,10 → 85,100.000814ΔRGB(-16,6,9)antialiasing coverage residue on a shared outline
AntialiasCoverage52,12 → 52,120.000814ΔRGB(-13,5,4)antialiasing coverage residue on a shared outline
AntialiasCoverage88,12 → 88,120.000814ΔRGB(-9,4,5)antialiasing coverage residue on a shared outline
AntialiasCoverage90,12 → 90,120.000814ΔRGB(-21,8,11)antialiasing coverage residue on a shared outline
AntialiasCoverage49,13 → 49,130.000814ΔRGB(-17,8,5)antialiasing coverage residue on a shared outline
AntialiasCoverage91,13 → 91,130.000814ΔRGB(-15,6,9)antialiasing coverage residue on a shared outline
AntialiasCoverage46,15 → 46,150.000814ΔRGB(-5,2,2)antialiasing coverage residue on a shared outline
AntialiasCoverage93,15 → 93,150.000814ΔRGB(-11,5,7)antialiasing coverage residue on a shared outline
AntialiasCoverage43,18 → 43,180.000814ΔRGB(-10,4,2)antialiasing coverage residue on a shared outline
source · cases/images-replaced/svg-inline-gradient-clip-path.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<style>
6  @page { size: 184px 136px; margin: 0; }
7  html { font-family: ParitySans; line-height: 1.5; }
8  * { margin: 0; box-sizing: border-box; }
9  html, body { background: #ffffff; }
10  svg {
11    display: block;
12    width: 140px;
13    height: 90px;
14    background: #c62828;
15  }
16</style>
17</head>
18<body>
19  <svg viewBox="0 0 140 90" xmlns="http://www.w3.org/2000/svg">
20    <defs>
21      <linearGradient id="g" x1="0" x2="1">
22        <stop offset="0" stop-color="#0a7f2e"></stop>
23        <stop offset="1" stop-color="#1565c0"></stop>
24      </linearGradient>
25      <clipPath id="c">
26        <circle cx="70" cy="45" r="38"></circle>
27      </clipPath>
28    </defs>
29    <rect x="10" y="5" width="120" height="80" fill="url(#g)" clip-path="url(#c)"></rect>
30  </svg>
31</body>
32</html>
PASS visually equivalent · no rejecting defect · thresholded evidence 0.05% · raw 0.05% (436 px) svg-inline-clip · clip-path-circlePASS via CSS-scale observation: sub-CSS shared-colour coverageAntialiasCoverageΔE 3.9
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: visually accepted coverage phase; raw antialiasing coverage residue on a shared outline
Inline SVG rect clipped to a circle via a clipPath def, leaving a red disc.
regions (268 total; showing 64 representatives)

Complete component census grouped by dominant raster class; representative details are bounded.

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
ColorErr26843620,20 → 139,1396total 0.1% · largest 0.001600%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage60,23 → 61,230.001600ΔRGB(-3,-15,-15)antialiasing coverage residue on a shared outline
AntialiasCoverage23,60 → 23,610.001600ΔRGB(-3,-15,-15)antialiasing coverage residue on a shared outline
AntialiasCoverage137,98 → 137,1000.001600ΔRGB(-2,-11,-11)antialiasing coverage residue on a shared outline
AntialiasCoverage98,137 → 100,1370.001600ΔRGB(-2,-11,-11)antialiasing coverage residue on a shared outline
AntialiasCoverage133,53 → 134,540.001333ΔRGB(-4,-17,-17)antialiasing coverage residue on a shared outline
AntialiasCoverage53,133 → 54,1340.001333ΔRGB(-4,-17,-17)antialiasing coverage residue on a shared outline
AntialiasCoverage53,26 → 54,260.001067ΔRGB(-4,-17,-17)antialiasing coverage residue on a shared outline
AntialiasCoverage52,26 → 52,270.001067ΔRGB(-2,-12,-12)antialiasing coverage residue on a shared outline
AntialiasCoverage26,52 → 27,520.001067ΔRGB(-2,-12,-12)antialiasing coverage residue on a shared outline
AntialiasCoverage133,52 → 133,520.001067ΔRGB(-1,-4,-4)antialiasing coverage residue on a shared outline
AntialiasCoverage26,53 → 26,540.001067ΔRGB(-4,-17,-17)antialiasing coverage residue on a shared outline
AntialiasCoverage52,133 → 52,1330.001067ΔRGB(-1,-4,-4)antialiasing coverage residue on a shared outline
AntialiasCoverage96,22 → 97,220.000800ΔRGB(-3,-15,-15)antialiasing coverage residue on a shared outline
AntialiasCoverage98,23 → 99,230.000800ΔRGB(-3,-17,-17)antialiasing coverage residue on a shared outline
AntialiasCoverage58,24 → 59,240.000800ΔRGB(-3,-12,-12)antialiasing coverage residue on a shared outline
AntialiasCoverage101,24 → 101,240.000800ΔRGB(-3,-15,-15)antialiasing coverage residue on a shared outline
AntialiasCoverage56,24 → 57,250.000800ΔRGB(-3,-12,-12)antialiasing coverage residue on a shared outline
AntialiasCoverage104,25 → 105,250.000800ΔRGB(-2,-14,-14)antialiasing coverage residue on a shared outline
AntialiasCoverage130,47 → 130,470.000800ΔRGB(-3,-12,-12)antialiasing coverage residue on a shared outline
AntialiasCoverage24,56 → 25,570.000800ΔRGB(-3,-12,-12)antialiasing coverage residue on a shared outline
AntialiasCoverage24,58 → 24,590.000800ΔRGB(-3,-12,-12)antialiasing coverage residue on a shared outline
AntialiasCoverage136,58 → 136,590.000800ΔRGB(-2,-11,-11)antialiasing coverage residue on a shared outline
AntialiasCoverage137,60 → 137,610.000800ΔRGB(-3,-17,-17)antialiasing coverage residue on a shared outline
AntialiasCoverage137,63 → 138,630.000800ΔRGB(-2,-10,-10)antialiasing coverage residue on a shared outline
AntialiasCoverage22,96 → 22,970.000800ΔRGB(-3,-15,-15)antialiasing coverage residue on a shared outline
AntialiasCoverage23,98 → 23,990.000800ΔRGB(-3,-17,-17)antialiasing coverage residue on a shared outline
AntialiasCoverage136,100 → 136,1010.000800ΔRGB(-2,-14,-14)antialiasing coverage residue on a shared outline
AntialiasCoverage24,101 → 24,1010.000800ΔRGB(-3,-15,-15)antialiasing coverage residue on a shared outline
AntialiasCoverage25,104 → 25,1050.000800ΔRGB(-2,-14,-14)antialiasing coverage residue on a shared outline
AntialiasCoverage47,130 → 47,1300.000800ΔRGB(-3,-12,-12)antialiasing coverage residue on a shared outline
AntialiasCoverage58,136 → 59,1360.000800ΔRGB(-2,-11,-11)antialiasing coverage residue on a shared outline
AntialiasCoverage100,136 → 101,1360.000800ΔRGB(-2,-14,-14)antialiasing coverage residue on a shared outline
AntialiasCoverage60,137 → 61,1370.000800ΔRGB(-3,-17,-17)antialiasing coverage residue on a shared outline
AntialiasCoverage63,137 → 63,1380.000800ΔRGB(-2,-10,-10)antialiasing coverage residue on a shared outline
AntialiasCoverage72,20 → 72,200.000533ΔRGB(-2,-8,-8)antialiasing coverage residue on a shared outline
AntialiasCoverage70,20 → 70,200.000533ΔRGB(-3,-12,-12)antialiasing coverage residue on a shared outline
AntialiasCoverage90,20 → 90,200.000533ΔRGB(-2,-8,-8)antialiasing coverage residue on a shared outline
AntialiasCoverage91,21 → 91,210.000533ΔRGB(-3,-15,-15)antialiasing coverage residue on a shared outline
AntialiasCoverage92,21 → 92,210.000533ΔRGB(-3,-15,-15)antialiasing coverage residue on a shared outline
AntialiasCoverage64,22 → 64,220.000533ΔRGB(-2,-11,-11)antialiasing coverage residue on a shared outline
AntialiasCoverage95,22 → 95,220.000533ΔRGB(-3,-12,-12)antialiasing coverage residue on a shared outline
AntialiasCoverage63,22 → 63,220.000533ΔRGB(-3,-17,-17)antialiasing coverage residue on a shared outline
AntialiasCoverage62,22 → 62,220.000533ΔRGB(-3,-14,-14)antialiasing coverage residue on a shared outline
AntialiasCoverage99,23 → 100,230.000533ΔRGB(-3,-12,-12)antialiasing coverage residue on a shared outline
AntialiasCoverage59,23 → 59,230.000533ΔRGB(-2,-8,-8)antialiasing coverage residue on a shared outline
AntialiasCoverage100,23 → 100,230.000533ΔRGB(-2,-12,-12)antialiasing coverage residue on a shared outline
AntialiasCoverage57,24 → 58,240.000533ΔRGB(-2,-10,-10)antialiasing coverage residue on a shared outline
AntialiasCoverage102,24 → 102,240.000533ΔRGB(-1,-5,-5)antialiasing coverage residue on a shared outline
AntialiasCoverage103,24 → 103,240.000533ΔRGB(-2,-10,-10)antialiasing coverage residue on a shared outline
AntialiasCoverage106,26 → 106,260.000533ΔRGB(-3,-15,-15)antialiasing coverage residue on a shared outline
AntialiasCoverage106,26 → 107,260.000533ΔRGB(-2,-8,-8)antialiasing coverage residue on a shared outline
AntialiasCoverage107,26 → 107,260.000533ΔRGB(-4,-16,-16)antialiasing coverage residue on a shared outline
AntialiasCoverage112,29 → 113,290.000533ΔRGB(-2,-10,-10)antialiasing coverage residue on a shared outline
AntialiasCoverage132,51 → 132,510.000533ΔRGB(-2,-10,-10)antialiasing coverage residue on a shared outline
AntialiasCoverage134,55 → 134,550.000533ΔRGB(-2,-11,-11)antialiasing coverage residue on a shared outline
AntialiasCoverage24,57 → 24,580.000533ΔRGB(-2,-10,-10)antialiasing coverage residue on a shared outline
AntialiasCoverage136,58 → 136,580.000533ΔRGB(-2,-8,-8)antialiasing coverage residue on a shared outline
AntialiasCoverage23,59 → 23,590.000533ΔRGB(-2,-8,-8)antialiasing coverage residue on a shared outline
AntialiasCoverage137,61 → 137,610.000533ΔRGB(-2,-8,-8)antialiasing coverage residue on a shared outline
AntialiasCoverage22,62 → 22,620.000533ΔRGB(-3,-14,-14)antialiasing coverage residue on a shared outline
AntialiasCoverage137,62 → 137,620.000533ΔRGB(-1,-5,-5)antialiasing coverage residue on a shared outline
AntialiasCoverage22,63 → 22,630.000533ΔRGB(-3,-17,-17)antialiasing coverage residue on a shared outline
AntialiasCoverage22,64 → 22,640.000533ΔRGB(-2,-11,-11)antialiasing coverage residue on a shared outline
AntialiasCoverage138,66 → 138,660.000533ΔRGB(-2,-11,-11)antialiasing coverage residue on a shared outline
source · cases/images-replaced/svg-inline-clip.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>inline svg clip-path</title>
6<style>
7  @page { size: 384px 224px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  .stage {
12    width: 240px;
13    margin: 30px;
14    background: #eeeeee;
15  }
16  svg { display: block; }
17</style>
18</head>
19<body>
20  <div class="stage">
21    <svg width="160" height="160" viewBox="0 0 160 160" xmlns="http://www.w3.org/2000/svg">
22      <defs>
23        <clipPath id="c">
24          <circle cx="80" cy="80" r="60"></circle>
25        </clipPath>
26      </defs>
27      <rect x="0" y="0" width="160" height="160" fill="#c62828" clip-path="url(#c)"></rect>
28    </svg>
29  </div>
30</body>
31</html>
PASS visually equivalent · no rejecting defect · thresholded evidence 0.02% · raw 0.02% (206 px) svg-inline-shapes · rect-circle-path-viewboxPASS via CSS-scale observation: sub-CSS shared-colour coverageAntialiasCoverageΔE 3.2
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: visually accepted coverage phase; raw antialiasing coverage residue on a shared outline
Inline SVG with a rect, circle and triangle path under a 0 0 100 100 viewBox scaled to 200x200.
regions (146 total; showing 64 representatives)

Complete component census grouped by dominant raster class; representative details are bounded.

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
ColorErr146206104,10 → 183,906total 0.04% · largest 0.001280%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage179,31 → 180,320.001280ΔRGB(-14,-9,-3)antialiasing coverage residue on a shared outline
AntialiasCoverage179,67 → 180,680.001280ΔRGB(-14,-9,-3)antialiasing coverage residue on a shared outline
AntialiasCoverage156,12 → 156,120.000640ΔRGB(-12,-7,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage157,12 → 157,120.000640ΔRGB(-12,-7,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage161,14 → 162,140.000640ΔRGB(-20,-12,-4)antialiasing coverage residue on a shared outline
AntialiasCoverage108,32 → 108,320.000640ΔRGB(-19,-12,-4)antialiasing coverage residue on a shared outline
AntialiasCoverage106,36 → 106,370.000640ΔRGB(-12,-7,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage106,37 → 106,380.000640ΔRGB(-16,-10,-4)antialiasing coverage residue on a shared outline
AntialiasCoverage182,38 → 182,380.000640ΔRGB(-14,-9,-3)antialiasing coverage residue on a shared outline
AntialiasCoverage182,61 → 182,620.000640ΔRGB(-14,-9,-3)antialiasing coverage residue on a shared outline
AntialiasCoverage106,61 → 106,620.000640ΔRGB(-16,-10,-4)antialiasing coverage residue on a shared outline
AntialiasCoverage106,63 → 106,630.000640ΔRGB(-12,-7,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage108,67 → 108,680.000640ΔRGB(-19,-12,-4)antialiasing coverage residue on a shared outline
AntialiasCoverage161,86 → 162,860.000640ΔRGB(-20,-12,-4)antialiasing coverage residue on a shared outline
AntialiasCoverage157,87 → 157,880.000640ΔRGB(-12,-7,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage156,88 → 156,880.000640ΔRGB(-12,-7,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage155,11 → 155,110.000427ΔRGB(-10,-6,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage132,12 → 132,120.000427ΔRGB(-8,-6,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage131,12 → 131,120.000427ΔRGB(-8,-6,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage159,13 → 159,130.000427ΔRGB(-11,-7,-3)antialiasing coverage residue on a shared outline
AntialiasCoverage126,14 → 126,140.000427ΔRGB(-23,-14,-5)antialiasing coverage residue on a shared outline
AntialiasCoverage125,14 → 126,140.000427ΔRGB(-18,-12,-4)antialiasing coverage residue on a shared outline
AntialiasCoverage162,14 → 162,140.000427ΔRGB(-6,-3,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage108,31 → 108,320.000427ΔRGB(-19,-12,-4)antialiasing coverage residue on a shared outline
AntialiasCoverage180,34 → 180,340.000427ΔRGB(-11,-7,-3)antialiasing coverage residue on a shared outline
AntialiasCoverage107,35 → 107,350.000427ΔRGB(-6,-3,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage181,36 → 181,360.000427ΔRGB(-14,-9,-3)antialiasing coverage residue on a shared outline
AntialiasCoverage181,63 → 181,630.000427ΔRGB(-14,-9,-3)antialiasing coverage residue on a shared outline
AntialiasCoverage107,65 → 107,650.000427ΔRGB(-6,-3,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage180,66 → 180,660.000427ΔRGB(-11,-7,-3)antialiasing coverage residue on a shared outline
AntialiasCoverage108,68 → 108,680.000427ΔRGB(-19,-12,-4)antialiasing coverage residue on a shared outline
AntialiasCoverage125,85 → 126,850.000427ΔRGB(-18,-12,-4)antialiasing coverage residue on a shared outline
AntialiasCoverage162,85 → 162,850.000427ΔRGB(-6,-3,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage126,86 → 126,860.000427ΔRGB(-23,-14,-5)antialiasing coverage residue on a shared outline
AntialiasCoverage159,87 → 159,870.000427ΔRGB(-11,-7,-3)antialiasing coverage residue on a shared outline
AntialiasCoverage131,88 → 131,880.000427ΔRGB(-8,-6,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage132,88 → 132,880.000427ΔRGB(-8,-6,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage155,88 → 155,880.000427ΔRGB(-10,-6,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage139,10 → 139,100.000213ΔRGB(-4,-3,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage149,10 → 149,100.000213ΔRGB(-8,-6,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage137,10 → 137,100.000213ΔRGB(-8,-6,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage151,10 → 151,100.000213ΔRGB(-4,-3,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage135,11 → 135,110.000213ΔRGB(-8,-6,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage153,11 → 153,110.000213ΔRGB(-4,-3,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage132,11 → 132,110.000213ΔRGB(-6,-3,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage133,11 → 133,110.000213ΔRGB(-16,-10,-4)antialiasing coverage residue on a shared outline
AntialiasCoverage130,12 → 130,120.000213ΔRGB(-6,-3,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage130,12 → 130,120.000213ΔRGB(-18,-12,-4)antialiasing coverage residue on a shared outline
AntialiasCoverage158,12 → 158,120.000213ΔRGB(-11,-7,-3)antialiasing coverage residue on a shared outline
AntialiasCoverage129,12 → 129,120.000213ΔRGB(-12,-7,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage158,12 → 158,120.000213ΔRGB(-15,-10,-3)antialiasing coverage residue on a shared outline
AntialiasCoverage128,13 → 128,130.000213ΔRGB(-6,-3,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage129,13 → 129,130.000213ΔRGB(-19,-12,-4)antialiasing coverage residue on a shared outline
AntialiasCoverage127,13 → 127,130.000213ΔRGB(-10,-6,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage160,13 → 160,130.000213ΔRGB(-12,-8,-3)antialiasing coverage residue on a shared outline
AntialiasCoverage124,15 → 124,150.000213ΔRGB(-8,-6,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage163,15 → 163,150.000213ΔRGB(-14,-9,-3)antialiasing coverage residue on a shared outline
AntialiasCoverage124,15 → 124,150.000213ΔRGB(-16,-9,-3)antialiasing coverage residue on a shared outline
AntialiasCoverage164,15 → 164,150.000213ΔRGB(-11,-7,-3)antialiasing coverage residue on a shared outline
AntialiasCoverage123,16 → 123,160.000213ΔRGB(-10,-6,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage165,16 → 165,160.000213ΔRGB(-4,-3,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage120,18 → 120,180.000213ΔRGB(-6,-3,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage168,18 → 168,180.000213ΔRGB(-12,-8,-3)antialiasing coverage residue on a shared outline
AntialiasCoverage118,19 → 118,190.000213ΔRGB(-8,-6,-2)antialiasing coverage residue on a shared outline
source · cases/images-replaced/svg-inline-shapes.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>inline svg shapes</title>
6<style>
7  @page { size: 384px 264px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  .stage {
12    width: 240px;
13    margin: 30px;
14    background: #eeeeee;
15  }
16  svg { display: block; }
17</style>
18</head>
19<body>
20  <div class="stage">
21    <svg width="200" height="200" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
22      <rect x="5" y="5" width="40" height="40" fill="#2e7d32"></rect>
23      <circle cx="72" cy="25" r="20" fill="#1565c0"></circle>
24      <path d="M10 95 L50 55 L90 95 Z" fill="#c62828"></path>
25    </svg>
26  </div>
27</body>
28</html>
PASS exact match svg-inline-leaf-transform-matrices · leaf-transform-matrices
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
Transform matrices on SVG leaf paths position and orient four independently colored strokes; catches applying transforms only to SVG groups while discarding them on graphics elements.
PASS exact match svg-inline-linear-gradient · linear-gradient-fill
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
Inline SVG rect filled with a horizontal linearGradient from blue to red.
PASS exact match svg-inline-text · text-element
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
Inline SVG text element rendered in ParitySans at 36px over a light fill.

object-fit — 100.00% verified visual parity PASS 6 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0.30% · raw 0.30% (2496 px) img-object-fit-scale-down-shrink · scale-down-contain-winsPASS via CSS-scale observation: sub-CSS shared-colour coverageAntialiasCoverageΔE 9.1
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: visually accepted coverage phase; raw antialiasing coverage residue on a shared outline
object-fit:scale-down on a 240x120 image larger than a 160x160 box behaves like contain, shrinking it to 160x80 centred.
regions (3 total; showing 3 representatives)

Complete component census grouped by dominant raster class; representative details are bounded.

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
ColorErr324960,0 → 160,1602247total 0.7% · largest 0.6%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage0,40 → 160,1200.6ΔRGB(15,8,-3)antialiasing coverage residue on a shared outline
AntialiasCoverage160,120 → 160,1600.03ΔRGB(-11,-11,-11)antialiasing coverage residue on a shared outline
AntialiasCoverage160,0 → 160,390.03ΔRGB(-11,-11,-11)antialiasing coverage residue on a shared outline
source · cases/images-replaced/img-object-fit-scale-down-shrink.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>img object-fit scale-down (contain wins)</title>
6<style>
7  @page { size: 384px 224px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  .stage { width: 240px; margin: 30px; background: #eeeeee; }
12  /* 240x120 (2:1) image larger than the 160x160 box: scale-down behaves like
13     contain, shrinking it to 160x80 centred (grey bands top and bottom). */
14  img {
15    display: block; width: 160px; height: 160px; background: #cccccc;
16    object-fit: scale-down; image-rendering: pixelated;
17  }
18</style>
19</head>
20<body>
21  <div class="stage">
22    <img alt="" width="160" height="160" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPAAAAB4CAIAAABD1OhwAAABeElEQVR4nO3UQQ3CUBRFQUrQ8dcV03VlIAwRXSMLEy0/OZ1RcPNy8pbvGA+ut7/d+R+eswfAmQRNiqBJETQpgiZF0KQImhRBkyJoUgRNiqBJETQpgiZF0KQImhRBkyJoUgRNiqBJETQpgiZF0KQImhRBkyJoUgRNiqBJETQpgiZF0KQImhRBkyJoUgRNiqBJETQpgiZF0KQImhRBkyJoUgRNiqBJETQpgiZF0KQImhRBkyJoUgRNiqBJETQpgiZF0KQImhRBkyJoUgRNiqBJee3rZ/aGWzjGNnvCLfjQpAiaFEGTImhSBE2KoEkRNCmCJkXQpAiaFEGTImhSBE2KoEkRNCmCJkXQpAiaFEGTImhSBE2KoEkRNCmCJkXQpAiaFEGTImhSBE2KoEkRNCmCJkXQpAiaFEGTImhSBE2KoEkRNCmCJkXQpAiaFEGTImhSBE2KoEkRNCmCJkXQpAiaFEGTImhSBE2KoEkRNCmCJkXQpAiaFEGT8gPT/gUoQIVHSgAAAABJRU5ErkJggg==">
23  </div>
24</body>
25</html>
PASS visually equivalent · no rejecting defect · thresholded evidence 0.06% · raw 0.06% (500 px) img-object-fit-none · nonePASS via CSS-scale observation: sub-CSS shared-colour coverageAntialiasCoverageΔE 2.6
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: visually accepted coverage phase; raw antialiasing coverage residue on a shared outline
object-fit:none draws the image at its intrinsic pixel size centred within the 160x160 box.
regions (1 total; showing 1 representative)

Complete component census grouped by dominant raster class; representative details are bounded.

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
ColorErr1500160,0 → 160,160500total 0.1% · largest 0.1%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage160,0 → 160,1600.1ΔRGB(-11,-11,-11)antialiasing coverage residue on a shared outline
source · cases/images-replaced/img-object-fit-none.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>img object-fit none</title>
6<style>
7  @page { size: 384px 224px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  .stage {
12    width: 240px;
13    margin: 30px;
14    background: #eeeeee;
15  }
16  /* object-fit none renders the image at intrinsic 8x4 px, centred in the 160x160 box. */
17  img {
18    display: block;
19    width: 160px;
20    height: 160px;
21    background: #cccccc;
22    object-fit: none;
23    image-rendering: pixelated;
24  }
25</style>
26</head>
27<body>
28  <div class="stage">
29    <img alt="" width="160" height="160" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAECAIAAAA8r+mnAAAAIElEQVR42mM4IScHR3I9NnDEgFNCzu0EHN1ZJQJHOCUAni4lgeO2HLIAAAAASUVORK5CYII=">
30  </div>
31</body>
32</html>
PASS visually equivalent · no rejecting defect · thresholded evidence 0.06% · raw 0.06% (500 px) img-object-fit-scale-down-none · scale-down-none-winsPASS via CSS-scale observation: sub-CSS shared-colour coverageAntialiasCoverageΔE 2.6
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: visually accepted coverage phase; raw antialiasing coverage residue on a shared outline
object-fit:scale-down on an 8x4 image smaller than the box picks none, drawing it at intrinsic size centred.
regions (1 total; showing 1 representative)

Complete component census grouped by dominant raster class; representative details are bounded.

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
ColorErr1500160,0 → 160,160500total 0.1% · largest 0.1%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage160,0 → 160,1600.1ΔRGB(-11,-11,-11)antialiasing coverage residue on a shared outline
source · cases/images-replaced/img-object-fit-scale-down-none.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>img object-fit scale-down (none wins)</title>
6<style>
7  @page { size: 384px 224px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  .stage { width: 240px; margin: 30px; background: #eeeeee; }
12  /* 8x4 (2:1) image far smaller than the 160x160 box: scale-down picks the
13     smaller of none and contain, so it renders at intrinsic 8x4 px centred. */
14  img {
15    display: block; width: 160px; height: 160px; background: #cccccc;
16    object-fit: scale-down; image-rendering: pixelated;
17  }
18</style>
19</head>
20<body>
21  <div class="stage">
22    <img alt="" width="160" height="160" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAECAIAAAA8r+mnAAAAIElEQVR42mM4IScHR3I9NnDEgFNCzu0EHN1ZJQJHOCUAni4lgeO2HLIAAAAASUVORK5CYII=">
23  </div>
24</body>
25</html>
PASS visually equivalent · no rejecting defect · thresholded evidence 0.03% · raw 0.03% (249 px) img-object-fit-contain · containPASS via CSS-scale observation: sub-CSS shared-colour coverageAntialiasCoverageΔE 2.6
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: visually accepted coverage phase; raw antialiasing coverage residue on a shared outline
object-fit:contain letterboxes a 2:1 image inside a 160x160 box, leaving grey bands top and bottom.
regions (2 total; showing 2 representatives)

Complete component census grouped by dominant raster class; representative details are bounded.

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
ColorErr2249160,0 → 160,160125total 0.07% · largest 0.03%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage160,120 → 160,1600.03ΔRGB(-11,-11,-11)antialiasing coverage residue on a shared outline
AntialiasCoverage160,0 → 160,390.03ΔRGB(-11,-11,-11)antialiasing coverage residue on a shared outline
source · cases/images-replaced/img-object-fit-contain.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>img object-fit contain</title>
6<style>
7  @page { size: 384px 224px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  .stage {
12    width: 240px;
13    margin: 30px;
14    background: #eeeeee;
15  }
16  /* 2:1 image in a 160x160 box; contain letterboxes it to 160x80, centred vertically. */
17  img {
18    display: block;
19    width: 160px;
20    height: 160px;
21    background: #cccccc;
22    object-fit: contain;
23    image-rendering: pixelated;
24  }
25</style>
26</head>
27<body>
28  <div class="stage">
29    <img alt="" width="160" height="160" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAECAIAAAA8r+mnAAAAIElEQVR42mM4IScHR3I9NnDEgFNCzu0EHN1ZJQJHOCUAni4lgeO2HLIAAAAASUVORK5CYII=">
30  </div>
31</body>
32</html>
PASS exact match img-object-fit-cover · cover
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
object-fit:cover fills a 160x160 box with a 2:1 image, cropping its left and right edges.
PASS exact match img-object-fit-fill · fill
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
object-fit:fill stretches a 2:1 image to completely fill a 160x160 box, distorting its aspect.

object-position — 100.00% verified visual parity PASS 7 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0.78% · raw 0.86% (2463 px) img-object-position-far-edge-length · far-edge-length-coverPASS via CSS-scale observation: sub-CSS shared-colour coverageColorValueΔE 2.9
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: visually accepted coverage phase; raw fill recolour ΔRGB(+8,+1,-13) (ΔE 2.9)
object-position:right 20px bottom 10px offsets a cover-fitted image from far edges; catches parsing right 20px as plain right alignment.
regions (2 total; showing 2 representatives)

Complete component census grouped by dominant raster class; representative details are bounded.

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
ColorErr224630,0 → 120,902182total 2.3% · largest 2.1% · max ΔE 2.9

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
ColorValue0,0 → 100,802.1ΔRGB(8,4,-8)fill recolour ΔRGB(+8,+4,-8) (ΔE 0)
AntialiasCoverage120,0 → 120,900.3ΔE 2.9 ΔRGB(-13,-13,-13)antialiasing coverage residue on a shared outline
source · cases/images-replaced/img-object-position-far-edge-length.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<style>
6  @page { size: 192px 152px; margin: 0; }
7  html { font-family: ParitySans; line-height: 1.5; }
8  * { margin: 0; box-sizing: border-box; }
9  html, body { background: #ffffff; }
10  body { padding: 30px; }
11  .photo {
12    display: block;
13    width: 120px;
14    height: 90px;
15    background: #d9d9d9;
16    object-fit: cover;
17    object-position: right 20px bottom 10px;
18    image-rendering: pixelated;
19  }
20</style>
21</head>
22<body>
23  <img class="photo" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAECAIAAAA8r+mnAAAAIElEQVR42mM4IScHR3I9NnDEgFNCzu0EHN1ZJQJHOCUAni4lgeO2HLIAAAAASUVORK5CYII=">
24</body>
25</html>
PASS visually equivalent · no rejecting defect · thresholded evidence 0.42% · raw 0.42% (657 px) img-object-position-far-edge-percent · far-edge-percent-coverPASS via CSS-scale observation: sub-CSS shared-colour coverageAntialiasCoverageΔE 34.1
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: visually accepted coverage phase; raw antialiasing coverage residue on a shared outline
object-position:right 25% bottom 25% offsets a cover-fitted image from far edges; catches treating far-edge percentages as plain 25% 25% or default center.
regions (1 total; showing 1 representative)

Complete component census grouped by dominant raster class; representative details are bounded.

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
ColorErr165732,0 → 32,70657total 1.1% · largest 1.1%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage32,0 → 32,701.1ΔRGB(-99,45,3)antialiasing coverage residue on a shared outline
source · cases/images-replaced/img-object-position-far-edge-percent.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<style>
6  @page { size: 144px 112px; margin: 0; }
7  html { font-family: ParitySans; line-height: 1.5; }
8  * { margin: 0; box-sizing: border-box; }
9  html, body { background: #ffffff; }
10  .slot {
11    width: 90px;
12    height: 70px;
13    overflow: hidden;
14    background: #c62828;
15  }
16  .slot img {
17    display: block;
18    width: 90px;
19    height: 70px;
20    object-fit: cover;
21    object-position: right 25% bottom 25%;
22    image-rendering: pixelated;
23  }
24</style>
25</head>
26<body>
27  <div class="slot">
28    <img alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAECAIAAAA8r+mnAAAAFUlEQVR42mM4pqEBR1z1enDEQD0JAMyPHNFwKtUxAAAAAElFTkSuQmCC">
29  </div>
30</body>
31</html>
PASS visually equivalent · no rejecting defect · thresholded evidence 0.09% · raw 0.09% (751 px) img-object-position-length · length-valuesPASS via CSS-scale observation: sub-CSS shared-colour coverageAntialiasCoverageΔE 14.7
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: visually accepted coverage phase; raw antialiasing coverage residue on a shared outline
object-position:10px 20px offsets a contained 2:1 image by absolute lengths from the box top-left.
regions (2 total; showing 2 representatives)

Complete component census grouped by dominant raster class; representative details are bounded.

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
ColorErr275110,0 → 160,160500total 0.2% · largest 0.1%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage160,0 → 160,1600.1ΔRGB(-4,-4,-4)antialiasing coverage residue on a shared outline
AntialiasCoverage10,20 → 10,1000.07ΔRGB(-152,-117,-3)antialiasing coverage residue on a shared outline
source · cases/images-replaced/img-object-position-length.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>img object-position length</title>
6<style>
7  @page { size: 384px 224px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  .stage { width: 240px; margin: 30px; background: #eeeeee; }
12  /* contain letterboxes the 2:1 image to 160x80; object-position 10px 20px
13     offsets it 10px from the left edge and 20px from the top of the box. */
14  img {
15    display: block; width: 160px; height: 160px; background: #cccccc;
16    object-fit: contain; object-position: 10px 20px; image-rendering: pixelated;
17  }
18</style>
19</head>
20<body>
21  <div class="stage">
22    <img alt="" width="160" height="160" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAECAIAAAA8r+mnAAAAIElEQVR42mM4IScHR3I9NnDEgFNCzu0EHN1ZJQJHOCUAni4lgeO2HLIAAAAASUVORK5CYII=">
23  </div>
24</body>
25</html>
PASS visually equivalent · no rejecting defect · thresholded evidence 0.03% · raw 0.03% (249 px) img-object-position · bottom-with-containPASS via CSS-scale observation: sub-CSS shared-colour coverageAntialiasCoverageΔE 2.6
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: visually accepted coverage phase; raw antialiasing coverage residue on a shared outline
object-position:bottom anchors a contained 2:1 image to the bottom edge of a 160x160 box.
regions (1 total; showing 1 representative)

Complete component census grouped by dominant raster class; representative details are bounded.

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
ColorErr1249160,0 → 160,79249total 0.07% · largest 0.07%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage160,0 → 160,790.07ΔRGB(-11,-11,-11)antialiasing coverage residue on a shared outline
source · cases/images-replaced/img-object-position.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>img object-position with contain</title>
6<style>
7  @page { size: 384px 224px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  .stage {
12    width: 240px;
13    margin: 30px;
14    background: #eeeeee;
15  }
16  /* contain letterboxes the 2:1 image to 160x80; object-position bottom anchors it to the box bottom. */
17  img {
18    display: block;
19    width: 160px;
20    height: 160px;
21    background: #cccccc;
22    object-fit: contain;
23    object-position: bottom;
24    image-rendering: pixelated;
25  }
26</style>
27</head>
28<body>
29  <div class="stage">
30    <img alt="" width="160" height="160" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAECAIAAAA8r+mnAAAAIElEQVR42mM4IScHR3I9NnDEgFNCzu0EHN1ZJQJHOCUAni4lgeO2HLIAAAAASUVORK5CYII=">
31  </div>
32</body>
33</html>
PASS visually equivalent · no rejecting defect · thresholded evidence 0.03% · raw 0.03% (249 px) img-object-position-percent · percentage-valuesPASS via CSS-scale observation: sub-CSS shared-colour coverageAntialiasCoverageΔE 2.6
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: visually accepted coverage phase; raw antialiasing coverage residue on a shared outline
object-position:25% 75% positions a contained 2:1 image within the free space of a 160x160 box.
regions (2 total; showing 2 representatives)

Complete component census grouped by dominant raster class; representative details are bounded.

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
ColorErr2249160,0 → 160,160187total 0.07% · largest 0.05%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage160,0 → 160,600.05ΔRGB(-11,-11,-11)antialiasing coverage residue on a shared outline
AntialiasCoverage160,140 → 160,1600.02ΔRGB(-11,-11,-11)antialiasing coverage residue on a shared outline
source · cases/images-replaced/img-object-position-percent.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>img object-position percentage</title>
6<style>
7  @page { size: 384px 224px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  .stage { width: 240px; margin: 30px; background: #eeeeee; }
12  /* contain letterboxes the 2:1 image to 160x80; object-position 25% 75%
13     anchors it 25% from the left and 75% from the top of the free space. */
14  img {
15    display: block; width: 160px; height: 160px; background: #cccccc;
16    object-fit: contain; object-position: 25% 75%; image-rendering: pixelated;
17  }
18</style>
19</head>
20<body>
21  <div class="stage">
22    <img alt="" width="160" height="160" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAECAIAAAA8r+mnAAAAIElEQVR42mM4IScHR3I9NnDEgFNCzu0EHN1ZJQJHOCUAni4lgeO2HLIAAAAASUVORK5CYII=">
23  </div>
24</body>
25</html>
PASS exact match img-object-fit-cover-default-center · cover-default-50-50
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
object-fit:cover with the default object-position 50% 50% splits the overflow evenly, showing the central strip of the image.
PASS exact match img-object-fit-cover-position · cover-left-top-crop
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
object-fit:cover with object-position:left top anchors the left edge of an overflowing 2:1 image, cropping its right half.