filters — 100.00% verified visual parity

← all categories · PASS 46 · FAIL 0 · REFERENCE-DISPUTED 1 · 47 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.

filter: url(#id) with feTurbulence and feDisplacementMap — 0.00% verified visual parity PASS 0 · FAIL 0 · REFERENCE-DISPUTED 1all categories ↑

REFERENCE-DISPUTED 10068 px · above-floor 3.18% · raw 3.20% max-page diff r2-filter-url-feturbulence-displacement · feturbulence-displacement · REFERENCE DISPUTEDColorValueΔE 45.7
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: fill recolour ΔRGB(-3,-42,-42) (ΔE 45.7)
Procedural SVG filter primitives must affect static output: An inline SVG filter referenced from CSS contains a non-feColorMatrix primitive or unsupported matrix form. Catches wrong implementation: CSS filter:url() resolver extracts only a narrow feColorMatrix subset and skips the primitive.
reference dispute: Filter Effects 1 section 9.21 supplies the exact feTurbulence algorithm: zero and over-length random gradient vectors are rejected and consume a new pseudorandom pair. Chromium PDF and Firefox screen output instead agree with the legacy normalize-every-pair field; authored position controls confirm Chromium still uses the required local coordinate system. Its PDF is therefore a compatibility canary, not a normative pixel oracle.
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
ColorErr161006826,36 → 133,1039996total 3.4% · largest 3.3% · max ΔE 45.7

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
ColorValue34,36 → 133,1033.3ΔE 45.7 ΔRGB(-3,-44,-44)fill recolour ΔRGB(-3,-44,-44) (ΔE 45.7)
ColorValue124,64 → 124,650.002665ΔRGB(0,-8,-8)fill recolour ΔRGB(+0,-8,-8) (ΔE 0)
ColorValue124,66 → 124,670.002665ΔRGB(0,-17,-17)fill recolour ΔRGB(+0,-17,-17) (ΔE 0)
ColorValue102,84 → 103,850.001999ΔRGB(1,-12,-12)fill recolour ΔRGB(+1,-12,-12) (ΔE 0)
ColorValue77,95 → 77,950.001999ΔRGB(0,-29,-29)fill recolour ΔRGB(+0,-29,-29) (ΔE 0)
ColorValue50,37 → 50,370.001332ΔRGB(1,49,49)fill recolour ΔRGB(+1,+49,+49) (ΔE 0)
ColorValue38,50 → 38,500.001332ΔRGB(1,43,43)fill recolour ΔRGB(+1,+43,+43) (ΔE 0)
ColorValue36,62 → 36,630.001332ΔRGB(2,86,86)fill recolour ΔRGB(+2,+86,+86) (ΔE 0)
ColorValue124,65 → 124,660.001332ΔRGB(0,-16,-16)fill recolour ΔRGB(+0,-16,-16) (ΔE 0)
ColorValue102,85 → 102,850.001332ΔRGB(0,-38,-38)fill recolour ΔRGB(+0,-38,-38) (ΔE 0)
ColorValue100,86 → 100,860.001332ΔRGB(0,-35,-35)fill recolour ΔRGB(+0,-35,-35) (ΔE 0)
ColorValue79,91 → 80,910.001332ΔRGB(0,-21,-21)fill recolour ΔRGB(+0,-21,-21) (ΔE 0)
ColorValue49,92 → 49,920.001332ΔRGB(0,-27,-27)fill recolour ΔRGB(+0,-27,-27) (ΔE 0)
ColorValue121,94 → 121,940.001332ΔRGB(0,-27,-27)fill recolour ΔRGB(+0,-27,-27) (ΔE 0)
ColorValue28,101 → 28,1010.001332ΔRGB(1,20,20)fill recolour ΔRGB(+1,+20,+20) (ΔE 0)
ColorValue26,101 → 27,1020.001332ΔRGB(1,18,18)fill recolour ΔRGB(+1,+18,+18) (ΔE 0)
source · cases/filters/r2-filter-url-feturbulence-displacement.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 feturbulence-displacement</title>
6<style>
7  @page { size: 224px 144px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  svg.defs { position: absolute; width: 0; height: 0; overflow: hidden; }
12  .stage { width: 220px; height: 140px; padding: 36px 34px; background: #d9d9d9; }
13  .box { width: 90px; height: 58px; background: #d50000; filter: url(#r2f); }
14</style>
15</head>
16<body>
17  <svg class="defs" width="0" height="0" aria-hidden="true" focusable="false"><defs><filter id="r2f" x="-20%" y="-20%" width="140%" height="140%"><feTurbulence type="turbulence" baseFrequency="0.08" numOctaves="1" seed="7" result="noise"/><feDisplacementMap in="SourceGraphic" in2="noise" scale="18" xChannelSelector="R" yChannelSelector="G"/></filter></defs></svg>
18  <div class="stage"><div class="box"></div></div>
19</body>
20</html>

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

PASS visually equivalent · no rejecting defect · thresholded evidence 0.13% · raw 0.13% (469 px) r2-backdrop-filter-blur-stripes · backdrop-blurPASS via CSS-scale observation: sub-CSS shared-colour coverageAntialiasCoverageΔE 4.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
backdrop-filter blur must sample content behind the element: A translucent panel overlays hard vertical stripes; backdrop-filter: blur(8px) should smear the stripes under the panel only. Catches wrong implementation: Renderer treats backdrop-filter as unsupported or applies normal filter to the panel itself.
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
ColorErr146925,115 → 175,115469total 0.1% · largest 0.1%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage25,115 → 175,1150.1ΔRGB(-27,-26,-15)antialiasing coverage residue on a shared outline
source · cases/filters/r2-backdrop-filter-blur-stripes.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 backdrop filter blur stripes</title>
6<style>
7  @page { size: 240px 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: 240px; height: 150px; padding: 25px; background: repeating-linear-gradient(to right, #1a237e 0 14px, #ffeb3b 14px 28px); }
12  .panel { width: 150px; height: 90px; background: rgba(255,255,255,0.35); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); }
13</style>
14</head>
15<body>
16  <div class="stage"><div class="panel"></div></div>
17</body>
18</html>

color-interpolation-filters — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0% · raw 15.98% (44940 px) r2-filter-color-interpolation-filters-srgb · color-interpolation-filters-srgbPASS via raw same-coordinate visibility policyColorValueΔE 0.4
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: fill recolour ΔRGB(-1,-1,-1) (ΔE 0.4)
color-interpolation-filters must switch SVG filter color space: Two identical muted boxes use feColorMatrix saturate(0); one filter defaults to linearRGB and one explicitly uses sRGB, producing different grays. Catches wrong implementation: Implementation ignores color-interpolation-filters and produces identical gray boxes.
regions (12 total; showing 12 representatives)

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

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
ColorErr12449400,0 → 180,6044743total 41.9% · largest 41.7% · max ΔE 0.4

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
ColorValue0,0 → 76,6041.7ΔE 0.4 ΔRGB(-1,-1,-1)fill recolour ΔRGB(-1,-1,-1) (ΔE 0.4)
AntialiasCoverage104,0 → 104,600.2ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage0,0 → 0,00.000932ΔRGB(-2,-2,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage76,0 → 76,00.000932ΔRGB(-2,-2,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage104,0 → 104,00.000932ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage180,0 → 180,00.000932ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage180,0 → 180,00.000932ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage180,60 → 180,600.000932ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage0,60 → 0,600.000932ΔRGB(-2,-2,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage76,60 → 76,600.000932ΔRGB(-2,-2,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage104,60 → 104,600.000932ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage180,60 → 180,600.000932ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
source · cases/filters/r2-filter-color-interpolation-filters-srgb.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 color interpolation filters srgb</title>
6<style>
7  @page { size: 240px 120px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  svg.defs { position: absolute; width: 0; height: 0; overflow: hidden; }
12  .stage { display: flex; gap: 28px; width: 240px; height: 120px; padding: 30px; background: #ffffff; }
13  .box { width: 76px; height: 60px; background: #b65a21; }
14  .linear { filter: url(#lin); }
15  .srgb { filter: url(#srgb); }
16</style>
17</head>
18<body>
19  <svg class="defs" width="0" height="0" aria-hidden="true" focusable="false"><defs>
20    <filter id="lin"><feColorMatrix type="saturate" values="0"/></filter>
21    <filter id="srgb" color-interpolation-filters="sRGB"><feColorMatrix type="saturate" values="0"/></filter>
22  </defs></svg>
23  <div class="stage"><div class="box linear"></div><div class="box srgb"></div></div>
24</body>
25</html>

filter compositing order with clip-path — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0.005289% · raw 2.13% (6430 px) r2-filter-before-clip-path-order · filter-before-clip-pathPASS via CSS-scale observation: sub-CSS shared-colour coverageAntialiasCoverageΔ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 antialiasing coverage residue on a shared outline
filter must be applied before clip-path: A blurred red square is clipped to a circle; the blur is first computed then the circular clip removes all outside-circle paint. Catches wrong implementation: Renderer clips first and then blurs, creating a red feather outside the circular clip.
regions (42 total; showing 42 representatives)

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

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
ColorErr4264301,1 → 92,92448total 7.7% · largest 0.5% · max ΔE 0.2

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage85,22 → 86,700.5ΔE 0.2 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage22,85 → 70,860.5ΔE 0.2 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
ColorValue88,28 → 90,640.5ΔE 0.2 ΔRGB(0,-1,-1)fill recolour ΔRGB(+0,-1,-1) (ΔE 0.2)
ColorValue28,88 → 64,900.5ΔE 0.2 ΔRGB(0,-1,-1)fill recolour ΔRGB(+0,-1,-1) (ΔE 0.2)
ColorValue86,24 → 87,680.5ΔE 0.2fill colour differs (ΔE 0.2)
ColorValue24,86 → 68,870.5ΔE 0.2fill colour differs (ΔE 0.2)
ColorValue90,32 → 92,600.4ΔE 0.2 ΔRGB(0,-1,-1)fill recolour ΔRGB(+0,-1,-1) (ΔE 0.2)
ColorValue32,90 → 60,920.4ΔE 0.2 ΔRGB(0,-1,-1)fill recolour ΔRGB(+0,-1,-1) (ΔE 0.2)
AntialiasCoverage84,20 → 84,720.4ΔE 0.2 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage20,84 → 72,840.4ΔE 0.2 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
ColorValue82,18 → 83,750.2ΔE 0.2 ΔRGB(1,0,0)fill recolour ΔRGB(+1,+0,+0) (ΔE 0.2)
ColorValue18,82 → 75,830.2ΔE 0.2 ΔRGB(1,0,0)fill recolour ΔRGB(+1,+0,+0) (ΔE 0.2)
ColorValue18,10 → 75,100.2ΔE 0.2 ΔRGB(1,0,0)fill recolour ΔRGB(+1,+0,+0) (ΔE 0.2)
ColorValue10,18 → 10,750.2ΔE 0.2 ΔRGB(1,0,0)fill recolour ΔRGB(+1,+0,+0) (ΔE 0.2)
AntialiasCoverage20,8 → 72,80.2ΔE 0.2 ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage8,20 → 8,720.2ΔE 0.2 ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
ColorValue22,7 → 70,70.2ΔE 0.2 ΔRGB(0,1,1)fill recolour ΔRGB(+0,+1,+1) (ΔE 0.2)
ColorValue7,22 → 7,700.2ΔE 0.2 ΔRGB(0,1,1)fill recolour ΔRGB(+0,+1,+1) (ΔE 0.2)
AntialiasCoverage24,6 → 68,60.2ΔE 0.2 ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage6,24 → 6,680.2ΔE 0.2 ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage88,26 → 88,660.1ΔE 0.2 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage26,88 → 66,880.1ΔE 0.2 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
ColorValue28,4 → 64,40.1ΔE 0.2 ΔRGB(1,0,0)fill recolour ΔRGB(+1,+0,+0) (ΔE 0.2)
ColorValue4,28 → 4,640.1ΔE 0.2 ΔRGB(1,0,0)fill recolour ΔRGB(+1,+0,+0) (ΔE 0.2)
AntialiasCoverage29,3 → 62,30.1ΔE 0.2 ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage3,29 → 3,620.1ΔE 0.2 ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage40,1 → 53,10.05ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage1,40 → 1,530.05ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage92,41 → 92,510.04ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage41,92 → 51,920.04ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage39,1 → 39,10.001197ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage53,1 → 53,10.001197ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage26,4 → 26,40.001197ΔRGB(2,9,9)antialiasing coverage residue on a shared outline
AntialiasCoverage66,4 → 66,40.001197ΔRGB(2,10,10)antialiasing coverage residue on a shared outline
AntialiasCoverage82,17 → 82,170.001197ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage4,26 → 4,260.001197ΔRGB(2,9,9)antialiasing coverage residue on a shared outline
AntialiasCoverage1,39 → 1,390.001197ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage1,53 → 1,530.001197ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage4,66 → 4,660.001197ΔRGB(2,10,10)antialiasing coverage residue on a shared outline
AntialiasCoverage82,75 → 82,750.001197ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage17,82 → 17,820.001197ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage75,82 → 75,820.001197ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
source · cases/filters/r2-filter-before-clip-path-order.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 filter before clip path order</title>
6<style>
7  @page { size: 176px 176px; 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: 170px; height: 170px; padding: 25px; background: #ffffff; }
12  .box { width: 120px; height: 120px; background: #d32f2f; filter: blur(10px); clip-path: circle(46px at 60px 60px); }
13</style>
14</head>
15<body>
16  <div class="stage"><div class="box"></div></div>
17</body>
18</html>

filter compositing order with mask-image — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0.37% · raw 0.40% (1061 px) r2-filter-before-mask-image-order · filter-before-mask-imagePASS via CSS-scale observation: stable same-coordinate outline phaseExtramissing 0.4%extra 0.8%Δ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 candidate adds paint absent from reference (0.8%)
filter must be applied before mask-image: A blurred red rectangle is masked by a hard half-plane gradient; blur is computed before the mask clips the right half. Catches wrong implementation: Renderer masks first and then blurs, bleeding red into the transparent half.
regions (63 total; showing 63 representatives)

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

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
Extra14870,0 → 75,80487total 0.8% · largest 0.8%
ColorErr613230,0 → 75,80251total 0.5% · largest 0.4% · max ΔE 0.3
Missing125176,0 → 76,80251total 0.4% · largest 0.4%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
Extra0,0 → 75,800.8candidate adds paint absent from reference (0.8%)
Missing76,0 → 76,800.4candidate lacks paint present in reference (0.4%)
AntialiasCoverage75,0 → 75,800.4ΔRGB(22,104,104)antialiasing coverage residue on a shared outline
AntialiasCoverage12,75 → 13,750.008372ΔE 0.3 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage16,4 → 17,40.003349ΔE 0.3 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage13,5 → 14,50.003349ΔE 0.3 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage5,12 → 5,120.003349ΔE 0.3 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage8,15 → 9,150.003349ΔE 0.2 ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage1,16 → 1,160.003349ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage8,65 → 9,650.003349ΔE 0.2 ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage14,71 → 14,710.003349ΔE 0.2 ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage16,72 → 16,720.003349ΔE 0.2 ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage17,0 → 17,00.001674ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage5,1 → 5,10.001674ΔE 0.3 ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage16,4 → 16,40.001674ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage2,4 → 2,40.001674ΔE 0.3 ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage16,4 → 16,40.001674ΔE 0.3 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage14,5 → 14,50.001674ΔE 0.2 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage13,5 → 13,50.001674ΔE 0.3 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage21,5 → 21,50.001674ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage12,5 → 12,50.001674ΔE 0.2 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage15,6 → 15,60.001674ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage9,7 → 9,70.001674ΔE 0.3 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage8,8 → 8,80.001674ΔE 0.3 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage8,8 → 8,80.001674ΔE 0.3 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage8,8 → 8,80.001674ΔE 0.3 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage7,9 → 7,90.001674ΔE 0.3 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage7,10 → 7,100.001674ΔE 0.2 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage6,10 → 6,100.001674ΔE 0.3 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage6,11 → 6,110.001674ΔE 0.2 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage6,11 → 6,110.001674ΔE 0.3 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage10,12 → 10,120.001674ΔE 0.2 ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage1,12 → 1,120.001674ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage5,13 → 5,130.001674ΔE 0.2 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage6,15 → 6,150.001674ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage0,17 → 0,170.001674ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage4,17 → 4,170.001674ΔE 0.3 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage1,18 → 1,180.001674ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage8,18 → 8,180.001674ΔE 0.2 ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage21,20 → 21,200.001674ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage20,21 → 20,210.001674ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage21,60 → 21,600.001674ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage1,62 → 1,620.001674ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage0,63 → 0,630.001674ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage4,63 → 4,630.001674ΔE 0.2 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage1,64 → 1,640.001674ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage21,64 → 21,640.001674ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage5,67 → 5,670.001674ΔE 0.2 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage9,67 → 9,670.001674ΔE 0.2 ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage1,68 → 1,680.001674ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage5,68 → 5,680.001674ΔE 0.3 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage6,70 → 6,700.001674ΔE 0.3 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage7,70 → 7,700.001674ΔE 0.2 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage7,71 → 7,710.001674ΔE 0.3 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage7,71 → 7,710.001674ΔE 0.3 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage9,73 → 9,730.001674ΔE 0.3 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage10,74 → 10,740.001674ΔE 0.3 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage20,75 → 20,750.001674ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage13,75 → 13,750.001674ΔE 0.3 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage18,76 → 18,760.001674ΔE 0.3 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage1,76 → 1,760.001674ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage18,79 → 18,790.001674ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage8,80 → 8,800.001674ΔE 0.3 ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
source · cases/filters/r2-filter-before-mask-image-order.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 filter before mask image order</title>
6<style>
7  @page { size: 200px 136px; 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; height: 130px; padding: 25px; background: #ffffff; }
12  .box { width: 150px; height: 80px; background: #d32f2f; filter: blur(9px); mask-image: linear-gradient(to right, #000 0 50%, transparent 50% 100%); -webkit-mask-image: linear-gradient(to right, #000 0 50%, transparent 50% 100%); }
13</style>
14</head>
15<body>
16  <div class="stage"><div class="box"></div></div>
17</body>
18</html>

filter establishes stacking context — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0.06% · raw 0.58% (1829 px) r2-filter-stacking-context-negative-z · filter-stacking-contextPASS via CSS-scale observation: sub-CSS shared-colour coverageAntialiasCoverageΔE 3.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
filter-created stacking contexts must contain negative z-index descendants: A filtered parent contains a negative z-index child and sits on a gray page; the child cannot escape behind outside content. Catches wrong implementation: Renderer applies filter paint but does not create a stacking context, letting the child paint behind the page/sibling order incorrectly.
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
ColorErr2182915,5 → 150,921358total 1.4% · largest 1.0% · max ΔE 3.1

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage15,6 → 150,921.0ΔRGB(0,0,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage15,5 → 150,210.3ΔE 3.1 ΔRGB(1,0,-1)antialiasing coverage residue on a shared outline
source · cases/filters/r2-filter-stacking-context-negative-z.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 filter stacking context negative z</title>
6<style>
7  @page { size: 224px 144px; 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 { position: relative; width: 220px; height: 140px; background: #ffffff; }
12  .sibling { position: absolute; top: 22px; left: 22px; width: 150px; height: 86px; background: #455a64; }
13  .filtered { position: absolute; top: 44px; left: 54px; width: 118px; height: 70px; filter: brightness(1); }
14  .neg { position: absolute; z-index: -1; top: -16px; left: -16px; width: 108px; height: 68px; background: #ffd600; }
15  .front { width: 118px; height: 70px; background: rgba(46,125,50,0.85); }
16</style>
17</head>
18<body>
19  <div class="stage"><div class="sibling"></div><div class="filtered"><div class="neg"></div><div class="front"></div></div></div>
20</body>
21</html>

filter value grammar with an invalid argument — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0% · raw 0.24% (633 px) filter-invalid-argument-preserves-prior-filter · invalid-declaration-discardPASS via raw same-coordinate visibility policyAntialiasCoverageΔE 0.3
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: antialiasing coverage residue on a shared outline
A negative blur radius invalidates the later filter declaration, so the earlier filter:opacity(40%) continues to apply.
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
ColorErr26330,0 → 120,80630total 0.7% · largest 0.7% · max ΔE 0.3

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage0,0 → 120,800.7ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage120,80 → 120,800.003158ΔE 0.3 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
source · cases/filters/filter-invalid-argument-preserves-prior-filter.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>invalid filter argument preserves prior filter</title>
6<style>
7  @page { size: 184px 144px; margin: 0; }
8  * { margin: 0; box-sizing: border-box; }
9  html, body { background: #ffffff; }
10  .target {
11    width: 120px;
12    height: 80px;
13    margin: 30px;
14    background: #c62828;
15    filter: opacity(40%);
16    filter: blur(-5px);
17  }
18</style>
19</head>
20<body><div class="target"></div></body>
21</html>

filter value grammar with an unknown function — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS exact match r2-filter-invalid-function-chain · unknown-function-invalidates-list
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
Invalid filter functions must invalidate the whole declaration: A red block has filter: blur(8px) bogus(1); the whole declaration is invalid so it remains crisp. Catches wrong implementation: Parser ignores bogus(1) and still applies blur(8px).

filter: blur() — 100.00% verified visual parity PASS 3 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0% · raw 0.006500% (52 px) filter-blur-img · on-img-rasterPASS via raw same-coordinate visibility policyAntialiasCoverageΔE 0.3
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: antialiasing coverage residue on a shared outline
filter: blur() applied to an <img> raster; blur of image rasters is the implemented path.
regions (47 total; showing 47 representatives)

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

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
ColorErr47522,4 → 176,1752total 0.02% · largest 0.000642% · max ΔE 0.7

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage166,16 → 166,170.000642ΔE 0.3 ΔRGB(0,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage159,98 → 159,980.000642ΔE 0.3 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage17,159 → 17,1590.000642ΔE 0.3 ΔRGB(0,1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage18,161 → 18,1610.000642ΔE 0.3 ΔRGB(0,1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage19,161 → 19,1620.000642ΔE 0.3 ΔRGB(0,1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage9,4 → 9,40.000321ΔE 0.4 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage15,4 → 15,40.000321ΔE 0.4 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage10,8 → 10,80.000321ΔE 0.3 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage8,11 → 8,110.000321ΔE 0.3 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage166,11 → 166,110.000321ΔE 0.3 ΔRGB(0,1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage162,12 → 162,120.000321ΔE 0.3 ΔRGB(0,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage2,14 → 2,140.000321ΔE 0.4 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage11,18 → 11,180.000321ΔE 0.3 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage167,18 → 167,180.000321ΔE 0.2 ΔRGB(-1,0,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage2,18 → 2,180.000321ΔE 0.4 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage10,84 → 10,840.000321ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage172,84 → 172,840.000321ΔE 0.3 ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage168,89 → 168,890.000321ΔE 0.3 ΔRGB(0,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage168,89 → 168,890.000321ΔE 0.3 ΔRGB(0,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage10,95 → 10,950.000321ΔE 0.2 ΔRGB(0,0,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage172,96 → 172,960.000321ΔE 0.4 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage161,97 → 161,970.000321ΔE 0.3 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage168,98 → 168,980.000321ΔE 0.3 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage170,160 → 170,1600.000321ΔE 0.3 ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage2,161 → 2,1610.000321ΔE 0.4 ΔRGB(0,0,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage176,161 → 176,1610.000321ΔE 0.7 ΔRGB(0,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage9,161 → 9,1610.000321ΔE 0.3 ΔRGB(0,1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage11,161 → 11,1610.000321ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage167,161 → 167,1610.000321ΔE 0.1 ΔRGB(0,0,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage9,163 → 9,1630.000321ΔE 0.3 ΔRGB(0,1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage170,164 → 170,1640.000321ΔE 0.3 ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage2,164 → 2,1640.000321ΔE 0.4 ΔRGB(0,0,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage176,164 → 176,1640.000321ΔE 0.7 ΔRGB(0,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage10,164 → 10,1640.000321ΔE 0.3 ΔRGB(0,1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage11,166 → 11,1660.000321ΔE 0.3 ΔRGB(0,1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage8,168 → 8,1680.000321ΔE 0.3 ΔRGB(0,0,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage170,168 → 170,1680.000321ΔE 0.5 ΔRGB(0,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage13,168 → 13,1680.000321ΔE 0.3 ΔRGB(0,1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage97,168 → 97,1680.000321ΔE 0.3 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage97,169 → 97,1690.000321ΔE 0.3 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage15,169 → 15,1690.000321ΔE 0.3 ΔRGB(0,1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage10,170 → 10,1700.000321ΔE 0.3 ΔRGB(0,0,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage168,170 → 168,1700.000321ΔE 0.5 ΔRGB(0,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage15,174 → 15,1740.000321ΔE 0.4 ΔRGB(0,0,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage163,174 → 163,1740.000321ΔE 0.6 ΔRGB(0,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage9,175 → 9,1750.000321ΔE 0.4 ΔRGB(0,0,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage169,175 → 169,1750.000321ΔE 0.7 ΔRGB(0,-1,0)antialiasing coverage residue on a shared outline
source · cases/filters/filter-blur-img.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>filter blur on img</title>
6<style>
7  @page { size: 320px 256px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  .frame { padding: 40px; }
12  img.t {
13    width: 160px;
14    height: 160px;
15    image-rendering: pixelated;
16    filter: blur(5px);
17  }
18</style>
19</head>
20<body>
21  <div class="frame"><img class="t" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAc0lEQVR42u3QMQEAIAwDMORUBGKRMxF4ARk7liMGsip5nXJ6LQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIGBAQHa9TrfSSoAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBgQ8AFCMfIOlbOSBgAAAABJRU5ErkJggg=="></div>
22</body>
23</html>
PASS visually equivalent · no rejecting defect · thresholded evidence 0% · raw 0.006427% (57 px) filter-on-box-blur · on-box-vs-imgPASS via raw same-coordinate visibility policyAntialiasCoverageΔE 0.3
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: antialiasing coverage residue on a shared outline
filter: blur() on a bordered solid box: should soften both fill and border edge, contrasting with the img-raster blur path.
regions (45 total; showing 45 representatives)

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

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
ColorErr45579,9 → 191,1904total 0.01% · largest 0.001044% · max ΔE 0.3

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage185,185 → 185,1850.001044ΔE 0.3 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage187,18 → 188,190.000783ΔE 0.3 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage188,9 → 188,90.000522ΔE 0.3 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage190,12 → 190,120.000522ΔE 0.3 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage190,12 → 190,120.000522ΔE 0.3 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage19,184 → 19,1850.000522ΔE 0.2 ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage188,186 → 188,1870.000522ΔE 0.3 ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage9,187 → 9,1880.000522ΔE 0.3 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage12,190 → 12,1900.000522ΔE 0.3 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage16,14 → 16,140.000261ΔE 0.2 ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage189,14 → 189,140.000261ΔE 0.3 ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage191,14 → 191,140.000261ΔE 0.3 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage19,17 → 19,170.000261ΔE 0.2 ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage179,17 → 179,170.000261ΔE 0.2 ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage18,18 → 18,180.000261ΔE 0.2 ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage180,18 → 180,180.000261ΔE 0.2 ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage18,18 → 18,180.000261ΔE 0.2 ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage17,19 → 17,190.000261ΔE 0.2 ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage181,19 → 181,190.000261ΔE 0.2 ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage17,179 → 17,1790.000261ΔE 0.2 ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage181,179 → 181,1790.000261ΔE 0.2 ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage188,179 → 188,1790.000261ΔE 0.3 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage187,179 → 187,1790.000261ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage18,179 → 18,1790.000261ΔE 0.2 ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage180,180 → 180,1800.000261ΔE 0.2 ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage18,180 → 18,1800.000261ΔE 0.2 ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage19,180 → 19,1800.000261ΔE 0.2 ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage182,183 → 182,1830.000261ΔE 0.2 ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage191,183 → 191,1830.000261ΔE 0.3 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage189,183 → 189,1830.000261ΔE 0.3 ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage17,184 → 17,1840.000261ΔE 0.2 ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage18,184 → 18,1840.000261ΔE 0.2 ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage180,184 → 180,1840.000261ΔE 0.2 ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage181,184 → 181,1840.000261ΔE 0.2 ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage191,184 → 191,1840.000261ΔE 0.3 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage180,184 → 180,1840.000261ΔE 0.2 ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage17,187 → 17,1870.000261ΔE 0.3 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage19,187 → 19,1870.000261ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage179,187 → 179,1870.000261ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage181,187 → 181,1870.000261ΔE 0.3 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage179,187 → 179,1870.000261ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage186,188 → 186,1880.000261ΔE 0.3 ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage185,189 → 185,1890.000261ΔE 0.3 ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage179,190 → 179,1900.000261ΔE 0.3 ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage185,190 → 185,1900.000261ΔE 0.3 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
source · cases/filters/filter-on-box-blur.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>filter blur on box with border content</title>
6<style>
7  @page { size: 344px 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  .frame { padding: 40px; }
12  /* Box with a thick border + solid fill: blur should soften BOTH the fill and
13     the border edge. ironpress only blurs background/image rasters, so the
14     bordered foreground edge is the discriminator vs filter-on-img. */
15  .box {
16    width: 180px;
17    height: 180px;
18    background-color: #ef6c00;
19    border: 12px solid #4a148c;
20    filter: blur(5px);
21  }
22</style>
23</head>
24<body>
25  <div class="frame"><div class="box"></div></div>
26</body>
27</html>
PASS visually equivalent · no rejecting defect · thresholded evidence 0% · raw 0.004190% (33 px) filter-blur-box · on-box-backgroundPASS via raw same-coordinate visibility policyAntialiasCoverageΔE 0.3
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: antialiasing coverage residue on a shared outline
filter: blur() applied to a box with a solid background-color fill.
regions (23 total; showing 23 representatives)

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

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
ColorErr23333,4 → 217,1525total 0.009555% · largest 0.001448% · max ΔE 0.5

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage23,148 → 24,1480.001448ΔE 0.1 ΔRGB(0,0,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage196,148 → 197,1480.001448ΔE 0.1 ΔRGB(0,0,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage6,16 → 6,160.000579ΔE 0.4 ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage213,16 → 213,160.000579ΔE 0.4 ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage18,4 → 18,40.000290ΔE 0.5 ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage13,4 → 13,40.000290ΔE 0.5 ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage207,4 → 207,40.000290ΔE 0.5 ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage17,6 → 17,60.000290ΔE 0.4 ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage203,6 → 203,60.000290ΔE 0.4 ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage8,12 → 8,120.000290ΔE 0.4 ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage212,12 → 212,120.000290ΔE 0.4 ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage7,14 → 7,140.000290ΔE 0.4 ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage213,14 → 213,140.000290ΔE 0.4 ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage3,19 → 3,190.000290ΔE 0.5 ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage217,19 → 217,190.000290ΔE 0.5 ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage3,141 → 3,1410.000290ΔE 0.5 ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage217,141 → 217,1410.000290ΔE 0.5 ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage13,142 → 13,1420.000290ΔE 0.1 ΔRGB(0,0,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage207,142 → 207,1420.000290ΔE 0.1 ΔRGB(0,0,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage8,149 → 8,1490.000290ΔE 0.4 ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage212,149 → 212,1490.000290ΔE 0.4 ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage12,152 → 12,1520.000290ΔE 0.4 ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage208,152 → 208,1520.000290ΔE 0.4 ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
source · cases/filters/filter-blur-box.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>filter blur on box</title>
6<style>
7  @page { size: 360px 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  /* Padding so blurred edges stay on-page. */
12  .frame { padding: 40px; }
13  .box {
14    width: 200px;
15    height: 140px;
16    background-color: #1565c0;
17    filter: blur(6px);
18  }
19</style>
20</head>
21<body>
22  <div class="frame"><div class="box"></div></div>
23</body>
24</html>

filter: blur() on a container group — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0% · raw 4.92% (22319 px) r2-filter-blur-group-descendants · blur-group-descendantsPASS via raw same-coordinate visibility policyColorValueΔE 0.3
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: fill recolour ΔRGB(-1,-1,+0) (ΔE 0.3)
blur() must apply to the whole element subtree: A container with a blue background, a yellow child, and text is blurred as one source graphic. Catches wrong implementation: Only the container background is blurred, leaving child paint and glyphs crisp.
regions (1206 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
ColorErr1206223190,0 → 236,14617787total 6.6% · largest 5.2% · max ΔE 0.8

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
ColorValue12,68 → 94,1025.2ΔE 0.3 ΔRGB(-1,-1,0)fill recolour ΔRGB(-1,-1,+0) (ΔE 0.3)
AntialiasCoverage7,144 → 222,1440.2ΔE 0.5 ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage9,137 → 220,1370.2ΔE 0.2 ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage235,7 → 235,1320.1ΔE 0.8 ΔRGB(0,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage9,74 → 9,960.02ΔE 0.3 ΔRGB(0,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage10,76 → 10,930.02ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage29,99 → 34,1010.01ΔE 0.3 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage12,79 → 12,910.01ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage91,93 → 94,960.009139ΔE 0.4 ΔRGB(-1,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage61,76 → 62,830.007075ΔE 0.2 ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
ColorValue81,68 → 83,690.005601ΔE 0.3 ΔRGB(-1,-1,0)fill recolour ΔRGB(-1,-1,+0) (ΔE 0.3)
AntialiasCoverage39,69 → 42,690.005307ΔE 0.3 ΔRGB(0,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage88,92 → 90,940.005307ΔE 0.4 ΔRGB(0,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage93,95 → 95,970.005307ΔE 0.2antialiasing coverage residue on a shared outline
AntialiasCoverage92,96 → 93,980.005307ΔE 0.3antialiasing coverage residue on a shared outline
AntialiasCoverage86,69 → 88,710.005012ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage65,86 → 67,870.005012ΔE 0.3 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage89,69 → 91,710.004717ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage36,68 → 38,690.004422ΔE 0.3 ΔRGB(0,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage76,100 → 79,1010.004422ΔE 0.3 ΔRGB(0,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage82,99 → 83,1010.004127ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage21,68 → 22,690.003833ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage56,75 → 57,770.003833ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage92,99 → 94,1000.003833ΔE 0.3 ΔRGB(0,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage74,100 → 76,1020.003538ΔE 0.3 ΔRGB(0,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage45,70 → 46,720.003243ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage52,76 → 52,790.003243ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage95,80 → 95,820.003243ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage66,81 → 66,840.003243ΔE 0.2 ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage94,84 → 94,850.003243ΔE 0.2antialiasing coverage residue on a shared outline
AntialiasCoverage89,88 → 90,900.003243ΔE 0.3 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage72,99 → 74,1000.003243ΔE 0.3 ΔRGB(0,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage45,102 → 47,1020.003243ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage69,70 → 69,720.002948ΔE 0.2 ΔRGB(0,0,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage56,71 → 57,730.002948ΔE 0.2 ΔRGB(0,0,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage93,92 → 94,920.002948ΔE 0.4 ΔRGB(0,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage54,102 → 57,1020.002948ΔE 0.3 ΔRGB(0,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage222,146 → 225,1460.002948ΔE 0.5 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage13,70 → 14,720.002653ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage31,71 → 31,730.002653ΔE 0.4 ΔRGB(0,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage58,71 → 58,730.002653ΔE 0.4 ΔRGB(0,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage30,74 → 31,760.002653ΔE 0.3 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage65,81 → 65,840.002653ΔE 0.4 ΔRGB(0,1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage92,90 → 92,910.002653ΔE 0.3 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage92,91 → 93,920.002653ΔE 0.3antialiasing coverage residue on a shared outline
AntialiasCoverage13,98 → 14,990.002653ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage50,100 → 51,1010.002653ΔE 0.2antialiasing coverage residue on a shared outline
AntialiasCoverage23,103 → 26,1030.002653ΔE 0.3 ΔRGB(0,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage61,103 → 64,1030.002653ΔE 0.3 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage5,146 → 7,1460.002653ΔE 0.5 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage44,68 → 44,700.002358ΔE 0.2antialiasing coverage residue on a shared outline
AntialiasCoverage10,71 → 10,730.002358ΔE 0.1 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage93,72 → 94,730.002358ΔE 0.3 ΔRGB(0,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage58,75 → 58,760.002358ΔE 0.3 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage11,76 → 12,780.002358ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage94,77 → 95,780.002358ΔE 0.4antialiasing coverage residue on a shared outline
AntialiasCoverage53,79 → 53,810.002358ΔE 0.3 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage88,91 → 89,920.002358ΔE 0.4 ΔRGB(0,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage11,91 → 12,930.002358ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage10,97 → 10,990.002358ΔE 0.1 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage90,98 → 90,990.002358ΔE 0.2antialiasing coverage residue on a shared outline
AntialiasCoverage236,4 → 236,60.002064ΔE 0.8 ΔRGB(0,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage50,70 → 50,720.002064ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage12,73 → 13,730.002064ΔE 0.3 ΔRGB(0,-1,0)antialiasing coverage residue on a shared outline
source · cases/filters/r2-filter-blur-group-descendants.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 filter blur group descendants</title>
6<style>
7  @page { size: 264px 176px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  .group {
12    width: 230px;
13    height: 140px;
14    padding: 16px;
15    background: #3949ab;
16    color: #ffffff;
17  }
18  .chip {
19    width: 86px;
20    height: 42px;
21    background: #ffca28;
22  }
23  .label {
24    margin-top: 10px;
25    font-size: 30px;
26    font-weight: 700;
27    line-height: 36px;
28  }
29  .group { filter: blur(4px); }
30</style>
31</head>
32<body>
33  <div class="group"><div class="chip"></div><div class="label">BLUR</div></div>
34</body>
35</html>

filter: blur() on text — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0% · raw 4.43% (11621 px) r2-filter-blur-text-glyphs · text-glyph-blurPASS via raw same-coordinate visibility policyColorValueΔE 0.3
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: fill recolour ΔRGB(-1,-1,-1) (ΔE 0.3)
blur() on text glyphs needs raster/filter coverage: Large text with filter: blur(3px) should render as softened glyph shapes. Catches wrong implementation: Text remains vector-crisp while only surrounding box paint changes or no blur is applied.
regions (2177 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
ColorErr2177116210,0 → 142,531614total 15.7% · largest 2.2% · max ΔE 0.8

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
ColorValue38,9 → 45,452.2ΔE 0.3 ΔRGB(1,1,1)fill recolour ΔRGB(+1,+1,+1) (ΔE 0.3)
ColorValue20,10 → 26,471.8ΔE 0.4 ΔRGB(-1,-1,-1)fill recolour ΔRGB(-1,-1,-1) (ΔE 0.4)
ColorValue120,16 → 121,390.4ΔE 0.3 ΔRGB(1,1,1)fill recolour ΔRGB(+1,+1,+1) (ΔE 0.3)
AntialiasCoverage117,13 → 119,450.4ΔE 0.4 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
ColorValue64,4 → 70,130.3ΔE 0.3 ΔRGB(-1,-1,-1)fill recolour ΔRGB(-1,-1,-1) (ΔE 0.3)
AntialiasCoverage94,13 → 99,260.3ΔE 0.4 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage19,16 → 20,420.2ΔE 0.4 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage16,16 → 17,420.2ΔE 0.3 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage122,18 → 123,400.2ΔE 0.4 ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage15,18 → 15,390.2ΔE 0.2 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage126,14 → 127,450.2ΔE 0.3 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage128,11 → 129,450.2ΔE 0.2 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage79,26 → 85,310.2ΔE 0.4 ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage28,14 → 28,440.1ΔE 0.2 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage41,4 → 45,90.1ΔE 0.3 ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage30,15 → 31,420.1ΔE 0.2 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage14,16 → 14,440.1ΔE 0.2 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage124,15 → 125,410.1ΔE 0.3 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage69,38 → 74,440.1ΔE 0.3 ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage89,14 → 95,170.1ΔE 0.4 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage119,18 → 119,420.1ΔE 0.4 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage116,18 → 116,400.10ΔE 0.3 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage18,18 → 18,400.09ΔE 0.4 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage66,21 → 68,260.09ΔE 0.3 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage86,12 → 88,180.06ΔE 0.3 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage92,21 → 95,240.06ΔE 0.4 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage101,11 → 104,130.06ΔE 0.3 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage84,13 → 87,180.06ΔE 0.4 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage62,22 → 64,260.05ΔE 0.4 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage65,20 → 67,260.05ΔE 0.3 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage71,23 → 72,270.04ΔE 0.2 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage81,11 → 84,130.04ΔE 0.4 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage62,9 → 64,120.04ΔE 0.4 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage78,26 → 81,280.04ΔE 0.2 ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage103,40 → 105,440.04ΔE 0.3 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage62,13 → 65,160.03ΔE 0.2 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage46,8 → 47,120.03ΔE 0.3 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage120,39 → 121,430.03ΔE 0.4 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage101,8 → 103,100.03ΔE 0.4 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage84,9 → 85,110.03ΔE 0.3 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage82,8 → 83,100.03ΔE 0.3 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage15,14 → 15,180.03ΔE 0.3 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage89,20 → 92,220.03ΔE 0.3 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage120,11 → 122,120.03ΔE 0.3 ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage95,12 → 98,130.03ΔE 0.4 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage64,26 → 67,270.03ΔE 0.3 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage95,43 → 97,440.03ΔE 0.3 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage75,38 → 76,400.03ΔE 0.4 ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage46,40 → 47,430.03ΔE 0.3 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage122,13 → 124,160.02ΔE 0.3 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage71,20 → 73,230.02ΔE 0.2 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage70,24 → 70,260.02ΔE 0.2 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage86,29 → 88,310.02ΔE 0.3 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
ColorValue45,11 → 46,120.02ΔE 0.3 ΔRGB(1,1,1)fill recolour ΔRGB(+1,+1,+1) (ΔE 0.3)
AntialiasCoverage86,33 → 87,350.02ΔE 0.4 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage96,36 → 98,380.02ΔE 0.4 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage90,25 → 91,270.02ΔE 0.3 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage91,36 → 92,380.02ΔE 0.3 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage15,39 → 15,430.02ΔE 0.2 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage82,41 → 83,440.02ΔE 0.3 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage71,45 → 72,480.02ΔE 0.3 ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage62,6 → 64,70.02ΔE 0.4 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage91,17 → 92,190.02ΔE 0.4 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage55,22 → 59,220.02ΔE 0.4 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
source · cases/filters/r2-filter-blur-text-glyphs.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 filter blur text glyphs</title>
6<style>
7  @page { size: 240px 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  .text { width: 240px; height: 110px; padding: 20px; color: #111111; font-size: 52px; font-weight: 700; line-height: 60px; filter: blur(3px); }
12</style>
13</head>
14<body>
15  <div class="text">TEXT</div>
16</body>
17</html>

filter: blur() visual overflow — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0% · raw 0.09% (291 px) r2-filter-blur-visual-overflow-layout · visual-overflow-no-layoutPASS via raw same-coordinate visibility policyAntialiasCoverageΔE 0.3
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: antialiasing coverage residue on a shared outline
blur() visual overflow must paint outside the border box without moving layout: A blurred red square sits next to a green square; blur feathers extend left/right but the green square keeps its fixed position. Catches wrong implementation: Renderer clips the blur to the red border box or expands layout and shifts the green square.
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
ColorErr1502913,5 → 90,80100total 0.2% · largest 0.07% · max ΔE 0.4

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage90,27 → 90,590.07ΔE 0.4 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage27,9 → 29,90.004623ΔE 0.3 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage27,77 → 29,770.004623ΔE 0.3 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage66,9 → 68,90.003962ΔE 0.3 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage66,77 → 68,770.003962ΔE 0.3 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage25,5 → 25,50.001981ΔE 0.4 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage25,13 → 25,130.001981ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage19,27 → 19,280.001981ΔE 0.2 ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage19,58 → 19,590.001981ΔE 0.2 ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage25,72 → 25,720.001981ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage25,80 → 25,800.001981ΔE 0.4 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage70,5 → 70,50.001321ΔE 0.4 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage83,13 → 83,130.001321ΔE 0.3 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage70,17 → 70,180.001321ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage23,20 → 23,200.001321ΔE 0.2 ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage23,66 → 23,660.001321ΔE 0.2 ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage70,68 → 70,680.001321ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage83,72 → 83,720.001321ΔE 0.3 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage70,80 → 70,800.001321ΔE 0.4 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage24,5 → 24,50.000660ΔE 0.4 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage71,5 → 71,50.000660ΔE 0.4 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage21,6 → 21,60.000660ΔE 0.4 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage74,6 → 74,60.000660ΔE 0.4 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage76,6 → 76,60.000660ΔE 0.4 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage18,6 → 18,60.000660ΔE 0.4 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage78,7 → 78,70.000660ΔE 0.4 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage70,8 → 70,80.000660ΔE 0.3 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage29,9 → 29,90.000660ΔE 0.3 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage66,9 → 66,90.000660ΔE 0.3 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage76,9 → 76,90.000660ΔE 0.3 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage20,10 → 20,100.000660ΔE 0.3 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage17,10 → 17,100.000660ΔE 0.3 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage18,10 → 18,100.000660ΔE 0.3 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage24,11 → 24,110.000660ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage71,11 → 71,110.000660ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage18,13 → 18,130.000660ΔE 0.3 ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage18,13 → 18,130.000660ΔE 0.3 ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage24,13 → 24,130.000660ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage71,13 → 71,130.000660ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage22,14 → 22,140.000660ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage84,15 → 84,150.000660ΔE 0.3 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage75,16 → 75,160.000660ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage84,16 → 84,160.000660ΔE 0.3 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage12,17 → 12,170.000660ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage72,17 → 72,170.000660ΔE 0.2 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage10,17 → 10,170.000660ΔE 0.3 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage74,17 → 74,170.000660ΔE 0.2 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage89,18 → 89,180.000660ΔE 0.4 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage9,18 → 9,180.000660ΔE 0.3 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage19,18 → 19,180.000660ΔE 0.3 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage74,18 → 74,180.000660ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage3,19 → 3,190.000660ΔE 0.4 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage19,19 → 19,190.000660ΔE 0.3 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage27,19 → 27,190.000660ΔE 0.2 ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage68,19 → 68,190.000660ΔE 0.2 ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage86,19 → 86,190.000660ΔE 0.3 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage89,19 → 89,190.000660ΔE 0.3 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage14,19 → 14,190.000660ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage19,19 → 19,190.000660ΔE 0.3 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage83,19 → 83,190.000660ΔE 0.3 ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage25,19 → 25,190.000660ΔE 0.2 ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage70,19 → 70,190.000660ΔE 0.2 ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage6,20 → 6,200.000660ΔE 0.4 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage83,20 → 83,200.000660ΔE 0.3 ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
source · cases/filters/r2-filter-blur-visual-overflow-layout.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 filter blur visual overflow layout</title>
6<style>
7  @page { size: 264px 120px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  .row { display: flex; gap: 28px; width: 260px; height: 120px; padding: 30px 24px; background: #ffffff; }
12  .red { width: 70px; height: 60px; background: #d32f2f; filter: blur(7px); }
13  .green { width: 70px; height: 60px; background: #2e7d32; }
14</style>
15</head>
16<body>
17  <div class="row"><div class="red"></div><div class="green"></div></div>
18</body>
19</html>

filter: brightness() — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0% · raw 0.13% (1008 px) filter-brightness · 1.6PASS via raw same-coordinate visibility policyAntialiasCoverageΔE 0.07
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: antialiasing coverage residue on a shared outline
filter: brightness(1.6) lightening a four-quadrant color image.
regions (4 total; showing 4 representatives)

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

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
ColorErr410080,0 → 160,1601001total 0.4% · largest 0.4% · max ΔE 0.2

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage0,0 → 160,1600.4ΔE 0.07 ΔRGB(0,0,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage80,0 → 80,00.001195ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage0,80 → 0,800.001195ΔRGB(1,1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage0,0 → 0,00.000398ΔE 0.2 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
source · cases/filters/filter-brightness.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>filter brightness</title>
6<style>
7  @page { size: 320px 256px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  .frame { padding: 40px; }
12  img.t {
13    width: 160px;
14    height: 160px;
15    image-rendering: pixelated;
16    filter: brightness(1.6);
17  }
18</style>
19</head>
20<body>
21  <div class="frame"><img class="t" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAc0lEQVR42u3QMQEAIAwDMORUBGKRMxF4ARk7liMGsip5nXJ6LQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIGBAQHa9TrfSSoAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBgQ8AFCMfIOlbOSBgAAAABJRU5ErkJggg=="></div>
22</body>
23</html>

filter: brightness() on a container group — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0.31% · raw 0.32% (1236 px) r2-filter-brightness-group-descendants · brightness-group-descendantsPASS via CSS-scale observation: stable same-coordinate outline phaseAntialiasCoveragemissing 0.002376%extra 0.05%ΔE 9.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
brightness() must filter descendant text and child paint: A container with a solid background, child chip, and glyphs uses filter:brightness(180%); all descendants are part of the filtered source graphic. Catches wrong implementation: Implementation applies the color operation only to the box fill/image path and leaves descendants unfiltered.
regions (521 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
ColorErr441107318,73 → 209,9773total 0.3% · largest 0.02%
Extra7315618,73 → 208,9671total 0.05% · largest 0.02%
Missing7729,74 → 206,971total 0.002223% · largest 0.000318%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage39,73 → 39,960.02ΔRGB(-57,-54,0)antialiasing coverage residue on a shared outline
Extra18,74 → 18,960.02candidate adds paint absent from reference (0.02%)
ColorValue119,77 → 119,960.02ΔRGB(-56,-43,0)fill recolour ΔRGB(-56,-43,+0) (ΔE 0)
AntialiasCoverage123,77 → 123,960.02ΔRGB(-50,-47,0)antialiasing coverage residue on a shared outline
AntialiasCoverage146,73 → 146,900.02ΔRGB(-59,-54,0)antialiasing coverage residue on a shared outline
AntialiasCoverage137,80 → 137,960.02ΔRGB(-20,-18,0)antialiasing coverage residue on a shared outline
AntialiasCoverage43,87 → 43,960.009209ΔRGB(-30,-29,0)antialiasing coverage residue on a shared outline
AntialiasCoverage79,84 → 87,840.008891ΔRGB(-25,-22,0)antialiasing coverage residue on a shared outline
AntialiasCoverage43,77 → 43,830.006351ΔRGB(-30,-29,0)antialiasing coverage residue on a shared outline
AntialiasCoverage22,82 → 27,820.005081ΔRGB(-25,-22,0)antialiasing coverage residue on a shared outline
AntialiasCoverage207,74 → 207,780.004763ΔRGB(-18,-17,0)antialiasing coverage residue on a shared outline
AntialiasCoverage22,93 → 27,930.004763ΔRGB(-25,-22,0)antialiasing coverage residue on a shared outline
AntialiasCoverage173,91 → 173,950.004446ΔRGB(-55,-53,0)antialiasing coverage residue on a shared outline
AntialiasCoverage22,77 → 26,770.004128ΔRGB(-23,-22,0)antialiasing coverage residue on a shared outline
ColorValue170,82 → 170,860.003810ΔRGB(-48,-43,0)fill recolour ΔRGB(-48,-43,+0) (ΔE 0)
Extra131,74 → 131,760.003175candidate adds paint absent from reference (0.003175%)
AntialiasCoverage180,73 → 183,730.003175ΔRGB(-43,-40,0)antialiasing coverage residue on a shared outline
AntialiasCoverage43,77 → 46,770.003175ΔRGB(-23,-22,0)antialiasing coverage residue on a shared outline
AntialiasCoverage43,84 → 46,840.003175ΔRGB(-25,-22,0)antialiasing coverage residue on a shared outline
AntialiasCoverage199,73 → 202,730.002858ΔRGB(-55,-51,0)antialiasing coverage residue on a shared outline
AntialiasCoverage22,79 → 22,810.002540ΔRGB(-14,-13,0)antialiasing coverage residue on a shared outline
AntialiasCoverage67,84 → 67,860.002540ΔRGB(-16,-14,0)antialiasing coverage residue on a shared outline
AntialiasCoverage35,89 → 35,910.002223ΔRGB(-5,-4,0)antialiasing coverage residue on a shared outline
AntialiasCoverage209,89 → 209,910.002223ΔRGB(-25,-24,0)antialiasing coverage residue on a shared outline
AntialiasCoverage78,73 → 79,730.001905ΔRGB(-18,-15,0)antialiasing coverage residue on a shared outline
AntialiasCoverage173,78 → 173,800.001905ΔRGB(-11,-9,0)antialiasing coverage residue on a shared outline
AntialiasCoverage30,79 → 30,800.001905ΔRGB(-11,-3,0)antialiasing coverage residue on a shared outline
AntialiasCoverage180,93 → 182,930.001905ΔRGB(-25,-22,0)antialiasing coverage residue on a shared outline
AntialiasCoverage22,90 → 22,910.001588ΔRGB(-14,-13,0)antialiasing coverage residue on a shared outline
AntialiasCoverage199,93 → 201,930.001588ΔRGB(-25,-22,0)antialiasing coverage residue on a shared outline
AntialiasCoverage76,97 → 78,970.001588ΔRGB(-36,-33,0)antialiasing coverage residue on a shared outline
AntialiasCoverage79,97 → 81,970.001588ΔRGB(3,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage47,73 → 48,730.001270ΔRGB(-15,-14,0)antialiasing coverage residue on a shared outline
AntialiasCoverage177,79 → 177,800.001270ΔRGB(-12,-11,0)antialiasing coverage residue on a shared outline
AntialiasCoverage54,80 → 54,810.001270ΔRGB(-19,-18,0)antialiasing coverage residue on a shared outline
AntialiasCoverage22,88 → 22,890.001270ΔRGB(-14,-13,0)antialiasing coverage residue on a shared outline
AntialiasCoverage78,93 → 79,930.001270ΔRGB(-29,-26,0)antialiasing coverage residue on a shared outline
ColorValue28,96 → 29,960.001270ΔRGB(-23,-22,0)fill recolour ΔRGB(-23,-22,+0) (ΔE 0)
AntialiasCoverage179,97 → 180,970.001270ΔRGB(-5,-4,0)antialiasing coverage residue on a shared outline
ColorValue182,97 → 183,970.001270ΔRGB(-25,-24,0)fill recolour ΔRGB(-25,-24,+0) (ΔE 0)
ColorValue201,97 → 202,970.001270ΔRGB(-27,-23,0)fill recolour ΔRGB(-27,-23,+0) (ΔE 0)
ColorValue28,73 → 28,730.000953ΔRGB(-29,-23,0)fill recolour ΔRGB(-29,-23,+0) (ΔE 0)
ColorValue34,78 → 34,790.000953ΔRGB(-32,-31,0)fill recolour ΔRGB(-32,-31,+0) (ΔE 0)
ColorValue34,80 → 34,800.000953ΔRGB(-21,-20,0)fill recolour ΔRGB(-21,-20,+0) (ΔE 0)
ColorValue198,97 → 198,970.000953ΔRGB(-20,-18,0)fill recolour ΔRGB(-20,-18,+0) (ΔE 0)
Extra27,77 → 27,770.000635candidate adds paint absent from reference (0.000635%)
Extra46,77 → 47,770.000635candidate adds paint absent from reference (0.000635%)
Extra34,79 → 34,790.000635candidate adds paint absent from reference (0.000635%)
Extra46,84 → 47,840.000635candidate adds paint absent from reference (0.000635%)
AntialiasCoverage82,73 → 82,730.000635ΔRGB(4,4,0)antialiasing coverage residue on a shared outline
ColorValue197,73 → 198,730.000635ΔRGB(-27,-25,0)fill recolour ΔRGB(-27,-25,+0) (ΔE 0)
AntialiasCoverage204,73 → 204,730.000635ΔRGB(-29,-27,0)antialiasing coverage residue on a shared outline
AntialiasCoverage74,73 → 75,730.000635ΔRGB(-9,-9,0)antialiasing coverage residue on a shared outline
AntialiasCoverage205,73 → 205,730.000635ΔRGB(-30,-29,0)antialiasing coverage residue on a shared outline
AntialiasCoverage77,76 → 77,760.000635ΔRGB(-23,-22,0)antialiasing coverage residue on a shared outline
AntialiasCoverage183,76 → 184,760.000635ΔRGB(21,20,0)antialiasing coverage residue on a shared outline
AntialiasCoverage199,76 → 199,760.000635ΔRGB(-15,-13,0)antialiasing coverage residue on a shared outline
AntialiasCoverage203,76 → 203,760.000635ΔRGB(16,15,0)antialiasing coverage residue on a shared outline
AntialiasCoverage75,77 → 75,770.000635ΔRGB(-5,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage173,77 → 173,770.000635ΔRGB(3,2,0)antialiasing coverage residue on a shared outline
AntialiasCoverage54,78 → 54,780.000635ΔRGB(7,7,0)antialiasing coverage residue on a shared outline
AntialiasCoverage196,78 → 196,780.000635ΔRGB(-14,-13,0)antialiasing coverage residue on a shared outline
AntialiasCoverage50,79 → 50,790.000635ΔRGB(-1,-2,0)antialiasing coverage residue on a shared outline
AntialiasCoverage72,81 → 72,810.000635ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
source · cases/filters/r2-filter-brightness-group-descendants.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 brightness group descendants</title>
6<style>
7  @page { size: 264px 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  .group {
12    width: 230px;
13    height: 140px;
14    padding: 16px;
15    background: #3949ab;
16    color: #ffffff;
17  }
18  .chip {
19    width: 86px;
20    height: 42px;
21    background: #ffca28;
22  }
23  .label {
24    margin-top: 10px;
25    font-size: 30px;
26    font-weight: 700;
27    line-height: 36px;
28  }
29  .group { filter: brightness(180%); }
30</style>
31</head>
32<body>
33  <div class="group"><div class="chip"></div><div class="label">BRIGHTNESS</div></div>
34</body>
35</html>

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

PASS visually equivalent · no rejecting defect · thresholded evidence 0% · raw 4.41% (35303 px) filter-chained · blur-plus-brightnessPASS via raw same-coordinate visibility policyAntialiasCoverageΔE 0.3
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: antialiasing coverage residue on a shared outline
Chained filter functions blur(4px) brightness(1.5); parser matches only a single blur() so the chain is unsupported.
regions (1350 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
ColorErr1350353030,0 → 175,1751928total 11.7% · largest 0.6% · max ΔE 1.0

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage17,17 → 95,1580.6ΔE 0.2 ΔRGB(0,1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage168,15 → 171,1590.4ΔE 0.3 ΔRGB(0,1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage15,90 → 80,920.3ΔE 0.2 ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
ColorValue16,93 → 79,950.3ΔE 0.3 ΔRGB(0,1,0)fill recolour ΔRGB(+0,+1,+0) (ΔE 0.3)
AntialiasCoverage13,1 → 162,30.3ΔE 0.5 ΔRGB(0,0,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage173,13 → 173,1630.3ΔE 0.4 ΔRGB(0,0,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage17,10 → 158,120.3ΔE 0.2 ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage17,5 → 160,70.3ΔE 0.3 ΔRGB(0,1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage164,17 → 165,1580.3ΔE 0.1 ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
ColorValue5,93 → 8,1610.3ΔE 0.3 ΔRGB(0,-1,0)fill recolour ΔRGB(+0,-1,+0) (ΔE 0.3)
ColorValue15,168 → 80,1690.3ΔE 0.3 ΔRGB(0,-1,0)fill recolour ΔRGB(+0,-1,+0) (ΔE 0.3)
ColorValue16,85 → 81,870.3ΔE 0.2 ΔRGB(0,1,0)fill recolour ΔRGB(+0,+1,+0) (ΔE 0.2)
ColorValue16,83 → 82,840.3ΔE 0.2 ΔRGB(0,1,1)fill recolour ΔRGB(+0,+1,+1) (ΔE 0.2)
ColorValue162,16 → 164,800.3ΔE 0.2 ΔRGB(0,1,0)fill recolour ΔRGB(+0,+1,+0) (ΔE 0.2)
ColorValue97,12 → 159,130.3ΔE 0.2 ΔRGB(0,1,0)fill recolour ΔRGB(+0,+1,+0) (ΔE 0.2)
AntialiasCoverage17,8 → 161,100.2ΔE 0.2 ΔRGB(0,0,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage166,15 → 167,1580.2ΔE 0.2 ΔRGB(0,0,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage8,94 → 10,1600.2ΔE 0.3 ΔRGB(0,1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage16,166 → 80,1670.2ΔE 0.3 ΔRGB(0,1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage174,12 → 175,910.2ΔE 0.8 ΔRGB(0,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage2,13 → 3,880.2ΔE 0.4 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage17,14 → 158,150.2ΔE 0.2 ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage161,17 → 162,1580.2ΔE 0.07 ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage12,173 → 84,1740.1ΔE 0.5 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage91,0 → 161,00.1ΔE 0.8 ΔRGB(0,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage2,94 → 2,1630.1ΔE 0.5 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage93,173 → 162,1730.1ΔE 0.4 ΔRGB(0,0,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage79,95 → 81,1590.1ΔE 0.3 ΔRGB(0,1,0)antialiasing coverage residue on a shared outline
ColorValue15,95 → 16,1590.1ΔE 0.3 ΔRGB(0,1,0)fill recolour ΔRGB(+0,+1,+0) (ΔE 0.3)
AntialiasCoverage10,17 → 11,810.1ΔE 0.2 ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage83,95 → 84,1590.1ΔE 0.1antialiasing coverage residue on a shared outline
AntialiasCoverage10,95 → 11,1580.1ΔE 0.3 ΔRGB(1,1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage90,95 → 90,1580.1ΔE 0.1 ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage91,95 → 92,1580.1ΔE 0.09 ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
ColorValue16,160 → 78,1600.1ΔE 0.3 ΔRGB(0,1,0)fill recolour ΔRGB(+0,+1,+0) (ΔE 0.3)
AntialiasCoverage17,164 → 79,1650.1ΔE 0.2 ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage90,17 → 90,790.1ΔE 0.2 ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage97,164 → 158,1650.1ΔE 0.09 ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage91,17 → 92,780.1ΔE 0.1 ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage4,92 → 5,1610.08ΔE 0.6 ΔRGB(0,1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage171,14 → 172,830.07ΔE 0.4 ΔRGB(0,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage14,93 → 15,1590.07ΔE 0.3 ΔRGB(0,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage17,81 → 82,820.07ΔE 0.3 ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage168,15 → 168,810.07ΔE 0.2 ΔRGB(0,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage7,16 → 7,820.07ΔE 0.3 ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage8,17 → 10,810.07ΔE 0.2 ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage12,171 → 78,1710.07ΔE 0.6 ΔRGB(0,1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage96,7 → 161,70.07ΔE 0.2 ΔRGB(0,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage84,95 → 84,1580.07ΔE 0.3 ΔRGB(0,1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage94,93 → 94,1580.07ΔE 0.07 ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage13,95 → 13,1590.07ΔE 0.3 ΔRGB(0,1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage14,17 → 14,800.07ΔE 0.2 ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage97,4 → 160,40.07ΔE 0.4 ΔRGB(0,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage16,161 → 78,1620.07ΔE 0.3 ΔRGB(0,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage96,167 → 159,1670.07ΔE 0.1 ΔRGB(0,0,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage16,162 → 78,1630.07ΔE 0.3 ΔRGB(0,1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage96,169 → 158,1690.06ΔE 0.2 ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage97,5 → 159,50.06ΔE 0.3 ΔRGB(0,1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage85,97 → 85,1580.06ΔE 0.2 ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage97,84 → 158,840.06ΔE 0.07 ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage97,85 → 158,850.06ΔE 0.08 ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage17,88 → 78,880.06ΔE 0.2 ΔRGB(0,1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage14,97 → 14,1580.06ΔE 0.09 ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage97,161 → 158,1610.06ΔE 0.06 ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
source · cases/filters/filter-chained.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>filter chained blur + brightness</title>
6<style>
7  @page { size: 320px 256px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  .frame { padding: 40px; }
12  img.t {
13    width: 160px;
14    height: 160px;
15    image-rendering: pixelated;
16    filter: blur(4px) brightness(1.5);
17  }
18</style>
19</head>
20<body>
21  <div class="frame"><img class="t" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAc0lEQVR42u3QMQEAIAwDMORUBGKRMxF4ARk7liMGsip5nXJ6LQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIGBAQHa9TrfSSoAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBgQ8AFCMfIOlbOSBgAAAABJRU5ErkJggg=="></div>
22</body>
23</html>
PASS visually equivalent · no rejecting defect · thresholded evidence 0% · raw 0.19% (702 px) filter-chain-order-contrast-blur · ordered-contrast-blurPASS via raw same-coordinate visibility policyAntialiasCoverageΔE 0.2
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: antialiasing coverage residue on a shared outline
contrast(5) blur(8px) and blur(8px) contrast(5) process the same exact-size four-colour field in list order; catches implementations that reorder filter functions without coupling the assertion to replaced-image scaling.
regions (140 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
ColorErr14070211,19 → 216,123180total 0.2% · largest 0.06% · max ΔE 0.8

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage37,34 → 94,340.06ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage37,49 → 94,490.06ΔE 0.1 ΔRGB(0,0,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage133,49 → 190,490.06ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage101,24 → 102,240.000921ΔE 0.2 ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage98,25 → 99,250.000921ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage96,49 → 97,490.000921ΔE 0.1 ΔRGB(0,0,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage128,58 → 129,580.000921ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage101,59 → 102,590.000921ΔE 0.2 ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage125,59 → 125,590.000921ΔE 0.2 ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage104,24 → 104,240.000614ΔE 0.2 ΔRGB(1,1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage16,32 → 16,320.000614ΔE 0.3 ΔRGB(1,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage97,34 → 97,340.000614ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage32,34 → 32,340.000614ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage32,49 → 32,490.000614ΔE 0.1 ΔRGB(0,0,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage195,49 → 195,490.000614ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage130,49 → 130,490.000614ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage16,51 → 16,510.000614ΔE 0.2 ΔRGB(1,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage211,51 → 211,510.000614ΔE 0.2 ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage104,59 → 104,590.000614ΔE 0.3 ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage105,59 → 105,590.000614ΔE 0.3 ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage123,59 → 123,590.000614ΔE 0.2 ΔRGB(1,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage113,72 → 114,720.000614ΔE 0.8 ΔRGB(0,1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage100,19 → 100,190.000307ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage106,19 → 106,190.000307ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage121,19 → 121,190.000307ΔE 0.2 ΔRGB(0,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage127,19 → 127,190.000307ΔE 0.2 ΔRGB(0,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage105,24 → 105,240.000307ΔE 0.3 ΔRGB(0,1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage107,24 → 107,240.000307ΔE 0.3 ΔRGB(0,1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage108,24 → 108,240.000307ΔE 0.4 ΔRGB(0,1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage108,24 → 108,240.000307ΔE 0.4 ΔRGB(0,1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage109,24 → 109,240.000307ΔE 0.5 ΔRGB(0,1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage111,24 → 111,240.000307ΔE 0.5 ΔRGB(0,1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage113,24 → 113,240.000307ΔE 0.4 ΔRGB(0,1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage114,24 → 114,240.000307ΔE 0.3 ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage116,24 → 116,240.000307ΔE 0.2 ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage118,24 → 118,240.000307ΔE 0.1 ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage119,24 → 119,240.000307ΔE 0.09 ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage120,24 → 120,240.000307ΔE 0.2 ΔRGB(0,1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage122,24 → 122,240.000307ΔE 0.2 ΔRGB(0,1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage123,24 → 123,240.000307ΔE 0.05 ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage125,24 → 125,240.000307ΔE 0.04 ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage104,25 → 104,250.000307ΔE 0.2 ΔRGB(0,1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage116,25 → 116,250.000307ΔE 0.2 ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage127,25 → 127,250.000307ΔE 0.2 ΔRGB(0,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage24,25 → 24,250.000307ΔE 0.3 ΔRGB(-1,0,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage203,25 → 203,250.000307ΔE 0.06 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage28,27 → 28,270.000307ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage20,28 → 20,280.000307ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage22,29 → 22,290.000307ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage111,29 → 111,290.000307ΔE 0.5 ΔRGB(0,1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage25,30 → 25,300.000307ΔE 0.3 ΔRGB(1,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage202,30 → 202,300.000307ΔE 0.04 ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage31,31 → 31,310.000307ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage103,31 → 103,310.000307ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage24,31 → 24,310.000307ΔE 0.3 ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage203,31 → 203,310.000307ΔE 0.05 ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage11,32 → 11,320.000307ΔE 0.4 ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage25,32 → 25,320.000307ΔE 0.3 ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage202,32 → 202,320.000307ΔE 0.04 ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage211,32 → 211,320.000307ΔE 0.1 ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage216,32 → 216,320.000307ΔE 0.2 ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage24,33 → 24,330.000307ΔE 0.3 ΔRGB(1,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage203,33 → 203,330.000307ΔE 0.05 ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage121,34 → 121,340.000307ΔE 0.2 ΔRGB(0,-1,0)antialiasing coverage residue on a shared outline
source · cases/filters/filter-chain-order-contrast-blur.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>filter chain order contrast blur</title>
6<style>
7  @page { size: 240px 160px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  .frame {
12    width: 240px;
13    height: 160px;
14    padding: 24px;
15    background: #f5f5f5;
16  }
17  .sample {
18    position: relative;
19    display: block;
20    width: 192px;
21    height: 48px;
22  }
23  .sample > i {
24    position: absolute;
25    display: block;
26    width: 96px;
27    height: 24px;
28  }
29  .red { left: 0; top: 0; background: #ff0000; }
30  .green { right: 0; top: 0; background: #00ff00; }
31  .blue { left: 0; bottom: 0; background: #0000ff; }
32  .yellow { right: 0; bottom: 0; background: #ffff00; }
33  .a {
34    filter: contrast(5) blur(8px);
35  }
36  .b {
37    margin-top: 16px;
38    filter: blur(8px) contrast(5);
39  }
40</style>
41</head>
42<body>
43  <div class="frame">
44    <div class="sample a">
45      <i class="red"></i><i class="green"></i>
46      <i class="blue"></i><i class="yellow"></i>
47    </div>
48    <div class="sample b">
49      <i class="red"></i><i class="green"></i>
50      <i class="blue"></i><i class="yellow"></i>
51    </div>
52  </div>
53</body>
54</html>

filter: contrast() — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0.000375% · raw 0.25% (2000 px) filter-contrast · 2PASS via CSS-scale observation: sub-CSS shared-colour coverageAntialiasCoverageΔE 0.06
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
filter: contrast(2) increasing contrast of a four-quadrant color image.
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
ColorErr120000,0 → 160,1602000total 0.8% · largest 0.8% · max ΔE 0.06

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage0,0 → 160,1600.8ΔE 0.06 ΔRGB(0,0,-1)antialiasing coverage residue on a shared outline
source · cases/filters/filter-contrast.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>filter contrast</title>
6<style>
7  @page { size: 320px 256px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  .frame { padding: 40px; }
12  img.t {
13    width: 160px;
14    height: 160px;
15    image-rendering: pixelated;
16    filter: contrast(2);
17  }
18</style>
19</head>
20<body>
21  <div class="frame"><img class="t" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAc0lEQVR42u3QMQEAIAwDMORUBGKRMxF4ARk7liMGsip5nXJ6LQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIGBAQHa9TrfSSoAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBgQ8AFCMfIOlbOSBgAAAABJRU5ErkJggg=="></div>
22</body>
23</html>

filter: contrast() on a container group — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0.47% · raw 0.48% (1900 px) r2-filter-contrast-group-descendants · contrast-group-descendantsPASS via CSS-scale observation: stable same-coordinate outline phaseAntialiasCoveragemissing 0.002001%extra 0.08%ΔE 8.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
contrast() must filter descendant text and child paint: A container with a solid background, child chip, and glyphs uses filter:contrast(220%); all descendants are part of the filtered source graphic. Catches wrong implementation: Implementation applies the color operation only to the box fill/image path and leaves descendants unfiltered.
regions (636 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
ColorErr529165117,73 → 179,97231total 0.5% · largest 0.07%
Missing6626,73 → 152,961total 0.001905% · largest 0.000318%
Extra10124317,73 → 172,9671total 0.08% · largest 0.02%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage82,73 → 102,960.07ΔRGB(-30,-52,0)antialiasing coverage residue on a shared outline
AntialiasCoverage63,73 → 68,960.03ΔRGB(-45,-66,-31)antialiasing coverage residue on a shared outline
AntialiasCoverage160,73 → 179,770.03ΔRGB(-29,-26,0)antialiasing coverage residue on a shared outline
Extra104,74 → 104,960.02candidate adds paint absent from reference (0.02%)
AntialiasCoverage76,73 → 80,900.02ΔRGB(-82,-74,0)antialiasing coverage residue on a shared outline
Extra172,77 → 172,960.02candidate adds paint absent from reference (0.02%)
AntialiasCoverage104,73 → 113,730.009526ΔRGB(-29,-26,0)antialiasing coverage residue on a shared outline
AntialiasCoverage127,91 → 135,910.008891ΔRGB(-27,-24,0)antialiasing coverage residue on a shared outline
AntialiasCoverage94,77 → 102,770.007621ΔRGB(-27,-24,0)antialiasing coverage residue on a shared outline
AntialiasCoverage172,77 → 179,770.007621ΔRGB(-27,-24,0)antialiasing coverage residue on a shared outline
AntialiasCoverage128,86 → 134,870.007621ΔRGB(-31,-26,0)antialiasing coverage residue on a shared outline
AntialiasCoverage76,96 → 80,960.005081ΔRGB(-27,-24,0)antialiasing coverage residue on a shared outline
AntialiasCoverage143,91 → 143,950.004763ΔRGB(-41,-63,-29)antialiasing coverage residue on a shared outline
AntialiasCoverage148,97 → 153,970.004763ΔRGB(-5,-13,0)antialiasing coverage residue on a shared outline
AntialiasCoverage118,96 → 122,960.004446ΔRGB(-27,-24,0)antialiasing coverage residue on a shared outline
AntialiasCoverage26,97 → 30,970.004446ΔRGB(4,2,0)antialiasing coverage residue on a shared outline
AntialiasCoverage108,77 → 112,770.004128ΔRGB(-29,-26,0)antialiasing coverage residue on a shared outline
AntialiasCoverage108,84 → 112,840.004128ΔRGB(-31,-26,0)antialiasing coverage residue on a shared outline
AntialiasCoverage104,96 → 108,960.004128ΔRGB(-27,-24,0)antialiasing coverage residue on a shared outline
AntialiasCoverage168,96 → 172,960.004128ΔRGB(-27,-24,0)antialiasing coverage residue on a shared outline
AntialiasCoverage47,97 → 50,970.003493ΔRGB(20,20,0)antialiasing coverage residue on a shared outline
Extra102,74 → 102,760.003175candidate adds paint absent from reference (0.003175%)
AntialiasCoverage149,73 → 152,730.003175ΔRGB(-25,-48,-22)antialiasing coverage residue on a shared outline
AntialiasCoverage59,82 → 59,850.003175ΔRGB(-16,-26,0)antialiasing coverage residue on a shared outline
AntialiasCoverage149,93 → 152,930.003175ΔRGB(-31,-26,0)antialiasing coverage residue on a shared outline
AntialiasCoverage17,84 → 17,860.002858ΔRGB(-13,-20,0)antialiasing coverage residue on a shared outline
AntialiasCoverage55,84 → 55,860.002858ΔRGB(-24,-22,0)antialiasing coverage residue on a shared outline
AntialiasCoverage108,87 → 110,870.002858ΔRGB(-27,-24,0)antialiasing coverage residue on a shared outline
AntialiasCoverage42,84 → 42,870.002540ΔRGB(-24,-22,0)antialiasing coverage residue on a shared outline
AntialiasCoverage48,93 → 50,930.002540ΔRGB(-55,-49,0)antialiasing coverage residue on a shared outline
AntialiasCoverage147,78 → 147,800.002223ΔRGB(-20,-18,0)antialiasing coverage residue on a shared outline
AntialiasCoverage28,93 → 29,930.002223ΔRGB(-40,-33,0)antialiasing coverage residue on a shared outline
AntialiasCoverage143,78 → 143,800.001905ΔRGB(-13,-11,0)antialiasing coverage residue on a shared outline
AntialiasCoverage115,79 → 115,810.001905ΔRGB(-42,-37,0)antialiasing coverage residue on a shared outline
AntialiasCoverage38,82 → 38,840.001905ΔRGB(-33,-30,0)antialiasing coverage residue on a shared outline
AntialiasCoverage28,73 → 29,730.001588ΔRGB(-2,-9,0)antialiasing coverage residue on a shared outline
AntialiasCoverage119,78 → 119,800.001588ΔRGB(-38,-35,0)antialiasing coverage residue on a shared outline
AntialiasCoverage119,81 → 119,820.001588ΔRGB(-20,-18,0)antialiasing coverage residue on a shared outline
AntialiasCoverage59,86 → 59,870.001588ΔRGB(-23,-22,0)antialiasing coverage residue on a shared outline
AntialiasCoverage48,73 → 49,730.001270ΔRGB(-18,-26,-11)antialiasing coverage residue on a shared outline
AntialiasCoverage55,81 → 55,820.001270ΔRGB(-24,-22,0)antialiasing coverage residue on a shared outline
AntialiasCoverage46,73 → 46,730.000953ΔRGB(-24,-26,0)antialiasing coverage residue on a shared outline
AntialiasCoverage154,73 → 154,730.000953ΔRGB(-31,-29,0)antialiasing coverage residue on a shared outline
AntialiasCoverage153,76 → 154,760.000953ΔRGB(-5,-2,0)antialiasing coverage residue on a shared outline
AntialiasCoverage118,77 → 118,780.000953ΔRGB(4,20,0)antialiasing coverage residue on a shared outline
ColorValue131,79 → 131,790.000953ΔRGB(-31,-29,0)fill recolour ΔRGB(-31,-29,+0) (ΔE 0)
AntialiasCoverage38,80 → 38,810.000953ΔRGB(-46,-42,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage59,81 → 59,810.000953ΔRGB(-24,-22,0)antialiasing coverage residue on a shared outline
AntialiasCoverage17,81 → 17,820.000953ΔRGB(-44,-40,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage43,81 → 43,820.000953ΔRGB(-17,-16,0)antialiasing coverage residue on a shared outline
AntialiasCoverage21,82 → 21,830.000953ΔRGB(0,2,0)antialiasing coverage residue on a shared outline
AntialiasCoverage149,82 → 150,820.000953ΔRGB(-8,-22,0)antialiasing coverage residue on a shared outline
ColorValue150,82 → 151,820.000953ΔRGB(-13,-11,0)fill recolour ΔRGB(-13,-11,+0) (ΔE 0)
AntialiasCoverage152,83 → 153,830.000953ΔRGB(0,7,0)antialiasing coverage residue on a shared outline
ColorValue153,83 → 154,830.000953ΔRGB(29,27,0)fill recolour ΔRGB(+29,+27,+0) (ΔE 0)
AntialiasCoverage42,83 → 42,840.000953ΔRGB(-55,-51,0)antialiasing coverage residue on a shared outline
ColorValue116,85 → 116,860.000953ΔRGB(9,15,6)fill recolour ΔRGB(+9,+15,+6) (ΔE 0)
AntialiasCoverage149,86 → 149,860.000953ΔRGB(-24,-22,0)antialiasing coverage residue on a shared outline
AntialiasCoverage150,86 → 151,860.000953ΔRGB(-1,-2,0)antialiasing coverage residue on a shared outline
AntialiasCoverage21,87 → 21,870.000953ΔRGB(-35,-33,0)antialiasing coverage residue on a shared outline
AntialiasCoverage38,87 → 38,870.000953ΔRGB(-27,-24,0)antialiasing coverage residue on a shared outline
AntialiasCoverage55,87 → 55,880.000953ΔRGB(-31,-28,0)antialiasing coverage residue on a shared outline
AntialiasCoverage17,88 → 17,880.000953ΔRGB(-15,-13,0)antialiasing coverage residue on a shared outline
ColorValue43,88 → 43,880.000953ΔRGB(-24,-22,0)fill recolour ΔRGB(-24,-22,+0) (ΔE 0)
source · cases/filters/r2-filter-contrast-group-descendants.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 contrast group descendants</title>
6<style>
7  @page { size: 264px 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  .group {
12    width: 230px;
13    height: 140px;
14    padding: 16px;
15    background: #3949ab;
16    color: #ffffff;
17  }
18  .chip {
19    width: 86px;
20    height: 42px;
21    background: #ffca28;
22  }
23  .label {
24    margin-top: 10px;
25    font-size: 30px;
26    font-weight: 700;
27    line-height: 36px;
28  }
29  .group { filter: contrast(220%); }
30</style>
31</head>
32<body>
33  <div class="group"><div class="chip"></div><div class="label">CONTRAST</div></div>
34</body>
35</html>

filter: drop-shadow() — 100.00% verified visual parity PASS 2 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0.99% · raw 0.99% (1928 px) filter-drop-shadow-currentcolor · default-currentcolorPASS via CSS-scale observation: stable same-coordinate outline phaseColorValuemissing 0.9%extra 0.8%ΔE 10.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 fill recolour ΔRGB(-14,-10,-10) (ΔE 10.6)
drop-shadow() without a color uses currentColor for the shadow; catches parsers that default the omitted color to black.
regions (137 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
Extra692430,0 → 109,537total 0.4% · largest 0.01%
ColorErr113920,0 → 112,561392total 2.2% · largest 2.2%
Missing672931,1 → 112,5613total 0.5% · largest 0.02%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
ColorValue0,0 → 112,562.2ΔRGB(-14,-10,-10)fill recolour ΔRGB(-14,-10,-10) (ΔE 0)
Missing53,29 → 55,310.02candidate lacks paint present in reference (0.02%)
Missing109,29 → 111,310.02candidate lacks paint present in reference (0.02%)
Missing45,37 → 47,390.02candidate lacks paint present in reference (0.02%)
Missing101,37 → 103,390.02candidate lacks paint present in reference (0.02%)
Missing37,45 → 39,470.02candidate lacks paint present in reference (0.02%)
Missing93,45 → 95,470.02candidate lacks paint present in reference (0.02%)
Missing29,53 → 31,550.02candidate lacks paint present in reference (0.02%)
Missing85,53 → 87,550.02candidate lacks paint present in reference (0.02%)
Missing112,27 → 112,290.01candidate lacks paint present in reference (0.01%)
Missing27,56 → 29,560.01candidate lacks paint present in reference (0.01%)
Missing83,56 → 85,560.01candidate lacks paint present in reference (0.01%)
Extra27,0 → 29,00.01candidate adds paint absent from reference (0.01%)
Extra83,0 → 85,00.01candidate adds paint absent from reference (0.01%)
Extra21,5 → 22,60.01candidate adds paint absent from reference (0.01%)
Extra77,5 → 78,60.01candidate adds paint absent from reference (0.01%)
Extra13,13 → 14,140.01candidate adds paint absent from reference (0.01%)
Extra69,13 → 70,140.01candidate adds paint absent from reference (0.01%)
Extra5,21 → 6,220.01candidate adds paint absent from reference (0.01%)
Extra61,21 → 62,220.01candidate adds paint absent from reference (0.01%)
Extra0,27 → 0,290.01candidate adds paint absent from reference (0.01%)
Missing30,1 → 30,20.004815candidate lacks paint present in reference (0.004815%)
Missing86,1 → 86,20.004815candidate lacks paint present in reference (0.004815%)
Missing31,2 → 31,30.004815candidate lacks paint present in reference (0.004815%)
Missing87,2 → 87,30.004815candidate lacks paint present in reference (0.004815%)
Missing32,3 → 32,40.004815candidate lacks paint present in reference (0.004815%)
Missing88,3 → 88,40.004815candidate lacks paint present in reference (0.004815%)
Missing38,9 → 38,100.004815candidate lacks paint present in reference (0.004815%)
Missing94,9 → 94,100.004815candidate lacks paint present in reference (0.004815%)
Missing39,10 → 39,110.004815candidate lacks paint present in reference (0.004815%)
Missing95,10 → 95,110.004815candidate lacks paint present in reference (0.004815%)
Missing40,11 → 40,120.004815candidate lacks paint present in reference (0.004815%)
Missing96,11 → 96,120.004815candidate lacks paint present in reference (0.004815%)
Missing46,17 → 46,180.004815candidate lacks paint present in reference (0.004815%)
Missing102,17 → 102,180.004815candidate lacks paint present in reference (0.004815%)
Missing47,18 → 47,190.004815candidate lacks paint present in reference (0.004815%)
Missing103,18 → 103,190.004815candidate lacks paint present in reference (0.004815%)
Missing48,19 → 48,200.004815candidate lacks paint present in reference (0.004815%)
Missing104,19 → 104,200.004815candidate lacks paint present in reference (0.004815%)
Missing54,25 → 54,260.004815candidate lacks paint present in reference (0.004815%)
Missing110,25 → 110,260.004815candidate lacks paint present in reference (0.004815%)
Missing55,26 → 55,270.004815candidate lacks paint present in reference (0.004815%)
Missing111,26 → 111,270.004815candidate lacks paint present in reference (0.004815%)
Missing1,30 → 2,300.004815candidate lacks paint present in reference (0.004815%)
Missing57,30 → 58,300.004815candidate lacks paint present in reference (0.004815%)
Missing2,31 → 3,310.004815candidate lacks paint present in reference (0.004815%)
Missing58,31 → 59,310.004815candidate lacks paint present in reference (0.004815%)
Missing3,32 → 4,320.004815candidate lacks paint present in reference (0.004815%)
Missing52,32 → 53,320.004815candidate lacks paint present in reference (0.004815%)
Missing59,32 → 60,320.004815candidate lacks paint present in reference (0.004815%)
Missing108,32 → 109,320.004815candidate lacks paint present in reference (0.004815%)
Missing48,36 → 48,370.004815candidate lacks paint present in reference (0.004815%)
Missing104,36 → 104,370.004815candidate lacks paint present in reference (0.004815%)
Missing9,38 → 10,380.004815candidate lacks paint present in reference (0.004815%)
Missing65,38 → 66,380.004815candidate lacks paint present in reference (0.004815%)
Missing10,39 → 11,390.004815candidate lacks paint present in reference (0.004815%)
Missing66,39 → 67,390.004815candidate lacks paint present in reference (0.004815%)
Missing11,40 → 12,400.004815candidate lacks paint present in reference (0.004815%)
Missing44,40 → 45,400.004815candidate lacks paint present in reference (0.004815%)
Missing67,40 → 68,400.004815candidate lacks paint present in reference (0.004815%)
Missing100,40 → 101,400.004815candidate lacks paint present in reference (0.004815%)
Missing40,44 → 40,450.004815candidate lacks paint present in reference (0.004815%)
Missing96,44 → 96,450.004815candidate lacks paint present in reference (0.004815%)
Missing17,46 → 18,460.004815candidate lacks paint present in reference (0.004815%)
source · cases/filters/filter-drop-shadow-currentcolor.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>filter drop-shadow currentColor</title>
6<style>
7  @page { size: 192px 104px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  .frame {
12    width: 190px;
13    height: 100px;
14    padding: 18px;
15    color: #00897b;
16    background: #ffffff;
17  }
18  img {
19    width: 64px;
20    height: 64px;
21    image-rendering: pixelated;
22    filter: drop-shadow(56px 0 0);
23  }
24</style>
25</head>
26<body>
27  <div class="frame"><img alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAA6UlEQVR42u2a2QmAMBAFtxz7r8deFH8F0ZhjjzcDFjADapKNGQCAE/u2HdcjLS8Z4S4vFeFJXiLCm3zpCF/lS0ZolS8V4a98iQi98qkjjJJPGWG0fKoIs+RTRJgtHzrCKvmQEVbLh4rgJR8igre8a4Qo8i4RoskvjRBVfkmE6PJTI2SRnxIhm/zQCFnlh0TILt8VoYr8rwjV5JsiVJX/HEE+gPwrwEeQ3yALIZbCbIbYDnMgwpEYh6IcizMYYTTGcJTxOBckuCLDJakAESwz0vK9EawS0vKtEawy0vJvEUwJafl7BAMAcOIE8NvBjJwtM6wAAAAASUVORK5CYII="></div>
28</body>
29</html>
PASS visually equivalent · no rejecting defect · thresholded evidence 0.37% · raw 0.62% (5489 px) filter-drop-shadow · alpha-diamond-hardPASS via CSS-scale observation: stable same-coordinate outline phaseColorValuemissing 0.1%extra 0.1%ΔE 2.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 fill recolour ΔRGB(-2,-1,-1) (ΔE 2.1)
filter: drop-shadow() casting a hard offset shadow that traces a non-rectangular (diamond) image alpha, not its bounding box.
regions (70 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
ColorErr3251670,0 → 160,1603757total 2.1% · largest 1.5% · max ΔE 2.8
Extra201722,2 → 143,14311total 0.07% · largest 0.004365%
Missing1815017,17 → 158,15810total 0.06% · largest 0.003968%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
ColorValue0,0 → 160,1601.5ΔE 1.9 ΔRGB(-2,-1,-1)fill recolour ΔRGB(-2,-1,-1) (ΔE 1.9)
AntialiasCoverage92,92 → 160,1600.4ΔE 2.8 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
ColorValue120,87 → 123,900.02ΔRGB(-27,5,5)fill recolour ΔRGB(-27,+5,+5) (ΔE 0)
ColorValue87,120 → 90,1230.02ΔRGB(-27,5,5)fill recolour ΔRGB(-27,+5,+5) (ΔE 0)
AntialiasCoverage80,127 → 83,1300.02ΔRGB(-35,5,5)antialiasing coverage residue on a shared outline
AntialiasCoverage127,80 → 130,830.02ΔRGB(-35,5,5)antialiasing coverage residue on a shared outline
AntialiasCoverage112,97 → 115,980.01ΔRGB(-22,5,5)antialiasing coverage residue on a shared outline
AntialiasCoverage72,137 → 75,1380.01ΔRGB(-15,2,2)antialiasing coverage residue on a shared outline
AntialiasCoverage137,72 → 138,750.01ΔRGB(-15,2,2)antialiasing coverage residue on a shared outline
AntialiasCoverage97,112 → 98,1150.01ΔRGB(-22,5,5)antialiasing coverage residue on a shared outline
AntialiasCoverage117,92 → 118,930.005952ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage160,88 → 160,920.005555ΔRGB(-2,-2,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage92,117 → 93,1180.005555ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage88,160 → 92,1600.005555ΔRGB(-2,-2,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage77,132 → 78,1330.004762ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
Extra70,140 → 70,1430.004365candidate adds paint absent from reference (0.004365%)
AntialiasCoverage132,77 → 133,780.004365ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
Missing110,37 → 110,400.003968candidate lacks paint present in reference (0.003968%)
Missing150,100 → 150,1030.003968candidate lacks paint present in reference (0.003968%)
Missing37,110 → 40,1100.003968candidate lacks paint present in reference (0.003968%)
Missing140,110 → 143,1100.003968candidate lacks paint present in reference (0.003968%)
Missing110,140 → 110,1430.003968candidate lacks paint present in reference (0.003968%)
Missing100,150 → 103,1500.003968candidate lacks paint present in reference (0.003968%)
Extra57,10 → 60,100.003968candidate adds paint absent from reference (0.003968%)
Extra80,10 → 83,100.003968candidate adds paint absent from reference (0.003968%)
Extra50,17 → 50,200.003968candidate adds paint absent from reference (0.003968%)
Extra100,30 → 103,300.003968candidate adds paint absent from reference (0.003968%)
Extra17,50 → 20,500.003968candidate adds paint absent from reference (0.003968%)
Extra10,57 → 10,600.003968candidate adds paint absent from reference (0.003968%)
Extra140,70 → 143,700.003968candidate adds paint absent from reference (0.003968%)
Extra10,80 → 10,830.003968candidate adds paint absent from reference (0.003968%)
Extra30,100 → 30,1030.003968candidate adds paint absent from reference (0.003968%)
AntialiasCoverage108,102 → 108,1030.003968ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage102,107 → 103,1080.003968ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
Missing90,17 → 90,200.003571candidate lacks paint present in reference (0.003571%)
Missing150,77 → 150,800.003571candidate lacks paint present in reference (0.003571%)
Missing17,90 → 20,900.003571candidate lacks paint present in reference (0.003571%)
Missing77,150 → 80,1500.003571candidate lacks paint present in reference (0.003571%)
AntialiasCoverage73,143 → 73,1450.003571ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
Extra93,22 → 95,220.003175candidate adds paint absent from reference (0.003175%)
AntialiasCoverage144,73 → 145,730.003175ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
Missing118,45 → 118,470.002778candidate lacks paint present in reference (0.002778%)
Missing158,93 → 158,950.002778candidate lacks paint present in reference (0.002778%)
Missing45,118 → 47,1180.002778candidate lacks paint present in reference (0.002778%)
Missing133,118 → 135,1180.002778candidate lacks paint present in reference (0.002778%)
Missing118,133 → 118,1350.002778candidate lacks paint present in reference (0.002778%)
Missing93,158 → 95,1580.002778candidate lacks paint present in reference (0.002778%)
Extra65,2 → 67,20.002778candidate adds paint absent from reference (0.002778%)
Extra73,2 → 75,20.002778candidate adds paint absent from reference (0.002778%)
Extra42,25 → 42,270.002778candidate adds paint absent from reference (0.002778%)
Extra25,42 → 27,420.002778candidate adds paint absent from reference (0.002778%)
Extra133,62 → 135,620.002778candidate adds paint absent from reference (0.002778%)
Extra2,65 → 2,670.002778candidate adds paint absent from reference (0.002778%)
Extra2,73 → 2,750.002778candidate adds paint absent from reference (0.002778%)
Extra22,93 → 22,950.002778candidate adds paint absent from reference (0.002778%)
Extra62,133 → 62,1350.002778candidate adds paint absent from reference (0.002778%)
Missing158,85 → 158,870.002381candidate lacks paint present in reference (0.002381%)
Missing85,158 → 87,1580.002381candidate lacks paint present in reference (0.002381%)
AntialiasCoverage157,93 → 157,950.002381ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage133,117 → 135,1170.001984ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage127,123 → 127,1240.001984ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage117,133 → 117,1350.001984ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage81,152 → 82,1520.001984ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage93,157 → 95,1570.001984ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
source · cases/filters/filter-drop-shadow.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>filter drop-shadow on alpha image</title>
6<style>
7  @page { size: 344px 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  /* Padding so the offset drop-shadow stays on-page. */
12  .frame { padding: 40px; }
13  img.t {
14    width: 160px;
15    height: 160px;
16    image-rendering: pixelated;
17    /* zero blur -> hard-edged shadow tracing the diamond alpha, not its box */
18    filter: drop-shadow(20px 20px 0 #424242);
19  }
20</style>
21</head>
22<body>
23  <div class="frame"><img class="t" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAA6UlEQVR42u2a2QmAMBAFtxz7r8deFH8F0ZhjjzcDFjADapKNGQCAE/u2HdcjLS8Z4S4vFeFJXiLCm3zpCF/lS0ZolS8V4a98iQi98qkjjJJPGWG0fKoIs+RTRJgtHzrCKvmQEVbLh4rgJR8igre8a4Qo8i4RoskvjRBVfkmE6PJTI2SRnxIhm/zQCFnlh0TILt8VoYr8rwjV5JsiVJX/HEE+gPwrwEeQ3yALIZbCbIbYDnMgwpEYh6IcizMYYTTGcJTxOBckuCLDJakAESwz0vK9EawS0vKtEawy0vJvEUwJafl7BAMAcOIE8NvBjJwtM6wAAAAASUVORK5CYII="></div>
24</body>
25</html>

filter: drop-shadow() followed by brightness() — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0.20% · raw 0.42% (1133 px) r2-filter-drop-shadow-chain-position · drop-shadow-before-brightnessPASS via CSS-scale observation: coherent sub-authored colour frontierColorValueΔE 0.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 fill recolour ΔRGB(-2,-2,-2) (ΔE 0.8)
drop-shadow() must obey authored chain position: A dark drop shadow is followed by brightness(2); the shadow itself should be brightened because later filter functions consume the prior output. Catches wrong implementation: Renderer always applies color functions to the source before computing drop-shadow, leaving the shadow dark.
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
ColorErr211330,0 → 153,50754total 1.5% · largest 1.0% · max ΔE 0.8

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
ColorValue0,0 → 70,501.0ΔE 0.8 ΔRGB(-2,-2,-1)fill recolour ΔRGB(-2,-2,-1) (ΔE 0.8)
AntialiasCoverage82,0 → 153,500.5ΔE 0.7 ΔRGB(-2,-2,-2)antialiasing coverage residue on a shared outline
source · cases/filters/r2-filter-drop-shadow-chain-position.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 filter drop shadow chain position</title>
6<style>
7  @page { size: 232px 120px; 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: 230px; height: 120px; padding: 30px; background: #ffffff; }
12  .box { width: 70px; height: 50px; background: #ffca28; filter: drop-shadow(82px 0 0 #303030) brightness(2); }
13</style>
14</head>
15<body>
16  <div class="stage"><div class="box"></div></div>
17</body>
18</html>

filter: drop-shadow() on rounded CSS box alpha — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0.96% · raw 1.16% (3642 px) r2-filter-drop-shadow-rounded-css-alpha · rounded-css-alphaPASS via CSS-scale observation: stable same-coordinate outline phaseAntialiasCoveragemissing 0.8%extra 0.05%ΔE 10.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
drop-shadow() on CSS boxes follows the alpha shape, not a rectangular box-shadow: A circular red element casts a zero-blur drop-shadow; the shadow should be circular because it is based on source alpha. Catches wrong implementation: Implementation treats it like a rectangular box-shadow or only supports drop-shadow on replaced images.
regions (497 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
ColorErr16327820,0 → 156,801269total 2.3% · largest 1.0%
Missing2948100,0 → 156,7983total 0.7% · largest 0.07%
Extra405034,54 → 129,804total 0.04% · largest 0.003239%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage15,6 → 116,801.0ΔRGB(-1,-5,-5)antialiasing coverage residue on a shared outline
AntialiasCoverage116,15 → 156,800.5ΔRGB(-8,-8,-8)antialiasing coverage residue on a shared outline
Missing6,6 → 19,190.07candidate lacks paint present in reference (0.07%)
AntialiasCoverage23,0 → 43,40.07ΔRGB(18,85,85)antialiasing coverage residue on a shared outline
AntialiasCoverage134,5 → 147,150.06ΔRGB(13,13,13)antialiasing coverage residue on a shared outline
AntialiasCoverage0,29 → 2,480.06ΔRGB(22,104,104)antialiasing coverage residue on a shared outline
Missing79,14 → 86,260.05candidate lacks paint present in reference (0.05%)
AntialiasCoverage4,56 → 8,640.04ΔRGB(4,14,14)antialiasing coverage residue on a shared outline
AntialiasCoverage10,66 → 14,710.04ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage56,3 → 60,60.03ΔRGB(2,5,5)antialiasing coverage residue on a shared outline
AntialiasCoverage2,22 → 5,290.03ΔRGB(16,71,71)antialiasing coverage residue on a shared outline
AntialiasCoverage86,10 → 90,140.02ΔRGB(24,24,24)antialiasing coverage residue on a shared outline
AntialiasCoverage51,2 → 55,40.02ΔRGB(6,34,34)antialiasing coverage residue on a shared outline
Missing86,10 → 90,140.02candidate lacks paint present in reference (0.02%)
AntialiasCoverage2,52 → 4,550.02ΔRGB(7,35,35)antialiasing coverage residue on a shared outline
AntialiasCoverage114,0 → 119,00.01ΔRGB(164,164,164)antialiasing coverage residue on a shared outline
AntialiasCoverage44,1 → 48,10.01ΔRGB(18,87,87)antialiasing coverage residue on a shared outline
AntialiasCoverage124,1 → 128,20.01ΔRGB(77,77,77)antialiasing coverage residue on a shared outline
AntialiasCoverage5,18 → 7,210.01ΔRGB(12,54,54)antialiasing coverage residue on a shared outline
AntialiasCoverage84,15 → 86,170.01ΔRGB(36,36,36)antialiasing coverage residue on a shared outline
Missing4,20 → 6,220.01candidate lacks paint present in reference (0.01%)
Missing22,3 → 25,40.009718candidate lacks paint present in reference (0.009718%)
Missing93,6 → 95,70.009718candidate lacks paint present in reference (0.009718%)
Missing3,22 → 4,250.009718candidate lacks paint present in reference (0.009718%)
AntialiasCoverage18,6 → 20,70.009718ΔRGB(18,86,86)antialiasing coverage residue on a shared outline
AntialiasCoverage92,7 → 94,80.008908ΔRGB(46,46,46)antialiasing coverage residue on a shared outline
Missing39,0 → 42,00.008098candidate lacks paint present in reference (0.008098%)
Missing115,0 → 118,00.008098candidate lacks paint present in reference (0.008098%)
Missing35,0 → 38,00.008098candidate lacks paint present in reference (0.008098%)
Missing20,4 → 22,50.008098candidate lacks paint present in reference (0.008098%)
Missing90,9 → 92,100.008098candidate lacks paint present in reference (0.008098%)
Missing0,35 → 0,380.008098candidate lacks paint present in reference (0.008098%)
AntialiasCoverage102,2 → 105,30.008098ΔRGB(100,100,100)antialiasing coverage residue on a shared outline
AntialiasCoverage97,4 → 99,50.008098ΔRGB(62,62,62)antialiasing coverage residue on a shared outline
AntialiasCoverage14,9 → 15,110.008098ΔRGB(19,88,88)antialiasing coverage residue on a shared outline
AntialiasCoverage9,14 → 11,150.008098ΔRGB(19,88,88)antialiasing coverage residue on a shared outline
Missing111,0 → 114,00.007289candidate lacks paint present in reference (0.007289%)
Missing119,0 → 122,00.007289candidate lacks paint present in reference (0.007289%)
Missing0,39 → 0,420.007289candidate lacks paint present in reference (0.007289%)
Missing43,0 → 45,00.006479candidate lacks paint present in reference (0.006479%)
Missing28,2 → 30,20.006479candidate lacks paint present in reference (0.006479%)
Missing2,28 → 2,300.006479candidate lacks paint present in reference (0.006479%)
Missing0,43 → 0,450.006479candidate lacks paint present in reference (0.006479%)
AntialiasCoverage120,1 → 122,10.006479ΔRGB(120,120,120)antialiasing coverage residue on a shared outline
AntialiasCoverage132,4 → 134,40.006479ΔRGB(29,29,29)antialiasing coverage residue on a shared outline
AntialiasCoverage91,9 → 92,100.006479ΔRGB(70,70,70)antialiasing coverage residue on a shared outline
AntialiasCoverage8,65 → 9,660.006479ΔRGB(9,41,41)antialiasing coverage residue on a shared outline
Missing96,5 → 97,60.005669candidate lacks paint present in reference (0.005669%)
AntialiasCoverage128,2 → 130,30.005669ΔRGB(58,58,58)antialiasing coverage residue on a shared outline
AntialiasCoverage130,3 → 131,30.005669ΔRGB(14,14,14)antialiasing coverage residue on a shared outline
AntialiasCoverage95,6 → 97,60.005669ΔRGB(12,12,12)antialiasing coverage residue on a shared outline
Missing33,1 → 35,10.004859candidate lacks paint present in reference (0.004859%)
Missing109,1 → 111,10.004859candidate lacks paint present in reference (0.004859%)
Missing26,2 → 28,30.004859candidate lacks paint present in reference (0.004859%)
Missing101,3 → 103,30.004859candidate lacks paint present in reference (0.004859%)
Missing100,3 → 101,40.004859candidate lacks paint present in reference (0.004859%)
Missing92,8 → 93,80.004859candidate lacks paint present in reference (0.004859%)
Missing144,11 → 145,120.004859candidate lacks paint present in reference (0.004859%)
Missing145,12 → 146,130.004859candidate lacks paint present in reference (0.004859%)
Missing2,26 → 3,280.004859candidate lacks paint present in reference (0.004859%)
Missing1,33 → 1,350.004859candidate lacks paint present in reference (0.004859%)
AntialiasCoverage111,1 → 113,10.004859ΔRGB(122,122,122)antialiasing coverage residue on a shared outline
AntialiasCoverage123,1 → 124,10.004859ΔRGB(106,106,106)antialiasing coverage residue on a shared outline
AntialiasCoverage99,4 → 100,40.004859ΔRGB(90,90,90)antialiasing coverage residue on a shared outline
source · cases/filters/r2-filter-drop-shadow-rounded-css-alpha.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 filter drop shadow rounded css alpha</title>
6<style>
7  @page { size: 224px 144px; 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: 220px; height: 140px; padding: 30px; background: #ffffff; }
12  .ball { width: 80px; height: 80px; border-radius: 50%; background: #d32f2f; filter: drop-shadow(76px 0 0 #424242); }
13</style>
14</head>
15<body>
16  <div class="stage"><div class="ball"></div></div>
17</body>
18</html>

filter: drop-shadow(<color> <length>{2,3}) — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0.82% · raw 1.32% (3240 px) r2-filter-drop-shadow-color-first · drop-shadow-color-firstPASS via CSS-scale observation: sub-CSS shared-outline coverageAntialiasCoveragemissing 1.0%ΔE 2.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
drop-shadow() accepts color before the lengths: The color token appears first in drop-shadow(#00695c 36px 0 0); grammar allows color and lengths in any order. Catches wrong implementation: Parser only accepts color after the lengths and drops the authored teal shadow.
regions (4 total; showing 4 representatives)

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

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
Missing28160,0 → 158,60408total 0.9% · largest 0.4%
ColorErr224240,0 → 158,601212total 2.6% · largest 1.3%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage0,0 → 70,601.3ΔRGB(0,0,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage88,0 → 158,601.3ΔRGB(-2,-1,-1)antialiasing coverage residue on a shared outline
Missing0,0 → 70,600.4candidate lacks paint present in reference (0.4%)
Missing88,0 → 158,600.4candidate lacks paint present in reference (0.4%)
source · cases/filters/r2-filter-drop-shadow-color-first.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 filter drop shadow color first</title>
6<style>
7  @page { size: 224px 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: 220px; height: 110px; padding: 25px; background: #ffffff; }
12  .box { width: 70px; height: 60px; background: #ffca28; filter: drop-shadow(#00695c 88px 0 0); }
13</style>
14</head>
15<body>
16  <div class="stage"><div class="box"></div></div>
17</body>
18</html>

filter: grayscale() — 100.00% verified visual parity PASS 2 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0.43% · raw 0.50% (1951 px) filter-grayscale-group-descendants · group-descendantsPASS via CSS-scale observation: stable same-coordinate outline phaseAntialiasCoveragemissing 0.02%extra 0.02%ΔE 3.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 antialiasing coverage residue on a shared outline
filter: grayscale(1) applies to a parent source graphic including colored text and a child box; catches implementations that recolor only the parent background or ignore descendants.
regions (321 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
ColorErr28219112,0 → 125,28173total 1.2% · largest 0.1%
Missing192014,0 → 113,282total 0.01% · largest 0.001263%
Extra20209,1 → 120,271total 0.01% · largest 0.000632%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage56,0 → 61,280.1ΔRGB(-8,-8,-8)antialiasing coverage residue on a shared outline
AntialiasCoverage104,0 → 108,280.09ΔRGB(-8,-8,-8)antialiasing coverage residue on a shared outline
AntialiasCoverage6,8 → 7,170.02ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage51,8 → 52,170.02ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage108,4 → 108,120.02ΔRGB(-21,-21,-21)antialiasing coverage residue on a shared outline
AntialiasCoverage22,2 → 24,80.02ΔRGB(-9,-9,-9)antialiasing coverage residue on a shared outline
AntialiasCoverage92,15 → 94,210.02ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage122,21 → 125,260.02ΔRGB(-5,-5,-5)antialiasing coverage residue on a shared outline
AntialiasCoverage121,5 → 122,120.02ΔRGB(2,2,2)antialiasing coverage residue on a shared outline
AntialiasCoverage27,6 → 28,120.01ΔRGB(5,5,5)antialiasing coverage residue on a shared outline
AntialiasCoverage45,2 → 49,40.01ΔRGB(-12,-12,-12)antialiasing coverage residue on a shared outline
AntialiasCoverage27,18 → 29,230.01ΔRGB(2,2,2)antialiasing coverage residue on a shared outline
AntialiasCoverage6,1 → 10,30.01ΔRGB(17,17,17)antialiasing coverage residue on a shared outline
AntialiasCoverage50,18 → 52,220.01ΔRGB(2,2,2)antialiasing coverage residue on a shared outline
AntialiasCoverage12,0 → 18,00.01ΔRGB(22,22,22)antialiasing coverage residue on a shared outline
AntialiasCoverage23,20 → 24,260.01ΔRGB(-9,-9,-9)antialiasing coverage residue on a shared outline
AntialiasCoverage120,27 → 125,280.01ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage74,8 → 75,130.01ΔRGB(5,5,5)antialiasing coverage residue on a shared outline
AntialiasCoverage47,13 → 47,180.01ΔRGB(3,3,3)antialiasing coverage residue on a shared outline
AntialiasCoverage2,12 → 2,170.01ΔRGB(2,2,2)antialiasing coverage residue on a shared outline
AntialiasCoverage12,28 → 17,280.01ΔRGB(-9,-9,-9)antialiasing coverage residue on a shared outline
AntialiasCoverage37,0 → 42,00.01ΔRGB(-7,-7,-7)antialiasing coverage residue on a shared outline
AntialiasCoverage33,20 → 35,230.01ΔRGB(-14,-14,-14)antialiasing coverage residue on a shared outline
AntialiasCoverage92,25 → 95,270.01ΔRGB(-10,-10,-10)antialiasing coverage residue on a shared outline
AntialiasCoverage75,4 → 77,70.009475ΔRGB(13,13,13)antialiasing coverage residue on a shared outline
AntialiasCoverage80,6 → 82,80.009475ΔRGB(-6,-6,-6)antialiasing coverage residue on a shared outline
AntialiasCoverage92,7 → 94,100.009475ΔRGB(-6,-6,-6)antialiasing coverage residue on a shared outline
AntialiasCoverage47,24 → 49,260.009475ΔRGB(-13,-13,-13)antialiasing coverage residue on a shared outline
AntialiasCoverage84,28 → 89,280.009475ΔRGB(-4,-4,-4)antialiasing coverage residue on a shared outline
AntialiasCoverage114,17 → 116,190.008843ΔRGB(-11,-11,-11)antialiasing coverage residue on a shared outline
AntialiasCoverage80,21 → 82,230.008843ΔRGB(-7,-7,-7)antialiasing coverage residue on a shared outline
AntialiasCoverage43,22 → 45,240.008843ΔRGB(-3,-3,-3)antialiasing coverage residue on a shared outline
AntialiasCoverage37,28 → 42,280.008843ΔRGB(-5,-5,-5)antialiasing coverage residue on a shared outline
AntialiasCoverage42,0 → 45,10.008211ΔRGB(-7,-7,-7)antialiasing coverage residue on a shared outline
AntialiasCoverage116,1 → 118,20.008211ΔRGB(25,25,25)antialiasing coverage residue on a shared outline
AntialiasCoverage3,5 → 4,80.008211ΔRGB(-4,-4,-4)antialiasing coverage residue on a shared outline
AntialiasCoverage79,16 → 79,200.008211ΔRGB(-4,-4,-4)antialiasing coverage residue on a shared outline
AntialiasCoverage74,24 → 74,280.008211ΔRGB(19,19,19)antialiasing coverage residue on a shared outline
AntialiasCoverage30,2 → 32,40.007580ΔRGB(2,2,2)antialiasing coverage residue on a shared outline
AntialiasCoverage118,15 → 120,170.007580ΔRGB(13,13,13)antialiasing coverage residue on a shared outline
AntialiasCoverage74,18 → 75,210.007580ΔRGB(2,2,2)antialiasing coverage residue on a shared outline
AntialiasCoverage33,27 → 35,280.007580ΔRGB(20,20,20)antialiasing coverage residue on a shared outline
AntialiasCoverage84,0 → 87,00.006948ΔRGB(-12,-12,-12)antialiasing coverage residue on a shared outline
AntialiasCoverage91,5 → 92,70.006948ΔRGB(9,9,9)antialiasing coverage residue on a shared outline
AntialiasCoverage2,9 → 2,120.006948ΔRGB(6,6,6)antialiasing coverage residue on a shared outline
AntialiasCoverage98,18 → 99,200.006948ΔRGB(-2,-2,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage78,25 → 80,270.006948ΔRGB(14,14,14)antialiasing coverage residue on a shared outline
AntialiasCoverage112,0 → 115,00.006316ΔRGB(16,16,16)antialiasing coverage residue on a shared outline
AntialiasCoverage4,3 → 6,40.006316ΔRGB(6,6,6)antialiasing coverage residue on a shared outline
AntialiasCoverage42,4 → 44,50.006316ΔRGB(-6,-6,-6)antialiasing coverage residue on a shared outline
AntialiasCoverage49,5 → 50,70.006316ΔRGB(-10,-10,-10)antialiasing coverage residue on a shared outline
AntialiasCoverage33,6 → 34,80.006316ΔRGB(-6,-6,-6)antialiasing coverage residue on a shared outline
AntialiasCoverage99,10 → 99,130.006316ΔRGB(-7,-7,-7)antialiasing coverage residue on a shared outline
AntialiasCoverage75,21 → 76,230.006316ΔRGB(3,3,3)antialiasing coverage residue on a shared outline
AntialiasCoverage97,21 → 98,230.006316ΔRGB(-2,-2,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage5,24 → 6,260.006316ΔRGB(-5,-5,-5)antialiasing coverage residue on a shared outline
AntialiasCoverage9,5 → 11,60.005685ΔRGB(6,6,6)antialiasing coverage residue on a shared outline
AntialiasCoverage116,6 → 117,90.005685ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage74,15 → 74,180.005685ΔRGB(-2,-2,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage32,16 → 32,180.005685ΔRGB(-3,-3,-3)antialiasing coverage residue on a shared outline
AntialiasCoverage2,18 → 2,200.005685ΔRGB(2,2,2)antialiasing coverage residue on a shared outline
AntialiasCoverage121,19 → 122,210.005685ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage89,28 → 91,280.005685ΔRGB(-3,-3,-3)antialiasing coverage residue on a shared outline
AntialiasCoverage35,0 → 36,10.005053ΔRGB(-8,-8,-8)antialiasing coverage residue on a shared outline
source · cases/filters/filter-grayscale-group-descendants.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>filter grayscale group descendants</title>
6<style>
7  @page { size: 264px 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  .group {
12    width: 260px;
13    height: 150px;
14    padding: 18px 20px;
15    background: #ffffff;
16    color: #d50000;
17    filter: grayscale(1);
18  }
19  .text {
20    font-size: 36px;
21    font-weight: 700;
22    line-height: 44px;
23  }
24  .child {
25    width: 160px;
26    height: 46px;
27    margin-top: 18px;
28    background: #2962ff;
29  }
30</style>
31</head>
32<body>
33  <div class="group">
34    <div class="text">COLOR</div>
35    <div class="child"></div>
36  </div>
37</body>
38</html>
PASS visually equivalent · no rejecting defect · thresholded evidence 0% · raw 0.06% (506 px) filter-grayscale · 1PASS via raw same-coordinate visibility policyAntialiasCoverageΔE 0.4
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: antialiasing coverage residue on a shared outline
filter: grayscale(1) fully desaturating a four-quadrant color image.
regions (7 total; showing 7 representatives)

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

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
ColorErr75060,0 → 160,160250total 0.2% · largest 0.10% · max ΔE 0.4

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage160,0 → 160,800.10ΔE 0.4 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage0,160 → 80,1600.10ΔE 0.3 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage80,0 → 80,00.000797ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage0,0 → 0,00.000398ΔE 0.3 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage0,80 → 0,800.000398ΔE 0.3 ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage160,80 → 160,800.000398ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage80,160 → 80,1600.000398ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
source · cases/filters/filter-grayscale.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>filter grayscale</title>
6<style>
7  @page { size: 320px 256px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  .frame { padding: 40px; }
12  img.t {
13    width: 160px;
14    height: 160px;
15    image-rendering: pixelated;
16    filter: grayscale(1);
17  }
18</style>
19</head>
20<body>
21  <div class="frame"><img class="t" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAc0lEQVR42u3QMQEAIAwDMORUBGKRMxF4ARk7liMGsip5nXJ6LQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIGBAQHa9TrfSSoAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBgQ8AFCMfIOlbOSBgAAAABJRU5ErkJggg=="></div>
22</body>
23</html>

filter: hue-rotate() — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0.000125% · raw 0.19% (1504 px) filter-hue-rotate · 120degPASS via CSS-scale observation: sub-CSS shared-colour coverageAntialiasCoverageΔE 0.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
filter: hue-rotate(120deg) rotating the hue of a four-quadrant color image.
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
ColorErr215040,0 → 160,1601001total 0.6% · largest 0.4% · max ΔE 0.1

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage0,0 → 160,1600.4ΔE 0.1 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage0,0 → 80,800.2ΔE 0.08 ΔRGB(-1,0,-1)antialiasing coverage residue on a shared outline
source · cases/filters/filter-hue-rotate.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>filter hue-rotate</title>
6<style>
7  @page { size: 320px 256px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  .frame { padding: 40px; }
12  img.t {
13    width: 160px;
14    height: 160px;
15    image-rendering: pixelated;
16    filter: hue-rotate(120deg);
17  }
18</style>
19</head>
20<body>
21  <div class="frame"><img class="t" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAc0lEQVR42u3QMQEAIAwDMORUBGKRMxF4ARk7liMGsip5nXJ6LQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIGBAQHa9TrfSSoAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBgQ8AFCMfIOlbOSBgAAAABJRU5ErkJggg=="></div>
22</body>
23</html>

filter: hue-rotate() on a container group — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0.27% · raw 0.27% (1065 px) r2-filter-hue-rotate-group-descendants · hue-rotate-group-descendantsPASS via CSS-scale observation: stable same-coordinate outline phaseAntialiasCoveragemissing 0.03%extra 0.001293%ΔE 5.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
hue-rotate() must filter descendant text and child paint: A container with a solid background, child chip, and glyphs uses filter:hue-rotate(120deg); all descendants are part of the filtered source graphic. Catches wrong implementation: Implementation applies the color operation only to the box fill/image path and leaves descendants unfiltered.
regions (47 total; showing 47 representatives)

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

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
ColorErr3996918,73 → 78,97361total 0.3% · largest 0.1%
Missing49241,73 → 54,9545total 0.03% · largest 0.01%
Extra4443,94 → 47,961total 0.001270% · largest 0.000318%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage63,73 → 78,960.1ΔRGB(-5,-13,-14)antialiasing coverage residue on a shared outline
AntialiasCoverage22,73 → 36,960.09ΔRGB(-6,-14,-15)antialiasing coverage residue on a shared outline
AntialiasCoverage18,73 → 22,960.03ΔRGB(-15,-37,-39)antialiasing coverage residue on a shared outline
AntialiasCoverage58,73 → 58,910.02ΔRGB(-8,-19,-19)antialiasing coverage residue on a shared outline
AntialiasCoverage44,73 → 44,890.02ΔRGB(-6,-13,-13)antialiasing coverage residue on a shared outline
Missing41,73 → 41,870.01candidate lacks paint present in reference (0.01%)
Missing54,73 → 54,870.01candidate lacks paint present in reference (0.01%)
AntialiasCoverage48,93 → 51,930.003810ΔRGB(-10,-22,-22)antialiasing coverage residue on a shared outline
AntialiasCoverage45,89 → 45,920.003175ΔRGB(-2,-6,-6)antialiasing coverage residue on a shared outline
AntialiasCoverage41,88 → 41,900.002858ΔRGB(-3,-7,-6)antialiasing coverage residue on a shared outline
AntialiasCoverage55,94 → 56,950.002858ΔRGB(-5,-13,-12)antialiasing coverage residue on a shared outline
AntialiasCoverage47,97 → 50,970.002858ΔRGB(-4,-12,-12)antialiasing coverage residue on a shared outline
AntialiasCoverage54,88 → 54,900.002540ΔRGB(-5,-14,-13)antialiasing coverage residue on a shared outline
AntialiasCoverage41,91 → 41,920.002223ΔRGB(-5,-8,-9)antialiasing coverage residue on a shared outline
AntialiasCoverage52,96 → 53,960.002223ΔRGB(-11,-26,-26)antialiasing coverage residue on a shared outline
AntialiasCoverage46,92 → 46,920.001588ΔRGB(-2,-5,-6)antialiasing coverage residue on a shared outline
AntialiasCoverage50,97 → 52,970.001588ΔRGB(-11,-27,-29)antialiasing coverage residue on a shared outline
AntialiasCoverage77,75 → 77,760.001270ΔRGB(1,3,4)antialiasing coverage residue on a shared outline
AntialiasCoverage53,91 → 53,920.001270ΔRGB(-2,-7,-8)antialiasing coverage residue on a shared outline
AntialiasCoverage42,93 → 42,940.001270ΔRGB(-6,-16,-16)antialiasing coverage residue on a shared outline
AntialiasCoverage44,95 → 44,950.001270ΔRGB(-3,-7,-7)antialiasing coverage residue on a shared outline
AntialiasCoverage46,96 → 47,960.001270ΔRGB(-17,-39,-40)antialiasing coverage residue on a shared outline
AntialiasCoverage58,91 → 58,920.000953ΔRGB(-1,-4,-4)antialiasing coverage residue on a shared outline
AntialiasCoverage47,93 → 47,930.000953ΔRGB(-6,-12,-13)antialiasing coverage residue on a shared outline
AntialiasCoverage22,74 → 22,740.000635ΔRGB(-3,-8,-8)antialiasing coverage residue on a shared outline
AntialiasCoverage54,91 → 54,910.000635ΔRGB(-3,-7,-6)antialiasing coverage residue on a shared outline
AntialiasCoverage42,92 → 42,930.000635ΔRGB(-6,-14,-15)antialiasing coverage residue on a shared outline
AntialiasCoverage52,92 → 52,920.000635ΔRGB(1,4,4)antialiasing coverage residue on a shared outline
AntialiasCoverage52,93 → 52,930.000635ΔRGB(-3,-7,-7)antialiasing coverage residue on a shared outline
AntialiasCoverage57,93 → 57,930.000635ΔRGB(2,3,4)antialiasing coverage residue on a shared outline
AntialiasCoverage22,96 → 22,960.000635ΔRGB(-3,-8,-8)antialiasing coverage residue on a shared outline
AntialiasCoverage54,96 → 54,960.000635ΔRGB(0,-3,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage45,96 → 45,960.000635ΔRGB(-2,-5,-6)antialiasing coverage residue on a shared outline
Missing41,90 → 41,900.000318candidate lacks paint present in reference (0.000318%)
Missing44,95 → 44,950.000318candidate lacks paint present in reference (0.000318%)
Extra43,94 → 43,940.000318candidate adds paint absent from reference (0.000318%)
Extra44,95 → 44,950.000318candidate adds paint absent from reference (0.000318%)
Extra46,96 → 46,960.000318candidate adds paint absent from reference (0.000318%)
Extra47,96 → 47,960.000318candidate adds paint absent from reference (0.000318%)
AntialiasCoverage53,92 → 53,920.000318ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage57,92 → 57,920.000318ΔRGB(-7,-17,-19)antialiasing coverage residue on a shared outline
AntialiasCoverage57,93 → 57,930.000318ΔRGB(-5,-12,-12)antialiasing coverage residue on a shared outline
AntialiasCoverage43,94 → 43,940.000318ΔRGB(-12,-26,-26)antialiasing coverage residue on a shared outline
AntialiasCoverage43,94 → 43,940.000318ΔRGB(-9,-21,-21)antialiasing coverage residue on a shared outline
AntialiasCoverage43,95 → 43,950.000318ΔRGB(-9,-21,-21)antialiasing coverage residue on a shared outline
AntialiasCoverage54,95 → 54,950.000318ΔRGB(2,5,6)antialiasing coverage residue on a shared outline
AntialiasCoverage45,96 → 45,960.000318ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
source · cases/filters/r2-filter-hue-rotate-group-descendants.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 hue rotate group descendants</title>
6<style>
7  @page { size: 264px 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  .group {
12    width: 230px;
13    height: 140px;
14    padding: 16px;
15    background: #3949ab;
16    color: #ffffff;
17  }
18  .chip {
19    width: 86px;
20    height: 42px;
21    background: #ffca28;
22  }
23  .label {
24    margin-top: 10px;
25    font-size: 30px;
26    font-weight: 700;
27    line-height: 36px;
28  }
29  .group { filter: hue-rotate(120deg); }
30</style>
31</head>
32<body>
33  <div class="group"><div class="chip"></div><div class="label">HUE</div></div>
34</body>
35</html>

filter: invert() — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0.000125% · raw 0.13% (1008 px) filter-invert · 1PASS via CSS-scale observation: sub-CSS shared-colour coverageAntialiasCoverageΔ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 antialiasing coverage residue on a shared outline
filter: invert(1) inverting the colors of a four-quadrant color image.
regions (4 total; showing 4 representatives)

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

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
ColorErr410080,0 → 160,1601001total 0.4% · largest 0.4% · max ΔE 0.2

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage0,0 → 160,1600.4ΔE 0.2 ΔRGB(-1,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage80,0 → 80,00.001195ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage0,80 → 0,800.001195ΔRGB(1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage0,0 → 0,00.000398ΔE 0.04 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
source · cases/filters/filter-invert.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>filter invert</title>
6<style>
7  @page { size: 320px 256px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  .frame { padding: 40px; }
12  img.t {
13    width: 160px;
14    height: 160px;
15    image-rendering: pixelated;
16    filter: invert(1);
17  }
18</style>
19</head>
20<body>
21  <div class="frame"><img class="t" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAc0lEQVR42u3QMQEAIAwDMORUBGKRMxF4ARk7liMGsip5nXJ6LQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIGBAQHa9TrfSSoAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBgQ8AFCMfIOlbOSBgAAAABJRU5ErkJggg=="></div>
22</body>
23</html>

filter: invert() on a container group — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0.47% · raw 0.50% (1951 px) r2-filter-invert-group-descendants · invert-group-descendantsPASS via CSS-scale observation: sub-CSS shared-colour coverageAntialiasCoverageΔE 5.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 antialiasing coverage residue on a shared outline
invert() must filter descendant text and child paint: A container with a solid background, child chip, and glyphs uses filter:invert(100%); all descendants are part of the filtered source graphic. Catches wrong implementation: Implementation applies the color operation only to the box fill/image path and leaves descendants unfiltered.
regions (115 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
ColorErr115195118,73 → 124,96361total 0.6% · largest 0.1%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage70,73 → 85,960.1ΔRGB(13,12,5)antialiasing coverage residue on a shared outline
AntialiasCoverage105,73 → 124,960.08ΔRGB(26,24,11)antialiasing coverage residue on a shared outline
AntialiasCoverage27,73 → 34,960.06ΔRGB(12,11,5)antialiasing coverage residue on a shared outline
AntialiasCoverage89,73 → 98,960.05ΔRGB(17,16,7)antialiasing coverage residue on a shared outline
AntialiasCoverage40,73 → 45,960.05ΔRGB(12,11,5)antialiasing coverage residue on a shared outline
AntialiasCoverage18,73 → 22,960.03ΔRGB(37,34,15)antialiasing coverage residue on a shared outline
AntialiasCoverage22,74 → 22,960.02ΔRGB(8,7,3)antialiasing coverage residue on a shared outline
AntialiasCoverage93,77 → 98,840.02ΔRGB(17,16,7)antialiasing coverage residue on a shared outline
AntialiasCoverage47,73 → 52,760.01ΔRGB(13,12,5)antialiasing coverage residue on a shared outline
AntialiasCoverage63,73 → 68,750.008256ΔRGB(13,12,5)antialiasing coverage residue on a shared outline
AntialiasCoverage57,88 → 58,910.006351ΔRGB(10,9,4)antialiasing coverage residue on a shared outline
AntialiasCoverage38,85 → 40,890.006033ΔRGB(5,5,2)antialiasing coverage residue on a shared outline
AntialiasCoverage103,96 → 108,960.005716ΔRGB(12,11,5)antialiasing coverage residue on a shared outline
AntialiasCoverage62,85 → 64,890.005398ΔRGB(5,5,2)antialiasing coverage residue on a shared outline
AntialiasCoverage55,96 → 60,960.005398ΔRGB(12,11,5)antialiasing coverage residue on a shared outline
AntialiasCoverage99,77 → 100,810.005081ΔRGB(9,8,4)antialiasing coverage residue on a shared outline
AntialiasCoverage36,81 → 37,840.004763ΔRGB(3,3,1)antialiasing coverage residue on a shared outline
AntialiasCoverage100,90 → 101,930.004446ΔRGB(-6,-5,-3)antialiasing coverage residue on a shared outline
AntialiasCoverage34,85 → 35,870.003493ΔRGB(5,4,2)antialiasing coverage residue on a shared outline
AntialiasCoverage67,75 → 68,770.003175ΔRGB(10,10,4)antialiasing coverage residue on a shared outline
AntialiasCoverage62,76 → 63,780.003175ΔRGB(5,5,2)antialiasing coverage residue on a shared outline
AntialiasCoverage66,77 → 67,790.003175ΔRGB(12,11,5)antialiasing coverage residue on a shared outline
AntialiasCoverage48,77 → 49,800.003175ΔRGB(8,7,4)antialiasing coverage residue on a shared outline
AntialiasCoverage65,80 → 66,820.003175ΔRGB(11,10,5)antialiasing coverage residue on a shared outline
AntialiasCoverage49,80 → 50,820.003175ΔRGB(11,10,5)antialiasing coverage residue on a shared outline
AntialiasCoverage54,81 → 54,830.003175ΔRGB(8,7,3)antialiasing coverage residue on a shared outline
AntialiasCoverage64,82 → 65,840.003175ΔRGB(7,6,3)antialiasing coverage residue on a shared outline
AntialiasCoverage50,83 → 51,850.003175ΔRGB(8,8,4)antialiasing coverage residue on a shared outline
AntialiasCoverage103,83 → 104,840.003175ΔRGB(4,4,2)antialiasing coverage residue on a shared outline
AntialiasCoverage55,84 → 55,860.003175ΔRGB(6,5,2)antialiasing coverage residue on a shared outline
AntialiasCoverage51,85 → 52,870.003175ΔRGB(10,9,4)antialiasing coverage residue on a shared outline
AntialiasCoverage59,86 → 59,880.003175ΔRGB(12,11,5)antialiasing coverage residue on a shared outline
AntialiasCoverage54,92 → 54,940.003175ΔRGB(8,8,4)antialiasing coverage residue on a shared outline
AntialiasCoverage56,86 → 56,880.002858ΔRGB(7,6,3)antialiasing coverage residue on a shared outline
AntialiasCoverage103,88 → 104,890.002858ΔRGB(3,3,1)antialiasing coverage residue on a shared outline
AntialiasCoverage103,76 → 104,770.002540ΔRGB(11,10,4)antialiasing coverage residue on a shared outline
AntialiasCoverage37,92 → 38,930.002540ΔRGB(6,6,3)antialiasing coverage residue on a shared outline
AntialiasCoverage52,76 → 52,770.002223ΔRGB(3,3,1)antialiasing coverage residue on a shared outline
AntialiasCoverage62,78 → 62,800.002223ΔRGB(6,5,2)antialiasing coverage residue on a shared outline
AntialiasCoverage53,78 → 53,800.002223ΔRGB(2,2,1)antialiasing coverage residue on a shared outline
AntialiasCoverage61,81 → 61,820.002223ΔRGB(5,4,2)antialiasing coverage residue on a shared outline
AntialiasCoverage32,81 → 33,830.002223ΔRGB(5,5,2)antialiasing coverage residue on a shared outline
AntialiasCoverage60,83 → 60,850.002223ΔRGB(3,3,2)antialiasing coverage residue on a shared outline
AntialiasCoverage38,93 → 39,950.002223ΔRGB(2,2,1)antialiasing coverage residue on a shared outline
AntialiasCoverage48,76 → 48,770.001905ΔRGB(9,8,4)antialiasing coverage residue on a shared outline
AntialiasCoverage104,78 → 104,790.001905ΔRGB(8,8,4)antialiasing coverage residue on a shared outline
AntialiasCoverage99,82 → 100,830.001905ΔRGB(7,6,3)antialiasing coverage residue on a shared outline
AntialiasCoverage101,85 → 102,860.001905ΔRGB(-5,-4,-2)antialiasing coverage residue on a shared outline
AntialiasCoverage35,88 → 36,890.001905ΔRGB(5,4,2)antialiasing coverage residue on a shared outline
AntialiasCoverage52,88 → 52,890.001905ΔRGB(7,6,3)antialiasing coverage residue on a shared outline
AntialiasCoverage53,89 → 53,910.001905ΔRGB(5,4,2)antialiasing coverage residue on a shared outline
AntialiasCoverage60,92 → 61,940.001905ΔRGB(9,8,4)antialiasing coverage residue on a shared outline
AntialiasCoverage60,94 → 60,950.001905ΔRGB(6,5,3)antialiasing coverage residue on a shared outline
AntialiasCoverage55,94 → 55,960.001905ΔRGB(4,4,2)antialiasing coverage residue on a shared outline
AntialiasCoverage99,74 → 100,740.001588ΔRGB(10,9,4)antialiasing coverage residue on a shared outline
AntialiasCoverage85,75 → 85,760.001270ΔRGB(-3,-3,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage104,80 → 104,810.001270ΔRGB(14,13,6)antialiasing coverage residue on a shared outline
AntialiasCoverage102,85 → 102,850.001270ΔRGB(-2,-2,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage102,87 → 103,870.001270ΔRGB(5,4,2)antialiasing coverage residue on a shared outline
AntialiasCoverage98,87 → 98,880.001270ΔRGB(2,2,1)antialiasing coverage residue on a shared outline
AntialiasCoverage99,89 → 100,890.001270ΔRGB(12,11,5)antialiasing coverage residue on a shared outline
AntialiasCoverage36,80 → 36,800.000953ΔRGB(6,6,2)antialiasing coverage residue on a shared outline
AntialiasCoverage104,82 → 104,820.000953ΔRGB(11,10,5)antialiasing coverage residue on a shared outline
AntialiasCoverage62,90 → 62,900.000953ΔRGB(4,4,2)antialiasing coverage residue on a shared outline
source · cases/filters/r2-filter-invert-group-descendants.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 invert group descendants</title>
6<style>
7  @page { size: 264px 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  .group {
12    width: 230px;
13    height: 140px;
14    padding: 16px;
15    background: #3949ab;
16    color: #ffffff;
17  }
18  .chip {
19    width: 86px;
20    height: 42px;
21    background: #ffca28;
22  }
23  .label {
24    margin-top: 10px;
25    font-size: 30px;
26    font-weight: 700;
27    line-height: 36px;
28  }
29  .group { filter: invert(100%); }
30</style>
31</head>
32<body>
33  <div class="group"><div class="chip"></div><div class="label">INVERT</div></div>
34</body>
35</html>

filter: opacity() — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0% · raw 0.27% (2126 px) filter-opacity-fn · 0.5-over-greyPASS via raw same-coordinate visibility policyAntialiasCoverageΔE 0.4
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: antialiasing coverage residue on a shared outline
filter: opacity(0.5) compositing a red box over a grey backdrop; distinct from the opacity property.
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
ColorErr121260,0 → 200,1402126total 0.8% · largest 0.8% · max ΔE 0.4

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage0,0 → 200,1400.8ΔE 0.4 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
source · cases/filters/filter-opacity-fn.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>filter opacity()</title>
6<style>
7  @page { size: 360px 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  /* Solid grey backdrop so the half-opacity box composites to a known grey. */
12  .frame { padding: 40px; }
13  .bg { width: 200px; height: 140px; background-color: #b0bec5; }
14  .box {
15    width: 200px;
16    height: 140px;
17    background-color: #c62828;
18    filter: opacity(0.5);
19  }
20</style>
21</head>
22<body>
23  <div class="frame"><div class="bg"><div class="box"></div></div></div>
24</body>
25</html>

filter: saturate() — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0.000375% · raw 0.25% (2000 px) filter-saturate · 3PASS via CSS-scale observation: sub-CSS shared-colour coverageAntialiasCoverageΔE 0.04
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
filter: saturate(3) boosting saturation of a four-quadrant color image.
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
ColorErr120000,0 → 160,1602000total 0.8% · largest 0.8% · max ΔE 0.04

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage0,0 → 160,1600.8ΔE 0.04 ΔRGB(0,0,-1)antialiasing coverage residue on a shared outline
source · cases/filters/filter-saturate.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>filter saturate</title>
6<style>
7  @page { size: 320px 256px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  .frame { padding: 40px; }
12  img.t {
13    width: 160px;
14    height: 160px;
15    image-rendering: pixelated;
16    filter: saturate(3);
17  }
18</style>
19</head>
20<body>
21  <div class="frame"><img class="t" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAc0lEQVR42u3QMQEAIAwDMORUBGKRMxF4ARk7liMGsip5nXJ6LQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIGBAQHa9TrfSSoAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBgQ8AFCMfIOlbOSBgAAAABJRU5ErkJggg=="></div>
22</body>
23</html>

filter: saturate() on a container group — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0.61% · raw 0.66% (2590 px) r2-filter-saturate-group-descendants · saturate-group-descendantsPASS via CSS-scale observation: stable same-coordinate outline phaseAntialiasCoveragemissing 0.007303%extra 0.003984%ΔE 4.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 antialiasing coverage residue on a shared outline
saturate() must filter descendant text and child paint: A container with a solid background, child chip, and glyphs uses filter:saturate(300%); all descendants are part of the filtered source graphic. Catches wrong implementation: Implementation applies the color operation only to the box fill/image path and leaves descendants unfiltered.
regions (277 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
ColorErr244255617,73 → 168,97372total 0.8% · largest 0.1%
Extra121219,73 → 105,961total 0.003810% · largest 0.000318%
Missing212218,77 → 129,962total 0.006986% · largest 0.000635%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage153,73 → 168,960.1ΔRGB(-16,-13,0)antialiasing coverage residue on a shared outline
AntialiasCoverage53,73 → 73,960.08ΔRGB(-29,-23,0)antialiasing coverage residue on a shared outline
AntialiasCoverage131,73 → 151,960.08ΔRGB(-33,-27,0)antialiasing coverage residue on a shared outline
AntialiasCoverage96,73 → 106,960.04ΔRGB(-43,-34,0)antialiasing coverage residue on a shared outline
AntialiasCoverage78,73 → 78,910.02ΔRGB(-17,-14,0)antialiasing coverage residue on a shared outline
AntialiasCoverage92,73 → 92,890.02ΔRGB(-24,-21,0)antialiasing coverage residue on a shared outline
AntialiasCoverage74,73 → 74,880.02ΔRGB(2,2,0)antialiasing coverage residue on a shared outline
AntialiasCoverage88,73 → 88,870.01ΔRGB(11,8,0)antialiasing coverage residue on a shared outline
AntialiasCoverage111,89 → 115,940.01ΔRGB(-5,-4,0)antialiasing coverage residue on a shared outline
AntialiasCoverage41,91 → 50,910.009526ΔRGB(-15,-12,0)antialiasing coverage residue on a shared outline
AntialiasCoverage119,91 → 128,910.009526ΔRGB(-15,-12,0)antialiasing coverage residue on a shared outline
AntialiasCoverage43,87 → 49,870.007303ΔRGB(-18,-12,0)antialiasing coverage residue on a shared outline
AntialiasCoverage121,87 → 127,870.007303ΔRGB(-18,-12,0)antialiasing coverage residue on a shared outline
AntialiasCoverage107,89 → 109,930.005716ΔRGB(6,4,0)antialiasing coverage residue on a shared outline
AntialiasCoverage38,85 → 39,890.005398ΔRGB(-8,-8,0)antialiasing coverage residue on a shared outline
AntialiasCoverage116,85 → 117,890.005398ΔRGB(-8,-8,0)antialiasing coverage residue on a shared outline
AntialiasCoverage32,74 → 32,780.005081ΔRGB(-5,-5,0)antialiasing coverage residue on a shared outline
AntialiasCoverage107,78 → 107,820.005081ΔRGB(-7,-7,0)antialiasing coverage residue on a shared outline
AntialiasCoverage17,91 → 18,950.005081ΔRGB(-36,-30,0)antialiasing coverage residue on a shared outline
AntialiasCoverage100,77 → 105,770.004763ΔRGB(-16,-13,0)antialiasing coverage residue on a shared outline
AntialiasCoverage100,84 → 105,840.004763ΔRGB(-18,-12,0)antialiasing coverage residue on a shared outline
AntialiasCoverage100,91 → 100,950.004763ΔRGB(-10,-7,0)antialiasing coverage residue on a shared outline
AntialiasCoverage23,97 → 27,970.004763ΔRGB(-7,-7,0)antialiasing coverage residue on a shared outline
AntialiasCoverage81,97 → 85,970.004763ΔRGB(-29,-23,0)antialiasing coverage residue on a shared outline
AntialiasCoverage44,79 → 45,830.004446ΔRGB(-6,-6,0)antialiasing coverage residue on a shared outline
AntialiasCoverage122,79 → 123,830.004446ΔRGB(-6,-6,0)antialiasing coverage residue on a shared outline
AntialiasCoverage43,83 → 44,860.004446ΔRGB(-8,-6,0)antialiasing coverage residue on a shared outline
AntialiasCoverage121,83 → 122,860.004446ΔRGB(-8,-6,0)antialiasing coverage residue on a shared outline
AntialiasCoverage48,83 → 49,860.004446ΔRGB(-5,-5,0)antialiasing coverage residue on a shared outline
AntialiasCoverage126,83 → 127,860.004446ΔRGB(-5,-5,0)antialiasing coverage residue on a shared outline
AntialiasCoverage86,90 → 87,920.004446ΔRGB(-2,-2,0)antialiasing coverage residue on a shared outline
AntialiasCoverage23,93 → 27,930.004446ΔRGB(-9,-9,0)antialiasing coverage residue on a shared outline
AntialiasCoverage110,96 → 115,960.004446ΔRGB(-15,-12,0)antialiasing coverage residue on a shared outline
AntialiasCoverage111,78 → 111,820.004128ΔRGB(-15,-12,0)antialiasing coverage residue on a shared outline
AntialiasCoverage34,88 → 34,920.004128ΔRGB(-12,-9,0)antialiasing coverage residue on a shared outline
AntialiasCoverage109,93 → 110,960.004128ΔRGB(1,1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage100,87 → 104,870.003810ΔRGB(-15,-12,0)antialiasing coverage residue on a shared outline
AntialiasCoverage109,75 → 110,760.003493ΔRGB(-6,-3,0)antialiasing coverage residue on a shared outline
AntialiasCoverage17,77 → 18,800.003493ΔRGB(-1,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage20,92 → 22,930.003493ΔRGB(-11,-10,0)antialiasing coverage residue on a shared outline
AntialiasCoverage81,93 → 84,930.003493ΔRGB(-32,-23,0)antialiasing coverage residue on a shared outline
AntialiasCoverage24,73 → 27,730.003175ΔRGB(-29,-23,0)antialiasing coverage residue on a shared outline
AntialiasCoverage43,73 → 44,760.003175ΔRGB(-4,-3,0)antialiasing coverage residue on a shared outline
AntialiasCoverage121,73 → 122,760.003175ΔRGB(-4,-3,0)antialiasing coverage residue on a shared outline
AntialiasCoverage100,79 → 100,820.003175ΔRGB(-10,-7,0)antialiasing coverage residue on a shared outline
AntialiasCoverage40,80 → 41,820.003175ΔRGB(-7,-4,0)antialiasing coverage residue on a shared outline
AntialiasCoverage118,80 → 119,820.003175ΔRGB(-7,-4,0)antialiasing coverage residue on a shared outline
AntialiasCoverage51,80 → 51,830.003175ΔRGB(-8,-5,0)antialiasing coverage residue on a shared outline
AntialiasCoverage129,80 → 129,830.003175ΔRGB(-8,-5,0)antialiasing coverage residue on a shared outline
AntialiasCoverage47,81 → 47,830.003175ΔRGB(-8,-5,0)antialiasing coverage residue on a shared outline
AntialiasCoverage125,81 → 125,830.003175ΔRGB(-8,-5,0)antialiasing coverage residue on a shared outline
AntialiasCoverage52,83 → 52,850.003175ΔRGB(-6,-6,0)antialiasing coverage residue on a shared outline
AntialiasCoverage130,83 → 130,850.003175ΔRGB(-6,-6,0)antialiasing coverage residue on a shared outline
AntialiasCoverage74,89 → 75,920.003175ΔRGB(-3,-3,0)antialiasing coverage residue on a shared outline
AntialiasCoverage37,89 → 37,920.003175ΔRGB(-8,-5,0)antialiasing coverage residue on a shared outline
AntialiasCoverage115,89 → 116,920.003175ΔRGB(-8,-5,0)antialiasing coverage residue on a shared outline
AntialiasCoverage36,92 → 36,940.003175ΔRGB(-13,-10,0)antialiasing coverage residue on a shared outline
AntialiasCoverage55,92 → 56,940.003175ΔRGB(-9,-6,0)antialiasing coverage residue on a shared outline
AntialiasCoverage133,92 → 134,940.003175ΔRGB(-9,-6,0)antialiasing coverage residue on a shared outline
AntialiasCoverage25,76 → 27,760.002858ΔRGB(3,3,0)antialiasing coverage residue on a shared outline
AntialiasCoverage45,78 → 46,790.002858ΔRGB(-10,-7,0)antialiasing coverage residue on a shared outline
AntialiasCoverage124,78 → 124,790.002858ΔRGB(-10,-7,0)antialiasing coverage residue on a shared outline
AntialiasCoverage109,84 → 110,850.002858ΔRGB(6,3,0)antialiasing coverage residue on a shared outline
AntialiasCoverage21,78 → 21,800.002540ΔRGB(-11,-8,0)antialiasing coverage residue on a shared outline
source · cases/filters/r2-filter-saturate-group-descendants.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 saturate group descendants</title>
6<style>
7  @page { size: 264px 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  .group {
12    width: 230px;
13    height: 140px;
14    padding: 16px;
15    background: #3949ab;
16    color: #ffffff;
17  }
18  .chip {
19    width: 86px;
20    height: 42px;
21    background: #ffca28;
22  }
23  .label {
24    margin-top: 10px;
25    font-size: 30px;
26    font-weight: 700;
27    line-height: 36px;
28  }
29  .group { filter: saturate(300%); }
30</style>
31</head>
32<body>
33  <div class="group"><div class="chip"></div><div class="label">SATURATE</div></div>
34</body>
35</html>

filter: sepia() — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0% · raw 0.06% (510 px) filter-sepia · 1PASS via raw same-coordinate visibility policyAntialiasCoverageΔE 0.4
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: antialiasing coverage residue on a shared outline
filter: sepia(1) applying a sepia tone to a four-quadrant color image.
regions (6 total; showing 6 representatives)

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

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
ColorErr65100,0 → 160,160252total 0.2% · largest 0.1% · max ΔE 0.8

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage160,0 → 160,800.1ΔE 0.4 ΔRGB(0,0,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage0,160 → 80,1600.1ΔE 0.4 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage80,0 → 80,00.000797ΔE 0.8 ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage0,80 → 0,800.000797ΔE 0.5 ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage0,0 → 0,00.000398ΔE 0.4 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage160,160 → 160,1600.000398ΔE 0.3 ΔRGB(0,0,-1)antialiasing coverage residue on a shared outline
source · cases/filters/filter-sepia.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>filter sepia</title>
6<style>
7  @page { size: 320px 256px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  .frame { padding: 40px; }
12  img.t {
13    width: 160px;
14    height: 160px;
15    image-rendering: pixelated;
16    filter: sepia(1);
17  }
18</style>
19</head>
20<body>
21  <div class="frame"><img class="t" alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAc0lEQVR42u3QMQEAIAwDMORUBGKRMxF4ARk7liMGsip5nXJ6LQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIGBAQHa9TrfSSoAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBgQ8AFCMfIOlbOSBgAAAABJRU5ErkJggg=="></div>
22</body>
23</html>

filter: url(#id) with feBlend multiply — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0.000317% · raw 0.41% (1297 px) r2-filter-url-feblend-multiply · feblend-multiplyPASS via CSS-scale observation: sub-CSS shared-colour coverageAntialiasCoverageΔE 0.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 antialiasing coverage residue on a shared outline
SVG feBlend must composite primitive inputs: An inline SVG filter referenced from CSS contains a non-feColorMatrix primitive or unsupported matrix form. Catches wrong implementation: CSS filter:url() resolver extracts only a narrow feColorMatrix subset and skips the primitive.
regions (5 total; showing 5 representatives)

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

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
ColorErr5129716,24 → 142,105649total 0.4% · largest 0.2%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage16,24 → 142,1050.2ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage34,36 → 124,930.2ΔRGB(0,-2,0)antialiasing coverage residue on a shared outline
AntialiasCoverage34,36 → 34,940.06ΔRGB(0,0,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage16,24 → 16,240.000333ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage124,94 → 124,940.000333ΔRGB(0,0,-1)antialiasing coverage residue on a shared outline
source · cases/filters/r2-filter-url-feblend-multiply.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 feblend-multiply</title>
6<style>
7  @page { size: 224px 144px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  svg.defs { position: absolute; width: 0; height: 0; overflow: hidden; }
12  .stage { width: 220px; height: 140px; padding: 36px 34px; background: #d9d9d9; }
13  .box { width: 90px; height: 58px; background: #d50000; filter: url(#r2f); }
14</style>
15</head>
16<body>
17  <svg class="defs" width="0" height="0" aria-hidden="true" focusable="false"><defs><filter id="r2f" x="-20%" y="-20%" width="140%" height="140%"><feFlood flood-color="#1565c0" result="blue"/><feBlend in="SourceGraphic" in2="blue" mode="multiply"/></filter></defs></svg>
18  <div class="stage"><div class="box"></div></div>
19</body>
20</html>

filter: url(#id) with feColorMatrix luminanceToAlpha — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0% · raw 0.29% (928 px) r2-filter-url-fecolormatrix-luminance-alpha · fecolormatrix-luminance-to-alphaPASS via raw same-coordinate visibility policyAntialiasCoverageΔE 0.3
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: antialiasing coverage residue on a shared outline
SVG feColorMatrix luminanceToAlpha must affect alpha: An inline SVG filter referenced from CSS contains a non-feColorMatrix primitive or unsupported matrix form. Catches wrong implementation: CSS filter:url() resolver extracts only a narrow feColorMatrix subset and skips the primitive.
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
ColorErr192834,36 → 124,94928total 0.3% · largest 0.3%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage34,36 → 124,940.3ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
source · cases/filters/r2-filter-url-fecolormatrix-luminance-alpha.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 fecolormatrix-luminance-to-alpha</title>
6<style>
7  @page { size: 224px 144px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  svg.defs { position: absolute; width: 0; height: 0; overflow: hidden; }
12  .stage { width: 220px; height: 140px; padding: 36px 34px; background: #d9d9d9; }
13  .box { width: 90px; height: 58px; background: #d50000; filter: url(#r2f); }
14</style>
15</head>
16<body>
17  <svg class="defs" width="0" height="0" aria-hidden="true" focusable="false"><defs><filter id="r2f" x="-20%" y="-20%" width="140%" height="140%"><feColorMatrix type="luminanceToAlpha"/></filter></defs></svg>
18  <div class="stage"><div class="box"></div></div>
19</body>
20</html>

filter: url(#id) with feColorMatrix type=matrix channel swap — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0.09% · raw 0.53% (1667 px) r2-filter-url-fecolormatrix-channel-swap · fecolormatrix-channel-swapPASS via CSS-scale observation: sub-CSS shared-colour coverageAntialiasCoverageΔ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 antialiasing coverage residue on a shared outline
SVG feColorMatrix arbitrary matrices must be honored: An inline SVG filter referenced from CSS contains a non-feColorMatrix primitive or unsupported matrix form. Catches wrong implementation: CSS filter:url() resolver extracts only a narrow feColorMatrix subset and skips the primitive.
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
ColorErr1166734,36 → 124,941667total 0.6% · largest 0.6%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage34,36 → 124,940.6ΔRGB(-1,-1,0)antialiasing coverage residue on a shared outline
source · cases/filters/r2-filter-url-fecolormatrix-channel-swap.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 fecolormatrix-channel-swap</title>
6<style>
7  @page { size: 224px 144px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  svg.defs { position: absolute; width: 0; height: 0; overflow: hidden; }
12  .stage { width: 220px; height: 140px; padding: 36px 34px; background: #d9d9d9; }
13  .box { width: 90px; height: 58px; background: #d50000; filter: url(#r2f); }
14</style>
15</head>
16<body>
17  <svg class="defs" width="0" height="0" aria-hidden="true" focusable="false"><defs><filter id="r2f" x="-20%" y="-20%" width="140%" height="140%"><feColorMatrix type="matrix" values="0 0 1 0 0  0 1 0 0 0  1 0 0 0 0  0 0 0 1 0"/></filter></defs></svg>
18  <div class="stage"><div class="box"></div></div>
19</body>
20</html>

filter: url(#id) with feComponentTransfer — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0.09% · raw 0.38% (1211 px) r2-filter-url-fecomponenttransfer · fecomponenttransferPASS via CSS-scale observation: sub-CSS shared-colour coverageAntialiasCoverageΔE 0.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
SVG feComponentTransfer must apply channel transfer functions: An inline SVG filter referenced from CSS contains a non-feColorMatrix primitive or unsupported matrix form. Catches wrong implementation: CSS filter:url() resolver extracts only a narrow feColorMatrix subset and skips the primitive.
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
ColorErr1121134,36 → 124,941211total 0.4% · largest 0.4%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage34,36 → 124,940.4ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
source · cases/filters/r2-filter-url-fecomponenttransfer.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 fecomponenttransfer</title>
6<style>
7  @page { size: 224px 144px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  svg.defs { position: absolute; width: 0; height: 0; overflow: hidden; }
12  .stage { width: 220px; height: 140px; padding: 36px 34px; background: #d9d9d9; }
13  .box { width: 90px; height: 58px; background: #d50000; filter: url(#r2f); }
14</style>
15</head>
16<body>
17  <svg class="defs" width="0" height="0" aria-hidden="true" focusable="false"><defs><filter id="r2f" x="-20%" y="-20%" width="140%" height="140%"><feComponentTransfer><feFuncR type="table" tableValues="0 0"/><feFuncG type="identity"/><feFuncB type="identity"/><feFuncA type="identity"/></feComponentTransfer></filter></defs></svg>
18  <div class="stage"><div class="box"></div></div>
19</body>
20</html>

filter: url(#id) with feComposite operator=in — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0% · raw 0.38% (1210 px) r2-filter-url-fecomposite-in · fecomposite-inPASS via raw same-coordinate visibility policyAntialiasCoverageΔE 0.3
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: antialiasing coverage residue on a shared outline
SVG feComposite must support Porter-Duff operators: An inline SVG filter referenced from CSS contains a non-feColorMatrix primitive or unsupported matrix form. Catches wrong implementation: CSS filter:url() resolver extracts only a narrow feColorMatrix subset and skips the primitive.
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
ColorErr1121034,36 → 124,941210total 0.4% · largest 0.4%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage34,36 → 124,940.4ΔRGB(-1,0,-1)antialiasing coverage residue on a shared outline
source · cases/filters/r2-filter-url-fecomposite-in.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 fecomposite-in</title>
6<style>
7  @page { size: 224px 144px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  svg.defs { position: absolute; width: 0; height: 0; overflow: hidden; }
12  .stage { width: 220px; height: 140px; padding: 36px 34px; background: #d9d9d9; }
13  .box { width: 90px; height: 58px; background: #d50000; filter: url(#r2f); }
14</style>
15</head>
16<body>
17  <svg class="defs" width="0" height="0" aria-hidden="true" focusable="false"><defs><filter id="r2f" x="-20%" y="-20%" width="140%" height="140%"><feFlood flood-color="#2e7d32" result="green"/><feComposite in="green" in2="SourceAlpha" operator="in"/></filter></defs></svg>
18  <div class="stage"><div class="box"></div></div>
19</body>
20</html>

filter: url(#id) with feDropShadow — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0.000317% · raw 0.48% (1514 px) r2-filter-url-fedropshadow · fedropshadowPASS via CSS-scale observation: coherent sub-authored colour frontierAntialiasCoverageΔE 0.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 antialiasing coverage residue on a shared outline
SVG feDropShadow primitive must render inside filter url(): An inline SVG filter referenced from CSS contains a non-feColorMatrix primitive or unsupported matrix form. Catches wrong implementation: CSS filter:url() resolver extracts only a narrow feColorMatrix subset and skips the primitive.
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
ColorErr3151434,36 → 176,941354total 0.5% · largest 0.5%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage34,36 → 176,940.5ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage35,36 → 85,360.05ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage86,36 → 86,360.000666ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
source · cases/filters/r2-filter-url-fedropshadow.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 fedropshadow</title>
6<style>
7  @page { size: 224px 144px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  svg.defs { position: absolute; width: 0; height: 0; overflow: hidden; }
12  .stage { width: 220px; height: 140px; padding: 36px 34px; background: #d9d9d9; }
13  .box { width: 90px; height: 58px; background: #d50000; filter: url(#r2f); }
14</style>
15</head>
16<body>
17  <svg class="defs" width="0" height="0" aria-hidden="true" focusable="false"><defs><filter id="r2f" x="-40%" y="-40%" width="200%" height="180%"><feDropShadow dx="52" dy="0" stdDeviation="0" flood-color="#111111" flood-opacity="1"/></filter></defs></svg>
18  <div class="stage"><div class="box"></div></div>
19</body>
20</html>

filter: url(#id) with feMerge — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0.52% · raw 0.71% (2233 px) r2-filter-url-femerge · femergePASS via CSS-scale observation: sub-CSS shared-colour coverageAntialiasCoverageΔE 16.5
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
SVG feMerge must paint multiple primitive outputs: An inline SVG filter referenced from CSS contains a non-feColorMatrix primitive or unsupported matrix form. Catches wrong implementation: CSS filter:url() resolver extracts only a narrow feColorMatrix subset and skips the primitive.
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
ColorErr1223334,36 → 169,942233total 0.7% · largest 0.7%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage34,36 → 169,940.7ΔRGB(1,74,74)antialiasing coverage residue on a shared outline
source · cases/filters/r2-filter-url-femerge.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 femerge</title>
6<style>
7  @page { size: 224px 144px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  svg.defs { position: absolute; width: 0; height: 0; overflow: hidden; }
12  .stage { width: 220px; height: 140px; padding: 36px 34px; background: #d9d9d9; }
13  .box { width: 90px; height: 58px; background: #d50000; filter: url(#r2f); }
14</style>
15</head>
16<body>
17  <svg class="defs" width="0" height="0" aria-hidden="true" focusable="false"><defs><filter id="r2f" x="-40%" y="-20%" width="190%" height="140%"><feOffset in="SourceGraphic" dx="62" dy="0" result="shift"/><feMerge><feMergeNode in="shift"/><feMergeNode in="SourceGraphic"/></feMerge></filter></defs></svg>
18  <div class="stage"><div class="box"></div></div>
19</body>
20</html>

filter: url(#id) with feMorphology — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0.78% · raw 0.78% (2456 px) r2-filter-url-femorphology-dilate · femorphology-dilatePASS via CSS-scale observation: sub-CSS shared-colour coverageAntialiasCoverageΔE 24.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
SVG feMorphology must dilate/erode the source alpha: An inline SVG filter referenced from CSS contains a non-feColorMatrix primitive or unsupported matrix form. Catches wrong implementation: CSS filter:url() resolver extracts only a narrow feColorMatrix subset and skips the primitive.
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
ColorErr1245621,23 → 136,1062456total 0.8% · largest 0.8%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage21,23 → 136,1060.8ΔRGB(3,99,99)antialiasing coverage residue on a shared outline
source · cases/filters/r2-filter-url-femorphology-dilate.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 femorphology-dilate</title>
6<style>
7  @page { size: 224px 144px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  svg.defs { position: absolute; width: 0; height: 0; overflow: hidden; }
12  .stage { width: 220px; height: 140px; padding: 36px 34px; background: #d9d9d9; }
13  .box { width: 90px; height: 58px; background: #d50000; filter: url(#r2f); }
14</style>
15</head>
16<body>
17  <svg class="defs" width="0" height="0" aria-hidden="true" focusable="false"><defs><filter id="r2f" x="-40%" y="-40%" width="180%" height="180%"><feMorphology operator="dilate" radius="12"/></filter></defs></svg>
18  <div class="stage"><div class="box"></div></div>
19</body>
20</html>

filter: url(#id) with feOffset — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0.27% · raw 0.45% (1417 px) r2-filter-url-feoffset · feoffsetPASS via CSS-scale observation: sub-CSS shared-colour coverageAntialiasCoverageΔE 12.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
SVG feOffset must move filtered output: An inline SVG filter referenced from CSS contains a non-feColorMatrix primitive or unsupported matrix form. Catches wrong implementation: CSS filter:url() resolver extracts only a narrow feColorMatrix subset and skips the primitive.
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
ColorErr1141790,36 → 160,941417total 0.5% · largest 0.5%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage90,36 → 160,940.5ΔRGB(1,19,19)antialiasing coverage residue on a shared outline
source · cases/filters/r2-filter-url-feoffset.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 feoffset</title>
6<style>
7  @page { size: 224px 144px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  svg.defs { position: absolute; width: 0; height: 0; overflow: hidden; }
12  .stage { width: 220px; height: 140px; padding: 36px 34px; background: #d9d9d9; }
13  .box { width: 90px; height: 58px; background: #d50000; filter: url(#r2f); }
14</style>
15</head>
16<body>
17  <svg class="defs" width="0" height="0" aria-hidden="true" focusable="false"><defs><filter id="r2f" x="-40%" y="-20%" width="180%" height="140%"><feOffset dx="56" dy="0"/></filter></defs></svg>
18  <div class="stage"><div class="box"></div></div>
19</body>
20</html>

filter: url(#missing) blur() — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0.08% · raw 0.08% (250 px) r2-filter-missing-url-invalidates-chain · missing-url-invalidates-list · oracle: weasyprintPASS via CSS-scale observation: sub-CSS shared-colour coverageAntialiasCoverageΔE 19.1
WeasyPrint ref
WeasyPrint 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
Unresolved filter url() must ignore the entire filter chain: A filter list starts with an unresolved url(#missing) followed by blur(7px); the whole chain is ignored. Catches wrong implementation: Implementation treats the missing url as a no-op and still applies the later blur.
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
ColorErr12500,0 → 0,80250total 0.3% · largest 0.3%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage0,0 → 0,800.3ΔRGB(-81,-53,-21)antialiasing coverage residue on a shared outline
source · cases/filters/r2-filter-missing-url-invalidates-chain.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 missing filter url invalidates chain</title>
6<style>
7  @page { size: 220px 150px; 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: 220px; height: 150px; padding: 35px; background: #ffffff; }
12  .box { width: 120px; height: 80px; background: #1565c0; filter: url(#missing-filter-r2) blur(7px); }
13</style>
14</head>
15<body>
16  <div class="stage"><div class="box"></div></div>
17</body>
18</html>

filter: url() — 100.00% verified visual parity PASS 2 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0% · raw 34.82% (274184 px) filter-url-svg · svg-fecolormatrixPASS via raw same-coordinate visibility policyColorValueΔE 0.4
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: fill recolour ΔRGB(-1,-1,-1) (ΔE 0.4)
filter: url(#id) referencing an inline SVG feColorMatrix saturate filter (aspirational).
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
ColorErr22741840,0 → 200,140273560total 99.8% · largest 99.5% · max ΔE 0.4

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
ColorValue0,0 → 200,14099.5ΔE 0.4 ΔRGB(-1,-1,-1)fill recolour ΔRGB(-1,-1,-1) (ΔE 0.4)
AntialiasCoverage0,140 → 200,1400.2ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
source · cases/filters/filter-url-svg.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>filter url(#svgFilter)</title>
6<style>
7  @page { size: 360px 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  .frame { padding: 40px; }
12  .box {
13    width: 200px;
14    height: 140px;
15    background-color: #2e7d32;
16    filter: url(#sat);
17  }
18</style>
19</head>
20<body>
21  <svg width="0" height="0" style="position:absolute" aria-hidden="true">
22    <filter id="sat">
23      <feColorMatrix type="saturate" values="0"/>
24    </filter>
25  </svg>
26  <div class="frame"><div class="box"></div></div>
27</body>
28</html>
PASS visually equivalent · no rejecting defect · thresholded evidence 0% · raw 0.55% (1725 px) filter-url-svg-gaussian-blur · svg-fegaussianblurPASS via raw same-coordinate visibility policyAntialiasCoverageΔE 0.3
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: antialiasing coverage residue on a shared outline
filter:url(#id) references an inline SVG feGaussianBlur primitive; catches URL-filter implementations limited to feColorMatrix or no-op filters.
regions (332 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
ColorErr33217253,5 → 139,86286total 1.4% · largest 0.2% · max ΔE 0.4

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage25,78 → 116,780.2ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage11,24 → 11,670.2ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage127,25 → 127,670.2ΔE 0.4 ΔRGB(-2,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage3,22 → 3,700.1ΔE 0.4 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage5,23 → 5,680.1ΔE 0.3 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage124,16 → 126,180.01ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage130,67 → 130,690.008613ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage130,23 → 130,250.007047ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage125,73 → 126,750.007047ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage23,14 → 23,150.005481ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage16,18 → 17,190.005481ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage119,14 → 119,150.004698ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage20,15 → 20,160.004698ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage12,21 → 12,220.004698ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage135,22 → 135,240.004698ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage135,68 → 135,690.004698ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage18,75 → 19,760.004698ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage139,19 → 139,200.003915ΔE 0.4 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage15,22 → 15,230.003915ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage15,68 → 15,690.003915ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage12,70 → 12,710.003915ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage139,71 → 139,720.003915ΔE 0.4 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage123,15 → 123,160.003132ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage124,15 → 124,160.003132ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage12,17 → 12,170.003132ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage13,17 → 14,170.003132ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage130,18 → 130,190.003132ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage137,20 → 137,200.003132ΔE 0.3 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage126,20 → 127,200.003132ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage127,21 → 127,220.003132ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage8,69 → 8,700.003132ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage127,69 → 127,700.003132ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage131,69 → 131,700.003132ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage126,71 → 127,710.003132ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage137,71 → 137,720.003132ΔE 0.3 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage16,72 → 16,730.003132ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage12,73 → 12,740.003132ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage17,74 → 17,750.003132ΔE 0.4 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage128,74 → 129,750.003132ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage13,75 → 13,750.003132ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage124,75 → 124,760.003132ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage19,76 → 19,760.003132ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage132,13 → 133,140.002349ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage21,15 → 21,150.002349ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage121,15 → 121,150.002349ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage139,17 → 139,170.002349ΔE 0.4 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage13,18 → 13,180.002349ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage3,18 → 3,190.002349ΔE 0.4 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage12,20 → 13,200.002349ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage9,20 → 9,210.002349ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage8,21 → 8,220.002349ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage131,22 → 131,220.002349ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage133,22 → 133,230.002349ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage13,23 → 13,230.002349ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage128,23 → 128,240.002349ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage129,67 → 129,680.002349ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage118,67 → 118,680.002349ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage128,68 → 128,680.002349ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage13,68 → 13,690.002349ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage117,68 → 118,680.002349ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage133,68 → 133,690.002349ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage7,71 → 7,710.002349ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage126,72 → 126,720.002349ΔE 0.2 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage3,73 → 3,740.002349ΔE 0.4 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
source · cases/filters/filter-url-svg-gaussian-blur.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>filter url svg gaussian blur</title>
6<style>
7  @page { size: 224px 144px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  svg.defs {
12    position: absolute;
13    width: 0;
14    height: 0;
15    overflow: hidden;
16  }
17  .stage {
18    width: 220px;
19    height: 140px;
20    padding: 30px;
21    background: #ffffff;
22  }
23  .box {
24    width: 120px;
25    height: 70px;
26    background: #d50000;
27    filter: url(#soften);
28  }
29</style>
30</head>
31<body>
32  <svg class="defs" width="0" height="0" aria-hidden="true" focusable="false">
33    <defs>
34      <filter id="soften" x="-30%" y="-40%" width="160%" height="180%">
35        <feGaussianBlur stdDeviation="6"/>
36      </filter>
37    </defs>
38  </svg>
39  <div class="stage"><div class="box"></div></div>
40</body>
41</html>