clip-mask — 100.00% verified visual parity

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

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

PASS exact match mask-webkit-alias · prefixed-alias
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
-webkit-mask-image (prefixed alias) fades a solid fill top-to-bottom; the alias must behave as mask-image. CSS mask is unsupported.

-webkit-mask-position — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS exact match r2-webkit-mask-position-offset · webkit-mask-position-offset
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
-webkit-mask-position alias must behave like mask-position: Only the prefixed mask-position/size/repeat properties are authored, matching common Chromium content. Catches wrong implementation: Implementation aliases -webkit-mask-image but ignores prefixed geometry longhands.

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

PASS exact match r2-clip-property-rect-absolute · deprecated-clip-rect
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
Deprecated clip:rect() still clips absolutely positioned elements: An absolutely positioned blue rectangle has clip:rect(15px, 120px, 75px, 35px). Catches wrong implementation: Renderer ignores the deprecated but required clip property.

clip-path has no effect on layout — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS exact match r2-clip-path-no-layout-shrink · no-layout-shrink
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
clip-path must not change layout geometry: A clipped first box keeps its original block size, so the following green bar starts below the unclipped 100px layout height. Catches wrong implementation: Layout engine shrinks the box to the clip bounds and moves the following bar upward.

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

PASS visually equivalent · no rejecting defect · thresholded evidence 0.02% · raw 0.02% (36 px) r2-clip-path-circle-default-closest-side · circle-default-closest-sidePASS 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
circle() default radius must resolve closest-side: A single colored box isolates the clip geometry without text or external assets. Catches wrong implementation: Parser or renderer only handles the simplest existing basic-shape subset.
regions (36 total; showing 36 representatives)

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

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
ColorErr36366,6 → 114,1141total 0.03% · largest 0.000709%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage33,6 → 33,60.000709ΔRGB(3,12,12)antialiasing coverage residue on a shared outline
AntialiasCoverage87,6 → 87,60.000709ΔRGB(3,12,12)antialiasing coverage residue on a shared outline
AntialiasCoverage31,7 → 31,70.000709ΔRGB(2,9,9)antialiasing coverage residue on a shared outline
AntialiasCoverage23,12 → 23,120.000709ΔRGB(1,5,5)antialiasing coverage residue on a shared outline
AntialiasCoverage97,12 → 97,120.000709ΔRGB(1,5,5)antialiasing coverage residue on a shared outline
AntialiasCoverage23,13 → 23,130.000709ΔRGB(2,9,9)antialiasing coverage residue on a shared outline
AntialiasCoverage98,13 → 98,130.000709ΔRGB(2,9,9)antialiasing coverage residue on a shared outline
AntialiasCoverage22,13 → 22,130.000709ΔRGB(2,12,12)antialiasing coverage residue on a shared outline
AntialiasCoverage98,13 → 98,130.000709ΔRGB(2,12,12)antialiasing coverage residue on a shared outline
AntialiasCoverage13,22 → 13,220.000709ΔRGB(2,12,12)antialiasing coverage residue on a shared outline
AntialiasCoverage107,22 → 107,220.000709ΔRGB(2,12,12)antialiasing coverage residue on a shared outline
AntialiasCoverage13,22 → 13,220.000709ΔRGB(2,9,9)antialiasing coverage residue on a shared outline
AntialiasCoverage107,22 → 107,220.000709ΔRGB(2,9,9)antialiasing coverage residue on a shared outline
AntialiasCoverage13,23 → 13,230.000709ΔRGB(1,5,5)antialiasing coverage residue on a shared outline
AntialiasCoverage108,23 → 108,230.000709ΔRGB(1,5,5)antialiasing coverage residue on a shared outline
AntialiasCoverage7,31 → 7,310.000709ΔRGB(2,9,9)antialiasing coverage residue on a shared outline
AntialiasCoverage6,33 → 6,330.000709ΔRGB(3,12,12)antialiasing coverage residue on a shared outline
AntialiasCoverage114,33 → 114,330.000709ΔRGB(3,12,12)antialiasing coverage residue on a shared outline
AntialiasCoverage6,87 → 6,870.000709ΔRGB(3,12,12)antialiasing coverage residue on a shared outline
AntialiasCoverage114,87 → 114,870.000709ΔRGB(3,12,12)antialiasing coverage residue on a shared outline
AntialiasCoverage7,89 → 7,890.000709ΔRGB(2,9,9)antialiasing coverage residue on a shared outline
AntialiasCoverage13,97 → 13,970.000709ΔRGB(1,5,5)antialiasing coverage residue on a shared outline
AntialiasCoverage108,97 → 108,970.000709ΔRGB(1,5,5)antialiasing coverage residue on a shared outline
AntialiasCoverage13,97 → 13,970.000709ΔRGB(2,9,9)antialiasing coverage residue on a shared outline
AntialiasCoverage107,97 → 107,970.000709ΔRGB(2,9,9)antialiasing coverage residue on a shared outline
AntialiasCoverage13,98 → 13,980.000709ΔRGB(2,12,12)antialiasing coverage residue on a shared outline
AntialiasCoverage107,98 → 107,980.000709ΔRGB(2,12,12)antialiasing coverage residue on a shared outline
AntialiasCoverage22,107 → 22,1070.000709ΔRGB(2,12,12)antialiasing coverage residue on a shared outline
AntialiasCoverage98,107 → 98,1070.000709ΔRGB(2,12,12)antialiasing coverage residue on a shared outline
AntialiasCoverage23,107 → 23,1070.000709ΔRGB(2,9,9)antialiasing coverage residue on a shared outline
AntialiasCoverage98,107 → 98,1070.000709ΔRGB(2,9,9)antialiasing coverage residue on a shared outline
AntialiasCoverage23,107 → 23,1070.000709ΔRGB(1,5,5)antialiasing coverage residue on a shared outline
AntialiasCoverage97,107 → 97,1070.000709ΔRGB(1,5,5)antialiasing coverage residue on a shared outline
AntialiasCoverage31,113 → 31,1130.000709ΔRGB(2,9,9)antialiasing coverage residue on a shared outline
AntialiasCoverage33,114 → 33,1140.000709ΔRGB(3,12,12)antialiasing coverage residue on a shared outline
AntialiasCoverage87,114 → 87,1140.000709ΔRGB(3,12,12)antialiasing coverage residue on a shared outline
source · cases/clip-mask/r2-clip-path-circle-default-closest-side.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 clip path circle default closest side</title>
6<style>
7  @page { size: 200px 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  .box { width: 200px; height: 120px; background: #d32f2f; clip-path: circle(); }
12</style>
13</head>
14<body>
15  <div class="box"></div>
16</body>
17</html>
PASS visually equivalent · no rejecting defect · thresholded evidence 0.01% · raw 0.01% (56 px) clip-path-circle · centeredPASS via CSS-scale observation: sub-CSS shared-colour coverageAntialiasCoverageΔE 4.0
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: visually accepted coverage phase; raw antialiasing coverage residue on a shared outline
clip-path: circle() clips a solid square to a centered circular disc. CSS clip-path on boxes is unsupported.
regions (56 total; showing 56 representatives)

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

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
ColorErr56561,1 → 159,1591total 0.02% · largest 0.000398%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage70,1 → 70,10.000398ΔRGB(4,18,18)antialiasing coverage residue on a shared outline
AntialiasCoverage90,1 → 90,10.000398ΔRGB(4,18,18)antialiasing coverage residue on a shared outline
AntialiasCoverage60,3 → 60,30.000398ΔRGB(5,19,19)antialiasing coverage residue on a shared outline
AntialiasCoverage100,3 → 100,30.000398ΔRGB(5,19,19)antialiasing coverage residue on a shared outline
AntialiasCoverage58,3 → 58,30.000398ΔRGB(3,9,9)antialiasing coverage residue on a shared outline
AntialiasCoverage102,3 → 102,30.000398ΔRGB(3,9,9)antialiasing coverage residue on a shared outline
AntialiasCoverage58,3 → 58,30.000398ΔRGB(4,16,16)antialiasing coverage residue on a shared outline
AntialiasCoverage102,3 → 102,30.000398ΔRGB(4,16,16)antialiasing coverage residue on a shared outline
AntialiasCoverage44,8 → 44,80.000398ΔRGB(5,17,17)antialiasing coverage residue on a shared outline
AntialiasCoverage116,8 → 116,80.000398ΔRGB(5,17,17)antialiasing coverage residue on a shared outline
AntialiasCoverage30,17 → 30,170.000398ΔRGB(2,8,8)antialiasing coverage residue on a shared outline
AntialiasCoverage130,17 → 130,170.000398ΔRGB(2,8,8)antialiasing coverage residue on a shared outline
AntialiasCoverage27,20 → 27,200.000398ΔRGB(4,15,15)antialiasing coverage residue on a shared outline
AntialiasCoverage133,20 → 133,200.000398ΔRGB(4,15,15)antialiasing coverage residue on a shared outline
AntialiasCoverage20,27 → 20,270.000398ΔRGB(4,15,15)antialiasing coverage residue on a shared outline
AntialiasCoverage140,27 → 140,270.000398ΔRGB(4,15,15)antialiasing coverage residue on a shared outline
AntialiasCoverage17,30 → 17,300.000398ΔRGB(2,8,8)antialiasing coverage residue on a shared outline
AntialiasCoverage143,30 → 143,300.000398ΔRGB(2,8,8)antialiasing coverage residue on a shared outline
AntialiasCoverage8,44 → 8,440.000398ΔRGB(5,17,17)antialiasing coverage residue on a shared outline
AntialiasCoverage152,44 → 152,440.000398ΔRGB(5,17,17)antialiasing coverage residue on a shared outline
AntialiasCoverage3,58 → 3,580.000398ΔRGB(4,16,16)antialiasing coverage residue on a shared outline
AntialiasCoverage157,58 → 157,580.000398ΔRGB(4,16,16)antialiasing coverage residue on a shared outline
AntialiasCoverage3,58 → 3,580.000398ΔRGB(3,9,9)antialiasing coverage residue on a shared outline
AntialiasCoverage157,58 → 157,580.000398ΔRGB(3,9,9)antialiasing coverage residue on a shared outline
AntialiasCoverage3,60 → 3,600.000398ΔRGB(5,19,19)antialiasing coverage residue on a shared outline
AntialiasCoverage157,60 → 157,600.000398ΔRGB(5,19,19)antialiasing coverage residue on a shared outline
AntialiasCoverage1,70 → 1,700.000398ΔRGB(4,18,18)antialiasing coverage residue on a shared outline
AntialiasCoverage159,70 → 159,700.000398ΔRGB(4,18,18)antialiasing coverage residue on a shared outline
AntialiasCoverage1,90 → 1,900.000398ΔRGB(4,18,18)antialiasing coverage residue on a shared outline
AntialiasCoverage159,90 → 159,900.000398ΔRGB(4,18,18)antialiasing coverage residue on a shared outline
AntialiasCoverage3,100 → 3,1000.000398ΔRGB(5,19,19)antialiasing coverage residue on a shared outline
AntialiasCoverage157,100 → 157,1000.000398ΔRGB(5,19,19)antialiasing coverage residue on a shared outline
AntialiasCoverage3,102 → 3,1020.000398ΔRGB(3,9,9)antialiasing coverage residue on a shared outline
AntialiasCoverage157,102 → 157,1020.000398ΔRGB(3,9,9)antialiasing coverage residue on a shared outline
AntialiasCoverage3,102 → 3,1020.000398ΔRGB(4,16,16)antialiasing coverage residue on a shared outline
AntialiasCoverage157,102 → 157,1020.000398ΔRGB(4,16,16)antialiasing coverage residue on a shared outline
AntialiasCoverage8,116 → 8,1160.000398ΔRGB(5,17,17)antialiasing coverage residue on a shared outline
AntialiasCoverage152,116 → 152,1160.000398ΔRGB(5,17,17)antialiasing coverage residue on a shared outline
AntialiasCoverage17,130 → 17,1300.000398ΔRGB(2,8,8)antialiasing coverage residue on a shared outline
AntialiasCoverage143,130 → 143,1300.000398ΔRGB(2,8,8)antialiasing coverage residue on a shared outline
AntialiasCoverage20,133 → 20,1330.000398ΔRGB(4,15,15)antialiasing coverage residue on a shared outline
AntialiasCoverage140,133 → 140,1330.000398ΔRGB(4,15,15)antialiasing coverage residue on a shared outline
AntialiasCoverage27,140 → 27,1400.000398ΔRGB(4,15,15)antialiasing coverage residue on a shared outline
AntialiasCoverage133,140 → 133,1400.000398ΔRGB(4,15,15)antialiasing coverage residue on a shared outline
AntialiasCoverage30,143 → 30,1430.000398ΔRGB(2,8,8)antialiasing coverage residue on a shared outline
AntialiasCoverage130,143 → 130,1430.000398ΔRGB(2,8,8)antialiasing coverage residue on a shared outline
AntialiasCoverage44,152 → 44,1520.000398ΔRGB(5,17,17)antialiasing coverage residue on a shared outline
AntialiasCoverage116,152 → 116,1520.000398ΔRGB(5,17,17)antialiasing coverage residue on a shared outline
AntialiasCoverage58,157 → 58,1570.000398ΔRGB(4,16,16)antialiasing coverage residue on a shared outline
AntialiasCoverage102,157 → 102,1570.000398ΔRGB(4,16,16)antialiasing coverage residue on a shared outline
AntialiasCoverage58,157 → 58,1570.000398ΔRGB(3,9,9)antialiasing coverage residue on a shared outline
AntialiasCoverage102,157 → 102,1570.000398ΔRGB(3,9,9)antialiasing coverage residue on a shared outline
AntialiasCoverage60,157 → 60,1570.000398ΔRGB(5,19,19)antialiasing coverage residue on a shared outline
AntialiasCoverage100,157 → 100,1570.000398ΔRGB(5,19,19)antialiasing coverage residue on a shared outline
AntialiasCoverage70,159 → 70,1590.000398ΔRGB(4,18,18)antialiasing coverage residue on a shared outline
AntialiasCoverage90,159 → 90,1590.000398ΔRGB(4,18,18)antialiasing coverage residue on a shared outline
source · cases/clip-mask/clip-path-circle.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>clip-path circle</title>
6<style>
7  @page { size: 280px 200px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  .box {
12    width: 200px;
13    height: 200px;
14    background-color: #c62828;
15    /* Clip the square down to a centered circle. */
16    clip-path: circle(80px at 100px 100px);
17  }
18</style>
19</head>
20<body>
21  <div class="box"></div>
22</body>
23</html>

clip-path: circle() with left/top position keywords — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0.003556% · raw 0.003556% (10 px) r2-clip-path-circle-position-keywords · circle-position-keywordsPASS via CSS-scale observation: sub-CSS shared-colour coverageAntialiasCoverageΔE 4.0
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: visually accepted coverage phase; raw antialiasing coverage residue on a shared outline
circle() position keywords must resolve: A single colored box isolates the clip geometry without text or external assets. Catches wrong implementation: Parser or renderer only handles the simplest existing basic-shape subset.
regions (10 total; showing 10 representatives)

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

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
ColorErr101011,1 → 85,901total 0.01% · largest 0.001178%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage23,1 → 23,10.001178ΔRGB(3,13,13)antialiasing coverage residue on a shared outline
AntialiasCoverage73,1 → 73,10.001178ΔRGB(2,10,10)antialiasing coverage residue on a shared outline
AntialiasCoverage11,72 → 11,720.001178ΔRGB(2,9,9)antialiasing coverage residue on a shared outline
AntialiasCoverage85,72 → 85,720.001178ΔRGB(3,18,18)antialiasing coverage residue on a shared outline
AntialiasCoverage23,83 → 23,830.001178ΔRGB(3,18,18)antialiasing coverage residue on a shared outline
AntialiasCoverage73,83 → 73,830.001178ΔRGB(4,17,17)antialiasing coverage residue on a shared outline
AntialiasCoverage26,84 → 26,840.001178ΔRGB(3,18,18)antialiasing coverage residue on a shared outline
AntialiasCoverage70,84 → 70,840.001178ΔRGB(4,17,17)antialiasing coverage residue on a shared outline
AntialiasCoverage44,90 → 44,900.001178ΔRGB(4,18,18)antialiasing coverage residue on a shared outline
AntialiasCoverage52,90 → 52,900.001178ΔRGB(4,17,17)antialiasing coverage residue on a shared outline
source · cases/clip-mask/r2-clip-path-circle-position-keywords.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 clip path circle position keywords</title>
6<style>
7  @page { size: 200px 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  .box { width: 200px; height: 140px; background: #d32f2f; clip-path: circle(48px at left 55px top 42px); }
12</style>
13</head>
14<body>
15  <div class="box"></div>
16</body>
17</html>

clip-path: circle(farthest-side at ...) — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS exact match r2-clip-path-circle-farthest-side · circle-farthest-side
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
circle() keyword radii must parse: A single colored box isolates the clip geometry without text or external assets. Catches wrong implementation: Parser or renderer only handles the simplest existing basic-shape subset.

clip-path: content-box — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS exact match r2-clip-path-content-box-geometry · content-box-geometry
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
standalone clip-path geometry boxes must clip to that box: A single colored box isolates the clip geometry without text or external assets. Catches wrong implementation: Parser or renderer only handles the simplest existing basic-shape subset.

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

PASS visually equivalent · no rejecting defect · thresholded evidence 0.006400% · raw 0.006400% (32 px) clip-path-ellipse · distinct-radiiPASS via CSS-scale observation: sub-CSS shared-colour coverageAntialiasCoverageΔE 2.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
clip-path: ellipse() clips a solid rectangle to a centered ellipse with distinct x/y radii. CSS clip-path on boxes is unsupported.
regions (32 total; showing 32 representatives)

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

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
ColorErr32321,0 → 199,1201total 0.01% · largest 0.000425%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage88,0 → 88,00.000425ΔRGB(13,6,5)antialiasing coverage residue on a shared outline
AntialiasCoverage112,0 → 112,00.000425ΔRGB(13,6,5)antialiasing coverage residue on a shared outline
AntialiasCoverage72,2 → 72,20.000425ΔRGB(10,5,5)antialiasing coverage residue on a shared outline
AntialiasCoverage128,2 → 128,20.000425ΔRGB(10,5,5)antialiasing coverage residue on a shared outline
AntialiasCoverage54,7 → 54,70.000425ΔRGB(15,7,7)antialiasing coverage residue on a shared outline
AntialiasCoverage146,7 → 146,70.000425ΔRGB(15,7,7)antialiasing coverage residue on a shared outline
AntialiasCoverage41,12 → 41,120.000425ΔRGB(7,4,3)antialiasing coverage residue on a shared outline
AntialiasCoverage159,12 → 159,120.000425ΔRGB(7,4,3)antialiasing coverage residue on a shared outline
AntialiasCoverage16,28 → 16,280.000425ΔRGB(10,5,5)antialiasing coverage residue on a shared outline
AntialiasCoverage184,28 → 184,280.000425ΔRGB(10,5,5)antialiasing coverage residue on a shared outline
AntialiasCoverage12,32 → 12,320.000425ΔRGB(21,10,9)antialiasing coverage residue on a shared outline
AntialiasCoverage188,32 → 188,320.000425ΔRGB(21,10,9)antialiasing coverage residue on a shared outline
AntialiasCoverage8,36 → 8,360.000425ΔRGB(22,11,10)antialiasing coverage residue on a shared outline
AntialiasCoverage192,36 → 192,360.000425ΔRGB(22,11,10)antialiasing coverage residue on a shared outline
AntialiasCoverage1,50 → 1,500.000425ΔRGB(16,8,7)antialiasing coverage residue on a shared outline
AntialiasCoverage199,50 → 199,500.000425ΔRGB(16,8,7)antialiasing coverage residue on a shared outline
AntialiasCoverage1,70 → 1,700.000425ΔRGB(16,8,7)antialiasing coverage residue on a shared outline
AntialiasCoverage199,70 → 199,700.000425ΔRGB(16,8,7)antialiasing coverage residue on a shared outline
AntialiasCoverage8,84 → 8,840.000425ΔRGB(22,11,10)antialiasing coverage residue on a shared outline
AntialiasCoverage192,84 → 192,840.000425ΔRGB(22,11,10)antialiasing coverage residue on a shared outline
AntialiasCoverage12,88 → 12,880.000425ΔRGB(21,10,9)antialiasing coverage residue on a shared outline
AntialiasCoverage188,88 → 188,880.000425ΔRGB(21,10,9)antialiasing coverage residue on a shared outline
AntialiasCoverage16,92 → 16,920.000425ΔRGB(10,5,5)antialiasing coverage residue on a shared outline
AntialiasCoverage184,92 → 184,920.000425ΔRGB(10,5,5)antialiasing coverage residue on a shared outline
AntialiasCoverage41,108 → 41,1080.000425ΔRGB(7,4,3)antialiasing coverage residue on a shared outline
AntialiasCoverage159,108 → 159,1080.000425ΔRGB(7,4,3)antialiasing coverage residue on a shared outline
AntialiasCoverage54,113 → 54,1130.000425ΔRGB(15,7,7)antialiasing coverage residue on a shared outline
AntialiasCoverage146,113 → 146,1130.000425ΔRGB(15,7,7)antialiasing coverage residue on a shared outline
AntialiasCoverage72,118 → 72,1180.000425ΔRGB(10,5,5)antialiasing coverage residue on a shared outline
AntialiasCoverage128,118 → 128,1180.000425ΔRGB(10,5,5)antialiasing coverage residue on a shared outline
AntialiasCoverage88,120 → 88,1200.000425ΔRGB(13,6,5)antialiasing coverage residue on a shared outline
AntialiasCoverage112,120 → 112,1200.000425ΔRGB(13,6,5)antialiasing coverage residue on a shared outline
source · cases/clip-mask/clip-path-ellipse.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>clip-path ellipse</title>
6<style>
7  @page { size: 320px 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  .box {
12    width: 240px;
13    height: 160px;
14    background-color: #00838f;
15    /* Clip the rectangle to a centered ellipse with distinct x/y radii. */
16    clip-path: ellipse(100px 60px at 120px 80px);
17  }
18</style>
19</head>
20<body>
21  <div class="box"></div>
22</body>
23</html>
PASS exact match r2-clip-path-ellipse-default-radii · ellipse-default-radii
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
ellipse() default radii must resolve: A single colored box isolates the clip geometry without text or external assets. Catches wrong implementation: Parser or renderer only handles the simplest existing basic-shape subset.

clip-path: ellipse() with right/bottom position keywords — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0.002540% · raw 0.002540% (8 px) r2-clip-path-ellipse-position-keywords · ellipse-position-keywordsPASS via CSS-scale observation: sub-CSS shared-colour coverageAntialiasCoverageΔE 3.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
ellipse() position keywords must resolve: A single colored box isolates the clip geometry without text or external assets. Catches wrong implementation: Parser or renderer only handles the simplest existing basic-shape subset.
regions (8 total; showing 8 representatives)

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

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
ColorErr880,3 → 106,791total 0.008399% · largest 0.001050%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage45,3 → 45,30.001050ΔRGB(11,5,5)antialiasing coverage residue on a shared outline
AntialiasCoverage99,3 → 99,30.001050ΔRGB(7,4,3)antialiasing coverage residue on a shared outline
AntialiasCoverage38,5 → 38,50.001050ΔRGB(13,6,5)antialiasing coverage residue on a shared outline
AntialiasCoverage106,5 → 106,50.001050ΔRGB(15,7,7)antialiasing coverage residue on a shared outline
AntialiasCoverage0,37 → 0,370.001050ΔRGB(18,9,8)antialiasing coverage residue on a shared outline
AntialiasCoverage0,46 → 0,460.001050ΔRGB(19,9,8)antialiasing coverage residue on a shared outline
AntialiasCoverage38,79 → 38,790.001050ΔRGB(21,10,10)antialiasing coverage residue on a shared outline
AntialiasCoverage106,79 → 106,790.001050ΔRGB(22,11,10)antialiasing coverage residue on a shared outline
source · cases/clip-mask/r2-clip-path-ellipse-position-keywords.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 clip path ellipse position keywords</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  .box { width: 220px; height: 140px; background: #00838f; clip-path: ellipse(72px 42px at right 50px bottom 38px); }
12</style>
13</head>
14<body>
15  <div class="box"></div>
16</body>
17</html>

clip-path: ellipse(closest-side farthest-side at ...) — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0.005079% · raw 0.005079% (16 px) r2-clip-path-ellipse-extent-keywords · ellipse-extent-keywordsPASS via CSS-scale observation: sub-CSS shared-colour coverageAntialiasCoverageΔE 2.9
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: visually accepted coverage phase; raw antialiasing coverage residue on a shared outline
ellipse() extent keywords must parse: A single colored box isolates the clip geometry without text or external assets. Catches wrong implementation: Parser or renderer only handles the simplest existing basic-shape subset.
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
ColorErr16160,20 → 127,1351total 0.009153% · largest 0.000572%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage2,20 → 2,200.000572ΔRGB(10,5,5)antialiasing coverage residue on a shared outline
AntialiasCoverage125,20 → 125,200.000572ΔRGB(10,5,5)antialiasing coverage residue on a shared outline
AntialiasCoverage0,33 → 0,330.000572ΔRGB(13,6,5)antialiasing coverage residue on a shared outline
AntialiasCoverage127,33 → 127,330.000572ΔRGB(13,6,5)antialiasing coverage residue on a shared outline
AntialiasCoverage0,58 → 0,580.000572ΔRGB(15,7,7)antialiasing coverage residue on a shared outline
AntialiasCoverage127,58 → 127,580.000572ΔRGB(15,7,7)antialiasing coverage residue on a shared outline
AntialiasCoverage2,72 → 2,720.000572ΔRGB(4,2,2)antialiasing coverage residue on a shared outline
AntialiasCoverage125,72 → 125,720.000572ΔRGB(4,2,2)antialiasing coverage residue on a shared outline
AntialiasCoverage10,96 → 10,960.000572ΔRGB(14,7,6)antialiasing coverage residue on a shared outline
AntialiasCoverage118,96 → 118,960.000572ΔRGB(14,7,6)antialiasing coverage residue on a shared outline
AntialiasCoverage22,116 → 22,1160.000572ΔRGB(24,11,10)antialiasing coverage residue on a shared outline
AntialiasCoverage106,116 → 106,1160.000572ΔRGB(24,11,10)antialiasing coverage residue on a shared outline
AntialiasCoverage24,120 → 24,1200.000572ΔRGB(22,11,10)antialiasing coverage residue on a shared outline
AntialiasCoverage103,120 → 103,1200.000572ΔRGB(22,11,10)antialiasing coverage residue on a shared outline
AntialiasCoverage44,135 → 44,1350.000572ΔRGB(15,7,7)antialiasing coverage residue on a shared outline
AntialiasCoverage84,135 → 84,1350.000572ΔRGB(15,7,7)antialiasing coverage residue on a shared outline
source · cases/clip-mask/r2-clip-path-ellipse-extent-keywords.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 clip path ellipse extent keywords</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  .box { width: 220px; height: 140px; background: #00838f; clip-path: ellipse(closest-side farthest-side at 64px 46px); }
12</style>
13</head>
14<body>
15  <div class="box"></div>
16</body>
17</html>

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

PASS visually equivalent · no rejecting defect · thresholded evidence 0.001600% · raw 0.001600% (8 px) clip-path-inset-round · roundedPASS via CSS-scale observation: sub-CSS shared-colour coverageAntialiasCoverageΔE 4.6
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: visually accepted coverage phase; raw antialiasing coverage residue on a shared outline
clip-path: inset() with a round radius clips a solid box to a rounded-corner rectangle. CSS clip-path on boxes is unsupported.
regions (8 total; showing 8 representatives)

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

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
ColorErr880,0 → 200,1201total 0.003399% · largest 0.000425%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage35,0 → 35,00.000425ΔRGB(10,16,7)antialiasing coverage residue on a shared outline
AntialiasCoverage165,0 → 165,00.000425ΔRGB(10,16,7)antialiasing coverage residue on a shared outline
AntialiasCoverage0,35 → 0,350.000425ΔRGB(10,16,7)antialiasing coverage residue on a shared outline
AntialiasCoverage200,35 → 200,350.000425ΔRGB(10,16,7)antialiasing coverage residue on a shared outline
AntialiasCoverage0,85 → 0,850.000425ΔRGB(10,16,7)antialiasing coverage residue on a shared outline
AntialiasCoverage200,85 → 200,850.000425ΔRGB(10,16,7)antialiasing coverage residue on a shared outline
AntialiasCoverage35,120 → 35,1200.000425ΔRGB(10,16,7)antialiasing coverage residue on a shared outline
AntialiasCoverage165,120 → 165,1200.000425ΔRGB(10,16,7)antialiasing coverage residue on a shared outline
source · cases/clip-mask/clip-path-inset-round.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>clip-path inset rounded</title>
6<style>
7  @page { size: 320px 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  .box {
12    width: 240px;
13    height: 160px;
14    background-color: #6a1b9a;
15    /* Inset clip with a rounded-corner radius. */
16    clip-path: inset(20px round 40px);
17  }
18</style>
19</head>
20<body>
21  <div class="box"></div>
22</body>
23</html>
PASS exact match clip-path-inset · rectangular
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
clip-path: inset() clips a solid box down to an inner rectangle. CSS clip-path on boxes is unsupported (only inside SVG defs).
PASS exact match clip-path-inset-content-box · content-box-geometry
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
clip-path: inset(0) content-box clips a bordered, padded box to its content-box reference; catches geometry-box keywords ignored as bare border-box inset().

clip-path: inset() round elliptical radii — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0.005227% · raw 0.005227% (18 px) r2-clip-path-inset-round-elliptical-radii · inset-round-elliptical-radiiPASS via CSS-scale observation: sub-CSS shared-colour coverageAntialiasCoverageΔ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
clip-path inset round must support elliptical and per-corner radii: A single colored box isolates the clip geometry without text or external assets. Catches wrong implementation: Parser or renderer only handles the simplest existing basic-shape subset.
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
ColorErr16180,0 → 23,1063total 0.01% · largest 0.001741%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage5,4 → 5,40.001741ΔRGB(10,16,7)antialiasing coverage residue on a shared outline
AntialiasCoverage23,0 → 23,00.000580ΔRGB(6,10,4)antialiasing coverage residue on a shared outline
AntialiasCoverage22,0 → 22,00.000580ΔRGB(13,19,8)antialiasing coverage residue on a shared outline
AntialiasCoverage13,1 → 13,10.000580ΔRGB(6,9,4)antialiasing coverage residue on a shared outline
AntialiasCoverage11,2 → 11,20.000580ΔRGB(9,14,6)antialiasing coverage residue on a shared outline
AntialiasCoverage5,4 → 5,40.000580ΔRGB(4,6,3)antialiasing coverage residue on a shared outline
AntialiasCoverage0,84 → 0,840.000580ΔRGB(9,14,6)antialiasing coverage residue on a shared outline
AntialiasCoverage0,86 → 0,860.000580ΔRGB(12,19,8)antialiasing coverage residue on a shared outline
AntialiasCoverage1,88 → 1,880.000580ΔRGB(14,21,9)antialiasing coverage residue on a shared outline
AntialiasCoverage2,95 → 2,950.000580ΔRGB(6,10,4)antialiasing coverage residue on a shared outline
AntialiasCoverage3,96 → 3,960.000580ΔRGB(4,6,3)antialiasing coverage residue on a shared outline
AntialiasCoverage5,101 → 5,1010.000580ΔRGB(9,14,6)antialiasing coverage residue on a shared outline
AntialiasCoverage6,101 → 6,1010.000580ΔRGB(12,19,8)antialiasing coverage residue on a shared outline
AntialiasCoverage11,105 → 11,1050.000580ΔRGB(12,20,9)antialiasing coverage residue on a shared outline
AntialiasCoverage12,106 → 12,1060.000580ΔRGB(12,20,9)antialiasing coverage residue on a shared outline
AntialiasCoverage13,106 → 13,1060.000580ΔRGB(12,19,8)antialiasing coverage residue on a shared outline
source · cases/clip-mask/r2-clip-path-inset-round-elliptical-radii.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 clip path inset round elliptical radii</title>
6<style>
7  @page { size: 232px 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  .box { width: 230px; height: 150px; background: #6a1b9a; clip-path: inset(12px 22px 32px 42px round 28px 8px 36px 14px / 10px 30px 16px 26px); }
12</style>
13</head>
14<body>
15  <div class="box"></div>
16</body>
17</html>

clip-path: inset(<percentage>{4}) — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS exact match r2-clip-path-inset-percent-four-values · inset-percent-four-values
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
clip-path inset percentages with four-value shorthand need coverage: A single colored box isolates the clip geometry without text or external assets. Catches wrong implementation: Parser or renderer only handles the simplest existing basic-shape subset.

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

PASS visually equivalent · no rejecting defect · thresholded evidence 0.000356% · raw 0.000356% (1 px) r2-clip-path-path-triangle · path-trianglePASS via CSS-scale observation: sub-CSS shared-outline coverageExtraextra 0.001179%
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.001179%)
clip-path path() basic shape must render: A single colored box isolates the clip geometry without text or external assets. Catches wrong implementation: Parser or renderer only handles the simplest existing basic-shape subset.
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
Extra11160,108 → 160,1081total 0.000591% · largest 0.000591%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
Extra160,108 → 160,1080.000591candidate adds paint absent from reference (0.000591%)
source · cases/clip-mask/r2-clip-path-path-triangle.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 clip path path triangle</title>
6<style>
7  @page { size: 200px 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  .box { width: 200px; height: 140px; background: #ef6c00; clip-path: path("M 20 120 L 100 12 L 180 120 Z"); }
12</style>
13</head>
14<body>
15  <div class="box"></div>
16</body>
17</html>

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

PASS exact match clip-path-polygon · diamond
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
clip-path: polygon() clips a solid square into a diamond via four percentage vertices. CSS clip-path on boxes is unsupported.
PASS exact match clip-path-polygon-evenodd · evenodd-fill-rule
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
clip-path: polygon(evenodd, ...) cuts an inner rectangular hole; catches polygon clipping that ignores the fill-rule or always uses nonzero fill.

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

PASS visually equivalent · no rejecting defect · thresholded evidence 0.009524% · raw 0.009524% (30 px) r2-clip-path-rect-rounded · rect-roundedPASS via CSS-scale observation: sub-CSS shared-colour coverageAntialiasCoverageΔ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
clip-path rect() basic shape must render: A single colored box isolates the clip geometry without text or external assets. Catches wrong implementation: Parser or renderer only handles the simplest existing basic-shape subset.
regions (27 total; showing 27 representatives)

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

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
ColorErr27300,0 → 145,882total 0.02% · largest 0.001596%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage8,3 → 8,30.001596ΔRGB(15,9,15)antialiasing coverage residue on a shared outline
AntialiasCoverage8,85 → 8,850.001596ΔRGB(15,10,14)antialiasing coverage residue on a shared outline
AntialiasCoverage9,86 → 9,860.001596ΔRGB(18,11,17)antialiasing coverage residue on a shared outline
AntialiasCoverage16,0 → 16,00.000798ΔRGB(8,5,8)antialiasing coverage residue on a shared outline
AntialiasCoverage130,0 → 130,00.000798ΔRGB(15,10,14)antialiasing coverage residue on a shared outline
AntialiasCoverage132,1 → 132,10.000798ΔRGB(15,9,15)antialiasing coverage residue on a shared outline
AntialiasCoverage9,2 → 9,20.000798ΔRGB(13,8,13)antialiasing coverage residue on a shared outline
AntialiasCoverage9,3 → 9,30.000798ΔRGB(18,11,18)antialiasing coverage residue on a shared outline
AntialiasCoverage8,3 → 8,30.000798ΔRGB(12,8,11)antialiasing coverage residue on a shared outline
AntialiasCoverage4,7 → 4,70.000798ΔRGB(9,6,9)antialiasing coverage residue on a shared outline
AntialiasCoverage3,8 → 3,80.000798ΔRGB(17,11,17)antialiasing coverage residue on a shared outline
AntialiasCoverage3,9 → 3,90.000798ΔRGB(12,7,12)antialiasing coverage residue on a shared outline
AntialiasCoverage2,9 → 2,90.000798ΔRGB(15,9,15)antialiasing coverage residue on a shared outline
AntialiasCoverage144,12 → 144,120.000798ΔRGB(18,11,18)antialiasing coverage residue on a shared outline
AntialiasCoverage145,15 → 145,150.000798ΔRGB(19,12,19)antialiasing coverage residue on a shared outline
AntialiasCoverage0,16 → 0,160.000798ΔRGB(12,8,11)antialiasing coverage residue on a shared outline
AntialiasCoverage0,72 → 0,720.000798ΔRGB(13,8,13)antialiasing coverage residue on a shared outline
AntialiasCoverage145,73 → 145,730.000798ΔRGB(18,11,18)antialiasing coverage residue on a shared outline
AntialiasCoverage144,76 → 144,760.000798ΔRGB(19,12,19)antialiasing coverage residue on a shared outline
AntialiasCoverage2,79 → 2,790.000798ΔRGB(10,6,11)antialiasing coverage residue on a shared outline
AntialiasCoverage3,79 → 3,790.000798ΔRGB(18,11,17)antialiasing coverage residue on a shared outline
AntialiasCoverage3,80 → 3,800.000798ΔRGB(19,12,19)antialiasing coverage residue on a shared outline
AntialiasCoverage4,82 → 4,820.000798ΔRGB(4,3,4)antialiasing coverage residue on a shared outline
AntialiasCoverage8,85 → 8,850.000798ΔRGB(8,5,8)antialiasing coverage residue on a shared outline
AntialiasCoverage132,87 → 132,870.000798ΔRGB(8,5,8)antialiasing coverage residue on a shared outline
AntialiasCoverage16,88 → 16,880.000798ΔRGB(15,9,15)antialiasing coverage residue on a shared outline
AntialiasCoverage130,88 → 130,880.000798ΔRGB(4,3,4)antialiasing coverage residue on a shared outline
source · cases/clip-mask/r2-clip-path-rect-rounded.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 clip path rect rounded</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  .box { width: 220px; height: 140px; background: #2e7d32; clip-path: rect(22px 180px 110px 35px round 18px); }
12</style>
13</head>
14<body>
15  <div class="box"></div>
16</body>
17</html>

clip-path: url(#clip) — 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.20% (576 px) r2-clip-path-url-inline-svg-circle · url-inline-svg-circlePASS via CSS-scale observation: sub-CSS shared-colour coverageAntialiasCoverageΔE 3.9
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: visually accepted coverage phase; raw antialiasing coverage residue on a shared outline
clip-path url(#clipPath) must reference inline SVG clip sources: A CSS box references an inline SVG clipPath containing a circle. Catches wrong implementation: Parser handles only CSS basic shapes and ignores url(#clip).
regions (342 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
ColorErr3425761,0 → 167,11710total 0.3% · largest 0.005176%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage4,77 → 5,790.005176ΔRGB(-3,-18,-18)antialiasing coverage residue on a shared outline
AntialiasCoverage163,77 → 164,790.005176ΔRGB(-3,-18,-18)antialiasing coverage residue on a shared outline
AntialiasCoverage53,4 → 55,40.004141ΔRGB(-3,-13,-13)antialiasing coverage residue on a shared outline
AntialiasCoverage113,4 → 115,40.004141ΔRGB(-3,-13,-13)antialiasing coverage residue on a shared outline
AntialiasCoverage3,41 → 4,420.003106ΔRGB(-3,-14,-14)antialiasing coverage residue on a shared outline
AntialiasCoverage164,41 → 164,420.003106ΔRGB(-3,-14,-14)antialiasing coverage residue on a shared outline
AntialiasCoverage58,3 → 59,30.002070ΔRGB(-3,-13,-13)antialiasing coverage residue on a shared outline
AntialiasCoverage109,3 → 110,30.002070ΔRGB(-3,-13,-13)antialiasing coverage residue on a shared outline
AntialiasCoverage55,3 → 56,30.002070ΔRGB(-2,-10,-10)antialiasing coverage residue on a shared outline
AntialiasCoverage112,3 → 113,30.002070ΔRGB(-2,-10,-10)antialiasing coverage residue on a shared outline
AntialiasCoverage52,4 → 52,40.002070ΔRGB(-3,-12,-12)antialiasing coverage residue on a shared outline
AntialiasCoverage115,4 → 116,40.002070ΔRGB(-3,-12,-12)antialiasing coverage residue on a shared outline
AntialiasCoverage6,35 → 7,360.002070ΔRGB(-3,-13,-13)antialiasing coverage residue on a shared outline
AntialiasCoverage161,35 → 161,360.002070ΔRGB(-3,-13,-13)antialiasing coverage residue on a shared outline
AntialiasCoverage2,72 → 2,720.002070ΔRGB(-3,-12,-12)antialiasing coverage residue on a shared outline
AntialiasCoverage165,72 → 166,720.002070ΔRGB(-3,-12,-12)antialiasing coverage residue on a shared outline
AntialiasCoverage7,83 → 7,830.002070ΔRGB(-2,-9,-9)antialiasing coverage residue on a shared outline
AntialiasCoverage160,83 → 161,830.002070ΔRGB(-2,-9,-9)antialiasing coverage residue on a shared outline
AntialiasCoverage52,113 → 53,1130.002070ΔRGB(-2,-12,-12)antialiasing coverage residue on a shared outline
AntialiasCoverage115,113 → 116,1130.002070ΔRGB(-2,-12,-12)antialiasing coverage residue on a shared outline
AntialiasCoverage54,114 → 55,1140.002070ΔRGB(-2,-10,-10)antialiasing coverage residue on a shared outline
AntialiasCoverage112,114 → 113,1140.002070ΔRGB(-2,-10,-10)antialiasing coverage residue on a shared outline
AntialiasCoverage56,114 → 57,1140.002070ΔRGB(-2,-10,-10)antialiasing coverage residue on a shared outline
AntialiasCoverage111,114 → 112,1140.002070ΔRGB(-2,-10,-10)antialiasing coverage residue on a shared outline
AntialiasCoverage59,115 → 60,1150.002070ΔRGB(-2,-12,-12)antialiasing coverage residue on a shared outline
AntialiasCoverage108,115 → 109,1150.002070ΔRGB(-2,-12,-12)antialiasing coverage residue on a shared outline
AntialiasCoverage63,2 → 64,20.001553ΔRGB(-3,-14,-14)antialiasing coverage residue on a shared outline
AntialiasCoverage104,2 → 105,20.001553ΔRGB(-3,-14,-14)antialiasing coverage residue on a shared outline
AntialiasCoverage56,3 → 57,30.001553ΔRGB(-2,-10,-10)antialiasing coverage residue on a shared outline
AntialiasCoverage111,3 → 111,30.001553ΔRGB(-2,-10,-10)antialiasing coverage residue on a shared outline
AntialiasCoverage49,5 → 49,50.001553ΔRGB(-3,-14,-14)antialiasing coverage residue on a shared outline
AntialiasCoverage118,5 → 119,50.001553ΔRGB(-3,-14,-14)antialiasing coverage residue on a shared outline
AntialiasCoverage46,6 → 46,60.001553ΔRGB(-3,-14,-14)antialiasing coverage residue on a shared outline
AntialiasCoverage121,6 → 122,60.001553ΔRGB(-3,-14,-14)antialiasing coverage residue on a shared outline
AntialiasCoverage8,33 → 8,330.001553ΔRGB(-3,-15,-15)antialiasing coverage residue on a shared outline
AntialiasCoverage159,33 → 160,330.001553ΔRGB(-3,-15,-15)antialiasing coverage residue on a shared outline
AntialiasCoverage7,34 → 8,340.001553ΔRGB(-3,-15,-15)antialiasing coverage residue on a shared outline
AntialiasCoverage160,34 → 160,340.001553ΔRGB(-3,-15,-15)antialiasing coverage residue on a shared outline
AntialiasCoverage3,43 → 3,440.001553ΔRGB(-3,-12,-12)antialiasing coverage residue on a shared outline
AntialiasCoverage165,43 → 165,440.001553ΔRGB(-3,-12,-12)antialiasing coverage residue on a shared outline
AntialiasCoverage3,73 → 3,740.001553ΔRGB(-3,-18,-18)antialiasing coverage residue on a shared outline
AntialiasCoverage165,73 → 165,740.001553ΔRGB(-3,-18,-18)antialiasing coverage residue on a shared outline
AntialiasCoverage3,74 → 3,750.001553ΔRGB(-2,-12,-12)antialiasing coverage residue on a shared outline
AntialiasCoverage165,74 → 165,750.001553ΔRGB(-2,-12,-12)antialiasing coverage residue on a shared outline
AntialiasCoverage46,111 → 47,1110.001553ΔRGB(-2,-12,-12)antialiasing coverage residue on a shared outline
AntialiasCoverage121,111 → 122,1110.001553ΔRGB(-2,-12,-12)antialiasing coverage residue on a shared outline
AntialiasCoverage49,112 → 50,1120.001553ΔRGB(-2,-12,-12)antialiasing coverage residue on a shared outline
AntialiasCoverage118,112 → 119,1120.001553ΔRGB(-2,-12,-12)antialiasing coverage residue on a shared outline
AntialiasCoverage51,113 → 52,1130.001553ΔRGB(-4,-18,-18)antialiasing coverage residue on a shared outline
AntialiasCoverage116,113 → 116,1130.001553ΔRGB(-4,-18,-18)antialiasing coverage residue on a shared outline
AntialiasCoverage53,114 → 54,1140.001553ΔRGB(-4,-17,-17)antialiasing coverage residue on a shared outline
AntialiasCoverage114,114 → 114,1140.001553ΔRGB(-4,-17,-17)antialiasing coverage residue on a shared outline
AntialiasCoverage58,115 → 58,1150.001553ΔRGB(-3,-17,-17)antialiasing coverage residue on a shared outline
AntialiasCoverage109,115 → 110,1150.001553ΔRGB(-3,-17,-17)antialiasing coverage residue on a shared outline
AntialiasCoverage62,116 → 62,1160.001553ΔRGB(-2,-12,-12)antialiasing coverage residue on a shared outline
AntialiasCoverage105,116 → 106,1160.001553ΔRGB(-2,-12,-12)antialiasing coverage residue on a shared outline
AntialiasCoverage64,1 → 65,10.001035ΔRGB(-2,-9,-9)antialiasing coverage residue on a shared outline
AntialiasCoverage103,1 → 103,10.001035ΔRGB(-2,-9,-9)antialiasing coverage residue on a shared outline
AntialiasCoverage61,2 → 61,20.001035ΔRGB(-2,-9,-9)antialiasing coverage residue on a shared outline
AntialiasCoverage62,2 → 62,20.001035ΔRGB(-3,-17,-17)antialiasing coverage residue on a shared outline
AntialiasCoverage106,2 → 106,20.001035ΔRGB(-3,-17,-17)antialiasing coverage residue on a shared outline
AntialiasCoverage107,2 → 107,20.001035ΔRGB(-2,-9,-9)antialiasing coverage residue on a shared outline
AntialiasCoverage59,2 → 60,20.001035ΔRGB(-1,-5,-5)antialiasing coverage residue on a shared outline
AntialiasCoverage108,2 → 108,20.001035ΔRGB(-1,-5,-5)antialiasing coverage residue on a shared outline
source · cases/clip-mask/r2-clip-path-url-inline-svg-circle.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 clip path url inline svg circle</title>
6<style>
7  @page { size: 200px 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  .box { width: 200px; height: 140px; background: #d32f2f; clip-path: url(#r2clip); }
13</style>
14</head>
15<body>
16  <svg class="defs" width="0" height="0" aria-hidden="true" focusable="false"><defs><clipPath id="r2clip" clipPathUnits="objectBoundingBox"><circle cx="0.5" cy="0.5" r="0.42"/></clipPath></defs></svg>
17  <div class="box"></div>
18</body>
19</html>

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

PASS visually equivalent · no rejecting defect · thresholded evidence 0.009524% · raw 0.009524% (30 px) r2-clip-path-xywh-rounded-rect · xywh-rounded-rectPASS via CSS-scale observation: sub-CSS shared-colour coverageAntialiasCoverageΔ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
clip-path xywh() basic shape must render: A single colored box isolates the clip geometry without text or external assets. Catches wrong implementation: Parser or renderer only handles the simplest existing basic-shape subset.
regions (27 total; showing 27 representatives)

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

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
ColorErr27300,0 → 145,882total 0.02% · largest 0.001596%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage8,3 → 8,30.001596ΔRGB(15,9,15)antialiasing coverage residue on a shared outline
AntialiasCoverage8,85 → 8,850.001596ΔRGB(15,10,14)antialiasing coverage residue on a shared outline
AntialiasCoverage9,86 → 9,860.001596ΔRGB(18,11,17)antialiasing coverage residue on a shared outline
AntialiasCoverage16,0 → 16,00.000798ΔRGB(8,5,8)antialiasing coverage residue on a shared outline
AntialiasCoverage130,0 → 130,00.000798ΔRGB(15,10,14)antialiasing coverage residue on a shared outline
AntialiasCoverage132,1 → 132,10.000798ΔRGB(15,9,15)antialiasing coverage residue on a shared outline
AntialiasCoverage9,2 → 9,20.000798ΔRGB(13,8,13)antialiasing coverage residue on a shared outline
AntialiasCoverage9,3 → 9,30.000798ΔRGB(18,11,18)antialiasing coverage residue on a shared outline
AntialiasCoverage8,3 → 8,30.000798ΔRGB(12,8,11)antialiasing coverage residue on a shared outline
AntialiasCoverage4,7 → 4,70.000798ΔRGB(9,6,9)antialiasing coverage residue on a shared outline
AntialiasCoverage3,8 → 3,80.000798ΔRGB(17,11,17)antialiasing coverage residue on a shared outline
AntialiasCoverage3,9 → 3,90.000798ΔRGB(12,7,12)antialiasing coverage residue on a shared outline
AntialiasCoverage2,9 → 2,90.000798ΔRGB(15,9,15)antialiasing coverage residue on a shared outline
AntialiasCoverage144,12 → 144,120.000798ΔRGB(18,11,18)antialiasing coverage residue on a shared outline
AntialiasCoverage145,15 → 145,150.000798ΔRGB(19,12,19)antialiasing coverage residue on a shared outline
AntialiasCoverage0,16 → 0,160.000798ΔRGB(12,8,11)antialiasing coverage residue on a shared outline
AntialiasCoverage0,72 → 0,720.000798ΔRGB(13,8,13)antialiasing coverage residue on a shared outline
AntialiasCoverage145,73 → 145,730.000798ΔRGB(18,11,18)antialiasing coverage residue on a shared outline
AntialiasCoverage144,76 → 144,760.000798ΔRGB(19,12,19)antialiasing coverage residue on a shared outline
AntialiasCoverage2,79 → 2,790.000798ΔRGB(10,6,11)antialiasing coverage residue on a shared outline
AntialiasCoverage3,79 → 3,790.000798ΔRGB(18,11,17)antialiasing coverage residue on a shared outline
AntialiasCoverage3,80 → 3,800.000798ΔRGB(19,12,19)antialiasing coverage residue on a shared outline
AntialiasCoverage4,82 → 4,820.000798ΔRGB(4,3,4)antialiasing coverage residue on a shared outline
AntialiasCoverage8,85 → 8,850.000798ΔRGB(8,5,8)antialiasing coverage residue on a shared outline
AntialiasCoverage132,87 → 132,870.000798ΔRGB(8,5,8)antialiasing coverage residue on a shared outline
AntialiasCoverage16,88 → 16,880.000798ΔRGB(15,9,15)antialiasing coverage residue on a shared outline
AntialiasCoverage130,88 → 130,880.000798ΔRGB(4,3,4)antialiasing coverage residue on a shared outline
source · cases/clip-mask/r2-clip-path-xywh-rounded-rect.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 clip path xywh rounded rect</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  .box { width: 220px; height: 140px; background: #2e7d32; clip-path: xywh(35px 22px 145px 88px round 18px); }
12</style>
13</head>
14<body>
15  <div class="box"></div>
16</body>
17</html>

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

PASS exact match r2-clip-path-url-clip-rule-evenodd · url-clip-rule-evenodd
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
clip-rule evenodd must cut holes in referenced SVG clipPath: An inline clipPath contains two nested rectangles with clip-rule:evenodd, producing a frame-shaped visible region. Catches wrong implementation: Renderer ignores clip-rule or cannot render URL clip paths, filling the inner hole.

cumulative clipping with overflow and clip-path — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0.002455% · raw 0.002455% (6 px) r2-overflow-plus-clip-path-intersection · overflow-clip-intersectionPASS via CSS-scale observation: sub-CSS shared-colour coverageAntialiasCoverageΔE 3.7
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: visually accepted coverage phase; raw antialiasing coverage residue on a shared outline
Ancestor overflow and child clip-path must intersect: A clipped child overflows an overflow:hidden parent; visible paint is the intersection of parent rectangle and child circle. Catches wrong implementation: Renderer applies only one clip or fails to nest clipping paths.
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
ColorErr6654,1 → 85,731total 0.005328% · largest 0.000888%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage85,1 → 85,10.000888ΔRGB(1,7,7)antialiasing coverage residue on a shared outline
AntialiasCoverage82,3 → 82,30.000888ΔRGB(2,14,14)antialiasing coverage residue on a shared outline
AntialiasCoverage59,27 → 59,270.000888ΔRGB(2,17,17)antialiasing coverage residue on a shared outline
AntialiasCoverage54,43 → 54,430.000888ΔRGB(2,16,16)antialiasing coverage residue on a shared outline
AntialiasCoverage54,57 → 54,570.000888ΔRGB(2,16,16)antialiasing coverage residue on a shared outline
AntialiasCoverage59,73 → 59,730.000888ΔRGB(2,17,17)antialiasing coverage residue on a shared outline
source · cases/clip-mask/r2-overflow-plus-clip-path-intersection.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 overflow plus clip path intersection</title>
6<style>
7  @page { size: 184px 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  .parent { position: relative; width: 125px; height: 92px; margin: 18px; overflow: hidden; background: #eeeeee; }
12  .child { position: absolute; left: 52px; top: -6px; width: 112px; height: 112px; background: #d32f2f; clip-path: circle(54px at 56px 56px); }
13</style>
14</head>
15<body>
16  <div class="parent"><div class="child"></div></div>
17</body>
18</html>

mask shorthand full grammar — 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.21% (627 px) r2-mask-shorthand-position-size-repeat-alpha · shorthand-position-size-repeat-alphaPASS via CSS-scale observation: sub-CSS shared-outline coverageMissingmissing 1.2%Δ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 lacks paint present in reference (1.2%)
mask shorthand must expand position/size/repeat/mode/composite: The mask shorthand sets a linear mask at 20px 10px / 80px 80px no-repeat alpha. Catches wrong implementation: Implementation treats mask as only mask-image and drops geometry/mode components.
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
Missing13760,0 → 40,80376total 1.2% · largest 1.2%
ColorErr125140,0 → 40,80251total 0.8% · largest 0.8%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
Missing0,0 → 40,801.2candidate lacks paint present in reference (1.2%)
AntialiasCoverage40,0 → 40,800.8ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
source · cases/clip-mask/r2-mask-shorthand-position-size-repeat-alpha.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 mask shorthand position size repeat alpha</title>
6<style>
7  @page { size: 224px 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  .box { width: 220px; height: 130px; background: #1565c0; mask: linear-gradient(to right, #000 0 50%, transparent 50% 100%) 20px 10px / 80px 80px no-repeat alpha; }
12</style>
13</head>
14<body>
15  <div class="box"></div>
16</body>
17</html>

mask-border-source/slice/width/repeat — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0.23% · raw 0.23% (631 px) r2-mask-border-gradient-ring · mask-border-gradient-ring · oracle: weasyprintPASS via CSS-scale observation: sub-CSS shared-colour coverageAntialiasCoverageΔE 31.8
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
mask-border must slice and apply a border-box mask: A mask-border gradient should reveal only a border ring around a solid box. Catches wrong implementation: Renderer has no mask-border fields and paints the entire box.
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
ColorErr76310,0 → 200,140625total 0.2% · largest 0.2%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage0,140 → 200,1400.2ΔRGB(28,135,135)antialiasing coverage residue on a shared outline
AntialiasCoverage28,0 → 28,00.000365ΔRGB(-10,-47,-47)antialiasing coverage residue on a shared outline
AntialiasCoverage172,0 → 172,00.000365ΔRGB(-10,-47,-47)antialiasing coverage residue on a shared outline
AntialiasCoverage28,28 → 28,280.000365ΔRGB(-3,-16,-16)antialiasing coverage residue on a shared outline
AntialiasCoverage172,28 → 172,280.000365ΔRGB(-6,-30,-30)antialiasing coverage residue on a shared outline
AntialiasCoverage28,112 → 28,1120.000365ΔRGB(-3,-16,-16)antialiasing coverage residue on a shared outline
AntialiasCoverage172,112 → 172,1120.000365ΔRGB(-6,-30,-30)antialiasing coverage residue on a shared outline
source · cases/clip-mask/r2-mask-border-gradient-ring.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 mask border gradient ring</title>
6<style>
7  @page { size: 200px 140px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  .box { width: 200px; height: 140px; background: #d32f2f; mask-border-source: linear-gradient(#000, #000); mask-border-slice: 28; mask-border-width: 28px; mask-border-repeat: stretch; }
12</style>
13</head>
14<body>
15  <div class="box"></div>
16</body>
17</html>

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

PASS visually equivalent · no rejecting defect · thresholded evidence 0.07% · raw 0.07% (176 px) r2-mask-clip-content-box · mask-clip-content-boxPASS via CSS-scale observation: sub-CSS shared-colour coverageAntialiasCoverageΔE 42.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
mask-clip must limit the mask painting area: A single solid box uses a CSS mask longhand or gradient source to isolate mask geometry/coverage behavior. Catches wrong implementation: Renderer supports only a single element-sized alpha/luminance mask source and ignores the longhand.
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
ColorErr117696,0 → 96,56176total 0.3% · largest 0.3%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage96,0 → 96,560.3ΔRGB(-38,-181,-181)antialiasing coverage residue on a shared outline
source · cases/clip-mask/r2-mask-clip-content-box.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 mask clip content box</title>
6<style>
7  @page { size: 184px 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  .box { width: 180px; height: 140px; border: 18px solid #263238; padding: 24px; background: #d32f2f; mask-image: linear-gradient(#000, #000); mask-clip: content-box; -webkit-mask-image: linear-gradient(#000, #000); -webkit-mask-clip: content-box; }
12</style>
13</head>
14<body>
15  <div class="box"></div>
16</body>
17</html>

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

PASS visually equivalent · no rejecting defect · thresholded evidence 0% · raw 0.003200% (9 px) mask-composite-exclude-layers · exclude-two-layersPASS via raw same-coordinate visibility policyAntialiasCoverageΔE 0.5
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
Two mask-image layers with mask-composite:exclude punch a circular hole through a full-box mask; catches single-layer masks or ignored compositing.
regions (9 total; showing 9 representatives)

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

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
ColorErr9956,31 → 142,1101total 0.003288% · largest 0.000365%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage78,31 → 78,310.000365ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage122,31 → 122,310.000365ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage56,63 → 56,630.000365ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage58,82 → 58,820.000365ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage142,82 → 142,820.000365ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage74,105 → 74,1050.000365ΔRGB(1,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage126,105 → 126,1050.000365ΔRGB(1,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage82,110 → 82,1100.000365ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage118,110 → 118,1100.000365ΔRGB(0,1,1)antialiasing coverage residue on a shared outline
source · cases/clip-mask/mask-composite-exclude-layers.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>mask composite exclude layers</title>
6<style>
7  @page { size: 200px 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  .box {
12    width: 200px;
13    height: 140px;
14    background: #2e7d32;
15    mask-image:
16      linear-gradient(#000000, #000000),
17      radial-gradient(circle 44px at 50% 50%, #000000 0 44px, transparent 45px);
18    mask-size: 100% 100%, 100% 100%;
19    mask-repeat: no-repeat, no-repeat;
20    mask-composite: exclude;
21    -webkit-mask-image:
22      radial-gradient(circle 44px at 50% 50%, #000000 0 44px, transparent 45px),
23      linear-gradient(#000000, #000000);
24    -webkit-mask-size: 100% 100%, 100% 100%;
25    -webkit-mask-repeat: no-repeat, no-repeat;
26    -webkit-mask-composite: source-out;
27  }
28</style>
29</head>
30<body>
31  <div class="box"></div>
32</body>
33</html>

mask-composite: add — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS exact match r2-mask-composite-add · composite-add
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
mask-composite:add must combine multiple mask layers: Two mask layers, a circle and a rectangle, are combined with add to create union of two masks. Catches wrong implementation: Renderer keeps only the first mask layer or ignores mask-composite.

mask-composite: intersect — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0% · raw 0.003200% (9 px) r2-mask-composite-intersect · composite-intersectPASS via raw same-coordinate visibility policyAntialiasCoverageΔE 0.5
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
mask-composite:intersect must apply source-in: only the overlap of the current circular layer and lower rectangle remains. Catches an ignored operator or a whole-layer fallback.
regions (9 total; showing 9 representatives)

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

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
ColorErr996,0 → 61,1201total 0.01% · largest 0.001374%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage6,0 → 6,00.001374ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage15,2 → 15,20.001374ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage43,17 → 43,170.001374ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage44,18 → 44,180.001374ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage59,46 → 59,460.001374ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage61,55 → 61,550.001374ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage57,84 → 57,840.001374ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage38,108 → 38,1080.001374ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
AntialiasCoverage14,120 → 14,1200.001374ΔRGB(0,0,1)antialiasing coverage residue on a shared outline
source · cases/clip-mask/r2-mask-composite-intersect.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 mask composite intersect</title>
6<style>
7  @page { size: 200px 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  .box { width: 200px; height: 140px; background: #1565c0; mask-image: radial-gradient(circle 60px at 90px 70px, #000 0 60px, transparent 61px), linear-gradient(to right, transparent 0 45%, #000 45% 100%); mask-size: 100% 100%, 100% 100%; mask-repeat: no-repeat, no-repeat; mask-composite: intersect; -webkit-mask-image: linear-gradient(to right, transparent 0 45%, #000 45% 100%), radial-gradient(circle 60px at 90px 70px, #000 0 60px, transparent 61px); -webkit-mask-size: 100% 100%, 100% 100%; -webkit-mask-repeat: no-repeat, no-repeat; -webkit-mask-composite: source-in; }
12</style>
13</head>
14<body>
15  <div class="box"></div>
16</body>
17</html>

mask-composite: subtract — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS exact match r2-mask-composite-subtract · composite-subtract
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
mask-composite:subtract must apply source-out: the current circular layer remains only outside the lower rectangular layer. Catches reversed source/destination composition or an ignored operator.

mask-image: conic-gradient() — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0.04% · raw 0.04% (312 px) mask-image-conic-gradient · alpha-sweepPASS via CSS-scale observation: sub-CSS shared-outline coverageExtraextra 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.2%)
mask-image: conic-gradient() masks a solid fill to an opaque half-turn wedge fading to transparent. CSS mask is unsupported.
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
Extra13120,0 → 100,0312total 0.2% · largest 0.2%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
Extra0,0 → 100,00.2candidate adds paint absent from reference (0.2%)
source · cases/clip-mask/mask-image-conic-gradient.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>mask-image conic-gradient</title>
6<style>
7  @page { size: 384px 200px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  .box {
12    width: 200px;
13    height: 200px;
14    background-color: #ef6c00;
15    /* Conic alpha sweep: opaque wedge growing clockwise from the top
16       (css-masking-1 §3.1, conic CSS gradient as a mask source; alpha mode). */
17    -webkit-mask-image: conic-gradient(from 0deg at 50% 50%, #000 0%, #000 50%, rgba(0,0,0,0) 50%, rgba(0,0,0,0) 100%);
18    mask-image: conic-gradient(from 0deg at 50% 50%, #000 0%, #000 50%, rgba(0,0,0,0) 50%, rgba(0,0,0,0) 100%);
19  }
20</style>
21</head>
22<body>
23  <div class="box"></div>
24</body>
25</html>

mask-image: linear-gradient() — 100.00% verified visual parity PASS 2 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0.000150% · raw 0.000150% (1 px) mask-image-linear-diagonal · diagonal-anglePASS via CSS-scale observation: sub-CSS shared-colour coverageAntialiasCoverageΔE 8.7
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: visually accepted coverage phase; raw antialiasing coverage residue on a shared outline
mask-image: linear-gradient(135deg) fades a solid fill diagonally from opaque (top-left) to transparent (bottom-right) via the alpha channel. CSS mask is unsupported (PDF SMask used internally for blur alpha only).
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
ColorErr11220,0 → 220,01total 0.000211% · largest 0.000211%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage220,0 → 220,00.000211ΔRGB(-17,-26,-11)antialiasing coverage residue on a shared outline
source · cases/clip-mask/mask-image-linear-diagonal.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>mask-image diagonal linear-gradient</title>
6<style>
7  @page { size: 304px 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  .box {
12    width: 220px;
13    height: 220px;
14    background-color: #6a1b9a;
15    /* Diagonal alpha fade: opaque at top-left, transparent at bottom-right
16       (css-masking-1 §3.4: match-source on a CSS gradient = alpha mode). */
17    -webkit-mask-image: linear-gradient(135deg, #000 0%, rgba(0,0,0,0) 100%);
18    mask-image: linear-gradient(135deg, #000 0%, rgba(0,0,0,0) 100%);
19  }
20</style>
21</head>
22<body>
23  <div class="box"></div>
24</body>
25</html>
PASS exact match mask-image-linear-gradient · alpha-fade
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
mask-image: linear-gradient() fades a solid fill from opaque to transparent left-to-right. CSS mask is unsupported (PDF SMask used internally for blur alpha only).

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

PASS exact match mask-image-none · initial-value
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
mask-image: none leaves a solid box fully opaque (initial value). CSS mask is unsupported.

mask-image: radial-gradient() — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS exact match mask-image-radial-gradient · alpha-disc
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
mask-image: radial-gradient() leaves a solid disc fading to transparent at the edges. CSS mask is unsupported.

mask-image: repeating-conic-gradient() — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0.16% · raw 0.16% (625 px) r2-mask-image-repeating-conic-spokes · repeating-conic-spokesPASS via CSS-scale observation: sub-CSS shared-outline coverageExtraextra 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 candidate adds paint absent from reference (0.3%)
repeating-conic-gradient masks must repeat angular bands: A single solid box uses a CSS mask longhand or gradient source to isolate mask geometry/coverage behavior. Catches wrong implementation: Renderer supports only a single element-sized alpha/luminance mask source and ignores the longhand.
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
Extra66250,0 → 200,157133total 0.2% · largest 0.03%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
Extra0,0 → 0,420.03candidate adds paint absent from reference (0.03%)
Extra158,0 → 200,00.03candidate adds paint absent from reference (0.03%)
Extra43,0 → 73,00.02candidate adds paint absent from reference (0.02%)
Extra0,127 → 0,1570.02candidate adds paint absent from reference (0.02%)
Extra100,0 → 127,00.02candidate adds paint absent from reference (0.02%)
Extra0,73 → 0,1000.02candidate adds paint absent from reference (0.02%)
source · cases/clip-mask/r2-mask-image-repeating-conic-spokes.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 mask image repeating conic spokes</title>
6<style>
7  @page { size: 200px 200px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  .box { width: 200px; height: 200px; background: #6a1b9a; mask-image: repeating-conic-gradient(#000 0deg 15deg, transparent 15deg 30deg); -webkit-mask-image: repeating-conic-gradient(#000 0deg 15deg, transparent 15deg 30deg); }
12</style>
13</head>
14<body>
15  <div class="box"></div>
16</body>
17</html>

mask-image: repeating-linear-gradient() — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0.11% · raw 0.11% (500 px) mask-image-repeating-linear · striped-alphaPASS via CSS-scale observation: sub-CSS shared-outline coverageExtraextra 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 candidate adds paint absent from reference (0.3%)
mask-image: repeating-linear-gradient() tiles opaque/transparent bands across a solid fill (repeating CSS gradient mask source). CSS mask is unsupported.
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
Extra15000,0 → 0,160500total 0.1% · largest 0.1%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
Extra0,0 → 0,1600.1candidate adds paint absent from reference (0.1%)
source · cases/clip-mask/mask-image-repeating-linear.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>mask-image repeating-linear-gradient</title>
6<style>
7  @page { size: 296px 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  .box {
12    width: 240px;
13    height: 160px;
14    background-color: #00695c;
15    /* Striped alpha mask: opaque bands alternating with transparent bands
16       (css-masking-1 §3.1, repeating CSS gradient image as a mask source). */
17    -webkit-mask-image: repeating-linear-gradient(to right, #000 0%, #000 10%, rgba(0,0,0,0) 10%, rgba(0,0,0,0) 20%);
18    mask-image: repeating-linear-gradient(to right, #000 0%, #000 10%, rgba(0,0,0,0) 10%, rgba(0,0,0,0) 20%);
19  }
20</style>
21</head>
22<body>
23  <div class="box"></div>
24</body>
25</html>

mask-image: repeating-radial-gradient() — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS exact match r2-mask-image-repeating-radial-rings · repeating-radial-rings
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
repeating-radial-gradient masks need direct coverage: A single solid box uses a CSS mask longhand or gradient source to isolate mask geometry/coverage behavior. Catches wrong implementation: Renderer supports only a single element-sized alpha/luminance mask source and ignores the longhand.

mask-image: url(#mask) default mask-type luminance — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0.48% · raw 0.48% (906 px) r2-mask-inline-svg-default-luminance · inline-svg-mask-luminancePASS via CSS-scale observation: one-sided sub-CSS outline coverageAntialiasCoverageextra 0.001133%Δ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
Inline SVG <mask> default luminance must hide black regions: A CSS box references an inline SVG <mask> with a black left half and white right half; default luminance hides black and reveals white. Catches wrong implementation: Implementation treats the mask as alpha-only or ignores inline fragment masks.
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
ColorErr29050,0 → 90,100593total 1.0% · largest 0.7%
Extra1190,100 → 90,1001total 0.001133% · largest 0.001133%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage0,0 → 90,1000.7ΔRGB(-51,-32,-50)antialiasing coverage residue on a shared outline
AntialiasCoverage90,0 → 90,1000.4ΔRGB(-60,-37,-60)antialiasing coverage residue on a shared outline
Extra90,100 → 90,1000.001133candidate adds paint absent from reference (0.001133%)
source · cases/clip-mask/r2-mask-inline-svg-default-luminance.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 mask inline svg default luminance</title>
6<style>
7  @page { size: 184px 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  svg.defs { position: absolute; width: 0; height: 0; overflow: hidden; }
12  .box { width: 180px; height: 100px; background: #2e7d32; mask-image: url(#r2lummask); -webkit-mask-image: url(#r2lummask); }
13</style>
14</head>
15<body>
16  <svg class="defs" width="0" height="0" aria-hidden="true" focusable="false"><defs><mask id="r2lummask" maskUnits="userSpaceOnUse" x="0" y="0" width="180" height="100"><rect width="90" height="100" fill="#000000"/><rect x="90" width="90" height="100" fill="#ffffff"/></mask></defs></svg>
17  <div class="box"></div>
18</body>
19</html>

mask-image: url(#mask) with mask-type: alpha — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0.74% · raw 0.74% (1375 px) r2-mask-inline-svg-alpha-type · inline-svg-mask-alphaPASS via CSS-scale observation: stable same-coordinate outline phaseAntialiasCoveragemissing 0.2%extra 0.000729%ΔE 13.9
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: visually accepted coverage phase; raw antialiasing coverage residue on a shared outline
Inline SVG <mask> references must honor mask-type:alpha: A CSS box references an inline SVG <mask> whose black regions have alpha 1 and mask-type:alpha, while a transparent middle stripe masks out content. Catches wrong implementation: Implementation only loads SVG image URLs, treats black as zero luminance, or ignores transparent mask alpha.
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
ColorErr310610,0 → 180,100531total 0.6% · largest 0.3%
Missing1313110,0 → 110,100313total 0.2% · largest 0.2%
Extra11180,100 → 180,1001total 0.000567% · largest 0.000567%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage0,0 → 70,1000.3ΔRGB(-72,-45,-71)antialiasing coverage residue on a shared outline
Missing110,0 → 110,1000.2candidate lacks paint present in reference (0.2%)
AntialiasCoverage180,0 → 180,1000.2ΔRGB(-47,-29,-47)antialiasing coverage residue on a shared outline
AntialiasCoverage110,100 → 180,1000.1ΔRGB(-47,-29,-47)antialiasing coverage residue on a shared outline
Extra180,100 → 180,1000.000567candidate adds paint absent from reference (0.000567%)
source · cases/clip-mask/r2-mask-inline-svg-alpha-type.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 mask inline svg alpha type</title>
6<style>
7  @page { size: 184px 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  svg.defs { position: absolute; width: 0; height: 0; overflow: hidden; }
12  .box { width: 180px; height: 100px; background: #2e7d32; mask-image: url(#r2alphamask); -webkit-mask-image: url(#r2alphamask); }
13</style>
14</head>
15<body>
16  <svg class="defs" width="0" height="0" aria-hidden="true" focusable="false"><defs><mask id="r2alphamask" maskUnits="userSpaceOnUse" x="0" y="0" width="180" height="100" mask-type="alpha"><rect width="70" height="100" fill="#000000"/><rect x="70" width="40" height="100" fill="transparent"/><rect x="110" width="70" height="100" fill="#000000"/></mask></defs></svg>
17  <div class="box"></div>
18</body>
19</html>

mask-image: url() — 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.49% (2675 px) mask-image-url-svg · svg-luminancePASS via CSS-scale observation: stable same-coordinate outline phaseAntialiasCoveragemissing 0.03%extra 0.2%ΔE 10.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
mask-image: url() references a data:-URI SVG whose white circle defines the visible region. CSS mask is unsupported.
regions (500 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
Extra2664431,0 → 159,6727total 0.2% · largest 0.01%
ColorErr17721650,0 → 160,1601210total 0.9% · largest 0.5%
Missing57670,75 → 160,1603total 0.03% · largest 0.001193%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage3,100 → 157,1600.5ΔRGB(7,20,15)antialiasing coverage residue on a shared outline
AntialiasCoverage75,0 → 85,00.01ΔRGB(-49,-141,-100)antialiasing coverage residue on a shared outline
AntialiasCoverage21,21 → 26,260.01ΔRGB(-15,-44,-31)antialiasing coverage residue on a shared outline
AntialiasCoverage134,21 → 139,260.01ΔRGB(-15,-44,-31)antialiasing coverage residue on a shared outline
AntialiasCoverage0,76 → 0,840.01ΔRGB(0,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage160,76 → 160,840.01ΔRGB(0,-1,0)antialiasing coverage residue on a shared outline
Extra76,0 → 84,00.01candidate adds paint absent from reference (0.01%)
AntialiasCoverage42,8 → 47,100.009145ΔRGB(-35,-101,-72)antialiasing coverage residue on a shared outline
AntialiasCoverage113,8 → 118,100.009145ΔRGB(-35,-101,-72)antialiasing coverage residue on a shared outline
AntialiasCoverage7,42 → 10,470.009145ΔRGB(-19,-55,-39)antialiasing coverage residue on a shared outline
AntialiasCoverage150,42 → 153,470.009145ΔRGB(-19,-54,-38)antialiasing coverage residue on a shared outline
AntialiasCoverage2,95 → 2,1000.006759ΔRGB(6,19,14)antialiasing coverage residue on a shared outline
AntialiasCoverage158,95 → 158,1000.006759ΔRGB(6,19,14)antialiasing coverage residue on a shared outline
AntialiasCoverage1,92 → 1,950.005567ΔRGB(8,24,17)antialiasing coverage residue on a shared outline
AntialiasCoverage159,92 → 159,950.005567ΔRGB(8,24,17)antialiasing coverage residue on a shared outline
AntialiasCoverage71,1 → 75,10.004374ΔRGB(-25,-73,-52)antialiasing coverage residue on a shared outline
AntialiasCoverage85,1 → 89,10.004374ΔRGB(-25,-73,-52)antialiasing coverage residue on a shared outline
AntialiasCoverage0,72 → 0,750.004374ΔRGB(2,6,4)antialiasing coverage residue on a shared outline
AntialiasCoverage160,72 → 160,750.004374ΔRGB(2,6,4)antialiasing coverage residue on a shared outline
AntialiasCoverage0,85 → 0,890.004374ΔRGB(8,24,17)antialiasing coverage residue on a shared outline
AntialiasCoverage160,85 → 160,890.004374ΔRGB(8,24,17)antialiasing coverage residue on a shared outline
Extra72,0 → 75,00.003976candidate adds paint absent from reference (0.003976%)
Extra85,0 → 88,00.003976candidate adds paint absent from reference (0.003976%)
AntialiasCoverage69,1 → 71,10.003181ΔRGB(-26,-74,-53)antialiasing coverage residue on a shared outline
AntialiasCoverage89,1 → 91,10.003181ΔRGB(-26,-74,-53)antialiasing coverage residue on a shared outline
AntialiasCoverage27,19 → 28,200.003181ΔRGB(-4,-13,-9)antialiasing coverage residue on a shared outline
AntialiasCoverage132,19 → 133,200.003181ΔRGB(-4,-13,-9)antialiasing coverage residue on a shared outline
AntialiasCoverage19,28 → 20,290.003181ΔRGB(-4,-11,-8)antialiasing coverage residue on a shared outline
AntialiasCoverage159,69 → 159,710.003181ΔRGB(2,7,5)antialiasing coverage residue on a shared outline
AntialiasCoverage1,89 → 1,910.003181ΔRGB(11,34,24)antialiasing coverage residue on a shared outline
AntialiasCoverage159,89 → 159,910.003181ΔRGB(11,34,24)antialiasing coverage residue on a shared outline
Extra69,1 → 71,10.002783candidate adds paint absent from reference (0.002783%)
Extra89,1 → 91,10.002783candidate adds paint absent from reference (0.002783%)
AntialiasCoverage140,28 → 141,280.002783ΔRGB(-29,-82,-58)antialiasing coverage residue on a shared outline
Extra67,1 → 68,10.002386candidate adds paint absent from reference (0.002386%)
Extra92,1 → 93,10.002386candidate adds paint absent from reference (0.002386%)
AntialiasCoverage67,1 → 68,10.002386ΔRGB(-25,-72,-51)antialiasing coverage residue on a shared outline
AntialiasCoverage92,1 → 93,10.002386ΔRGB(-25,-72,-51)antialiasing coverage residue on a shared outline
AntialiasCoverage65,2 → 67,20.002386ΔRGB(-25,-71,-51)antialiasing coverage residue on a shared outline
AntialiasCoverage93,2 → 95,20.002386ΔRGB(-25,-71,-51)antialiasing coverage residue on a shared outline
AntialiasCoverage52,5 → 54,50.002386ΔRGB(-18,-51,-37)antialiasing coverage residue on a shared outline
AntialiasCoverage106,5 → 108,50.002386ΔRGB(-18,-51,-37)antialiasing coverage residue on a shared outline
AntialiasCoverage50,6 → 51,60.002386ΔRGB(-24,-69,-49)antialiasing coverage residue on a shared outline
AntialiasCoverage109,6 → 110,60.002386ΔRGB(-24,-69,-49)antialiasing coverage residue on a shared outline
AntialiasCoverage48,6 → 50,70.002386ΔRGB(-37,-105,-75)antialiasing coverage residue on a shared outline
AntialiasCoverage110,6 → 112,70.002386ΔRGB(-36,-103,-73)antialiasing coverage residue on a shared outline
AntialiasCoverage33,15 → 34,150.002386ΔRGB(-21,-61,-43)antialiasing coverage residue on a shared outline
AntialiasCoverage126,15 → 127,150.002386ΔRGB(-21,-61,-43)antialiasing coverage residue on a shared outline
AntialiasCoverage31,17 → 32,170.002386ΔRGB(-10,-29,-21)antialiasing coverage residue on a shared outline
AntialiasCoverage128,17 → 129,170.002386ΔRGB(-10,-29,-21)antialiasing coverage residue on a shared outline
AntialiasCoverage29,18 → 30,180.002386ΔRGB(-15,-43,-31)antialiasing coverage residue on a shared outline
AntialiasCoverage130,18 → 131,180.002386ΔRGB(-15,-43,-31)antialiasing coverage residue on a shared outline
AntialiasCoverage17,30 → 18,310.002386ΔRGB(-12,-36,-25)antialiasing coverage residue on a shared outline
AntialiasCoverage142,30 → 143,310.002386ΔRGB(-12,-36,-25)antialiasing coverage residue on a shared outline
AntialiasCoverage16,31 → 17,320.002386ΔRGB(-8,-23,-17)antialiasing coverage residue on a shared outline
AntialiasCoverage143,31 → 144,320.002386ΔRGB(-8,-23,-17)antialiasing coverage residue on a shared outline
AntialiasCoverage14,34 → 15,350.002386ΔRGB(-17,-50,-35)antialiasing coverage residue on a shared outline
AntialiasCoverage145,34 → 146,350.002386ΔRGB(-17,-50,-35)antialiasing coverage residue on a shared outline
AntialiasCoverage6,49 → 6,500.002386ΔRGB(-18,-52,-37)antialiasing coverage residue on a shared outline
AntialiasCoverage154,49 → 154,500.002386ΔRGB(-16,-47,-33)antialiasing coverage residue on a shared outline
AntialiasCoverage5,50 → 6,520.002386ΔRGB(-12,-36,-26)antialiasing coverage residue on a shared outline
AntialiasCoverage154,50 → 155,520.002386ΔRGB(-12,-36,-26)antialiasing coverage residue on a shared outline
AntialiasCoverage4,53 → 5,540.002386ΔRGB(-7,-21,-15)antialiasing coverage residue on a shared outline
AntialiasCoverage155,53 → 156,540.002386ΔRGB(-7,-21,-15)antialiasing coverage residue on a shared outline
source · cases/clip-mask/mask-image-url-svg.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>mask-image url svg</title>
6<style>
7  @page { size: 280px 200px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  .box {
12    width: 200px;
13    height: 200px;
14    background-color: #ad1457;
15    /* Mask via a data:-URI SVG whose white circle defines the visible disc. */
16    -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMDAiIGhlaWdodD0iMjAwIj48Y2lyY2xlIGN4PSIxMDAiIGN5PSIxMDAiIHI9IjgwIiBmaWxsPSIjZmZmIi8+PC9zdmc+");
17    -webkit-mask-repeat: no-repeat;
18    mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMDAiIGhlaWdodD0iMjAwIj48Y2lyY2xlIGN4PSIxMDAiIGN5PSIxMDAiIHI9IjgwIiBmaWxsPSIjZmZmIi8+PC9zdmc+");
19    mask-repeat: no-repeat;
20  }
21</style>
22</head>
23<body>
24  <div class="box"></div>
25</body>
26</html>

mask-image: url(data:image/svg+xml,...) match-source luminance — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0.87% · raw 0.87% (1625 px) r2-mask-svg-image-match-source-luminance · svg-image-match-source-luminancePASS via CSS-scale observation: stable same-coordinate outline phaseAntialiasCoveragemissing 0.3%extra 0.000850%ΔE 14.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
SVG image masks in match-source mode use luminance: An SVG mask image has a red half and a white half; match-source should use luminance so red is only partially visible and white is fully visible. Catches wrong implementation: Implementation treats SVG image masks as pure alpha, making both halves equally visible.
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
ColorErr313120,0 → 180,100500total 0.7% · largest 0.3%
Missing1312120,0 → 120,100312total 0.2% · largest 0.2%
Extra11180,100 → 180,1001total 0.000567% · largest 0.000567%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage0,0 → 60,1000.3ΔRGB(-84,-52,-82)antialiasing coverage residue on a shared outline
AntialiasCoverage120,0 → 180,1000.3ΔRGB(51,32,50)antialiasing coverage residue on a shared outline
Missing120,0 → 120,1000.2candidate lacks paint present in reference (0.2%)
AntialiasCoverage180,0 → 180,1000.2ΔRGB(-47,-29,-47)antialiasing coverage residue on a shared outline
Extra180,100 → 180,1000.000567candidate adds paint absent from reference (0.000567%)
source · cases/clip-mask/r2-mask-svg-image-match-source-luminance.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 mask svg image match source luminance</title>
6<style>
7  @page { size: 184px 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  .box { width: 180px; height: 100px; background: #2e7d32; mask-image: url("data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22180%22%20height=%22100%22%3E%3Crect%20width=%2260%22%20height=%22100%22%20fill=%22red%22/%3E%3Crect%20x=%2260%22%20width=%2260%22%20height=%22100%22%20fill=%22transparent%22/%3E%3Crect%20x=%22120%22%20width=%2260%22%20height=%22100%22%20fill=%22white%22/%3E%3C/svg%3E"); mask-mode: match-source; mask-size: 180px 100px; mask-repeat: no-repeat; -webkit-mask-image: url("data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22180%22%20height=%22100%22%3E%3Crect%20width=%2260%22%20height=%22100%22%20fill=%22red%22/%3E%3Crect%20x=%2260%22%20width=%2260%22%20height=%22100%22%20fill=%22transparent%22/%3E%3Crect%20x=%22120%22%20width=%2260%22%20height=%22100%22%20fill=%22white%22/%3E%3C/svg%3E"); -webkit-mask-size: 180px 100px; -webkit-mask-repeat: no-repeat; }
12</style>
13</head>
14<body>
15  <div class="box"></div>
16</body>
17</html>

mask-mode: alpha with SVG image mask — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0.87% · raw 0.87% (1625 px) r2-mask-svg-image-alpha-mode · svg-image-alpha-modePASS via CSS-scale observation: stable same-coordinate outline phaseAntialiasCoveragemissing 0.3%extra 0.000850%ΔE 14.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
mask-mode:alpha on SVG images must ignore luminance: The same red/white SVG mask is used with mask-mode:alpha; both opaque halves should be fully visible. Catches wrong implementation: Renderer always uses luminance for SVG masks, making the red half dim.
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
ColorErr313120,0 → 180,100500total 0.7% · largest 0.3%
Missing1312120,0 → 120,100312total 0.2% · largest 0.2%
Extra11180,100 → 180,1001total 0.000567% · largest 0.000567%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage0,0 → 60,1000.3ΔRGB(-84,-52,-82)antialiasing coverage residue on a shared outline
AntialiasCoverage120,0 → 180,1000.3ΔRGB(51,32,50)antialiasing coverage residue on a shared outline
Missing120,0 → 120,1000.2candidate lacks paint present in reference (0.2%)
AntialiasCoverage180,0 → 180,1000.2ΔRGB(-47,-29,-47)antialiasing coverage residue on a shared outline
Extra180,100 → 180,1000.000567candidate adds paint absent from reference (0.000567%)
source · cases/clip-mask/r2-mask-svg-image-alpha-mode.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 mask svg image alpha mode</title>
6<style>
7  @page { size: 184px 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  .box { width: 180px; height: 100px; background: #2e7d32; mask-image: url("data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22180%22%20height=%22100%22%3E%3Crect%20width=%2260%22%20height=%22100%22%20fill=%22red%22/%3E%3Crect%20x=%2260%22%20width=%2260%22%20height=%22100%22%20fill=%22transparent%22/%3E%3Crect%20x=%22120%22%20width=%2260%22%20height=%22100%22%20fill=%22white%22/%3E%3C/svg%3E"); mask-mode: alpha; mask-size: 180px 100px; mask-repeat: no-repeat; -webkit-mask-image: url("data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22180%22%20height=%22100%22%3E%3Crect%20width=%2260%22%20height=%22100%22%20fill=%22red%22/%3E%3Crect%20x=%2260%22%20width=%2260%22%20height=%22100%22%20fill=%22transparent%22/%3E%3Crect%20x=%22120%22%20width=%2260%22%20height=%22100%22%20fill=%22white%22/%3E%3C/svg%3E"); -webkit-mask-mode: alpha; -webkit-mask-size: 180px 100px; -webkit-mask-repeat: no-repeat; }
12</style>
13</head>
14<body>
15  <div class="box"></div>
16</body>
17</html>

mask-mode: luminance — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0% · raw 20.96% (94310 px) mask-mode-luminance · gradient-sourcePASS 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
mask-mode: luminance uses a white->black gradient's luminance as coverage so a solid fill fades from visible (white) to masked (black). CSS mask is unsupported.
regions (55458 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
ColorErr55458943101,0 → 220,160500total 27.5% · largest 0.1% · max ΔE 0.8

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage118,0 → 118,1600.1ΔE 0.3 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage197,0 → 197,1600.1ΔE 0.5 ΔRGB(-1,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage41,0 → 41,20.002038ΔE 0.4 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage120,0 → 120,20.002038ΔE 0.4 ΔRGB(-1,0,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage1,1 → 1,30.002038ΔE 0.3 ΔRGB(-1,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage81,1 → 81,30.002038ΔE 0.4 ΔRGB(-1,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage157,1 → 157,30.002038ΔE 0.4 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage41,3 → 41,40.002038ΔE 0.4 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage120,3 → 120,40.002038ΔE 0.4 ΔRGB(-1,0,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage1,4 → 1,60.002038ΔE 0.3 ΔRGB(-1,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage81,4 → 81,60.002038ΔE 0.4 ΔRGB(-1,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage157,4 → 157,60.002038ΔE 0.4 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage41,5 → 41,70.002038ΔE 0.4 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage120,5 → 120,70.002038ΔE 0.4 ΔRGB(-1,0,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage1,6 → 1,80.002038ΔE 0.3 ΔRGB(-1,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage81,6 → 81,80.002038ΔE 0.4 ΔRGB(-1,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage157,6 → 157,80.002038ΔE 0.4 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage41,8 → 41,100.002038ΔE 0.4 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage120,8 → 120,100.002038ΔE 0.4 ΔRGB(-1,0,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage1,9 → 1,110.002038ΔE 0.3 ΔRGB(-1,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage81,9 → 81,110.002038ΔE 0.4 ΔRGB(-1,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage157,9 → 157,110.002038ΔE 0.4 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage41,10 → 41,120.002038ΔE 0.4 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage120,10 → 120,120.002038ΔE 0.4 ΔRGB(-1,0,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage1,12 → 1,130.002038ΔE 0.3 ΔRGB(-1,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage81,12 → 81,130.002038ΔE 0.4 ΔRGB(-1,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage157,12 → 157,130.002038ΔE 0.4 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage41,13 → 41,150.002038ΔE 0.4 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage120,13 → 120,150.002038ΔE 0.4 ΔRGB(-1,0,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage1,14 → 1,160.002038ΔE 0.3 ΔRGB(-1,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage81,14 → 81,160.002038ΔE 0.4 ΔRGB(-1,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage157,14 → 157,160.002038ΔE 0.4 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage41,15 → 41,170.002038ΔE 0.4 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage120,15 → 120,170.002038ΔE 0.4 ΔRGB(-1,0,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage1,17 → 1,190.002038ΔE 0.3 ΔRGB(-1,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage81,17 → 81,190.002038ΔE 0.4 ΔRGB(-1,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage157,17 → 157,190.002038ΔE 0.4 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage41,18 → 41,200.002038ΔE 0.4 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage120,18 → 120,200.002038ΔE 0.4 ΔRGB(-1,0,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage1,19 → 1,210.002038ΔE 0.3 ΔRGB(-1,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage81,19 → 81,210.002038ΔE 0.4 ΔRGB(-1,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage157,19 → 157,210.002038ΔE 0.4 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage41,20 → 41,220.002038ΔE 0.4 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage120,20 → 120,220.002038ΔE 0.4 ΔRGB(-1,0,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage1,22 → 1,240.002038ΔE 0.3 ΔRGB(-1,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage81,22 → 81,240.002038ΔE 0.4 ΔRGB(-1,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage157,22 → 157,240.002038ΔE 0.4 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage41,23 → 41,250.002038ΔE 0.4 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage120,23 → 120,250.002038ΔE 0.4 ΔRGB(-1,0,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage1,24 → 1,260.002038ΔE 0.3 ΔRGB(-1,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage81,24 → 81,260.002038ΔE 0.4 ΔRGB(-1,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage157,24 → 157,260.002038ΔE 0.4 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage41,26 → 41,280.002038ΔE 0.4 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage120,26 → 120,280.002038ΔE 0.4 ΔRGB(-1,0,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage1,27 → 1,290.002038ΔE 0.3 ΔRGB(-1,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage81,27 → 81,290.002038ΔE 0.4 ΔRGB(-1,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage157,27 → 157,290.002038ΔE 0.4 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage41,28 → 41,300.002038ΔE 0.4 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage120,28 → 120,300.002038ΔE 0.4 ΔRGB(-1,0,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage1,29 → 1,310.002038ΔE 0.3 ΔRGB(-1,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage81,29 → 81,310.002038ΔE 0.4 ΔRGB(-1,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage157,29 → 157,310.002038ΔE 0.4 ΔRGB(-1,0,0)antialiasing coverage residue on a shared outline
AntialiasCoverage41,31 → 41,330.002038ΔE 0.4 ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage120,31 → 120,330.002038ΔE 0.4 ΔRGB(-1,0,-1)antialiasing coverage residue on a shared outline
source · cases/clip-mask/mask-mode-luminance.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>mask-mode luminance</title>
6<style>
7  @page { size: 288px 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  .box {
12    width: 220px;
13    height: 160px;
14    background-color: #283593;
15    /* Luminance mask (css-masking-1 §3.4): the gradient is fully opaque but
16       its luminance ramps white -> black, so coverage fades left (visible) to
17       right (masked out). White = full coverage, black = none. */
18    -webkit-mask-image: linear-gradient(to right, #fff 0%, #000 100%);
19    -webkit-mask-mode: luminance;
20    mask-image: linear-gradient(to right, #fff 0%, #000 100%);
21    mask-mode: luminance;
22  }
23</style>
24</head>
25<body>
26  <div class="box"></div>
27</body>
28</html>

mask-mode: match-source with CSS gradient — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0.15% · raw 0.15% (375 px) r2-mask-mode-match-source-gradient-alpha · match-source-gradient-alphaPASS via CSS-scale observation: sub-CSS shared-outline coverageExtraextra 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.2%)
mask-mode:match-source on CSS gradients uses alpha, not luminance: A single solid box uses a CSS mask longhand or gradient source to isolate mask geometry/coverage behavior. Catches wrong implementation: Renderer supports only a single element-sized alpha/luminance mask source and ignores the longhand.
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
Extra1375210,0 → 210,120375total 0.2% · largest 0.2%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
Extra210,0 → 210,1200.2candidate adds paint absent from reference (0.2%)
source · cases/clip-mask/r2-mask-mode-match-source-gradient-alpha.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 mask mode match source gradient alpha</title>
6<style>
7  @page { size: 216px 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  .box { width: 210px; height: 120px; background: #d32f2f; mask-image: linear-gradient(to right, #000 0 33%, transparent 33% 66%, #fff 66% 100%); mask-mode: match-source; -webkit-mask-image: linear-gradient(to right, #000 0 33%, transparent 33% 66%, #fff 66% 100%); -webkit-mask-mode: alpha; }
12</style>
13</head>
14<body>
15  <div class="box"></div>
16</body>
17</html>

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

PASS exact match r2-mask-origin-padding-box · mask-origin-padding-box
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
mask-origin must use the padding box as positioning area: A single solid box uses a CSS mask longhand or gradient source to isolate mask geometry/coverage behavior. Catches wrong implementation: Renderer supports only a single element-sized alpha/luminance mask source and ignores the longhand.

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

PASS exact match r2-mask-position-offset-layer · mask-position-offset
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
mask-position must offset mask images: A single solid box uses a CSS mask longhand or gradient source to isolate mask geometry/coverage behavior. Catches wrong implementation: Renderer supports only a single element-sized alpha/luminance mask source and ignores the longhand.

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

PASS visually equivalent · no rejecting defect · thresholded evidence 0.86% · raw 0.86% (2250 px) r2-mask-repeat-tiled-stripes · mask-repeat-stripesPASS via CSS-scale observation: sub-CSS shared-outline coverageMissingmissing 1.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 candidate lacks paint present in reference (1.6%)
mask-repeat must tile the mask layer: A single solid box uses a CSS mask longhand or gradient source to isolate mask geometry/coverage behavior. Catches wrong implementation: Renderer supports only a single element-sized alpha/luminance mask source and ignores the longhand.
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
Missing6225020,0 → 220,120375total 0.9% · largest 0.1%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
Missing20,0 → 20,1200.1candidate lacks paint present in reference (0.1%)
Missing60,0 → 60,1200.1candidate lacks paint present in reference (0.1%)
Missing100,0 → 100,1200.1candidate lacks paint present in reference (0.1%)
Missing140,0 → 140,1200.1candidate lacks paint present in reference (0.1%)
Missing180,0 → 180,1200.1candidate lacks paint present in reference (0.1%)
Missing220,0 → 220,1200.1candidate lacks paint present in reference (0.1%)
source · cases/clip-mask/r2-mask-repeat-tiled-stripes.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 mask repeat tiled stripes</title>
6<style>
7  @page { size: 224px 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  .box { width: 220px; height: 120px; background: #6a1b9a; mask-image: linear-gradient(to right, #000 0 20px, transparent 20px 40px); mask-size: 40px 120px; mask-repeat: repeat; -webkit-mask-image: linear-gradient(to right, #000 0 20px, transparent 20px 40px); -webkit-mask-size: 40px 120px; -webkit-mask-repeat: repeat; }
12</style>
13</head>
14<body>
15  <div class="box"></div>
16</body>
17</html>

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

PASS visually equivalent · no rejecting defect · thresholded evidence 0.14% · raw 0.14% (375 px) r2-mask-size-independent-layer · mask-size-layerPASS via CSS-scale observation: sub-CSS shared-outline coverageMissingmissing 1.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 candidate lacks paint present in reference (1.1%)
mask-size must size the mask layer independently: A single solid box uses a CSS mask longhand or gradient source to isolate mask geometry/coverage behavior. Catches wrong implementation: Renderer supports only a single element-sized alpha/luminance mask source and ignores the longhand.
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
Missing137530,0 → 30,120375total 1.1% · largest 1.1%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
Missing30,0 → 30,1201.1candidate lacks paint present in reference (1.1%)
source · cases/clip-mask/r2-mask-size-independent-layer.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>r2 mask size independent layer</title>
6<style>
7  @page { size: 224px 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  .box { width: 220px; height: 120px; background: #d32f2f; mask-image: linear-gradient(to right, #000 0 50%, transparent 50% 100%); mask-size: 60px 120px; mask-repeat: no-repeat; -webkit-mask-image: linear-gradient(to right, #000 0 50%, transparent 50% 100%); -webkit-mask-size: 60px 120px; -webkit-mask-repeat: no-repeat; }
12</style>
13</head>
14<body>
15  <div class="box"></div>
16</body>
17</html>