css/css-scroll-snap

edit

WPT coverage of the tests of css/css-scroll-snap at the revision 5602b0f210e3. The tests link to their results in the browsers on wpt.fyi. The tentative tests (experimental features) and the reftests are listed separately from the stable tests.

GroupPassingTestsDisabledPass rate
Stable154157098%
Tentative3031097%
Reftests2426092%
All208214097%

Failure reasons

The tests that do not pass (failing or disabled), by kind of reason. A test with several reasons counts once per kind.

  • TEST BUG: 2
  • NOT IMPLEMENTED: 4

Stable tests

TestResultSubtestsKindDescription
capturing-snap-positions.htmlFail0 / 1TEST BUGexpects a box that is not a scroll container but has a scroll-snap-type to capture the snap areas of its descendants, while the snap areas are captured by the nearest scroll container (https://drafts.csswg.org/css-scroll-snap-1/#snap-strictness); fails in every browser
ignore-snap-points-orthogonal-to-snap-axis.htmlPass1 / 1
inheritance.htmlPass38 / 38
input/keyboard-snap-interruption.htmlPass1 / 1
input/keyboard.htmlPass8 / 8
input/mouse-wheel.htmlPass1 / 1
input/paged.htmlPass5 / 5
input/scroll-padding-paged.htmlPass1 / 1
input/snap-area-overflow-boundary-viewport-covering.htmlPass2 / 2
multicol-001.htmlPass3 / 3
multicol-002.htmlPass3 / 3
multicol-003.htmlPass3 / 3
nested-scrollIntoView-snaps.htmlPass1 / 1
no-snap-position.htmlPass3 / 3
overflowing-snap-areas-nested.htmlPass2 / 2
overflowing-snap-areas.htmlPass11 / 11
overscroll-snap.htmlPass1 / 1
parsing/scroll-margin-block-inline-computed.htmlPass14 / 14
parsing/scroll-margin-block-inline-invalid.htmlPass24 / 24
parsing/scroll-margin-block-inline-shorthand.htmlPass12 / 12
parsing/scroll-margin-block-inline-valid.htmlPass14 / 14
parsing/scroll-margin-computed.htmlPass11 / 11
parsing/scroll-margin-invalid.htmlPass20 / 20
parsing/scroll-margin-shorthand.htmlPass20 / 20
parsing/scroll-margin-valid.htmlPass19 / 19
parsing/scroll-padding-block-inline-computed.htmlPass42 / 42
parsing/scroll-padding-block-inline-invalid.htmlPass32 / 32
parsing/scroll-padding-block-inline-shorthand.htmlPass12 / 12
parsing/scroll-padding-block-inline-valid.htmlPass36 / 36
parsing/scroll-padding-computed.htmlPass40 / 40
parsing/scroll-padding-invalid.htmlPass28 / 28
parsing/scroll-padding-shorthand.htmlPass20 / 20
parsing/scroll-padding-valid.htmlPass35 / 35
parsing/scroll-snap-align-computed.htmlPass7 / 7
parsing/scroll-snap-align-invalid.htmlPass3 / 3
parsing/scroll-snap-align-valid.htmlPass7 / 7
parsing/scroll-snap-stop-before.htmlFail0 / 1NOT IMPLEMENTEDscroll-snap-stop: before is not in the grammar of the specification (normal \| always, https://drafts.csswg.org/css-scroll-snap-1/#scroll-snap-stop); fails in every browser
parsing/scroll-snap-stop-computed.htmlPass2 / 2
parsing/scroll-snap-stop-invalid.htmlPass2 / 2
parsing/scroll-snap-stop-valid.htmlPass2 / 2
parsing/scroll-snap-type-computed.htmlPass8 / 8
parsing/scroll-snap-type-invalid.htmlPass14 / 14
parsing/scroll-snap-type-pair.htmlPass3 / 3
parsing/scroll-snap-type-valid.htmlPass11 / 11
resnap-on-layout-is-immediate.htmlPass1 / 1
resnap-on-snap-alignment-change.htmlPass1 / 1
scroll-initial-target/parsing/scroll-initial-target-computed.htmlPass2 / 2
scroll-initial-target/parsing/scroll-initial-target-invalid.htmlPass5 / 5
scroll-initial-target/parsing/scroll-initial-target-valid.htmlPass2 / 2
scroll-margin-editable.htmlPass1 / 1
scroll-margin-focus.htmlPass1 / 1
scroll-margin-overflow-ancestor.htmlPass4 / 4
scroll-margin-visibility-check.htmlPass1 / 1
scroll-margin.htmlPass2 / 2
scroll-on-large-element-not-covering-snapport.htmlPass1 / 1
scroll-padding-and-margin.htmlPass2 / 2
scroll-padding-focus.htmlPass2 / 2
scroll-padding-percentage.htmlPass2 / 2
scroll-padding.htmlPass1 / 1
scroll-snap-nested-snap-area-layout-changed.htmlPass2 / 2
scroll-snap-stop-001.htmlPass4 / 4
scroll-snap-stop-002-nested.htmlPass1 / 1
scroll-snap-stop-002.htmlPass6 / 6
scroll-snap-stop-change.htmlPass2 / 2
scroll-snap-type-change.htmlPass2 / 2
scroll-snap-type-on-root-element.htmlPass3 / 3
scroll-snap-type-pair-001.htmlPass1 / 1
scroll-snap-type-pair-002.htmlPass1 / 1
scroll-snap-type-pair-003.htmlPass1 / 1
scroll-snap-type-pair-004.htmlPass1 / 1
scroll-snap-type-pair-005.htmlPass1 / 1
scroll-snap-type-pair-006.htmlPass1 / 1
scroll-snap-type-pair-007.htmlPass1 / 1
scroll-snap-type.htmlPass4 / 4
scroll-target-margin-005.htmlPass1 / 1
scroll-target-margin-006.htmlPass1 / 1
scrollTo-scrollBy-snaps.htmlPass40 / 40
selection-target.htmlPass1 / 1
single-axis-001.htmlPass2 / 2
single-axis-002.htmlPass2 / 2
single-axis-003.htmlPass1 / 1
single-axis-004.htmlPass2 / 2
single-axis-005.htmlPass2 / 2
single-axis-006.htmlPass2 / 2
single-axis-007.htmlPass1 / 1
single-axis-008.htmlPass2 / 2
single-axis-009.htmlPass1 / 1
smooth-anchor-scroll-in-snap-container.htmlPass1 / 1
snap-after-initial-layout/initial-snap-matches-scroll.htmlPass1 / 1
snap-after-relayout/adding-only-snap-area.htmlPass1 / 1
snap-after-relayout/adding-snap-area-while-snapped.htmlPass1 / 1
snap-after-relayout/changing-scroll-snap-align-nested.htmlPass2 / 2
snap-after-relayout/changing-scroll-snap-align.htmlPass3 / 3
snap-after-relayout/changing-scroll-snap-type-on-root-element.htmlPass3 / 3
snap-after-relayout/changing-scroll-snap-type.htmlPass3 / 3
snap-after-relayout/focus-element-no-snap.htmlPass1 / 1
snap-after-relayout/layout-follows-focused-targeted-block.htmlFail1 / 4NOT IMPLEMENTEDa scroll container without tabindex is not focusable (the keyboard-focusable scroll containers of the browsers)
snap-after-relayout/move-current-target.htmlPass4 / 4
snap-after-relayout/multiple-aligned-targets/common-to-both-axes-supercedes-first-in-tree-order.htmlPass10 / 10
snap-after-relayout/multiple-aligned-targets/nested-supercedes-common-to-both-axes.htmlPass1 / 1
snap-after-relayout/multiple-aligned-targets/prefer-common-to-both-axes.htmlPass2 / 2
snap-after-relayout/multiple-aligned-targets/prefer-first-in-flat-tree-order.htmlPass1 / 1
snap-after-relayout/multiple-aligned-targets/prefer-first-in-tree-order.htmlPass1 / 1
snap-after-relayout/multiple-aligned-targets/prefer-focused-element-scaled-ancestor.htmlPass1 / 1
snap-after-relayout/multiple-aligned-targets/prefer-focused-element.htmlPass3 / 3
snap-after-relayout/multiple-aligned-targets/prefer-focused-nested-containers.htmlPass1 / 1
snap-after-relayout/multiple-aligned-targets/prefer-inner-target.htmlPass2 / 2
snap-after-relayout/multiple-aligned-targets/prefer-snap-target-containing-focused-element.htmlPass1 / 1
snap-after-relayout/multiple-aligned-targets/prefer-targeted-element-both-axes.htmlPass1 / 1
snap-after-relayout/multiple-aligned-targets/prefer-targeted-element-main-frame.htmlPass1 / 1
snap-after-relayout/multiple-aligned-targets/prefer-targeted-element-positioned.htmlPass5 / 5
snap-after-relayout/multiple-aligned-targets/prefer-targeted-element.htmlPass9 / 9
snap-after-relayout/multiple-aligned-targets/prefer-tree-order-over-geometric-containment.htmlPass1 / 1
snap-after-relayout/multiple-aligned-targets/re-snap-focused-target-after-scrollBy.htmlPass1 / 1
snap-after-relayout/multiple-aligned-targets/re-snap-per-axis-target.htmlPass1 / 1
snap-after-relayout/not-resnap-outside-proximity-threshold.htmlPass1 / 1
snap-after-relayout/remove-current-target.htmlPass1 / 1
snap-after-relayout/resnap-on-oveflow-hidden-container.htmlPass1 / 1
snap-after-relayout/resnap-on-overflowing-snap-area.htmlPass1 / 1
snap-after-relayout/resnap-on-reconstructing-frame.htmlPass1 / 1
snap-after-relayout/resnap-to-focused.htmlPass1 / 1
snap-after-relayout/snap-to-different-targets.htmlPass1 / 1
snap-after-relayout/two-consecutive-resnaps-align-end.htmlPass1 / 1
snap-after-relayout/two-consecutive-resnaps.htmlPass1 / 1
snap-after-style-change-respects-scroll-behavior.htmlPass1 / 1
snap-area-capturing-add-scroll-container.htmlPass2 / 2
snap-area-capturing-remove-scroll-container.htmlPass1 / 1
snap-at-user-scroll-end.htmlPass1 / 1
snap-events/scrollsnapchange/scrollsnapchange-same-targets-after-layout-changed.htmlPass2 / 2
snap-events/scrollsnapchange/scrollsnapchange-scroll-snap-type-change.htmlPass1 / 1
snap-events/snap-events-with-shadow-dom.htmlPass2 / 2
snap-events/snapevents-at-document-bubble-to-window.htmlPass2 / 2
snap-fling-in-large-area.htmlPass1 / 1
snap-fling-past-furthest-area.htmlPass1 / 1
snap-inline-block.htmlPass8 / 8
snap-intended-direction.htmlPass1 / 1
snap-into-covering-area.htmlPass1 / 1
snap-on-focus.htmlPass1 / 1
snap-to-column-scroll-origin.htmlPass4 / 4
snap-to-combination-of-two-elements-1.htmlPass1 / 1
snap-to-combination-of-two-elements-2.htmlPass1 / 1
snap-to-empty-sized-element.htmlPass1 / 1
snap-to-transformed-target.htmlPass3 / 3
snap-to-visible-areas-both-pseudo.htmlPass1 / 1
snap-to-visible-areas-both.htmlPass1 / 1
snap-to-visible-areas-margin-both.htmlPass1 / 1
snap-to-visible-areas-margin-x-axis.htmlPass1 / 1
snap-to-visible-areas-margin-y-axis.htmlPass1 / 1
snap-to-visible-areas-x-axis.htmlPass1 / 1
snap-to-visible-areas-y-axis.htmlPass1 / 1
snap-to-zero-height-interior-area.htmlPass3 / 3
snapevent-constructor.htmlPass4 / 4
unreachable-snap-positions-001.htmlPass1 / 1
unreachable-snap-positions-002.htmlPass4 / 4
unreachable-snap-positions-003.htmlPass1 / 1
unreachable-snap-positions-004.htmlPass1 / 1
unrelated-gesture-scroll-during-snap.htmlPass2 / 2

Tentative tests

TestResultSubtestsKindDescription
scroll-initial-target/scroll-initial-target-aligns-with-snap-align.tentative.htmlPass1 / 1
scroll-initial-target/scroll-initial-target-display-toggled.tentative.htmlPass2 / 2
scroll-initial-target/scroll-initial-target-nested-container.tentative.htmlPass4 / 4
scroll-initial-target/scroll-initial-target-root.tentative.htmlPass1 / 1
scroll-initial-target/scroll-initial-target-rtl.tentative.htmlPass1 / 1
scroll-initial-target/scroll-initial-target-shadow-dom.tentative.htmlPass1 / 1
scroll-initial-target/scroll-initial-target-span.tentative.htmlFail0 / 1TEST BUGcompares the scrollTop of the scroller with the offsetTop of the target, which is rounded to an integer: the target is 127.5px down (after a spacer of 150% of the 85px scrollport) and the scroller is scrolled to 127.5px, offsetTop is 128; passes in Chrome only, whose scroll positions are snapped to whole pixels
scroll-initial-target/scroll-initial-target-with-anchor-navigation.tentative.htmlPass1 / 1
scroll-initial-target/scroll-initial-target-with-hash-fragment-navigation.tentative.htmlPass1 / 1
scroll-initial-target/scroll-initial-target-with-scroll-snap.tentative.htmlPass1 / 1
scroll-initial-target/scroll-initial-target-with-scroll-start-root.tentative.htmlPass1 / 1
scroll-initial-target/scroll-initial-target-with-scroll-start.tentative.htmlPass1 / 1
scroll-initial-target/scroll-initial-target-with-text-fragment-navigation.tentative.htmlPass1 / 1
scroll-initial-target/scroll-initial-target-with-user-programmatic-scroll.tentative.htmlPass2 / 2
scroll-initial-target/scroll-initial-target.tentative.htmlPass1 / 1
snap-after-relayout/instant-resnap-to-target.tentative.htmlPass1 / 1
snap-events/scrollsnapchange/scrollsnapchange-after-layout-change.tentative.htmlPass4 / 4
snap-events/scrollsnapchange/scrollsnapchange-on-interrupted-scroll.tentative.htmlPass1 / 1
snap-events/scrollsnapchange/scrollsnapchange-on-programmatic-root-scroll.tentative.htmlPass3 / 3
snap-events/scrollsnapchange/scrollsnapchange-on-programmatic-scroll.tentative.htmlPass3 / 3
snap-events/scrollsnapchange/scrollsnapchange-on-user-root-scroll.tentative.htmlPass6 / 6
snap-events/scrollsnapchange/scrollsnapchange-on-user-scroll.tentative.htmlPass6 / 6
snap-events/scrollsnapchange/scrollsnapchange-scrolling-non-snapping-axis.tentative.htmlPass2 / 2
snap-events/scrollsnapchange/scrollsnapchange-with-proximity-strictness.tentative.htmlPass1 / 1
snap-events/scrollsnapchanging/scrollsnapchanging-after-layout-change.tentative.htmlPass1 / 1
snap-events/scrollsnapchanging/scrollsnapchanging-on-fast-scroll.tentative.htmlPass1 / 1
snap-events/scrollsnapchanging/scrollsnapchanging-on-programmatic-root-scroll.tentative.htmlPass3 / 3
snap-events/scrollsnapchanging/scrollsnapchanging-on-programmatic-scroll.tentative.htmlPass3 / 3
snap-events/scrollsnapchanging/scrollsnapchanging-on-user-root-scroll.tentative.htmlPass7 / 7
snap-events/scrollsnapchanging/scrollsnapchanging-on-user-scroll.tentative.htmlPass7 / 7
snap-events/snap-events-with-pseudo-target.tentative.htmlPass2 / 2

Reftests

TestResultVariantsKindDescription
large-scroll-margin-001.htmlPass1 / 1
scroll-snap-root-001.htmlPass1 / 1
scroll-snap-root-002.htmlPass1 / 1
scroll-snap-root-003.htmlPass1 / 1
scroll-target-align-001.htmlFail0 / 1NOT IMPLEMENTEDthe optional use of the scroll snap alignment of the target (scroll-snap-align: center) by the scroll to the fragment when the scroll container has scroll-snap-type: none (test flagged may): the target is aligned at the start of the scrollport (with its scroll-margin and the scroll-padding), the green stripe is in the first quarter instead of the second one; only Firefox passes
scroll-target-align-002.htmlFail0 / 1NOT IMPLEMENTEDthe optional use of the scroll snap alignment of the target (scroll-snap-align: center) by scrollIntoView() when the scroll container has scroll-snap-type: none (test flagged may): the target is aligned at the start of the scrollport (with its scroll-margin and the scroll-padding), the green stripe is in the first quarter instead of the second one; only Firefox passes
scroll-target-align-003.htmlPass1 / 1
scroll-target-align-004.htmlPass1 / 1
scroll-target-align-005.htmlPass1 / 1
scroll-target-align-006.htmlPass1 / 1
scroll-target-margin-001.htmlPass1 / 1
scroll-target-margin-002.htmlPass1 / 1
scroll-target-margin-003.htmlPass1 / 1
scroll-target-margin-004.htmlPass1 / 1
scroll-target-padding-001.htmlPass1 / 1
scroll-target-padding-002.htmlPass1 / 1
scroll-target-padding-003.htmlPass1 / 1
scroll-target-snap-001.htmlPass1 / 1
scroll-target-snap-002.htmlPass1 / 1
scroll-target-snap-003.htmlPass1 / 1
snap-after-initial-layout/direction-rtl.htmlPass1 / 1
snap-after-initial-layout/scroll-snap-initial-layout-000.htmlPass1 / 1
snap-after-initial-layout/scroll-snap-writing-mode-000.htmlPass1 / 1
snap-after-initial-layout/writing-mode-horizontal-tb.htmlPass1 / 1
snap-after-initial-layout/writing-mode-vertical-lr.htmlPass1 / 1
snap-after-initial-layout/writing-mode-vertical-rl.htmlPass1 / 1