lists-counters — 100.00% verified visual parity

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

marker-side:match-parent — 0.00% verified visual parity PASS 0 · FAIL 0 · REFERENCE-DISPUTED 1all categories ↑

REFERENCE-DISPUTED 1274 px · above-floor 0.24% · raw 0.24% max-page diff lists-counters-marker-side-match-parent · marker-side-match-parent · REFERENCE DISPUTEDMissingmissing 0.2%extra 0.1%ΔE 38.1
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: candidate lacks paint present in reference (0.2%)
Compatibility canary for vertical outside-marker placement. The current fixture gives every item the same directionality as its parent, so it cannot distinguish marker-side:match-parent from match-self; a future semantic fixture must contrast the two directions without treating an exact outside-marker position as normative.
reference dispute: CSS Lists 3 leaves the exact position of outside marker boxes undefined. This fixture does not vary list-item directionality, so match-parent has no observable effect. Chromium 150 reports CSS.supports('marker-side: match-parent') as false and an empty computed value; its PDF is an unsupported-feature compatibility canary, not a normative oracle.
regions (23 total; showing 23 representatives)

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

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
ColorErr1782968,19 → 114,60275total 0.4% · largest 0.1%
Missing322568,46 → 114,6083total 0.1% · largest 0.04%
Extra322069,47 → 115,6078total 0.10% · largest 0.04%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage68,19 → 83,280.1ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage69,59 → 85,600.05ΔRGB(76,76,76)antialiasing coverage residue on a shared outline
AntialiasCoverage98,20 → 110,230.05ΔRGB(-40,-42,-44)antialiasing coverage residue on a shared outline
AntialiasCoverage70,47 → 84,480.04ΔRGB(89,89,89)antialiasing coverage residue on a shared outline
Missing95,52 → 114,530.04candidate lacks paint present in reference (0.04%)
AntialiasCoverage98,25 → 110,250.04ΔRGB(118,126,131)antialiasing coverage residue on a shared outline
Extra97,52 → 115,540.04candidate adds paint absent from reference (0.04%)
Missing68,58 → 85,600.03candidate lacks paint present in reference (0.03%)
Extra69,59 → 87,600.03candidate adds paint absent from reference (0.03%)
Extra70,47 → 85,480.03candidate adds paint absent from reference (0.03%)
Missing69,46 → 84,480.03candidate lacks paint present in reference (0.03%)
AntialiasCoverage97,52 → 113,540.03ΔRGB(-223,-223,-223)antialiasing coverage residue on a shared outline
AntialiasCoverage68,32 → 70,330.007183ΔRGB(-75,-80,-84)antialiasing coverage residue on a shared outline
AntialiasCoverage96,32 → 98,330.007183ΔRGB(-75,-80,-84)antialiasing coverage residue on a shared outline
AntialiasCoverage68,35 → 70,350.007183ΔRGB(149,160,167)antialiasing coverage residue on a shared outline
AntialiasCoverage96,35 → 98,350.007183ΔRGB(149,160,167)antialiasing coverage residue on a shared outline
AntialiasCoverage96,20 → 98,200.005387ΔRGB(-57,-61,-64)antialiasing coverage residue on a shared outline
AntialiasCoverage68,28 → 69,280.005387ΔRGB(113,120,126)antialiasing coverage residue on a shared outline
AntialiasCoverage96,28 → 98,280.005387ΔRGB(42,45,47)antialiasing coverage residue on a shared outline
AntialiasCoverage114,52 → 114,530.001796ΔRGB(-223,-223,-223)antialiasing coverage residue on a shared outline
ColorValue69,48 → 69,480.000449ΔRGB(11,11,11)fill recolour ΔRGB(+11,+11,+11) (ΔE 0)
ColorValue95,53 → 95,530.000449ΔRGB(4,4,4)fill recolour ΔRGB(+4,+4,+4) (ΔE 0)
ColorValue87,59 → 87,590.000449ΔRGB(-11,-11,-11)fill recolour ΔRGB(-11,-11,-11) (ΔE 0)
source · cases/lists-counters/lists-counters-marker-side-match-parent.html
1<!DOCTYPE html><html><head><meta charset='utf-8'><style>@page{size:224px 240px;margin:0}html{font-family:ParitySans;line-height:1.5}*{margin:0;box-sizing:border-box}body{padding:12px;background:#fff}.v{writing-mode:vertical-rl;height:190px;width:120px;border:3px solid #111;background:#e3f2fd}ol{font-size:20px;line-height:28px;marker-side:match-parent}li{margin:0 0 8px 0;background:#fff}</style></head><body><div class='v'><ol><li>一</li><li>二</li></ol></div></body></html>

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

PASS exact match lists-counters-marker-font-size · marker-font-size
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
A list styles only ::marker with a 36px font-size while item text remains 20px. Catches: A marker renderer that only recolors markers passes marker color tests but misses marker font metrics.

::marker{content:...} — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS exact match lists-counters-marker-content-counter · marker-content-counter
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
An ordered list replaces default decimal markers with a generated counter wrapped in square brackets through ::marker content. Catches: A ::marker color-only implementation passes marker styling tests but still emits default 1./2. markers.

<li value> — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS exact match lists-counters-li-value · li-value
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
The middle li value='7' changes that marker and subsequent items continue from 8. Catches: An ordered-list context that only tracks a running index passes default and start fixtures but ignores per-item value overrides.

<ol reversed> — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS exact match lists-counters-ol-reversed · ol-reversed
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
A three-item ordered list with the reversed attribute should render 3, 2, 1 markers. Catches: An ol implementation that only handles start passes start fixtures but always counts upward.

@counter-style cyclic symbols — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS exact match lists-counters-counter-style-cyclic · counter-style-cyclic
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
A custom @counter-style named checks cycles through two literal symbols for list markers. Catches: Ignoring @counter-style passes built-in marker tests but falls back to disc for author-defined styles.

@counter-style extends decimal pad prefix suffix — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS exact match lists-counters-counter-style-pad-prefix-suffix · counter-style-pad-prefix-suffix
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
A custom counter style extends decimal with pad:2 '0', prefix '[' and suffix '] '. Catches: A decimal-only formatter passes decimal-leading-zero and roman fixtures but ignores custom style descriptors.

@counter-style negative descriptor — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS exact match lists-counters-counter-style-negative · counter-style-negative
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
A generated counter starts at -2 and uses a custom negative descriptor to wrap negative values. Catches: A counter implementation that only formats positive decimal/roman cases passes current fixtures but mishandles negative custom styles.

counter(list-item) — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS exact match lists-counters-counter-list-item-after · counter-list-item-after
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
Each li appends generated text using counter(list-item), matching its ordered-list marker number. Catches: A renderer with an internal list index can paint markers but still resolves counter(list-item) to 0 in content.

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

PASS exact match ol-continues-across-page-break · ol-across-page-break · 2 pages
page 1
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
page 2
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
An <ol> of ten 40px items spans two pages (CSS Lists 3 §4): counters resolve in document order, not visual layout, so page 2 markers read 6-10 (not a reset to 1). The multi-page harness asserts the page COUNT (2) and diffs both pages; a per-page counter reset would fail.

counter-increment:list-item 2 — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS exact match lists-counters-list-item-increment-step · list-item-increment-step
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
An ordered list increments list-item by 2 so markers advance 2, 4, 6. Catches: A list renderer with hard-coded +1 indices passes normal lists but ignores author counter-increment on list-item.

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

PASS visually equivalent · no rejecting defect · thresholded evidence 0.10% · raw 0.10% (409 px) lists-counters-counter-set · assign-existing-counterPASS via CSS-scale observation: sub-CSS shared-colour coverageAntialiasCoverageΔE 31.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
counter-set:item 7 assigns the existing counter so generated labels read 1, 7, 8; catches counter-reset/increment-only support.
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
ColorErr340963,78 → 74,95153total 0.2% · largest 0.06%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage65,78 → 74,950.06ΔRGB(98,100,106)antialiasing coverage residue on a shared outline
AntialiasCoverage65,84 → 72,950.06ΔRGB(4,4,4)antialiasing coverage residue on a shared outline
AntialiasCoverage63,78 → 64,950.04ΔRGB(-54,-55,-58)antialiasing coverage residue on a shared outline
source · cases/lists-counters/lists-counters-counter-set.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<style>
6  @page { size: 264px 152px; margin: 0; }
7  html { font-family: ParitySans; line-height: 1.5; }
8  * { margin: 0; box-sizing: border-box; }
9  html, body { background: #ffffff; }
10  body {
11    padding: 12px;
12    counter-reset: item 0;
13  }
14  .row {
15    font-family: ParitySans;
16    font-size: 22px;
17    line-height: 32px;
18    background: #eef2ff;
19    margin-bottom: 4px;
20    color: #111111;
21  }
22  .row::before {
23    content: counter(item) ". ";
24    color: #d7263d;
25    font-weight: bold;
26  }
27  .inc { counter-increment: item; }
28  .set { counter-set: item 7; }
29</style>
30</head>
31<body>
32  <div class="row inc">one</div>
33  <div class="row set">seven</div>
34  <div class="row inc">eight</div>
35</body>
36</html>

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

PASS visually equivalent · no rejecting defect · thresholded evidence 0.11% · raw 0.11% (902 px) counter-reset-increment · reset-increment-contentPASS via CSS-scale observation: sub-CSS shared-colour coverageAntialiasCoverageΔE 24.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
counter-reset and counter-increment feeding content:counter() in ::before across three rows.
regions (19 total; showing 19 representatives)

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

Complete dominant-class aggregates

classregionspixelsunion bbox (CSS px)largest pxmaximum magnitude
ColorErr19902137,29 → 230,75257total 0.2% · largest 0.05%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage218,29 → 230,420.05ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage182,62 → 192,750.03ΔRGB(21,21,23)antialiasing coverage residue on a shared outline
AntialiasCoverage182,67 → 190,750.02ΔRGB(-44,-44,-47)antialiasing coverage residue on a shared outline
AntialiasCoverage184,69 → 190,730.02ΔRGB(4,4,5)antialiasing coverage residue on a shared outline
AntialiasCoverage139,64 → 143,750.02ΔRGB(-79,-80,-85)antialiasing coverage residue on a shared outline
AntialiasCoverage220,31 → 228,350.01ΔRGB(2,2,2)antialiasing coverage residue on a shared outline
AntialiasCoverage141,64 → 143,730.01ΔRGB(82,83,88)antialiasing coverage residue on a shared outline
AntialiasCoverage139,59 → 139,630.005055ΔRGB(-79,-80,-85)antialiasing coverage residue on a shared outline
AntialiasCoverage141,59 → 141,630.005055ΔRGB(82,83,88)antialiasing coverage residue on a shared outline
AntialiasCoverage137,63 → 138,640.002528ΔRGB(-29,-30,-31)antialiasing coverage residue on a shared outline
AntialiasCoverage145,63 → 145,640.002528ΔRGB(65,65,69)antialiasing coverage residue on a shared outline
AntialiasCoverage145,73 → 145,750.002528ΔRGB(65,65,69)antialiasing coverage residue on a shared outline
AntialiasCoverage222,35 → 222,350.000211ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage222,35 → 222,350.000211ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage223,35 → 223,350.000211ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage224,35 → 224,350.000211ΔRGB(0,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage225,35 → 225,350.000211ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage226,35 → 226,350.000211ΔRGB(-1,0,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage227,35 → 227,350.000211ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
source · cases/lists-counters/counter-reset-increment.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>counter-reset and counter-increment</title>
6<style>
7  @page { size: 480px 176px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  .region {
12    width: 360px;
13    margin: 20px;
14    padding: 16px;
15    border: 2px solid #000000;
16    background: #e8eaf6;
17    counter-reset: step;
18  }
19  .row {
20    font-family: ParitySans;
21    font-size: 22px;
22    line-height: 1.5;
23    color: #1b1b1b;
24    counter-increment: step;
25  }
26  .row::before {
27    content: "Step " counter(step) ": ";
28    font-weight: bold;
29    color: #283593;
30  }
31</style>
32</head>
33<body>
34  <div class="region">
35    <div class="row">build phase</div>
36    <div class="row">test phase</div>
37    <div class="row">ship phase</div>
38  </div>
39</body>
40</html>
PASS visually equivalent · no rejecting defect · thresholded evidence 0.04% · raw 0.04% (330 px) counter-content-roman · counter-style-argumentPASS via CSS-scale observation: sub-CSS shared-colour coverageAntialiasCoverageΔE 22.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
content:counter(x, upper-roman) rendering counter values in an explicit counter style.
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
ColorErr933067,62 → 79,75257total 0.07% · largest 0.05%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage67,62 → 79,750.05ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage69,64 → 77,680.01ΔRGB(2,2,2)antialiasing coverage residue on a shared outline
AntialiasCoverage71,68 → 71,680.000211ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage71,68 → 71,680.000211ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage72,68 → 72,680.000211ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage73,68 → 73,680.000211ΔRGB(0,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage74,68 → 74,680.000211ΔRGB(-1,-1,-1)antialiasing coverage residue on a shared outline
AntialiasCoverage75,68 → 75,680.000211ΔRGB(-1,-1,0)antialiasing coverage residue on a shared outline
AntialiasCoverage76,68 → 76,680.000211ΔRGB(-1,0,-1)antialiasing coverage residue on a shared outline
source · cases/lists-counters/counter-content-roman.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>counter() with style argument</title>
6<style>
7  @page { size: 480px 176px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  .region {
12    width: 360px;
13    margin: 20px;
14    padding: 16px;
15    border: 2px solid #000000;
16    background: #e0f2f1;
17    counter-reset: chap;
18  }
19  .row {
20    font-family: ParitySans;
21    font-size: 22px;
22    line-height: 1.5;
23    color: #1b1b1b;
24    counter-increment: chap;
25  }
26  .row::before {
27    content: counter(chap, upper-roman) ". ";
28    font-weight: bold;
29    color: #00695c;
30  }
31</style>
32</head>
33<body>
34  <div class="region">
35    <div class="row">introduction</div>
36    <div class="row">methods</div>
37    <div class="row">results</div>
38  </div>
39</body>
40</html>
PASS visually equivalent · no rejecting defect · thresholded evidence 0.03% · raw 0.03% (316 px) counters-nested · counters-function-nestedPASS via CSS-scale observation: sub-CSS shared-colour coverageAntialiasCoverageΔE 30.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
Nested ordered lists numbered with content:counters(x, '.') producing 1, 2, 2.1, 2.2, 3.
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
ColorErr3316194,89 → 204,100136total 0.05% · largest 0.02%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage196,90 → 202,1000.02ΔRGB(1,1,1)antialiasing coverage residue on a shared outline
AntialiasCoverage196,89 → 204,1000.02ΔRGB(67,66,65)antialiasing coverage residue on a shared outline
AntialiasCoverage194,89 → 195,1000.01ΔRGB(-70,-69,-68)antialiasing coverage residue on a shared outline
source · cases/lists-counters/counters-nested.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>counters() nested</title>
6<style>
7  @page { size: 480px 232px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  .region {
12    width: 360px;
13    margin: 20px;
14    padding: 16px;
15    border: 2px solid #000000;
16    background: #efebe9;
17  }
18  ol {
19    list-style: none;
20    counter-reset: sec;
21  }
22  li {
23    font-family: ParitySans;
24    font-size: 20px;
25    line-height: 1.5;
26    color: #1b1b1b;
27    counter-increment: sec;
28    padding-left: 8px;
29  }
30  li::before {
31    content: counters(sec, ".") " ";
32    font-weight: bold;
33    color: #4e342e;
34  }
35  ol ol {
36    padding-left: 24px;
37  }
38</style>
39</head>
40<body>
41  <div class="region">
42    <ol>
43      <li>one</li>
44      <li>two
45        <ol>
46          <li>two-one</li>
47          <li>two-two</li>
48        </ol>
49      </li>
50      <li>three</li>
51    </ol>
52  </div>
53</body>
54</html>

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

PASS exact match list-style-shorthand · shorthand-type-position
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
list-style shorthand setting lower-alpha type and inside position in one declaration.

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

PASS visually equivalent · no rejecting defect · thresholded evidence 0.16% · raw 0.16% (918 px) lists-counters-list-style-image-data-uri · data-png-markerPASS via CSS-scale observation: sub-CSS shared-colour coverageAntialiasCoverageΔE 46.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
list-style-image:url(data:png) replaces disc bullets with the intrinsic image marker; catches fallback to list-style-type markers.
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
ColorErr691853,18 → 70,102153total 0.3% · largest 0.05%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage53,18 → 53,340.05ΔRGB(52,198,206)antialiasing coverage residue on a shared outline
AntialiasCoverage69,18 → 70,340.05ΔRGB(-52,-198,-206)antialiasing coverage residue on a shared outline
AntialiasCoverage53,52 → 53,680.05ΔRGB(52,198,206)antialiasing coverage residue on a shared outline
AntialiasCoverage69,52 → 70,680.05ΔRGB(-52,-198,-206)antialiasing coverage residue on a shared outline
AntialiasCoverage53,86 → 53,1020.05ΔRGB(52,198,206)antialiasing coverage residue on a shared outline
AntialiasCoverage69,86 → 70,1020.05ΔRGB(-52,-198,-206)antialiasing coverage residue on a shared outline
source · cases/lists-counters/lists-counters-list-style-image-data-uri.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<style>
6  @page { size: 304px 192px; margin: 0; }
7  html { font-family: ParitySans; line-height: 1.5; }
8  * { margin: 0; box-sizing: border-box; }
9  html, body { background: #ffffff; }
10  body { padding: 18px; }
11  .region {
12    width: 240px;
13    padding: 10px 10px 10px 46px;
14    border: 2px solid #111111;
15    background: #fce4ec;
16  }
17  ul {
18    padding-left: 28px;
19    font-family: ParitySans;
20    font-size: 20px;
21    line-height: 30px;
22    list-style-position: outside;
23    list-style-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAFklEQVR42mM4ISdHEmIY1TCqYfhqAADkYgQQ6ZuA8QAAAABJRU5ErkJggg==");
24  }
25  li {
26    margin-bottom: 4px;
27    color: #111111;
28  }
29</style>
30</head>
31<body>
32  <div class="region">
33    <ul>
34      <li>Alpha</li>
35      <li>Beta</li>
36      <li>Gamma</li>
37    </ul>
38  </div>
39</body>
40</html>
PASS exact match list-style-image-data-uri · data-uri-png
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
Unordered list using a data-URI PNG as the marker image (list-style-image:url()).

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

PASS exact match list-style-position-inside · inside
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
Ordered list with markers flowed inside the content box (list-style-position:inside).
PASS exact match list-style-position-outside · outside
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
Ordered list with markers hung outside the content box (list-style-position:outside).

list-style-type — 100.00% verified visual parity PASS 12 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0.004364% · raw 0.004364% (36 px) list-style-type-upper-alpha · upper-alphaPASS via CSS-scale observation: sub-CSS shared-colour coverageAntialiasCoverageΔE 31.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
Ordered list rendering A./B./C. upper-alpha markers on three short text items.
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
ColorErr23678,72 → 81,7518total 0.007583% · largest 0.003791%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
AntialiasCoverage78,72 → 78,750.003791ΔRGB(80,76,69)antialiasing coverage residue on a shared outline
AntialiasCoverage80,72 → 81,750.003791ΔRGB(-101,-95,-87)antialiasing coverage residue on a shared outline
source · cases/lists-counters/list-style-type-upper-alpha.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<title>list-style-type upper-alpha</title>
6<style>
7  @page { size: 480px 176px; margin: 0; }
8  html { font-family: ParitySans; line-height: 1.5; }
9  * { margin: 0; box-sizing: border-box; }
10  html, body { background: #ffffff; }
11  .region {
12    width: 360px;
13    margin: 20px;
14    padding: 16px 16px 16px 48px;
15    border: 2px solid #000000;
16    background: #fff3e0;
17  }
18  ol {
19    list-style-type: upper-alpha;
20  }
21  li {
22    font-family: ParitySans;
23    font-size: 22px;
24    line-height: 1.5;
25    color: #1b1b1b;
26  }
27</style>
28</head>
29<body>
30  <div class="region">
31    <ol>
32      <li>Apple entry</li>
33      <li>Banana entry</li>
34      <li>Cherry entry</li>
35    </ol>
36  </div>
37</body>
38</html>
PASS exact match list-style-type-circle · circle
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
Unordered list rendering hollow circle markers on three short text items.
PASS exact match list-style-type-decimal · decimal
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
Ordered list rendering 1./2./3. decimal markers on three short text items.
PASS exact match list-style-type-decimal-leading-zero · decimal-leading-zero
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
Ordered list rendering 01./02./03. zero-padded decimal markers on three items.
PASS exact match list-style-type-disc · disc
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
Unordered list rendering filled disc markers on three short text items.
PASS exact match list-style-type-lower-alpha · lower-alpha
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
Ordered list rendering a./b./c. lower-alpha markers on three short text items.
PASS exact match list-style-type-lower-roman · lower-roman
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
Ordered list rendering i./ii./iii. lower-roman markers on three short text items.
PASS exact match list-style-type-none · none
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
Unordered list with markers suppressed via list-style-type:none.
PASS exact match list-style-type-square · square
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
Unordered list rendering filled square markers on three short text items.
PASS exact match list-style-type-upper-roman · upper-roman
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
Ordered list rendering I./II./III. upper-roman markers on three short text items.
PASS exact match ol-decimal-markers · ol-default-decimal
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
An <ol> inherits the authenticated parity baseline's explicit decimal marker style (1./2./3.); a nested <ol> restarts its own sequence.
PASS exact match ol-start-attribute · ol-start
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
Ordered list whose markers begin at 5 via the <ol start> attribute (5./6./7.).

list-style-type:<string> — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS exact match lists-counters-list-style-type-string · list-style-type-string
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
A ul sets list-style-type:'-- ' so each marker is a literal two-dash string instead of a disc. Catches: A built-in-only list-style parser falls unknown types back to disc and passes disc/circle/square fixtures.

list-style-type:cjk-decimal — 100.00% verified visual parity PASS 1 · FAIL 0 · REFERENCE-DISPUTED 0all categories ↑

PASS visually equivalent · no rejecting defect · thresholded evidence 0.001474% · raw 0.001474% (7 px) lists-counters-list-style-type-cjk-decimal · list-style-type-cjk-decimalPASS via CSS-scale observation: sub-CSS shared-outline coverageMissingmissing 0.002849%ΔE 0.8
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
why: visually accepted coverage phase; raw candidate lacks paint present in reference (0.002849%)
An ordered list uses cjk-decimal markers, which render CJK decimal digits rather than western 1/2/3. Catches: An implementation limited to latin/roman built-ins passes existing list-style-type coverage but falls back to disc or decimal for international styles.
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
Missing1620,13 → 20,156total 0.002230% · largest 0.002230%
ColorErr1120,15 → 20,151total 0.000372% · largest 0.000372%

Representative region details (worst-first)

classbbox (CSS px)area%magnitudereason
Missing20,13 → 20,150.002230candidate lacks paint present in reference (0.002230%)
AntialiasCoverage20,15 → 20,150.000372ΔRGB(4,4,4)antialiasing coverage residue on a shared outline
source · cases/lists-counters/lists-counters-list-style-type-cjk-decimal.html
1<!DOCTYPE html><html><head><meta charset='utf-8'><style>@page{size:304px 160px;margin:0}html{font-family:ParitySans;line-height:1.5}*{margin:0;box-sizing:border-box}body{padding:12px;background:#fff}ol{font-size:22px;line-height:32px;padding-left:58px;list-style-type:cjk-decimal}li{background:#fff8e1;margin-bottom:4px}</style></head><body><ol><li>Alpha</li><li>Beta</li><li>Gamma</li></ol></body></html>

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

PASS exact match marker-pseudo-color · color
Chrome ref
Chrome ref
ironpress
ironpress
full-page >1.0%/channel diff
full-page >1.0%/channel diff
Ordered list whose markers are recolored and bolded via the ::marker pseudo-element.