css/css-layout-api

edit

WPT coverage of the tests of css/css-layout-api 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
Stable770100%
Tentative000–
Reftests128135095%
All135142095%

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: 7

Stable tests

TestResultSubtestsKindDescription
at-supports-rule.https.htmlPass1 / 1
computed-style-layout-function.https.htmlPass5 / 5
crash-multicol.https.htmlPass1 / 1
inline-style-layout-function.https.htmlPass3 / 3
layout-child/inlines-dynamic.https.htmlPass1 / 1
supports.https.htmlPass1 / 1
sync-layout-microtasks.https.htmlPass1 / 1

Reftests

TestResultVariantsKindDescription
auto-block-size/absolute.https.htmlPass1 / 1
auto-block-size/flex.https.htmlPass1 / 1
auto-block-size/floats.https.htmlPass1 / 1
auto-block-size/inflow.https.htmlPass1 / 1
auto-block-size/negative.https.htmlPass1 / 1
baseline/child-baseline.https.htmlFail0 / 1TEST BUGthe test uses the baseline member of the result of layout() and the baseline attribute of LayoutFragment of Chromium, which the draft does not define (https://drafts.css-houdini.org/css-layout-api-1/#interaction-alignment: the baselines of a layout API container are the ones of a block container, in the order of the child fragments; the author-defined baselines are left to a future level): childFragments[0].baseline is undefined, so the layout returns an auto block size of 0 instead of 100
baseline/flex-baseline.https.htmlFail0 / 1TEST BUGthe test uses the baseline member of the result of layout() and the baseline attribute of LayoutFragment of Chromium, which the draft does not define (https://drafts.css-houdini.org/css-layout-api-1/#interaction-alignment: the baselines of a layout API container are the ones of a block container, in the order of the child fragments; the author-defined baselines are left to a future level): the member is ignored, so the baseline of the flex item is the one of its text instead of -50px, and the item is not moved down by the baseline alignment
baseline/no-baseline.https.htmlPass1 / 1
baseline/orthogonal-baseline.https.htmlPass1 / 1
box-tree-registered.https.htmlPass1 / 1
box-tree-unregistered.https.htmlPass1 / 1
child-constraints/available-block-size-htb-vrl.https.htmlPass1 / 1
child-constraints/available-block-size-invalid.https.htmlPass1 / 1
child-constraints/available-block-size-vrl-htb.https.htmlPass1 / 1
child-constraints/available-inline-size-htb-htb.https.htmlPass1 / 1
child-constraints/available-inline-size-invalid.https.htmlPass1 / 1
child-constraints/available-inline-size-vrl-vrl.https.htmlPass1 / 1
child-constraints/available-size-for-percentages-htb-htb.https.htmlPass1 / 1
child-constraints/available-size-for-percentages-htb-vrl.https.htmlPass1 / 1
child-constraints/available-size-for-percentages-invalid.https.htmlFail0 / 1TEST BUGthe draft resolves the percentages of the block axis of a child against zero when neither percentageBlockSize nor availableBlockSize is greater than zero (https://drafts.css-houdini.org/css-layout-api-1/#translate-a-layoutconstraintsoptions-to-internal-constraints: "Otherwise, let the result be zero"), which is followed; the test expects Chromium, which treats the size as indefinite (the percentage block size behaves as auto): the block size of the first child (height: 100%, negative available sizes) is 0 instead of 10px
child-constraints/available-size-for-percentages-vrl-htb.https.htmlPass1 / 1
child-constraints/available-size-for-percentages-vrl-vrl.https.htmlPass1 / 1
child-constraints/fixed-block-size-vrl.https.htmlPass1 / 1
child-constraints/fixed-block-size.https.htmlPass1 / 1
child-constraints/fixed-inline-size-vrl.https.htmlPass1 / 1
child-constraints/fixed-inline-size.https.htmlPass1 / 1
child-constraints/percentage-size-htb-htb.https.htmlPass1 / 1
child-constraints/percentage-size-htb-vrl.https.htmlPass1 / 1
child-constraints/percentage-size-invalid.https.htmlFail0 / 1TEST BUGthe draft resolves the percentages of the block axis of a child against zero when neither percentageBlockSize nor availableBlockSize is greater than zero (https://drafts.css-houdini.org/css-layout-api-1/#translate-a-layoutconstraintsoptions-to-internal-constraints: "Otherwise, let the result be zero"), which is followed; the test expects Chromium, which treats the size as indefinite (the percentage block size behaves as auto): the block size of the first child (height: 100%, percentageBlockSize: -10) is 0 instead of 10px
child-constraints/percentage-size-quirks-mode.https.htmlFail0 / 1TEST BUGthe draft resolves the percentages of the block axis of a child against zero when neither percentageBlockSize nor availableBlockSize is greater than zero (https://drafts.css-houdini.org/css-layout-api-1/#translate-a-layoutconstraintsoptions-to-internal-constraints: "Otherwise, let the result be zero"), which is followed; the test expects Chromium, which treats the size as indefinite (the percentage block size behaves as auto): in the second child (no percentage size), the height: 100% of the grandchild resolves against zero through the percentage height quirk, so the block size of the child is 0 instead of 10px (the first child, whose percentageBlockSize is 50, has the expected size)
child-constraints/percentage-size-vrl-htb.https.htmlPass1 / 1
child-constraints/percentage-size-vrl-vrl.https.htmlPass1 / 1
constraints-data-function-failure.https.htmlPass1 / 1
constraints-data-sab-failure.https.htmlPass1 / 1
constraints-data.https.htmlPass1 / 1
constraints/fixed-block-size-absolute-left-right-vrl.https.htmlPass1 / 1
constraints/fixed-block-size-absolute-none.https.htmlPass1 / 1
constraints/fixed-block-size-absolute-top-bottom.https.htmlPass1 / 1
constraints/fixed-block-size-block-none-vrl.https.htmlPass1 / 1
constraints/fixed-block-size-block-none.https.htmlPass1 / 1
constraints/fixed-block-size-fixed-max.https.htmlPass1 / 1
constraints/fixed-block-size-fixed-min.https.htmlPass1 / 1
constraints/fixed-block-size-fixed-vrl.https.htmlPass1 / 1
constraints/fixed-block-size-fixed.https.htmlPass1 / 1
constraints/fixed-block-size-flex-basis-vrl.https.htmlPass1 / 1
constraints/fixed-block-size-flex-column-basis.https.htmlPass1 / 1
constraints/fixed-block-size-flex-column-grow.https.htmlPass1 / 1
constraints/fixed-block-size-flex-column-none.https.htmlPass1 / 1
constraints/fixed-block-size-flex-column-stretch-vrl.https.htmlPass1 / 1
constraints/fixed-block-size-flex-grow-vrl.https.htmlPass1 / 1
constraints/fixed-block-size-flex-none.https.htmlPass1 / 1
constraints/fixed-block-size-flex-percentage-indefinite.https.htmlPass1 / 1
constraints/fixed-block-size-flex-stretch-max.https.htmlPass1 / 1
constraints/fixed-block-size-flex-stretch.https.htmlPass1 / 1
constraints/fixed-block-size-grid-none.https.htmlPass1 / 1
constraints/fixed-block-size-grid-stretch-max.https.htmlPass1 / 1
constraints/fixed-block-size-grid-stretch.https.htmlPass1 / 1
constraints/fixed-block-size-grid-vrl.https.htmlPass1 / 1
constraints/fixed-block-size-percentage-indefinite.https.htmlPass1 / 1
constraints/fixed-block-size-percentage-quirks-mode.https.htmlPass1 / 1
constraints/fixed-block-size-percentage-vrl.https.htmlPass1 / 1
constraints/fixed-block-size-percentage.https.htmlPass1 / 1
constraints/fixed-block-size-quirky-body.https.htmlPass1 / 1
constraints/fixed-inline-size-absolute-left-right.https.htmlPass1 / 1
constraints/fixed-inline-size-absolute-top-bottom-vrl.https.htmlPass1 / 1
constraints/fixed-inline-size-block-auto-avoid-floats-vlr.https.htmlPass1 / 1
constraints/fixed-inline-size-block-auto-avoid-floats.https.htmlPass1 / 1
constraints/fixed-inline-size-block-auto-vlr.https.htmlPass1 / 1
constraints/fixed-inline-size-block-auto.https.htmlPass1 / 1
constraints/fixed-inline-size-fixed-vrl.https.htmlPass1 / 1
constraints/fixed-inline-size-fixed.https.htmlPass1 / 1
constraints/fixed-inline-size-flex-grow-column-vrl.https.htmlPass1 / 1
constraints/fixed-inline-size-flex-grow.https.htmlPass1 / 1
constraints/fixed-inline-size-grid.https.htmlPass1 / 1
constraints/fixed-inline-size-percentage-vlr.https.htmlPass1 / 1
constraints/fixed-inline-size-percentage.https.htmlPass1 / 1
edges/all.https.htmlPass1 / 1
edges/border-htb-rtl.https.htmlPass1 / 1
edges/border-htb.https.htmlPass1 / 1
edges/border-vlr-rtl.https.htmlPass1 / 1
edges/border-vlr.https.htmlPass1 / 1
edges/border-vrl-rtl.https.htmlPass1 / 1
edges/border-vrl.https.htmlPass1 / 1
edges/padding-htb-rtl.https.htmlPass1 / 1
edges/padding-htb.https.htmlPass1 / 1
edges/padding-vlr-rtl.https.htmlPass1 / 1
edges/padding-vlr.https.htmlPass1 / 1
edges/padding-vrl-rtl.https.htmlPass1 / 1
edges/padding-vrl.https.htmlPass1 / 1
edges/scrollbar.https.htmlPass1 / 1
fallback-intrinsic-sizes/bad-return.https.htmlPass1 / 1
fallback-intrinsic-sizes/constructor-error.https.htmlPass1 / 1
fallback-intrinsic-sizes/error.https.htmlPass1 / 1
fallback-intrinsic-sizes/invalid-child.https.htmlPass1 / 1
fallback-intrinsic-sizes/no-promise.https.htmlFail0 / 1TEST BUGthe callback returns a value that is not a promise, which the draft accepts ("If value is a promise: [run a work queue]. Otherwise: Let intrinsicSizesValue be value", https://drafts.css-houdini.org/css-layout-api-1/#invoke-an-intrinsic-sizes-callback) and which is followed; the test expects Chromium, which falls back to the flow layout: the sizes of intrinsicSizes() and the result of layout() (no child fragment, an auto block size of 0) are used, so the box is 0px tall instead of the 100px of its child
fallback-intrinsic-sizes/unresolved-promise.https.htmlPass1 / 1
fallback-layout/bad-return.https.htmlPass1 / 1
fallback-layout/constructor-error.https.htmlPass1 / 1
fallback-layout/error.https.htmlPass1 / 1
fallback-layout/invalid-child.https.htmlPass1 / 1
fallback-layout/invalid-fragment.https.htmlPass1 / 1
fallback-layout/no-promise.https.htmlFail0 / 1TEST BUGthe callback returns a value that is not a promise, which the draft accepts ("If value is a promise: [run a work queue]. Otherwise: Let fragmentResultValue be value", https://drafts.css-houdini.org/css-layout-api-1/#invoke-a-layout-callback) and which is followed; the test expects Chromium, which falls back to the flow layout: the result {autoBlockSize: 50} is used, so the box is 50px tall, without the fragment of its child, instead of the 100px of the flow layout
fallback-layout/unresolved-promise.https.htmlPass1 / 1
fragment-data-function-failure.https.htmlPass1 / 1
fragment-data-immutable.https.htmlPass1 / 1
fragment-data-sab-failure.https.htmlPass1 / 1
fragment-data.https.htmlPass1 / 1
intrinsic-sizes/absolute.https.htmlPass1 / 1
intrinsic-sizes/child-replaced-percentage-01.https.htmlPass1 / 1
intrinsic-sizes/child-replaced-percentage-02.https.htmlPass1 / 1
intrinsic-sizes/child-size-01.https.htmlPass1 / 1
intrinsic-sizes/child-size-02.https.htmlPass1 / 1
intrinsic-sizes/child-size-03.https.htmlPass1 / 1
intrinsic-sizes/child-size-contribution.https.htmlPass1 / 1
intrinsic-sizes/content-size.https.htmlPass1 / 1
intrinsic-sizes/floats.https.htmlPass1 / 1
intrinsic-sizes/invalid-min-max.https.htmlPass1 / 1
intrinsic-sizes/negative-max.https.htmlPass1 / 1
intrinsic-sizes/negative-min.https.htmlPass1 / 1
layout-child/absolute.https.htmlPass1 / 1
layout-child/before-after.https.htmlPass1 / 1
layout-child/fixed.https.htmlPass1 / 1
layout-child/float.https.htmlPass1 / 1
layout-child/inflow.https.htmlPass1 / 1
layout-child/inlines.https.htmlPass1 / 1
layout-child/text-01.https.htmlPass1 / 1
layout-child/text-02.https.htmlPass1 / 1
position-fragment/htb-ltr.https.htmlPass1 / 1
position-fragment/htb-rtl.https.htmlPass1 / 1
position-fragment/vlr-ltr.https.htmlPass1 / 1
position-fragment/vlr-rtl.https.htmlPass1 / 1
position-fragment/vrl-ltr.https.htmlPass1 / 1
position-fragment/vrl-rtl.https.htmlPass1 / 1
style-map-multi.https.htmlPass1 / 1
style-map.https.htmlPass1 / 1