aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/wpt/meta-legacy-layout/FileAPI/BlobURL/cross-partition.tentative.https.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/FileAPI/idlharness.any.js.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/FileAPI/idlharness.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/FileAPI/idlharness.worker.js.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/content-security-policy/unsafe-eval/eval-blocked-in-about-blank-iframe.html.ini4
-rw-r--r--tests/wpt/meta-legacy-layout/content-security-policy/wasm-unsafe-eval/default-src-blocks-wasm.any.js.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/content-security-policy/wasm-unsafe-eval/default-src-unsafe-eval-allows-wasm.any.js.ini9
-rw-r--r--tests/wpt/meta-legacy-layout/content-security-policy/wasm-unsafe-eval/default-src-wasm-unsafe-eval-allows-wasm.any.js.ini9
-rw-r--r--tests/wpt/meta-legacy-layout/content-security-policy/wasm-unsafe-eval/postMessage-wasm-module.html.ini4
-rw-r--r--tests/wpt/meta-legacy-layout/content-security-policy/wasm-unsafe-eval/script-src-blocks-wasm.any.js.ini11
-rw-r--r--tests/wpt/meta-legacy-layout/content-security-policy/wasm-unsafe-eval/script-src-spv-asynch.any.js.ini16
-rw-r--r--tests/wpt/meta-legacy-layout/content-security-policy/wasm-unsafe-eval/script-src-unsafe-eval-allows-wasm.any.js.ini9
-rw-r--r--tests/wpt/meta-legacy-layout/content-security-policy/wasm-unsafe-eval/script-src-wasm-unsafe-eval-allows-wasm.any.js.ini9
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/abspos/abspos-containing-block-initial-009e.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/abspos/static-fixed-inside-abspos.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/abspos/table-caption-is-containing-block-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/abspos/table-caption-passes-abspos-up-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/backgrounds/background-root-023.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/box-display/containing-block-007.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/box-display/containing-block-010.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/box-display/containing-block-021.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/floats-clear/clear-clearance-calculation-004.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/floats-clear/clear-on-parent-with-margins-no-clearance.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/floats-clear/clear-with-top-margin-after-cleared-empty-block.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/floats-clear/floats-041.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/floats-clear/margin-collapse-clear-015.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/floats/float-under-flatten-under-preserve-3d.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/generated-content/before-after-positioned-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/margin-padding-clear/margin-collapse-004.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/margin-padding-clear/margin-collapse-038.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/margin-padding-clear/margin-collapse-039.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/margin-padding-clear/margin-collapse-040.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/margin-padding-clear/margin-collapse-041.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/margin-padding-clear/margin-collapse-103.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/normal-flow/inline-replaced-height-010.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/normal-flow/inline-replaced-height-011.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/normal-flow/inline-replaced-width-016.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/normal-flow/inline-replaced-width-017.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/normal-flow/margin-collapsing-dynamic.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/positioning/abspos-001.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/positioning/abspos-008.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/positioning/abspos-013.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/positioning/abspos-014.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/positioning/abspos-015.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/positioning/abspos-016.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/positioning/abspos-017.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/positioning/abspos-018.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/positioning/abspos-019.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/positioning/abspos-020.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/positioning/abspos-022.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/positioning/position-fixed-001.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/tables/height-table-cell-001.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/tables/height-width-inline-table-001.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/tables/height-width-inline-table-001a.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/tables/height-width-inline-table-001b.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/tables/height-width-inline-table-001c.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/tables/height-width-inline-table-001d.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/tables/height-width-inline-table-001e.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/tables/height-width-table-001.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/tables/height-width-table-001a.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/tables/height-width-table-001b.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/tables/height-width-table-001c.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/tables/height-width-table-001d.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/tables/padding-applies-to-013a.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/tables/separated-border-model-003a.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/tables/separated-border-model-004a.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/tables/separated-border-model-004b.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/tables/separated-border-model-004c.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/tables/table-height-algorithm-008a.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/tables/table-height-algorithm-008b.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/tables/table-height-algorithm-008c.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/text/white-space-008.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/visuren/anonymous-boxes-001a.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/visuren/anonymous-boxes-001b.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/visuren/left-offset-position-fixed-001.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/visuren/right-offset-position-fixed-001.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-001.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-002.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-003.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-004.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-005.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-006.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-007.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-008.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-009.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-010.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-011.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-012.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-014.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-018.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-019.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-abspos-001.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-abspos-002.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-abspos-003.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-abspos-004.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-abspos-005.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-abspos-007.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-dynamic-001.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-animation.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-blended-element-interposed.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-blended-element-with-transparent-pixels.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-blended-with-3D-transform.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-blended-with-transform-and-perspective.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-blending-with-sibling.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-canvas-parent.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-canvas-sibling.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-mask.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-overflowing-child-of-blended-element.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-parent-element-overflow-hidden-and-border-radius-2.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-parent-element-overflow-hidden-and-border-radius.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-parent-with-3D-transform.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-script.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-sibling-with-3D-transform.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-simple.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-stacking-context-creates-isolation.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-align/animation/column-gap-interpolation.html.ini360
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-align/animation/row-gap-interpolation.html.ini360
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-align/gaps/column-gap-animation-001.html.ini4
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-align/gaps/column-gap-parsing-001.html.ini52
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-align/gaps/gap-animation-001.html.ini4
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-align/gaps/gap-animation-004.html.ini4
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-align/gaps/gap-normal-computed-001.html.ini19
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-align/gaps/gap-parsing-001.html.ini73
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-align/gaps/gap-parsing-002.html.ini48
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-align/gaps/grid-column-gap-parsing-001.html.ini52
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-align/gaps/grid-gap-parsing-001.html.ini73
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-align/gaps/grid-row-gap-parsing-001.html.ini52
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-align/gaps/row-gap-animation-001.html.ini4
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-align/gaps/row-gap-parsing-001.html.ini52
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-align/inheritance.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-align/parsing/column-gap-computed.html.ini16
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-align/parsing/column-gap-valid.html.ini19
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-align/parsing/gap-computed.html.ini34
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-align/parsing/gap-shorthand.html.ini37
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-align/parsing/gap-valid.html.ini28
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-align/parsing/grid-column-gap-computed.html.ini15
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-align/parsing/grid-column-gap-valid.html.ini18
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-align/parsing/grid-gap-computed.html.ini33
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-align/parsing/grid-gap-shorthand.html.ini36
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-align/parsing/grid-gap-valid.html.ini27
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-align/parsing/grid-row-gap-computed.html.ini18
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-align/parsing/grid-row-gap-valid.html.ini15
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-align/parsing/row-gap-computed.html.ini19
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-align/parsing/row-gap-valid.html.ini16
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-align/self-alignment/block-justify-self.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-animations/animation-canceled-by-parent-details-element-being-closed.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-animations/display-none-to-display-block-dont-cancel.tentative.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-animations/display-none-to-display-block.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-backgrounds/background-clip/clip-text-animated-text.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-backgrounds/background-gradient-interpolation-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-backgrounds/background-origin/origin-border-box_with_position.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-backgrounds/border-image-017.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-backgrounds/border-image-018.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-backgrounds/border-image-019.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-backgrounds/border-image-020.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-backgrounds/border-image-slice-001.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-backgrounds/border-image-slice-002.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-backgrounds/border-image-slice-fill-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-backgrounds/border-image-slice-fill-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-backgrounds/box-shadow-029.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-backgrounds/css3-background-origin-border-box.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-backgrounds/css3-box-shadow.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-backgrounds/inset-box-shadow-stacking-context-scroll.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-backgrounds/parsing/background-image-computed.sub.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-cascade/scope-featureless.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-cascade/scope-part.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-color/animation/opacity-animation-ending-correctly-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-color/composited-filters-under-opacity.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-color/filters-under-will-change-opacity.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-color/parsing/color-computed-relative-color.html.ini48
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-color/parsing/color-valid-relative-color.html.ini48
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-color/t32-opacity-offscreen-b.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-color/t32-opacity-offscreen-with-alpha-c.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-color/t32-opacity-zorder-c.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-conditional/container-queries/no-layout-containment-abspos-dynamic.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-conditional/container-queries/no-layout-containment-fixedpos-dynamic.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-conditional/container-queries/no-layout-containment-fixedpos.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-conditional/container-queries/scrollbar-container-units-block.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-display/parsing/tentative/display-computed.html.ini18
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-display/parsing/tentative/display-valid.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-flexbox/abspos/dynamic-align-self-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-flexbox/auto-margins-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-flexbox/flex-aspect-ratio-img-column-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-flexbox/flex-aspect-ratio-img-column-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-flexbox/flex-aspect-ratio-img-column-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-flexbox/flex-aspect-ratio-img-column-006.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-flexbox/flex-aspect-ratio-img-column-007.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-flexbox/flex-aspect-ratio-img-column-009.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-flexbox/flex-aspect-ratio-img-row-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-flexbox/flex-aspect-ratio-img-row-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-flexbox/flex-aspect-ratio-img-row-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-flexbox/flex-aspect-ratio-img-row-014.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-flexbox/flex-aspect-ratio-img-row-017.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-flexbox/flex-basis-item-margins-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-flexbox/flex-box-wrap.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-flexbox/flex-item-contains-size-layout-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-flexbox/flex-item-max-width-min-content.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-flexbox/flex-item-min-width-min-content.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-height-flex-items-001.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-height-flex-items-002.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-height-flex-items-004.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-height-flex-items-005.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-height-flex-items-006.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-height-flex-items-007.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-height-flex-items-008.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-height-flex-items-011.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-height-flex-items-015.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-height-flex-items-019.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-width-flex-items-004.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-width-flex-items-005.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-width-flex-items-006.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-width-flex-items-007.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-width-flex-items-008.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-width-flex-items-009.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-width-flex-items-010.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-flexbox/flexbox-safe-overflow-position-006.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-flexbox/flexbox-writing-mode-slr-row-mix.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-flexbox/flexbox-writing-mode-slr-rtl.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-flexbox/flexbox-writing-mode-slr.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-flexbox/flexbox-writing-mode-srl-row-mix.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-flexbox/flexbox-writing-mode-srl-rtl.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-flexbox/flexbox-writing-mode-srl.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-flexbox/grandchild-span-height.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-flexbox/grid-flex-item-006.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-flexbox/grid-flex-item-007.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-flexbox/image-items-flake-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-flexbox/intrinsic-size/row-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-flexbox/stretch-obeys-min-max-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-flexbox/table-as-item-stretch-cross-size-4.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-flexbox/table-as-item-wide-content.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-fonts/font-size-adjust-006.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-fonts/font-size-adjust-007.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-fonts/font-size-adjust-008.xht.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-fonts/generic-family-keywords-001.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-fonts/parsing/font-face-size-adjust.html.ini18
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-masking/clip/clip-absolute-positioned-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-masking/clip/clip-absolute-positioned-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-masking/clip/clip-negative-values-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-masking/clip/clip-negative-values-004.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-masking/clip/clip-not-absolute-positioned-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-masking/clip/clip-not-absolute-positioned-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-masking/clip/clip-not-absolute-positioned-004.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-masking/clip/clip-rect-auto-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-masking/clip/clip-rect-auto-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-masking/clip/clip-rect-auto-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-masking/clip/clip-rect-auto-004.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-masking/clip/clip-rect-auto-005.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-masking/clip/clip-rect-auto-006.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-masking/clip/clip-rect-comma-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-outline/outline-width-rounding.tentative.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-overflow/line-clamp/line-clamp-auto-033.tentative.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-overflow/line-clamp/line-clamp-auto-034.tentative.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-overflow/overflow-clip-margin-010.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-overflow/overflow-clip-margin-011.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-overflow/overflow-hidden-resize-with-stacking-context-child.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-overflow/overflow-recalc-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-overflow/scrollbar-gutter-fixedpos-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-overflow/scrollbar-gutter-fixedpos-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-overflow/scrollbar-gutter-fixedpos-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-overflow/scrollbar-gutter-fixedpos-004.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-position/fixed-z-index-blend.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-position/hypothetical-dynamic-change-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-position/hypothetical-dynamic-change-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-position/position-absolute-dynamic-auto-overflow.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-position/position-fixed-scroll-nested-fixed.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-position/position-fixed-scroll-overlap.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-bottom-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-escape-scroller-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-escape-scroller-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-escape-scroller-004.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-fixed-ancestor-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-fixed-ancestor-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-in-fixed-container.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-left-004.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-left-005.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-left-006.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-margins-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-stacking-context-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-top-004.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-top-005.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-top-006.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-position/z-index-blend-will-change-overlapping-layers.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-pseudo/parsing/marker-supported-properties.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-sizing/aspect-ratio/box-sizing-dimensions.html.ini18
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-sizing/aspect-ratio/box-sizing-squashed.html.ini42
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-sizing/aspect-ratio/grid-aspect-ratio-023.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-sizing/block-size-with-min-or-max-content-2.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-sizing/block-size-with-min-or-max-content-3.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-sizing/block-size-with-min-or-max-content-4.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-sizing/block-size-with-min-or-max-content-5.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-sizing/block-size-with-min-or-max-content-6.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-sizing/block-size-with-min-or-max-content-7.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-sizing/fit-content-contribution-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-sizing/intrinsic-percent-non-replaced-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-sizing/replaced-max-height-min-content.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-sizing/replaced-max-width-min-content.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-sizing/replaced-min-height-min-content.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-sizing/replaced-min-width-min-content.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-sizing/svg-no-ar-max-height-min-content.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-sizing/svg-no-ar-min-height-min-content.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-tables/height-distribution/extra-height-given-to-all-row-groups-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-tables/height-distribution/extra-height-given-to-all-row-groups-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-tables/height-distribution/extra-height-given-to-all-row-groups-005.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-tables/height-distribution/percentage-sizing-of-table-cell-children-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-tables/height-distribution/percentage-sizing-of-table-cell-children-004.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-tables/height-distribution/percentage-sizing-of-table-cell-children-005.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-tables/height-distribution/percentage-sizing-of-table-cell-children-006.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-tables/table-has-box-sizing-border-box-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text-decor/text-decoration-underline-position-vertical-ja.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text-decor/text-decoration-underline-position-vertical.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text-decor/text-shadow/basic-negcoord.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text-decor/text-shadow/basic-opacity.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text-decor/text-shadow/basic.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text-decor/text-shadow/color-inherit.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text-decor/text-shadow/multiple-noblur.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text-decor/text-shadow/quirks-decor-noblur.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text-decor/text-shadow/standards-decor-noblur-2.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text-decor/text-shadow/standards-decor-noblur.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text-decor/text-underline-position-vertical-ja.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text-decor/text-underline-position-vertical.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/hyphens/hyphens-auto-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/line-break/line-break-anywhere-016.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/line-break/line-break-anywhere-and-white-space-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/line-break/line-break-anywhere-and-white-space-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/line-break/line-break-anywhere-and-white-space-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/line-break/line-break-anywhere-and-white-space-004.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/line-break/line-break-anywhere-and-white-space-006.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/line-break/line-break-anywhere-and-white-space-007.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/line-breaking/line-breaking-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/line-breaking/line-breaking-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/line-breaking/line-breaking-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/line-breaking/line-breaking-004.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/line-breaking/line-breaking-005.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/line-breaking/line-breaking-006.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/line-breaking/line-breaking-007.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/line-breaking/line-breaking-008.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/line-breaking/line-breaking-010.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/line-breaking/line-breaking-ic-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/overflow-wrap/overflow-wrap-anywhere-004.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/overflow-wrap/overflow-wrap-min-content-size-004.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/overflow-wrap/overflow-wrap-min-content-size-008.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/text-transform/text-transform-fullwidth-006.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/text-transform/text-transform-fullwidth-007.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/white-space/break-spaces-tab-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/white-space/break-spaces-tab-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/white-space/break-spaces-with-ideographic-space-004.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/white-space/break-spaces-with-ideographic-space-007.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/white-space/full-width-leading-spaces-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/white-space/full-width-leading-spaces-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/white-space/full-width-leading-spaces-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/white-space/full-width-leading-spaces-005.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/white-space/pre-wrap-010.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/white-space/pre-wrap-015.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/white-space/pre-wrap-016.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/white-space/pre-wrap-leading-spaces-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/white-space/pre-wrap-leading-spaces-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/white-space/pre-wrap-leading-spaces-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/white-space/pre-wrap-leading-spaces-012.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/white-space/pre-wrap-tab-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/white-space/pre-wrap-tab-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/white-space/trailing-ideographic-space-017.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/white-space/trailing-ideographic-space-018.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/white-space/trailing-ideographic-space-019.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/white-space/trailing-ideographic-space-020.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/white-space/trailing-ideographic-space-021.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/white-space/trailing-ideographic-space-022.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/white-space/trailing-ideographic-space-023.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/white-space/trailing-ideographic-space-024.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/white-space/trailing-ideographic-space-025.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/white-space/trailing-ideographic-space-break-spaces-008.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/white-space/white-space-intrinsic-size-015.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/white-space/white-space-intrinsic-size-016.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/white-space/white-space-intrinsic-size-017.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/white-space/white-space-intrinsic-size-018.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/white-space/white-space-intrinsic-size-019.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/white-space/white-space-intrinsic-size-020.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/word-break/word-break-break-all-011.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/word-break/word-break-break-all-inline-008.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-text/word-break/word-break-min-content-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-transforms/animation/transform-box-will-change-transform-layer.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-transforms/animation/transform-box.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-transforms/css-transforms-3d-on-anonymous-block-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-transforms/css3-transform-scale-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-transforms/css3-transform-scale.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-transforms/perspective-containing-block-dynamic-1a.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-transforms/preserve3d-and-flattening-z-order-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-transforms/preserve3d-and-flattening-z-order-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-transforms/preserve3d-and-flattening-z-order-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-transforms/preserve3d-and-flattening-z-order-004.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-transforms/scalex.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-transforms/scaley.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-transforms/scrollable-hidden-3d-transform-z.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-transforms/scrollable-scroll-3d-transform-z.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-transforms/transform-containing-block-dynamic-1a.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-transforms/transform-stacking-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-transforms/transform-stacking-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-transforms/transform-stacking-004.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-transforms/translate.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-ui/box-sizing-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-ui/box-sizing-026.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-ui/text-overflow-007.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-values/angle-units-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-values/angle-units-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-values/angle-units-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-values/angle-units-004.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-values/angle-units-005.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-values/attr-all-types.html.ini65
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-values/attr-invalid-type-008.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-values/attr-pseudo-elem-invalidation.html.ini18
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-values/calc-positive-fraction-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-values/calc-size/animation/calc-size-height-interpolation.html.ini3492
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-values/calc-size/animation/calc-size-height-interpolation.tentative.html.ini3744
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-values/calc-size/animation/calc-size-interpolation-expansion.html.ini21
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-values/calc-size/animation/calc-size-interpolation-expansion.tentative.html.ini21
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-values/calc-size/animation/calc-size-width-interpolation.html.ini2526
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-values/calc-size/animation/calc-size-width-interpolation.tentative.html.ini2838
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-values/calc-size/calc-size-aspect-ratio-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-values/calc-size/calc-size-aspect-ratio-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-values/calc-size/calc-size-flex-basis-on-column.html.ini93
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-values/calc-size/calc-size-flex-basis-on-row.html.ini90
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-values/calc-size/calc-size-height.html.ini93
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-values/calc-size/calc-size-height.tentative.html.ini96
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-values/calc-size/calc-size-parsing.html.ini126
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-values/calc-size/calc-size-parsing.tentative.html.ini111
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-values/calc-size/calc-size-width.html.ini57
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-values/calc-size/calc-size-width.tentative.html.ini57
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-values/min-max-percentage-length-interpolation.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-values/q-unit-case-insensitivity-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-values/q-unit-case-insensitivity-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/css-variables/variable-css-wide-keywords.html.ini33
-rw-r--r--tests/wpt/meta-legacy-layout/css/cssom-view/MediaQueryList-addListener-handleEvent.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/cssom-view/scrollintoview-containingblock-chain.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/cssom-view/scrollintoview-zero-height-item.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/cssom/link-element-stylesheet-title.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/css/fill-stroke/animation/stroke-color-interpolation.html.ini516
-rw-r--r--tests/wpt/meta-legacy-layout/css/filter-effects/backdrop-filter-backdrop-root-filter.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/filter-effects/backdrop-filter-backdrop-root-mix-blend-mode.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/filter-effects/backdrop-filter-backdrop-root-opacity.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/filter-effects/clip-under-filter-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/filter-effects/clip-under-filter-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/filter-effects/clip-under-filter-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/filter-effects/drop-shadow-currentcolor-dynamic-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/filter-effects/dynamic-filter-changes-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/filter-effects/filter-cb-dynamic-1a.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/filter-effects/filter-cb-dynamic-1b.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/filter-effects/filter-contrast-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/filter-effects/filter-contrast-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/filter-effects/filter-contrast-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/filter-effects/filter-grayscale-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/filter-effects/filter-grayscale-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/filter-effects/filter-grayscale-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/filter-effects/filter-grayscale-004.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/filter-effects/filter-grayscale-005.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/filter-effects/filter-hue_rotate-001-test.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/filter-effects/filter-invert-001-test.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/filter-effects/filter-invert-002-test.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/filter-effects/filter-saturate-001-test.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/filter-effects/filters-drop-shadow-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/filter-effects/filters-drop-shadow-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/filter-effects/filters-grayscale-001-test.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/filter-effects/filters-opacity-001-test.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/filter-effects/filters-sepia-001-test.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/filter-effects/filters-test-brightness-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/filter-effects/filters-test-brightness-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/filter-effects/filters-test-brightness-003.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/filter-effects/fixed-pos-filter-clip-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/filter-effects/fixed-pos-filter-clip-002.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/filter-effects/root-element-with-opacity-filter-001.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/css/selectors/parsing/parse-part.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/dom/idlharness.window.js.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/dom/nodes/moveBefore/tentative/popover-preserve.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/fetch/api/idlharness.any.js.ini70
-rw-r--r--tests/wpt/meta-legacy-layout/fetch/metadata/generated/css-font-face.sub.tentative.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/fullscreen/idlharness.window.js.ini7
-rw-r--r--tests/wpt/meta-legacy-layout/gamepad/idlharness.window.js.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/empty-iframe-load-event.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-src-aboutblank-navigate-immediately.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/a-click.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/manual/filters/canvas-fillStyle-opacity.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/manual/filters/canvas-globalAlpha.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/manual/imagebitmap/canvas-createImageBitmap-resize.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/manual/imagebitmap/createImageBitmap-invalid-args.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/manual/imagebitmap/createImageBitmap-serializable.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-Blob.html.ini208
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-cloned.html.ini208
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-image.html.ini208
-rw-r--r--tests/wpt/meta-legacy-layout/html/canvas/offscreen/canvas-host/2d.canvas.host.size.large.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/dom/idlharness.https.html.ini48
-rw-r--r--tests/wpt/meta-legacy-layout/html/dom/idlharness.worker.js.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/html/infrastructure/safe-passing-of-structured-data/cross-origin-transfer-resizable-arraybuffer.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/infrastructure/safe-passing-of-structured-data/messagechannel.any.js.ini60
-rw-r--r--tests/wpt/meta-legacy-layout/html/infrastructure/safe-passing-of-structured-data/window-postmessage.window.js.ini30
-rw-r--r--tests/wpt/meta-legacy-layout/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/html/rendering/replaced-elements/the-select-element/select-1-block-size.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/document-metadata/the-meta-element/pragma-directives/http-equiv-enumerated-ascii-case-insensitive.html.ini4
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini1
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-img-element/empty-src-no-current-request.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-img-element/update-the-image-data/current-request-microtask-002.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/forms/the-selectlist-element/selectlist-form-state-restore.tentative.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/interactive-elements/the-dialog-element/non-modal-dialog-layout.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/interactive-elements/the-dialog-element/submit-dialog-close-event.html.ini1
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/module/dynamic-import/code-cache-nonce.html.ini10
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/module/dynamic-import/propagate-nonce-external-classic.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/module/dynamic-import/propagate-nonce-external-module.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/module/dynamic-import/propagate-nonce-inline-classic.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/module/dynamic-import/propagate-nonce-inline-module.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-nonce-classic.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-nonce-module.html.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/module/dynamic-import/v8-code-cache.html.ini31
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/module/instantiation-error-3.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/module/instantiation-error-4.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/module/instantiation-error-5.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/webappapis/scripting/events/event-handler-all-global-events.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/html/webappapis/scripting/events/event-handler-attributes-body-window.html.ini9
-rw-r--r--tests/wpt/meta-legacy-layout/html/webappapis/scripting/events/event-handler-attributes-frameset-window.html.ini9
-rw-r--r--tests/wpt/meta-legacy-layout/html/webappapis/scripting/events/event-handler-attributes-windowless-body.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/js/builtins/weakrefs/cleanup-prevented-with-reference.optional.any.js.ini7
-rw-r--r--tests/wpt/meta-legacy-layout/js/builtins/weakrefs/cleanup-prevented-with-unregister.optional.any.js.ini7
-rw-r--r--tests/wpt/meta-legacy-layout/js/builtins/weakrefs/finalizationregistry-cleanupCallback-gets-a-microtask.optional.any.js.ini7
-rw-r--r--tests/wpt/meta-legacy-layout/js/builtins/weakrefs/finalizationregistry-cleanupCallback-throws-onerror-interaction.optional.window.js.ini2
-rw-r--r--tests/wpt/meta-legacy-layout/js/builtins/weakrefs/gc-has-one-chance-to-call-cleanupCallback-queueMicrotask.optional.any.js.ini7
-rw-r--r--tests/wpt/meta-legacy-layout/js/builtins/weakrefs/gc-has-one-chance-to-call-cleanupCallback-queueMicrotaskMutationObserver.optional.window.js.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/js/builtins/weakrefs/gc-has-one-chance-to-call-cleanupCallback.optional.any.js.ini7
-rw-r--r--tests/wpt/meta-legacy-layout/js/builtins/weakrefs/reentrancy.optional.any.js.ini7
-rw-r--r--tests/wpt/meta-legacy-layout/js/builtins/weakrefs/return-undefined-with-gc.optional.any.js.ini7
-rw-r--r--tests/wpt/meta-legacy-layout/js/builtins/weakrefs/unregister-cleaned-up-cell.optional.any.js.ini7
-rw-r--r--tests/wpt/meta-legacy-layout/permissions/idlharness.any.js.ini12
-rw-r--r--tests/wpt/meta-legacy-layout/resource-timing/test_resource_timing.https.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/selection/move-paragraphboundary-cross-editing-boundary.tentative.html.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/selection/selection-content-visibility-hidden.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/selection/selection-nested-video.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/selection/shadow-dom/select-later-become-slotted-content.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/selection/shadow-dom/select-later-become-slotted-content.tentative.html.ini3
-rw-r--r--tests/wpt/meta-legacy-layout/url/failure.html.ini1
-rw-r--r--tests/wpt/meta-legacy-layout/wasm/jsapi/gc/casts.tentative.any.js.ini5
-rw-r--r--tests/wpt/meta-legacy-layout/wasm/jsapi/gc/exported-object.tentative.any.js.ini5
-rw-r--r--tests/wpt/meta-legacy-layout/wasm/jsapi/gc/i31.tentative.any.js.ini5
-rw-r--r--tests/wpt/meta-legacy-layout/webmessaging/message-channels/close-event/garbage-collected.tentative.any.js.ini6
-rw-r--r--tests/wpt/meta-legacy-layout/webxr/hit-test/idlharness.https.html.ini4
-rw-r--r--tests/wpt/meta-legacy-layout/webxr/idlharness.https.window.js.ini15
-rw-r--r--tests/wpt/meta-legacy-layout/webxr/xrSession_requestReferenceSpace.https.html.ini7
-rw-r--r--tests/wpt/meta/FileAPI/BlobURL/cross-partition.tentative.https.html.ini12
-rw-r--r--tests/wpt/meta/MANIFEST.json10214
-rw-r--r--tests/wpt/meta/css/css-align/self-alignment/block-justify-self.html.ini2
-rw-r--r--tests/wpt/meta/css/css-animations/animation-canceled-by-parent-details-element-being-closed.html.ini3
-rw-r--r--tests/wpt/meta/css/css-animations/display-none-to-display-block-dont-cancel.tentative.html.ini3
-rw-r--r--tests/wpt/meta/css/css-animations/display-none-to-display-block.html.ini2
-rw-r--r--tests/wpt/meta/css/css-backgrounds/background-clip/clip-text-animated-text.html.ini2
-rw-r--r--tests/wpt/meta/css/css-backgrounds/background-gradient-interpolation-003.html.ini2
-rw-r--r--tests/wpt/meta/css/css-backgrounds/parsing/background-image-computed.sub.html.ini3
-rw-r--r--tests/wpt/meta/css/css-cascade/scope-part.html.ini2
-rw-r--r--tests/wpt/meta/css/css-color/parsing/color-computed-relative-color.html.ini48
-rw-r--r--tests/wpt/meta/css/css-color/parsing/color-valid-relative-color.html.ini48
-rw-r--r--tests/wpt/meta/css/css-conditional/container-queries/no-layout-containment-abspos-dynamic.html.ini2
-rw-r--r--tests/wpt/meta/css/css-conditional/container-queries/no-layout-containment-fixedpos-dynamic.html.ini2
-rw-r--r--tests/wpt/meta/css/css-conditional/container-queries/no-layout-containment-fixedpos.html.ini2
-rw-r--r--tests/wpt/meta/css/css-conditional/container-queries/scrollbar-container-units-block.html.ini2
-rw-r--r--tests/wpt/meta/css/css-display/parsing/tentative/display-computed.html.ini18
-rw-r--r--tests/wpt/meta/css/css-display/parsing/tentative/display-valid.html.ini6
-rw-r--r--tests/wpt/meta/css/css-flexbox/flex-item-max-height-min-content.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/flex-item-max-width-min-content.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/flex-item-min-height-min-content.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/flexbox-writing-mode-slr-row-mix.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/flexbox-writing-mode-slr-rtl.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/flexbox-writing-mode-slr.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/flexbox-writing-mode-srl-row-mix.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/flexbox-writing-mode-srl-rtl.html.ini2
-rw-r--r--tests/wpt/meta/css/css-flexbox/flexbox-writing-mode-srl.html.ini2
-rw-r--r--tests/wpt/meta/css/css-fonts/parsing/font-face-size-adjust.html.ini18
-rw-r--r--tests/wpt/meta/css/css-fonts/variations/at-font-face-font-matching.html.ini3
-rw-r--r--tests/wpt/meta/css/css-images/conic-gradient-angle-negative.html.ini2
-rw-r--r--tests/wpt/meta/css/css-images/conic-gradient-angle.html.ini2
-rw-r--r--tests/wpt/meta/css/css-images/conic-gradient-center.html.ini2
-rw-r--r--tests/wpt/meta/css/css-images/multiple-position-color-stop-conic.html.ini2
-rw-r--r--tests/wpt/meta/css/css-images/normalization-conic-2.html.ini2
-rw-r--r--tests/wpt/meta/css/css-images/normalization-conic-degenerate.html.ini2
-rw-r--r--tests/wpt/meta/css/css-images/normalization-conic.html.ini2
-rw-r--r--tests/wpt/meta/css/css-images/out-of-range-color-stop-conic.html.ini2
-rw-r--r--tests/wpt/meta/css/css-images/tiled-conic-gradients.html.ini2
-rw-r--r--tests/wpt/meta/css/css-lists/pseudo-element-remove-update.html.ini2
-rw-r--r--tests/wpt/meta/css/css-outline/outline-width-rounding.tentative.html.ini3
-rw-r--r--tests/wpt/meta/css/css-overflow/line-clamp/line-clamp-auto-033.tentative.html.ini2
-rw-r--r--tests/wpt/meta/css/css-overflow/line-clamp/line-clamp-auto-034.tentative.html.ini2
-rw-r--r--tests/wpt/meta/css/css-pseudo/parsing/marker-supported-properties.html.ini3
-rw-r--r--tests/wpt/meta/css/css-sizing/block-size-with-min-or-max-content-2.html.ini2
-rw-r--r--tests/wpt/meta/css/css-sizing/block-size-with-min-or-max-content-3.html.ini2
-rw-r--r--tests/wpt/meta/css/css-sizing/block-size-with-min-or-max-content-4.html.ini2
-rw-r--r--tests/wpt/meta/css/css-sizing/block-size-with-min-or-max-content-5.html.ini2
-rw-r--r--tests/wpt/meta/css/css-sizing/block-size-with-min-or-max-content-6.html.ini2
-rw-r--r--tests/wpt/meta/css/css-sizing/block-size-with-min-or-max-content-7.html.ini2
-rw-r--r--tests/wpt/meta/css/css-sizing/replaced-max-height-min-content.html.ini2
-rw-r--r--tests/wpt/meta/css/css-sizing/replaced-max-width-min-content.html.ini2
-rw-r--r--tests/wpt/meta/css/css-sizing/replaced-min-height-min-content.html.ini2
-rw-r--r--tests/wpt/meta/css/css-sizing/replaced-min-width-min-content.html.ini2
-rw-r--r--tests/wpt/meta/css/css-sizing/svg-no-ar-max-height-min-content.html.ini2
-rw-r--r--tests/wpt/meta/css/css-sizing/svg-no-ar-min-height-min-content.html.ini2
-rw-r--r--tests/wpt/meta/css/css-text-decor/text-decoration-underline-position-vertical-ja.html.ini2
-rw-r--r--tests/wpt/meta/css/css-text-decor/text-decoration-underline-position-vertical.html.ini2
-rw-r--r--tests/wpt/meta/css/css-text-decor/text-underline-position-vertical-ja.html.ini2
-rw-r--r--tests/wpt/meta/css/css-text-decor/text-underline-position-vertical.html.ini2
-rw-r--r--tests/wpt/meta/css/css-transforms/animation/transform-box-will-change-transform-layer.html.ini2
-rw-r--r--tests/wpt/meta/css/css-transforms/animation/transform-box.html.ini2
-rw-r--r--tests/wpt/meta/css/css-values/attr-all-types.html.ini65
-rw-r--r--tests/wpt/meta/css/css-values/attr-invalid-type-008.html.ini2
-rw-r--r--tests/wpt/meta/css/css-values/attr-pseudo-elem-invalidation.html.ini18
-rw-r--r--tests/wpt/meta/css/css-values/calc-size/animation/calc-size-height-interpolation.html.ini3492
-rw-r--r--tests/wpt/meta/css/css-values/calc-size/animation/calc-size-height-interpolation.tentative.html.ini3744
-rw-r--r--tests/wpt/meta/css/css-values/calc-size/animation/calc-size-interpolation-expansion.html.ini21
-rw-r--r--tests/wpt/meta/css/css-values/calc-size/animation/calc-size-interpolation-expansion.tentative.html.ini21
-rw-r--r--tests/wpt/meta/css/css-values/calc-size/animation/calc-size-width-interpolation.html.ini2526
-rw-r--r--tests/wpt/meta/css/css-values/calc-size/animation/calc-size-width-interpolation.tentative.html.ini2838
-rw-r--r--tests/wpt/meta/css/css-values/calc-size/calc-size-aspect-ratio-001.html.ini2
-rw-r--r--tests/wpt/meta/css/css-values/calc-size/calc-size-aspect-ratio-002.html.ini2
-rw-r--r--tests/wpt/meta/css/css-values/calc-size/calc-size-flex-basis-on-column.html.ini90
-rw-r--r--tests/wpt/meta/css/css-values/calc-size/calc-size-flex-basis-on-row.html.ini93
-rw-r--r--tests/wpt/meta/css/css-values/calc-size/calc-size-height.html.ini93
-rw-r--r--tests/wpt/meta/css/css-values/calc-size/calc-size-height.tentative.html.ini96
-rw-r--r--tests/wpt/meta/css/css-values/calc-size/calc-size-parsing.html.ini126
-rw-r--r--tests/wpt/meta/css/css-values/calc-size/calc-size-parsing.tentative.html.ini111
-rw-r--r--tests/wpt/meta/css/css-values/calc-size/calc-size-width.html.ini57
-rw-r--r--tests/wpt/meta/css/css-values/calc-size/calc-size-width.tentative.html.ini57
-rw-r--r--tests/wpt/meta/css/css-values/cap-invalidation.html.ini3
-rw-r--r--tests/wpt/meta/css/css-values/integer_interpolation_round_half_towards_positive_infinity_order.html.ini3
-rw-r--r--tests/wpt/meta/css/css-variables/variable-css-wide-keywords.html.ini33
-rw-r--r--tests/wpt/meta/css/cssom-view/MediaQueryList-extends-EventTarget-interop.html.ini16
-rw-r--r--tests/wpt/meta/css/cssom-view/scrollintoview-containingblock-chain.html.ini3
-rw-r--r--tests/wpt/meta/css/cssom-view/scrollintoview-zero-height-item.html.ini3
-rw-r--r--tests/wpt/meta/css/cssom/link-element-stylesheet-title.html.ini3
-rw-r--r--tests/wpt/meta/css/fill-stroke/animation/stroke-color-interpolation.html.ini516
-rw-r--r--tests/wpt/meta/css/selectors/parsing/parse-part.html.ini6
-rw-r--r--tests/wpt/meta/custom-elements/form-associated/ElementInternals-setFormValue.html.ini3
-rw-r--r--tests/wpt/meta/dom/nodes/moveBefore/tentative/popover-preserve.html.ini3
-rw-r--r--tests/wpt/meta/fetch/metadata/generated/element-img-environment-change.sub.html.ini3
-rw-r--r--tests/wpt/meta/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin.window.js.ini3
-rw-r--r--tests/wpt/meta/html/infrastructure/urls/base-url/document-base-url-window-initiator-is-not-opener.https.window.js.ini1
-rw-r--r--tests/wpt/meta/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini2
-rw-r--r--tests/wpt/meta/html/semantics/embedded-content/the-img-element/empty-src-no-current-request.html.ini3
-rw-r--r--tests/wpt/meta/html/semantics/embedded-content/the-img-element/update-the-image-data/current-request-microtask-002.html.ini3
-rw-r--r--tests/wpt/meta/html/semantics/forms/the-selectlist-element/selectlist-form-state-restore.tentative.html.ini3
-rw-r--r--tests/wpt/meta/html/semantics/scripting-1/the-script-element/module/dynamic-import/microtasks/basic.any.js.ini1
-rw-r--r--tests/wpt/meta/resource-timing/content-type-parsing.html.ini4
-rw-r--r--tests/wpt/meta/selection/move-paragraphboundary-cross-editing-boundary.tentative.html.ini6
-rw-r--r--tests/wpt/meta/selection/selection-content-visibility-hidden.html.ini3
-rw-r--r--tests/wpt/meta/selection/selection-nested-video.html.ini3
-rw-r--r--tests/wpt/meta/selection/shadow-dom/select-later-become-slotted-content.html.ini3
-rw-r--r--tests/wpt/meta/selection/shadow-dom/select-later-become-slotted-content.tentative.html.ini3
-rw-r--r--tests/wpt/tests/FileAPI/BlobURL/cross-partition.tentative.https.html397
-rw-r--r--tests/wpt/tests/IndexedDB/idbindex_openKeyCursor.any.js84
-rw-r--r--tests/wpt/tests/IndexedDB/idbindex_openKeyCursor.htm28
-rw-r--r--tests/wpt/tests/IndexedDB/idbindex_openKeyCursor2.htm29
-rw-r--r--tests/wpt/tests/IndexedDB/idbindex_openKeyCursor3.htm32
-rw-r--r--tests/wpt/tests/IndexedDB/idbindex_openKeyCursor4.htm27
-rw-r--r--tests/wpt/tests/IndexedDB/idbobjectstore_clear.any.js108
-rw-r--r--tests/wpt/tests/IndexedDB/idbobjectstore_clear.htm41
-rw-r--r--tests/wpt/tests/IndexedDB/idbobjectstore_clear2.htm43
-rw-r--r--tests/wpt/tests/IndexedDB/idbobjectstore_clear3.htm36
-rw-r--r--tests/wpt/tests/IndexedDB/idbobjectstore_clear4.htm25
-rw-r--r--tests/wpt/tests/IndexedDB/idbobjectstore_createIndex.any.js612
-rw-r--r--tests/wpt/tests/IndexedDB/idbobjectstore_createIndex.htm30
-rw-r--r--tests/wpt/tests/IndexedDB/idbobjectstore_createIndex10.htm24
-rw-r--r--tests/wpt/tests/IndexedDB/idbobjectstore_createIndex11.htm23
-rw-r--r--tests/wpt/tests/IndexedDB/idbobjectstore_createIndex12.htm31
-rw-r--r--tests/wpt/tests/IndexedDB/idbobjectstore_createIndex13.htm31
-rw-r--r--tests/wpt/tests/IndexedDB/idbobjectstore_createIndex14-exception_order.htm89
-rw-r--r--tests/wpt/tests/IndexedDB/idbobjectstore_createIndex15-autoincrement.htm106
-rw-r--r--tests/wpt/tests/IndexedDB/idbobjectstore_createIndex2.htm41
-rw-r--r--tests/wpt/tests/IndexedDB/idbobjectstore_createIndex3-usable-right-away.htm38
-rw-r--r--tests/wpt/tests/IndexedDB/idbobjectstore_createIndex4-deleteIndex-event_order.htm66
-rw-r--r--tests/wpt/tests/IndexedDB/idbobjectstore_createIndex5-emptykeypath.htm38
-rw-r--r--tests/wpt/tests/IndexedDB/idbobjectstore_createIndex6-event_order.htm75
-rw-r--r--tests/wpt/tests/IndexedDB/idbobjectstore_createIndex7-event_order.htm80
-rw-r--r--tests/wpt/tests/IndexedDB/idbobjectstore_createIndex8-valid_keys.htm54
-rw-r--r--tests/wpt/tests/IndexedDB/idbobjectstore_createIndex9-emptyname.htm41
-rw-r--r--tests/wpt/tests/accname/name/comp_host_language_label.html38
-rw-r--r--tests/wpt/tests/bluetooth/resources/bluetooth-test.js5
-rw-r--r--tests/wpt/tests/console/console-count-logging-manual.html23
-rw-r--r--tests/wpt/tests/console/console-count-logging.html41
-rw-r--r--tests/wpt/tests/content-security-policy/img-src/img-src-none-blocks-data-uri.html20
-rw-r--r--tests/wpt/tests/content-security-policy/img-src/report-blocked-data-uri.sub.html2
-rw-r--r--tests/wpt/tests/content-security-policy/inheritance/history-iframe.sub.html2
-rw-r--r--tests/wpt/tests/content-security-policy/reporting/report-frame-ancestors-no-parent-cookies.sub.html33
-rw-r--r--tests/wpt/tests/content-security-policy/reporting/support/not-embeddable-frame.py3
-rw-r--r--tests/wpt/tests/content-security-policy/securitypolicyviolation/securitypolicyviolation-block-cross-origin-image-from-script.sub.html7
-rw-r--r--tests/wpt/tests/content-security-policy/securitypolicyviolation/securitypolicyviolation-block-image-from-script.sub.html7
-rw-r--r--tests/wpt/tests/credential-management/credentialscontainer-get-basics.https.html57
-rw-r--r--tests/wpt/tests/credential-management/non-fully-active.https.html12
-rw-r--r--tests/wpt/tests/css/css-align/self-alignment/block-justify-self-ref.html82
-rw-r--r--tests/wpt/tests/css/css-align/self-alignment/block-justify-self.html199
-rw-r--r--tests/wpt/tests/css/css-anchor-position/anchor-scroll-position-try-013.html2
-rw-r--r--tests/wpt/tests/css/css-anchor-position/anchor-scroll-position-try-014.html2
-rw-r--r--tests/wpt/tests/css/css-anchor-position/at-position-try-allowed-declarations.html2
-rw-r--r--tests/wpt/tests/css/css-anchor-position/at-position-try-cssom.html2
-rw-r--r--tests/wpt/tests/css/css-anchor-position/inset-area-abs-inline-container.html40
-rw-r--r--tests/wpt/tests/css/css-anchor-position/inset-area-align-justify-wm-dir.html155
-rw-r--r--tests/wpt/tests/css/css-anchor-position/inset-area-align-justify.html65
-rw-r--r--tests/wpt/tests/css/css-anchor-position/inset-area-anchor-outside.html56
-rw-r--r--tests/wpt/tests/css/css-anchor-position/inset-area-anchor-partially-outside.html56
-rw-r--r--tests/wpt/tests/css/css-anchor-position/inset-area-basic.html117
-rw-r--r--tests/wpt/tests/css/css-anchor-position/inset-area-computed-insets.html23
-rw-r--r--tests/wpt/tests/css/css-anchor-position/inset-area-computed.html22
-rw-r--r--tests/wpt/tests/css/css-anchor-position/inset-area-in-grid.html106
-rw-r--r--tests/wpt/tests/css/css-anchor-position/inset-area-in-position-try.html188
-rw-r--r--tests/wpt/tests/css/css-anchor-position/inset-area-inline-container.html40
-rw-r--r--tests/wpt/tests/css/css-anchor-position/inset-area-interpolation.html14
-rw-r--r--tests/wpt/tests/css/css-anchor-position/inset-area-parsing.html162
-rw-r--r--tests/wpt/tests/css/css-anchor-position/inset-area-scroll-adjust.html38
-rw-r--r--tests/wpt/tests/css/css-anchor-position/inset-area-value.html71
-rw-r--r--tests/wpt/tests/css/css-anchor-position/inset-area-with-insets.html79
-rw-r--r--tests/wpt/tests/css/css-anchor-position/inset-area-wm-dir.html176
-rw-r--r--tests/wpt/tests/css/css-anchor-position/last-successful-basic.html2
-rw-r--r--tests/wpt/tests/css/css-anchor-position/last-successful-change-fallbacks.html2
-rw-r--r--tests/wpt/tests/css/css-anchor-position/last-successful-change-try-rule.html6
-rw-r--r--tests/wpt/tests/css/css-anchor-position/last-successful-intermediate-ignored.html2
-rw-r--r--tests/wpt/tests/css/css-anchor-position/popover-anchor-backdrop-transition.html30
-rw-r--r--tests/wpt/tests/css/css-anchor-position/position-area-abs-inline-container.html40
-rw-r--r--tests/wpt/tests/css/css-anchor-position/position-area-align-justify-wm-dir.html155
-rw-r--r--tests/wpt/tests/css/css-anchor-position/position-area-align-justify.html65
-rw-r--r--tests/wpt/tests/css/css-anchor-position/position-area-anchor-outside.html56
-rw-r--r--tests/wpt/tests/css/css-anchor-position/position-area-anchor-partially-outside.html56
-rw-r--r--tests/wpt/tests/css/css-anchor-position/position-area-basic.html117
-rw-r--r--tests/wpt/tests/css/css-anchor-position/position-area-computed-insets.html23
-rw-r--r--tests/wpt/tests/css/css-anchor-position/position-area-computed.html22
-rw-r--r--tests/wpt/tests/css/css-anchor-position/position-area-in-grid.html106
-rw-r--r--tests/wpt/tests/css/css-anchor-position/position-area-in-position-try.html188
-rw-r--r--tests/wpt/tests/css/css-anchor-position/position-area-inline-container-ref.html (renamed from tests/wpt/tests/css/css-anchor-position/inset-area-inline-container-ref.html)0
-rw-r--r--tests/wpt/tests/css/css-anchor-position/position-area-inline-container.html40
-rw-r--r--tests/wpt/tests/css/css-anchor-position/position-area-interpolation.html14
-rw-r--r--tests/wpt/tests/css/css-anchor-position/position-area-parsing.html162
-rw-r--r--tests/wpt/tests/css/css-anchor-position/position-area-scroll-adjust-ref.html (renamed from tests/wpt/tests/css/css-anchor-position/inset-area-scroll-adjust-ref.html)0
-rw-r--r--tests/wpt/tests/css/css-anchor-position/position-area-scroll-adjust.html38
-rw-r--r--tests/wpt/tests/css/css-anchor-position/position-area-value.html71
-rw-r--r--tests/wpt/tests/css/css-anchor-position/position-area-with-insets.html79
-rw-r--r--tests/wpt/tests/css/css-anchor-position/position-area-wm-dir.html176
-rw-r--r--tests/wpt/tests/css/css-anchor-position/position-try-order-inset-area.html196
-rw-r--r--tests/wpt/tests/css/css-anchor-position/position-try-order-position-area.html196
-rw-r--r--tests/wpt/tests/css/css-anchor-position/position-try-switch-from-fixed-anchor.html4
-rw-r--r--tests/wpt/tests/css/css-anchor-position/position-try-switch-to-fixed-anchor.html4
-rw-r--r--tests/wpt/tests/css/css-anchor-position/position-visibility-add-no-overflow.html2
-rw-r--r--tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-valid.tentative.html2
-rw-r--r--tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-after-scroll-in.html2
-rw-r--r--tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-after-scroll-out.html2
-rw-r--r--tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-both-position-fixed.tentative.html2
-rw-r--r--tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-chained-001.html2
-rw-r--r--tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-chained-002.html2
-rw-r--r--tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-chained-003.html2
-rw-r--r--tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-chained-004.html2
-rw-r--r--tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-change-anchor.html2
-rw-r--r--tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-change-css-visibility.html2
-rw-r--r--tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-css-visibility.html2
-rw-r--r--tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-non-intervening-container.html2
-rw-r--r--tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-position-fixed.tentative.html2
-rw-r--r--tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-stacked-child.html2
-rw-r--r--tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-stacked-child.tentative.html2
-rw-r--r--tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-with-position.html2
-rw-r--r--tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible.html2
-rw-r--r--tests/wpt/tests/css/css-anchor-position/position-visibility-no-overflow-stacked-child.html2
-rw-r--r--tests/wpt/tests/css/css-anchor-position/position-visibility-no-overflow.html2
-rw-r--r--tests/wpt/tests/css/css-anchor-position/position-visibility-remove-anchors-visible.html2
-rw-r--r--tests/wpt/tests/css/css-anchor-position/position-visibility-remove-no-overflow.html2
-rw-r--r--tests/wpt/tests/css/css-anchor-position/property-interpolations.html4
-rw-r--r--tests/wpt/tests/css/css-anchor-position/try-tactic-inset-area.html251
-rw-r--r--tests/wpt/tests/css/css-anchor-position/try-tactic-position-area.html251
-rw-r--r--tests/wpt/tests/css/css-animations/animation-canceled-by-parent-details-element-being-closed.html35
-rw-r--r--tests/wpt/tests/css/css-animations/display-none-dont-cancel.tentative.html20
-rw-r--r--tests/wpt/tests/css/css-animations/display-none-to-display-block-dont-cancel.tentative.html41
-rw-r--r--tests/wpt/tests/css/css-animations/display-none-to-display-block.html34
-rw-r--r--tests/wpt/tests/css/css-animations/stability/animation-event-destroy-renderer.html33
-rw-r--r--tests/wpt/tests/css/css-backgrounds/background-clip/clip-text-animated-text-ref.html15
-rw-r--r--tests/wpt/tests/css/css-backgrounds/background-clip/clip-text-animated-text.html33
-rw-r--r--tests/wpt/tests/css/css-backgrounds/background-gradient-interpolation-001-notref.html33
-rw-r--r--tests/wpt/tests/css/css-backgrounds/background-gradient-interpolation-001.html51
-rw-r--r--tests/wpt/tests/css/css-backgrounds/background-gradient-interpolation-002-notref.html39
-rw-r--r--tests/wpt/tests/css/css-backgrounds/background-gradient-interpolation-002.html56
-rw-r--r--tests/wpt/tests/css/css-backgrounds/background-gradient-interpolation-003.html59
-rw-r--r--tests/wpt/tests/css/css-backgrounds/color-mix-currentcolor-background-repaint-expected.xht19
-rw-r--r--tests/wpt/tests/css/css-backgrounds/color-mix-currentcolor-background-repaint-parent-expected.xht19
-rw-r--r--tests/wpt/tests/css/css-backgrounds/color-mix-currentcolor-background-repaint-parent.html6
-rw-r--r--tests/wpt/tests/css/css-backgrounds/color-mix-currentcolor-background-repaint.html10
-rw-r--r--tests/wpt/tests/css/css-backgrounds/color-mix-currentcolor-border-repaint-parent.html6
-rw-r--r--tests/wpt/tests/css/css-backgrounds/color-mix-currentcolor-border-repaint.html6
-rw-r--r--tests/wpt/tests/css/css-backgrounds/color-mix-currentcolor-outline-repaint-expected.xht19
-rw-r--r--tests/wpt/tests/css/css-backgrounds/color-mix-currentcolor-outline-repaint-parent-expected.xht19
-rw-r--r--tests/wpt/tests/css/css-backgrounds/color-mix-currentcolor-outline-repaint-parent.html6
-rw-r--r--tests/wpt/tests/css/css-backgrounds/color-mix-currentcolor-outline-repaint.html6
-rw-r--r--tests/wpt/tests/css/css-backgrounds/parsing/background-image-computed.sub.html12
-rw-r--r--tests/wpt/tests/css/css-box/margin-trim/block-container-block-end-collapsed-margins-ref.html33
-rw-r--r--tests/wpt/tests/css/css-box/margin-trim/block-container-block-end-collapsed-margins.html35
-rw-r--r--tests/wpt/tests/css/css-box/margin-trim/block-container-block-end-last-child-with-border.html50
-rw-r--r--tests/wpt/tests/css/css-box/margin-trim/block-container-block-end-nested-last-child-with-border.html58
-rw-r--r--tests/wpt/tests/css/css-box/margin-trim/block-container-block-end-self-collapsing-children-nested-at-bottom.html47
-rw-r--r--tests/wpt/tests/css/css-box/margin-trim/block-container-block-end-self-collapsing-children-nested-margin-trim.html51
-rw-r--r--tests/wpt/tests/css/css-box/margin-trim/block-container-block-end-self-collapsing-children-offsets-nested-multiple-times.html51
-rw-r--r--tests/wpt/tests/css/css-box/margin-trim/block-container-block-end-self-collapsing-children-offsets-nested-once.html41
-rw-r--r--tests/wpt/tests/css/css-box/margin-trim/block-container-block-end-self-collapsing-children-offsets-vert-lr.html41
-rw-r--r--tests/wpt/tests/css/css-box/margin-trim/block-container-block-end-self-collapsing-children-offsets.html38
-rw-r--r--tests/wpt/tests/css/css-box/margin-trim/block-container-block-end-self-collapsing-item-has-larger-block-end-ref.html34
-rw-r--r--tests/wpt/tests/css/css-box/margin-trim/block-container-block-end-self-collapsing-item-has-larger-block-end.html35
-rw-r--r--tests/wpt/tests/css/css-box/margin-trim/block-container-block-end-self-collapsing-item-has-larger-block-start-ref.html33
-rw-r--r--tests/wpt/tests/css/css-box/margin-trim/block-container-block-end-self-collapsing-item-has-larger-block-start.html35
-rw-r--r--tests/wpt/tests/css/css-box/margin-trim/block-container-block-start-collapsed-margins-ref.html28
-rw-r--r--tests/wpt/tests/css/css-box/margin-trim/block-container-block-start-collapsed-margins.html35
-rw-r--r--tests/wpt/tests/css/css-box/margin-trim/block-container-block-start-self-collapsing-item-has-larger-block-end-ref.html34
-rw-r--r--tests/wpt/tests/css/css-box/margin-trim/block-container-block-start-self-collapsing-item-has-larger-block-end.html35
-rw-r--r--tests/wpt/tests/css/css-box/margin-trim/block-container-block-start-self-collapsing-item-larger-block-start-ref.html33
-rw-r--r--tests/wpt/tests/css/css-box/margin-trim/block-container-block-start-self-collapsing-item-larger-block-start.html35
-rw-r--r--tests/wpt/tests/css/css-box/margin-trim/computed-margin-values/grid-block-start.html52
-rw-r--r--tests/wpt/tests/css/css-box/margin-trim/computed-margin-values/grid-inline-end-items-in-last-column-trimmed.html54
-rw-r--r--tests/wpt/tests/css/css-cascade/scope-part-ref.html23
-rw-r--r--tests/wpt/tests/css/css-cascade/scope-part.html107
-rw-r--r--tests/wpt/tests/css/css-color/parsing/color-computed-relative-color.html39
-rw-r--r--tests/wpt/tests/css/css-color/parsing/color-valid-relative-color.html1010
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/no-layout-containment-abspos-dynamic.html23
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/no-layout-containment-abspos.html10
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/no-layout-containment-baseline-ref.html4
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/no-layout-containment-baseline.html7
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/no-layout-containment-fixedpos-dynamic.html23
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/no-layout-containment-fixedpos.html10
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/no-layout-containment-scroll.html14
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/query-content-box.html46
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/scrollbar-container-units-block-ref.html22
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/scrollbar-container-units-block.html24
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/scrollbar-container-units-inline-ref.html28
-rw-r--r--tests/wpt/tests/css/css-conditional/container-queries/scrollbar-container-units-inline.html30
-rw-r--r--tests/wpt/tests/css/css-contain/contain-chrome-thcrash-001.html2
-rw-r--r--tests/wpt/tests/css/css-contain/content-visibility/content-visibility-anchor-positioning-007.html2
-rw-r--r--tests/wpt/tests/css/css-contain/content-visibility/content-visibility-auto-state-changed.html12
-rw-r--r--tests/wpt/tests/css/css-contain/content-visibility/crashtests/fieldset.html6
-rw-r--r--tests/wpt/tests/css/css-display/parsing/tentative/display-computed.html42
-rw-r--r--tests/wpt/tests/css/css-display/parsing/tentative/display-valid.html20
-rw-r--r--tests/wpt/tests/css/css-flexbox/animation/flex-basis-content-crash.html14
-rw-r--r--tests/wpt/tests/css/css-flexbox/flex-item-max-height-min-content.html9
-rw-r--r--tests/wpt/tests/css/css-flexbox/flex-item-max-width-min-content.html9
-rw-r--r--tests/wpt/tests/css/css-flexbox/flex-item-min-height-min-content.html9
-rw-r--r--tests/wpt/tests/css/css-flexbox/flex-item-min-width-min-content.html9
-rw-r--r--tests/wpt/tests/css/css-flexbox/flexbox-writing-mode-slr-ref.html76
-rw-r--r--tests/wpt/tests/css/css-flexbox/flexbox-writing-mode-slr-row-mix-ref.html79
-rw-r--r--tests/wpt/tests/css/css-flexbox/flexbox-writing-mode-slr-row-mix.html87
-rw-r--r--tests/wpt/tests/css/css-flexbox/flexbox-writing-mode-slr-rtl.html78
-rw-r--r--tests/wpt/tests/css/css-flexbox/flexbox-writing-mode-slr.html78
-rw-r--r--tests/wpt/tests/css/css-flexbox/flexbox-writing-mode-srl-row-mix-ref.html79
-rw-r--r--tests/wpt/tests/css/css-flexbox/flexbox-writing-mode-srl-row-mix.html87
-rw-r--r--tests/wpt/tests/css/css-flexbox/flexbox-writing-mode-srl-rtl.html78
-rw-r--r--tests/wpt/tests/css/css-flexbox/flexbox-writing-mode-srl.html78
-rw-r--r--tests/wpt/tests/css/css-fonts/font-size-adjust-012.html2
-rw-r--r--tests/wpt/tests/css/css-fonts/font-size-adjust-013.html2
-rw-r--r--tests/wpt/tests/css/css-fonts/parsing/font-face-size-adjust.html31
-rw-r--r--tests/wpt/tests/css/css-fonts/synthetic-bold-space-width-ref.html14
-rw-r--r--tests/wpt/tests/css/css-fonts/synthetic-bold-space-width.html16
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-001.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-002.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-003.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-004.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-001.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-002.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-003.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-004.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-001-ref.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-001.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-002-b-ref.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-002-b.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-002-ref.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-002.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-003-ref.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-003.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-004-ref.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-004.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-005-ref.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-005.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-006-ref.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-006.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-007-ref.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-007.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-001-ref.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-001.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-002-ref.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-002.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-003-ref.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-003.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-004-ref.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-004.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-005-ref.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-005.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-006-ref.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-006.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-007-ref.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-007.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-001-ref.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-001.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-002-ref.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-002.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-003-ref.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-003.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-004-ref.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-004.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-005-ref.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-005.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-006-ref.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-006.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-007-ref.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-007.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-001-ref.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-001.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-002-ref.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-002.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-003-ref.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-003.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-004-ref.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-004.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-005-ref.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-005.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-006-ref.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-006.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-007-ref.html1
-rw-r--r--tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-007.html1
-rw-r--r--tests/wpt/tests/css/css-grid/grid-in-table-cell-with-img.html27
-rw-r--r--tests/wpt/tests/css/css-grid/grid-relayout-with-nested-grid-ref.html27
-rw-r--r--tests/wpt/tests/css/css-grid/grid-relayout-with-nested-grid.html39
-rw-r--r--tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-001-ref.html278
-rw-r--r--tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-001.html270
-rw-r--r--tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-002-ref.html280
-rw-r--r--tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-002.html271
-rw-r--r--tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-003-ref.html333
-rw-r--r--tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-003.html270
-rw-r--r--tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-004-ref.html357
-rw-r--r--tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-004.html270
-rw-r--r--tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-005-ref.html78
-rw-r--r--tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-005.html81
-rw-r--r--tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-006-ref.html51
-rw-r--r--tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-006.html56
-rw-r--r--tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-001-ref.html360
-rw-r--r--tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-001.html349
-rw-r--r--tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-002-ref.html362
-rw-r--r--tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-002.html351
-rw-r--r--tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-003-ref.html433
-rw-r--r--tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-003.html350
-rw-r--r--tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-004-ref.html460
-rw-r--r--tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-004.html350
-rw-r--r--tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-005-ref.html80
-rw-r--r--tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-005.html80
-rw-r--r--tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-006-ref.html49
-rw-r--r--tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-006.html54
-rw-r--r--tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-007-ref.html43
-rw-r--r--tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-007.html46
-rw-r--r--tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-001-ref.html366
-rw-r--r--tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-001.html355
-rw-r--r--tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-002-ref.html368
-rw-r--r--tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-002.html357
-rw-r--r--tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-003-ref.html461
-rw-r--r--tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-003.html356
-rw-r--r--tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-004-ref.html461
-rw-r--r--tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-004.html355
-rw-r--r--tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-005-ref.html77
-rw-r--r--tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-005.html80
-rw-r--r--tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-006-ref.html50
-rw-r--r--tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-006.html55
-rw-r--r--tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/support/masonry-intrinsic-sizing-visual.css8
-rw-r--r--tests/wpt/tests/css/css-highlight-api/highlight-image-notref.html6
-rw-r--r--tests/wpt/tests/css/css-highlight-api/highlight-image.html27
-rw-r--r--tests/wpt/tests/css/css-highlight-api/highlight-text-across-elements-ref.html26
-rw-r--r--tests/wpt/tests/css/css-highlight-api/highlight-text-across-elements.html49
-rw-r--r--tests/wpt/tests/css/css-highlight-api/highlight-text-cascade-ref.html24
-rw-r--r--tests/wpt/tests/css/css-highlight-api/highlight-text-cascade.html35
-rw-r--r--tests/wpt/tests/css/css-highlight-api/highlight-text-decorations-ref.html47
-rw-r--r--tests/wpt/tests/css/css-highlight-api/highlight-text-decorations.html63
-rw-r--r--tests/wpt/tests/css/css-highlight-api/highlight-text-dynamic-notref.html6
-rw-r--r--tests/wpt/tests/css/css-highlight-api/highlight-text-dynamic.html30
-rw-r--r--tests/wpt/tests/css/css-highlight-api/highlight-text-ref.html22
-rw-r--r--tests/wpt/tests/css/css-highlight-api/highlight-text-replace-ref.html14
-rw-r--r--tests/wpt/tests/css/css-highlight-api/highlight-text-replace.html30
-rw-r--r--tests/wpt/tests/css/css-highlight-api/highlight-text.html43
-rw-r--r--tests/wpt/tests/css/css-images/WEB_FEATURES.yml3
-rw-r--r--tests/wpt/tests/css/css-images/animation/WEB_FEATURES.yml4
-rw-r--r--tests/wpt/tests/css/css-images/conic-gradient-angle-negative.html1
-rw-r--r--tests/wpt/tests/css/css-images/conic-gradient-angle.html1
-rw-r--r--tests/wpt/tests/css/css-images/conic-gradient-center.html1
-rw-r--r--tests/wpt/tests/css/css-images/gradient/color-stops-parsing.html14
-rw-r--r--tests/wpt/tests/css/css-images/multiple-position-color-stop-conic.html1
-rw-r--r--tests/wpt/tests/css/css-images/normalization-conic-2.html1
-rw-r--r--tests/wpt/tests/css/css-images/normalization-conic-degenerate.html1
-rw-r--r--tests/wpt/tests/css/css-images/normalization-conic.html1
-rw-r--r--tests/wpt/tests/css/css-images/out-of-range-color-stop-conic.html1
-rw-r--r--tests/wpt/tests/css/css-images/support/external-images.svg10
-rw-r--r--tests/wpt/tests/css/css-images/support/scripted.svg16
-rw-r--r--tests/wpt/tests/css/css-images/svg-images-are-ignored-ref.html28
-rw-r--r--tests/wpt/tests/css/css-images/svg-images-are-ignored.html32
-rw-r--r--tests/wpt/tests/css/css-images/svg-script-is-ignored-ref.svg10
-rw-r--r--tests/wpt/tests/css/css-images/svg-script-is-ignored.html20
-rw-r--r--tests/wpt/tests/css/css-images/tiled-conic-gradients.html1
-rw-r--r--tests/wpt/tests/css/css-lists/pseudo-element-remove-update-ref.html4
-rw-r--r--tests/wpt/tests/css/css-lists/pseudo-element-remove-update.html22
-rw-r--r--tests/wpt/tests/css/css-masking/animations/mask-border-outset-composition.html134
-rw-r--r--tests/wpt/tests/css/css-masking/animations/mask-border-outset-interpolation.html126
-rw-r--r--tests/wpt/tests/css/css-masking/animations/mask-border-slice-composition.html134
-rw-r--r--tests/wpt/tests/css/css-masking/animations/mask-border-slice-interpolation-stability.html24
-rw-r--r--tests/wpt/tests/css/css-masking/animations/mask-border-slice-interpolation.html176
-rw-r--r--tests/wpt/tests/css/css-masking/animations/mask-border-source-interpolation.html83
-rw-r--r--tests/wpt/tests/css/css-masking/animations/mask-border-width-composition.html134
-rw-r--r--tests/wpt/tests/css/css-masking/animations/mask-border-width-interpolation.html193
-rw-r--r--tests/wpt/tests/css/css-masking/clip-path/animations/clip-path-animation-cancel-ref.html2
-rw-r--r--tests/wpt/tests/css/css-masking/clip-path/animations/clip-path-animation-ellipse-ref.html1
-rw-r--r--tests/wpt/tests/css/css-masking/clip-path/animations/clip-path-animation-font-size-ref.html1
-rw-r--r--tests/wpt/tests/css/css-masking/clip-path/animations/clip-path-animation-path-ref.html1
-rw-r--r--tests/wpt/tests/css/css-masking/clip-path/animations/clip-path-animation-polygon-ref.html1
-rw-r--r--tests/wpt/tests/css/css-masking/clip-path/animations/clip-path-transition-crashtest.html31
-rw-r--r--tests/wpt/tests/css/css-nesting/supports-rule-ref.html23
-rw-r--r--tests/wpt/tests/css/css-nesting/supports-rule.html52
-rw-r--r--tests/wpt/tests/css/css-overflow/WEB_FEATURES.yml30
-rw-r--r--tests/wpt/tests/css/css-overflow/line-clamp/line-clamp-auto-033.tentative.html30
-rw-r--r--tests/wpt/tests/css/css-overflow/line-clamp/line-clamp-auto-034.tentative.html33
-rw-r--r--tests/wpt/tests/css/css-overflow/line-clamp/reference/line-clamp-auto-034-ref.html23
-rw-r--r--tests/wpt/tests/css/css-page/parsing/size-001.html63
-rw-r--r--tests/wpt/tests/css/css-page/parsing/size-invalid.html2
-rw-r--r--tests/wpt/tests/css/css-page/parsing/size-valid.html85
-rw-r--r--tests/wpt/tests/css/css-properties-values-api/at-property.html19
-rw-r--r--tests/wpt/tests/css/css-properties-values-api/register-property-syntax-parsing.html22
-rw-r--r--tests/wpt/tests/css/css-pseudo/firefox-bug-1907238-crash.html15
-rw-r--r--tests/wpt/tests/css/css-pseudo/parsing/marker-supported-properties-in-animation.html8
-rw-r--r--tests/wpt/tests/css/css-pseudo/parsing/marker-supported-properties.html3
-rw-r--r--tests/wpt/tests/css/css-rhythm/block-step-size-establishes-block-formatting-context-list-item.html29
-rw-r--r--tests/wpt/tests/css/css-rhythm/block-step-size-establishes-block-formatting-context.html27
-rw-r--r--tests/wpt/tests/css/css-rhythm/block-step-size-none-does-not-establish-block-formatting-context.html30
-rw-r--r--tests/wpt/tests/css/css-ruby/break-within-bases/break-spaces-crash.html16
-rw-r--r--tests/wpt/tests/css/css-ruby/ruby-dynamic-removal-004-crash.html23
-rw-r--r--tests/wpt/tests/css/css-scroll-anchoring/shadow-dom-subscroller.html69
-rw-r--r--tests/wpt/tests/css/css-scroll-anchoring/zero-scroll-offset-001.html (renamed from tests/wpt/tests/css/css-scroll-anchoring/zero-scroll-offset.html)0
-rw-r--r--tests/wpt/tests/css/css-scroll-anchoring/zero-scroll-offset-002.html56
-rw-r--r--tests/wpt/tests/css/css-scroll-snap/snap-to-visible-areas-both-pseudo.html93
-rw-r--r--tests/wpt/tests/css/css-scrollbars/invalid-needs-layout-crash.html10
-rw-r--r--tests/wpt/tests/css/css-shadow-parts/grouping-with-disabled.html63
-rw-r--r--tests/wpt/tests/css/css-shapes/parsing/shape-outside-invalid.html56
-rw-r--r--tests/wpt/tests/css/css-shapes/parsing/shape-outside-valid.html71
-rw-r--r--tests/wpt/tests/css/css-shapes/shape-functions/circle-function-computed.html32
-rw-r--r--tests/wpt/tests/css/css-shapes/shape-functions/circle-function-invalid.html26
-rw-r--r--tests/wpt/tests/css/css-shapes/shape-functions/circle-function-valid.html32
-rw-r--r--tests/wpt/tests/css/css-shapes/shape-functions/ellipse-function-computed.html32
-rw-r--r--tests/wpt/tests/css/css-shapes/shape-functions/ellipse-function-invalid.html26
-rw-r--r--tests/wpt/tests/css/css-shapes/shape-functions/ellipse-function-valid.html31
-rw-r--r--tests/wpt/tests/css/css-shapes/shape-functions/inset-function-computed.html28
-rw-r--r--tests/wpt/tests/css/css-shapes/shape-functions/inset-function-invalid.html28
-rw-r--r--tests/wpt/tests/css/css-shapes/shape-functions/inset-function-valid.html27
-rw-r--r--tests/wpt/tests/css/css-shapes/shape-functions/path-function-computed.html20
-rw-r--r--tests/wpt/tests/css/css-shapes/shape-functions/path-function-invalid.html18
-rw-r--r--tests/wpt/tests/css/css-shapes/shape-functions/path-function-valid.html18
-rw-r--r--tests/wpt/tests/css/css-shapes/shape-functions/polygon-function-computed.html21
-rw-r--r--tests/wpt/tests/css/css-shapes/shape-functions/polygon-function-invalid.html19
-rw-r--r--tests/wpt/tests/css/css-shapes/shape-functions/polygon-function-valid.html20
-rw-r--r--tests/wpt/tests/css/css-shapes/shape-functions/rect-function-computed.html28
-rw-r--r--tests/wpt/tests/css/css-shapes/shape-functions/rect-function-invalid.html30
-rw-r--r--tests/wpt/tests/css/css-shapes/shape-functions/rect-function-valid.html27
-rw-r--r--tests/wpt/tests/css/css-shapes/shape-functions/xywh-function-computed.html25
-rw-r--r--tests/wpt/tests/css/css-shapes/shape-functions/xywh-function-invalid.html22
-rw-r--r--tests/wpt/tests/css/css-shapes/shape-functions/xywh-function-valid.html23
-rw-r--r--tests/wpt/tests/css/css-sizing/block-size-with-min-or-max-content-2.html7
-rw-r--r--tests/wpt/tests/css/css-sizing/block-size-with-min-or-max-content-3.html7
-rw-r--r--tests/wpt/tests/css/css-sizing/block-size-with-min-or-max-content-4.html5
-rw-r--r--tests/wpt/tests/css/css-sizing/block-size-with-min-or-max-content-5.html5
-rw-r--r--tests/wpt/tests/css/css-sizing/block-size-with-min-or-max-content-6.html7
-rw-r--r--tests/wpt/tests/css/css-sizing/block-size-with-min-or-max-content-7.html7
-rw-r--r--tests/wpt/tests/css/css-sizing/hori-block-size-small-or-larger-than-container-with-min-or-max-content-1-ref.html8
-rw-r--r--tests/wpt/tests/css/css-sizing/intrinsic-percent-non-replaced-002.html1
-rw-r--r--tests/wpt/tests/css/css-sizing/replaced-max-height-min-content.html5
-rw-r--r--tests/wpt/tests/css/css-sizing/replaced-max-width-min-content.html5
-rw-r--r--tests/wpt/tests/css/css-sizing/replaced-min-height-min-content.html5
-rw-r--r--tests/wpt/tests/css/css-sizing/replaced-min-width-min-content.html5
-rw-r--r--tests/wpt/tests/css/css-sizing/svg-no-ar-max-height-min-content.html5
-rw-r--r--tests/wpt/tests/css/css-sizing/svg-no-ar-min-height-min-content.html5
-rw-r--r--tests/wpt/tests/css/css-sizing/vert-block-size-small-or-larger-than-container-with-min-or-max-content-1-ref.html8
-rw-r--r--tests/wpt/tests/css/css-tables/remove-caption-from-anon-table-ref.html12
-rw-r--r--tests/wpt/tests/css/css-tables/remove-caption-from-anon-table.html26
-rw-r--r--tests/wpt/tests/css/css-tables/remove-colgroup-from-anon-table.html28
-rw-r--r--tests/wpt/tests/css/css-text-decor/invalidation/text-decoration-thickness-ref.html3
-rw-r--r--tests/wpt/tests/css/css-text-decor/invalidation/text-decoration-thickness.html3
-rw-r--r--tests/wpt/tests/css/css-text-decor/reference/text-decoration-underline-position-vertical-ja-ref.html16
-rw-r--r--tests/wpt/tests/css/css-text-decor/reference/text-underline-position-horizontal-ref.html (renamed from tests/wpt/tests/css/css-text-decor/reference/text-decoration-underline-position-horizontal-ref.html)0
-rw-r--r--tests/wpt/tests/css/css-text-decor/reference/text-underline-position-vertical-ja-ref.html20
-rw-r--r--tests/wpt/tests/css/css-text-decor/reference/text-underline-position-vertical-ref.html (renamed from tests/wpt/tests/css/css-text-decor/reference/text-decoration-underline-position-vertical-ref.html)0
-rw-r--r--tests/wpt/tests/css/css-text-decor/text-decoration-underline-position-horizontal.html19
-rw-r--r--tests/wpt/tests/css/css-text-decor/text-decoration-underline-position-vertical-ja.html18
-rw-r--r--tests/wpt/tests/css/css-text-decor/text-decoration-underline-position-vertical.html18
-rw-r--r--tests/wpt/tests/css/css-text-decor/text-underline-position-horizontal.html19
-rw-r--r--tests/wpt/tests/css/css-text-decor/text-underline-position-vertical-ja.html22
-rw-r--r--tests/wpt/tests/css/css-text-decor/text-underline-position-vertical.html18
-rw-r--r--tests/wpt/tests/css/css-transforms/animation/transform-box-ref.html17
-rw-r--r--tests/wpt/tests/css/css-transforms/animation/transform-box-will-change-transform-layer.html62
-rw-r--r--tests/wpt/tests/css/css-transforms/animation/transform-box.html60
-rw-r--r--tests/wpt/tests/css/css-typed-om/parse-calc-expressions.html20
-rw-r--r--tests/wpt/tests/css/css-ui/outline-width-rounding.tentative.html (renamed from tests/wpt/tests/css/css-outline/outline-width-rounding.tentative.html)0
-rw-r--r--tests/wpt/tests/css/css-ui/reference/subpixel-outline-width-ref.tentative.html (renamed from tests/wpt/tests/css/css-outline/reference/subpixel-outline-width-ref.tentative.html)0
-rw-r--r--tests/wpt/tests/css/css-ui/subpixel-outline-width.tentative.html (renamed from tests/wpt/tests/css/css-outline/subpixel-outline-width.tentative.html)0
-rw-r--r--tests/wpt/tests/css/css-values/attr-all-types.html10
-rw-r--r--tests/wpt/tests/css/css-values/attr-invalid-type-008.html90
-rw-r--r--tests/wpt/tests/css/css-values/attr-pseudo-elem-invalidation.html41
-rw-r--r--tests/wpt/tests/css/css-values/calc-size/animation/calc-size-height-interpolation.html (renamed from tests/wpt/tests/css/css-values/calc-size/animation/calc-size-height-interpolation.tentative.html)0
-rw-r--r--tests/wpt/tests/css/css-values/calc-size/animation/calc-size-interpolation-expansion.html (renamed from tests/wpt/tests/css/css-values/calc-size/animation/calc-size-interpolation-expansion.tentative.html)0
-rw-r--r--tests/wpt/tests/css/css-values/calc-size/animation/calc-size-width-interpolation.html (renamed from tests/wpt/tests/css/css-values/calc-size/animation/calc-size-width-interpolation.tentative.html)0
-rw-r--r--tests/wpt/tests/css/css-values/calc-size/calc-size-aspect-ratio-001.html7
-rw-r--r--tests/wpt/tests/css/css-values/calc-size/calc-size-aspect-ratio-002.html7
-rw-r--r--tests/wpt/tests/css/css-values/calc-size/calc-size-flex-basis-on-column.html92
-rw-r--r--tests/wpt/tests/css/css-values/calc-size/calc-size-flex-basis-on-row.html94
-rw-r--r--tests/wpt/tests/css/css-values/calc-size/calc-size-height.html (renamed from tests/wpt/tests/css/css-values/calc-size/calc-size-height.tentative.html)0
-rw-r--r--tests/wpt/tests/css/css-values/calc-size/calc-size-parsing.html112
-rw-r--r--tests/wpt/tests/css/css-values/calc-size/calc-size-parsing.tentative.html98
-rw-r--r--tests/wpt/tests/css/css-values/calc-size/calc-size-width.html (renamed from tests/wpt/tests/css/css-values/calc-size/calc-size-width.tentative.html)0
-rw-r--r--tests/wpt/tests/css/css-values/integer_interpolation_round_half_towards_positive_infinity_order.html39
-rw-r--r--tests/wpt/tests/css/css-values/integer_interpolation_round_half_towards_positive_infinity_z_index.html38
-rw-r--r--tests/wpt/tests/css/css-values/lh-unit-same-element-font-size-dependency.html19
-rw-r--r--tests/wpt/tests/css/css-values/lh-unit-same-element-line-height-dependency.html18
-rw-r--r--tests/wpt/tests/css/css-variables/variable-css-wide-keywords.html331
-rw-r--r--tests/wpt/tests/css/css-view-transitions/block-with-overflowing-text-ref.html5
-rw-r--r--tests/wpt/tests/css/css-view-transitions/block-with-overflowing-text.html4
-rw-r--r--tests/wpt/tests/css/css-view-transitions/clip-path-larger-than-border-box-on-child-of-named-element.html2
-rw-r--r--tests/wpt/tests/css/css-view-transitions/fractional-translation-from-position-ref.html2
-rw-r--r--tests/wpt/tests/css/css-view-transitions/fractional-translation-from-position.html2
-rw-r--r--tests/wpt/tests/css/css-view-transitions/inline-element-size-ref.html2
-rw-r--r--tests/wpt/tests/css/css-view-transitions/inline-element-size.html5
-rw-r--r--tests/wpt/tests/css/css-view-transitions/massive-element-below-viewport-partially-onscreen-new.html9
-rw-r--r--tests/wpt/tests/css/css-view-transitions/massive-element-below-viewport-partially-onscreen-old.html9
-rw-r--r--tests/wpt/tests/css/css-view-transitions/massive-element-below-viewport-partially-onscreen-ref.html9
-rw-r--r--tests/wpt/tests/css/css-view-transitions/massive-element-left-of-viewport-partially-onscreen-new.html2
-rw-r--r--tests/wpt/tests/css/css-view-transitions/massive-element-left-of-viewport-partially-onscreen-old.html2
-rw-r--r--tests/wpt/tests/css/css-view-transitions/massive-element-left-of-viewport-partially-onscreen-ref.html2
-rw-r--r--tests/wpt/tests/css/css-view-transitions/massive-element-on-top-of-viewport-partially-onscreen-new.html5
-rw-r--r--tests/wpt/tests/css/css-view-transitions/massive-element-on-top-of-viewport-partially-onscreen-old.html5
-rw-r--r--tests/wpt/tests/css/css-view-transitions/massive-element-on-top-of-viewport-partially-onscreen-ref.html5
-rw-r--r--tests/wpt/tests/css/css-view-transitions/massive-element-right-of-viewport-partially-onscreen-new.html2
-rw-r--r--tests/wpt/tests/css/css-view-transitions/massive-element-right-of-viewport-partially-onscreen-old.html2
-rw-r--r--tests/wpt/tests/css/css-view-transitions/massive-element-right-of-viewport-partially-onscreen-ref.html2
-rw-r--r--tests/wpt/tests/css/css-view-transitions/multiline-span-with-overflowing-text-and-box-decorations-ref.html5
-rw-r--r--tests/wpt/tests/css/css-view-transitions/multiline-span-with-overflowing-text-and-box-decorations.html5
-rw-r--r--tests/wpt/tests/css/css-view-transitions/navigation/pagereveal-ctor.html42
-rw-r--r--tests/wpt/tests/css/css-view-transitions/navigation/pageswap-ctor.html54
-rw-r--r--tests/wpt/tests/css/css-view-transitions/nested/adjust-transform-with-scale.html39
-rw-r--r--tests/wpt/tests/css/css-view-transitions/nested/adjust-transform.html35
-rw-r--r--tests/wpt/tests/css/css-view-transitions/nested/compute-explicit-name-direct.html14
-rw-r--r--tests/wpt/tests/css/css-view-transitions/nested/compute-explicit-name-nested-vt-names.html25
-rw-r--r--tests/wpt/tests/css/css-view-transitions/nested/compute-explicit-name-nested.html16
-rw-r--r--tests/wpt/tests/css/css-view-transitions/nested/compute-explicit-name-non-ancestor.html14
-rw-r--r--tests/wpt/tests/css/css-view-transitions/nested/compute-explicit-name-non-existent.html13
-rw-r--r--tests/wpt/tests/css/css-view-transitions/nested/compute-explicit-name-self.html12
-rw-r--r--tests/wpt/tests/css/css-view-transitions/nested/nearest-direct.html16
-rw-r--r--tests/wpt/tests/css/css-view-transitions/nested/nearest-ignores-nearest-name.html18
-rw-r--r--tests/wpt/tests/css/css-view-transitions/nested/nearest-nested.html18
-rw-r--r--tests/wpt/tests/css/css-view-transitions/nested/nested-group-display-none.html44
-rw-r--r--tests/wpt/tests/css/css-view-transitions/nested/nested-group-in-pseudo-basic.html59
-rw-r--r--tests/wpt/tests/css/css-view-transitions/nested/nested-ref-100.html18
-rw-r--r--tests/wpt/tests/css/css-view-transitions/nested/nested-ref.html15
-rw-r--r--tests/wpt/tests/css/css-view-transitions/nested/normal-goes-up.html16
-rw-r--r--tests/wpt/tests/css/css-view-transitions/nested/render-element.html37
-rw-r--r--tests/wpt/tests/css/css-view-transitions/nested/resources/compute-common.css60
-rw-r--r--tests/wpt/tests/css/css-view-transitions/nested/resources/compute-test.js7
-rw-r--r--tests/wpt/tests/css/css-view-transitions/new-content-captures-spans-ref.html6
-rw-r--r--tests/wpt/tests/css/css-view-transitions/new-content-captures-spans.html5
-rw-r--r--tests/wpt/tests/css/css-view-transitions/new-content-is-inline-ref.html7
-rw-r--r--tests/wpt/tests/css/css-view-transitions/new-content-is-inline.html7
-rw-r--r--tests/wpt/tests/css/css-view-transitions/no-named-elements-ref.html9
-rw-r--r--tests/wpt/tests/css/css-view-transitions/no-named-elements.html36
-rw-r--r--tests/wpt/tests/css/css-view-transitions/parsing/pseudo-elements-invalid.html2
-rw-r--r--tests/wpt/tests/css/css-view-transitions/parsing/pseudo-elements-valid.html2
-rw-r--r--tests/wpt/tests/css/css-view-transitions/parsing/view-transition-group-invalid.html23
-rw-r--r--tests/wpt/tests/css/css-view-transitions/parsing/view-transition-group-valid.html23
-rw-r--r--tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-entry.html2
-rw-r--r--tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-exit.html2
-rw-r--r--tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-match-ident.html2
-rw-r--r--tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-match-multiple-wildcard.html2
-rw-r--r--tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-match-multiple.html2
-rw-r--r--tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-match-wildcard-no-star.html2
-rw-r--r--tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-match-wildcard.html2
-rw-r--r--tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-mismatch-ident.html2
-rw-r--r--tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-mismatch-partial.html2
-rw-r--r--tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-mismatch-wildcard.html2
-rw-r--r--tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-multiple-vt-classes.html2
-rw-r--r--tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-new-with-class-old-without.html2
-rw-r--r--tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-old-with-class-new-without.html2
-rw-r--r--tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-view-transition-group.html2
-rw-r--r--tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-view-transition-image-pair.html2
-rw-r--r--tests/wpt/tests/css/css-view-transitions/span-with-overflowing-text-and-box-decorations-ref.html2
-rw-r--r--tests/wpt/tests/css/css-view-transitions/span-with-overflowing-text-and-box-decorations.html5
-rw-r--r--tests/wpt/tests/css/css-view-transitions/span-with-overflowing-text-ref.html2
-rw-r--r--tests/wpt/tests/css/css-view-transitions/span-with-overflowing-text.html5
-rw-r--r--tests/wpt/tests/css/css-viewport/width-ref.html2
-rw-r--r--tests/wpt/tests/css/css-viewport/width.html2
-rw-r--r--tests/wpt/tests/css/css-viewport/zoom/WEB_FEATURES.yml3
-rw-r--r--tests/wpt/tests/css/css-viewport/zoom/border-spacing.html2
-rw-r--r--tests/wpt/tests/css/css-viewport/zoom/container-queries.html37
-rw-r--r--tests/wpt/tests/css/css-viewport/zoom/font-size-ref.html2
-rw-r--r--tests/wpt/tests/css/css-viewport/zoom/font-size.html2
-rw-r--r--tests/wpt/tests/css/css-viewport/zoom/letter-spacing.html2
-rw-r--r--tests/wpt/tests/css/css-viewport/zoom/line-height-ref.html2
-rw-r--r--tests/wpt/tests/css/css-viewport/zoom/line-height.html2
-rw-r--r--tests/wpt/tests/css/css-viewport/zoom/reference/border-spacing-ref.html2
-rw-r--r--tests/wpt/tests/css/css-viewport/zoom/reference/container-queries-ref.html33
-rw-r--r--tests/wpt/tests/css/css-viewport/zoom/reference/letter-spacing-ref.html2
-rw-r--r--tests/wpt/tests/css/css-viewport/zoom/reference/text-indent-ref.html2
-rw-r--r--tests/wpt/tests/css/css-viewport/zoom/reference/text-shadow-ref.html2
-rw-r--r--tests/wpt/tests/css/css-viewport/zoom/reference/text-stroke-width-ref.html2
-rw-r--r--tests/wpt/tests/css/css-viewport/zoom/reference/text-underline-offset-ref.html2
-rw-r--r--tests/wpt/tests/css/css-viewport/zoom/reference/word-spacing-ref.html2
-rw-r--r--tests/wpt/tests/css/css-viewport/zoom/text-indent.html2
-rw-r--r--tests/wpt/tests/css/css-viewport/zoom/text-shadow.html2
-rw-r--r--tests/wpt/tests/css/css-viewport/zoom/text-stroke-width.html2
-rw-r--r--tests/wpt/tests/css/css-viewport/zoom/text-underline-offset.html2
-rw-r--r--tests/wpt/tests/css/cssom-view/scrollintoview-containingblock-chain.html64
-rw-r--r--tests/wpt/tests/css/cssom-view/scrollintoview-zero-height-item.html53
-rw-r--r--tests/wpt/tests/css/cssom/link-element-stylesheet-title.html37
-rw-r--r--tests/wpt/tests/css/fill-stroke/animation/stroke-color-interpolation.html123
-rw-r--r--tests/wpt/tests/css/geometry/DOMMatrix-invertSelf.html25
-rw-r--r--tests/wpt/tests/css/mediaqueries/mq-calc-sign-function-001.html3
-rw-r--r--tests/wpt/tests/css/mediaqueries/mq-calc-sign-function-002.html3
-rw-r--r--tests/wpt/tests/css/mediaqueries/mq-calc-sign-function-003.html24
-rw-r--r--tests/wpt/tests/css/mediaqueries/mq-calc-sign-function-004.html3
-rw-r--r--tests/wpt/tests/css/mediaqueries/mq-calc-sign-function-005.html3
-rw-r--r--tests/wpt/tests/css/mediaqueries/mq-calc-sign-function-006.html3
-rw-r--r--tests/wpt/tests/css/motion/offset-path-shape-circle-008.html32
-rw-r--r--tests/wpt/tests/css/motion/offset-path-shape-ellipse-007.html32
-rw-r--r--tests/wpt/tests/css/selectors/WEB_FEATURES.yml3
-rw-r--r--tests/wpt/tests/css/selectors/invalidation/WEB_FEATURES.yml3
-rw-r--r--tests/wpt/tests/css/selectors/invalidation/has-with-nesting-parent-containing-complex.html158
-rw-r--r--tests/wpt/tests/css/selectors/nth-last-child-invalid.html24
-rw-r--r--tests/wpt/tests/css/selectors/parsing/parse-part.html2
-rw-r--r--tests/wpt/tests/css/support/color-testcommon.js39
-rw-r--r--tests/wpt/tests/custom-elements/ElementInternals-role.html192
-rw-r--r--tests/wpt/tests/custom-elements/WEB_FEATURES.yml45
-rw-r--r--tests/wpt/tests/digital-credentials/non-fully-active.https.html12
-rw-r--r--tests/wpt/tests/docs/writing-tests/testdriver.md6
-rw-r--r--tests/wpt/tests/dom/abort/abort-signal-any-crash.html23
-rw-r--r--tests/wpt/tests/dom/nodes/moveBefore/tentative/popover-preserve.html22
-rw-r--r--tests/wpt/tests/dom/observable/tentative/observable-filter.any.js4
-rw-r--r--tests/wpt/tests/editing/crashtests/replace-body-after-designMode-off-and-making-editing-host.html17
-rw-r--r--tests/wpt/tests/editing/manual/contenteditable-insertfromdrop-type-inputevent-data-manual.html27
-rw-r--r--tests/wpt/tests/editing/manual/textarea-insertfromdrop-type-inputevent-data-manual.html29
-rw-r--r--tests/wpt/tests/editing/other/fire-selection-change-on-deleting-empty-element.html25
-rw-r--r--tests/wpt/tests/editing/other/html-text-copy-paste-of-anchor-with-href-in-content-editable.html31
-rw-r--r--tests/wpt/tests/editing/other/plain-text-copy-paste-of-paragraph-ending-with-non-layed-out-content.html121
-rw-r--r--tests/wpt/tests/editing/other/selection-change-not-fired-if-selection-set-to-root.html23
-rw-r--r--tests/wpt/tests/encrypted-media/util/drm-messagehandler.js20
-rw-r--r--tests/wpt/tests/encrypted-media/util/utils.js8
-rw-r--r--tests/wpt/tests/event-timing/TapToStopFling.html77
-rw-r--r--tests/wpt/tests/event-timing/interactionid-keyboard-event-simulated-click-button-space.html33
-rw-r--r--tests/wpt/tests/event-timing/interactionid-keyboard-event-simulated-click-checkbox-space.html34
-rw-r--r--tests/wpt/tests/event-timing/interactionid-keyboard-event-simulated-click-link-enter.html36
-rw-r--r--tests/wpt/tests/event-timing/resources/event-timing-test-utils.js52
-rw-r--r--tests/wpt/tests/fedcm/fedcm-disconnect-iframe.sub.https.html6
-rw-r--r--tests/wpt/tests/fedcm/fedcm-identity-assertion-nocors.https.html9
-rw-r--r--tests/wpt/tests/fedcm/fedcm-iframe.https.html6
-rw-r--r--tests/wpt/tests/fedcm/fedcm-same-site-none.https.html25
-rw-r--r--tests/wpt/tests/fedcm/fedcm-same-site-none/fedcm-same-site-none.https.html25
-rw-r--r--tests/wpt/tests/fedcm/fedcm-userinfo.https.html13
-rw-r--r--tests/wpt/tests/fedcm/lfedcm-identity.create-store-collect.tentative.sub.https.html332
-rw-r--r--tests/wpt/tests/fedcm/lfedcm-identity.discovery.tentative.sub.https.html111
-rw-r--r--tests/wpt/tests/fedcm/support/acao-cors.py6
-rw-r--r--tests/wpt/tests/fedcm/support/fedcm-iframe.html1
-rw-r--r--tests/wpt/tests/fedcm/support/fedcm/disconnect-iframe.html1
-rw-r--r--tests/wpt/tests/fedcm/support/lfedcm-helpers.js43
-rw-r--r--tests/wpt/tests/fedcm/support/lfedcm-identity.provider-create.sub.html35
-rw-r--r--tests/wpt/tests/fedcm/support/lfedcm-identity.provider-delete.sub.html27
-rw-r--r--tests/wpt/tests/fedcm/support/no-cors.py2
-rw-r--r--tests/wpt/tests/fenced-frame/allow-attribute-src.https.html76
-rw-r--r--tests/wpt/tests/fenced-frame/document-activeelement.https.html5
-rw-r--r--tests/wpt/tests/fenced-frame/notify-event-prevent-caching.https.html101
-rw-r--r--tests/wpt/tests/focus/activeelement-after-nested-loses-focus.html83
-rw-r--r--tests/wpt/tests/fs/FileSystemObserver-sync-access-handle.https.tentative.worker.js84
-rw-r--r--tests/wpt/tests/fs/FileSystemObserver-unsupported-global.https.tentative.any.js5
-rw-r--r--tests/wpt/tests/fs/FileSystemObserver-writable-file-stream.https.tentative.any.js5
-rw-r--r--tests/wpt/tests/fs/FileSystemObserver.https.tentative.any.js6
-rw-r--r--tests/wpt/tests/fs/FileSystemObserver.https.tentative.window.js3
-rw-r--r--tests/wpt/tests/fs/resources/change-observer-scope-test.js102
-rw-r--r--tests/wpt/tests/fs/resources/collecting-file-system-observer.js152
-rw-r--r--tests/wpt/tests/fs/resources/message-target.js20
-rw-r--r--tests/wpt/tests/fs/resources/test-helpers.js9
-rw-r--r--tests/wpt/tests/fs/script-tests/FileSystemObserver-writable-file-stream.js49
-rw-r--r--tests/wpt/tests/fs/script-tests/FileSystemObserver.js392
-rw-r--r--tests/wpt/tests/fullscreen/api/element-request-fullscreen-without-user-activation.tentative.https.html30
-rw-r--r--tests/wpt/tests/html-aam/roles-contextual.html13
-rw-r--r--tests/wpt/tests/html-aam/roles-contextual.tentative.html36
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.writingmode-expected.html17
-rw-r--r--tests/wpt/tests/html/canvas/element/text/2d.text.writingmode.html21
-rw-r--r--tests/wpt/tests/html/canvas/tools/name2dir-canvas.yaml1
-rw-r--r--tests/wpt/tests/html/canvas/tools/name2dir.yaml1
-rw-r--r--tests/wpt/tests/html/canvas/tools/yaml-new/scroll.yaml71
-rw-r--r--tests/wpt/tests/html/canvas/tools/yaml-new/text.yaml17
-rw-r--r--tests/wpt/tests/html/select/select-capitalize-sizing-ref.html16
-rw-r--r--tests/wpt/tests/html/select/select-capitalize-sizing.html22
-rw-r--r--tests/wpt/tests/html/semantics/embedded-content/the-img-element/decode/image-decode-path-changes.html32
-rw-r--r--tests/wpt/tests/html/semantics/embedded-content/the-img-element/decode/image-decode-with-quick-attach.html12
-rw-r--r--tests/wpt/tests/html/semantics/embedded-content/the-img-element/empty-src-no-current-request.html45
-rw-r--r--tests/wpt/tests/html/semantics/embedded-content/the-img-element/update-the-image-data/current-request-microtask-002.html27
-rw-r--r--tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-child-button-and-datalist-invalidation.tentative.html2
-rw-r--r--tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-child-button-and-datalist.tentative.html2
-rw-r--r--tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-datalist-popover-behavior.tentative.html2
-rw-r--r--tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-keyboard-behavior.tentative.html4
-rw-r--r--tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-mouse-behavior.tentative.html2
-rw-r--r--tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-open-invalidation.tentative.html2
-rw-r--r--tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/selectedoption.tentative.html8
-rw-r--r--tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-form-state-restore.tentative.html39
-rw-r--r--tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-popover.tentative.html102
-rw-r--r--tests/wpt/tests/html/semantics/interactive-elements/the-dialog-element/child-sequential-focus.html12
-rw-r--r--tests/wpt/tests/html/semantics/scripting-1/the-script-element/remove-src-attr-prepare-a-script.html35
-rw-r--r--tests/wpt/tests/images/blank-highlight.pngbin0 -> 1613 bytes
-rw-r--r--tests/wpt/tests/infrastructure/metadata/infrastructure/webdriver/bidi/subscription.html.ini2
-rw-r--r--tests/wpt/tests/infrastructure/webdriver/bidi/subscription.html26
-rw-r--r--tests/wpt/tests/input-events/contenteditable-insertfrompaste-type-inputevent-data.html34
-rw-r--r--tests/wpt/tests/input-events/textarea-insertfrompaste-type-inputevent-data.html30
-rw-r--r--tests/wpt/tests/language_detection/canDetect.tentative.window.js9
-rw-r--r--tests/wpt/tests/language_detection/detect-en.tentative.window.js14
-rw-r--r--tests/wpt/tests/lint.ignore3
-rw-r--r--tests/wpt/tests/mathml/presentation-markup/mpadded/mpadded-rendering-from-in-flow.html60
-rw-r--r--tests/wpt/tests/mathml/presentation-markup/mrow/stretch-along-block-axis-001.html1
-rw-r--r--tests/wpt/tests/mathml/presentation-markup/scripts/scripts-rendering-from-in-flow.html235
-rw-r--r--tests/wpt/tests/mathml/presentation-markup/tokens/tokens-rendering-from-in-flow.html75
-rw-r--r--tests/wpt/tests/mediacapture-streams/GUM-permissions-query.https.html56
-rw-r--r--tests/wpt/tests/navigation-api/navigation-methods/navigate-relative-url-utf8.html23
-rw-r--r--tests/wpt/tests/permissions/all-permissions.html6
-rw-r--r--tests/wpt/tests/pointerevents/pointerevent-boundary-event-target-when-hover-generates-content-under-pointer.html55
-rw-r--r--tests/wpt/tests/pointerevents/pointerevent_click_is_a_pointerevent.html2
-rw-r--r--tests/wpt/tests/private-aggregation/private-aggregation-permissions-policy-default.https.sub.html4
-rw-r--r--tests/wpt/tests/private-aggregation/private-aggregation-permissions-policy-none.https.sub.html4
-rw-r--r--tests/wpt/tests/private-aggregation/private-aggregation-permissions-policy-self.https.sub.html4
-rw-r--r--tests/wpt/tests/private-aggregation/resources/util.js6
-rw-r--r--tests/wpt/tests/resources/testdriver.js94
-rw-r--r--tests/wpt/tests/scroll-animations/crashtests/viewport-100vh.html22
-rw-r--r--tests/wpt/tests/scroll-animations/css/animation-shorthand.html36
-rw-r--r--tests/wpt/tests/scroll-animations/css/view-timeline-range-update-reversed-animation.html18
-rw-r--r--tests/wpt/tests/scroll-to-text-fragment/drag-selection-over-target-text.html53
-rw-r--r--tests/wpt/tests/scroll-to-text-fragment/find-range-from-text-directive-target.html21
-rw-r--r--tests/wpt/tests/scroll-to-text-fragment/find-range-from-text-directive.html25
-rw-r--r--tests/wpt/tests/scroll-to-text-fragment/sequential-focus.html22
-rw-r--r--tests/wpt/tests/selection/move-paragraphboundary-cross-editing-boundary.tentative.html28
-rw-r--r--tests/wpt/tests/selection/selection-content-visibility-hidden.html24
-rw-r--r--tests/wpt/tests/selection/selection-nested-video.html6
-rw-r--r--tests/wpt/tests/selection/shadow-dom/select-later-become-slotted-content.tentative.html (renamed from tests/wpt/tests/selection/shadow-dom/select-later-become-slotted-content.html)0
-rw-r--r--tests/wpt/tests/serial/requestPort/sandboxed_iframe.https.window.js4
-rw-r--r--tests/wpt/tests/shadow-dom/leaktests/selection.html53
-rw-r--r--tests/wpt/tests/shadow-dom/selection-getComposedRanges-collapsed.tentative.html81
-rw-r--r--tests/wpt/tests/shadow-dom/selection-getComposedRanges.tentative.html37
-rw-r--r--tests/wpt/tests/shared-storage-selecturl-limit/run-url-selection-operation-limit-multiple-sites.tentative.https.sub.html21
-rw-r--r--tests/wpt/tests/shared-storage-selecturl-limit/run-url-selection-operation-limit.tentative.https.sub.html2
-rw-r--r--tests/wpt/tests/shared-storage-selecturl-limit/select-url-limit-multiple-worklets.tentative.https.sub.html2
-rw-r--r--tests/wpt/tests/shared-storage/add-module-cross-origin-script.tentative.https.sub.html40
-rw-r--r--tests/wpt/tests/shared-storage/add-module-or-create-worklet-with-data-url.tentative.https.sub.html42
-rw-r--r--tests/wpt/tests/shared-storage/add-module.tentative.https.sub.html5
-rw-r--r--tests/wpt/tests/shared-storage/cross-origin-create-worklet-credentials-include.tentative.https.sub.html47
-rw-r--r--tests/wpt/tests/shared-storage/cross-origin-create-worklet-credentials-omit.tentative.https.sub.html46
-rw-r--r--tests/wpt/tests/shared-storage/cross-origin-create-worklet-credentials-same-origin.tentative.https.sub.html46
-rw-r--r--tests/wpt/tests/shared-storage/cross-origin-create-worklet-failure-false-shared-storage-cross-origin-worklet-allowed.tentative.https.sub.html31
-rw-r--r--tests/wpt/tests/shared-storage/cross-origin-create-worklet-failure-missing-access-control-allow-credentials.tentative.https.sub.html41
-rw-r--r--tests/wpt/tests/shared-storage/cross-origin-create-worklet-failure-missing-access-control-allow-origin.tentative.https.sub.html40
-rw-r--r--tests/wpt/tests/shared-storage/cross-origin-create-worklet-failure-missing-shared-storage-cross-origin-worklet-allowed.tentative.https.sub.html30
-rw-r--r--tests/wpt/tests/shared-storage/cross-origin-create-worklet-false-shared-storage-cross-origin-worklet-allowed.tentative.https.sub.html66
-rw-r--r--tests/wpt/tests/shared-storage/cross-origin-create-worklet-missing-shared-storage-cross-origin-worklet-allowed.tentative.https.sub.html60
-rw-r--r--tests/wpt/tests/shared-storage/cross-origin-worklet-select-url-and-verify-data-origin.tentative.https.sub.html32
-rw-r--r--tests/wpt/tests/shared-storage/resources/cross-origin-worklet-in-sandboxed-frame-inner.https.sub.html4
-rw-r--r--tests/wpt/tests/shared-storage/resources/simple-module2.js20
-rw-r--r--tests/wpt/tests/shared-storage/resources/simple-module2.js.headers1
-rw-r--r--tests/wpt/tests/shared-storage/resources/util.sub.js18
-rw-r--r--tests/wpt/tests/shared-storage/resources/verify-shared-storage.https.html3
-rw-r--r--tests/wpt/tests/shared-storage/select-url-permissions-policy-default.tentative.https.sub.html2
-rw-r--r--tests/wpt/tests/shared-storage/select-url-permissions-policy-none.tentative.https.sub.html2
-rw-r--r--tests/wpt/tests/shared-storage/select-url-permissions-policy-self.tentative.https.sub.html2
-rw-r--r--tests/wpt/tests/shared-storage/shared-storage-in-sandboxed-iframe.tentative.https.html16
-rw-r--r--tests/wpt/tests/shared-storage/shared-storage-permissions-policy-default.tentative.https.sub.html2
-rw-r--r--tests/wpt/tests/shared-storage/shared-storage-permissions-policy-none.tentative.https.sub.html2
-rw-r--r--tests/wpt/tests/shared-storage/shared-storage-permissions-policy-self.tentative.https.sub.html2
-rw-r--r--tests/wpt/tests/speculation-rules/prerender/no-vary-search.https.html16
-rw-r--r--tests/wpt/tests/speculation-rules/prerender/resources/utils.js4
-rw-r--r--tests/wpt/tests/storage-access-api/requestStorageAccess-sandboxed-iframe-allow-storage-access.sub.https.window.js71
-rw-r--r--tests/wpt/tests/storage-access-api/requestStorageAccess-sandboxed-iframe-no-storage-access.sub.https.window.js53
-rw-r--r--tests/wpt/tests/storage-access-api/requestStorageAccess-sandboxed-iframe.sub.https.window.js82
-rw-r--r--tests/wpt/tests/storage-access-api/resources/embedded_responder.js3
-rw-r--r--tests/wpt/tests/storage-access-api/storage-access-permission.sub.https.window.js24
-rw-r--r--tests/wpt/tests/streams/transferable/transfer-with-messageport.window.js12
-rw-r--r--tests/wpt/tests/svg/struct/reftests/support/html-resource-with-doctype-and-symbol.html8
-rw-r--r--tests/wpt/tests/svg/struct/reftests/support/html-resource-with-symbol-and-content-type-svg.html7
-rw-r--r--tests/wpt/tests/svg/struct/reftests/support/html-resource-with-symbol-and-content-type-svg.html.headers1
-rw-r--r--tests/wpt/tests/svg/struct/reftests/support/html-resource-with-symbol.html7
-rw-r--r--tests/wpt/tests/svg/struct/reftests/use-external-html-resource-with-content-type-svg.html8
-rw-r--r--tests/wpt/tests/svg/struct/reftests/use-external-html-resource-with-doctype.html8
-rw-r--r--tests/wpt/tests/svg/struct/reftests/use-external-html-resource.html8
-rw-r--r--tests/wpt/tests/tools/metadata/webfeatures/schema.py28
-rw-r--r--tests/wpt/tests/tools/metadata/webfeatures/tests/test_schema.py28
-rw-r--r--tests/wpt/tests/tools/requirements_mypy.txt2
-rw-r--r--tests/wpt/tests/tools/requirements_pytest.txt2
-rw-r--r--tests/wpt/tests/tools/web_features/tests/test_web_feature_map.py19
-rw-r--r--tests/wpt/tests/tools/web_features/web_feature_map.py19
-rw-r--r--tests/wpt/tests/tools/webdriver/webdriver/bidi/protocol.py106
-rw-r--r--tests/wpt/tests/tools/webdriver/webdriver/protocol.py5
-rw-r--r--tests/wpt/tests/tools/webdriver/webdriver/transport.py23
-rw-r--r--tests/wpt/tests/tools/wpt/android.py2
-rw-r--r--tests/wpt/tests/tools/wpt/browser.py9
-rw-r--r--tests/wpt/tests/tools/wptrunner/requirements_firefox.txt2
-rw-r--r--tests/wpt/tests/tools/wptrunner/wptrunner/browsers/chrome.py90
-rw-r--r--tests/wpt/tests/tools/wptrunner/wptrunner/browsers/headless_shell.py8
-rw-r--r--tests/wpt/tests/tools/wptrunner/wptrunner/executors/actions.py14
-rw-r--r--tests/wpt/tests/tools/wptrunner/wptrunner/executors/asyncactions.py30
-rw-r--r--tests/wpt/tests/tools/wptrunner/wptrunner/executors/base.py58
-rw-r--r--tests/wpt/tests/tools/wptrunner/wptrunner/executors/executorchrome.py6
-rw-r--r--tests/wpt/tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py339
-rw-r--r--tests/wpt/tests/tools/wptrunner/wptrunner/executors/protocol.py89
-rw-r--r--tests/wpt/tests/tools/wptrunner/wptrunner/testdriver-extra.js146
-rw-r--r--tests/wpt/tests/tools/wptrunner/wptrunner/testrunner.py8
-rw-r--r--tests/wpt/tests/trusted-types/Node-multiple-arguments-tt-enforced.html89
-rw-r--r--tests/wpt/tests/trusted-types/block-Node-multiple-arguments.html91
-rw-r--r--tests/wpt/tests/trusted-types/block-string-assignment-to-Document-parseHTMLUnsafe.html4
-rw-r--r--tests/wpt/tests/urlpattern/WEB_FEATURES.yml3
-rw-r--r--tests/wpt/tests/wai-aria/role/contextual-roles.html4
-rw-r--r--tests/wpt/tests/wai-aria/role/contextual-roles.tentative.html30
-rw-r--r--tests/wpt/tests/web-animations/animation-model/animation-types/property-list.js153
-rw-r--r--tests/wpt/tests/webauthn/public-key-credential-creation-options-from-json.https.window.js81
-rw-r--r--tests/wpt/tests/webauthn/public-key-credential-request-options-from-json.https.window.js41
-rw-r--r--tests/wpt/tests/webdriver/tests/bidi/__init__.py4
-rw-r--r--tests/wpt/tests/webdriver/tests/bidi/browsing_context/close/prompt_unload.py4
-rw-r--r--tests/wpt/tests/webdriver/tests/bidi/browsing_context/navigate/navigate.py64
-rw-r--r--tests/wpt/tests/webdriver/tests/bidi/browsing_context/navigation_failed/__init__.py0
-rw-r--r--tests/wpt/tests/webdriver/tests/bidi/browsing_context/navigation_failed/navigation_failed.py435
-rw-r--r--tests/wpt/tests/webdriver/tests/bidi/browsing_context/navigation_started/navigation_started.py75
-rw-r--r--tests/wpt/tests/webdriver/tests/bidi/browsing_context/reload/wait.py17
-rw-r--r--tests/wpt/tests/webdriver/tests/bidi/integration/cookies_with_network_events.py19
-rw-r--r--tests/wpt/tests/webdriver/tests/bidi/network/__init__.py27
-rw-r--r--tests/wpt/tests/webdriver/tests/bidi/network/auth_required/auth_required.py52
-rw-r--r--tests/wpt/tests/webdriver/tests/bidi/network/before_request_sent/before_request_sent.py5
-rw-r--r--tests/wpt/tests/webdriver/tests/bidi/network/conftest.py42
-rw-r--r--tests/wpt/tests/webdriver/tests/bidi/network/fetch_error/fetch_error.py56
-rw-r--r--tests/wpt/tests/webdriver/tests/bidi/network/response_completed/response_completed.py5
-rw-r--r--tests/wpt/tests/webdriver/tests/bidi/network/response_started/response_started.py5
-rw-r--r--tests/wpt/tests/webdriver/tests/bidi/storage/conftest.py11
-rw-r--r--tests/wpt/tests/webdriver/tests/classic/element_click/scroll_into_view.py11
-rw-r--r--tests/wpt/tests/webdriver/tests/support/fixtures_bidi.py29
-rw-r--r--tests/wpt/tests/webnn/META.yml2
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/abs.https.any.js320
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/add.https.any.js582
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/arg_min_max.https.any.js600
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/batch_normalization.https.any.js709
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/buffer.https.any.js1033
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/cast.https.any.js1416
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/ceil.https.any.js260
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/clamp.https.any.js909
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/compute-arraybufferview-with-bigger-arraybuffer.https.any.js10
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/concat.https.any.js2430
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/constant.https.any.js13
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/conv2d.https.any.js1109
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/conv_transpose2d.https.any.js1481
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/cos.https.any.js297
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/div.https.any.js528
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/elementwise_unary.https.any.js18
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/elu.https.any.js398
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/equal.https.any.js531
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/erf.https.any.js297
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/exp.https.any.js297
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/expand.https.any.js723
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/floor.https.any.js261
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/gather.https.any.js966
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/gelu.https.any.js511
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/gemm.https.any.js1293
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/greater.https.any.js531
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/greater_or_equal.https.any.js532
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/hard_sigmoid.https.any.js676
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/hard_swish.https.any.js363
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/identity.https.any.js297
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/instance_normalization.https.any.js355
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/layer_normalization.https.any.js550
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/leaky_relu.https.any.js415
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/lesser.https.any.js531
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/lesser_or_equal.https.any.js532
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/linear.https.any.js532
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/log.https.any.js297
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/logical_not.https.any.js214
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/matmul.https.any.js571
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/max.https.any.js528
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/min.https.any.js528
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/mul.https.any.js532
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/neg.https.any.js319
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/pad.https.any.js728
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/parallel-compute.https.any.js45
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/pooling.https.any.js2298
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/pow.https.any.js605
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/prelu.https.any.js618
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/reciprocal.https.any.js297
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/reduce_l1.https.any.js628
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/reduce_l2.https.any.js627
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/reduce_log_sum.https.any.js579
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/reduce_log_sum_exp.https.any.js640
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/reduce_max.https.any.js549
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/reduce_mean.https.any.js633
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/reduce_min.https.any.js549
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/reduce_product.https.any.js548
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/reduce_sum.https.any.js630
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/reduce_sum_square.https.any.js661
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/reduction.https.any.js26
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/relu.https.any.js362
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/resample2d.https.any.js433
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/reshape.https.any.js1282
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/sigmoid.https.any.js268
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/sin.https.any.js297
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/slice.https.any.js242
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/softmax.https.any.js224
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/softplus.https.any.js267
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/softsign.https.any.js307
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/split.https.any.js513
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/sqrt.https.any.js297
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/sub.https.any.js528
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/tan.https.any.js297
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/tanh.https.any.js267
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/transpose.https.any.js482
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/triangular.https.any.js777
-rw-r--r--tests/wpt/tests/webnn/conformance_tests/where.https.any.js1017
-rw-r--r--tests/wpt/tests/webnn/idlharness.https.any.js6
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/abs.json401
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/add.json928
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/arg_max.json768
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/arg_min.json768
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/average_pool2d.json1496
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/batch_normalization.json1092
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/cast.json3040
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/ceil.json401
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/clamp.json1169
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/concat.json3666
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/constant.json754
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/conv2d.json1697
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/conv_transpose2d.json2013
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/cos.json401
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/div.json882
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/elu.json539
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/equal.json982
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/erf.json421
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/exp.json401
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/expand.json994
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/floor.json401
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/gather.json1495
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/gelu.json771
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/gemm.json1953
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/greater.json982
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/greater_or_equal.json970
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/hard_sigmoid.json957
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/hard_swish.json401
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/identity.json422
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/instance_normalization.json519
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/l2_pool2d.json1174
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/layer_normalization.json842
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/leaky_relu.json609
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/lesser.json970
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/lesser_or_equal.json970
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/linear.json818
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/log.json401
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/logical_not.json421
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/matmul.json1055
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/max.json882
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/max_pool2d.json1104
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/min.json882
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/mul.json882
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/neg.json401
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/pad.json797
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/pow.json880
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/prelu.json994
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/reciprocal.json421
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/reduce_l1.json784
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/reduce_l2.json784
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/reduce_log_sum.json704
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/reduce_log_sum_exp.json784
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/reduce_max.json664
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/reduce_mean.json776
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/reduce_min.json664
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/reduce_product.json664
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/reduce_sum.json776
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/reduce_sum_square.json784
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/relu.json401
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/resample2d.json527
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/reshape.json2056
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/sigmoid.json401
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/sin.json401
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/slice.json311
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/softmax.json290
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/softplus.json401
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/softsign.json467
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/split.json744
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/sqrt.json421
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/sub.json882
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/tan.json401
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/tanh.json401
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/transpose.json746
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/triangular.json1101
-rw-r--r--tests/wpt/tests/webnn/resources/test_data/where.json1817
-rw-r--r--tests/wpt/tests/webnn/resources/utils.js2515
-rw-r--r--tests/wpt/tests/webnn/resources/utils_validation.js79
-rw-r--r--tests/wpt/tests/webnn/validation_tests/argMinMax.https.any.js117
-rw-r--r--tests/wpt/tests/webnn/validation_tests/batchNormalization.https.any.js38
-rw-r--r--tests/wpt/tests/webnn/validation_tests/build-more-than-once.https.any.js95
-rw-r--r--tests/wpt/tests/webnn/validation_tests/clamp.https.any.js33
-rw-r--r--tests/wpt/tests/webnn/validation_tests/compute-multiple-arraybufferviews-sharing-same-arraybuffer.https.any.js74
-rw-r--r--tests/wpt/tests/webnn/validation_tests/concat.https.any.js83
-rw-r--r--tests/wpt/tests/webnn/validation_tests/constant-changed-buffer.https.any.js3
-rw-r--r--tests/wpt/tests/webnn/validation_tests/constant.https.any.js1
-rw-r--r--tests/wpt/tests/webnn/validation_tests/conv2d.https.any.js48
-rw-r--r--tests/wpt/tests/webnn/validation_tests/convTranspose2d.https.any.js58
-rw-r--r--tests/wpt/tests/webnn/validation_tests/createContext.https.any.js47
-rw-r--r--tests/wpt/tests/webnn/validation_tests/elementwise-binary.https.any.js1
-rw-r--r--tests/wpt/tests/webnn/validation_tests/elementwise-logical.https.any.js6
-rw-r--r--tests/wpt/tests/webnn/validation_tests/elementwise-unary.https.any.js25
-rw-r--r--tests/wpt/tests/webnn/validation_tests/elu.https.any.js35
-rw-r--r--tests/wpt/tests/webnn/validation_tests/expand.https.any.js1
-rw-r--r--tests/wpt/tests/webnn/validation_tests/gather.https.any.js1
-rw-r--r--tests/wpt/tests/webnn/validation_tests/gelu.https.any.js3
-rw-r--r--tests/wpt/tests/webnn/validation_tests/gemm.https.any.js1
-rw-r--r--tests/wpt/tests/webnn/validation_tests/gru.https.any.js20
-rw-r--r--tests/wpt/tests/webnn/validation_tests/gruCell.https.any.js81
-rw-r--r--tests/wpt/tests/webnn/validation_tests/hardSigmoid.https.any.js20
-rw-r--r--tests/wpt/tests/webnn/validation_tests/hardSwish.https.any.js3
-rw-r--r--tests/wpt/tests/webnn/validation_tests/input.https.any.js1
-rw-r--r--tests/wpt/tests/webnn/validation_tests/instanceNormalization.https.any.js1
-rw-r--r--tests/wpt/tests/webnn/validation_tests/layerNormalization.https.any.js1
-rw-r--r--tests/wpt/tests/webnn/validation_tests/leakyRelu.https.any.js20
-rw-r--r--tests/wpt/tests/webnn/validation_tests/linear.https.any.js20
-rw-r--r--tests/wpt/tests/webnn/validation_tests/lstm.https.any.js20
-rw-r--r--tests/wpt/tests/webnn/validation_tests/lstmCell.https.any.js24
-rw-r--r--tests/wpt/tests/webnn/validation_tests/matmul.https.any.js1
-rw-r--r--tests/wpt/tests/webnn/validation_tests/pad.https.any.js1
-rw-r--r--tests/wpt/tests/webnn/validation_tests/pooling-and-reduction-keep-dims.https.any.js4
-rw-r--r--tests/wpt/tests/webnn/validation_tests/pooling.https.any.js33
-rw-r--r--tests/wpt/tests/webnn/validation_tests/prelu.https.any.js1
-rw-r--r--tests/wpt/tests/webnn/validation_tests/reduction.https.any.js1
-rw-r--r--tests/wpt/tests/webnn/validation_tests/relu.https.any.js3
-rw-r--r--tests/wpt/tests/webnn/validation_tests/resample2d.https.any.js1
-rw-r--r--tests/wpt/tests/webnn/validation_tests/reshape.https.any.js1
-rw-r--r--tests/wpt/tests/webnn/validation_tests/sigmoid.https.any.js3
-rw-r--r--tests/wpt/tests/webnn/validation_tests/slice.https.any.js1
-rw-r--r--tests/wpt/tests/webnn/validation_tests/softmax.https.any.js56
-rw-r--r--tests/wpt/tests/webnn/validation_tests/softplus.https.any.js3
-rw-r--r--tests/wpt/tests/webnn/validation_tests/softsign.https.any.js3
-rw-r--r--tests/wpt/tests/webnn/validation_tests/split.https.any.js1
-rw-r--r--tests/wpt/tests/webnn/validation_tests/tanh.https.any.js3
-rw-r--r--tests/wpt/tests/webnn/validation_tests/transpose.https.any.js1
-rw-r--r--tests/wpt/tests/webnn/validation_tests/triangular.https.any.js4
-rw-r--r--tests/wpt/tests/webnn/validation_tests/where.https.any.js1
-rw-r--r--tests/wpt/tests/webrtc/RTCDataChannel-send-close.html6
-rw-r--r--tests/wpt/tests/webrtc/idlharness.https.window.js2
-rw-r--r--tests/wpt/tests/webtransport/close.https.any.js27
-rw-r--r--tests/wpt/tests/webtransport/handlers/server-read-then-close.py9
-rw-r--r--tests/wpt/tests/webusb/requestDevice/sandboxed_iframe.https.window.js5
1641 files changed, 95420 insertions, 93403 deletions
diff --git a/tests/wpt/meta-legacy-layout/FileAPI/BlobURL/cross-partition.tentative.https.html.ini b/tests/wpt/meta-legacy-layout/FileAPI/BlobURL/cross-partition.tentative.https.html.ini
index 195c812d450..eae4d635a80 100644
--- a/tests/wpt/meta-legacy-layout/FileAPI/BlobURL/cross-partition.tentative.https.html.ini
+++ b/tests/wpt/meta-legacy-layout/FileAPI/BlobURL/cross-partition.tentative.https.html.ini
@@ -11,3 +11,15 @@
[Blob URL shouldn't be revocable from a service worker]
expected: NOTRUN
+
+ [Blob URL shouldn't be fetched from a cross-partition iframe]
+ expected: NOTRUN
+
+ [Blob URL shouldn't be fetched from a cross-partition dedicated worker]
+ expected: NOTRUN
+
+ [Blob URL shouldn't be fetched from a cross-partition shared worker]
+ expected: NOTRUN
+
+ [Blob URL shouldn't be fetched from a cross-partition service worker]
+ expected: NOTRUN
diff --git a/tests/wpt/meta-legacy-layout/FileAPI/idlharness.any.js.ini b/tests/wpt/meta-legacy-layout/FileAPI/idlharness.any.js.ini
index 1825bb55774..5f76d3bb997 100644
--- a/tests/wpt/meta-legacy-layout/FileAPI/idlharness.any.js.ini
+++ b/tests/wpt/meta-legacy-layout/FileAPI/idlharness.any.js.ini
@@ -1,10 +1,4 @@
[idlharness.any.worker.html]
- [Blob interface: operation text()]
- expected: FAIL
-
- [Blob interface: operation arrayBuffer()]
- expected: FAIL
-
[FileReader interface: operation readAsBinaryString(Blob)]
expected: FAIL
@@ -25,12 +19,6 @@
[idlharness.any.html]
- [Blob interface: operation text()]
- expected: FAIL
-
- [Blob interface: operation arrayBuffer()]
- expected: FAIL
-
[FileReader interface: operation readAsBinaryString(Blob)]
expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/FileAPI/idlharness.html.ini b/tests/wpt/meta-legacy-layout/FileAPI/idlharness.html.ini
index 2f31759dca4..42bcbebf816 100644
--- a/tests/wpt/meta-legacy-layout/FileAPI/idlharness.html.ini
+++ b/tests/wpt/meta-legacy-layout/FileAPI/idlharness.html.ini
@@ -18,11 +18,5 @@
[File API automated IDL tests]
expected: FAIL
- [Blob interface: operation text()]
- expected: FAIL
-
- [Blob interface: operation arrayBuffer()]
- expected: FAIL
-
[Blob interface: operation bytes()]
expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/FileAPI/idlharness.worker.js.ini b/tests/wpt/meta-legacy-layout/FileAPI/idlharness.worker.js.ini
index a76b974ec4e..6d4388398b0 100644
--- a/tests/wpt/meta-legacy-layout/FileAPI/idlharness.worker.js.ini
+++ b/tests/wpt/meta-legacy-layout/FileAPI/idlharness.worker.js.ini
@@ -30,11 +30,5 @@
[idlharness]
expected: FAIL
- [Blob interface: operation text()]
- expected: FAIL
-
- [Blob interface: operation arrayBuffer()]
- expected: FAIL
-
[Blob interface: operation bytes()]
expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/content-security-policy/unsafe-eval/eval-blocked-in-about-blank-iframe.html.ini b/tests/wpt/meta-legacy-layout/content-security-policy/unsafe-eval/eval-blocked-in-about-blank-iframe.html.ini
new file mode 100644
index 00000000000..d47972783e3
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/content-security-policy/unsafe-eval/eval-blocked-in-about-blank-iframe.html.ini
@@ -0,0 +1,4 @@
+[eval-blocked-in-about-blank-iframe.html]
+ expected: ERROR
+ [eval-blocked-in-about-blank-iframe]
+ expected: TIMEOUT
diff --git a/tests/wpt/meta-legacy-layout/content-security-policy/wasm-unsafe-eval/default-src-blocks-wasm.any.js.ini b/tests/wpt/meta-legacy-layout/content-security-policy/wasm-unsafe-eval/default-src-blocks-wasm.any.js.ini
new file mode 100644
index 00000000000..d0595784641
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/content-security-policy/wasm-unsafe-eval/default-src-blocks-wasm.any.js.ini
@@ -0,0 +1,12 @@
+[default-src-blocks-wasm.any.html]
+
+[default-src-blocks-wasm.any.worker.html]
+ [default-src-blocks-wasm]
+ expected: FAIL
+
+
+[default-src-blocks-wasm.any.serviceworker.html]
+ expected: ERROR
+
+[default-src-blocks-wasm.any.sharedworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta-legacy-layout/content-security-policy/wasm-unsafe-eval/default-src-unsafe-eval-allows-wasm.any.js.ini b/tests/wpt/meta-legacy-layout/content-security-policy/wasm-unsafe-eval/default-src-unsafe-eval-allows-wasm.any.js.ini
new file mode 100644
index 00000000000..4301d110d5e
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/content-security-policy/wasm-unsafe-eval/default-src-unsafe-eval-allows-wasm.any.js.ini
@@ -0,0 +1,9 @@
+[default-src-unsafe-eval-allows-wasm.any.sharedworker.html]
+ expected: ERROR
+
+[default-src-unsafe-eval-allows-wasm.any.worker.html]
+
+[default-src-unsafe-eval-allows-wasm.any.html]
+
+[default-src-unsafe-eval-allows-wasm.any.serviceworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta-legacy-layout/content-security-policy/wasm-unsafe-eval/default-src-wasm-unsafe-eval-allows-wasm.any.js.ini b/tests/wpt/meta-legacy-layout/content-security-policy/wasm-unsafe-eval/default-src-wasm-unsafe-eval-allows-wasm.any.js.ini
new file mode 100644
index 00000000000..3bc5f81eb0d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/content-security-policy/wasm-unsafe-eval/default-src-wasm-unsafe-eval-allows-wasm.any.js.ini
@@ -0,0 +1,9 @@
+[default-src-wasm-unsafe-eval-allows-wasm.any.sharedworker.html]
+ expected: ERROR
+
+[default-src-wasm-unsafe-eval-allows-wasm.any.worker.html]
+
+[default-src-wasm-unsafe-eval-allows-wasm.any.html]
+
+[default-src-wasm-unsafe-eval-allows-wasm.any.serviceworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta-legacy-layout/content-security-policy/wasm-unsafe-eval/postMessage-wasm-module.html.ini b/tests/wpt/meta-legacy-layout/content-security-policy/wasm-unsafe-eval/postMessage-wasm-module.html.ini
new file mode 100644
index 00000000000..f21d0ccfb10
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/content-security-policy/wasm-unsafe-eval/postMessage-wasm-module.html.ini
@@ -0,0 +1,4 @@
+[postMessage-wasm-module.html]
+ expected: ERROR
+ [Got the expected securitypolicyviolation in the iframe]
+ expected: TIMEOUT
diff --git a/tests/wpt/meta-legacy-layout/content-security-policy/wasm-unsafe-eval/script-src-blocks-wasm.any.js.ini b/tests/wpt/meta-legacy-layout/content-security-policy/wasm-unsafe-eval/script-src-blocks-wasm.any.js.ini
new file mode 100644
index 00000000000..3defa9a2684
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/content-security-policy/wasm-unsafe-eval/script-src-blocks-wasm.any.js.ini
@@ -0,0 +1,11 @@
+[script-src-blocks-wasm.any.html]
+
+[script-src-blocks-wasm.any.sharedworker.html]
+ expected: ERROR
+
+[script-src-blocks-wasm.any.serviceworker.html]
+ expected: ERROR
+
+[script-src-blocks-wasm.any.worker.html]
+ [script-src-blocks-wasm]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/content-security-policy/wasm-unsafe-eval/script-src-spv-asynch.any.js.ini b/tests/wpt/meta-legacy-layout/content-security-policy/wasm-unsafe-eval/script-src-spv-asynch.any.js.ini
new file mode 100644
index 00000000000..985d923a0b2
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/content-security-policy/wasm-unsafe-eval/script-src-spv-asynch.any.js.ini
@@ -0,0 +1,16 @@
+[script-src-spv-asynch.any.worker.html]
+ expected: TIMEOUT
+ [Securitypolicyviolation event looks like it should]
+ expected: TIMEOUT
+
+
+[script-src-spv-asynch.any.serviceworker.html]
+ expected: ERROR
+
+[script-src-spv-asynch.any.html]
+ [Securitypolicyviolation event looks like it should]
+ expected: FAIL
+
+
+[script-src-spv-asynch.any.sharedworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta-legacy-layout/content-security-policy/wasm-unsafe-eval/script-src-unsafe-eval-allows-wasm.any.js.ini b/tests/wpt/meta-legacy-layout/content-security-policy/wasm-unsafe-eval/script-src-unsafe-eval-allows-wasm.any.js.ini
new file mode 100644
index 00000000000..19e814e604f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/content-security-policy/wasm-unsafe-eval/script-src-unsafe-eval-allows-wasm.any.js.ini
@@ -0,0 +1,9 @@
+[script-src-unsafe-eval-allows-wasm.any.html]
+
+[script-src-unsafe-eval-allows-wasm.any.sharedworker.html]
+ expected: ERROR
+
+[script-src-unsafe-eval-allows-wasm.any.worker.html]
+
+[script-src-unsafe-eval-allows-wasm.any.serviceworker.html]
+ expected: ERROR
diff --git a/tests/wpt/meta-legacy-layout/content-security-policy/wasm-unsafe-eval/script-src-wasm-unsafe-eval-allows-wasm.any.js.ini b/tests/wpt/meta-legacy-layout/content-security-policy/wasm-unsafe-eval/script-src-wasm-unsafe-eval-allows-wasm.any.js.ini
new file mode 100644
index 00000000000..ac3d0924789
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/content-security-policy/wasm-unsafe-eval/script-src-wasm-unsafe-eval-allows-wasm.any.js.ini
@@ -0,0 +1,9 @@
+[script-src-wasm-unsafe-eval-allows-wasm.any.worker.html]
+
+[script-src-wasm-unsafe-eval-allows-wasm.any.sharedworker.html]
+ expected: ERROR
+
+[script-src-wasm-unsafe-eval-allows-wasm.any.serviceworker.html]
+ expected: ERROR
+
+[script-src-wasm-unsafe-eval-allows-wasm.any.html]
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/abspos/abspos-containing-block-initial-009e.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/abspos/abspos-containing-block-initial-009e.xht.ini
new file mode 100644
index 00000000000..e0539e77862
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/abspos/abspos-containing-block-initial-009e.xht.ini
@@ -0,0 +1,2 @@
+[abspos-containing-block-initial-009e.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/abspos/static-fixed-inside-abspos.html.ini b/tests/wpt/meta-legacy-layout/css/CSS2/abspos/static-fixed-inside-abspos.html.ini
new file mode 100644
index 00000000000..88f74804428
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/abspos/static-fixed-inside-abspos.html.ini
@@ -0,0 +1,2 @@
+[static-fixed-inside-abspos.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/abspos/table-caption-is-containing-block-001.html.ini b/tests/wpt/meta-legacy-layout/css/CSS2/abspos/table-caption-is-containing-block-001.html.ini
new file mode 100644
index 00000000000..66d3d601b7f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/abspos/table-caption-is-containing-block-001.html.ini
@@ -0,0 +1,2 @@
+[table-caption-is-containing-block-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/abspos/table-caption-passes-abspos-up-001.html.ini b/tests/wpt/meta-legacy-layout/css/CSS2/abspos/table-caption-passes-abspos-up-001.html.ini
new file mode 100644
index 00000000000..af9fd26b7b3
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/abspos/table-caption-passes-abspos-up-001.html.ini
@@ -0,0 +1,2 @@
+[table-caption-passes-abspos-up-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/backgrounds/background-root-023.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/backgrounds/background-root-023.xht.ini
new file mode 100644
index 00000000000..27270237b19
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/backgrounds/background-root-023.xht.ini
@@ -0,0 +1,2 @@
+[background-root-023.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/box-display/containing-block-007.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/box-display/containing-block-007.xht.ini
new file mode 100644
index 00000000000..0c000bb2cd3
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/box-display/containing-block-007.xht.ini
@@ -0,0 +1,2 @@
+[containing-block-007.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/box-display/containing-block-010.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/box-display/containing-block-010.xht.ini
new file mode 100644
index 00000000000..af40eef0a5d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/box-display/containing-block-010.xht.ini
@@ -0,0 +1,2 @@
+[containing-block-010.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/box-display/containing-block-021.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/box-display/containing-block-021.xht.ini
new file mode 100644
index 00000000000..bcb9c73edf7
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/box-display/containing-block-021.xht.ini
@@ -0,0 +1,2 @@
+[containing-block-021.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/floats-clear/clear-clearance-calculation-004.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/floats-clear/clear-clearance-calculation-004.xht.ini
new file mode 100644
index 00000000000..6e5799fc585
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/floats-clear/clear-clearance-calculation-004.xht.ini
@@ -0,0 +1,2 @@
+[clear-clearance-calculation-004.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/floats-clear/clear-on-parent-with-margins-no-clearance.html.ini b/tests/wpt/meta-legacy-layout/css/CSS2/floats-clear/clear-on-parent-with-margins-no-clearance.html.ini
new file mode 100644
index 00000000000..216939d7839
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/floats-clear/clear-on-parent-with-margins-no-clearance.html.ini
@@ -0,0 +1,2 @@
+[clear-on-parent-with-margins-no-clearance.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/floats-clear/clear-with-top-margin-after-cleared-empty-block.html.ini b/tests/wpt/meta-legacy-layout/css/CSS2/floats-clear/clear-with-top-margin-after-cleared-empty-block.html.ini
new file mode 100644
index 00000000000..c1602cdda56
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/floats-clear/clear-with-top-margin-after-cleared-empty-block.html.ini
@@ -0,0 +1,2 @@
+[clear-with-top-margin-after-cleared-empty-block.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/floats-clear/floats-041.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/floats-clear/floats-041.xht.ini
new file mode 100644
index 00000000000..b21db4dcaa7
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/floats-clear/floats-041.xht.ini
@@ -0,0 +1,2 @@
+[floats-041.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/floats-clear/margin-collapse-clear-015.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/floats-clear/margin-collapse-clear-015.xht.ini
new file mode 100644
index 00000000000..e228a3fcfa4
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/floats-clear/margin-collapse-clear-015.xht.ini
@@ -0,0 +1,2 @@
+[margin-collapse-clear-015.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/floats/float-under-flatten-under-preserve-3d.html.ini b/tests/wpt/meta-legacy-layout/css/CSS2/floats/float-under-flatten-under-preserve-3d.html.ini
new file mode 100644
index 00000000000..34417d4fee3
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/floats/float-under-flatten-under-preserve-3d.html.ini
@@ -0,0 +1,2 @@
+[float-under-flatten-under-preserve-3d.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/generated-content/before-after-positioned-002.html.ini b/tests/wpt/meta-legacy-layout/css/CSS2/generated-content/before-after-positioned-002.html.ini
new file mode 100644
index 00000000000..257a5fcd94c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/generated-content/before-after-positioned-002.html.ini
@@ -0,0 +1,2 @@
+[before-after-positioned-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/margin-padding-clear/margin-collapse-004.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/margin-padding-clear/margin-collapse-004.xht.ini
new file mode 100644
index 00000000000..d8dc0392e08
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/margin-padding-clear/margin-collapse-004.xht.ini
@@ -0,0 +1,2 @@
+[margin-collapse-004.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/margin-padding-clear/margin-collapse-038.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/margin-padding-clear/margin-collapse-038.xht.ini
new file mode 100644
index 00000000000..4add9bf88f0
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/margin-padding-clear/margin-collapse-038.xht.ini
@@ -0,0 +1,2 @@
+[margin-collapse-038.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/margin-padding-clear/margin-collapse-039.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/margin-padding-clear/margin-collapse-039.xht.ini
new file mode 100644
index 00000000000..33542c4d5d8
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/margin-padding-clear/margin-collapse-039.xht.ini
@@ -0,0 +1,2 @@
+[margin-collapse-039.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/margin-padding-clear/margin-collapse-040.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/margin-padding-clear/margin-collapse-040.xht.ini
new file mode 100644
index 00000000000..be2e1fbc2f9
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/margin-padding-clear/margin-collapse-040.xht.ini
@@ -0,0 +1,2 @@
+[margin-collapse-040.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/margin-padding-clear/margin-collapse-041.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/margin-padding-clear/margin-collapse-041.xht.ini
new file mode 100644
index 00000000000..1ebdc37062d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/margin-padding-clear/margin-collapse-041.xht.ini
@@ -0,0 +1,2 @@
+[margin-collapse-041.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/margin-padding-clear/margin-collapse-103.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/margin-padding-clear/margin-collapse-103.xht.ini
new file mode 100644
index 00000000000..e117b93df6a
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/margin-padding-clear/margin-collapse-103.xht.ini
@@ -0,0 +1,2 @@
+[margin-collapse-103.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/normal-flow/inline-replaced-height-010.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/normal-flow/inline-replaced-height-010.xht.ini
new file mode 100644
index 00000000000..db68d37d7a3
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/normal-flow/inline-replaced-height-010.xht.ini
@@ -0,0 +1,2 @@
+[inline-replaced-height-010.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/normal-flow/inline-replaced-height-011.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/normal-flow/inline-replaced-height-011.xht.ini
new file mode 100644
index 00000000000..337a7e7e162
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/normal-flow/inline-replaced-height-011.xht.ini
@@ -0,0 +1,2 @@
+[inline-replaced-height-011.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/normal-flow/inline-replaced-width-016.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/normal-flow/inline-replaced-width-016.xht.ini
new file mode 100644
index 00000000000..aa3c1e00555
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/normal-flow/inline-replaced-width-016.xht.ini
@@ -0,0 +1,2 @@
+[inline-replaced-width-016.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/normal-flow/inline-replaced-width-017.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/normal-flow/inline-replaced-width-017.xht.ini
new file mode 100644
index 00000000000..fd6fb9fb361
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/normal-flow/inline-replaced-width-017.xht.ini
@@ -0,0 +1,2 @@
+[inline-replaced-width-017.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/normal-flow/margin-collapsing-dynamic.html.ini b/tests/wpt/meta-legacy-layout/css/CSS2/normal-flow/margin-collapsing-dynamic.html.ini
new file mode 100644
index 00000000000..d1e5504226f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/normal-flow/margin-collapsing-dynamic.html.ini
@@ -0,0 +1,2 @@
+[margin-collapsing-dynamic.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/positioning/abspos-001.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/positioning/abspos-001.xht.ini
new file mode 100644
index 00000000000..121fd5f30db
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/positioning/abspos-001.xht.ini
@@ -0,0 +1,2 @@
+[abspos-001.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/positioning/abspos-008.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/positioning/abspos-008.xht.ini
new file mode 100644
index 00000000000..110707b0969
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/positioning/abspos-008.xht.ini
@@ -0,0 +1,2 @@
+[abspos-008.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/positioning/abspos-013.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/positioning/abspos-013.xht.ini
new file mode 100644
index 00000000000..2ee0d65debe
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/positioning/abspos-013.xht.ini
@@ -0,0 +1,2 @@
+[abspos-013.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/positioning/abspos-014.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/positioning/abspos-014.xht.ini
new file mode 100644
index 00000000000..9ea84b2793d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/positioning/abspos-014.xht.ini
@@ -0,0 +1,2 @@
+[abspos-014.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/positioning/abspos-015.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/positioning/abspos-015.xht.ini
new file mode 100644
index 00000000000..3459f74aa9d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/positioning/abspos-015.xht.ini
@@ -0,0 +1,2 @@
+[abspos-015.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/positioning/abspos-016.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/positioning/abspos-016.xht.ini
new file mode 100644
index 00000000000..41854d24429
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/positioning/abspos-016.xht.ini
@@ -0,0 +1,2 @@
+[abspos-016.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/positioning/abspos-017.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/positioning/abspos-017.xht.ini
new file mode 100644
index 00000000000..a4508e0485d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/positioning/abspos-017.xht.ini
@@ -0,0 +1,2 @@
+[abspos-017.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/positioning/abspos-018.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/positioning/abspos-018.xht.ini
new file mode 100644
index 00000000000..45a35c17a90
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/positioning/abspos-018.xht.ini
@@ -0,0 +1,2 @@
+[abspos-018.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/positioning/abspos-019.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/positioning/abspos-019.xht.ini
new file mode 100644
index 00000000000..55bf512725d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/positioning/abspos-019.xht.ini
@@ -0,0 +1,2 @@
+[abspos-019.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/positioning/abspos-020.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/positioning/abspos-020.xht.ini
new file mode 100644
index 00000000000..7223c0326c0
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/positioning/abspos-020.xht.ini
@@ -0,0 +1,2 @@
+[abspos-020.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/positioning/abspos-022.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/positioning/abspos-022.xht.ini
new file mode 100644
index 00000000000..7b3b9b86074
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/positioning/abspos-022.xht.ini
@@ -0,0 +1,2 @@
+[abspos-022.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/positioning/position-fixed-001.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/positioning/position-fixed-001.xht.ini
new file mode 100644
index 00000000000..4b3ed34c385
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/positioning/position-fixed-001.xht.ini
@@ -0,0 +1,2 @@
+[position-fixed-001.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/tables/height-table-cell-001.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/tables/height-table-cell-001.xht.ini
new file mode 100644
index 00000000000..6fea2a4bc5e
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/tables/height-table-cell-001.xht.ini
@@ -0,0 +1,2 @@
+[height-table-cell-001.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/tables/height-width-inline-table-001.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/tables/height-width-inline-table-001.xht.ini
new file mode 100644
index 00000000000..571ef76379b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/tables/height-width-inline-table-001.xht.ini
@@ -0,0 +1,2 @@
+[height-width-inline-table-001.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/tables/height-width-inline-table-001a.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/tables/height-width-inline-table-001a.xht.ini
new file mode 100644
index 00000000000..9f3b1bde264
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/tables/height-width-inline-table-001a.xht.ini
@@ -0,0 +1,2 @@
+[height-width-inline-table-001a.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/tables/height-width-inline-table-001b.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/tables/height-width-inline-table-001b.xht.ini
new file mode 100644
index 00000000000..7a2de295034
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/tables/height-width-inline-table-001b.xht.ini
@@ -0,0 +1,2 @@
+[height-width-inline-table-001b.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/tables/height-width-inline-table-001c.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/tables/height-width-inline-table-001c.xht.ini
new file mode 100644
index 00000000000..2be1f26fd63
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/tables/height-width-inline-table-001c.xht.ini
@@ -0,0 +1,2 @@
+[height-width-inline-table-001c.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/tables/height-width-inline-table-001d.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/tables/height-width-inline-table-001d.xht.ini
new file mode 100644
index 00000000000..2dab81e6017
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/tables/height-width-inline-table-001d.xht.ini
@@ -0,0 +1,2 @@
+[height-width-inline-table-001d.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/tables/height-width-inline-table-001e.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/tables/height-width-inline-table-001e.xht.ini
new file mode 100644
index 00000000000..7bf7416a30e
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/tables/height-width-inline-table-001e.xht.ini
@@ -0,0 +1,2 @@
+[height-width-inline-table-001e.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/tables/height-width-table-001.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/tables/height-width-table-001.xht.ini
new file mode 100644
index 00000000000..b8444d7a4ab
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/tables/height-width-table-001.xht.ini
@@ -0,0 +1,2 @@
+[height-width-table-001.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/tables/height-width-table-001a.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/tables/height-width-table-001a.xht.ini
new file mode 100644
index 00000000000..c63f911ca04
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/tables/height-width-table-001a.xht.ini
@@ -0,0 +1,2 @@
+[height-width-table-001a.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/tables/height-width-table-001b.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/tables/height-width-table-001b.xht.ini
new file mode 100644
index 00000000000..2ea213a18bf
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/tables/height-width-table-001b.xht.ini
@@ -0,0 +1,2 @@
+[height-width-table-001b.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/tables/height-width-table-001c.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/tables/height-width-table-001c.xht.ini
new file mode 100644
index 00000000000..c4df897dc76
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/tables/height-width-table-001c.xht.ini
@@ -0,0 +1,2 @@
+[height-width-table-001c.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/tables/height-width-table-001d.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/tables/height-width-table-001d.xht.ini
new file mode 100644
index 00000000000..2634e6b790e
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/tables/height-width-table-001d.xht.ini
@@ -0,0 +1,2 @@
+[height-width-table-001d.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/tables/padding-applies-to-013a.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/tables/padding-applies-to-013a.xht.ini
new file mode 100644
index 00000000000..a2a55d1df7c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/tables/padding-applies-to-013a.xht.ini
@@ -0,0 +1,2 @@
+[padding-applies-to-013a.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/tables/separated-border-model-003a.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/tables/separated-border-model-003a.xht.ini
new file mode 100644
index 00000000000..f0fb22d7cdb
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/tables/separated-border-model-003a.xht.ini
@@ -0,0 +1,2 @@
+[separated-border-model-003a.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/tables/separated-border-model-004a.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/tables/separated-border-model-004a.xht.ini
new file mode 100644
index 00000000000..81b492ba93c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/tables/separated-border-model-004a.xht.ini
@@ -0,0 +1,2 @@
+[separated-border-model-004a.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/tables/separated-border-model-004b.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/tables/separated-border-model-004b.xht.ini
new file mode 100644
index 00000000000..4e9cd35b5aa
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/tables/separated-border-model-004b.xht.ini
@@ -0,0 +1,2 @@
+[separated-border-model-004b.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/tables/separated-border-model-004c.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/tables/separated-border-model-004c.xht.ini
new file mode 100644
index 00000000000..66bf8eb7017
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/tables/separated-border-model-004c.xht.ini
@@ -0,0 +1,2 @@
+[separated-border-model-004c.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/tables/table-height-algorithm-008a.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/tables/table-height-algorithm-008a.xht.ini
new file mode 100644
index 00000000000..c8bbd0b7d36
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/tables/table-height-algorithm-008a.xht.ini
@@ -0,0 +1,2 @@
+[table-height-algorithm-008a.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/tables/table-height-algorithm-008b.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/tables/table-height-algorithm-008b.xht.ini
new file mode 100644
index 00000000000..389f61f0eaf
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/tables/table-height-algorithm-008b.xht.ini
@@ -0,0 +1,2 @@
+[table-height-algorithm-008b.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/tables/table-height-algorithm-008c.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/tables/table-height-algorithm-008c.xht.ini
new file mode 100644
index 00000000000..aa34e356889
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/tables/table-height-algorithm-008c.xht.ini
@@ -0,0 +1,2 @@
+[table-height-algorithm-008c.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/text/white-space-008.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/text/white-space-008.xht.ini
new file mode 100644
index 00000000000..2c1f0a99c89
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/text/white-space-008.xht.ini
@@ -0,0 +1,2 @@
+[white-space-008.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/visuren/anonymous-boxes-001a.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/visuren/anonymous-boxes-001a.xht.ini
new file mode 100644
index 00000000000..48932cc679e
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/visuren/anonymous-boxes-001a.xht.ini
@@ -0,0 +1,2 @@
+[anonymous-boxes-001a.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/visuren/anonymous-boxes-001b.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/visuren/anonymous-boxes-001b.xht.ini
new file mode 100644
index 00000000000..67b06807a43
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/visuren/anonymous-boxes-001b.xht.ini
@@ -0,0 +1,2 @@
+[anonymous-boxes-001b.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/visuren/left-offset-position-fixed-001.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/visuren/left-offset-position-fixed-001.xht.ini
new file mode 100644
index 00000000000..e677cc5d42e
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/visuren/left-offset-position-fixed-001.xht.ini
@@ -0,0 +1,2 @@
+[left-offset-position-fixed-001.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/visuren/right-offset-position-fixed-001.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/visuren/right-offset-position-fixed-001.xht.ini
new file mode 100644
index 00000000000..da7eafa8db7
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/visuren/right-offset-position-fixed-001.xht.ini
@@ -0,0 +1,2 @@
+[right-offset-position-fixed-001.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-001.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-001.xht.ini
new file mode 100644
index 00000000000..be45426fd17
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-001.xht.ini
@@ -0,0 +1,2 @@
+[z-index-001.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-002.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-002.xht.ini
new file mode 100644
index 00000000000..c070fd97625
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-002.xht.ini
@@ -0,0 +1,2 @@
+[z-index-002.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-003.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-003.xht.ini
new file mode 100644
index 00000000000..e5d8191c167
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-003.xht.ini
@@ -0,0 +1,2 @@
+[z-index-003.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-004.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-004.xht.ini
new file mode 100644
index 00000000000..13ca78d3a73
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-004.xht.ini
@@ -0,0 +1,2 @@
+[z-index-004.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-005.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-005.xht.ini
new file mode 100644
index 00000000000..7e40839160d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-005.xht.ini
@@ -0,0 +1,2 @@
+[z-index-005.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-006.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-006.xht.ini
new file mode 100644
index 00000000000..b745a9e3a11
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-006.xht.ini
@@ -0,0 +1,2 @@
+[z-index-006.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-007.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-007.xht.ini
new file mode 100644
index 00000000000..ecc9686181b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-007.xht.ini
@@ -0,0 +1,2 @@
+[z-index-007.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-008.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-008.xht.ini
new file mode 100644
index 00000000000..31bdee6f0aa
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-008.xht.ini
@@ -0,0 +1,2 @@
+[z-index-008.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-009.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-009.xht.ini
new file mode 100644
index 00000000000..9f81df5a055
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-009.xht.ini
@@ -0,0 +1,2 @@
+[z-index-009.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-010.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-010.xht.ini
new file mode 100644
index 00000000000..96a53382b48
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-010.xht.ini
@@ -0,0 +1,2 @@
+[z-index-010.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-011.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-011.xht.ini
new file mode 100644
index 00000000000..b3bfadfe8d8
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-011.xht.ini
@@ -0,0 +1,2 @@
+[z-index-011.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-012.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-012.xht.ini
new file mode 100644
index 00000000000..3dfc42df0f4
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-012.xht.ini
@@ -0,0 +1,2 @@
+[z-index-012.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-014.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-014.xht.ini
new file mode 100644
index 00000000000..ec47f89df87
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-014.xht.ini
@@ -0,0 +1,2 @@
+[z-index-014.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-018.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-018.xht.ini
new file mode 100644
index 00000000000..96ee3b9a4bc
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-018.xht.ini
@@ -0,0 +1,2 @@
+[z-index-018.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-019.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-019.xht.ini
new file mode 100644
index 00000000000..74c4c6da678
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-019.xht.ini
@@ -0,0 +1,2 @@
+[z-index-019.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-abspos-001.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-abspos-001.xht.ini
new file mode 100644
index 00000000000..b04bdf766b2
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-abspos-001.xht.ini
@@ -0,0 +1,2 @@
+[z-index-abspos-001.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-abspos-002.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-abspos-002.xht.ini
new file mode 100644
index 00000000000..bb6273f48e0
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-abspos-002.xht.ini
@@ -0,0 +1,2 @@
+[z-index-abspos-002.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-abspos-003.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-abspos-003.xht.ini
new file mode 100644
index 00000000000..815ea4bba35
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-abspos-003.xht.ini
@@ -0,0 +1,2 @@
+[z-index-abspos-003.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-abspos-004.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-abspos-004.xht.ini
new file mode 100644
index 00000000000..d5769066030
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-abspos-004.xht.ini
@@ -0,0 +1,2 @@
+[z-index-abspos-004.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-abspos-005.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-abspos-005.xht.ini
new file mode 100644
index 00000000000..7c066ff8ff6
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-abspos-005.xht.ini
@@ -0,0 +1,2 @@
+[z-index-abspos-005.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-abspos-007.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-abspos-007.xht.ini
new file mode 100644
index 00000000000..855e9980a3d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-abspos-007.xht.ini
@@ -0,0 +1,2 @@
+[z-index-abspos-007.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-dynamic-001.xht.ini b/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-dynamic-001.xht.ini
new file mode 100644
index 00000000000..28cc8b1f425
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/CSS2/zindex/z-index-dynamic-001.xht.ini
@@ -0,0 +1,2 @@
+[z-index-dynamic-001.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-animation.html.ini b/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-animation.html.ini
new file mode 100644
index 00000000000..5496474410b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-animation.html.ini
@@ -0,0 +1,2 @@
+[mix-blend-mode-animation.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-blended-element-interposed.html.ini b/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-blended-element-interposed.html.ini
new file mode 100644
index 00000000000..f4ba42ba597
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-blended-element-interposed.html.ini
@@ -0,0 +1,2 @@
+[mix-blend-mode-blended-element-interposed.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-blended-element-with-transparent-pixels.html.ini b/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-blended-element-with-transparent-pixels.html.ini
new file mode 100644
index 00000000000..e969ccfd9ae
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-blended-element-with-transparent-pixels.html.ini
@@ -0,0 +1,2 @@
+[mix-blend-mode-blended-element-with-transparent-pixels.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-blended-with-3D-transform.html.ini b/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-blended-with-3D-transform.html.ini
new file mode 100644
index 00000000000..d68e73936c6
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-blended-with-3D-transform.html.ini
@@ -0,0 +1,2 @@
+[mix-blend-mode-blended-with-3D-transform.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-blended-with-transform-and-perspective.html.ini b/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-blended-with-transform-and-perspective.html.ini
new file mode 100644
index 00000000000..0e16a4f7db7
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-blended-with-transform-and-perspective.html.ini
@@ -0,0 +1,2 @@
+[mix-blend-mode-blended-with-transform-and-perspective.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-blending-with-sibling.html.ini b/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-blending-with-sibling.html.ini
new file mode 100644
index 00000000000..51bd95228fb
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-blending-with-sibling.html.ini
@@ -0,0 +1,2 @@
+[mix-blend-mode-blending-with-sibling.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-canvas-parent.html.ini b/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-canvas-parent.html.ini
new file mode 100644
index 00000000000..3bca294ac5f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-canvas-parent.html.ini
@@ -0,0 +1,2 @@
+[mix-blend-mode-canvas-parent.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-canvas-sibling.html.ini b/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-canvas-sibling.html.ini
new file mode 100644
index 00000000000..2bc23c0b9b2
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-canvas-sibling.html.ini
@@ -0,0 +1,2 @@
+[mix-blend-mode-canvas-sibling.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-mask.html.ini b/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-mask.html.ini
new file mode 100644
index 00000000000..1f039c2f7aa
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-mask.html.ini
@@ -0,0 +1,2 @@
+[mix-blend-mode-mask.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-overflowing-child-of-blended-element.html.ini b/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-overflowing-child-of-blended-element.html.ini
new file mode 100644
index 00000000000..e628a53f56c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-overflowing-child-of-blended-element.html.ini
@@ -0,0 +1,2 @@
+[mix-blend-mode-overflowing-child-of-blended-element.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-parent-element-overflow-hidden-and-border-radius-2.html.ini b/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-parent-element-overflow-hidden-and-border-radius-2.html.ini
new file mode 100644
index 00000000000..5c68723eadc
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-parent-element-overflow-hidden-and-border-radius-2.html.ini
@@ -0,0 +1,2 @@
+[mix-blend-mode-parent-element-overflow-hidden-and-border-radius-2.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-parent-element-overflow-hidden-and-border-radius.html.ini b/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-parent-element-overflow-hidden-and-border-radius.html.ini
new file mode 100644
index 00000000000..59caff80a70
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-parent-element-overflow-hidden-and-border-radius.html.ini
@@ -0,0 +1,2 @@
+[mix-blend-mode-parent-element-overflow-hidden-and-border-radius.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-parent-with-3D-transform.html.ini b/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-parent-with-3D-transform.html.ini
new file mode 100644
index 00000000000..3260cfddf6f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-parent-with-3D-transform.html.ini
@@ -0,0 +1,2 @@
+[mix-blend-mode-parent-with-3D-transform.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-script.html.ini b/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-script.html.ini
new file mode 100644
index 00000000000..d9d62c6cff4
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-script.html.ini
@@ -0,0 +1,2 @@
+[mix-blend-mode-script.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-sibling-with-3D-transform.html.ini b/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-sibling-with-3D-transform.html.ini
new file mode 100644
index 00000000000..89b4eb5a86a
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-sibling-with-3D-transform.html.ini
@@ -0,0 +1,2 @@
+[mix-blend-mode-sibling-with-3D-transform.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-simple.html.ini b/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-simple.html.ini
new file mode 100644
index 00000000000..b75b4a3d3e2
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-simple.html.ini
@@ -0,0 +1,2 @@
+[mix-blend-mode-simple.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-stacking-context-creates-isolation.html.ini b/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-stacking-context-creates-isolation.html.ini
new file mode 100644
index 00000000000..8e3c2a518e1
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/compositing/mix-blend-mode/mix-blend-mode-stacking-context-creates-isolation.html.ini
@@ -0,0 +1,2 @@
+[mix-blend-mode-stacking-context-creates-isolation.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-align/animation/column-gap-interpolation.html.ini b/tests/wpt/meta-legacy-layout/css/css-align/animation/column-gap-interpolation.html.ini
index 1c1a32bcd17..b850658286b 100644
--- a/tests/wpt/meta-legacy-layout/css/css-align/animation/column-gap-interpolation.html.ini
+++ b/tests/wpt/meta-legacy-layout/css/css-align/animation/column-gap-interpolation.html.ini
@@ -5,12 +5,6 @@
[Web Animations: property <column-gap> from [0px\] to [100px\] at (0.3) should be [30px\]]
expected: FAIL
- [CSS Animations: property <column-gap> from neutral to [40px\] at (1.5) should be [55px\]]
- expected: FAIL
-
- [CSS Transitions: property <column-gap> from [inherit\] to [20px\] at (-0.3) should be [111px\]]
- expected: FAIL
-
[CSS Animations: property <column-gap> from [normal\] to [20px\] at (1.5) should be [20px\]]
expected: FAIL
@@ -20,48 +14,15 @@
[Web Animations: property <column-gap> from [unset\] to [20px\] at (0.5) should be [20px\]]
expected: FAIL
- [CSS Transitions: property <column-gap> from [initial\] to [20px\] at (0.5) should be [20px\]]
- expected: FAIL
-
[Web Animations: property <column-gap> from [normal\] to [20px\] at (-0.3) should be [normal\]]
expected: FAIL
- [CSS Animations: property <column-gap> from [0px\] to [100px\] at (1) should be [100px\]]
- expected: FAIL
-
[Web Animations: property <column-gap> from neutral to [40px\] at (-0.3) should be [1px\]]
expected: FAIL
[Web Animations: property <column-gap> from [normal\] to [20px\] at (0.6) should be [20px\]]
expected: FAIL
- [CSS Transitions: property <column-gap> from [normal\] to [20px\] at (0.3) should be [20px\]]
- expected: FAIL
-
- [CSS Animations: property <column-gap> from neutral to [40px\] at (0.3) should be [19px\]]
- expected: FAIL
-
- [CSS Animations: property <column-gap> from [0px\] to [100px\] at (0.6) should be [60px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <column-gap> from [inherit\] to [20px\] at (0.6) should be [48px\]]
- expected: FAIL
-
- [CSS Transitions: property <column-gap> from [unset\] to [20px\] at (0.6) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <column-gap> from [unset\] to [20px\] at (0.6) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions: property <column-gap> from [inherit\] to [20px\] at (0.3) should be [69px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <column-gap> from [normal\] to [20px\] at (-0.3) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <column-gap> from [normal\] to [20px\] at (0) should be [20px\]]
- expected: FAIL
-
[Web Animations: property <column-gap> from [inherit\] to [20px\] at (0.6) should be [48px\]]
expected: FAIL
@@ -71,36 +32,18 @@
[CSS Animations: property <column-gap> from [initial\] to [20px\] at (1.5) should be [20px\]]
expected: FAIL
- [CSS Animations: property <column-gap> from [inherit\] to [20px\] at (1.5) should be [0px\]]
- expected: FAIL
-
- [CSS Animations: property <column-gap> from neutral to [40px\] at (-0.3) should be [1px\]]
- expected: FAIL
-
[Web Animations: property <column-gap> from [unset\] to [20px\] at (1) should be [20px\]]
expected: FAIL
- [CSS Transitions: property <column-gap> from [initial\] to [20px\] at (1) should be [20px\]]
- expected: FAIL
-
[Web Animations: property <column-gap> from neutral to [40px\] at (0.6) should be [28px\]]
expected: FAIL
- [CSS Transitions with transition: all: property <column-gap> from [unset\] to [20px\] at (1.5) should be [20px\]]
- expected: FAIL
-
[Web Animations: property <column-gap> from [inherit\] to [20px\] at (1.5) should be [0px\]]
expected: FAIL
- [CSS Transitions: property <column-gap> from [0px\] to [100px\] at (1) should be [100px\]]
- expected: FAIL
-
[CSS Animations: property <column-gap> from [normal\] to [20px\] at (1) should be [20px\]]
expected: FAIL
- [CSS Transitions: property <column-gap> from [initial\] to [20px\] at (0.3) should be [20px\]]
- expected: FAIL
-
[Web Animations: property <column-gap> from [initial\] to [20px\] at (1.5) should be [20px\]]
expected: FAIL
@@ -110,45 +53,18 @@
[Web Animations: property <column-gap> from [initial\] to [20px\] at (0.5) should be [20px\]]
expected: FAIL
- [CSS Animations: property <column-gap> from [0px\] to [100px\] at (0) should be [0\]]
- expected: FAIL
-
[CSS Animations: property <column-gap> from [initial\] to [20px\] at (-0.3) should be [initial\]]
expected: FAIL
[Web Animations: property <column-gap> from [normal\] to [20px\] at (1.5) should be [20px\]]
expected: FAIL
- [CSS Transitions: property <column-gap> from [0px\] to [100px\] at (0.6) should be [60px\]]
- expected: FAIL
-
- [CSS Transitions: property <column-gap> from [normal\] to [20px\] at (0.5) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions: property <column-gap> from [0px\] to [100px\] at (1.5) should be [150px\]]
- expected: FAIL
-
[CSS Animations: property <column-gap> from [initial\] to [20px\] at (1) should be [20px\]]
expected: FAIL
- [CSS Transitions with transition: all: property <column-gap> from [initial\] to [20px\] at (0.5) should be [20px\]]
- expected: FAIL
-
- [CSS Animations: property <column-gap> from [inherit\] to [20px\] at (0.6) should be [48px\]]
- expected: FAIL
-
- [CSS Transitions: property <column-gap> from [normal\] to [20px\] at (-0.3) should be [20px\]]
- expected: FAIL
-
[Web Animations: property <column-gap> from [0px\] to [100px\] at (0.6) should be [60px\]]
expected: FAIL
- [CSS Transitions: property <column-gap> from [normal\] to [20px\] at (0.6) should be [20px\]]
- expected: FAIL
-
- [CSS Animations: property <column-gap> from [0px\] to [100px\] at (1.5) should be [150px\]]
- expected: FAIL
-
[Web Animations: property <column-gap> from [initial\] to [20px\] at (0.3) should be [initial\]]
expected: FAIL
@@ -158,39 +74,18 @@
[Web Animations: property <column-gap> from neutral to [40px\] at (0.3) should be [19px\]]
expected: FAIL
- [CSS Transitions with transition: all: property <column-gap> from [initial\] to [20px\] at (0.3) should be [20px\]]
- expected: FAIL
-
[Web Animations: property <column-gap> from [unset\] to [20px\] at (-0.3) should be [unset\]]
expected: FAIL
- [CSS Transitions: property <column-gap> from [initial\] to [20px\] at (0.6) should be [20px\]]
- expected: FAIL
-
[CSS Animations: property <column-gap> from [unset\] to [20px\] at (0.3) should be [unset\]]
expected: FAIL
[CSS Animations: property <column-gap> from [initial\] to [20px\] at (0) should be [initial\]]
expected: FAIL
- [CSS Transitions with transition: all: property <column-gap> from neutral to [40px\] at (0) should be [10px\]]
- expected: FAIL
-
- [CSS Transitions: property <column-gap> from neutral to [40px\] at (1.5) should be [55px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <column-gap> from neutral to [40px\] at (1) should be [40px\]]
- expected: FAIL
-
[CSS Animations: property <column-gap> from [normal\] to [20px\] at (0.6) should be [20px\]]
expected: FAIL
- [CSS Transitions: property <column-gap> from neutral to [40px\] at (-0.3) should be [1px\]]
- expected: FAIL
-
- [CSS Transitions: property <column-gap> from [inherit\] to [20px\] at (1) should be [20px\]]
- expected: FAIL
-
[Web Animations: property <column-gap> from [inherit\] to [20px\] at (0) should be [90px\]]
expected: FAIL
@@ -200,153 +95,42 @@
[Web Animations: property <column-gap> from [0px\] to [100px\] at (-0.3) should be [0\]]
expected: FAIL
- [CSS Transitions with transition: all: property <column-gap> from [initial\] to [20px\] at (0.6) should be [20px\]]
- expected: FAIL
-
[Web Animations: property <column-gap> from [initial\] to [20px\] at (-0.3) should be [initial\]]
expected: FAIL
- [CSS Transitions: property <column-gap> from [inherit\] to [20px\] at (1.5) should be [0px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <column-gap> from [normal\] to [20px\] at (0.6) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <column-gap> from [unset\] to [20px\] at (0.5) should be [20px\]]
- expected: FAIL
-
[Web Animations: property <column-gap> from [0px\] to [100px\] at (1.5) should be [150px\]]
expected: FAIL
- [CSS Transitions: property <column-gap> from [normal\] to [20px\] at (1) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <column-gap> from [normal\] to [20px\] at (0.5) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <column-gap> from [normal\] to [20px\] at (0.3) should be [20px\]]
- expected: FAIL
-
- [CSS Animations: property <column-gap> from neutral to [40px\] at (1) should be [40px\]]
- expected: FAIL
-
- [CSS Transitions: property <column-gap> from [unset\] to [20px\] at (1.5) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <column-gap> from [inherit\] to [20px\] at (-0.3) should be [111px\]]
- expected: FAIL
-
[Web Animations: property <column-gap> from neutral to [40px\] at (1.5) should be [55px\]]
expected: FAIL
- [CSS Transitions: property <column-gap> from [0px\] to [100px\] at (0) should be [0\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <column-gap> from [initial\] to [20px\] at (1.5) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <column-gap> from [inherit\] to [20px\] at (1) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <column-gap> from [0px\] to [100px\] at (0) should be [0\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <column-gap> from [normal\] to [20px\] at (1.5) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <column-gap> from [0px\] to [100px\] at (1.5) should be [150px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <column-gap> from [initial\] to [20px\] at (0) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions: property <column-gap> from [unset\] to [20px\] at (0.5) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions: property <column-gap> from neutral to [40px\] at (0.3) should be [19px\]]
- expected: FAIL
-
[Web Animations: property <column-gap> from [inherit\] to [20px\] at (-0.3) should be [111px\]]
expected: FAIL
- [CSS Transitions with transition: all: property <column-gap> from neutral to [40px\] at (0.6) should be [28px\]]
- expected: FAIL
-
[Web Animations: property <column-gap> from [initial\] to [20px\] at (0) should be [initial\]]
expected: FAIL
[CSS Animations: property <column-gap> from [unset\] to [20px\] at (1) should be [20px\]]
expected: FAIL
- [CSS Transitions: property <column-gap> from [inherit\] to [20px\] at (0) should be [90px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <column-gap> from [initial\] to [20px\] at (1) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions: property <column-gap> from [0px\] to [100px\] at (0.3) should be [30px\]]
- expected: FAIL
-
[Web Animations: property <column-gap> from [initial\] to [20px\] at (0.6) should be [20px\]]
expected: FAIL
- [CSS Transitions with transition: all: property <column-gap> from [0px\] to [100px\] at (1) should be [100px\]]
- expected: FAIL
-
[Web Animations: property <column-gap> from neutral to [40px\] at (1) should be [40px\]]
expected: FAIL
[Web Animations: property <column-gap> from neutral to [40px\] at (0) should be [10px\]]
expected: FAIL
- [CSS Animations: property <column-gap> from [inherit\] to [20px\] at (0.3) should be [69px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <column-gap> from neutral to [40px\] at (-0.3) should be [1px\]]
- expected: FAIL
-
- [CSS Animations: property <column-gap> from neutral to [40px\] at (0) should be [10px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <column-gap> from neutral to [40px\] at (0.3) should be [19px\]]
- expected: FAIL
-
- [CSS Transitions: property <column-gap> from [initial\] to [20px\] at (1.5) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions: property <column-gap> from neutral to [40px\] at (1) should be [40px\]]
- expected: FAIL
-
- [CSS Transitions: property <column-gap> from [inherit\] to [20px\] at (0.6) should be [48px\]]
- expected: FAIL
-
[Web Animations: property <column-gap> from [initial\] to [20px\] at (1) should be [20px\]]
expected: FAIL
- [CSS Transitions: property <column-gap> from [normal\] to [20px\] at (0) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions: property <column-gap> from [initial\] to [20px\] at (-0.3) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions: property <column-gap> from [unset\] to [20px\] at (0) should be [20px\]]
- expected: FAIL
-
[CSS Animations: property <column-gap> from [initial\] to [20px\] at (0.3) should be [initial\]]
expected: FAIL
- [CSS Transitions with transition: all: property <column-gap> from [0px\] to [100px\] at (0.6) should be [60px\]]
- expected: FAIL
-
[CSS Animations: property <column-gap> from [normal\] to [20px\] at (0) should be [normal\]]
expected: FAIL
- [CSS Transitions with transition: all: property <column-gap> from [unset\] to [20px\] at (0.3) should be [20px\]]
- expected: FAIL
-
- [CSS Animations: property <column-gap> from [inherit\] to [20px\] at (1) should be [20px\]]
- expected: FAIL
-
[Web Animations: property <column-gap> from [inherit\] to [20px\] at (1) should be [20px\]]
expected: FAIL
@@ -356,18 +140,6 @@
[CSS Animations: property <column-gap> from [unset\] to [20px\] at (1.5) should be [20px\]]
expected: FAIL
- [CSS Transitions with transition: all: property <column-gap> from neutral to [40px\] at (1.5) should be [55px\]]
- expected: FAIL
-
- [CSS Transitions: property <column-gap> from [unset\] to [20px\] at (-0.3) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <column-gap> from [inherit\] to [20px\] at (1.5) should be [0px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <column-gap> from [unset\] to [20px\] at (0) should be [20px\]]
- expected: FAIL
-
[Web Animations: property <column-gap> from [unset\] to [20px\] at (0) should be [unset\]]
expected: FAIL
@@ -380,96 +152,36 @@
[CSS Animations: property <column-gap> from [normal\] to [20px\] at (0.3) should be [normal\]]
expected: FAIL
- [CSS Transitions with transition: all: property <column-gap> from [initial\] to [20px\] at (-0.3) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <column-gap> from [inherit\] to [20px\] at (0) should be [90px\]]
- expected: FAIL
-
[Web Animations: property <column-gap> from [unset\] to [20px\] at (0.6) should be [20px\]]
expected: FAIL
[CSS Animations: property <column-gap> from [initial\] to [20px\] at (0.6) should be [20px\]]
expected: FAIL
- [CSS Transitions with transition: all: property <column-gap> from [0px\] to [100px\] at (-0.3) should be [0\]]
- expected: FAIL
-
- [CSS Transitions: property <column-gap> from neutral to [40px\] at (0.6) should be [28px\]]
- expected: FAIL
-
[CSS Animations: property <column-gap> from [unset\] to [20px\] at (0) should be [unset\]]
expected: FAIL
[Web Animations: property <column-gap> from [normal\] to [20px\] at (1) should be [20px\]]
expected: FAIL
- [CSS Transitions: property <column-gap> from neutral to [40px\] at (0) should be [10px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <column-gap> from [inherit\] to [20px\] at (0.3) should be [69px\]]
- expected: FAIL
-
[Web Animations: property <column-gap> from [normal\] to [20px\] at (0.3) should be [normal\]]
expected: FAIL
- [CSS Animations: property <column-gap> from [0px\] to [100px\] at (-0.3) should be [0\]]
- expected: FAIL
-
[CSS Animations: property <column-gap> from [initial\] to [20px\] at (0.5) should be [20px\]]
expected: FAIL
- [CSS Transitions with transition: all: property <column-gap> from [unset\] to [20px\] at (-0.3) should be [20px\]]
- expected: FAIL
-
[Web Animations: property <column-gap> from [inherit\] to [20px\] at (0.3) should be [69px\]]
expected: FAIL
- [CSS Transitions: property <column-gap> from [normal\] to [20px\] at (1.5) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions: property <column-gap> from [unset\] to [20px\] at (0.3) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <column-gap> from [normal\] to [20px\] at (1) should be [20px\]]
- expected: FAIL
-
[Web Animations: property <column-gap> from [0px\] to [100px\] at (1) should be [100px\]]
expected: FAIL
- [CSS Transitions: property <column-gap> from [initial\] to [20px\] at (0) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions: property <column-gap> from [0px\] to [100px\] at (-0.3) should be [0\]]
- expected: FAIL
-
[Web Animations: property <column-gap> from [0px\] to [100px\] at (0) should be [0\]]
expected: FAIL
- [CSS Animations: property <column-gap> from neutral to [40px\] at (0.6) should be [28px\]]
- expected: FAIL
-
- [CSS Animations: property <column-gap> from [0px\] to [100px\] at (0.3) should be [30px\]]
- expected: FAIL
-
[CSS Animations: property <column-gap> from [normal\] to [20px\] at (0.5) should be [20px\]]
expected: FAIL
- [CSS Animations: property <column-gap> from [inherit\] to [20px\] at (-0.3) should be [111px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <column-gap> from [unset\] to [20px\] at (1) should be [20px\]]
- expected: FAIL
-
- [CSS Animations: property <column-gap> from [inherit\] to [20px\] at (0) should be [90px\]]
- expected: FAIL
-
- [CSS Transitions: property <column-gap> from [unset\] to [20px\] at (1) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <column-gap> from [0px\] to [100px\] at (0.3) should be [30px\]]
- expected: FAIL
-
[CSS Transitions: property <column-gap> from [initial\] to [20px\] at (-0.3) should be [initial\]]
expected: FAIL
@@ -506,18 +218,6 @@
[CSS Transitions with transition-behavior:allow-discrete: property <column-gap> from [initial\] to [20px\] at (0.3) should be [initial\]]
expected: FAIL
- [CSS Transitions with transition-behavior:allow-discrete: property <column-gap> from [initial\] to [20px\] at (0.5) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <column-gap> from [initial\] to [20px\] at (0.6) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <column-gap> from [initial\] to [20px\] at (1) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <column-gap> from [initial\] to [20px\] at (1.5) should be [20px\]]
- expected: FAIL
-
[CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <column-gap> from [initial\] to [20px\] at (-0.3) should be [initial\]]
expected: FAIL
@@ -527,18 +227,6 @@
[CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <column-gap> from [initial\] to [20px\] at (0.3) should be [initial\]]
expected: FAIL
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <column-gap> from [initial\] to [20px\] at (0.5) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <column-gap> from [initial\] to [20px\] at (0.6) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <column-gap> from [initial\] to [20px\] at (1) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <column-gap> from [initial\] to [20px\] at (1.5) should be [20px\]]
- expected: FAIL
-
[CSS Transitions with transition-behavior:allow-discrete: property <column-gap> from [unset\] to [20px\] at (-0.3) should be [unset\]]
expected: FAIL
@@ -548,18 +236,6 @@
[CSS Transitions with transition-behavior:allow-discrete: property <column-gap> from [unset\] to [20px\] at (0.3) should be [unset\]]
expected: FAIL
- [CSS Transitions with transition-behavior:allow-discrete: property <column-gap> from [unset\] to [20px\] at (0.5) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <column-gap> from [unset\] to [20px\] at (0.6) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <column-gap> from [unset\] to [20px\] at (1) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <column-gap> from [unset\] to [20px\] at (1.5) should be [20px\]]
- expected: FAIL
-
[CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <column-gap> from [unset\] to [20px\] at (-0.3) should be [unset\]]
expected: FAIL
@@ -569,18 +245,6 @@
[CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <column-gap> from [unset\] to [20px\] at (0.3) should be [unset\]]
expected: FAIL
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <column-gap> from [unset\] to [20px\] at (0.5) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <column-gap> from [unset\] to [20px\] at (0.6) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <column-gap> from [unset\] to [20px\] at (1) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <column-gap> from [unset\] to [20px\] at (1.5) should be [20px\]]
- expected: FAIL
-
[CSS Transitions with transition-behavior:allow-discrete: property <column-gap> from [normal\] to [20px\] at (-0.3) should be [normal\]]
expected: FAIL
@@ -590,18 +254,6 @@
[CSS Transitions with transition-behavior:allow-discrete: property <column-gap> from [normal\] to [20px\] at (0.3) should be [normal\]]
expected: FAIL
- [CSS Transitions with transition-behavior:allow-discrete: property <column-gap> from [normal\] to [20px\] at (0.5) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <column-gap> from [normal\] to [20px\] at (0.6) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <column-gap> from [normal\] to [20px\] at (1) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <column-gap> from [normal\] to [20px\] at (1.5) should be [20px\]]
- expected: FAIL
-
[CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <column-gap> from [normal\] to [20px\] at (-0.3) should be [normal\]]
expected: FAIL
@@ -610,15 +262,3 @@
[CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <column-gap> from [normal\] to [20px\] at (0.3) should be [normal\]]
expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <column-gap> from [normal\] to [20px\] at (0.5) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <column-gap> from [normal\] to [20px\] at (0.6) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <column-gap> from [normal\] to [20px\] at (1) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <column-gap> from [normal\] to [20px\] at (1.5) should be [20px\]]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-align/animation/row-gap-interpolation.html.ini b/tests/wpt/meta-legacy-layout/css/css-align/animation/row-gap-interpolation.html.ini
index 2b1cd993e03..687600eae30 100644
--- a/tests/wpt/meta-legacy-layout/css/css-align/animation/row-gap-interpolation.html.ini
+++ b/tests/wpt/meta-legacy-layout/css/css-align/animation/row-gap-interpolation.html.ini
@@ -5,27 +5,12 @@
[CSS Animations: property <row-gap> from [initial\] to [20px\] at (0.6) should be [20px\]]
expected: FAIL
- [CSS Transitions with transition: all: property <row-gap> from neutral to [40px\] at (0) should be [10px\]]
- expected: FAIL
-
- [CSS Transitions: property <row-gap> from [unset\] to [20px\] at (0.6) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <row-gap> from neutral to [40px\] at (0.6) should be [28px\]]
- expected: FAIL
-
[Web Animations: property <row-gap> from [inherit\] to [20px\] at (1.5) should be [0px\]]
expected: FAIL
[Web Animations: property <row-gap> from neutral to [40px\] at (1) should be [40px\]]
expected: FAIL
- [CSS Transitions with transition: all: property <row-gap> from [normal\] to [20px\] at (0.6) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions: property <row-gap> from [normal\] to [20px\] at (0.3) should be [20px\]]
- expected: FAIL
-
[CSS Animations: property <row-gap> from [initial\] to [20px\] at (0.3) should be [initial\]]
expected: FAIL
@@ -35,12 +20,6 @@
[Web Animations: property <row-gap> from [initial\] to [20px\] at (0) should be [initial\]]
expected: FAIL
- [CSS Transitions: property <row-gap> from [0px\] to [100px\] at (-0.3) should be [0\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <row-gap> from [normal\] to [20px\] at (0.5) should be [20px\]]
- expected: FAIL
-
[Web Animations: property <row-gap> from [unset\] to [20px\] at (0) should be [unset\]]
expected: FAIL
@@ -56,57 +35,18 @@
[CSS Animations: property <row-gap> from [initial\] to [20px\] at (1.5) should be [20px\]]
expected: FAIL
- [CSS Transitions with transition: all: property <row-gap> from [normal\] to [20px\] at (1) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions: property <row-gap> from [0px\] to [100px\] at (0.3) should be [30px\]]
- expected: FAIL
-
- [CSS Transitions: property <row-gap> from [unset\] to [20px\] at (0.3) should be [20px\]]
- expected: FAIL
-
- [CSS Animations: property <row-gap> from [0px\] to [100px\] at (0.3) should be [30px\]]
- expected: FAIL
-
- [CSS Transitions: property <row-gap> from [initial\] to [20px\] at (1) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions: property <row-gap> from [inherit\] to [20px\] at (0.6) should be [48px\]]
- expected: FAIL
-
- [CSS Transitions: property <row-gap> from [normal\] to [20px\] at (1) should be [20px\]]
- expected: FAIL
-
[CSS Animations: property <row-gap> from [normal\] to [20px\] at (0.3) should be [normal\]]
expected: FAIL
- [CSS Transitions with transition: all: property <row-gap> from [inherit\] to [20px\] at (1.5) should be [0px\]]
- expected: FAIL
-
- [CSS Animations: property <row-gap> from neutral to [40px\] at (-0.3) should be [1px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <row-gap> from [unset\] to [20px\] at (0.3) should be [20px\]]
- expected: FAIL
-
[Web Animations: property <row-gap> from [unset\] to [20px\] at (1) should be [20px\]]
expected: FAIL
[CSS Animations: property <row-gap> from [initial\] to [20px\] at (0) should be [initial\]]
expected: FAIL
- [CSS Transitions with transition: all: property <row-gap> from [unset\] to [20px\] at (0.6) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <row-gap> from [initial\] to [20px\] at (0) should be [20px\]]
- expected: FAIL
-
[Web Animations: property <row-gap> from neutral to [40px\] at (1.5) should be [55px\]]
expected: FAIL
- [CSS Animations: property <row-gap> from [inherit\] to [20px\] at (-0.3) should be [111px\]]
- expected: FAIL
-
[Web Animations: property <row-gap> from [inherit\] to [20px\] at (1) should be [20px\]]
expected: FAIL
@@ -116,42 +56,15 @@
[Web Animations: property <row-gap> from neutral to [40px\] at (0) should be [10px\]]
expected: FAIL
- [CSS Animations: property <row-gap> from [inherit\] to [20px\] at (0.3) should be [69px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <row-gap> from [initial\] to [20px\] at (0.5) should be [20px\]]
- expected: FAIL
-
- [CSS Animations: property <row-gap> from [inherit\] to [20px\] at (0.6) should be [48px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <row-gap> from [inherit\] to [20px\] at (-0.3) should be [111px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <row-gap> from [normal\] to [20px\] at (1.5) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <row-gap> from [0px\] to [100px\] at (1) should be [100px\]]
- expected: FAIL
-
[Web Animations: property <row-gap> from [initial\] to [20px\] at (1) should be [20px\]]
expected: FAIL
- [CSS Transitions: property <row-gap> from neutral to [40px\] at (1) should be [40px\]]
- expected: FAIL
-
[Web Animations: property <row-gap> from [0px\] to [100px\] at (1.5) should be [150px\]]
expected: FAIL
[Web Animations: property <row-gap> from neutral to [40px\] at (0.3) should be [19px\]]
expected: FAIL
- [CSS Transitions: property <row-gap> from [normal\] to [20px\] at (-0.3) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions: property <row-gap> from [normal\] to [20px\] at (0) should be [20px\]]
- expected: FAIL
-
[CSS Animations: property <row-gap> from [normal\] to [20px\] at (0) should be [normal\]]
expected: FAIL
@@ -161,12 +74,6 @@
[Web Animations: property <row-gap> from [initial\] to [20px\] at (0.5) should be [20px\]]
expected: FAIL
- [CSS Animations: property <row-gap> from [0px\] to [100px\] at (-0.3) should be [0\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <row-gap> from [initial\] to [20px\] at (1) should be [20px\]]
- expected: FAIL
-
[CSS Animations: property <row-gap> from [initial\] to [20px\] at (0.5) should be [20px\]]
expected: FAIL
@@ -176,27 +83,12 @@
[Web Animations: property <row-gap> from [inherit\] to [20px\] at (0) should be [90px\]]
expected: FAIL
- [CSS Transitions: property <row-gap> from [initial\] to [20px\] at (0) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <row-gap> from [normal\] to [20px\] at (0) should be [20px\]]
- expected: FAIL
-
[CSS Animations: property <row-gap> from [unset\] to [20px\] at (0) should be [unset\]]
expected: FAIL
- [CSS Animations: property <row-gap> from [0px\] to [100px\] at (0) should be [0\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <row-gap> from [initial\] to [20px\] at (-0.3) should be [20px\]]
- expected: FAIL
-
[Web Animations: property <row-gap> from [unset\] to [20px\] at (0.3) should be [unset\]]
expected: FAIL
- [CSS Transitions with transition: all: property <row-gap> from [inherit\] to [20px\] at (0.3) should be [69px\]]
- expected: FAIL
-
[CSS Animations: property <row-gap> from [normal\] to [20px\] at (-0.3) should be [normal\]]
expected: FAIL
@@ -209,99 +101,18 @@
[Web Animations: property <row-gap> from [inherit\] to [20px\] at (0.3) should be [69px\]]
expected: FAIL
- [CSS Animations: property <row-gap> from neutral to [40px\] at (0.6) should be [28px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <row-gap> from [initial\] to [20px\] at (0.6) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <row-gap> from [initial\] to [20px\] at (0.3) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions: property <row-gap> from [inherit\] to [20px\] at (0.3) should be [69px\]]
- expected: FAIL
-
- [CSS Transitions: property <row-gap> from neutral to [40px\] at (0.3) should be [19px\]]
- expected: FAIL
-
[Web Animations: property <row-gap> from [inherit\] to [20px\] at (0.6) should be [48px\]]
expected: FAIL
- [CSS Transitions: property <row-gap> from neutral to [40px\] at (0) should be [10px\]]
- expected: FAIL
-
- [CSS Transitions: property <row-gap> from [unset\] to [20px\] at (0.5) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions: property <row-gap> from [0px\] to [100px\] at (0) should be [0\]]
- expected: FAIL
-
- [CSS Animations: property <row-gap> from [inherit\] to [20px\] at (1.5) should be [0px\]]
- expected: FAIL
-
- [CSS Animations: property <row-gap> from [inherit\] to [20px\] at (1) should be [20px\]]
- expected: FAIL
-
[Web Animations: property <row-gap> from [unset\] to [20px\] at (-0.3) should be [unset\]]
expected: FAIL
- [CSS Transitions with transition: all: property <row-gap> from [normal\] to [20px\] at (-0.3) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <row-gap> from [0px\] to [100px\] at (1.5) should be [150px\]]
- expected: FAIL
-
- [CSS Animations: property <row-gap> from [0px\] to [100px\] at (0.6) should be [60px\]]
- expected: FAIL
-
- [CSS Transitions: property <row-gap> from [unset\] to [20px\] at (0) should be [20px\]]
- expected: FAIL
-
- [CSS Animations: property <row-gap> from neutral to [40px\] at (0.3) should be [19px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <row-gap> from [0px\] to [100px\] at (0.3) should be [30px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <row-gap> from [unset\] to [20px\] at (-0.3) should be [20px\]]
- expected: FAIL
-
- [CSS Animations: property <row-gap> from [0px\] to [100px\] at (1.5) should be [150px\]]
- expected: FAIL
-
[Web Animations: property <row-gap> from [normal\] to [20px\] at (1.5) should be [20px\]]
expected: FAIL
- [CSS Transitions: property <row-gap> from [initial\] to [20px\] at (-0.3) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions: property <row-gap> from [inherit\] to [20px\] at (0) should be [90px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <row-gap> from [0px\] to [100px\] at (0) should be [0\]]
- expected: FAIL
-
- [CSS Transitions: property <row-gap> from [normal\] to [20px\] at (0.6) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions: property <row-gap> from [0px\] to [100px\] at (1) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <row-gap> from [initial\] to [20px\] at (0.3) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions: property <row-gap> from neutral to [40px\] at (-0.3) should be [1px\]]
- expected: FAIL
-
[Web Animations: property <row-gap> from [0px\] to [100px\] at (0) should be [0\]]
expected: FAIL
- [CSS Transitions: property <row-gap> from [unset\] to [20px\] at (1.5) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions: property <row-gap> from [initial\] to [20px\] at (1.5) should be [20px\]]
- expected: FAIL
-
[CSS Animations: property <row-gap> from [normal\] to [20px\] at (1.5) should be [20px\]]
expected: FAIL
@@ -314,162 +125,63 @@
[Web Animations: property <row-gap> from [0px\] to [100px\] at (-0.3) should be [0\]]
expected: FAIL
- [CSS Animations: property <row-gap> from [0px\] to [100px\] at (1) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <row-gap> from [0px\] to [100px\] at (-0.3) should be [0\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <row-gap> from [inherit\] to [20px\] at (1) should be [20px\]]
- expected: FAIL
-
[Web Animations: property <row-gap> from neutral to [40px\] at (0.6) should be [28px\]]
expected: FAIL
- [CSS Transitions with transition: all: property <row-gap> from neutral to [40px\] at (-0.3) should be [1px\]]
- expected: FAIL
-
[Web Animations: property <row-gap> from [initial\] to [20px\] at (0.6) should be [20px\]]
expected: FAIL
- [CSS Transitions with transition: all: property <row-gap> from neutral to [40px\] at (1.5) should be [55px\]]
- expected: FAIL
-
[CSS Animations: property <row-gap> from [unset\] to [20px\] at (0.3) should be [unset\]]
expected: FAIL
- [CSS Transitions: property <row-gap> from [0px\] to [100px\] at (1.5) should be [150px\]]
- expected: FAIL
-
[Web Animations: property <row-gap> from [initial\] to [20px\] at (0.3) should be [initial\]]
expected: FAIL
[CSS Animations: property <row-gap> from [unset\] to [20px\] at (0.5) should be [20px\]]
expected: FAIL
- [CSS Transitions: property <row-gap> from [inherit\] to [20px\] at (-0.3) should be [111px\]]
- expected: FAIL
-
[Web Animations: property <row-gap> from neutral to [40px\] at (-0.3) should be [1px\]]
expected: FAIL
- [CSS Transitions: property <row-gap> from [normal\] to [20px\] at (0.5) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <row-gap> from [normal\] to [20px\] at (0.3) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <row-gap> from [inherit\] to [20px\] at (0) should be [90px\]]
- expected: FAIL
-
- [CSS Transitions: property <row-gap> from [0px\] to [100px\] at (0.6) should be [60px\]]
- expected: FAIL
-
- [CSS Transitions: property <row-gap> from [initial\] to [20px\] at (0.5) should be [20px\]]
- expected: FAIL
-
- [CSS Animations: property <row-gap> from neutral to [40px\] at (0) should be [10px\]]
- expected: FAIL
-
[CSS Animations: property <row-gap> from [normal\] to [20px\] at (0.5) should be [20px\]]
expected: FAIL
[CSS Animations: property <row-gap> from [unset\] to [20px\] at (-0.3) should be [unset\]]
expected: FAIL
- [CSS Transitions: property <row-gap> from [inherit\] to [20px\] at (1) should be [20px\]]
- expected: FAIL
-
[Web Animations: property <row-gap> from [normal\] to [20px\] at (0.3) should be [normal\]]
expected: FAIL
- [CSS Transitions with transition: all: property <row-gap> from [unset\] to [20px\] at (1) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions: property <row-gap> from [unset\] to [20px\] at (1) should be [20px\]]
- expected: FAIL
-
[Web Animations: property <row-gap> from [normal\] to [20px\] at (1) should be [20px\]]
expected: FAIL
- [CSS Transitions with transition: all: property <row-gap> from [unset\] to [20px\] at (1.5) should be [20px\]]
- expected: FAIL
-
[Web Animations: property <row-gap> from [unset\] to [20px\] at (1.5) should be [20px\]]
expected: FAIL
- [CSS Transitions with transition: all: property <row-gap> from neutral to [40px\] at (0.3) should be [19px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <row-gap> from [unset\] to [20px\] at (0.5) should be [20px\]]
- expected: FAIL
-
[Web Animations: property <row-gap> from [0px\] to [100px\] at (1) should be [100px\]]
expected: FAIL
- [CSS Transitions: property <row-gap> from neutral to [40px\] at (1.5) should be [55px\]]
- expected: FAIL
-
- [CSS Animations: property <row-gap> from neutral to [40px\] at (1) should be [40px\]]
- expected: FAIL
-
[CSS Animations: property <row-gap> from [unset\] to [20px\] at (1.5) should be [20px\]]
expected: FAIL
- [CSS Transitions: property <row-gap> from [unset\] to [20px\] at (-0.3) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <row-gap> from [0px\] to [100px\] at (0.6) should be [60px\]]
- expected: FAIL
-
- [CSS Animations: property <row-gap> from [inherit\] to [20px\] at (0) should be [90px\]]
- expected: FAIL
-
- [CSS Transitions: property <row-gap> from [normal\] to [20px\] at (1.5) should be [20px\]]
- expected: FAIL
-
[Web Animations: property <row-gap> from [inherit\] to [20px\] at (-0.3) should be [111px\]]
expected: FAIL
[Web Animations: property <row-gap> from [unset\] to [20px\] at (0.6) should be [20px\]]
expected: FAIL
- [CSS Transitions: property <row-gap> from neutral to [40px\] at (0.6) should be [28px\]]
- expected: FAIL
-
[CSS Animations: property <row-gap> from [normal\] to [20px\] at (0.6) should be [20px\]]
expected: FAIL
[CSS Animations: property <row-gap> from [initial\] to [20px\] at (1) should be [20px\]]
expected: FAIL
- [CSS Transitions: property <row-gap> from [inherit\] to [20px\] at (1.5) should be [0px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <row-gap> from [inherit\] to [20px\] at (0.6) should be [48px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <row-gap> from neutral to [40px\] at (1) should be [40px\]]
- expected: FAIL
-
[Web Animations: property <row-gap> from [normal\] to [20px\] at (0.6) should be [20px\]]
expected: FAIL
- [CSS Transitions with transition: all: property <row-gap> from [unset\] to [20px\] at (0) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions: property <row-gap> from [initial\] to [20px\] at (0.6) should be [20px\]]
- expected: FAIL
-
[Web Animations: property <row-gap> from [normal\] to [20px\] at (-0.3) should be [normal\]]
expected: FAIL
- [CSS Animations: property <row-gap> from neutral to [40px\] at (1.5) should be [55px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <row-gap> from [initial\] to [20px\] at (1.5) should be [20px\]]
- expected: FAIL
-
[CSS Transitions: property <row-gap> from [initial\] to [20px\] at (-0.3) should be [initial\]]
expected: FAIL
@@ -506,18 +218,6 @@
[CSS Transitions with transition-behavior:allow-discrete: property <row-gap> from [initial\] to [20px\] at (0.3) should be [initial\]]
expected: FAIL
- [CSS Transitions with transition-behavior:allow-discrete: property <row-gap> from [initial\] to [20px\] at (0.5) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <row-gap> from [initial\] to [20px\] at (0.6) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <row-gap> from [initial\] to [20px\] at (1) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <row-gap> from [initial\] to [20px\] at (1.5) should be [20px\]]
- expected: FAIL
-
[CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <row-gap> from [initial\] to [20px\] at (-0.3) should be [initial\]]
expected: FAIL
@@ -527,18 +227,6 @@
[CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <row-gap> from [initial\] to [20px\] at (0.3) should be [initial\]]
expected: FAIL
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <row-gap> from [initial\] to [20px\] at (0.5) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <row-gap> from [initial\] to [20px\] at (0.6) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <row-gap> from [initial\] to [20px\] at (1) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <row-gap> from [initial\] to [20px\] at (1.5) should be [20px\]]
- expected: FAIL
-
[CSS Transitions with transition-behavior:allow-discrete: property <row-gap> from [unset\] to [20px\] at (-0.3) should be [unset\]]
expected: FAIL
@@ -548,18 +236,6 @@
[CSS Transitions with transition-behavior:allow-discrete: property <row-gap> from [unset\] to [20px\] at (0.3) should be [unset\]]
expected: FAIL
- [CSS Transitions with transition-behavior:allow-discrete: property <row-gap> from [unset\] to [20px\] at (0.5) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <row-gap> from [unset\] to [20px\] at (0.6) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <row-gap> from [unset\] to [20px\] at (1) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <row-gap> from [unset\] to [20px\] at (1.5) should be [20px\]]
- expected: FAIL
-
[CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <row-gap> from [unset\] to [20px\] at (-0.3) should be [unset\]]
expected: FAIL
@@ -569,18 +245,6 @@
[CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <row-gap> from [unset\] to [20px\] at (0.3) should be [unset\]]
expected: FAIL
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <row-gap> from [unset\] to [20px\] at (0.5) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <row-gap> from [unset\] to [20px\] at (0.6) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <row-gap> from [unset\] to [20px\] at (1) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <row-gap> from [unset\] to [20px\] at (1.5) should be [20px\]]
- expected: FAIL
-
[CSS Transitions with transition-behavior:allow-discrete: property <row-gap> from [normal\] to [20px\] at (-0.3) should be [normal\]]
expected: FAIL
@@ -590,18 +254,6 @@
[CSS Transitions with transition-behavior:allow-discrete: property <row-gap> from [normal\] to [20px\] at (0.3) should be [normal\]]
expected: FAIL
- [CSS Transitions with transition-behavior:allow-discrete: property <row-gap> from [normal\] to [20px\] at (0.5) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <row-gap> from [normal\] to [20px\] at (0.6) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <row-gap> from [normal\] to [20px\] at (1) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <row-gap> from [normal\] to [20px\] at (1.5) should be [20px\]]
- expected: FAIL
-
[CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <row-gap> from [normal\] to [20px\] at (-0.3) should be [normal\]]
expected: FAIL
@@ -610,15 +262,3 @@
[CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <row-gap> from [normal\] to [20px\] at (0.3) should be [normal\]]
expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <row-gap> from [normal\] to [20px\] at (0.5) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <row-gap> from [normal\] to [20px\] at (0.6) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <row-gap> from [normal\] to [20px\] at (1) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <row-gap> from [normal\] to [20px\] at (1.5) should be [20px\]]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-align/gaps/column-gap-animation-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-align/gaps/column-gap-animation-001.html.ini
deleted file mode 100644
index 2029d107688..00000000000
--- a/tests/wpt/meta-legacy-layout/css/css-align/gaps/column-gap-animation-001.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[column-gap-animation-001.html]
- [column-gap is interpolable]
- expected: FAIL
-
diff --git a/tests/wpt/meta-legacy-layout/css/css-align/gaps/column-gap-parsing-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-align/gaps/column-gap-parsing-001.html.ini
deleted file mode 100644
index 1fbdce675cd..00000000000
--- a/tests/wpt/meta-legacy-layout/css/css-align/gaps/column-gap-parsing-001.html.ini
+++ /dev/null
@@ -1,52 +0,0 @@
-[column-gap-parsing-001.html]
- [column-gap with multiple values is invalid]
- expected: FAIL
-
- [Resolution column-gap is invalid]
- expected: FAIL
-
- [column-gap accepts calc() mixing fixed and percentage values]
- expected: FAIL
-
- [column-gap is inheritable]
- expected: FAIL
-
- [Initial inherited column-gap is 'normal']
- expected: FAIL
-
- [column-gap accepts calc()]
- expected: FAIL
-
- ['none' column-gap is invalid]
- expected: FAIL
-
- [column-gap accepts em]
- expected: FAIL
-
- [Negative column-gap is invalid]
- expected: FAIL
-
- [Initial column-gap is 'normal' 2]
- expected: FAIL
-
- [Time column-gap is invalid]
- expected: FAIL
-
- [Default column-gap is 'normal']
- expected: FAIL
-
- [Initial column-gap is 'normal']
- expected: FAIL
-
- [Angle column-gap is invalid]
- expected: FAIL
-
- ['max-content' column-gap is invalid]
- expected: FAIL
-
- [column-gap accepts percentage]
- expected: FAIL
-
- [column-gap accepts pixels]
- expected: FAIL
-
diff --git a/tests/wpt/meta-legacy-layout/css/css-align/gaps/gap-animation-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-align/gaps/gap-animation-001.html.ini
deleted file mode 100644
index 368f60a2382..00000000000
--- a/tests/wpt/meta-legacy-layout/css/css-align/gaps/gap-animation-001.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[gap-animation-001.html]
- [gap is interpolable]
- expected: FAIL
-
diff --git a/tests/wpt/meta-legacy-layout/css/css-align/gaps/gap-animation-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-align/gaps/gap-animation-004.html.ini
deleted file mode 100644
index dc8783b6bf0..00000000000
--- a/tests/wpt/meta-legacy-layout/css/css-align/gaps/gap-animation-004.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[gap-animation-004.html]
- [gap is interpolable]
- expected: FAIL
-
diff --git a/tests/wpt/meta-legacy-layout/css/css-align/gaps/gap-normal-computed-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-align/gaps/gap-normal-computed-001.html.ini
deleted file mode 100644
index 752887ce2b7..00000000000
--- a/tests/wpt/meta-legacy-layout/css/css-align/gaps/gap-normal-computed-001.html.ini
+++ /dev/null
@@ -1,19 +0,0 @@
-[gap-normal-computed-001.html]
- [row-gap:normal computes to normal on grid]
- expected: FAIL
-
- [colum-gap:normal (main axis) computes to normal on flexbox]
- expected: FAIL
-
- [colum-gap:normal computes to normal on multicol elements]
- expected: FAIL
-
- [row-gap:normal computes to normal on multicol elements]
- expected: FAIL
-
- [row-gap:normal (cross axis) computes to normal on flexbox]
- expected: FAIL
-
- [colum-gap:normal computes to normal on grid]
- expected: FAIL
-
diff --git a/tests/wpt/meta-legacy-layout/css/css-align/gaps/gap-parsing-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-align/gaps/gap-parsing-001.html.ini
deleted file mode 100644
index 7a7f2814adf..00000000000
--- a/tests/wpt/meta-legacy-layout/css/css-align/gaps/gap-parsing-001.html.ini
+++ /dev/null
@@ -1,73 +0,0 @@
-[gap-parsing-001.html]
- [gap accepts percentage]
- expected: FAIL
-
- [gap accepts em 2]
- expected: FAIL
-
- [gap with slash is invalid]
- expected: FAIL
-
- [gap is inheritable]
- expected: FAIL
-
- [gap with three values is invalid]
- expected: FAIL
-
- [Initial inherited gap is 'normal']
- expected: FAIL
-
- [Angle gap is invalid]
- expected: FAIL
-
- [Default gap is 'normal']
- expected: FAIL
-
- [gap accepts percentage 2]
- expected: FAIL
-
- [Initial gap is 'normal']
- expected: FAIL
-
- [gap accepts em]
- expected: FAIL
-
- [gap accepts pixels 2]
- expected: FAIL
-
- [gap accepts pixels]
- expected: FAIL
-
- [gap accepts calc() mixing fixed and percentage values]
- expected: FAIL
-
- [Resolution gap is invalid]
- expected: FAIL
-
- [gap accepts calc()]
- expected: FAIL
-
- [Initial gap is 'normal' 2]
- expected: FAIL
-
- [gap accepts calc() 2]
- expected: FAIL
-
- [Negative gap is invalid]
- expected: FAIL
-
- ['max-content' gap is invalid]
- expected: FAIL
-
- [Time gap is invalid]
- expected: FAIL
-
- ['none' gap is invalid]
- expected: FAIL
-
- [gap with one wrong value is invalid]
- expected: FAIL
-
- [gap accepts pixels combined with percentage]
- expected: FAIL
-
diff --git a/tests/wpt/meta-legacy-layout/css/css-align/gaps/gap-parsing-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-align/gaps/gap-parsing-002.html.ini
deleted file mode 100644
index 16f0ca2120a..00000000000
--- a/tests/wpt/meta-legacy-layout/css/css-align/gaps/gap-parsing-002.html.ini
+++ /dev/null
@@ -1,48 +0,0 @@
-[gap-parsing-002.html]
- [e.style['gap'\] = "normal" should set the property value]
- expected: FAIL
-
- [e.style['gap'\] = "10px" should set the property value]
- expected: FAIL
-
- [e.style['gap'\] = "normal normal" should set the property value]
- expected: FAIL
-
- [e.style['gap'\] = "10px 10px" should set the property value]
- expected: FAIL
-
- [e.style['column-gap'\] = "normal" should set the property value]
- expected: FAIL
-
- [e.style['column-gap'\] = "10px" should set the property value]
- expected: FAIL
-
- [e.style['row-gap'\] = "normal" should set the property value]
- expected: FAIL
-
- [e.style['row-gap'\] = "10px" should set the property value]
- expected: FAIL
-
- ['row-gap: normal; column-gap: normal;' is serialized to 'gap: normal;']
- expected: FAIL
-
- [getPropertyValue for 'row-gap: normal; column-gap: normal;' returns 'normal']
- expected: FAIL
-
- ['row-gap: 10px; column-gap: 10px;' is serialized to 'gap: 10px;']
- expected: FAIL
-
- [getPropertyValue for 'row-gap: 10px; column-gap: 10px;' returns '10px']
- expected: FAIL
-
- ['row-gap: 10px; column-gap: normal;' is serialized to 'gap: 10px normal;']
- expected: FAIL
-
- [getPropertyValue for 'row-gap: 10px; column-gap: normal;' returns '10px normal']
- expected: FAIL
-
- ['column-gap: normal; row-gap: 10px;' is serialized to 'gap: 10px normal;']
- expected: FAIL
-
- [getPropertyValue for 'column-gap: normal; row-gap: 10px;' returns '10px normal']
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-align/gaps/grid-column-gap-parsing-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-align/gaps/grid-column-gap-parsing-001.html.ini
deleted file mode 100644
index 4da878148d7..00000000000
--- a/tests/wpt/meta-legacy-layout/css/css-align/gaps/grid-column-gap-parsing-001.html.ini
+++ /dev/null
@@ -1,52 +0,0 @@
-[grid-column-gap-parsing-001.html]
- ['none' grid-column-gap is invalid]
- expected: FAIL
-
- [Angle grid-column-gap is invalid]
- expected: FAIL
-
- [Resolution grid-column-gap is invalid]
- expected: FAIL
-
- [grid-column-gap is inheritable]
- expected: FAIL
-
- [Negative grid-column-gap is invalid]
- expected: FAIL
-
- [grid-column-gap accepts pixels]
- expected: FAIL
-
- [grid-column-gap accepts em]
- expected: FAIL
-
- [Initial grid-column-gap is 'normal' 2]
- expected: FAIL
-
- ['max-content' grid-column-gap is invalid]
- expected: FAIL
-
- [grid-column-gap with multiple values is invalid]
- expected: FAIL
-
- [Initial grid-column-gap is 'normal']
- expected: FAIL
-
- [Initial inherited grid-column-gap is 'normal']
- expected: FAIL
-
- [grid-column-gap accepts percentage]
- expected: FAIL
-
- [Default grid-column-gap is 'normal']
- expected: FAIL
-
- [Time grid-column-gap is invalid]
- expected: FAIL
-
- [grid-column-gap accepts calc() mixing fixed and percentage values]
- expected: FAIL
-
- [grid-column-gap accepts calc()]
- expected: FAIL
-
diff --git a/tests/wpt/meta-legacy-layout/css/css-align/gaps/grid-gap-parsing-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-align/gaps/grid-gap-parsing-001.html.ini
deleted file mode 100644
index c7854b11bc0..00000000000
--- a/tests/wpt/meta-legacy-layout/css/css-align/gaps/grid-gap-parsing-001.html.ini
+++ /dev/null
@@ -1,73 +0,0 @@
-[grid-gap-parsing-001.html]
- [grid-gap accepts em 2]
- expected: FAIL
-
- [grid-gap accepts em]
- expected: FAIL
-
- [grid-gap accepts pixels 2]
- expected: FAIL
-
- [Initial grid-gap is 'normal' 2]
- expected: FAIL
-
- [grid-gap with slash is invalid]
- expected: FAIL
-
- [grid-gap accepts pixels]
- expected: FAIL
-
- [grid-gap accepts calc() 2]
- expected: FAIL
-
- [Default grid-gap is 'normal']
- expected: FAIL
-
- [grid-gap accepts pixels combined with percentage]
- expected: FAIL
-
- [grid-gap accepts percentage]
- expected: FAIL
-
- [Initial inherited grid-gap is 'normal']
- expected: FAIL
-
- [grid-gap accepts percentage 2]
- expected: FAIL
-
- [Resolution grid-gap is invalid]
- expected: FAIL
-
- [grid-gap with three values is invalid]
- expected: FAIL
-
- [Negative grid-gap is invalid]
- expected: FAIL
-
- [Angle grid-gap is invalid]
- expected: FAIL
-
- [grid-gap accepts calc()]
- expected: FAIL
-
- [Time grid-gap is invalid]
- expected: FAIL
-
- [grid-gap accepts calc() mixing fixed and percentage values]
- expected: FAIL
-
- [grid-gap with one wrong value is invalid]
- expected: FAIL
-
- ['max-content' grid-gap is invalid]
- expected: FAIL
-
- [Initial grid-gap is 'normal']
- expected: FAIL
-
- [grid-gap is inheritable]
- expected: FAIL
-
- ['none' grid-gap is invalid]
- expected: FAIL
-
diff --git a/tests/wpt/meta-legacy-layout/css/css-align/gaps/grid-row-gap-parsing-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-align/gaps/grid-row-gap-parsing-001.html.ini
deleted file mode 100644
index 29d8e55ae4b..00000000000
--- a/tests/wpt/meta-legacy-layout/css/css-align/gaps/grid-row-gap-parsing-001.html.ini
+++ /dev/null
@@ -1,52 +0,0 @@
-[grid-row-gap-parsing-001.html]
- [Negative grid-row-gap is invalid]
- expected: FAIL
-
- ['max-content' grid-row-gap is invalid]
- expected: FAIL
-
- [Time grid-row-gap is invalid]
- expected: FAIL
-
- [grid-row-gap accepts calc() mixing fixed and percentage values]
- expected: FAIL
-
- [Resolution grid-row-gap is invalid]
- expected: FAIL
-
- [grid-row-gap accepts percentage]
- expected: FAIL
-
- [Initial inherited grid-row-gap is 'normal']
- expected: FAIL
-
- ['none' grid-row-gap is invalid]
- expected: FAIL
-
- [Default grid-row-gap is 'normal']
- expected: FAIL
-
- [grid-row-gap is inheritable]
- expected: FAIL
-
- [grid-row-gap accepts pixels]
- expected: FAIL
-
- [grid-row-gap with multiple values is invalid]
- expected: FAIL
-
- [grid-row-gap accepts calc()]
- expected: FAIL
-
- [Angle grid-row-gap is invalid]
- expected: FAIL
-
- [grid-row-gap accepts em]
- expected: FAIL
-
- [Initial grid-row-gap is 'normal']
- expected: FAIL
-
- [Initial grid-row-gap is 'normal' 2]
- expected: FAIL
-
diff --git a/tests/wpt/meta-legacy-layout/css/css-align/gaps/row-gap-animation-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-align/gaps/row-gap-animation-001.html.ini
deleted file mode 100644
index 8e43e885828..00000000000
--- a/tests/wpt/meta-legacy-layout/css/css-align/gaps/row-gap-animation-001.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[row-gap-animation-001.html]
- [row-gap is interpolable]
- expected: FAIL
-
diff --git a/tests/wpt/meta-legacy-layout/css/css-align/gaps/row-gap-parsing-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-align/gaps/row-gap-parsing-001.html.ini
deleted file mode 100644
index 7e08e56ba6b..00000000000
--- a/tests/wpt/meta-legacy-layout/css/css-align/gaps/row-gap-parsing-001.html.ini
+++ /dev/null
@@ -1,52 +0,0 @@
-[row-gap-parsing-001.html]
- [row-gap accepts percentage]
- expected: FAIL
-
- [row-gap with multiple values is invalid]
- expected: FAIL
-
- [row-gap accepts calc()]
- expected: FAIL
-
- [Default row-gap is 'normal']
- expected: FAIL
-
- [Resolution row-gap is invalid]
- expected: FAIL
-
- ['max-content' row-gap is invalid]
- expected: FAIL
-
- [row-gap accepts calc() mixing fixed and percentage values]
- expected: FAIL
-
- [Negative row-gap is invalid]
- expected: FAIL
-
- [row-gap accepts pixels]
- expected: FAIL
-
- [Initial inherited row-gap is 'normal']
- expected: FAIL
-
- ['none' row-gap is invalid]
- expected: FAIL
-
- [row-gap accepts em]
- expected: FAIL
-
- [Initial row-gap is 'normal']
- expected: FAIL
-
- [row-gap is inheritable]
- expected: FAIL
-
- [Angle row-gap is invalid]
- expected: FAIL
-
- [Initial row-gap is 'normal' 2]
- expected: FAIL
-
- [Time row-gap is invalid]
- expected: FAIL
-
diff --git a/tests/wpt/meta-legacy-layout/css/css-align/inheritance.html.ini b/tests/wpt/meta-legacy-layout/css/css-align/inheritance.html.ini
index 8e3d9b6c540..12616c7003f 100644
--- a/tests/wpt/meta-legacy-layout/css/css-align/inheritance.html.ini
+++ b/tests/wpt/meta-legacy-layout/css/css-align/inheritance.html.ini
@@ -1,15 +1,3 @@
[inheritance.html]
- [Property row-gap does not inherit]
- expected: FAIL
-
- [Property row-gap has initial value normal]
- expected: FAIL
-
- [Property column-gap has initial value normal]
- expected: FAIL
-
[Property justify-items has initial value legacy center]
expected: FAIL
-
- [Property column-gap does not inherit]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-align/parsing/column-gap-computed.html.ini b/tests/wpt/meta-legacy-layout/css/css-align/parsing/column-gap-computed.html.ini
index 25d3ec3ed8d..9e47b32a567 100644
--- a/tests/wpt/meta-legacy-layout/css/css-align/parsing/column-gap-computed.html.ini
+++ b/tests/wpt/meta-legacy-layout/css/css-align/parsing/column-gap-computed.html.ini
@@ -13,19 +13,3 @@
[Property column-gap value 'calc(10px - 0.5em)' computes to '0px']
expected: FAIL
-
- [Property column-gap value 'normal']
- expected: FAIL
-
- [Property column-gap value 'calc(10px + 0.5em)']
- expected: FAIL
-
- [Property column-gap value '40%']
- expected: FAIL
-
- [Property column-gap value 'calc(10px - 0.5em)']
- expected: FAIL
-
- [Property column-gap value 'calc(50% + 60px)']
- expected: FAIL
-
diff --git a/tests/wpt/meta-legacy-layout/css/css-align/parsing/column-gap-valid.html.ini b/tests/wpt/meta-legacy-layout/css/css-align/parsing/column-gap-valid.html.ini
deleted file mode 100644
index 8435e2dddbe..00000000000
--- a/tests/wpt/meta-legacy-layout/css/css-align/parsing/column-gap-valid.html.ini
+++ /dev/null
@@ -1,19 +0,0 @@
-[column-gap-valid.html]
- [e.style['column-gap'\] = "1px" should set the property value]
- expected: FAIL
-
- [e.style['column-gap'\] = "0" should set the property value]
- expected: FAIL
-
- [e.style['column-gap'\] = "calc(2em + 3ex)" should set the property value]
- expected: FAIL
-
- [e.style['column-gap'\] = "4%" should set the property value]
- expected: FAIL
-
- [e.style['column-gap'\] = "5vmin" should set the property value]
- expected: FAIL
-
- [e.style['column-gap'\] = "normal" should set the property value]
- expected: FAIL
-
diff --git a/tests/wpt/meta-legacy-layout/css/css-align/parsing/gap-computed.html.ini b/tests/wpt/meta-legacy-layout/css/css-align/parsing/gap-computed.html.ini
index 4b82ec79ae3..c292712c5c9 100644
--- a/tests/wpt/meta-legacy-layout/css/css-align/parsing/gap-computed.html.ini
+++ b/tests/wpt/meta-legacy-layout/css/css-align/parsing/gap-computed.html.ini
@@ -31,37 +31,3 @@
[Property gap value 'calc(-0.5em + 10px)' computes to '0px']
expected: FAIL
-
- [Property gap value '20% calc(20% + 10px)']
- expected: FAIL
-
- [Property gap value 'normal']
- expected: FAIL
-
- [Property gap value 'normal 10px']
- expected: FAIL
-
- [Property gap value '20%']
- expected: FAIL
-
- [Property gap value '10px']
- expected: FAIL
-
- [Property gap value '10px 20%']
- expected: FAIL
-
- [Property gap value 'calc(-0.5em + 10px) calc(0.5em + 10px)']
- expected: FAIL
-
- [Property gap value 'calc(20% + 10px) normal']
- expected: FAIL
-
- [Property gap value 'calc(20% + 10px)']
- expected: FAIL
-
- [Property gap value 'calc(-0.5em + 10px)']
- expected: FAIL
-
- [Property gap value 'calc(0.5em + 10px)']
- expected: FAIL
-
diff --git a/tests/wpt/meta-legacy-layout/css/css-align/parsing/gap-shorthand.html.ini b/tests/wpt/meta-legacy-layout/css/css-align/parsing/gap-shorthand.html.ini
index 604fdfda955..6cf24db35ca 100644
--- a/tests/wpt/meta-legacy-layout/css/css-align/parsing/gap-shorthand.html.ini
+++ b/tests/wpt/meta-legacy-layout/css/css-align/parsing/gap-shorthand.html.ini
@@ -10,40 +10,3 @@
[e.style['gap'\] = "10px normal" should set the longhand values]
expected: FAIL
-
- [e.style['gap'\] = "10px normal" should set column-gap]
- expected: FAIL
-
- [e.style['gap'\] = "normal calc(20% + 10px)" should set row-gap]
- expected: FAIL
-
- [e.style['gap'\] = "10px 20%" should set row-gap]
- expected: FAIL
-
- [e.style['gap'\] = "10px normal" should set row-gap]
- expected: FAIL
-
- [e.style['gap'\] = "normal" should set row-gap]
- expected: FAIL
-
- [e.style['gap'\] = "normal" should set column-gap]
- expected: FAIL
-
- [e.style['gap'\] = "normal calc(20% + 10px)" should set column-gap]
- expected: FAIL
-
- [e.style['gap'\] = "10px 20%" should set column-gap]
- expected: FAIL
-
- [e.style['gap'\] = "10px normal" should not set unrelated longhands]
- expected: FAIL
-
- [e.style['gap'\] = "normal calc(20% + 10px)" should not set unrelated longhands]
- expected: FAIL
-
- [e.style['gap'\] = "10px 20%" should not set unrelated longhands]
- expected: FAIL
-
- [e.style['gap'\] = "normal" should not set unrelated longhands]
- expected: FAIL
-
diff --git a/tests/wpt/meta-legacy-layout/css/css-align/parsing/gap-valid.html.ini b/tests/wpt/meta-legacy-layout/css/css-align/parsing/gap-valid.html.ini
deleted file mode 100644
index 61c7e78a818..00000000000
--- a/tests/wpt/meta-legacy-layout/css/css-align/parsing/gap-valid.html.ini
+++ /dev/null
@@ -1,28 +0,0 @@
-[gap-valid.html]
- [e.style['gap'\] = "20% calc(20% + 10px)" should set the property value]
- expected: FAIL
-
- [e.style['gap'\] = "20% 20%" should set the property value]
- expected: FAIL
-
- [e.style['gap'\] = "10px 20%" should set the property value]
- expected: FAIL
-
- [e.style['gap'\] = "0px normal" should set the property value]
- expected: FAIL
-
- [e.style['gap'\] = "calc(20% + 10px) 0px" should set the property value]
- expected: FAIL
-
- [e.style['gap'\] = "10px 10px" should set the property value]
- expected: FAIL
-
- [e.style['gap'\] = "normal normal" should set the property value]
- expected: FAIL
-
- [e.style['gap'\] = "normal 10px" should set the property value]
- expected: FAIL
-
- [e.style['gap'\] = "calc(20% + 10px) calc(20% + 10px)" should set the property value]
- expected: FAIL
-
diff --git a/tests/wpt/meta-legacy-layout/css/css-align/parsing/grid-column-gap-computed.html.ini b/tests/wpt/meta-legacy-layout/css/css-align/parsing/grid-column-gap-computed.html.ini
deleted file mode 100644
index 5eda98917f4..00000000000
--- a/tests/wpt/meta-legacy-layout/css/css-align/parsing/grid-column-gap-computed.html.ini
+++ /dev/null
@@ -1,15 +0,0 @@
-[grid-column-gap-computed.html]
- [Property grid-column-gap value 'normal']
- expected: FAIL
-
- [Property grid-column-gap value 'calc(10px + 0.5em)']
- expected: FAIL
-
- [Property grid-column-gap value 'calc(10px - 0.5em)']
- expected: FAIL
-
- [Property grid-column-gap value '40%']
- expected: FAIL
-
- [Property grid-column-gap value 'calc(50% + 60px)']
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-align/parsing/grid-column-gap-valid.html.ini b/tests/wpt/meta-legacy-layout/css/css-align/parsing/grid-column-gap-valid.html.ini
deleted file mode 100644
index ec21c41147c..00000000000
--- a/tests/wpt/meta-legacy-layout/css/css-align/parsing/grid-column-gap-valid.html.ini
+++ /dev/null
@@ -1,18 +0,0 @@
-[grid-column-gap-valid.html]
- [e.style['grid-column-gap'\] = "normal" should set the property value]
- expected: FAIL
-
- [e.style['grid-column-gap'\] = "0" should set the property value]
- expected: FAIL
-
- [e.style['grid-column-gap'\] = "1px" should set the property value]
- expected: FAIL
-
- [e.style['grid-column-gap'\] = "calc(2em + 3ex)" should set the property value]
- expected: FAIL
-
- [e.style['grid-column-gap'\] = "4%" should set the property value]
- expected: FAIL
-
- [e.style['grid-column-gap'\] = "5vmin" should set the property value]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-align/parsing/grid-gap-computed.html.ini b/tests/wpt/meta-legacy-layout/css/css-align/parsing/grid-gap-computed.html.ini
deleted file mode 100644
index 2d68fe883e1..00000000000
--- a/tests/wpt/meta-legacy-layout/css/css-align/parsing/grid-gap-computed.html.ini
+++ /dev/null
@@ -1,33 +0,0 @@
-[grid-gap-computed.html]
- [Property grid-gap value 'normal']
- expected: FAIL
-
- [Property grid-gap value '10px']
- expected: FAIL
-
- [Property grid-gap value '20%']
- expected: FAIL
-
- [Property grid-gap value 'calc(20% + 10px)']
- expected: FAIL
-
- [Property grid-gap value 'calc(-0.5em + 10px)']
- expected: FAIL
-
- [Property grid-gap value 'calc(0.5em + 10px)']
- expected: FAIL
-
- [Property grid-gap value 'normal 10px']
- expected: FAIL
-
- [Property grid-gap value '10px 20%']
- expected: FAIL
-
- [Property grid-gap value '20% calc(20% + 10px)']
- expected: FAIL
-
- [Property grid-gap value 'calc(20% + 10px) normal']
- expected: FAIL
-
- [Property grid-gap value 'calc(-0.5em + 10px) calc(0.5em + 10px)']
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-align/parsing/grid-gap-shorthand.html.ini b/tests/wpt/meta-legacy-layout/css/css-align/parsing/grid-gap-shorthand.html.ini
deleted file mode 100644
index 65d3c9ef707..00000000000
--- a/tests/wpt/meta-legacy-layout/css/css-align/parsing/grid-gap-shorthand.html.ini
+++ /dev/null
@@ -1,36 +0,0 @@
-[grid-gap-shorthand.html]
- [e.style['gap'\] = "normal" should set column-gap]
- expected: FAIL
-
- [e.style['gap'\] = "normal" should set row-gap]
- expected: FAIL
-
- [e.style['gap'\] = "normal" should not set unrelated longhands]
- expected: FAIL
-
- [e.style['gap'\] = "10px 20%" should set column-gap]
- expected: FAIL
-
- [e.style['gap'\] = "10px 20%" should set row-gap]
- expected: FAIL
-
- [e.style['gap'\] = "10px 20%" should not set unrelated longhands]
- expected: FAIL
-
- [e.style['gap'\] = "10px normal" should set column-gap]
- expected: FAIL
-
- [e.style['gap'\] = "10px normal" should set row-gap]
- expected: FAIL
-
- [e.style['gap'\] = "10px normal" should not set unrelated longhands]
- expected: FAIL
-
- [e.style['gap'\] = "normal calc(20% + 10px)" should set grid-column-gap]
- expected: FAIL
-
- [e.style['gap'\] = "normal calc(20% + 10px)" should set grid-row-gap]
- expected: FAIL
-
- [e.style['gap'\] = "normal calc(20% + 10px)" should not set unrelated longhands]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-align/parsing/grid-gap-valid.html.ini b/tests/wpt/meta-legacy-layout/css/css-align/parsing/grid-gap-valid.html.ini
deleted file mode 100644
index 3c7918388c2..00000000000
--- a/tests/wpt/meta-legacy-layout/css/css-align/parsing/grid-gap-valid.html.ini
+++ /dev/null
@@ -1,27 +0,0 @@
-[grid-gap-valid.html]
- [e.style['grid-gap'\] = "normal normal" should set the property value]
- expected: FAIL
-
- [e.style['grid-gap'\] = "10px 10px" should set the property value]
- expected: FAIL
-
- [e.style['grid-gap'\] = "20% 20%" should set the property value]
- expected: FAIL
-
- [e.style['grid-gap'\] = "calc(20% + 10px) calc(20% + 10px)" should set the property value]
- expected: FAIL
-
- [e.style['grid-gap'\] = "normal 10px" should set the property value]
- expected: FAIL
-
- [e.style['grid-gap'\] = "10px 20%" should set the property value]
- expected: FAIL
-
- [e.style['grid-gap'\] = "20% calc(20% + 10px)" should set the property value]
- expected: FAIL
-
- [e.style['grid-gap'\] = "calc(20% + 10px) 0px" should set the property value]
- expected: FAIL
-
- [e.style['grid-gap'\] = "0px normal" should set the property value]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-align/parsing/grid-row-gap-computed.html.ini b/tests/wpt/meta-legacy-layout/css/css-align/parsing/grid-row-gap-computed.html.ini
deleted file mode 100644
index ec012bf08df..00000000000
--- a/tests/wpt/meta-legacy-layout/css/css-align/parsing/grid-row-gap-computed.html.ini
+++ /dev/null
@@ -1,18 +0,0 @@
-[grid-row-gap-computed.html]
- [Property grid-row-gap value 'normal']
- expected: FAIL
-
- [Property grid-row-gap value '10px']
- expected: FAIL
-
- [Property grid-row-gap value '20%']
- expected: FAIL
-
- [Property grid-row-gap value 'calc(20% + 10px)']
- expected: FAIL
-
- [Property grid-row-gap value 'calc(-0.5em + 10px)']
- expected: FAIL
-
- [Property grid-row-gap value 'calc(0.5em + 10px)']
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-align/parsing/grid-row-gap-valid.html.ini b/tests/wpt/meta-legacy-layout/css/css-align/parsing/grid-row-gap-valid.html.ini
deleted file mode 100644
index 1fecfe68cc3..00000000000
--- a/tests/wpt/meta-legacy-layout/css/css-align/parsing/grid-row-gap-valid.html.ini
+++ /dev/null
@@ -1,15 +0,0 @@
-[grid-row-gap-valid.html]
- [e.style['grid-row-gap'\] = "normal" should set the property value]
- expected: FAIL
-
- [e.style['grid-row-gap'\] = "10px" should set the property value]
- expected: FAIL
-
- [e.style['grid-row-gap'\] = "20%" should set the property value]
- expected: FAIL
-
- [e.style['grid-row-gap'\] = "calc(20% + 10px)" should set the property value]
- expected: FAIL
-
- [e.style['grid-row-gap'\] = "0" should set the property value]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-align/parsing/row-gap-computed.html.ini b/tests/wpt/meta-legacy-layout/css/css-align/parsing/row-gap-computed.html.ini
index a6b34573538..bd953571122 100644
--- a/tests/wpt/meta-legacy-layout/css/css-align/parsing/row-gap-computed.html.ini
+++ b/tests/wpt/meta-legacy-layout/css/css-align/parsing/row-gap-computed.html.ini
@@ -16,22 +16,3 @@
[Property row-gap value 'calc(-0.5em + 10px)' computes to '0px']
expected: FAIL
-
- [Property row-gap value '20%']
- expected: FAIL
-
- [Property row-gap value 'normal']
- expected: FAIL
-
- [Property row-gap value 'calc(20% + 10px)']
- expected: FAIL
-
- [Property row-gap value '10px']
- expected: FAIL
-
- [Property row-gap value 'calc(-0.5em + 10px)']
- expected: FAIL
-
- [Property row-gap value 'calc(0.5em + 10px)']
- expected: FAIL
-
diff --git a/tests/wpt/meta-legacy-layout/css/css-align/parsing/row-gap-valid.html.ini b/tests/wpt/meta-legacy-layout/css/css-align/parsing/row-gap-valid.html.ini
deleted file mode 100644
index 93d66432e51..00000000000
--- a/tests/wpt/meta-legacy-layout/css/css-align/parsing/row-gap-valid.html.ini
+++ /dev/null
@@ -1,16 +0,0 @@
-[row-gap-valid.html]
- [e.style['row-gap'\] = "normal" should set the property value]
- expected: FAIL
-
- [e.style['row-gap'\] = "calc(20% + 10px)" should set the property value]
- expected: FAIL
-
- [e.style['row-gap'\] = "10px" should set the property value]
- expected: FAIL
-
- [e.style['row-gap'\] = "20%" should set the property value]
- expected: FAIL
-
- [e.style['row-gap'\] = "0" should set the property value]
- expected: FAIL
-
diff --git a/tests/wpt/meta-legacy-layout/css/css-align/self-alignment/block-justify-self.html.ini b/tests/wpt/meta-legacy-layout/css/css-align/self-alignment/block-justify-self.html.ini
new file mode 100644
index 00000000000..a08847eb3f6
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-align/self-alignment/block-justify-self.html.ini
@@ -0,0 +1,2 @@
+[block-justify-self.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-animations/animation-canceled-by-parent-details-element-being-closed.html.ini b/tests/wpt/meta-legacy-layout/css/css-animations/animation-canceled-by-parent-details-element-being-closed.html.ini
deleted file mode 100644
index 3e9bca56bed..00000000000
--- a/tests/wpt/meta-legacy-layout/css/css-animations/animation-canceled-by-parent-details-element-being-closed.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[animation-canceled-by-parent-details-element-being-closed.html]
- [A CSS Animation running on an element within a <details> element is canceled after the <details> element is closed.]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-animations/display-none-to-display-block-dont-cancel.tentative.html.ini b/tests/wpt/meta-legacy-layout/css/css-animations/display-none-to-display-block-dont-cancel.tentative.html.ini
new file mode 100644
index 00000000000..59ed5518e54
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-animations/display-none-to-display-block-dont-cancel.tentative.html.ini
@@ -0,0 +1,3 @@
+[display-none-to-display-block-dont-cancel.tentative.html]
+ [display:none animating to display:block should be block for the whole animation.]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-animations/display-none-to-display-block.html.ini b/tests/wpt/meta-legacy-layout/css/css-animations/display-none-to-display-block.html.ini
new file mode 100644
index 00000000000..fc311a8e03e
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-animations/display-none-to-display-block.html.ini
@@ -0,0 +1,2 @@
+[display-none-to-display-block.html]
+ expected: TIMEOUT
diff --git a/tests/wpt/meta-legacy-layout/css/css-backgrounds/background-clip/clip-text-animated-text.html.ini b/tests/wpt/meta-legacy-layout/css/css-backgrounds/background-clip/clip-text-animated-text.html.ini
new file mode 100644
index 00000000000..26aaf911522
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-backgrounds/background-clip/clip-text-animated-text.html.ini
@@ -0,0 +1,2 @@
+[clip-text-animated-text.html]
+ expected: TIMEOUT
diff --git a/tests/wpt/meta-legacy-layout/css/css-backgrounds/background-gradient-interpolation-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-backgrounds/background-gradient-interpolation-003.html.ini
new file mode 100644
index 00000000000..a6b7dd89d96
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-backgrounds/background-gradient-interpolation-003.html.ini
@@ -0,0 +1,2 @@
+[background-gradient-interpolation-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-backgrounds/background-origin/origin-border-box_with_position.html.ini b/tests/wpt/meta-legacy-layout/css/css-backgrounds/background-origin/origin-border-box_with_position.html.ini
new file mode 100644
index 00000000000..69809075f65
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-backgrounds/background-origin/origin-border-box_with_position.html.ini
@@ -0,0 +1,2 @@
+[origin-border-box_with_position.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-backgrounds/border-image-017.xht.ini b/tests/wpt/meta-legacy-layout/css/css-backgrounds/border-image-017.xht.ini
new file mode 100644
index 00000000000..091af4e43ac
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-backgrounds/border-image-017.xht.ini
@@ -0,0 +1,2 @@
+[border-image-017.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-backgrounds/border-image-018.xht.ini b/tests/wpt/meta-legacy-layout/css/css-backgrounds/border-image-018.xht.ini
new file mode 100644
index 00000000000..1533dcab1d9
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-backgrounds/border-image-018.xht.ini
@@ -0,0 +1,2 @@
+[border-image-018.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-backgrounds/border-image-019.xht.ini b/tests/wpt/meta-legacy-layout/css/css-backgrounds/border-image-019.xht.ini
new file mode 100644
index 00000000000..e59752d6970
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-backgrounds/border-image-019.xht.ini
@@ -0,0 +1,2 @@
+[border-image-019.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-backgrounds/border-image-020.xht.ini b/tests/wpt/meta-legacy-layout/css/css-backgrounds/border-image-020.xht.ini
new file mode 100644
index 00000000000..ef25e605a6c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-backgrounds/border-image-020.xht.ini
@@ -0,0 +1,2 @@
+[border-image-020.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-backgrounds/border-image-slice-001.xht.ini b/tests/wpt/meta-legacy-layout/css/css-backgrounds/border-image-slice-001.xht.ini
new file mode 100644
index 00000000000..781997400f1
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-backgrounds/border-image-slice-001.xht.ini
@@ -0,0 +1,2 @@
+[border-image-slice-001.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-backgrounds/border-image-slice-002.xht.ini b/tests/wpt/meta-legacy-layout/css/css-backgrounds/border-image-slice-002.xht.ini
new file mode 100644
index 00000000000..e1d1dda7b85
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-backgrounds/border-image-slice-002.xht.ini
@@ -0,0 +1,2 @@
+[border-image-slice-002.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-backgrounds/border-image-slice-fill-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-backgrounds/border-image-slice-fill-001.html.ini
new file mode 100644
index 00000000000..6fc15684d17
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-backgrounds/border-image-slice-fill-001.html.ini
@@ -0,0 +1,2 @@
+[border-image-slice-fill-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-backgrounds/border-image-slice-fill-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-backgrounds/border-image-slice-fill-002.html.ini
new file mode 100644
index 00000000000..3641d4be80e
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-backgrounds/border-image-slice-fill-002.html.ini
@@ -0,0 +1,2 @@
+[border-image-slice-fill-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-backgrounds/box-shadow-029.html.ini b/tests/wpt/meta-legacy-layout/css/css-backgrounds/box-shadow-029.html.ini
new file mode 100644
index 00000000000..87db5369217
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-backgrounds/box-shadow-029.html.ini
@@ -0,0 +1,2 @@
+[box-shadow-029.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-backgrounds/css3-background-origin-border-box.html.ini b/tests/wpt/meta-legacy-layout/css/css-backgrounds/css3-background-origin-border-box.html.ini
new file mode 100644
index 00000000000..e64df69484c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-backgrounds/css3-background-origin-border-box.html.ini
@@ -0,0 +1,2 @@
+[css3-background-origin-border-box.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-backgrounds/css3-box-shadow.html.ini b/tests/wpt/meta-legacy-layout/css/css-backgrounds/css3-box-shadow.html.ini
new file mode 100644
index 00000000000..af8d19779df
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-backgrounds/css3-box-shadow.html.ini
@@ -0,0 +1,2 @@
+[css3-box-shadow.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-backgrounds/inset-box-shadow-stacking-context-scroll.html.ini b/tests/wpt/meta-legacy-layout/css/css-backgrounds/inset-box-shadow-stacking-context-scroll.html.ini
new file mode 100644
index 00000000000..bf5c2dbfe3e
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-backgrounds/inset-box-shadow-stacking-context-scroll.html.ini
@@ -0,0 +1,2 @@
+[inset-box-shadow-stacking-context-scroll.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-backgrounds/parsing/background-image-computed.sub.html.ini b/tests/wpt/meta-legacy-layout/css/css-backgrounds/parsing/background-image-computed.sub.html.ini
new file mode 100644
index 00000000000..696a410e663
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-backgrounds/parsing/background-image-computed.sub.html.ini
@@ -0,0 +1,3 @@
+[background-image-computed.sub.html]
+ [Property background-image value 'conic-gradient(red 0deg, gold 1turn)']
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-cascade/scope-featureless.html.ini b/tests/wpt/meta-legacy-layout/css/css-cascade/scope-featureless.html.ini
deleted file mode 100644
index 7ad66440741..00000000000
--- a/tests/wpt/meta-legacy-layout/css/css-cascade/scope-featureless.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[scope-featureless.html]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-cascade/scope-part.html.ini b/tests/wpt/meta-legacy-layout/css/css-cascade/scope-part.html.ini
new file mode 100644
index 00000000000..f9df626caf8
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-cascade/scope-part.html.ini
@@ -0,0 +1,2 @@
+[scope-part.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-color/animation/opacity-animation-ending-correctly-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-color/animation/opacity-animation-ending-correctly-002.html.ini
new file mode 100644
index 00000000000..07545b0d444
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-color/animation/opacity-animation-ending-correctly-002.html.ini
@@ -0,0 +1,2 @@
+[opacity-animation-ending-correctly-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-color/composited-filters-under-opacity.html.ini b/tests/wpt/meta-legacy-layout/css/css-color/composited-filters-under-opacity.html.ini
new file mode 100644
index 00000000000..448888c84b3
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-color/composited-filters-under-opacity.html.ini
@@ -0,0 +1,2 @@
+[composited-filters-under-opacity.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-color/filters-under-will-change-opacity.html.ini b/tests/wpt/meta-legacy-layout/css/css-color/filters-under-will-change-opacity.html.ini
new file mode 100644
index 00000000000..0cef7437bdb
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-color/filters-under-will-change-opacity.html.ini
@@ -0,0 +1,2 @@
+[filters-under-will-change-opacity.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-color/parsing/color-computed-relative-color.html.ini b/tests/wpt/meta-legacy-layout/css/css-color/parsing/color-computed-relative-color.html.ini
index 03508b45213..0b4190c2b1f 100644
--- a/tests/wpt/meta-legacy-layout/css/css-color/parsing/color-computed-relative-color.html.ini
+++ b/tests/wpt/meta-legacy-layout/css/css-color/parsing/color-computed-relative-color.html.ini
@@ -3640,3 +3640,51 @@
[Property color value 'color(from color(from color(xyz-d65 7 -20.5 100) xyz-d65 x y z / calc(alpha - 1.5)) xyz-d65 x y z / calc(alpha + 0.5))']
expected: FAIL
+
+ [Property background-color value 'rgb(from currentColor r g b)']
+ expected: FAIL
+
+ [Property background-color value 'hsl(from currentColor h s l)']
+ expected: FAIL
+
+ [Property background-color value 'hwb(from currentColor h w b)']
+ expected: FAIL
+
+ [Property background-color value 'lab(from currentColor l a b)']
+ expected: FAIL
+
+ [Property background-color value 'oklab(from currentColor l a b)']
+ expected: FAIL
+
+ [Property background-color value 'lch(from currentColor l c h)']
+ expected: FAIL
+
+ [Property background-color value 'oklch(from currentColor l c h)']
+ expected: FAIL
+
+ [Property background-color value 'color(from currentColor srgb r g b)']
+ expected: FAIL
+
+ [Property background-color value 'color(from currentColor srgb-linear r g b)']
+ expected: FAIL
+
+ [Property background-color value 'color(from currentColor a98-rgb r g b)']
+ expected: FAIL
+
+ [Property background-color value 'color(from currentColor rec2020 r g b)']
+ expected: FAIL
+
+ [Property background-color value 'color(from currentColor prophoto-rgb r g b)']
+ expected: FAIL
+
+ [Property background-color value 'color(from currentColor display-p3 r g b)']
+ expected: FAIL
+
+ [Property background-color value 'color(from currentColor xyz x y z)']
+ expected: FAIL
+
+ [Property background-color value 'color(from currentColor xyz-d50 x y z)']
+ expected: FAIL
+
+ [Property background-color value 'color(from currentColor xyz-d65 x y z)']
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-color/parsing/color-valid-relative-color.html.ini b/tests/wpt/meta-legacy-layout/css/css-color/parsing/color-valid-relative-color.html.ini
index 0c607b8dc33..3d655cd0048 100644
--- a/tests/wpt/meta-legacy-layout/css/css-color/parsing/color-valid-relative-color.html.ini
+++ b/tests/wpt/meta-legacy-layout/css/css-color/parsing/color-valid-relative-color.html.ini
@@ -3676,3 +3676,51 @@
[e.style['color'\] = "rgb(from color(srgb 0.4 0.2 0.6) r g b)" should set the property value]
expected: FAIL
+
+ [e.style['color'\] = "oklab(from oklab(0.25 0.2 0.5) l a b / 0.35)" should set the property value]
+ expected: FAIL
+
+ [e.style['color'\] = "lch(from lch(0.7 45 30) l c h / 0.25)" should set the property value]
+ expected: FAIL
+
+ [e.style['color'\] = "lch(from lch(0.7 45 30) l c c / alpha)" should set the property value]
+ expected: FAIL
+
+ [e.style['color'\] = "lch(from lch(0.7 45 30 / 40%) l c c / alpha)" should set the property value]
+ expected: FAIL
+
+ [e.style['color'\] = "oklch(from oklch(0.7 0.45 30) l c h / 0.25)" should set the property value]
+ expected: FAIL
+
+ [e.style['color'\] = "oklch(from oklch(0.7 0.45 30 / 40%) l c h / 0.25)" should set the property value]
+ expected: FAIL
+
+ [e.style['color'\] = "oklch(from oklch(0.7 0.45 30) l c c / alpha)" should set the property value]
+ expected: FAIL
+
+ [e.style['color'\] = "oklch(from oklch(0.7 0.45 30 / 40%) l c c / alpha)" should set the property value]
+ expected: FAIL
+
+ [e.style['color'\] = "color(from color-mix(in srgb, color(srgb 0.7 0.5 0.3), color(srgb 0.7 0.5 0.3)) srgb r g b / alpha)" should set the property value]
+ expected: FAIL
+
+ [e.style['color'\] = "color(from color-mix(in srgb-linear, color(srgb-linear 0.7 0.5 0.3), color(srgb-linear 0.7 0.5 0.3)) srgb-linear r g b / alpha)" should set the property value]
+ expected: FAIL
+
+ [e.style['color'\] = "color(from color-mix(in a98-rgb, color(a98-rgb 0.7 0.5 0.3), color(a98-rgb 0.7 0.5 0.3)) a98-rgb r g b / alpha)" should set the property value]
+ expected: FAIL
+
+ [e.style['color'\] = "color(from color-mix(in rec2020, color(rec2020 0.7 0.5 0.3), color(rec2020 0.7 0.5 0.3)) rec2020 r g b / alpha)" should set the property value]
+ expected: FAIL
+
+ [e.style['color'\] = "color(from color-mix(in prophoto-rgb, color(prophoto-rgb 0.7 0.5 0.3), color(prophoto-rgb 0.7 0.5 0.3)) prophoto-rgb r g b / alpha)" should set the property value]
+ expected: FAIL
+
+ [e.style['color'\] = "color(from color-mix(in display-p3, color(display-p3 0.7 0.5 0.3), color(display-p3 0.7 0.5 0.3)) display-p3 r g b / alpha)" should set the property value]
+ expected: FAIL
+
+ [e.style['color'\] = "color(from color-mix(in xyz-d50, color(xyz-d50 0.7 0.5 0.3), color(xyz-d50 0.7 0.5 0.3)) xyz-d50 x y z / alpha)" should set the property value]
+ expected: FAIL
+
+ [e.style['color'\] = "color(from color-mix(in xyz-d65, color(xyz-d65 0.7 0.5 0.3), color(xyz-d65 0.7 0.5 0.3)) xyz-d65 x y z / alpha)" should set the property value]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-color/t32-opacity-offscreen-b.xht.ini b/tests/wpt/meta-legacy-layout/css/css-color/t32-opacity-offscreen-b.xht.ini
new file mode 100644
index 00000000000..91dfd27c243
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-color/t32-opacity-offscreen-b.xht.ini
@@ -0,0 +1,2 @@
+[t32-opacity-offscreen-b.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-color/t32-opacity-offscreen-with-alpha-c.xht.ini b/tests/wpt/meta-legacy-layout/css/css-color/t32-opacity-offscreen-with-alpha-c.xht.ini
new file mode 100644
index 00000000000..3fec1698024
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-color/t32-opacity-offscreen-with-alpha-c.xht.ini
@@ -0,0 +1,2 @@
+[t32-opacity-offscreen-with-alpha-c.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-color/t32-opacity-zorder-c.xht.ini b/tests/wpt/meta-legacy-layout/css/css-color/t32-opacity-zorder-c.xht.ini
new file mode 100644
index 00000000000..9d759c70124
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-color/t32-opacity-zorder-c.xht.ini
@@ -0,0 +1,2 @@
+[t32-opacity-zorder-c.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-conditional/container-queries/no-layout-containment-abspos-dynamic.html.ini b/tests/wpt/meta-legacy-layout/css/css-conditional/container-queries/no-layout-containment-abspos-dynamic.html.ini
new file mode 100644
index 00000000000..4e8fd73c0cc
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-conditional/container-queries/no-layout-containment-abspos-dynamic.html.ini
@@ -0,0 +1,2 @@
+[no-layout-containment-abspos-dynamic.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-conditional/container-queries/no-layout-containment-fixedpos-dynamic.html.ini b/tests/wpt/meta-legacy-layout/css/css-conditional/container-queries/no-layout-containment-fixedpos-dynamic.html.ini
new file mode 100644
index 00000000000..5750ff26123
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-conditional/container-queries/no-layout-containment-fixedpos-dynamic.html.ini
@@ -0,0 +1,2 @@
+[no-layout-containment-fixedpos-dynamic.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-conditional/container-queries/no-layout-containment-fixedpos.html.ini b/tests/wpt/meta-legacy-layout/css/css-conditional/container-queries/no-layout-containment-fixedpos.html.ini
new file mode 100644
index 00000000000..983e3c3c0a6
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-conditional/container-queries/no-layout-containment-fixedpos.html.ini
@@ -0,0 +1,2 @@
+[no-layout-containment-fixedpos.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-conditional/container-queries/scrollbar-container-units-block.html.ini b/tests/wpt/meta-legacy-layout/css/css-conditional/container-queries/scrollbar-container-units-block.html.ini
new file mode 100644
index 00000000000..05e9fd8cd27
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-conditional/container-queries/scrollbar-container-units-block.html.ini
@@ -0,0 +1,2 @@
+[scrollbar-container-units-block.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-display/parsing/tentative/display-computed.html.ini b/tests/wpt/meta-legacy-layout/css/css-display/parsing/tentative/display-computed.html.ini
new file mode 100644
index 00000000000..95b56ed68f4
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-display/parsing/tentative/display-computed.html.ini
@@ -0,0 +1,18 @@
+[display-computed.html]
+ [Property display value 'masonry']
+ expected: FAIL
+
+ [Property display value 'inline-masonry']
+ expected: FAIL
+
+ [position absolute affects computed display]
+ expected: FAIL
+
+ [position fixed affects computed display]
+ expected: FAIL
+
+ [float left affects computed display]
+ expected: FAIL
+
+ [float right affects computed display]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-display/parsing/tentative/display-valid.html.ini b/tests/wpt/meta-legacy-layout/css/css-display/parsing/tentative/display-valid.html.ini
new file mode 100644
index 00000000000..1cf9ba8827e
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-display/parsing/tentative/display-valid.html.ini
@@ -0,0 +1,6 @@
+[display-valid.html]
+ [e.style['display'\] = "masonry" should set the property value]
+ expected: FAIL
+
+ [e.style['display'\] = "inline-masonry" should set the property value]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-flexbox/abspos/dynamic-align-self-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-flexbox/abspos/dynamic-align-self-001.html.ini
new file mode 100644
index 00000000000..14f97016c84
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-flexbox/abspos/dynamic-align-self-001.html.ini
@@ -0,0 +1,2 @@
+[dynamic-align-self-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-flexbox/auto-margins-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-flexbox/auto-margins-002.html.ini
new file mode 100644
index 00000000000..a4ec3062b8d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-flexbox/auto-margins-002.html.ini
@@ -0,0 +1,2 @@
+[auto-margins-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-aspect-ratio-img-column-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-aspect-ratio-img-column-001.html.ini
new file mode 100644
index 00000000000..9a99c2d9f53
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-aspect-ratio-img-column-001.html.ini
@@ -0,0 +1,2 @@
+[flex-aspect-ratio-img-column-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-aspect-ratio-img-column-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-aspect-ratio-img-column-002.html.ini
new file mode 100644
index 00000000000..05c4e939a7e
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-aspect-ratio-img-column-002.html.ini
@@ -0,0 +1,2 @@
+[flex-aspect-ratio-img-column-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-aspect-ratio-img-column-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-aspect-ratio-img-column-003.html.ini
new file mode 100644
index 00000000000..80178352808
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-aspect-ratio-img-column-003.html.ini
@@ -0,0 +1,2 @@
+[flex-aspect-ratio-img-column-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-aspect-ratio-img-column-006.html.ini b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-aspect-ratio-img-column-006.html.ini
new file mode 100644
index 00000000000..bdb33aa2cb1
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-aspect-ratio-img-column-006.html.ini
@@ -0,0 +1,2 @@
+[flex-aspect-ratio-img-column-006.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-aspect-ratio-img-column-007.html.ini b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-aspect-ratio-img-column-007.html.ini
new file mode 100644
index 00000000000..f86dca39bce
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-aspect-ratio-img-column-007.html.ini
@@ -0,0 +1,2 @@
+[flex-aspect-ratio-img-column-007.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-aspect-ratio-img-column-009.html.ini b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-aspect-ratio-img-column-009.html.ini
new file mode 100644
index 00000000000..f4822d75dbf
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-aspect-ratio-img-column-009.html.ini
@@ -0,0 +1,2 @@
+[flex-aspect-ratio-img-column-009.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-aspect-ratio-img-row-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-aspect-ratio-img-row-001.html.ini
new file mode 100644
index 00000000000..7f333e7a815
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-aspect-ratio-img-row-001.html.ini
@@ -0,0 +1,2 @@
+[flex-aspect-ratio-img-row-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-aspect-ratio-img-row-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-aspect-ratio-img-row-002.html.ini
new file mode 100644
index 00000000000..7921013f970
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-aspect-ratio-img-row-002.html.ini
@@ -0,0 +1,2 @@
+[flex-aspect-ratio-img-row-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-aspect-ratio-img-row-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-aspect-ratio-img-row-003.html.ini
new file mode 100644
index 00000000000..a332d9850a1
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-aspect-ratio-img-row-003.html.ini
@@ -0,0 +1,2 @@
+[flex-aspect-ratio-img-row-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-aspect-ratio-img-row-014.html.ini b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-aspect-ratio-img-row-014.html.ini
new file mode 100644
index 00000000000..3aa7af3fdf0
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-aspect-ratio-img-row-014.html.ini
@@ -0,0 +1,2 @@
+[flex-aspect-ratio-img-row-014.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-aspect-ratio-img-row-017.html.ini b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-aspect-ratio-img-row-017.html.ini
new file mode 100644
index 00000000000..9f79dce3b30
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-aspect-ratio-img-row-017.html.ini
@@ -0,0 +1,2 @@
+[flex-aspect-ratio-img-row-017.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-basis-item-margins-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-basis-item-margins-001.html.ini
new file mode 100644
index 00000000000..7a02e9f3f91
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-basis-item-margins-001.html.ini
@@ -0,0 +1,2 @@
+[flex-basis-item-margins-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-box-wrap.html.ini b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-box-wrap.html.ini
new file mode 100644
index 00000000000..53be7c3c03c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-box-wrap.html.ini
@@ -0,0 +1,2 @@
+[flex-box-wrap.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-item-contains-size-layout-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-item-contains-size-layout-001.html.ini
new file mode 100644
index 00000000000..29a7e6a84f0
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-item-contains-size-layout-001.html.ini
@@ -0,0 +1,2 @@
+[flex-item-contains-size-layout-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-item-max-width-min-content.html.ini b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-item-max-width-min-content.html.ini
new file mode 100644
index 00000000000..8fb5b9803c0
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-item-max-width-min-content.html.ini
@@ -0,0 +1,2 @@
+[flex-item-max-width-min-content.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-item-min-width-min-content.html.ini b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-item-min-width-min-content.html.ini
new file mode 100644
index 00000000000..e4e8dd4031b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-item-min-width-min-content.html.ini
@@ -0,0 +1,2 @@
+[flex-item-min-width-min-content.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-height-flex-items-001.xht.ini b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-height-flex-items-001.xht.ini
new file mode 100644
index 00000000000..a62eef500f4
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-height-flex-items-001.xht.ini
@@ -0,0 +1,2 @@
+[flex-minimum-height-flex-items-001.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-height-flex-items-002.xht.ini b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-height-flex-items-002.xht.ini
new file mode 100644
index 00000000000..ce42094fb6e
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-height-flex-items-002.xht.ini
@@ -0,0 +1,2 @@
+[flex-minimum-height-flex-items-002.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-height-flex-items-004.xht.ini b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-height-flex-items-004.xht.ini
new file mode 100644
index 00000000000..ac4180f61a7
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-height-flex-items-004.xht.ini
@@ -0,0 +1,2 @@
+[flex-minimum-height-flex-items-004.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-height-flex-items-005.xht.ini b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-height-flex-items-005.xht.ini
new file mode 100644
index 00000000000..52f582f657f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-height-flex-items-005.xht.ini
@@ -0,0 +1,2 @@
+[flex-minimum-height-flex-items-005.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-height-flex-items-006.xht.ini b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-height-flex-items-006.xht.ini
new file mode 100644
index 00000000000..c177bfb4870
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-height-flex-items-006.xht.ini
@@ -0,0 +1,2 @@
+[flex-minimum-height-flex-items-006.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-height-flex-items-007.xht.ini b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-height-flex-items-007.xht.ini
new file mode 100644
index 00000000000..ca977d8203d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-height-flex-items-007.xht.ini
@@ -0,0 +1,2 @@
+[flex-minimum-height-flex-items-007.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-height-flex-items-008.xht.ini b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-height-flex-items-008.xht.ini
new file mode 100644
index 00000000000..06b866be1a0
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-height-flex-items-008.xht.ini
@@ -0,0 +1,2 @@
+[flex-minimum-height-flex-items-008.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-height-flex-items-011.xht.ini b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-height-flex-items-011.xht.ini
new file mode 100644
index 00000000000..084c6d55e75
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-height-flex-items-011.xht.ini
@@ -0,0 +1,2 @@
+[flex-minimum-height-flex-items-011.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-height-flex-items-015.html.ini b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-height-flex-items-015.html.ini
new file mode 100644
index 00000000000..40d03e94e60
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-height-flex-items-015.html.ini
@@ -0,0 +1,2 @@
+[flex-minimum-height-flex-items-015.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-height-flex-items-019.html.ini b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-height-flex-items-019.html.ini
new file mode 100644
index 00000000000..959661fa8c0
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-height-flex-items-019.html.ini
@@ -0,0 +1,2 @@
+[flex-minimum-height-flex-items-019.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-width-flex-items-004.xht.ini b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-width-flex-items-004.xht.ini
new file mode 100644
index 00000000000..b10e3a296f7
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-width-flex-items-004.xht.ini
@@ -0,0 +1,2 @@
+[flex-minimum-width-flex-items-004.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-width-flex-items-005.xht.ini b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-width-flex-items-005.xht.ini
new file mode 100644
index 00000000000..bc50397b145
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-width-flex-items-005.xht.ini
@@ -0,0 +1,2 @@
+[flex-minimum-width-flex-items-005.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-width-flex-items-006.xht.ini b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-width-flex-items-006.xht.ini
new file mode 100644
index 00000000000..263a73fd429
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-width-flex-items-006.xht.ini
@@ -0,0 +1,2 @@
+[flex-minimum-width-flex-items-006.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-width-flex-items-007.xht.ini b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-width-flex-items-007.xht.ini
new file mode 100644
index 00000000000..2c1490e4703
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-width-flex-items-007.xht.ini
@@ -0,0 +1,2 @@
+[flex-minimum-width-flex-items-007.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-width-flex-items-008.xht.ini b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-width-flex-items-008.xht.ini
new file mode 100644
index 00000000000..7bee9e4181d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-width-flex-items-008.xht.ini
@@ -0,0 +1,2 @@
+[flex-minimum-width-flex-items-008.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-width-flex-items-009.html.ini b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-width-flex-items-009.html.ini
new file mode 100644
index 00000000000..85788b17c68
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-width-flex-items-009.html.ini
@@ -0,0 +1,2 @@
+[flex-minimum-width-flex-items-009.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-width-flex-items-010.html.ini b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-width-flex-items-010.html.ini
new file mode 100644
index 00000000000..f00699c82c1
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-flexbox/flex-minimum-width-flex-items-010.html.ini
@@ -0,0 +1,2 @@
+[flex-minimum-width-flex-items-010.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-flexbox/flexbox-safe-overflow-position-006.html.ini b/tests/wpt/meta-legacy-layout/css/css-flexbox/flexbox-safe-overflow-position-006.html.ini
new file mode 100644
index 00000000000..9edcdef8700
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-flexbox/flexbox-safe-overflow-position-006.html.ini
@@ -0,0 +1,2 @@
+[flexbox-safe-overflow-position-006.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-flexbox/flexbox-writing-mode-slr-row-mix.html.ini b/tests/wpt/meta-legacy-layout/css/css-flexbox/flexbox-writing-mode-slr-row-mix.html.ini
new file mode 100644
index 00000000000..f7048580a8d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-flexbox/flexbox-writing-mode-slr-row-mix.html.ini
@@ -0,0 +1,2 @@
+[flexbox-writing-mode-slr-row-mix.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-flexbox/flexbox-writing-mode-slr-rtl.html.ini b/tests/wpt/meta-legacy-layout/css/css-flexbox/flexbox-writing-mode-slr-rtl.html.ini
new file mode 100644
index 00000000000..97036a0fb0b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-flexbox/flexbox-writing-mode-slr-rtl.html.ini
@@ -0,0 +1,2 @@
+[flexbox-writing-mode-slr-rtl.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-flexbox/flexbox-writing-mode-slr.html.ini b/tests/wpt/meta-legacy-layout/css/css-flexbox/flexbox-writing-mode-slr.html.ini
new file mode 100644
index 00000000000..4734b7d9ef6
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-flexbox/flexbox-writing-mode-slr.html.ini
@@ -0,0 +1,2 @@
+[flexbox-writing-mode-slr.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-flexbox/flexbox-writing-mode-srl-row-mix.html.ini b/tests/wpt/meta-legacy-layout/css/css-flexbox/flexbox-writing-mode-srl-row-mix.html.ini
new file mode 100644
index 00000000000..f74d65a488d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-flexbox/flexbox-writing-mode-srl-row-mix.html.ini
@@ -0,0 +1,2 @@
+[flexbox-writing-mode-srl-row-mix.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-flexbox/flexbox-writing-mode-srl-rtl.html.ini b/tests/wpt/meta-legacy-layout/css/css-flexbox/flexbox-writing-mode-srl-rtl.html.ini
new file mode 100644
index 00000000000..3f5d0cb55bd
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-flexbox/flexbox-writing-mode-srl-rtl.html.ini
@@ -0,0 +1,2 @@
+[flexbox-writing-mode-srl-rtl.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-flexbox/flexbox-writing-mode-srl.html.ini b/tests/wpt/meta-legacy-layout/css/css-flexbox/flexbox-writing-mode-srl.html.ini
new file mode 100644
index 00000000000..678afdca266
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-flexbox/flexbox-writing-mode-srl.html.ini
@@ -0,0 +1,2 @@
+[flexbox-writing-mode-srl.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-flexbox/grandchild-span-height.html.ini b/tests/wpt/meta-legacy-layout/css/css-flexbox/grandchild-span-height.html.ini
new file mode 100644
index 00000000000..8b96c02c2c7
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-flexbox/grandchild-span-height.html.ini
@@ -0,0 +1,2 @@
+[grandchild-span-height.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-flexbox/grid-flex-item-006.html.ini b/tests/wpt/meta-legacy-layout/css/css-flexbox/grid-flex-item-006.html.ini
new file mode 100644
index 00000000000..421335a944e
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-flexbox/grid-flex-item-006.html.ini
@@ -0,0 +1,2 @@
+[grid-flex-item-006.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-flexbox/grid-flex-item-007.html.ini b/tests/wpt/meta-legacy-layout/css/css-flexbox/grid-flex-item-007.html.ini
new file mode 100644
index 00000000000..fc156ebc2b9
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-flexbox/grid-flex-item-007.html.ini
@@ -0,0 +1,2 @@
+[grid-flex-item-007.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-flexbox/image-items-flake-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-flexbox/image-items-flake-001.html.ini
new file mode 100644
index 00000000000..d39a1e859e4
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-flexbox/image-items-flake-001.html.ini
@@ -0,0 +1,2 @@
+[image-items-flake-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-flexbox/intrinsic-size/row-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-flexbox/intrinsic-size/row-001.html.ini
new file mode 100644
index 00000000000..d50aa31d5b5
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-flexbox/intrinsic-size/row-001.html.ini
@@ -0,0 +1,2 @@
+[row-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-flexbox/stretch-obeys-min-max-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-flexbox/stretch-obeys-min-max-001.html.ini
new file mode 100644
index 00000000000..4c9cbcc8ff4
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-flexbox/stretch-obeys-min-max-001.html.ini
@@ -0,0 +1,2 @@
+[stretch-obeys-min-max-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-flexbox/table-as-item-stretch-cross-size-4.html.ini b/tests/wpt/meta-legacy-layout/css/css-flexbox/table-as-item-stretch-cross-size-4.html.ini
new file mode 100644
index 00000000000..31d7e2ddc74
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-flexbox/table-as-item-stretch-cross-size-4.html.ini
@@ -0,0 +1,2 @@
+[table-as-item-stretch-cross-size-4.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-flexbox/table-as-item-wide-content.html.ini b/tests/wpt/meta-legacy-layout/css/css-flexbox/table-as-item-wide-content.html.ini
new file mode 100644
index 00000000000..f6def90a63b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-flexbox/table-as-item-wide-content.html.ini
@@ -0,0 +1,2 @@
+[table-as-item-wide-content.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-fonts/font-size-adjust-006.xht.ini b/tests/wpt/meta-legacy-layout/css/css-fonts/font-size-adjust-006.xht.ini
new file mode 100644
index 00000000000..610def68822
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-fonts/font-size-adjust-006.xht.ini
@@ -0,0 +1,2 @@
+[font-size-adjust-006.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-fonts/font-size-adjust-007.xht.ini b/tests/wpt/meta-legacy-layout/css/css-fonts/font-size-adjust-007.xht.ini
new file mode 100644
index 00000000000..b77d39d8ddb
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-fonts/font-size-adjust-007.xht.ini
@@ -0,0 +1,2 @@
+[font-size-adjust-007.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-fonts/font-size-adjust-008.xht.ini b/tests/wpt/meta-legacy-layout/css/css-fonts/font-size-adjust-008.xht.ini
new file mode 100644
index 00000000000..5d4ea97a3d9
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-fonts/font-size-adjust-008.xht.ini
@@ -0,0 +1,2 @@
+[font-size-adjust-008.xht]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-fonts/generic-family-keywords-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-fonts/generic-family-keywords-001.html.ini
index f0ceefab252..d7dc377ea4a 100644
--- a/tests/wpt/meta-legacy-layout/css/css-fonts/generic-family-keywords-001.html.ini
+++ b/tests/wpt/meta-legacy-layout/css/css-fonts/generic-family-keywords-001.html.ini
@@ -1,13 +1,7 @@
[generic-family-keywords-001.html]
- [@font-face matching for quoted and unquoted serif]
- expected: FAIL
-
[@font-face matching for quoted and unquoted sans-serif]
expected: FAIL
- [@font-face matching for quoted and unquoted monospace]
- expected: FAIL
-
[@font-face matching for quoted and unquoted emoji]
expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-fonts/parsing/font-face-size-adjust.html.ini b/tests/wpt/meta-legacy-layout/css/css-fonts/parsing/font-face-size-adjust.html.ini
new file mode 100644
index 00000000000..584a05788a0
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-fonts/parsing/font-face-size-adjust.html.ini
@@ -0,0 +1,18 @@
+[font-face-size-adjust.html]
+ [Check that size-adjust: 100% is valid]
+ expected: FAIL
+
+ [Check that size-adjust: 0% is valid]
+ expected: FAIL
+
+ [Check that size-adjust: 110% is valid]
+ expected: FAIL
+
+ [Check that size-adjust: 100000000000% is valid]
+ expected: FAIL
+
+ [Check that size-adjust: -100% is invalid]
+ expected: FAIL
+
+ [Check that size-adjust: -1% is invalid]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-masking/clip/clip-absolute-positioned-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-masking/clip/clip-absolute-positioned-001.html.ini
new file mode 100644
index 00000000000..ccd225b105f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-masking/clip/clip-absolute-positioned-001.html.ini
@@ -0,0 +1,2 @@
+[clip-absolute-positioned-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-masking/clip/clip-absolute-positioned-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-masking/clip/clip-absolute-positioned-002.html.ini
new file mode 100644
index 00000000000..0451a3008b5
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-masking/clip/clip-absolute-positioned-002.html.ini
@@ -0,0 +1,2 @@
+[clip-absolute-positioned-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-masking/clip/clip-negative-values-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-masking/clip/clip-negative-values-003.html.ini
new file mode 100644
index 00000000000..6a19fd696dd
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-masking/clip/clip-negative-values-003.html.ini
@@ -0,0 +1,2 @@
+[clip-negative-values-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-masking/clip/clip-negative-values-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-masking/clip/clip-negative-values-004.html.ini
new file mode 100644
index 00000000000..9d244175f22
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-masking/clip/clip-negative-values-004.html.ini
@@ -0,0 +1,2 @@
+[clip-negative-values-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-masking/clip/clip-not-absolute-positioned-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-masking/clip/clip-not-absolute-positioned-001.html.ini
new file mode 100644
index 00000000000..57f7fa26349
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-masking/clip/clip-not-absolute-positioned-001.html.ini
@@ -0,0 +1,2 @@
+[clip-not-absolute-positioned-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-masking/clip/clip-not-absolute-positioned-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-masking/clip/clip-not-absolute-positioned-002.html.ini
new file mode 100644
index 00000000000..118d113a23f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-masking/clip/clip-not-absolute-positioned-002.html.ini
@@ -0,0 +1,2 @@
+[clip-not-absolute-positioned-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-masking/clip/clip-not-absolute-positioned-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-masking/clip/clip-not-absolute-positioned-004.html.ini
new file mode 100644
index 00000000000..99b0e02d4a4
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-masking/clip/clip-not-absolute-positioned-004.html.ini
@@ -0,0 +1,2 @@
+[clip-not-absolute-positioned-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-masking/clip/clip-rect-auto-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-masking/clip/clip-rect-auto-001.html.ini
new file mode 100644
index 00000000000..72689548371
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-masking/clip/clip-rect-auto-001.html.ini
@@ -0,0 +1,2 @@
+[clip-rect-auto-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-masking/clip/clip-rect-auto-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-masking/clip/clip-rect-auto-002.html.ini
new file mode 100644
index 00000000000..efd0b0a44cc
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-masking/clip/clip-rect-auto-002.html.ini
@@ -0,0 +1,2 @@
+[clip-rect-auto-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-masking/clip/clip-rect-auto-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-masking/clip/clip-rect-auto-003.html.ini
new file mode 100644
index 00000000000..9c6c3550d59
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-masking/clip/clip-rect-auto-003.html.ini
@@ -0,0 +1,2 @@
+[clip-rect-auto-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-masking/clip/clip-rect-auto-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-masking/clip/clip-rect-auto-004.html.ini
new file mode 100644
index 00000000000..0e7d3bb54b7
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-masking/clip/clip-rect-auto-004.html.ini
@@ -0,0 +1,2 @@
+[clip-rect-auto-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-masking/clip/clip-rect-auto-005.html.ini b/tests/wpt/meta-legacy-layout/css/css-masking/clip/clip-rect-auto-005.html.ini
new file mode 100644
index 00000000000..51383ca800c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-masking/clip/clip-rect-auto-005.html.ini
@@ -0,0 +1,2 @@
+[clip-rect-auto-005.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-masking/clip/clip-rect-auto-006.html.ini b/tests/wpt/meta-legacy-layout/css/css-masking/clip/clip-rect-auto-006.html.ini
new file mode 100644
index 00000000000..077f8b4eb24
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-masking/clip/clip-rect-auto-006.html.ini
@@ -0,0 +1,2 @@
+[clip-rect-auto-006.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-masking/clip/clip-rect-comma-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-masking/clip/clip-rect-comma-001.html.ini
new file mode 100644
index 00000000000..b68c5587b4c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-masking/clip/clip-rect-comma-001.html.ini
@@ -0,0 +1,2 @@
+[clip-rect-comma-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-outline/outline-width-rounding.tentative.html.ini b/tests/wpt/meta-legacy-layout/css/css-outline/outline-width-rounding.tentative.html.ini
deleted file mode 100644
index eade878b956..00000000000
--- a/tests/wpt/meta-legacy-layout/css/css-outline/outline-width-rounding.tentative.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[outline-width-rounding.tentative.html]
- [Test that outline widths are rounded up when they are greater than 0px but less than 1px, and rounded down when they are greater than 1px.]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-overflow/line-clamp/line-clamp-auto-033.tentative.html.ini b/tests/wpt/meta-legacy-layout/css/css-overflow/line-clamp/line-clamp-auto-033.tentative.html.ini
new file mode 100644
index 00000000000..1821369372d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-overflow/line-clamp/line-clamp-auto-033.tentative.html.ini
@@ -0,0 +1,2 @@
+[line-clamp-auto-033.tentative.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-overflow/line-clamp/line-clamp-auto-034.tentative.html.ini b/tests/wpt/meta-legacy-layout/css/css-overflow/line-clamp/line-clamp-auto-034.tentative.html.ini
new file mode 100644
index 00000000000..29472609ea1
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-overflow/line-clamp/line-clamp-auto-034.tentative.html.ini
@@ -0,0 +1,2 @@
+[line-clamp-auto-034.tentative.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-overflow/overflow-clip-margin-010.html.ini b/tests/wpt/meta-legacy-layout/css/css-overflow/overflow-clip-margin-010.html.ini
deleted file mode 100644
index e0edb6b19f3..00000000000
--- a/tests/wpt/meta-legacy-layout/css/css-overflow/overflow-clip-margin-010.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[overflow-clip-margin-010.html]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-overflow/overflow-clip-margin-011.html.ini b/tests/wpt/meta-legacy-layout/css/css-overflow/overflow-clip-margin-011.html.ini
new file mode 100644
index 00000000000..c607ff4cf56
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-overflow/overflow-clip-margin-011.html.ini
@@ -0,0 +1,2 @@
+[overflow-clip-margin-011.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-overflow/overflow-hidden-resize-with-stacking-context-child.html.ini b/tests/wpt/meta-legacy-layout/css/css-overflow/overflow-hidden-resize-with-stacking-context-child.html.ini
new file mode 100644
index 00000000000..1bba9ccb0d5
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-overflow/overflow-hidden-resize-with-stacking-context-child.html.ini
@@ -0,0 +1,2 @@
+[overflow-hidden-resize-with-stacking-context-child.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-overflow/overflow-recalc-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-overflow/overflow-recalc-001.html.ini
new file mode 100644
index 00000000000..75b52c4b062
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-overflow/overflow-recalc-001.html.ini
@@ -0,0 +1,2 @@
+[overflow-recalc-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-overflow/scrollbar-gutter-fixedpos-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-overflow/scrollbar-gutter-fixedpos-001.html.ini
new file mode 100644
index 00000000000..5612fee91e6
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-overflow/scrollbar-gutter-fixedpos-001.html.ini
@@ -0,0 +1,2 @@
+[scrollbar-gutter-fixedpos-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-overflow/scrollbar-gutter-fixedpos-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-overflow/scrollbar-gutter-fixedpos-002.html.ini
new file mode 100644
index 00000000000..73801e313d7
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-overflow/scrollbar-gutter-fixedpos-002.html.ini
@@ -0,0 +1,2 @@
+[scrollbar-gutter-fixedpos-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-overflow/scrollbar-gutter-fixedpos-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-overflow/scrollbar-gutter-fixedpos-003.html.ini
new file mode 100644
index 00000000000..93552725ee8
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-overflow/scrollbar-gutter-fixedpos-003.html.ini
@@ -0,0 +1,2 @@
+[scrollbar-gutter-fixedpos-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-overflow/scrollbar-gutter-fixedpos-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-overflow/scrollbar-gutter-fixedpos-004.html.ini
new file mode 100644
index 00000000000..75ab360db1a
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-overflow/scrollbar-gutter-fixedpos-004.html.ini
@@ -0,0 +1,2 @@
+[scrollbar-gutter-fixedpos-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-position/fixed-z-index-blend.html.ini b/tests/wpt/meta-legacy-layout/css/css-position/fixed-z-index-blend.html.ini
new file mode 100644
index 00000000000..ad4f627622a
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-position/fixed-z-index-blend.html.ini
@@ -0,0 +1,2 @@
+[fixed-z-index-blend.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-position/hypothetical-dynamic-change-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-position/hypothetical-dynamic-change-002.html.ini
new file mode 100644
index 00000000000..5541b847967
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-position/hypothetical-dynamic-change-002.html.ini
@@ -0,0 +1,2 @@
+[hypothetical-dynamic-change-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-position/hypothetical-dynamic-change-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-position/hypothetical-dynamic-change-003.html.ini
new file mode 100644
index 00000000000..4a0fd015f02
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-position/hypothetical-dynamic-change-003.html.ini
@@ -0,0 +1,2 @@
+[hypothetical-dynamic-change-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-position/position-absolute-dynamic-auto-overflow.html.ini b/tests/wpt/meta-legacy-layout/css/css-position/position-absolute-dynamic-auto-overflow.html.ini
new file mode 100644
index 00000000000..436ec4eb5f3
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-position/position-absolute-dynamic-auto-overflow.html.ini
@@ -0,0 +1,2 @@
+[position-absolute-dynamic-auto-overflow.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-position/position-fixed-scroll-nested-fixed.html.ini b/tests/wpt/meta-legacy-layout/css/css-position/position-fixed-scroll-nested-fixed.html.ini
new file mode 100644
index 00000000000..2903ed8c405
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-position/position-fixed-scroll-nested-fixed.html.ini
@@ -0,0 +1,2 @@
+[position-fixed-scroll-nested-fixed.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-position/position-fixed-scroll-overlap.html.ini b/tests/wpt/meta-legacy-layout/css/css-position/position-fixed-scroll-overlap.html.ini
new file mode 100644
index 00000000000..72f4362857b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-position/position-fixed-scroll-overlap.html.ini
@@ -0,0 +1,2 @@
+[position-fixed-scroll-overlap.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-bottom-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-bottom-002.html.ini
new file mode 100644
index 00000000000..5364e331a89
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-bottom-002.html.ini
@@ -0,0 +1,2 @@
+[position-sticky-bottom-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-escape-scroller-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-escape-scroller-001.html.ini
new file mode 100644
index 00000000000..3018d79f1af
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-escape-scroller-001.html.ini
@@ -0,0 +1,2 @@
+[position-sticky-escape-scroller-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-escape-scroller-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-escape-scroller-003.html.ini
new file mode 100644
index 00000000000..990a7ae58c6
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-escape-scroller-003.html.ini
@@ -0,0 +1,2 @@
+[position-sticky-escape-scroller-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-escape-scroller-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-escape-scroller-004.html.ini
new file mode 100644
index 00000000000..7b98776c5e0
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-escape-scroller-004.html.ini
@@ -0,0 +1,2 @@
+[position-sticky-escape-scroller-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-fixed-ancestor-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-fixed-ancestor-002.html.ini
new file mode 100644
index 00000000000..0f46215f98a
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-fixed-ancestor-002.html.ini
@@ -0,0 +1,2 @@
+[position-sticky-fixed-ancestor-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-fixed-ancestor-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-fixed-ancestor-003.html.ini
new file mode 100644
index 00000000000..9bf2519ec42
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-fixed-ancestor-003.html.ini
@@ -0,0 +1,2 @@
+[position-sticky-fixed-ancestor-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-in-fixed-container.html.ini b/tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-in-fixed-container.html.ini
new file mode 100644
index 00000000000..2f88b15185a
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-in-fixed-container.html.ini
@@ -0,0 +1,2 @@
+[position-sticky-in-fixed-container.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-left-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-left-004.html.ini
new file mode 100644
index 00000000000..e3ef49298f4
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-left-004.html.ini
@@ -0,0 +1,2 @@
+[position-sticky-left-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-left-005.html.ini b/tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-left-005.html.ini
new file mode 100644
index 00000000000..91868adca01
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-left-005.html.ini
@@ -0,0 +1,2 @@
+[position-sticky-left-005.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-left-006.html.ini b/tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-left-006.html.ini
new file mode 100644
index 00000000000..1696cf4515c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-left-006.html.ini
@@ -0,0 +1,2 @@
+[position-sticky-left-006.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-margins-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-margins-002.html.ini
new file mode 100644
index 00000000000..e3c81389f93
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-margins-002.html.ini
@@ -0,0 +1,2 @@
+[position-sticky-margins-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-stacking-context-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-stacking-context-002.html.ini
new file mode 100644
index 00000000000..931e3eabc35
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-stacking-context-002.html.ini
@@ -0,0 +1,2 @@
+[position-sticky-stacking-context-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-top-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-top-004.html.ini
new file mode 100644
index 00000000000..0672a9255fd
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-top-004.html.ini
@@ -0,0 +1,2 @@
+[position-sticky-top-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-top-005.html.ini b/tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-top-005.html.ini
new file mode 100644
index 00000000000..305911de57c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-top-005.html.ini
@@ -0,0 +1,2 @@
+[position-sticky-top-005.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-top-006.html.ini b/tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-top-006.html.ini
new file mode 100644
index 00000000000..91c5661cd80
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-position/sticky/position-sticky-top-006.html.ini
@@ -0,0 +1,2 @@
+[position-sticky-top-006.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-position/z-index-blend-will-change-overlapping-layers.html.ini b/tests/wpt/meta-legacy-layout/css/css-position/z-index-blend-will-change-overlapping-layers.html.ini
new file mode 100644
index 00000000000..07353055bf7
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-position/z-index-blend-will-change-overlapping-layers.html.ini
@@ -0,0 +1,2 @@
+[z-index-blend-will-change-overlapping-layers.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-pseudo/parsing/marker-supported-properties.html.ini b/tests/wpt/meta-legacy-layout/css/css-pseudo/parsing/marker-supported-properties.html.ini
index 1b852abc7cb..cb4247c08b9 100644
--- a/tests/wpt/meta-legacy-layout/css/css-pseudo/parsing/marker-supported-properties.html.ini
+++ b/tests/wpt/meta-legacy-layout/css/css-pseudo/parsing/marker-supported-properties.html.ini
@@ -184,3 +184,6 @@
[Property list-style-type value 'decimal' in ::marker]
expected: FAIL
+
+ [Property cursor value 'move' in ::marker]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-sizing/aspect-ratio/box-sizing-dimensions.html.ini b/tests/wpt/meta-legacy-layout/css/css-sizing/aspect-ratio/box-sizing-dimensions.html.ini
new file mode 100644
index 00000000000..7ec5060206b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-sizing/aspect-ratio/box-sizing-dimensions.html.ini
@@ -0,0 +1,18 @@
+[box-sizing-dimensions.html]
+ [.item 1]
+ expected: FAIL
+
+ [.item 2]
+ expected: FAIL
+
+ [.item 5]
+ expected: FAIL
+
+ [.item 6]
+ expected: FAIL
+
+ [.item 7]
+ expected: FAIL
+
+ [.item 8]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-sizing/aspect-ratio/box-sizing-squashed.html.ini b/tests/wpt/meta-legacy-layout/css/css-sizing/aspect-ratio/box-sizing-squashed.html.ini
new file mode 100644
index 00000000000..083f363578b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-sizing/aspect-ratio/box-sizing-squashed.html.ini
@@ -0,0 +1,42 @@
+[box-sizing-squashed.html]
+ [.item 1]
+ expected: FAIL
+
+ [.item 2]
+ expected: FAIL
+
+ [.item 4]
+ expected: FAIL
+
+ [.item 5]
+ expected: FAIL
+
+ [.item 6]
+ expected: FAIL
+
+ [.item 7]
+ expected: FAIL
+
+ [.item 8]
+ expected: FAIL
+
+ [.item 10]
+ expected: FAIL
+
+ [.item 11]
+ expected: FAIL
+
+ [.item 12]
+ expected: FAIL
+
+ [.item 13]
+ expected: FAIL
+
+ [.item 14]
+ expected: FAIL
+
+ [.item 15]
+ expected: FAIL
+
+ [.item 16]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-sizing/aspect-ratio/grid-aspect-ratio-023.html.ini b/tests/wpt/meta-legacy-layout/css/css-sizing/aspect-ratio/grid-aspect-ratio-023.html.ini
new file mode 100644
index 00000000000..7bca05d56ba
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-sizing/aspect-ratio/grid-aspect-ratio-023.html.ini
@@ -0,0 +1,2 @@
+[grid-aspect-ratio-023.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-sizing/block-size-with-min-or-max-content-2.html.ini b/tests/wpt/meta-legacy-layout/css/css-sizing/block-size-with-min-or-max-content-2.html.ini
new file mode 100644
index 00000000000..2cbaeed40c7
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-sizing/block-size-with-min-or-max-content-2.html.ini
@@ -0,0 +1,2 @@
+[block-size-with-min-or-max-content-2.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-sizing/block-size-with-min-or-max-content-3.html.ini b/tests/wpt/meta-legacy-layout/css/css-sizing/block-size-with-min-or-max-content-3.html.ini
new file mode 100644
index 00000000000..176b69004a4
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-sizing/block-size-with-min-or-max-content-3.html.ini
@@ -0,0 +1,2 @@
+[block-size-with-min-or-max-content-3.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-sizing/block-size-with-min-or-max-content-4.html.ini b/tests/wpt/meta-legacy-layout/css/css-sizing/block-size-with-min-or-max-content-4.html.ini
new file mode 100644
index 00000000000..47258ad268e
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-sizing/block-size-with-min-or-max-content-4.html.ini
@@ -0,0 +1,2 @@
+[block-size-with-min-or-max-content-4.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-sizing/block-size-with-min-or-max-content-5.html.ini b/tests/wpt/meta-legacy-layout/css/css-sizing/block-size-with-min-or-max-content-5.html.ini
new file mode 100644
index 00000000000..e83cce2e0ab
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-sizing/block-size-with-min-or-max-content-5.html.ini
@@ -0,0 +1,2 @@
+[block-size-with-min-or-max-content-5.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-sizing/block-size-with-min-or-max-content-6.html.ini b/tests/wpt/meta-legacy-layout/css/css-sizing/block-size-with-min-or-max-content-6.html.ini
new file mode 100644
index 00000000000..6e9b8930c28
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-sizing/block-size-with-min-or-max-content-6.html.ini
@@ -0,0 +1,2 @@
+[block-size-with-min-or-max-content-6.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-sizing/block-size-with-min-or-max-content-7.html.ini b/tests/wpt/meta-legacy-layout/css/css-sizing/block-size-with-min-or-max-content-7.html.ini
new file mode 100644
index 00000000000..67d7103c0a8
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-sizing/block-size-with-min-or-max-content-7.html.ini
@@ -0,0 +1,2 @@
+[block-size-with-min-or-max-content-7.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-sizing/fit-content-contribution-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-sizing/fit-content-contribution-001.html.ini
new file mode 100644
index 00000000000..2bbf2a8dc12
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-sizing/fit-content-contribution-001.html.ini
@@ -0,0 +1,2 @@
+[fit-content-contribution-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-sizing/intrinsic-percent-non-replaced-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-sizing/intrinsic-percent-non-replaced-002.html.ini
new file mode 100644
index 00000000000..c7e4867c42f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-sizing/intrinsic-percent-non-replaced-002.html.ini
@@ -0,0 +1,2 @@
+[intrinsic-percent-non-replaced-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-sizing/replaced-max-height-min-content.html.ini b/tests/wpt/meta-legacy-layout/css/css-sizing/replaced-max-height-min-content.html.ini
new file mode 100644
index 00000000000..1850f3c41c2
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-sizing/replaced-max-height-min-content.html.ini
@@ -0,0 +1,2 @@
+[replaced-max-height-min-content.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-sizing/replaced-max-width-min-content.html.ini b/tests/wpt/meta-legacy-layout/css/css-sizing/replaced-max-width-min-content.html.ini
new file mode 100644
index 00000000000..70634828627
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-sizing/replaced-max-width-min-content.html.ini
@@ -0,0 +1,2 @@
+[replaced-max-width-min-content.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-sizing/replaced-min-height-min-content.html.ini b/tests/wpt/meta-legacy-layout/css/css-sizing/replaced-min-height-min-content.html.ini
new file mode 100644
index 00000000000..e10292f4a06
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-sizing/replaced-min-height-min-content.html.ini
@@ -0,0 +1,2 @@
+[replaced-min-height-min-content.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-sizing/replaced-min-width-min-content.html.ini b/tests/wpt/meta-legacy-layout/css/css-sizing/replaced-min-width-min-content.html.ini
new file mode 100644
index 00000000000..acf6d031ca8
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-sizing/replaced-min-width-min-content.html.ini
@@ -0,0 +1,2 @@
+[replaced-min-width-min-content.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-sizing/svg-no-ar-max-height-min-content.html.ini b/tests/wpt/meta-legacy-layout/css/css-sizing/svg-no-ar-max-height-min-content.html.ini
new file mode 100644
index 00000000000..7353d867505
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-sizing/svg-no-ar-max-height-min-content.html.ini
@@ -0,0 +1,2 @@
+[svg-no-ar-max-height-min-content.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-sizing/svg-no-ar-min-height-min-content.html.ini b/tests/wpt/meta-legacy-layout/css/css-sizing/svg-no-ar-min-height-min-content.html.ini
new file mode 100644
index 00000000000..75211364e3b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-sizing/svg-no-ar-min-height-min-content.html.ini
@@ -0,0 +1,2 @@
+[svg-no-ar-min-height-min-content.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-tables/height-distribution/extra-height-given-to-all-row-groups-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-tables/height-distribution/extra-height-given-to-all-row-groups-001.html.ini
new file mode 100644
index 00000000000..e4becddcbaf
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-tables/height-distribution/extra-height-given-to-all-row-groups-001.html.ini
@@ -0,0 +1,2 @@
+[extra-height-given-to-all-row-groups-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-tables/height-distribution/extra-height-given-to-all-row-groups-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-tables/height-distribution/extra-height-given-to-all-row-groups-002.html.ini
new file mode 100644
index 00000000000..638183bef99
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-tables/height-distribution/extra-height-given-to-all-row-groups-002.html.ini
@@ -0,0 +1,2 @@
+[extra-height-given-to-all-row-groups-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-tables/height-distribution/extra-height-given-to-all-row-groups-005.html.ini b/tests/wpt/meta-legacy-layout/css/css-tables/height-distribution/extra-height-given-to-all-row-groups-005.html.ini
new file mode 100644
index 00000000000..01d00ac3ae1
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-tables/height-distribution/extra-height-given-to-all-row-groups-005.html.ini
@@ -0,0 +1,2 @@
+[extra-height-given-to-all-row-groups-005.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-tables/height-distribution/percentage-sizing-of-table-cell-children-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-tables/height-distribution/percentage-sizing-of-table-cell-children-003.html.ini
new file mode 100644
index 00000000000..647991e6154
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-tables/height-distribution/percentage-sizing-of-table-cell-children-003.html.ini
@@ -0,0 +1,2 @@
+[percentage-sizing-of-table-cell-children-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-tables/height-distribution/percentage-sizing-of-table-cell-children-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-tables/height-distribution/percentage-sizing-of-table-cell-children-004.html.ini
new file mode 100644
index 00000000000..8acef654adb
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-tables/height-distribution/percentage-sizing-of-table-cell-children-004.html.ini
@@ -0,0 +1,2 @@
+[percentage-sizing-of-table-cell-children-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-tables/height-distribution/percentage-sizing-of-table-cell-children-005.html.ini b/tests/wpt/meta-legacy-layout/css/css-tables/height-distribution/percentage-sizing-of-table-cell-children-005.html.ini
new file mode 100644
index 00000000000..7ad24333f42
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-tables/height-distribution/percentage-sizing-of-table-cell-children-005.html.ini
@@ -0,0 +1,2 @@
+[percentage-sizing-of-table-cell-children-005.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-tables/height-distribution/percentage-sizing-of-table-cell-children-006.html.ini b/tests/wpt/meta-legacy-layout/css/css-tables/height-distribution/percentage-sizing-of-table-cell-children-006.html.ini
new file mode 100644
index 00000000000..a8598ed3173
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-tables/height-distribution/percentage-sizing-of-table-cell-children-006.html.ini
@@ -0,0 +1,2 @@
+[percentage-sizing-of-table-cell-children-006.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-tables/table-has-box-sizing-border-box-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-tables/table-has-box-sizing-border-box-002.html.ini
new file mode 100644
index 00000000000..0887778d34e
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-tables/table-has-box-sizing-border-box-002.html.ini
@@ -0,0 +1,2 @@
+[table-has-box-sizing-border-box-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text-decor/text-decoration-underline-position-vertical-ja.html.ini b/tests/wpt/meta-legacy-layout/css/css-text-decor/text-decoration-underline-position-vertical-ja.html.ini
deleted file mode 100644
index 2c69ffca92c..00000000000
--- a/tests/wpt/meta-legacy-layout/css/css-text-decor/text-decoration-underline-position-vertical-ja.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[text-decoration-underline-position-vertical-ja.html]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text-decor/text-decoration-underline-position-vertical.html.ini b/tests/wpt/meta-legacy-layout/css/css-text-decor/text-decoration-underline-position-vertical.html.ini
deleted file mode 100644
index cfdff6ecde1..00000000000
--- a/tests/wpt/meta-legacy-layout/css/css-text-decor/text-decoration-underline-position-vertical.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[text-decoration-underline-position-vertical.html]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text-decor/text-shadow/basic-negcoord.html.ini b/tests/wpt/meta-legacy-layout/css/css-text-decor/text-shadow/basic-negcoord.html.ini
new file mode 100644
index 00000000000..1cfd412e465
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text-decor/text-shadow/basic-negcoord.html.ini
@@ -0,0 +1,2 @@
+[basic-negcoord.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text-decor/text-shadow/basic-opacity.html.ini b/tests/wpt/meta-legacy-layout/css/css-text-decor/text-shadow/basic-opacity.html.ini
new file mode 100644
index 00000000000..09fc1fd85ac
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text-decor/text-shadow/basic-opacity.html.ini
@@ -0,0 +1,2 @@
+[basic-opacity.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text-decor/text-shadow/basic.html.ini b/tests/wpt/meta-legacy-layout/css/css-text-decor/text-shadow/basic.html.ini
new file mode 100644
index 00000000000..71c924c9b58
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text-decor/text-shadow/basic.html.ini
@@ -0,0 +1,2 @@
+[basic.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text-decor/text-shadow/color-inherit.html.ini b/tests/wpt/meta-legacy-layout/css/css-text-decor/text-shadow/color-inherit.html.ini
new file mode 100644
index 00000000000..6c13f083388
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text-decor/text-shadow/color-inherit.html.ini
@@ -0,0 +1,2 @@
+[color-inherit.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text-decor/text-shadow/multiple-noblur.html.ini b/tests/wpt/meta-legacy-layout/css/css-text-decor/text-shadow/multiple-noblur.html.ini
new file mode 100644
index 00000000000..259c050eb2e
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text-decor/text-shadow/multiple-noblur.html.ini
@@ -0,0 +1,2 @@
+[multiple-noblur.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text-decor/text-shadow/quirks-decor-noblur.html.ini b/tests/wpt/meta-legacy-layout/css/css-text-decor/text-shadow/quirks-decor-noblur.html.ini
new file mode 100644
index 00000000000..4ef82b240ee
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text-decor/text-shadow/quirks-decor-noblur.html.ini
@@ -0,0 +1,2 @@
+[quirks-decor-noblur.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text-decor/text-shadow/standards-decor-noblur-2.html.ini b/tests/wpt/meta-legacy-layout/css/css-text-decor/text-shadow/standards-decor-noblur-2.html.ini
new file mode 100644
index 00000000000..4fb4faa4282
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text-decor/text-shadow/standards-decor-noblur-2.html.ini
@@ -0,0 +1,2 @@
+[standards-decor-noblur-2.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text-decor/text-shadow/standards-decor-noblur.html.ini b/tests/wpt/meta-legacy-layout/css/css-text-decor/text-shadow/standards-decor-noblur.html.ini
new file mode 100644
index 00000000000..e72f8df6574
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text-decor/text-shadow/standards-decor-noblur.html.ini
@@ -0,0 +1,2 @@
+[standards-decor-noblur.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text-decor/text-underline-position-vertical-ja.html.ini b/tests/wpt/meta-legacy-layout/css/css-text-decor/text-underline-position-vertical-ja.html.ini
new file mode 100644
index 00000000000..ea2203ff67f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text-decor/text-underline-position-vertical-ja.html.ini
@@ -0,0 +1,2 @@
+[text-underline-position-vertical-ja.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text-decor/text-underline-position-vertical.html.ini b/tests/wpt/meta-legacy-layout/css/css-text-decor/text-underline-position-vertical.html.ini
new file mode 100644
index 00000000000..e5bd825acf3
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text-decor/text-underline-position-vertical.html.ini
@@ -0,0 +1,2 @@
+[text-underline-position-vertical.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/hyphens/hyphens-auto-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/hyphens/hyphens-auto-002.html.ini
new file mode 100644
index 00000000000..8d731c13b0c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/hyphens/hyphens-auto-002.html.ini
@@ -0,0 +1,2 @@
+[hyphens-auto-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/line-break/line-break-anywhere-016.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/line-break/line-break-anywhere-016.html.ini
new file mode 100644
index 00000000000..1edd3385e3c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/line-break/line-break-anywhere-016.html.ini
@@ -0,0 +1,2 @@
+[line-break-anywhere-016.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/line-break/line-break-anywhere-and-white-space-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/line-break/line-break-anywhere-and-white-space-001.html.ini
new file mode 100644
index 00000000000..261a0798809
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/line-break/line-break-anywhere-and-white-space-001.html.ini
@@ -0,0 +1,2 @@
+[line-break-anywhere-and-white-space-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/line-break/line-break-anywhere-and-white-space-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/line-break/line-break-anywhere-and-white-space-002.html.ini
new file mode 100644
index 00000000000..0ee443dab5f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/line-break/line-break-anywhere-and-white-space-002.html.ini
@@ -0,0 +1,2 @@
+[line-break-anywhere-and-white-space-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/line-break/line-break-anywhere-and-white-space-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/line-break/line-break-anywhere-and-white-space-003.html.ini
new file mode 100644
index 00000000000..e3889ce1ae9
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/line-break/line-break-anywhere-and-white-space-003.html.ini
@@ -0,0 +1,2 @@
+[line-break-anywhere-and-white-space-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/line-break/line-break-anywhere-and-white-space-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/line-break/line-break-anywhere-and-white-space-004.html.ini
new file mode 100644
index 00000000000..50c39c4f1a5
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/line-break/line-break-anywhere-and-white-space-004.html.ini
@@ -0,0 +1,2 @@
+[line-break-anywhere-and-white-space-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/line-break/line-break-anywhere-and-white-space-006.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/line-break/line-break-anywhere-and-white-space-006.html.ini
new file mode 100644
index 00000000000..79944b55d9f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/line-break/line-break-anywhere-and-white-space-006.html.ini
@@ -0,0 +1,2 @@
+[line-break-anywhere-and-white-space-006.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/line-break/line-break-anywhere-and-white-space-007.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/line-break/line-break-anywhere-and-white-space-007.html.ini
new file mode 100644
index 00000000000..1a7f7b10fe6
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/line-break/line-break-anywhere-and-white-space-007.html.ini
@@ -0,0 +1,2 @@
+[line-break-anywhere-and-white-space-007.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/line-breaking/line-breaking-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/line-breaking/line-breaking-001.html.ini
new file mode 100644
index 00000000000..07003f36f1a
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/line-breaking/line-breaking-001.html.ini
@@ -0,0 +1,2 @@
+[line-breaking-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/line-breaking/line-breaking-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/line-breaking/line-breaking-002.html.ini
new file mode 100644
index 00000000000..522ae440966
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/line-breaking/line-breaking-002.html.ini
@@ -0,0 +1,2 @@
+[line-breaking-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/line-breaking/line-breaking-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/line-breaking/line-breaking-003.html.ini
new file mode 100644
index 00000000000..c779d922d35
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/line-breaking/line-breaking-003.html.ini
@@ -0,0 +1,2 @@
+[line-breaking-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/line-breaking/line-breaking-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/line-breaking/line-breaking-004.html.ini
new file mode 100644
index 00000000000..365427e289f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/line-breaking/line-breaking-004.html.ini
@@ -0,0 +1,2 @@
+[line-breaking-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/line-breaking/line-breaking-005.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/line-breaking/line-breaking-005.html.ini
new file mode 100644
index 00000000000..cd5c39d9e9f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/line-breaking/line-breaking-005.html.ini
@@ -0,0 +1,2 @@
+[line-breaking-005.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/line-breaking/line-breaking-006.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/line-breaking/line-breaking-006.html.ini
new file mode 100644
index 00000000000..0ed8bd03f62
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/line-breaking/line-breaking-006.html.ini
@@ -0,0 +1,2 @@
+[line-breaking-006.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/line-breaking/line-breaking-007.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/line-breaking/line-breaking-007.html.ini
new file mode 100644
index 00000000000..ca0ddea2bce
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/line-breaking/line-breaking-007.html.ini
@@ -0,0 +1,2 @@
+[line-breaking-007.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/line-breaking/line-breaking-008.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/line-breaking/line-breaking-008.html.ini
new file mode 100644
index 00000000000..bef086aba18
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/line-breaking/line-breaking-008.html.ini
@@ -0,0 +1,2 @@
+[line-breaking-008.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/line-breaking/line-breaking-010.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/line-breaking/line-breaking-010.html.ini
new file mode 100644
index 00000000000..8869ad8f79b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/line-breaking/line-breaking-010.html.ini
@@ -0,0 +1,2 @@
+[line-breaking-010.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/line-breaking/line-breaking-ic-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/line-breaking/line-breaking-ic-001.html.ini
new file mode 100644
index 00000000000..300d468050d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/line-breaking/line-breaking-ic-001.html.ini
@@ -0,0 +1,2 @@
+[line-breaking-ic-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/overflow-wrap/overflow-wrap-anywhere-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/overflow-wrap/overflow-wrap-anywhere-004.html.ini
new file mode 100644
index 00000000000..fa84ca160bf
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/overflow-wrap/overflow-wrap-anywhere-004.html.ini
@@ -0,0 +1,2 @@
+[overflow-wrap-anywhere-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/overflow-wrap/overflow-wrap-min-content-size-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/overflow-wrap/overflow-wrap-min-content-size-004.html.ini
new file mode 100644
index 00000000000..38e4b2dcd29
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/overflow-wrap/overflow-wrap-min-content-size-004.html.ini
@@ -0,0 +1,2 @@
+[overflow-wrap-min-content-size-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/overflow-wrap/overflow-wrap-min-content-size-008.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/overflow-wrap/overflow-wrap-min-content-size-008.html.ini
new file mode 100644
index 00000000000..b3486c67626
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/overflow-wrap/overflow-wrap-min-content-size-008.html.ini
@@ -0,0 +1,2 @@
+[overflow-wrap-min-content-size-008.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/text-transform/text-transform-fullwidth-006.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/text-transform/text-transform-fullwidth-006.html.ini
new file mode 100644
index 00000000000..6dc1e5970da
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/text-transform/text-transform-fullwidth-006.html.ini
@@ -0,0 +1,2 @@
+[text-transform-fullwidth-006.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/text-transform/text-transform-fullwidth-007.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/text-transform/text-transform-fullwidth-007.html.ini
new file mode 100644
index 00000000000..ed89ed58484
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/text-transform/text-transform-fullwidth-007.html.ini
@@ -0,0 +1,2 @@
+[text-transform-fullwidth-007.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/white-space/break-spaces-tab-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/white-space/break-spaces-tab-001.html.ini
new file mode 100644
index 00000000000..60df723fea1
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/white-space/break-spaces-tab-001.html.ini
@@ -0,0 +1,2 @@
+[break-spaces-tab-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/white-space/break-spaces-tab-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/white-space/break-spaces-tab-002.html.ini
new file mode 100644
index 00000000000..abd0c320782
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/white-space/break-spaces-tab-002.html.ini
@@ -0,0 +1,2 @@
+[break-spaces-tab-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/white-space/break-spaces-with-ideographic-space-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/white-space/break-spaces-with-ideographic-space-004.html.ini
new file mode 100644
index 00000000000..a47d71afa66
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/white-space/break-spaces-with-ideographic-space-004.html.ini
@@ -0,0 +1,2 @@
+[break-spaces-with-ideographic-space-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/white-space/break-spaces-with-ideographic-space-007.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/white-space/break-spaces-with-ideographic-space-007.html.ini
new file mode 100644
index 00000000000..d34fcbdddac
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/white-space/break-spaces-with-ideographic-space-007.html.ini
@@ -0,0 +1,2 @@
+[break-spaces-with-ideographic-space-007.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/white-space/full-width-leading-spaces-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/white-space/full-width-leading-spaces-001.html.ini
new file mode 100644
index 00000000000..d7dd81203cf
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/white-space/full-width-leading-spaces-001.html.ini
@@ -0,0 +1,2 @@
+[full-width-leading-spaces-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/white-space/full-width-leading-spaces-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/white-space/full-width-leading-spaces-002.html.ini
new file mode 100644
index 00000000000..fcdfae95226
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/white-space/full-width-leading-spaces-002.html.ini
@@ -0,0 +1,2 @@
+[full-width-leading-spaces-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/white-space/full-width-leading-spaces-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/white-space/full-width-leading-spaces-003.html.ini
new file mode 100644
index 00000000000..09aab2016a1
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/white-space/full-width-leading-spaces-003.html.ini
@@ -0,0 +1,2 @@
+[full-width-leading-spaces-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/white-space/full-width-leading-spaces-005.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/white-space/full-width-leading-spaces-005.html.ini
new file mode 100644
index 00000000000..2fe494376b5
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/white-space/full-width-leading-spaces-005.html.ini
@@ -0,0 +1,2 @@
+[full-width-leading-spaces-005.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/white-space/pre-wrap-010.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/white-space/pre-wrap-010.html.ini
new file mode 100644
index 00000000000..b79cd9041a0
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/white-space/pre-wrap-010.html.ini
@@ -0,0 +1,2 @@
+[pre-wrap-010.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/white-space/pre-wrap-015.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/white-space/pre-wrap-015.html.ini
new file mode 100644
index 00000000000..1e110cf2423
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/white-space/pre-wrap-015.html.ini
@@ -0,0 +1,2 @@
+[pre-wrap-015.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/white-space/pre-wrap-016.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/white-space/pre-wrap-016.html.ini
new file mode 100644
index 00000000000..cbbf9cabc21
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/white-space/pre-wrap-016.html.ini
@@ -0,0 +1,2 @@
+[pre-wrap-016.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/white-space/pre-wrap-leading-spaces-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/white-space/pre-wrap-leading-spaces-001.html.ini
new file mode 100644
index 00000000000..a6e68aff900
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/white-space/pre-wrap-leading-spaces-001.html.ini
@@ -0,0 +1,2 @@
+[pre-wrap-leading-spaces-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/white-space/pre-wrap-leading-spaces-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/white-space/pre-wrap-leading-spaces-002.html.ini
new file mode 100644
index 00000000000..982845dc823
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/white-space/pre-wrap-leading-spaces-002.html.ini
@@ -0,0 +1,2 @@
+[pre-wrap-leading-spaces-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/white-space/pre-wrap-leading-spaces-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/white-space/pre-wrap-leading-spaces-003.html.ini
new file mode 100644
index 00000000000..fac8c98dcde
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/white-space/pre-wrap-leading-spaces-003.html.ini
@@ -0,0 +1,2 @@
+[pre-wrap-leading-spaces-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/white-space/pre-wrap-leading-spaces-012.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/white-space/pre-wrap-leading-spaces-012.html.ini
new file mode 100644
index 00000000000..3b734712ee3
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/white-space/pre-wrap-leading-spaces-012.html.ini
@@ -0,0 +1,2 @@
+[pre-wrap-leading-spaces-012.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/white-space/pre-wrap-tab-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/white-space/pre-wrap-tab-001.html.ini
new file mode 100644
index 00000000000..f40b22a19fb
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/white-space/pre-wrap-tab-001.html.ini
@@ -0,0 +1,2 @@
+[pre-wrap-tab-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/white-space/pre-wrap-tab-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/white-space/pre-wrap-tab-002.html.ini
new file mode 100644
index 00000000000..3acfd9651db
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/white-space/pre-wrap-tab-002.html.ini
@@ -0,0 +1,2 @@
+[pre-wrap-tab-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/white-space/trailing-ideographic-space-017.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/white-space/trailing-ideographic-space-017.html.ini
new file mode 100644
index 00000000000..2c1bad15821
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/white-space/trailing-ideographic-space-017.html.ini
@@ -0,0 +1,2 @@
+[trailing-ideographic-space-017.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/white-space/trailing-ideographic-space-018.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/white-space/trailing-ideographic-space-018.html.ini
new file mode 100644
index 00000000000..ecf45a123c4
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/white-space/trailing-ideographic-space-018.html.ini
@@ -0,0 +1,2 @@
+[trailing-ideographic-space-018.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/white-space/trailing-ideographic-space-019.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/white-space/trailing-ideographic-space-019.html.ini
new file mode 100644
index 00000000000..dd154eefe1c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/white-space/trailing-ideographic-space-019.html.ini
@@ -0,0 +1,2 @@
+[trailing-ideographic-space-019.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/white-space/trailing-ideographic-space-020.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/white-space/trailing-ideographic-space-020.html.ini
new file mode 100644
index 00000000000..5fa4cc584b7
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/white-space/trailing-ideographic-space-020.html.ini
@@ -0,0 +1,2 @@
+[trailing-ideographic-space-020.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/white-space/trailing-ideographic-space-021.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/white-space/trailing-ideographic-space-021.html.ini
new file mode 100644
index 00000000000..118b5de8d33
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/white-space/trailing-ideographic-space-021.html.ini
@@ -0,0 +1,2 @@
+[trailing-ideographic-space-021.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/white-space/trailing-ideographic-space-022.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/white-space/trailing-ideographic-space-022.html.ini
new file mode 100644
index 00000000000..cd1cddefbd5
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/white-space/trailing-ideographic-space-022.html.ini
@@ -0,0 +1,2 @@
+[trailing-ideographic-space-022.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/white-space/trailing-ideographic-space-023.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/white-space/trailing-ideographic-space-023.html.ini
new file mode 100644
index 00000000000..3dc63b6bab6
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/white-space/trailing-ideographic-space-023.html.ini
@@ -0,0 +1,2 @@
+[trailing-ideographic-space-023.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/white-space/trailing-ideographic-space-024.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/white-space/trailing-ideographic-space-024.html.ini
new file mode 100644
index 00000000000..0deeb0a0b58
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/white-space/trailing-ideographic-space-024.html.ini
@@ -0,0 +1,2 @@
+[trailing-ideographic-space-024.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/white-space/trailing-ideographic-space-025.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/white-space/trailing-ideographic-space-025.html.ini
new file mode 100644
index 00000000000..82271027ed2
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/white-space/trailing-ideographic-space-025.html.ini
@@ -0,0 +1,2 @@
+[trailing-ideographic-space-025.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/white-space/trailing-ideographic-space-break-spaces-008.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/white-space/trailing-ideographic-space-break-spaces-008.html.ini
new file mode 100644
index 00000000000..777ec908b14
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/white-space/trailing-ideographic-space-break-spaces-008.html.ini
@@ -0,0 +1,2 @@
+[trailing-ideographic-space-break-spaces-008.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/white-space/white-space-intrinsic-size-015.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/white-space/white-space-intrinsic-size-015.html.ini
new file mode 100644
index 00000000000..89bdfca9200
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/white-space/white-space-intrinsic-size-015.html.ini
@@ -0,0 +1,2 @@
+[white-space-intrinsic-size-015.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/white-space/white-space-intrinsic-size-016.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/white-space/white-space-intrinsic-size-016.html.ini
new file mode 100644
index 00000000000..cd83045f9ac
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/white-space/white-space-intrinsic-size-016.html.ini
@@ -0,0 +1,2 @@
+[white-space-intrinsic-size-016.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/white-space/white-space-intrinsic-size-017.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/white-space/white-space-intrinsic-size-017.html.ini
new file mode 100644
index 00000000000..1095373e38b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/white-space/white-space-intrinsic-size-017.html.ini
@@ -0,0 +1,2 @@
+[white-space-intrinsic-size-017.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/white-space/white-space-intrinsic-size-018.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/white-space/white-space-intrinsic-size-018.html.ini
new file mode 100644
index 00000000000..368a69e07d3
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/white-space/white-space-intrinsic-size-018.html.ini
@@ -0,0 +1,2 @@
+[white-space-intrinsic-size-018.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/white-space/white-space-intrinsic-size-019.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/white-space/white-space-intrinsic-size-019.html.ini
new file mode 100644
index 00000000000..442e5e3ed26
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/white-space/white-space-intrinsic-size-019.html.ini
@@ -0,0 +1,2 @@
+[white-space-intrinsic-size-019.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/white-space/white-space-intrinsic-size-020.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/white-space/white-space-intrinsic-size-020.html.ini
new file mode 100644
index 00000000000..e4d9505ebbc
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/white-space/white-space-intrinsic-size-020.html.ini
@@ -0,0 +1,2 @@
+[white-space-intrinsic-size-020.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/word-break/word-break-break-all-011.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/word-break/word-break-break-all-011.html.ini
new file mode 100644
index 00000000000..6833da89a76
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/word-break/word-break-break-all-011.html.ini
@@ -0,0 +1,2 @@
+[word-break-break-all-011.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/word-break/word-break-break-all-inline-008.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/word-break/word-break-break-all-inline-008.html.ini
new file mode 100644
index 00000000000..2e0cf5d10f4
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/word-break/word-break-break-all-inline-008.html.ini
@@ -0,0 +1,2 @@
+[word-break-break-all-inline-008.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-text/word-break/word-break-min-content-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-text/word-break/word-break-min-content-003.html.ini
new file mode 100644
index 00000000000..37993de3a17
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-text/word-break/word-break-min-content-003.html.ini
@@ -0,0 +1,2 @@
+[word-break-min-content-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-transforms/animation/transform-box-will-change-transform-layer.html.ini b/tests/wpt/meta-legacy-layout/css/css-transforms/animation/transform-box-will-change-transform-layer.html.ini
new file mode 100644
index 00000000000..40d004b03b6
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-transforms/animation/transform-box-will-change-transform-layer.html.ini
@@ -0,0 +1,2 @@
+[transform-box-will-change-transform-layer.html]
+ expected: TIMEOUT
diff --git a/tests/wpt/meta-legacy-layout/css/css-transforms/animation/transform-box.html.ini b/tests/wpt/meta-legacy-layout/css/css-transforms/animation/transform-box.html.ini
new file mode 100644
index 00000000000..e2320dd4c15
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-transforms/animation/transform-box.html.ini
@@ -0,0 +1,2 @@
+[transform-box.html]
+ expected: TIMEOUT
diff --git a/tests/wpt/meta-legacy-layout/css/css-transforms/css-transforms-3d-on-anonymous-block-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-transforms/css-transforms-3d-on-anonymous-block-001.html.ini
new file mode 100644
index 00000000000..bbb2e5f171e
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-transforms/css-transforms-3d-on-anonymous-block-001.html.ini
@@ -0,0 +1,2 @@
+[css-transforms-3d-on-anonymous-block-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-transforms/css3-transform-scale-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-transforms/css3-transform-scale-002.html.ini
new file mode 100644
index 00000000000..5d4b8a2ed6c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-transforms/css3-transform-scale-002.html.ini
@@ -0,0 +1,2 @@
+[css3-transform-scale-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-transforms/css3-transform-scale.html.ini b/tests/wpt/meta-legacy-layout/css/css-transforms/css3-transform-scale.html.ini
new file mode 100644
index 00000000000..922a0492379
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-transforms/css3-transform-scale.html.ini
@@ -0,0 +1,2 @@
+[css3-transform-scale.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-transforms/perspective-containing-block-dynamic-1a.html.ini b/tests/wpt/meta-legacy-layout/css/css-transforms/perspective-containing-block-dynamic-1a.html.ini
new file mode 100644
index 00000000000..54107a36059
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-transforms/perspective-containing-block-dynamic-1a.html.ini
@@ -0,0 +1,2 @@
+[perspective-containing-block-dynamic-1a.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-transforms/preserve3d-and-flattening-z-order-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-transforms/preserve3d-and-flattening-z-order-001.html.ini
new file mode 100644
index 00000000000..658bba6a324
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-transforms/preserve3d-and-flattening-z-order-001.html.ini
@@ -0,0 +1,2 @@
+[preserve3d-and-flattening-z-order-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-transforms/preserve3d-and-flattening-z-order-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-transforms/preserve3d-and-flattening-z-order-002.html.ini
new file mode 100644
index 00000000000..76ab456b9ec
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-transforms/preserve3d-and-flattening-z-order-002.html.ini
@@ -0,0 +1,2 @@
+[preserve3d-and-flattening-z-order-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-transforms/preserve3d-and-flattening-z-order-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-transforms/preserve3d-and-flattening-z-order-003.html.ini
new file mode 100644
index 00000000000..4a99a695cf1
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-transforms/preserve3d-and-flattening-z-order-003.html.ini
@@ -0,0 +1,2 @@
+[preserve3d-and-flattening-z-order-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-transforms/preserve3d-and-flattening-z-order-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-transforms/preserve3d-and-flattening-z-order-004.html.ini
new file mode 100644
index 00000000000..ff4ec71aa50
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-transforms/preserve3d-and-flattening-z-order-004.html.ini
@@ -0,0 +1,2 @@
+[preserve3d-and-flattening-z-order-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-transforms/scalex.html.ini b/tests/wpt/meta-legacy-layout/css/css-transforms/scalex.html.ini
new file mode 100644
index 00000000000..231f8811cc1
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-transforms/scalex.html.ini
@@ -0,0 +1,2 @@
+[scalex.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-transforms/scaley.html.ini b/tests/wpt/meta-legacy-layout/css/css-transforms/scaley.html.ini
new file mode 100644
index 00000000000..8313d07ac97
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-transforms/scaley.html.ini
@@ -0,0 +1,2 @@
+[scaley.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-transforms/scrollable-hidden-3d-transform-z.html.ini b/tests/wpt/meta-legacy-layout/css/css-transforms/scrollable-hidden-3d-transform-z.html.ini
new file mode 100644
index 00000000000..a479cd80071
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-transforms/scrollable-hidden-3d-transform-z.html.ini
@@ -0,0 +1,2 @@
+[scrollable-hidden-3d-transform-z.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-transforms/scrollable-scroll-3d-transform-z.html.ini b/tests/wpt/meta-legacy-layout/css/css-transforms/scrollable-scroll-3d-transform-z.html.ini
new file mode 100644
index 00000000000..ca2b2962bc5
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-transforms/scrollable-scroll-3d-transform-z.html.ini
@@ -0,0 +1,2 @@
+[scrollable-scroll-3d-transform-z.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-transforms/transform-containing-block-dynamic-1a.html.ini b/tests/wpt/meta-legacy-layout/css/css-transforms/transform-containing-block-dynamic-1a.html.ini
new file mode 100644
index 00000000000..4adb76773b3
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-transforms/transform-containing-block-dynamic-1a.html.ini
@@ -0,0 +1,2 @@
+[transform-containing-block-dynamic-1a.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-transforms/transform-stacking-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-transforms/transform-stacking-002.html.ini
new file mode 100644
index 00000000000..6d3f3ba7630
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-transforms/transform-stacking-002.html.ini
@@ -0,0 +1,2 @@
+[transform-stacking-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-transforms/transform-stacking-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-transforms/transform-stacking-003.html.ini
new file mode 100644
index 00000000000..bb420d68632
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-transforms/transform-stacking-003.html.ini
@@ -0,0 +1,2 @@
+[transform-stacking-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-transforms/transform-stacking-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-transforms/transform-stacking-004.html.ini
new file mode 100644
index 00000000000..7689e6ab755
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-transforms/transform-stacking-004.html.ini
@@ -0,0 +1,2 @@
+[transform-stacking-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-transforms/translate.html.ini b/tests/wpt/meta-legacy-layout/css/css-transforms/translate.html.ini
new file mode 100644
index 00000000000..923f089c3a5
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-transforms/translate.html.ini
@@ -0,0 +1,2 @@
+[translate.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-ui/box-sizing-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-ui/box-sizing-001.html.ini
new file mode 100644
index 00000000000..c3d20b4135e
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-ui/box-sizing-001.html.ini
@@ -0,0 +1,2 @@
+[box-sizing-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-ui/box-sizing-026.html.ini b/tests/wpt/meta-legacy-layout/css/css-ui/box-sizing-026.html.ini
new file mode 100644
index 00000000000..6fee176772e
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-ui/box-sizing-026.html.ini
@@ -0,0 +1,2 @@
+[box-sizing-026.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-ui/text-overflow-007.html.ini b/tests/wpt/meta-legacy-layout/css/css-ui/text-overflow-007.html.ini
new file mode 100644
index 00000000000..b59be5c6fb6
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-ui/text-overflow-007.html.ini
@@ -0,0 +1,2 @@
+[text-overflow-007.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-values/angle-units-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-values/angle-units-001.html.ini
new file mode 100644
index 00000000000..75a5f056519
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-values/angle-units-001.html.ini
@@ -0,0 +1,2 @@
+[angle-units-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-values/angle-units-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-values/angle-units-002.html.ini
new file mode 100644
index 00000000000..6e2f2134294
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-values/angle-units-002.html.ini
@@ -0,0 +1,2 @@
+[angle-units-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-values/angle-units-003.html.ini b/tests/wpt/meta-legacy-layout/css/css-values/angle-units-003.html.ini
new file mode 100644
index 00000000000..8c19d7b890d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-values/angle-units-003.html.ini
@@ -0,0 +1,2 @@
+[angle-units-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-values/angle-units-004.html.ini b/tests/wpt/meta-legacy-layout/css/css-values/angle-units-004.html.ini
new file mode 100644
index 00000000000..558a7393a89
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-values/angle-units-004.html.ini
@@ -0,0 +1,2 @@
+[angle-units-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-values/angle-units-005.html.ini b/tests/wpt/meta-legacy-layout/css/css-values/angle-units-005.html.ini
new file mode 100644
index 00000000000..098c938f014
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-values/angle-units-005.html.ini
@@ -0,0 +1,2 @@
+[angle-units-005.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-values/attr-all-types.html.ini b/tests/wpt/meta-legacy-layout/css/css-values/attr-all-types.html.ini
index b4ee5fc070d..b78185da0c1 100644
--- a/tests/wpt/meta-legacy-layout/css/css-values/attr-all-types.html.ini
+++ b/tests/wpt/meta-legacy-layout/css/css-values/attr-all-types.html.ini
@@ -41,42 +41,18 @@
[CSS Values and Units Test: attr 14]
expected: FAIL
- [CSS Values and Units Test: attr 15]
- expected: FAIL
-
[CSS Values and Units Test: attr 18]
expected: FAIL
- [CSS Values and Units Test: attr 19]
- expected: FAIL
-
- [CSS Values and Units Test: attr 20]
- expected: FAIL
-
[CSS Values and Units Test: attr 21]
expected: FAIL
- [CSS Values and Units Test: attr 25]
- expected: FAIL
-
- [CSS Values and Units Test: attr 26]
- expected: FAIL
-
[CSS Values and Units Test: attr 28]
expected: FAIL
[CSS Values and Units Test: attr 29]
expected: FAIL
- [CSS Values and Units Test: attr 30]
- expected: FAIL
-
- [CSS Values and Units Test: attr 31]
- expected: FAIL
-
- [CSS Values and Units Test: attr 32]
- expected: FAIL
-
[CSS Values and Units Test: attr 33]
expected: FAIL
@@ -146,14 +122,47 @@
[CSS Values and Units Test: attr 55]
expected: FAIL
- [CSS Values and Units Test: attr 64]
+ [CSS Values and Units Test: attr 12]
+ expected: FAIL
+
+ [CSS Values and Units Test: attr 16]
+ expected: FAIL
+
+ [CSS Values and Units Test: attr 17]
+ expected: FAIL
+
+ [CSS Values and Units Test: attr 22]
+ expected: FAIL
+
+ [CSS Values and Units Test: attr 23]
+ expected: FAIL
+
+ [CSS Values and Units Test: attr 24]
+ expected: FAIL
+
+ [CSS Values and Units Test: attr 56]
+ expected: FAIL
+
+ [CSS Values and Units Test: attr 57]
+ expected: FAIL
+
+ [CSS Values and Units Test: attr 58]
+ expected: FAIL
+
+ [CSS Values and Units Test: attr 59]
+ expected: FAIL
+
+ [CSS Values and Units Test: attr 60]
+ expected: FAIL
+
+ [CSS Values and Units Test: attr 69]
expected: FAIL
- [CSS Values and Units Test: attr 65]
+ [CSS Values and Units Test: attr 70]
expected: FAIL
- [CSS Values and Units Test: attr 66]
+ [CSS Values and Units Test: attr 71]
expected: FAIL
- [CSS Values and Units Test: attr 67]
+ [CSS Values and Units Test: attr 72]
expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-values/attr-invalid-type-008.html.ini b/tests/wpt/meta-legacy-layout/css/css-values/attr-invalid-type-008.html.ini
deleted file mode 100644
index 65fd07a15f3..00000000000
--- a/tests/wpt/meta-legacy-layout/css/css-values/attr-invalid-type-008.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[attr-invalid-type-008.html]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-values/attr-pseudo-elem-invalidation.html.ini b/tests/wpt/meta-legacy-layout/css/css-values/attr-pseudo-elem-invalidation.html.ini
new file mode 100644
index 00000000000..5962238388c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-values/attr-pseudo-elem-invalidation.html.ini
@@ -0,0 +1,18 @@
+[attr-pseudo-elem-invalidation.html]
+ [CSS Values and Units Test: attr() invalidation of pseudo elements]
+ expected: FAIL
+
+ [CSS Values and Units Test: attr() invalidation of pseudo elements 1]
+ expected: FAIL
+
+ [CSS Values and Units Test: attr() invalidation of pseudo elements 2]
+ expected: FAIL
+
+ [CSS Values and Units Test: attr() invalidation of pseudo elements 3]
+ expected: FAIL
+
+ [CSS Values and Units Test: attr() invalidation of pseudo elements 4]
+ expected: FAIL
+
+ [CSS Values and Units Test: attr() invalidation of pseudo elements 5]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-values/calc-positive-fraction-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-values/calc-positive-fraction-001.html.ini
new file mode 100644
index 00000000000..a0f0ecd6d11
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-values/calc-positive-fraction-001.html.ini
@@ -0,0 +1,2 @@
+[calc-positive-fraction-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-values/calc-size/animation/calc-size-height-interpolation.html.ini b/tests/wpt/meta-legacy-layout/css/css-values/calc-size/animation/calc-size-height-interpolation.html.ini
new file mode 100644
index 00000000000..82f26f67c1e
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-values/calc-size/animation/calc-size-height-interpolation.html.ini
@@ -0,0 +1,3492 @@
+[calc-size-height-interpolation.html]
+ [CSS Transitions: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.25) should be [125px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.5) should be [150px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.25) should be [125px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.5) should be [150px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.25) should be [125px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.5) should be [150px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.25) should be [125px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.5) should be [150px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from neutral to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from neutral to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from neutral to [calc-size(auto, size * 2)\] at (0.25) should be [125px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from neutral to [calc-size(auto, size * 2)\] at (0.5) should be [150px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from neutral to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from neutral to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from neutral to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from neutral to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from neutral to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from neutral to [calc-size(auto, size * 2)\] at (0.25) should be [125px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from neutral to [calc-size(auto, size * 2)\] at (0.5) should be [150px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from neutral to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from neutral to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from neutral to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from neutral to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from neutral to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from neutral to [calc-size(auto, size * 2)\] at (0.25) should be [125px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from neutral to [calc-size(auto, size * 2)\] at (0.5) should be [150px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from neutral to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from neutral to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from neutral to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from neutral to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from neutral to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from neutral to [calc-size(auto, size * 2)\] at (0.25) should be [125px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from neutral to [calc-size(auto, size * 2)\] at (0.5) should be [150px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from neutral to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from neutral to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from neutral to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (-0.25) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0.25) should be [25px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0.5) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0.75) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (1.25) should be [125px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (-0.25) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0.25) should be [25px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0.5) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0.75) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (1.25) should be [125px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (-0.25) should be [0\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0) should be [0\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0.25) should be [25px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0.5) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0.75) should be [75px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (1.25) should be [125px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (-0.25) should be [0\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0) should be [0\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0.25) should be [25px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0.5) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0.75) should be [75px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (1.25) should be [125px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (-0.25) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.25) should be [25px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.5) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.75) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1.25) should be [125px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (-0.25) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.25) should be [25px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.5) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.75) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1.25) should be [125px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (-0.25) should be [0\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0) should be [0\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.25) should be [25px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.5) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.75) should be [75px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1.25) should be [125px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (-0.25) should be [0\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0) should be [0\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.25) should be [25px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.5) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.75) should be [75px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1.25) should be [125px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [0\] to [calc-size(max-content, size)\] at (-0.25) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [0\] to [calc-size(max-content, size)\] at (0) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [0\] to [calc-size(max-content, size)\] at (0.25) should be [25px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [0\] to [calc-size(max-content, size)\] at (0.5) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [0\] to [calc-size(max-content, size)\] at (0.75) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [0\] to [calc-size(max-content, size)\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [0\] to [calc-size(max-content, size)\] at (1.25) should be [125px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [0\] to [calc-size(max-content, size)\] at (-0.25) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [0\] to [calc-size(max-content, size)\] at (0) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [0\] to [calc-size(max-content, size)\] at (0.25) should be [25px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [0\] to [calc-size(max-content, size)\] at (0.5) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [0\] to [calc-size(max-content, size)\] at (0.75) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [0\] to [calc-size(max-content, size)\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [0\] to [calc-size(max-content, size)\] at (1.25) should be [125px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [0\] to [calc-size(max-content, size)\] at (-0.25) should be [0\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [0\] to [calc-size(max-content, size)\] at (0) should be [0\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [0\] to [calc-size(max-content, size)\] at (0.25) should be [25px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [0\] to [calc-size(max-content, size)\] at (0.5) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [0\] to [calc-size(max-content, size)\] at (0.75) should be [75px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [0\] to [calc-size(max-content, size)\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [0\] to [calc-size(max-content, size)\] at (1.25) should be [125px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [0\] to [calc-size(max-content, size)\] at (-0.25) should be [0\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [0\] to [calc-size(max-content, size)\] at (0) should be [0\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [0\] to [calc-size(max-content, size)\] at (0.25) should be [25px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [0\] to [calc-size(max-content, size)\] at (0.5) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [0\] to [calc-size(max-content, size)\] at (0.75) should be [75px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [0\] to [calc-size(max-content, size)\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [0\] to [calc-size(max-content, size)\] at (1.25) should be [125px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [auto\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [auto\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [auto\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [auto\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [auto\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [auto\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [auto\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [auto\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [auto\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [auto\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [auto\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [auto\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [auto\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [auto\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [auto\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0.75) should be [162.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1.25) should be [237.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0.75) should be [162.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1.25) should be [237.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0.75) should be [162.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1.25) should be [237.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0.75) should be [162.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1.25) should be [237.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [auto\] to [calc-size(50px, size)\] at (-0.3) should be [auto\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [auto\] to [calc-size(50px, size)\] at (0) should be [auto\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [auto\] to [calc-size(50px, size)\] at (0.3) should be [auto\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [auto\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [auto\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [auto\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [auto\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [auto\] to [calc-size(50px, size)\] at (-0.3) should be [auto\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [auto\] to [calc-size(50px, size)\] at (0) should be [auto\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [auto\] to [calc-size(50px, size)\] at (0.3) should be [auto\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [auto\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [auto\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [auto\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [auto\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [auto\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [auto\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [auto\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [auto\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [auto\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [auto\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [auto\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [auto\] to [calc-size(50px, size)\] at (-0.3) should be [auto\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [auto\] to [calc-size(50px, size)\] at (0) should be [auto\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [auto\] to [calc-size(50px, size)\] at (0.3) should be [auto\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [auto\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [auto\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [auto\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [auto\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [auto\] to [calc-size(50px, size)\] at (-0.3) should be [auto\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [auto\] to [calc-size(50px, size)\] at (0) should be [auto\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [auto\] to [calc-size(50px, size)\] at (0.3) should be [auto\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [auto\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [auto\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [auto\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [auto\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [min-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [min-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [min-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [min-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [min-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [min-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [min-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [min-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [min-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [min-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [min-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [min-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [min-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [min-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [min-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0.75) should be [162.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1.25) should be [237.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0.75) should be [162.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1.25) should be [237.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0.75) should be [162.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1.25) should be [237.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0.75) should be [162.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1.25) should be [237.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [min-content\] to [calc-size(50px, size)\] at (-0.3) should be [min-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [min-content\] to [calc-size(50px, size)\] at (0) should be [min-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.3) should be [min-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [min-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [min-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [min-content\] to [calc-size(50px, size)\] at (-0.3) should be [min-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [min-content\] to [calc-size(50px, size)\] at (0) should be [min-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.3) should be [min-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [min-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [min-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [min-content\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [min-content\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [min-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [min-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [min-content\] to [calc-size(50px, size)\] at (-0.3) should be [min-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [min-content\] to [calc-size(50px, size)\] at (0) should be [min-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.3) should be [min-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [min-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [min-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [min-content\] to [calc-size(50px, size)\] at (-0.3) should be [min-content\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [min-content\] to [calc-size(50px, size)\] at (0) should be [min-content\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.3) should be [min-content\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [min-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [min-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [162.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [237.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [162.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [237.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [162.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [237.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [162.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [237.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [fit-content\] to [calc-size(50px, size)\] at (-0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [fit-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [fit-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [fit-content\] to [calc-size(50px, size)\] at (-0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [fit-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [fit-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [fit-content\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [fit-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [fit-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [fit-content\] to [calc-size(50px, size)\] at (-0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [fit-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [fit-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [fit-content\] to [calc-size(50px, size)\] at (-0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0) should be [fit-content\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [fit-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [fit-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [max-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [max-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [max-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [max-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [max-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [max-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [max-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [max-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [max-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [max-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [max-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [max-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [max-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [max-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [max-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0.75) should be [162.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1.25) should be [237.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0.75) should be [162.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1.25) should be [237.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0.75) should be [162.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1.25) should be [237.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0.75) should be [162.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1.25) should be [237.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [max-content\] to [calc-size(50px, size)\] at (-0.3) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [max-content\] to [calc-size(50px, size)\] at (0) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.3) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [max-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [max-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [max-content\] to [calc-size(50px, size)\] at (-0.3) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [max-content\] to [calc-size(50px, size)\] at (0) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.3) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [max-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [max-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [max-content\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [max-content\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [max-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [max-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [max-content\] to [calc-size(50px, size)\] at (-0.3) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [max-content\] to [calc-size(50px, size)\] at (0) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.3) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [max-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [max-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [max-content\] to [calc-size(50px, size)\] at (-0.3) should be [max-content\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [max-content\] to [calc-size(50px, size)\] at (0) should be [max-content\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.3) should be [max-content\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [max-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [max-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (-0.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (0) should be [300px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (0.75) should be [525px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (1) should be [600px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (1.25) should be [675px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (-0.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (0) should be [300px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (0.75) should be [525px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (1) should be [600px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (1.25) should be [675px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (-0.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (0) should be [300px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (0.75) should be [525px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (1) should be [600px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (1.25) should be [675px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (-0.25) should be [225px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (0) should be [300px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (0.75) should be [525px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (1) should be [600px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (1.25) should be [675px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [stretch\] to [calc-size(any, 50px)\] at (-0.25) should be [362.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [stretch\] to [calc-size(any, 50px)\] at (0) should be [300px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [stretch\] to [calc-size(any, 50px)\] at (0.75) should be [112.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [stretch\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [stretch\] to [calc-size(any, 50px)\] at (1.25) should be [-12.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(any, 50px)\] at (-0.25) should be [362.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(any, 50px)\] at (0) should be [300px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(any, 50px)\] at (0.75) should be [112.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(any, 50px)\] at (1.25) should be [-12.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [stretch\] to [calc-size(any, 50px)\] at (-0.25) should be [362.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [stretch\] to [calc-size(any, 50px)\] at (0) should be [300px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [stretch\] to [calc-size(any, 50px)\] at (0.75) should be [112.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [stretch\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [stretch\] to [calc-size(any, 50px)\] at (1.25) should be [-12.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [stretch\] to [calc-size(any, 50px)\] at (-0.25) should be [362.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [stretch\] to [calc-size(any, 50px)\] at (0) should be [300px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [stretch\] to [calc-size(any, 50px)\] at (0.75) should be [112.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [stretch\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [stretch\] to [calc-size(any, 50px)\] at (1.25) should be [-12.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (-0.1) should be [-4.999999999999993px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0.75) should be [462.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1) should be [600px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1.25) should be [737.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (-0.1) should be [-4.999999999999993px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0.75) should be [462.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1) should be [600px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1.25) should be [737.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (-0.1) should be [-4.999999999999993px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0.75) should be [462.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1) should be [600px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1.25) should be [737.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (-0.1) should be [-4.999999999999993px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0.75) should be [462.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1) should be [600px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1.25) should be [737.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [stretch\] to [calc-size(50px, size)\] at (-0.3) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [stretch\] to [calc-size(50px, size)\] at (0) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.3) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [stretch\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [stretch\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [stretch\] to [calc-size(50px, size)\] at (-0.3) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [stretch\] to [calc-size(50px, size)\] at (0) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.3) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [stretch\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [stretch\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [stretch\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [stretch\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [stretch\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [stretch\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [stretch\] to [calc-size(50px, size)\] at (-0.3) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [stretch\] to [calc-size(50px, size)\] at (0) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.3) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [stretch\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [stretch\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [stretch\] to [calc-size(50px, size)\] at (-0.3) should be [stretch\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [stretch\] to [calc-size(50px, size)\] at (0) should be [stretch\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.3) should be [stretch\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [stretch\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [stretch\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [auto\] to [calc-size(fit-content, size)\] at (-0.3) should be [auto\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0) should be [auto\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.3) should be [auto\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.5) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.6) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [auto\] to [calc-size(fit-content, size)\] at (1) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [auto\] to [calc-size(fit-content, size)\] at (1.5) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [auto\] to [calc-size(fit-content, size)\] at (-0.3) should be [auto\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0) should be [auto\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.3) should be [auto\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.5) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.6) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [auto\] to [calc-size(fit-content, size)\] at (1) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [auto\] to [calc-size(fit-content, size)\] at (1.5) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [auto\] to [calc-size(fit-content, size)\] at (-0.3) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.3) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.5) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.6) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [auto\] to [calc-size(fit-content, size)\] at (1) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [auto\] to [calc-size(fit-content, size)\] at (1.5) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(fit-content, size)\] at (-0.3) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.3) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.5) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.6) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(fit-content, size)\] at (1) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(fit-content, size)\] at (1.5) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [auto\] to [calc-size(fit-content, size)\] at (-0.3) should be [auto\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0) should be [auto\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.3) should be [auto\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.5) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.6) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [auto\] to [calc-size(fit-content, size)\] at (1) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [auto\] to [calc-size(fit-content, size)\] at (1.5) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [auto\] to [calc-size(fit-content, size)\] at (-0.3) should be [auto\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0) should be [auto\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.3) should be [auto\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.5) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.6) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [auto\] to [calc-size(fit-content, size)\] at (1) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [auto\] to [calc-size(fit-content, size)\] at (1.5) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (-0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.5) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.6) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (1) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (1.5) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (-0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.5) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.6) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (1) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (1.5) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (-0.3) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.3) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.5) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.6) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (1) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (1.5) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (-0.3) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.3) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.5) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.6) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (1) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (1.5) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (-0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.5) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.6) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (1) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (1.5) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (-0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0) should be [fit-content\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.5) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.6) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (1) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (1.5) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [stretch\] to [calc-size(auto, size)\] at (-0.3) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [stretch\] to [calc-size(auto, size)\] at (0) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.3) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.5) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.6) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [stretch\] to [calc-size(auto, size)\] at (1) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [stretch\] to [calc-size(auto, size)\] at (1.5) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [stretch\] to [calc-size(auto, size)\] at (-0.3) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [stretch\] to [calc-size(auto, size)\] at (0) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.3) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.5) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.6) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [stretch\] to [calc-size(auto, size)\] at (1) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [stretch\] to [calc-size(auto, size)\] at (1.5) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [stretch\] to [calc-size(auto, size)\] at (-0.3) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [stretch\] to [calc-size(auto, size)\] at (0) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.3) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.5) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.6) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [stretch\] to [calc-size(auto, size)\] at (1) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [stretch\] to [calc-size(auto, size)\] at (1.5) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(auto, size)\] at (-0.3) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(auto, size)\] at (0) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.3) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.5) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.6) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(auto, size)\] at (1) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(auto, size)\] at (1.5) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [stretch\] to [calc-size(auto, size)\] at (-0.3) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [stretch\] to [calc-size(auto, size)\] at (0) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.3) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.5) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.6) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [stretch\] to [calc-size(auto, size)\] at (1) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [stretch\] to [calc-size(auto, size)\] at (1.5) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [stretch\] to [calc-size(auto, size)\] at (-0.3) should be [stretch\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [stretch\] to [calc-size(auto, size)\] at (0) should be [stretch\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.3) should be [stretch\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.5) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.6) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [stretch\] to [calc-size(auto, size)\] at (1) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [stretch\] to [calc-size(auto, size)\] at (1.5) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [max-content\] to [calc-size(stretch, size)\] at (-0.3) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.3) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.5) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.6) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [max-content\] to [calc-size(stretch, size)\] at (1) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [max-content\] to [calc-size(stretch, size)\] at (1.5) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [max-content\] to [calc-size(stretch, size)\] at (-0.3) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.3) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.5) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.6) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [max-content\] to [calc-size(stretch, size)\] at (1) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [max-content\] to [calc-size(stretch, size)\] at (1.5) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [max-content\] to [calc-size(stretch, size)\] at (-0.3) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.3) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.5) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.6) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [max-content\] to [calc-size(stretch, size)\] at (1) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [max-content\] to [calc-size(stretch, size)\] at (1.5) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(stretch, size)\] at (-0.3) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.3) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.5) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.6) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(stretch, size)\] at (1) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(stretch, size)\] at (1.5) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [max-content\] to [calc-size(stretch, size)\] at (-0.3) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.3) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.5) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.6) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [max-content\] to [calc-size(stretch, size)\] at (1) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [max-content\] to [calc-size(stretch, size)\] at (1.5) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [max-content\] to [calc-size(stretch, size)\] at (-0.3) should be [max-content\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0) should be [max-content\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.3) should be [max-content\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.5) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.6) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [max-content\] to [calc-size(stretch, size)\] at (1) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [max-content\] to [calc-size(stretch, size)\] at (1.5) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (-0.25) should be [10px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0.75) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1) should be [60px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1.25) should be [70px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (-0.25) should be [10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0.75) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1) should be [60px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1.25) should be [70px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (-0.25) should be [10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0.75) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1) should be [60px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1.25) should be [70px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (-0.25) should be [10px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0.75) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1) should be [60px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1.25) should be [70px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (-0.25) should be [175px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0) should be [150px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.75) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1.25) should be [25px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (-0.25) should be [175px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0) should be [150px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.75) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1.25) should be [25px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (-0.25) should be [175px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0) should be [150px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.75) should be [75px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1.25) should be [25px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (-0.25) should be [175px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0) should be [150px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.75) should be [75px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1.25) should be [25px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (-0.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (0.75) should be [125px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (1.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (-0.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (0.75) should be [125px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (1.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (-0.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (0.75) should be [125px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (1.25) should be [75px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (-0.25) should be [225px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (0.75) should be [125px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (1.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(auto, size)\] to [50%\] at (-0.25) should be [87.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(auto, size)\] to [50%\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(auto, size)\] to [50%\] at (0.75) should be [137.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(auto, size)\] to [50%\] at (1) should be [150px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(auto, size)\] to [50%\] at (1.25) should be [162.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [50%\] at (-0.25) should be [87.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [50%\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [50%\] at (0.75) should be [137.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [50%\] at (1) should be [150px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [50%\] at (1.25) should be [162.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(auto, size)\] to [50%\] at (-0.25) should be [87.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(auto, size)\] to [50%\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(auto, size)\] to [50%\] at (0.75) should be [137.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(auto, size)\] to [50%\] at (1) should be [150px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(auto, size)\] to [50%\] at (1.25) should be [162.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(auto, size)\] to [50%\] at (-0.25) should be [87.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(auto, size)\] to [50%\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(auto, size)\] to [50%\] at (0.75) should be [137.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(auto, size)\] to [50%\] at (1) should be [150px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(auto, size)\] to [50%\] at (1.25) should be [162.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (-0.25) should be [250px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (0.75) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (1) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (1.25) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (-0.25) should be [250px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (0.75) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (1) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (1.25) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (-0.25) should be [250px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (0.75) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (1) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (1.25) should be [0px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (-0.25) should be [250px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (0.75) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (1) should be [0px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (1.25) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (-0.3) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.3) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.5) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.6) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (1) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (1.5) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (-0.3) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.3) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.5) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.6) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (1) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (1.5) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (-0.3) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.3) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.5) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.6) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (1) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (1.5) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (-0.3) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.3) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.5) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.6) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (1) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (1.5) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (-0.3) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.3) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.5) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.6) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (1) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (1.5) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (-0.3) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.3) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.5) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.6) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (1) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (1.5) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (-0.3) should be [calc-size(calc-size(auto, size / 2), size * 2)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0) should be [calc-size(calc-size(auto, size / 2), size * 2)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.3) should be [calc-size(calc-size(auto, size / 2), size * 2)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.5) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.6) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1.5) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (-0.3) should be [calc-size(calc-size(auto, size / 2), size * 2)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0) should be [calc-size(calc-size(auto, size / 2), size * 2)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.3) should be [calc-size(calc-size(auto, size / 2), size * 2)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.5) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.6) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1.5) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (-0.3) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.3) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.5) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.6) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1.5) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (-0.3) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.3) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.5) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.6) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1.5) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (-0.3) should be [calc-size(calc-size(auto, size / 2), size * 2)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0) should be [calc-size(calc-size(auto, size / 2), size * 2)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.3) should be [calc-size(calc-size(auto, size / 2), size * 2)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.5) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.6) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1.5) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (-0.3) should be [calc-size(calc-size(auto, size / 2), size * 2)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0) should be [calc-size(calc-size(auto, size / 2), size * 2)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.3) should be [calc-size(calc-size(auto, size / 2), size * 2)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.5) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.6) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1.5) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (-0.25) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (0.75) should be [250px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (1) should be [300px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (1.25) should be [350px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (-0.25) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (0.75) should be [250px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (1) should be [300px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (1.25) should be [350px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (-0.25) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (0.75) should be [250px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (1) should be [300px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (1.25) should be [350px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (-0.25) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (0.75) should be [250px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (1) should be [300px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (1.25) should be [350px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (-0.125) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (0.75) should be [400px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (1) should be [500px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (1.25) should be [600px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (-0.125) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (0.75) should be [400px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (1) should be [500px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (1.25) should be [600px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (-0.125) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (0.75) should be [400px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (1) should be [500px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (1.25) should be [600px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (-0.125) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (0.75) should be [400px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (1) should be [500px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (1.25) should be [600px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (-0.25) should be [87.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.75) should be [137.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1) should be [150px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1.25) should be [162.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (-0.25) should be [87.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.75) should be [137.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1) should be [150px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1.25) should be [162.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (-0.25) should be [87.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.75) should be [137.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1) should be [150px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1.25) should be [162.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (-0.25) should be [87.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.75) should be [137.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1) should be [150px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1.25) should be [162.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (-0.25) should be [425px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (0) should be [400px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (0.75) should be [325px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (1) should be [300px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (1.25) should be [275px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (-0.25) should be [425px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (0) should be [400px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (0.75) should be [325px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (1) should be [300px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (1.25) should be [275px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (-0.25) should be [425px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (0) should be [400px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (0.75) should be [325px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (1) should be [300px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (1.25) should be [275px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (-0.25) should be [425px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (0) should be [400px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (0.75) should be [325px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (1) should be [300px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (1.25) should be [275px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (-0.3) should be [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0) should be [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.3) should be [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.5) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.6) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (1) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (1.5) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (-0.3) should be [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0) should be [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.3) should be [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.5) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.6) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (1) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (1.5) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (-0.3) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.3) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.5) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.6) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (1) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (1.5) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (-0.3) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.3) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.5) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.6) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (1) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (1.5) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (-0.3) should be [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0) should be [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.3) should be [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.5) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.6) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (1) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (1.5) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (-0.3) should be [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0) should be [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.3) should be [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.5) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.6) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (1) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (1.5) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-values/calc-size/animation/calc-size-height-interpolation.tentative.html.ini b/tests/wpt/meta-legacy-layout/css/css-values/calc-size/animation/calc-size-height-interpolation.tentative.html.ini
deleted file mode 100644
index 8f11b5285e0..00000000000
--- a/tests/wpt/meta-legacy-layout/css/css-values/calc-size/animation/calc-size-height-interpolation.tentative.html.ini
+++ /dev/null
@@ -1,3744 +0,0 @@
-[calc-size-height-interpolation.tentative.html]
- [CSS Transitions: property <height> from neutral to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from neutral to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from neutral to [calc-size(auto, size * 2)\] at (0.25) should be [125px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from neutral to [calc-size(auto, size * 2)\] at (0.5) should be [150px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from neutral to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from neutral to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from neutral to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from neutral to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from neutral to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from neutral to [calc-size(auto, size * 2)\] at (0.25) should be [125px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from neutral to [calc-size(auto, size * 2)\] at (0.5) should be [150px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from neutral to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from neutral to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from neutral to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from neutral to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from neutral to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from neutral to [calc-size(auto, size * 2)\] at (0.25) should be [125px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from neutral to [calc-size(auto, size * 2)\] at (0.5) should be [150px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from neutral to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from neutral to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from neutral to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [Web Animations: property <height> from neutral to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [Web Animations: property <height> from neutral to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [Web Animations: property <height> from neutral to [calc-size(auto, size * 2)\] at (0.25) should be [125px\]]
- expected: FAIL
-
- [Web Animations: property <height> from neutral to [calc-size(auto, size * 2)\] at (0.5) should be [150px\]]
- expected: FAIL
-
- [Web Animations: property <height> from neutral to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [Web Animations: property <height> from neutral to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [Web Animations: property <height> from neutral to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (-0.25) should be [0\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0) should be [0\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0.25) should be [25px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0.5) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0.75) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (1) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (1.25) should be [125px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (-0.25) should be [0\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0) should be [0\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0.25) should be [25px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0.5) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0.75) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (1) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (1.25) should be [125px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (-0.25) should be [0\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0) should be [0\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0.25) should be [25px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0.5) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0.75) should be [75px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (1) should be [100px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (1.25) should be [125px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (-0.25) should be [0\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0) should be [0\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0.25) should be [25px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0.5) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0.75) should be [75px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (1) should be [100px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (1.25) should be [125px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (-0.25) should be [0\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0) should be [0\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.25) should be [25px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.5) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.75) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1.25) should be [125px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (-0.25) should be [0\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0) should be [0\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.25) should be [25px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.5) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.75) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1.25) should be [125px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (-0.25) should be [0\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0) should be [0\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.25) should be [25px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.5) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.75) should be [75px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1) should be [100px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1.25) should be [125px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (-0.25) should be [0\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0) should be [0\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.25) should be [25px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.5) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.75) should be [75px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1) should be [100px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1.25) should be [125px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [0\] to [calc-size(max-content, size)\] at (-0.25) should be [0\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [0\] to [calc-size(max-content, size)\] at (0) should be [0\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [0\] to [calc-size(max-content, size)\] at (0.25) should be [25px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [0\] to [calc-size(max-content, size)\] at (0.5) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [0\] to [calc-size(max-content, size)\] at (0.75) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [0\] to [calc-size(max-content, size)\] at (1) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [0\] to [calc-size(max-content, size)\] at (1.25) should be [125px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [0\] to [calc-size(max-content, size)\] at (-0.25) should be [0\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [0\] to [calc-size(max-content, size)\] at (0) should be [0\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [0\] to [calc-size(max-content, size)\] at (0.25) should be [25px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [0\] to [calc-size(max-content, size)\] at (0.5) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [0\] to [calc-size(max-content, size)\] at (0.75) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [0\] to [calc-size(max-content, size)\] at (1) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [0\] to [calc-size(max-content, size)\] at (1.25) should be [125px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [0\] to [calc-size(max-content, size)\] at (-0.25) should be [0\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [0\] to [calc-size(max-content, size)\] at (0) should be [0\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [0\] to [calc-size(max-content, size)\] at (0.25) should be [25px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [0\] to [calc-size(max-content, size)\] at (0.5) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [0\] to [calc-size(max-content, size)\] at (0.75) should be [75px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [0\] to [calc-size(max-content, size)\] at (1) should be [100px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [0\] to [calc-size(max-content, size)\] at (1.25) should be [125px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [0\] to [calc-size(max-content, size)\] at (-0.25) should be [0\]]
- expected: FAIL
-
- [Web Animations: property <height> from [0\] to [calc-size(max-content, size)\] at (0) should be [0\]]
- expected: FAIL
-
- [Web Animations: property <height> from [0\] to [calc-size(max-content, size)\] at (0.25) should be [25px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [0\] to [calc-size(max-content, size)\] at (0.5) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [0\] to [calc-size(max-content, size)\] at (0.75) should be [75px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [0\] to [calc-size(max-content, size)\] at (1) should be [100px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [0\] to [calc-size(max-content, size)\] at (1.25) should be [125px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.25) should be [125px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.5) should be [150px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.25) should be [125px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.5) should be [150px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.25) should be [125px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.5) should be [150px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.25) should be [125px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.5) should be [150px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [auto\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [auto\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [auto\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [auto\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [auto\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [auto\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [auto\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [auto\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [auto\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [auto\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [auto\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [auto\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [auto\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [auto\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [auto\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0.75) should be [162.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1.25) should be [237.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0.75) should be [162.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1.25) should be [237.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0.75) should be [162.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1.25) should be [237.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0.75) should be [162.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1.25) should be [237.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [auto\] to [calc-size(50px, size)\] at (-0.3) should be [auto\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [auto\] to [calc-size(50px, size)\] at (0) should be [auto\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [auto\] to [calc-size(50px, size)\] at (0.3) should be [auto\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [auto\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [auto\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [auto\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [auto\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [auto\] to [calc-size(50px, size)\] at (-0.3) should be [auto\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [auto\] to [calc-size(50px, size)\] at (0) should be [auto\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [auto\] to [calc-size(50px, size)\] at (0.3) should be [auto\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [auto\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [auto\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [auto\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [auto\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [auto\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [auto\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [auto\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [auto\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [auto\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [auto\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [auto\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [auto\] to [calc-size(50px, size)\] at (-0.3) should be [auto\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [auto\] to [calc-size(50px, size)\] at (0) should be [auto\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [auto\] to [calc-size(50px, size)\] at (0.3) should be [auto\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [auto\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [auto\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [auto\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [auto\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [auto\] to [calc-size(50px, size)\] at (-0.3) should be [auto\]]
- expected: FAIL
-
- [Web Animations: property <height> from [auto\] to [calc-size(50px, size)\] at (0) should be [auto\]]
- expected: FAIL
-
- [Web Animations: property <height> from [auto\] to [calc-size(50px, size)\] at (0.3) should be [auto\]]
- expected: FAIL
-
- [Web Animations: property <height> from [auto\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [auto\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [auto\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [auto\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [min-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [min-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [min-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [min-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [min-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [min-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [min-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [min-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [min-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [min-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [min-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [min-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [min-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [min-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [min-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0.75) should be [162.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1.25) should be [237.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0.75) should be [162.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1.25) should be [237.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0.75) should be [162.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1.25) should be [237.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0.75) should be [162.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1.25) should be [237.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [min-content\] to [calc-size(50px, size)\] at (-0.3) should be [min-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [min-content\] to [calc-size(50px, size)\] at (0) should be [min-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.3) should be [min-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [min-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [min-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [min-content\] to [calc-size(50px, size)\] at (-0.3) should be [min-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [min-content\] to [calc-size(50px, size)\] at (0) should be [min-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.3) should be [min-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [min-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [min-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [min-content\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [min-content\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [min-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [min-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [min-content\] to [calc-size(50px, size)\] at (-0.3) should be [min-content\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [min-content\] to [calc-size(50px, size)\] at (0) should be [min-content\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.3) should be [min-content\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [min-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [min-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [min-content\] to [calc-size(50px, size)\] at (-0.3) should be [min-content\]]
- expected: FAIL
-
- [Web Animations: property <height> from [min-content\] to [calc-size(50px, size)\] at (0) should be [min-content\]]
- expected: FAIL
-
- [Web Animations: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.3) should be [min-content\]]
- expected: FAIL
-
- [Web Animations: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [min-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [min-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [162.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [237.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [162.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [237.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [162.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [237.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [162.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [237.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [fit-content\] to [calc-size(50px, size)\] at (-0.3) should be [fit-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0) should be [fit-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.3) should be [fit-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [fit-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [fit-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [fit-content\] to [calc-size(50px, size)\] at (-0.3) should be [fit-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0) should be [fit-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.3) should be [fit-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [fit-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [fit-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [fit-content\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [fit-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [fit-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [fit-content\] to [calc-size(50px, size)\] at (-0.3) should be [fit-content\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0) should be [fit-content\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.3) should be [fit-content\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [fit-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [fit-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [fit-content\] to [calc-size(50px, size)\] at (-0.3) should be [fit-content\]]
- expected: FAIL
-
- [Web Animations: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0) should be [fit-content\]]
- expected: FAIL
-
- [Web Animations: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.3) should be [fit-content\]]
- expected: FAIL
-
- [Web Animations: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [fit-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [fit-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [max-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [max-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [max-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [max-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [max-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [max-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [max-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [max-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [max-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [max-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [max-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [max-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [max-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [max-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [max-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0.75) should be [162.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1.25) should be [237.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0.75) should be [162.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1.25) should be [237.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0.75) should be [162.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1.25) should be [237.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0.75) should be [162.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1.25) should be [237.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [max-content\] to [calc-size(50px, size)\] at (-0.3) should be [max-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [max-content\] to [calc-size(50px, size)\] at (0) should be [max-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.3) should be [max-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [max-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [max-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [max-content\] to [calc-size(50px, size)\] at (-0.3) should be [max-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [max-content\] to [calc-size(50px, size)\] at (0) should be [max-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.3) should be [max-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [max-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [max-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [max-content\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [max-content\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [max-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [max-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [max-content\] to [calc-size(50px, size)\] at (-0.3) should be [max-content\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [max-content\] to [calc-size(50px, size)\] at (0) should be [max-content\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.3) should be [max-content\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [max-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [max-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [max-content\] to [calc-size(50px, size)\] at (-0.3) should be [max-content\]]
- expected: FAIL
-
- [Web Animations: property <height> from [max-content\] to [calc-size(50px, size)\] at (0) should be [max-content\]]
- expected: FAIL
-
- [Web Animations: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.3) should be [max-content\]]
- expected: FAIL
-
- [Web Animations: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [max-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [max-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (-0.25) should be [225px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (0) should be [300px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (0.75) should be [525px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (1) should be [600px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (1.25) should be [675px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (-0.25) should be [225px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (0) should be [300px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (0.75) should be [525px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (1) should be [600px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (1.25) should be [675px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (-0.25) should be [225px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (0) should be [300px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (0.75) should be [525px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (1) should be [600px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (1.25) should be [675px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (-0.25) should be [225px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (0) should be [300px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (0.75) should be [525px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (1) should be [600px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (1.25) should be [675px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [stretch\] to [calc-size(any, 50px)\] at (-0.25) should be [362.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [stretch\] to [calc-size(any, 50px)\] at (0) should be [300px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [stretch\] to [calc-size(any, 50px)\] at (0.75) should be [112.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [stretch\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [stretch\] to [calc-size(any, 50px)\] at (1.25) should be [-12.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(any, 50px)\] at (-0.25) should be [362.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(any, 50px)\] at (0) should be [300px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(any, 50px)\] at (0.75) should be [112.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(any, 50px)\] at (1.25) should be [-12.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [stretch\] to [calc-size(any, 50px)\] at (-0.25) should be [362.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [stretch\] to [calc-size(any, 50px)\] at (0) should be [300px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [stretch\] to [calc-size(any, 50px)\] at (0.75) should be [112.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [stretch\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [stretch\] to [calc-size(any, 50px)\] at (1.25) should be [-12.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [stretch\] to [calc-size(any, 50px)\] at (-0.25) should be [362.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [stretch\] to [calc-size(any, 50px)\] at (0) should be [300px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [stretch\] to [calc-size(any, 50px)\] at (0.75) should be [112.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [stretch\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [stretch\] to [calc-size(any, 50px)\] at (1.25) should be [-12.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (-0.1) should be [-4.999999999999993px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0.75) should be [462.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1) should be [600px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1.25) should be [737.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (-0.1) should be [-4.999999999999993px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0.75) should be [462.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1) should be [600px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1.25) should be [737.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (-0.1) should be [-4.999999999999993px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0.75) should be [462.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1) should be [600px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1.25) should be [737.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (-0.1) should be [-4.999999999999993px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0.75) should be [462.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1) should be [600px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1.25) should be [737.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [stretch\] to [calc-size(50px, size)\] at (-0.3) should be [stretch\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [stretch\] to [calc-size(50px, size)\] at (0) should be [stretch\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.3) should be [stretch\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [stretch\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [stretch\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [stretch\] to [calc-size(50px, size)\] at (-0.3) should be [stretch\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [stretch\] to [calc-size(50px, size)\] at (0) should be [stretch\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.3) should be [stretch\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [stretch\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [stretch\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [stretch\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [stretch\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [stretch\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [stretch\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [stretch\] to [calc-size(50px, size)\] at (-0.3) should be [stretch\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [stretch\] to [calc-size(50px, size)\] at (0) should be [stretch\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.3) should be [stretch\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [stretch\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [stretch\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [stretch\] to [calc-size(50px, size)\] at (-0.3) should be [stretch\]]
- expected: FAIL
-
- [Web Animations: property <height> from [stretch\] to [calc-size(50px, size)\] at (0) should be [stretch\]]
- expected: FAIL
-
- [Web Animations: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.3) should be [stretch\]]
- expected: FAIL
-
- [Web Animations: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [stretch\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [stretch\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [auto\] to [calc-size(fit-content, size)\] at (-0.3) should be [auto\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0) should be [auto\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.3) should be [auto\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.5) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.6) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [auto\] to [calc-size(fit-content, size)\] at (1) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [auto\] to [calc-size(fit-content, size)\] at (1.5) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [auto\] to [calc-size(fit-content, size)\] at (-0.3) should be [auto\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0) should be [auto\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.3) should be [auto\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.5) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.6) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [auto\] to [calc-size(fit-content, size)\] at (1) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [auto\] to [calc-size(fit-content, size)\] at (1.5) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [auto\] to [calc-size(fit-content, size)\] at (-0.3) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.3) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.5) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.6) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [auto\] to [calc-size(fit-content, size)\] at (1) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [auto\] to [calc-size(fit-content, size)\] at (1.5) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(fit-content, size)\] at (-0.3) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.3) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.5) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.6) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(fit-content, size)\] at (1) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(fit-content, size)\] at (1.5) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [auto\] to [calc-size(fit-content, size)\] at (-0.3) should be [auto\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0) should be [auto\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.3) should be [auto\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.5) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.6) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [auto\] to [calc-size(fit-content, size)\] at (1) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [auto\] to [calc-size(fit-content, size)\] at (1.5) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [auto\] to [calc-size(fit-content, size)\] at (-0.3) should be [auto\]]
- expected: FAIL
-
- [Web Animations: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0) should be [auto\]]
- expected: FAIL
-
- [Web Animations: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.3) should be [auto\]]
- expected: FAIL
-
- [Web Animations: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.5) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.6) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [auto\] to [calc-size(fit-content, size)\] at (1) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [auto\] to [calc-size(fit-content, size)\] at (1.5) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (-0.3) should be [fit-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0) should be [fit-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.3) should be [fit-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.5) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.6) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (1) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (1.5) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (-0.3) should be [fit-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0) should be [fit-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.3) should be [fit-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.5) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.6) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (1) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (1.5) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (-0.3) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.3) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.5) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.6) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (1) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (1.5) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (-0.3) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.3) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.5) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.6) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (1) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (1.5) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (-0.3) should be [fit-content\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0) should be [fit-content\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.3) should be [fit-content\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.5) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.6) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (1) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (1.5) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (-0.3) should be [fit-content\]]
- expected: FAIL
-
- [Web Animations: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0) should be [fit-content\]]
- expected: FAIL
-
- [Web Animations: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.3) should be [fit-content\]]
- expected: FAIL
-
- [Web Animations: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.5) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.6) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (1) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (1.5) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [stretch\] to [calc-size(auto, size)\] at (-0.3) should be [stretch\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [stretch\] to [calc-size(auto, size)\] at (0) should be [stretch\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.3) should be [stretch\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.5) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.6) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [stretch\] to [calc-size(auto, size)\] at (1) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [stretch\] to [calc-size(auto, size)\] at (1.5) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [stretch\] to [calc-size(auto, size)\] at (-0.3) should be [stretch\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [stretch\] to [calc-size(auto, size)\] at (0) should be [stretch\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.3) should be [stretch\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.5) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.6) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [stretch\] to [calc-size(auto, size)\] at (1) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [stretch\] to [calc-size(auto, size)\] at (1.5) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [stretch\] to [calc-size(auto, size)\] at (-0.3) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [stretch\] to [calc-size(auto, size)\] at (0) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.3) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.5) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.6) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [stretch\] to [calc-size(auto, size)\] at (1) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [stretch\] to [calc-size(auto, size)\] at (1.5) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(auto, size)\] at (-0.3) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(auto, size)\] at (0) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.3) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.5) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.6) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(auto, size)\] at (1) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(auto, size)\] at (1.5) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [stretch\] to [calc-size(auto, size)\] at (-0.3) should be [stretch\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [stretch\] to [calc-size(auto, size)\] at (0) should be [stretch\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.3) should be [stretch\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.5) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.6) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [stretch\] to [calc-size(auto, size)\] at (1) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [stretch\] to [calc-size(auto, size)\] at (1.5) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [stretch\] to [calc-size(auto, size)\] at (-0.3) should be [stretch\]]
- expected: FAIL
-
- [Web Animations: property <height> from [stretch\] to [calc-size(auto, size)\] at (0) should be [stretch\]]
- expected: FAIL
-
- [Web Animations: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.3) should be [stretch\]]
- expected: FAIL
-
- [Web Animations: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.5) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.6) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [stretch\] to [calc-size(auto, size)\] at (1) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [stretch\] to [calc-size(auto, size)\] at (1.5) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [max-content\] to [calc-size(stretch, size)\] at (-0.3) should be [max-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0) should be [max-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.3) should be [max-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.5) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.6) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [max-content\] to [calc-size(stretch, size)\] at (1) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [max-content\] to [calc-size(stretch, size)\] at (1.5) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [max-content\] to [calc-size(stretch, size)\] at (-0.3) should be [max-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0) should be [max-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.3) should be [max-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.5) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.6) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [max-content\] to [calc-size(stretch, size)\] at (1) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [max-content\] to [calc-size(stretch, size)\] at (1.5) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [max-content\] to [calc-size(stretch, size)\] at (-0.3) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.3) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.5) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.6) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [max-content\] to [calc-size(stretch, size)\] at (1) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [max-content\] to [calc-size(stretch, size)\] at (1.5) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(stretch, size)\] at (-0.3) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.3) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.5) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.6) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(stretch, size)\] at (1) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(stretch, size)\] at (1.5) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [max-content\] to [calc-size(stretch, size)\] at (-0.3) should be [max-content\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0) should be [max-content\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.3) should be [max-content\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.5) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.6) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [max-content\] to [calc-size(stretch, size)\] at (1) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [max-content\] to [calc-size(stretch, size)\] at (1.5) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [max-content\] to [calc-size(stretch, size)\] at (-0.3) should be [max-content\]]
- expected: FAIL
-
- [Web Animations: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0) should be [max-content\]]
- expected: FAIL
-
- [Web Animations: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.3) should be [max-content\]]
- expected: FAIL
-
- [Web Animations: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.5) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.6) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [max-content\] to [calc-size(stretch, size)\] at (1) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [max-content\] to [calc-size(stretch, size)\] at (1.5) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(20px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0) should be [calc-size(20px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(20px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(20px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0) should be [calc-size(20px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(20px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(20px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0) should be [calc-size(20px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(20px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(20px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0) should be [calc-size(20px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(20px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (-0.25) should be [225px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (0) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (0.75) should be [125px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (1) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (1.25) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (-0.25) should be [225px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (0) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (0.75) should be [125px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (1) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (1.25) should be [75px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (-0.25) should be [225px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (0) should be [200px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (0.75) should be [125px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (1) should be [100px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (1.25) should be [75px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (-0.25) should be [225px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (0) should be [200px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (0.75) should be [125px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (1) should be [100px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (1.25) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(auto, size)\] to [50%\] at (-0.25) should be [87.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(auto, size)\] to [50%\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(auto, size)\] to [50%\] at (0.75) should be [137.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(auto, size)\] to [50%\] at (1) should be [150px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(auto, size)\] to [50%\] at (1.25) should be [162.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [50%\] at (-0.25) should be [87.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [50%\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [50%\] at (0.75) should be [137.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [50%\] at (1) should be [150px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [50%\] at (1.25) should be [162.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(auto, size)\] to [50%\] at (-0.25) should be [87.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(auto, size)\] to [50%\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(auto, size)\] to [50%\] at (0.75) should be [137.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(auto, size)\] to [50%\] at (1) should be [150px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(auto, size)\] to [50%\] at (1.25) should be [162.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(auto, size)\] to [50%\] at (-0.25) should be [87.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(auto, size)\] to [50%\] at (0) should be [100px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(auto, size)\] to [50%\] at (0.75) should be [137.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(auto, size)\] to [50%\] at (1) should be [150px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(auto, size)\] to [50%\] at (1.25) should be [162.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (-0.25) should be [250px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (0) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (0.75) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (1) should be [0px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (1.25) should be [0px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (-0.25) should be [250px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (0) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (0.75) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (1) should be [0px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (1.25) should be [0px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (-0.25) should be [250px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (0) should be [200px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (0.75) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (1) should be [0px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (1.25) should be [0px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (-0.25) should be [250px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (0) should be [200px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (0.75) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (1) should be [0px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (1.25) should be [0px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (-0.25) should be [10px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0.75) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1) should be [60px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1.25) should be [70px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (-0.25) should be [10px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0.75) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1) should be [60px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1.25) should be [70px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (-0.25) should be [10px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0) should be [20px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0.75) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1) should be [60px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1.25) should be [70px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (-0.25) should be [10px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0) should be [20px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0.75) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1) should be [60px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1.25) should be [70px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (-0.25) should be [175px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0) should be [150px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.75) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1.25) should be [25px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (-0.25) should be [175px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0) should be [150px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.75) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1.25) should be [25px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (-0.25) should be [175px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0) should be [150px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.75) should be [75px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1.25) should be [25px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (-0.25) should be [175px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0) should be [150px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.75) should be [75px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1.25) should be [25px\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (-0.3) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.3) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.5) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.6) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (1) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (1.5) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (-0.3) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.3) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.5) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.6) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (1) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (1.5) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (-0.3) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.3) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.5) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.6) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (1) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (1.5) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (-0.3) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.3) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.5) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.6) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (1) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (1.5) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (-0.3) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.3) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.5) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.6) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (1) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (1.5) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (-0.3) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.3) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.5) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.6) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (1) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (1.5) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (-0.3) should be [calc-size(calc-size(auto, size / 2), size * 2)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0) should be [calc-size(calc-size(auto, size / 2), size * 2)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.3) should be [calc-size(calc-size(auto, size / 2), size * 2)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.5) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.6) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1.5) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (-0.3) should be [calc-size(calc-size(auto, size / 2), size * 2)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0) should be [calc-size(calc-size(auto, size / 2), size * 2)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.3) should be [calc-size(calc-size(auto, size / 2), size * 2)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.5) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.6) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1.5) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (-0.3) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.3) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.5) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.6) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1.5) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (-0.3) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.3) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.5) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.6) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1.5) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (-0.3) should be [calc-size(calc-size(auto, size / 2), size * 2)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0) should be [calc-size(calc-size(auto, size / 2), size * 2)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.3) should be [calc-size(calc-size(auto, size / 2), size * 2)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.5) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.6) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1.5) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (-0.3) should be [calc-size(calc-size(auto, size / 2), size * 2)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0) should be [calc-size(calc-size(auto, size / 2), size * 2)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.3) should be [calc-size(calc-size(auto, size / 2), size * 2)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.5) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.6) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1.5) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (-0.25) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (0.75) should be [250px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (1) should be [300px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (1.25) should be [350px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (-0.25) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (0.75) should be [250px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (1) should be [300px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (1.25) should be [350px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (-0.25) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (0.75) should be [250px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (1) should be [300px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (1.25) should be [350px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (-0.25) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (0.75) should be [250px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (1) should be [300px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (1.25) should be [350px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (-0.125) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (0.75) should be [400px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (1) should be [500px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (1.25) should be [600px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (-0.125) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (0.75) should be [400px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (1) should be [500px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (1.25) should be [600px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (-0.125) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (0.75) should be [400px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (1) should be [500px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (1.25) should be [600px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (-0.125) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (0) should be [100px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (0.75) should be [400px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (1) should be [500px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (1.25) should be [600px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (-0.25) should be [87.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.75) should be [137.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1) should be [150px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1.25) should be [162.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (-0.25) should be [87.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.75) should be [137.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1) should be [150px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1.25) should be [162.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (-0.25) should be [87.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.75) should be [137.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1) should be [150px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1.25) should be [162.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (-0.25) should be [87.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0) should be [100px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.75) should be [137.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1) should be [150px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1.25) should be [162.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (-0.25) should be [425px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (0) should be [400px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (0.75) should be [325px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (1) should be [300px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (1.25) should be [275px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (-0.25) should be [425px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (0) should be [400px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (0.75) should be [325px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (1) should be [300px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (1.25) should be [275px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (-0.25) should be [425px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (0) should be [400px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (0.75) should be [325px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (1) should be [300px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (1.25) should be [275px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (-0.25) should be [425px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (0) should be [400px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (0.75) should be [325px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (1) should be [300px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (1.25) should be [275px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (0) should be [100px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (1) should be [200px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (-0.3) should be [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0) should be [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.3) should be [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.5) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.6) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (1) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (1.5) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (-0.3) should be [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0) should be [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.3) should be [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.5) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.6) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (1) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (1.5) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (-0.3) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.3) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.5) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.6) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (1) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (1.5) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (-0.3) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.3) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.5) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.6) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (1) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (1.5) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (-0.3) should be [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0) should be [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.3) should be [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.5) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.6) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (1) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (1.5) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (-0.3) should be [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0) should be [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.3) should be [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.5) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.6) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (1) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (1.5) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-values/calc-size/animation/calc-size-interpolation-expansion.html.ini b/tests/wpt/meta-legacy-layout/css/css-values/calc-size/animation/calc-size-interpolation-expansion.html.ini
new file mode 100644
index 00000000000..eac708dbfbc
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-values/calc-size/animation/calc-size-interpolation-expansion.html.ini
@@ -0,0 +1,21 @@
+[calc-size-interpolation-expansion.html]
+ [value at progress 0.75 in animation of "height" from "auto" to "calc-size(0px)"]
+ expected: FAIL
+
+ [value at progress 0.75 in animation of "height" from "0px" to "calc-size(calc-size(min-content, size + 20px), size * 2)"]
+ expected: FAIL
+
+ [value at progress 0.75 in animation of "height" from "calc-size(min-content, size * 4)" to "calc-size(calc-size(min-content, size + 20px), size * 2)"]
+ expected: FAIL
+
+ [value at progress 0.75 in animation of "width" from "calc-size(fit-content, 20px)" to "calc-size(calc-size(fit-content, 40px), size)"]
+ expected: FAIL
+
+ [value at progress 0.75 in animation of "width" from "calc-size(any, 20px)" to "calc-size(calc-size(fit-content, 40px), size)"]
+ expected: FAIL
+
+ [value at progress 0.75 in animation of "width" from "calc-size(calc-size(any, 30px), 20px)" to "calc-size(calc-size(fit-content, 40px), size)"]
+ expected: FAIL
+
+ [value at progress 0.75 in animation of "width" from "calc-size(fit-content, 20px)" to "calc-size(calc-size(fit-content, 3 * size + 10px), min(size + 20px, size * 2 - 30px) + size * 2 + 80px)"]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-values/calc-size/animation/calc-size-interpolation-expansion.tentative.html.ini b/tests/wpt/meta-legacy-layout/css/css-values/calc-size/animation/calc-size-interpolation-expansion.tentative.html.ini
deleted file mode 100644
index b241061a801..00000000000
--- a/tests/wpt/meta-legacy-layout/css/css-values/calc-size/animation/calc-size-interpolation-expansion.tentative.html.ini
+++ /dev/null
@@ -1,21 +0,0 @@
-[calc-size-interpolation-expansion.tentative.html]
- [value at progress 0.75 in animation of "height" from "auto" to "calc-size(0px)"]
- expected: FAIL
-
- [value at progress 0.75 in animation of "height" from "0px" to "calc-size(calc-size(min-content, size + 20px), size * 2)"]
- expected: FAIL
-
- [value at progress 0.75 in animation of "height" from "calc-size(min-content, size * 4)" to "calc-size(calc-size(min-content, size + 20px), size * 2)"]
- expected: FAIL
-
- [value at progress 0.75 in animation of "width" from "calc-size(fit-content, 20px)" to "calc-size(calc-size(fit-content, 40px), size)"]
- expected: FAIL
-
- [value at progress 0.75 in animation of "width" from "calc-size(any, 20px)" to "calc-size(calc-size(fit-content, 40px), size)"]
- expected: FAIL
-
- [value at progress 0.75 in animation of "width" from "calc-size(calc-size(any, 30px), 20px)" to "calc-size(calc-size(fit-content, 40px), size)"]
- expected: FAIL
-
- [value at progress 0.75 in animation of "width" from "calc-size(fit-content, 20px)" to "calc-size(calc-size(fit-content, 3 * size + 10px), min(size + 20px, size * 2 - 30px) + size * 2 + 80px)"]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-values/calc-size/animation/calc-size-width-interpolation.html.ini b/tests/wpt/meta-legacy-layout/css/css-values/calc-size/animation/calc-size-width-interpolation.html.ini
new file mode 100644
index 00000000000..e0a3d879ceb
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-values/calc-size/animation/calc-size-width-interpolation.html.ini
@@ -0,0 +1,2526 @@
+[calc-size-width-interpolation.html]
+ [CSS Transitions: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (-0.25) should be [150px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.25) should be [250px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.5) should be [300px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.75) should be [350px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1.25) should be [450px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (-0.25) should be [150px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.25) should be [250px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.5) should be [300px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.75) should be [350px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1.25) should be [450px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (-0.25) should be [150px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.25) should be [250px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.5) should be [300px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.75) should be [350px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1.25) should be [450px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (-0.25) should be [150px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.25) should be [250px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.5) should be [300px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.75) should be [350px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1.25) should be [450px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from neutral to [calc-size(auto, size * 2)\] at (-0.25) should be [150px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from neutral to [calc-size(auto, size * 2)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.25) should be [250px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.5) should be [300px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.75) should be [350px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from neutral to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from neutral to [calc-size(auto, size * 2)\] at (1.25) should be [450px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from neutral to [calc-size(auto, size * 2)\] at (-0.25) should be [150px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from neutral to [calc-size(auto, size * 2)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.25) should be [250px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.5) should be [300px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.75) should be [350px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from neutral to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from neutral to [calc-size(auto, size * 2)\] at (1.25) should be [450px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (-0.25) should be [150px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.25) should be [250px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.5) should be [300px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.75) should be [350px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (1.25) should be [450px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (-0.25) should be [150px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.25) should be [250px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.5) should be [300px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.75) should be [350px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (1.25) should be [450px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (-0.25) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.25) should be [25px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.5) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.75) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1.25) should be [125px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (-0.25) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.25) should be [25px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.5) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.75) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1.25) should be [125px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (-0.25) should be [0\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0) should be [0\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.25) should be [25px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.5) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.75) should be [75px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1.25) should be [125px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (-0.25) should be [0\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0) should be [0\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.25) should be [25px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.5) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.75) should be [75px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1.25) should be [125px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (-0.25) should be [150px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (0.75) should be [350px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (1.25) should be [450px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (-0.25) should be [150px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (0.75) should be [350px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (1.25) should be [450px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (-0.25) should be [150px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (0.75) should be [350px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (1.25) should be [450px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (-0.25) should be [150px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (0.75) should be [350px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (1.25) should be [450px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [auto\] to [calc-size(any, 50px)\] at (-0.25) should be [237.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [auto\] to [calc-size(any, 50px)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [auto\] to [calc-size(any, 50px)\] at (0.75) should be [87.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [auto\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [auto\] to [calc-size(any, 50px)\] at (1.25) should be [12.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(any, 50px)\] at (-0.25) should be [237.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(any, 50px)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(any, 50px)\] at (0.75) should be [87.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(any, 50px)\] at (1.25) should be [12.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [auto\] to [calc-size(any, 50px)\] at (-0.25) should be [237.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [auto\] to [calc-size(any, 50px)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [auto\] to [calc-size(any, 50px)\] at (0.75) should be [87.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [auto\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [auto\] to [calc-size(any, 50px)\] at (1.25) should be [12.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [auto\] to [calc-size(any, 50px)\] at (-0.25) should be [237.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [auto\] to [calc-size(any, 50px)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [auto\] to [calc-size(any, 50px)\] at (0.75) should be [87.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [auto\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [auto\] to [calc-size(any, 50px)\] at (1.25) should be [12.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (-0.1) should be [15.000000000000007px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0.75) should be [312.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1.25) should be [487.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (-0.1) should be [15.000000000000007px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0.75) should be [312.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1.25) should be [487.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (-0.1) should be [15.000000000000007px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0.75) should be [312.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1.25) should be [487.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (-0.1) should be [15.000000000000007px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0.75) should be [312.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1.25) should be [487.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [auto\] to [calc-size(50px, size)\] at (-0.3) should be [auto\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [auto\] to [calc-size(50px, size)\] at (0) should be [auto\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [auto\] to [calc-size(50px, size)\] at (0.3) should be [auto\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [auto\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [auto\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [auto\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [auto\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [auto\] to [calc-size(50px, size)\] at (-0.3) should be [auto\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [auto\] to [calc-size(50px, size)\] at (0) should be [auto\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [auto\] to [calc-size(50px, size)\] at (0.3) should be [auto\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [auto\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [auto\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [auto\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [auto\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [auto\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [auto\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [auto\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [auto\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [auto\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [auto\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [auto\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [auto\] to [calc-size(50px, size)\] at (-0.3) should be [auto\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [auto\] to [calc-size(50px, size)\] at (0) should be [auto\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [auto\] to [calc-size(50px, size)\] at (0.3) should be [auto\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [auto\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [auto\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [auto\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [auto\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [auto\] to [calc-size(50px, size)\] at (-0.3) should be [auto\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [auto\] to [calc-size(50px, size)\] at (0) should be [auto\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [auto\] to [calc-size(50px, size)\] at (0.3) should be [auto\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [auto\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [auto\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [auto\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [auto\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [min-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [min-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [min-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [min-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [min-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [min-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [min-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [min-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [min-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [min-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [min-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [min-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [min-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [min-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [min-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0.75) should be [162.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1.25) should be [237.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0.75) should be [162.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1.25) should be [237.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0.75) should be [162.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1.25) should be [237.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0.75) should be [162.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1.25) should be [237.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [min-content\] to [calc-size(50px, size)\] at (-0.3) should be [min-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [min-content\] to [calc-size(50px, size)\] at (0) should be [min-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.3) should be [min-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [min-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [min-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [min-content\] to [calc-size(50px, size)\] at (-0.3) should be [min-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [min-content\] to [calc-size(50px, size)\] at (0) should be [min-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.3) should be [min-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [min-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [min-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [min-content\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [min-content\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [min-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [min-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [min-content\] to [calc-size(50px, size)\] at (-0.3) should be [min-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [min-content\] to [calc-size(50px, size)\] at (0) should be [min-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.3) should be [min-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [min-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [min-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [min-content\] to [calc-size(50px, size)\] at (-0.3) should be [min-content\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [min-content\] to [calc-size(50px, size)\] at (0) should be [min-content\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.3) should be [min-content\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [min-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [min-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [162.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [237.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [162.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [237.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [162.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [237.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [162.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [237.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [fit-content\] to [calc-size(50px, size)\] at (-0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [fit-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [fit-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [fit-content\] to [calc-size(50px, size)\] at (-0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [fit-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [fit-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [fit-content\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [fit-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [fit-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [fit-content\] to [calc-size(50px, size)\] at (-0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [fit-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [fit-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [fit-content\] to [calc-size(50px, size)\] at (-0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0) should be [fit-content\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [fit-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [fit-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [max-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [max-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [max-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [max-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [max-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [max-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [max-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [max-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [max-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [max-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [max-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [max-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [max-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [max-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [max-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0.75) should be [162.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1.25) should be [237.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0.75) should be [162.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1.25) should be [237.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0.75) should be [162.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1.25) should be [237.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0.75) should be [162.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1.25) should be [237.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [max-content\] to [calc-size(50px, size)\] at (-0.3) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [max-content\] to [calc-size(50px, size)\] at (0) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.3) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [max-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [max-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [max-content\] to [calc-size(50px, size)\] at (-0.3) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [max-content\] to [calc-size(50px, size)\] at (0) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.3) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [max-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [max-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [max-content\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [max-content\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [max-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [max-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [max-content\] to [calc-size(50px, size)\] at (-0.3) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [max-content\] to [calc-size(50px, size)\] at (0) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.3) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [max-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [max-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [max-content\] to [calc-size(50px, size)\] at (-0.3) should be [max-content\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [max-content\] to [calc-size(50px, size)\] at (0) should be [max-content\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.3) should be [max-content\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [max-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [max-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (-0.25) should be [150px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (0.75) should be [350px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (1) should be [400px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (1.25) should be [450px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (-0.25) should be [150px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (0.75) should be [350px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (1) should be [400px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (1.25) should be [450px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (-0.25) should be [150px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (0.75) should be [350px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (1) should be [400px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (1.25) should be [450px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (-0.25) should be [150px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (0.75) should be [350px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (1) should be [400px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (1.25) should be [450px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [stretch\] to [calc-size(any, 50px)\] at (-0.25) should be [237.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [stretch\] to [calc-size(any, 50px)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [stretch\] to [calc-size(any, 50px)\] at (0.75) should be [87.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [stretch\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [stretch\] to [calc-size(any, 50px)\] at (1.25) should be [12.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(any, 50px)\] at (-0.25) should be [237.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(any, 50px)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(any, 50px)\] at (0.75) should be [87.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(any, 50px)\] at (1.25) should be [12.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [stretch\] to [calc-size(any, 50px)\] at (-0.25) should be [237.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [stretch\] to [calc-size(any, 50px)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [stretch\] to [calc-size(any, 50px)\] at (0.75) should be [87.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [stretch\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [stretch\] to [calc-size(any, 50px)\] at (1.25) should be [12.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [stretch\] to [calc-size(any, 50px)\] at (-0.25) should be [237.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [stretch\] to [calc-size(any, 50px)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [stretch\] to [calc-size(any, 50px)\] at (0.75) should be [87.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [stretch\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [stretch\] to [calc-size(any, 50px)\] at (1.25) should be [12.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (-0.1) should be [15.000000000000007px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0.75) should be [312.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1) should be [400px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1.25) should be [487.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (-0.1) should be [15.000000000000007px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0.75) should be [312.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1) should be [400px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1.25) should be [487.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (-0.1) should be [15.000000000000007px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0.75) should be [312.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1) should be [400px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1.25) should be [487.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (-0.1) should be [15.000000000000007px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0.75) should be [312.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1) should be [400px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1.25) should be [487.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [stretch\] to [calc-size(50px, size)\] at (-0.3) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [stretch\] to [calc-size(50px, size)\] at (0) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.3) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [stretch\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [stretch\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [stretch\] to [calc-size(50px, size)\] at (-0.3) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [stretch\] to [calc-size(50px, size)\] at (0) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.3) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [stretch\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [stretch\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [stretch\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [stretch\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [stretch\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [stretch\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [stretch\] to [calc-size(50px, size)\] at (-0.3) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [stretch\] to [calc-size(50px, size)\] at (0) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.3) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [stretch\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [stretch\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [stretch\] to [calc-size(50px, size)\] at (-0.3) should be [stretch\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [stretch\] to [calc-size(50px, size)\] at (0) should be [stretch\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.3) should be [stretch\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [stretch\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [stretch\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [auto\] to [calc-size(fit-content, size)\] at (-0.3) should be [auto\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0) should be [auto\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.3) should be [auto\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.5) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.6) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [auto\] to [calc-size(fit-content, size)\] at (1) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [auto\] to [calc-size(fit-content, size)\] at (1.5) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [auto\] to [calc-size(fit-content, size)\] at (-0.3) should be [auto\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0) should be [auto\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.3) should be [auto\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.5) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.6) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [auto\] to [calc-size(fit-content, size)\] at (1) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [auto\] to [calc-size(fit-content, size)\] at (1.5) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [auto\] to [calc-size(fit-content, size)\] at (-0.3) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.3) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.5) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.6) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [auto\] to [calc-size(fit-content, size)\] at (1) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [auto\] to [calc-size(fit-content, size)\] at (1.5) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(fit-content, size)\] at (-0.3) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.3) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.5) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.6) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(fit-content, size)\] at (1) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(fit-content, size)\] at (1.5) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [auto\] to [calc-size(fit-content, size)\] at (-0.3) should be [auto\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0) should be [auto\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.3) should be [auto\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.5) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.6) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [auto\] to [calc-size(fit-content, size)\] at (1) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [auto\] to [calc-size(fit-content, size)\] at (1.5) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [auto\] to [calc-size(fit-content, size)\] at (-0.3) should be [auto\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0) should be [auto\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.3) should be [auto\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.5) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.6) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [auto\] to [calc-size(fit-content, size)\] at (1) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [auto\] to [calc-size(fit-content, size)\] at (1.5) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (-0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.5) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.6) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (1) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (1.5) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (-0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.5) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.6) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (1) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (1.5) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (-0.3) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.3) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.5) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.6) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (1) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (1.5) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (-0.3) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.3) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.5) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.6) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (1) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (1.5) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (-0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.5) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.6) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (1) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (1.5) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (-0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0) should be [fit-content\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.5) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.6) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (1) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (1.5) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [stretch\] to [calc-size(auto, size)\] at (-0.3) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [stretch\] to [calc-size(auto, size)\] at (0) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.3) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.5) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.6) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [stretch\] to [calc-size(auto, size)\] at (1) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [stretch\] to [calc-size(auto, size)\] at (1.5) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [stretch\] to [calc-size(auto, size)\] at (-0.3) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [stretch\] to [calc-size(auto, size)\] at (0) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.3) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.5) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.6) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [stretch\] to [calc-size(auto, size)\] at (1) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [stretch\] to [calc-size(auto, size)\] at (1.5) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [stretch\] to [calc-size(auto, size)\] at (-0.3) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [stretch\] to [calc-size(auto, size)\] at (0) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.3) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.5) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.6) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [stretch\] to [calc-size(auto, size)\] at (1) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [stretch\] to [calc-size(auto, size)\] at (1.5) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(auto, size)\] at (-0.3) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(auto, size)\] at (0) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.3) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.5) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.6) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(auto, size)\] at (1) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(auto, size)\] at (1.5) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [stretch\] to [calc-size(auto, size)\] at (-0.3) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [stretch\] to [calc-size(auto, size)\] at (0) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.3) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.5) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.6) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [stretch\] to [calc-size(auto, size)\] at (1) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [stretch\] to [calc-size(auto, size)\] at (1.5) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [stretch\] to [calc-size(auto, size)\] at (-0.3) should be [stretch\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [stretch\] to [calc-size(auto, size)\] at (0) should be [stretch\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.3) should be [stretch\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.5) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.6) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [stretch\] to [calc-size(auto, size)\] at (1) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [stretch\] to [calc-size(auto, size)\] at (1.5) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [max-content\] to [calc-size(stretch, size)\] at (-0.3) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.3) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.5) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.6) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [max-content\] to [calc-size(stretch, size)\] at (1) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [max-content\] to [calc-size(stretch, size)\] at (1.5) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [max-content\] to [calc-size(stretch, size)\] at (-0.3) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.3) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.5) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.6) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [max-content\] to [calc-size(stretch, size)\] at (1) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [max-content\] to [calc-size(stretch, size)\] at (1.5) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [max-content\] to [calc-size(stretch, size)\] at (-0.3) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.3) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.5) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.6) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [max-content\] to [calc-size(stretch, size)\] at (1) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [max-content\] to [calc-size(stretch, size)\] at (1.5) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(stretch, size)\] at (-0.3) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.3) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.5) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.6) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(stretch, size)\] at (1) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(stretch, size)\] at (1.5) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [max-content\] to [calc-size(stretch, size)\] at (-0.3) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.3) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.5) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.6) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [max-content\] to [calc-size(stretch, size)\] at (1) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [max-content\] to [calc-size(stretch, size)\] at (1.5) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [max-content\] to [calc-size(stretch, size)\] at (-0.3) should be [max-content\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0) should be [max-content\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.3) should be [max-content\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.5) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.6) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [max-content\] to [calc-size(stretch, size)\] at (1) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [max-content\] to [calc-size(stretch, size)\] at (1.5) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (-0.25) should be [10px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0.75) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1) should be [60px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1.25) should be [70px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (-0.25) should be [10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0.75) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1) should be [60px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1.25) should be [70px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (-0.25) should be [10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0.75) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1) should be [60px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1.25) should be [70px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (-0.25) should be [10px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0.75) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1) should be [60px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1.25) should be [70px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (-0.25) should be [110px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (0.75) should be [70px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (1) should be [60px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (1.25) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (-0.25) should be [110px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (0.75) should be [70px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (1) should be [60px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (1.25) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (-0.25) should be [110px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (0.75) should be [70px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (1) should be [60px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (1.25) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (-0.25) should be [110px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (0.75) should be [70px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (1) should be [60px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (1.25) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (-0.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (0.75) should be [125px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (1.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (-0.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (0.75) should be [125px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (1.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (-0.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (0.75) should be [125px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (1.25) should be [75px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (-0.25) should be [225px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (0.75) should be [125px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (1.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (-0.25) should be [337.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (0) should be [300px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (0.75) should be [187.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (1) should be [150px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (1.25) should be [112.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (-0.25) should be [337.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (0) should be [300px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (0.75) should be [187.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (1) should be [150px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (1.25) should be [112.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (-0.25) should be [337.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (0) should be [300px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (0.75) should be [187.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (1) should be [150px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (1.25) should be [112.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (-0.25) should be [337.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (0) should be [300px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (0.75) should be [187.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (1) should be [150px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (1.25) should be [112.5px\]]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-values/calc-size/animation/calc-size-width-interpolation.tentative.html.ini b/tests/wpt/meta-legacy-layout/css/css-values/calc-size/animation/calc-size-width-interpolation.tentative.html.ini
deleted file mode 100644
index 0bf4e50b1c8..00000000000
--- a/tests/wpt/meta-legacy-layout/css/css-values/calc-size/animation/calc-size-width-interpolation.tentative.html.ini
+++ /dev/null
@@ -1,2838 +0,0 @@
-[calc-size-width-interpolation.tentative.html]
- [CSS Transitions: property <width> from neutral to [calc-size(auto, size * 2)\] at (-0.25) should be [150px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from neutral to [calc-size(auto, size * 2)\] at (0) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.25) should be [calc-size(auto, size * 1.25)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.5) should be [calc-size(auto, size * 1.5)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.75) should be [calc-size(auto, size * 1.75)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from neutral to [calc-size(auto, size * 2)\] at (1) should be [calc-size(auto, size * 2)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from neutral to [calc-size(auto, size * 2)\] at (1.25) should be [calc-size(auto, size * 2.25)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from neutral to [calc-size(auto, size * 2)\] at (-0.25) should be [150px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from neutral to [calc-size(auto, size * 2)\] at (0) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.25) should be [calc-size(auto, size * 1.25)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.5) should be [calc-size(auto, size * 1.5)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.75) should be [calc-size(auto, size * 1.75)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from neutral to [calc-size(auto, size * 2)\] at (1) should be [calc-size(auto, size * 2)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from neutral to [calc-size(auto, size * 2)\] at (1.25) should be [calc-size(auto, size * 2.25)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (-0.25) should be [150px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (0) should be [200px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.25) should be [calc-size(auto, size * 1.25)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.5) should be [calc-size(auto, size * 1.5)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.75) should be [calc-size(auto, size * 1.75)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (1) should be [calc-size(auto, size * 2)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (1.25) should be [calc-size(auto, size * 2.25)\]]
- expected: FAIL
-
- [Web Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (-0.25) should be [150px\]]
- expected: FAIL
-
- [Web Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (0) should be [200px\]]
- expected: FAIL
-
- [Web Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.25) should be [calc-size(auto, size * 1.25)\]]
- expected: FAIL
-
- [Web Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.5) should be [calc-size(auto, size * 1.5)\]]
- expected: FAIL
-
- [Web Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.75) should be [calc-size(auto, size * 1.75)\]]
- expected: FAIL
-
- [Web Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (1) should be [calc-size(auto, size * 2)\]]
- expected: FAIL
-
- [Web Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (1.25) should be [calc-size(auto, size * 2.25)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (-0.25) should be [0\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0) should be [0\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.25) should be [25px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.5) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.75) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1.25) should be [125px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (-0.25) should be [0\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0) should be [0\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.25) should be [25px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.5) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.75) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1.25) should be [125px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (-0.25) should be [0\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0) should be [0\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.25) should be [25px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.5) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.75) should be [75px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1) should be [100px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1.25) should be [125px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (-0.25) should be [0\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0) should be [0\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.25) should be [25px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.5) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.75) should be [75px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1) should be [100px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1.25) should be [125px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (-0.25) should be [150px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.25) should be [250px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.5) should be [300px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.75) should be [350px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1.25) should be [450px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (-0.25) should be [150px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.25) should be [250px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.5) should be [300px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.75) should be [350px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1.25) should be [450px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (-0.25) should be [150px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0) should be [200px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.25) should be [250px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.5) should be [300px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.75) should be [350px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1.25) should be [450px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (-0.25) should be [150px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0) should be [200px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.25) should be [250px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.5) should be [300px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.75) should be [350px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1.25) should be [450px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.25) should be [250px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.5) should be [300px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.75) should be [350px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from neutral to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from neutral to [calc-size(auto, size * 2)\] at (1.25) should be [450px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.25) should be [250px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.5) should be [300px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.75) should be [350px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from neutral to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from neutral to [calc-size(auto, size * 2)\] at (1.25) should be [450px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.25) should be [250px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.5) should be [300px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.75) should be [350px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (1.25) should be [450px\]]
- expected: FAIL
-
- [Web Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.25) should be [250px\]]
- expected: FAIL
-
- [Web Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.5) should be [300px\]]
- expected: FAIL
-
- [Web Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.75) should be [350px\]]
- expected: FAIL
-
- [Web Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
- expected: FAIL
-
- [Web Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (1.25) should be [450px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (-0.25) should be [150px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (0) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (0.75) should be [350px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (1.25) should be [450px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (-0.25) should be [150px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (0) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (0.75) should be [350px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (1.25) should be [450px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (-0.25) should be [150px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (0) should be [200px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (0.75) should be [350px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (1.25) should be [450px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (-0.25) should be [150px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (0) should be [200px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (0.75) should be [350px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (1.25) should be [450px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [auto\] to [calc-size(any, 50px)\] at (-0.25) should be [237.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [auto\] to [calc-size(any, 50px)\] at (0) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [auto\] to [calc-size(any, 50px)\] at (0.75) should be [87.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [auto\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [auto\] to [calc-size(any, 50px)\] at (1.25) should be [12.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(any, 50px)\] at (-0.25) should be [237.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(any, 50px)\] at (0) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(any, 50px)\] at (0.75) should be [87.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(any, 50px)\] at (1.25) should be [12.5px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [auto\] to [calc-size(any, 50px)\] at (-0.25) should be [237.5px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [auto\] to [calc-size(any, 50px)\] at (0) should be [200px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [auto\] to [calc-size(any, 50px)\] at (0.75) should be [87.5px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [auto\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [auto\] to [calc-size(any, 50px)\] at (1.25) should be [12.5px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [auto\] to [calc-size(any, 50px)\] at (-0.25) should be [237.5px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [auto\] to [calc-size(any, 50px)\] at (0) should be [200px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [auto\] to [calc-size(any, 50px)\] at (0.75) should be [87.5px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [auto\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [auto\] to [calc-size(any, 50px)\] at (1.25) should be [12.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (-0.1) should be [15.000000000000007px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0.75) should be [312.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1.25) should be [487.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (-0.1) should be [15.000000000000007px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0.75) should be [312.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1.25) should be [487.5px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (-0.1) should be [15.000000000000007px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0.75) should be [312.5px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1.25) should be [487.5px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (-0.1) should be [15.000000000000007px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0.75) should be [312.5px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1.25) should be [487.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [auto\] to [calc-size(50px, size)\] at (-0.3) should be [auto\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [auto\] to [calc-size(50px, size)\] at (0) should be [auto\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [auto\] to [calc-size(50px, size)\] at (0.3) should be [auto\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [auto\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [auto\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [auto\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [auto\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [auto\] to [calc-size(50px, size)\] at (-0.3) should be [auto\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [auto\] to [calc-size(50px, size)\] at (0) should be [auto\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [auto\] to [calc-size(50px, size)\] at (0.3) should be [auto\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [auto\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [auto\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [auto\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [auto\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [auto\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [auto\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [auto\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [auto\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [auto\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [auto\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [auto\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [auto\] to [calc-size(50px, size)\] at (-0.3) should be [auto\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [auto\] to [calc-size(50px, size)\] at (0) should be [auto\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [auto\] to [calc-size(50px, size)\] at (0.3) should be [auto\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [auto\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [auto\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [auto\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [auto\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [auto\] to [calc-size(50px, size)\] at (-0.3) should be [auto\]]
- expected: FAIL
-
- [Web Animations: property <width> from [auto\] to [calc-size(50px, size)\] at (0) should be [auto\]]
- expected: FAIL
-
- [Web Animations: property <width> from [auto\] to [calc-size(50px, size)\] at (0.3) should be [auto\]]
- expected: FAIL
-
- [Web Animations: property <width> from [auto\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [auto\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [auto\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [auto\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [min-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [min-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [min-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [min-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [min-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [min-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [min-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [min-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [min-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [min-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [min-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [min-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [min-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [min-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [min-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0.75) should be [162.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1.25) should be [237.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0.75) should be [162.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1.25) should be [237.5px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0.75) should be [162.5px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1.25) should be [237.5px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0.75) should be [162.5px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1.25) should be [237.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [min-content\] to [calc-size(50px, size)\] at (-0.3) should be [min-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [min-content\] to [calc-size(50px, size)\] at (0) should be [min-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.3) should be [min-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [min-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [min-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [min-content\] to [calc-size(50px, size)\] at (-0.3) should be [min-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [min-content\] to [calc-size(50px, size)\] at (0) should be [min-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.3) should be [min-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [min-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [min-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [min-content\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [min-content\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [min-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [min-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [min-content\] to [calc-size(50px, size)\] at (-0.3) should be [min-content\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [min-content\] to [calc-size(50px, size)\] at (0) should be [min-content\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.3) should be [min-content\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [min-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [min-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [min-content\] to [calc-size(50px, size)\] at (-0.3) should be [min-content\]]
- expected: FAIL
-
- [Web Animations: property <width> from [min-content\] to [calc-size(50px, size)\] at (0) should be [min-content\]]
- expected: FAIL
-
- [Web Animations: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.3) should be [min-content\]]
- expected: FAIL
-
- [Web Animations: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [min-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [min-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [162.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [237.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [162.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [237.5px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [162.5px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [237.5px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [162.5px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [237.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [fit-content\] to [calc-size(50px, size)\] at (-0.3) should be [fit-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0) should be [fit-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.3) should be [fit-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [fit-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [fit-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [fit-content\] to [calc-size(50px, size)\] at (-0.3) should be [fit-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0) should be [fit-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.3) should be [fit-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [fit-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [fit-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [fit-content\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [fit-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [fit-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [fit-content\] to [calc-size(50px, size)\] at (-0.3) should be [fit-content\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0) should be [fit-content\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.3) should be [fit-content\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [fit-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [fit-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [fit-content\] to [calc-size(50px, size)\] at (-0.3) should be [fit-content\]]
- expected: FAIL
-
- [Web Animations: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0) should be [fit-content\]]
- expected: FAIL
-
- [Web Animations: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.3) should be [fit-content\]]
- expected: FAIL
-
- [Web Animations: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [fit-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [fit-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [max-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [max-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [max-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [max-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [max-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [max-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [max-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [max-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [max-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [max-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [max-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [max-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [max-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [max-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [max-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0.75) should be [162.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1.25) should be [237.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0.75) should be [162.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1.25) should be [237.5px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0.75) should be [162.5px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1.25) should be [237.5px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0.75) should be [162.5px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1.25) should be [237.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [max-content\] to [calc-size(50px, size)\] at (-0.3) should be [max-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [max-content\] to [calc-size(50px, size)\] at (0) should be [max-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.3) should be [max-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [max-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [max-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [max-content\] to [calc-size(50px, size)\] at (-0.3) should be [max-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [max-content\] to [calc-size(50px, size)\] at (0) should be [max-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.3) should be [max-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [max-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [max-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [max-content\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [max-content\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [max-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [max-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [max-content\] to [calc-size(50px, size)\] at (-0.3) should be [max-content\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [max-content\] to [calc-size(50px, size)\] at (0) should be [max-content\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.3) should be [max-content\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [max-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [max-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [max-content\] to [calc-size(50px, size)\] at (-0.3) should be [max-content\]]
- expected: FAIL
-
- [Web Animations: property <width> from [max-content\] to [calc-size(50px, size)\] at (0) should be [max-content\]]
- expected: FAIL
-
- [Web Animations: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.3) should be [max-content\]]
- expected: FAIL
-
- [Web Animations: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [max-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [max-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (-0.25) should be [150px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (0) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (0.75) should be [350px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (1) should be [400px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (1.25) should be [450px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (-0.25) should be [150px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (0) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (0.75) should be [350px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (1) should be [400px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (1.25) should be [450px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (-0.25) should be [150px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (0) should be [200px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (0.75) should be [350px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (1) should be [400px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (1.25) should be [450px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (-0.25) should be [150px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (0) should be [200px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (0.75) should be [350px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (1) should be [400px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (1.25) should be [450px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [stretch\] to [calc-size(any, 50px)\] at (-0.25) should be [237.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [stretch\] to [calc-size(any, 50px)\] at (0) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [stretch\] to [calc-size(any, 50px)\] at (0.75) should be [87.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [stretch\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [stretch\] to [calc-size(any, 50px)\] at (1.25) should be [12.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(any, 50px)\] at (-0.25) should be [237.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(any, 50px)\] at (0) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(any, 50px)\] at (0.75) should be [87.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(any, 50px)\] at (1.25) should be [12.5px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [stretch\] to [calc-size(any, 50px)\] at (-0.25) should be [237.5px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [stretch\] to [calc-size(any, 50px)\] at (0) should be [200px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [stretch\] to [calc-size(any, 50px)\] at (0.75) should be [87.5px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [stretch\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [stretch\] to [calc-size(any, 50px)\] at (1.25) should be [12.5px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [stretch\] to [calc-size(any, 50px)\] at (-0.25) should be [237.5px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [stretch\] to [calc-size(any, 50px)\] at (0) should be [200px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [stretch\] to [calc-size(any, 50px)\] at (0.75) should be [87.5px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [stretch\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [stretch\] to [calc-size(any, 50px)\] at (1.25) should be [12.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (-0.1) should be [15.000000000000007px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0.75) should be [312.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1) should be [400px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1.25) should be [487.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (-0.1) should be [15.000000000000007px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0.75) should be [312.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1) should be [400px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1.25) should be [487.5px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (-0.1) should be [15.000000000000007px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0.75) should be [312.5px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1) should be [400px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1.25) should be [487.5px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (-0.1) should be [15.000000000000007px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0.75) should be [312.5px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1) should be [400px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1.25) should be [487.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [stretch\] to [calc-size(50px, size)\] at (-0.3) should be [stretch\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [stretch\] to [calc-size(50px, size)\] at (0) should be [stretch\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.3) should be [stretch\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [stretch\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [stretch\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [stretch\] to [calc-size(50px, size)\] at (-0.3) should be [stretch\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [stretch\] to [calc-size(50px, size)\] at (0) should be [stretch\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.3) should be [stretch\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [stretch\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [stretch\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [stretch\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [stretch\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [stretch\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [stretch\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [stretch\] to [calc-size(50px, size)\] at (-0.3) should be [stretch\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [stretch\] to [calc-size(50px, size)\] at (0) should be [stretch\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.3) should be [stretch\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [stretch\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [stretch\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [stretch\] to [calc-size(50px, size)\] at (-0.3) should be [stretch\]]
- expected: FAIL
-
- [Web Animations: property <width> from [stretch\] to [calc-size(50px, size)\] at (0) should be [stretch\]]
- expected: FAIL
-
- [Web Animations: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.3) should be [stretch\]]
- expected: FAIL
-
- [Web Animations: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [stretch\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [stretch\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [auto\] to [calc-size(fit-content, size)\] at (-0.3) should be [auto\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0) should be [auto\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.3) should be [auto\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.5) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.6) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [auto\] to [calc-size(fit-content, size)\] at (1) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [auto\] to [calc-size(fit-content, size)\] at (1.5) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [auto\] to [calc-size(fit-content, size)\] at (-0.3) should be [auto\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0) should be [auto\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.3) should be [auto\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.5) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.6) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [auto\] to [calc-size(fit-content, size)\] at (1) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [auto\] to [calc-size(fit-content, size)\] at (1.5) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [auto\] to [calc-size(fit-content, size)\] at (-0.3) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.3) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.5) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.6) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [auto\] to [calc-size(fit-content, size)\] at (1) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [auto\] to [calc-size(fit-content, size)\] at (1.5) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(fit-content, size)\] at (-0.3) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.3) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.5) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.6) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(fit-content, size)\] at (1) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(fit-content, size)\] at (1.5) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [auto\] to [calc-size(fit-content, size)\] at (-0.3) should be [auto\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0) should be [auto\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.3) should be [auto\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.5) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.6) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [auto\] to [calc-size(fit-content, size)\] at (1) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [auto\] to [calc-size(fit-content, size)\] at (1.5) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [auto\] to [calc-size(fit-content, size)\] at (-0.3) should be [auto\]]
- expected: FAIL
-
- [Web Animations: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0) should be [auto\]]
- expected: FAIL
-
- [Web Animations: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.3) should be [auto\]]
- expected: FAIL
-
- [Web Animations: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.5) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.6) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [auto\] to [calc-size(fit-content, size)\] at (1) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [auto\] to [calc-size(fit-content, size)\] at (1.5) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (-0.3) should be [fit-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0) should be [fit-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.3) should be [fit-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.5) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.6) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (1) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (1.5) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (-0.3) should be [fit-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0) should be [fit-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.3) should be [fit-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.5) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.6) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (1) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (1.5) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (-0.3) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.3) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.5) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.6) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (1) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (1.5) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (-0.3) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.3) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.5) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.6) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (1) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (1.5) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (-0.3) should be [fit-content\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0) should be [fit-content\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.3) should be [fit-content\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.5) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.6) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (1) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (1.5) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (-0.3) should be [fit-content\]]
- expected: FAIL
-
- [Web Animations: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0) should be [fit-content\]]
- expected: FAIL
-
- [Web Animations: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.3) should be [fit-content\]]
- expected: FAIL
-
- [Web Animations: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.5) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.6) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (1) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (1.5) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [stretch\] to [calc-size(auto, size)\] at (-0.3) should be [stretch\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [stretch\] to [calc-size(auto, size)\] at (0) should be [stretch\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.3) should be [stretch\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.5) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.6) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [stretch\] to [calc-size(auto, size)\] at (1) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [stretch\] to [calc-size(auto, size)\] at (1.5) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [stretch\] to [calc-size(auto, size)\] at (-0.3) should be [stretch\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [stretch\] to [calc-size(auto, size)\] at (0) should be [stretch\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.3) should be [stretch\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.5) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.6) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [stretch\] to [calc-size(auto, size)\] at (1) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [stretch\] to [calc-size(auto, size)\] at (1.5) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [stretch\] to [calc-size(auto, size)\] at (-0.3) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [stretch\] to [calc-size(auto, size)\] at (0) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.3) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.5) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.6) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [stretch\] to [calc-size(auto, size)\] at (1) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [stretch\] to [calc-size(auto, size)\] at (1.5) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(auto, size)\] at (-0.3) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(auto, size)\] at (0) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.3) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.5) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.6) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(auto, size)\] at (1) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(auto, size)\] at (1.5) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [stretch\] to [calc-size(auto, size)\] at (-0.3) should be [stretch\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [stretch\] to [calc-size(auto, size)\] at (0) should be [stretch\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.3) should be [stretch\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.5) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.6) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [stretch\] to [calc-size(auto, size)\] at (1) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [stretch\] to [calc-size(auto, size)\] at (1.5) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [stretch\] to [calc-size(auto, size)\] at (-0.3) should be [stretch\]]
- expected: FAIL
-
- [Web Animations: property <width> from [stretch\] to [calc-size(auto, size)\] at (0) should be [stretch\]]
- expected: FAIL
-
- [Web Animations: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.3) should be [stretch\]]
- expected: FAIL
-
- [Web Animations: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.5) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.6) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [stretch\] to [calc-size(auto, size)\] at (1) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [stretch\] to [calc-size(auto, size)\] at (1.5) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [max-content\] to [calc-size(stretch, size)\] at (-0.3) should be [max-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0) should be [max-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.3) should be [max-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.5) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.6) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [max-content\] to [calc-size(stretch, size)\] at (1) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [max-content\] to [calc-size(stretch, size)\] at (1.5) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [max-content\] to [calc-size(stretch, size)\] at (-0.3) should be [max-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0) should be [max-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.3) should be [max-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.5) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.6) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [max-content\] to [calc-size(stretch, size)\] at (1) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [max-content\] to [calc-size(stretch, size)\] at (1.5) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [max-content\] to [calc-size(stretch, size)\] at (-0.3) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.3) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.5) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.6) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [max-content\] to [calc-size(stretch, size)\] at (1) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [max-content\] to [calc-size(stretch, size)\] at (1.5) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(stretch, size)\] at (-0.3) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.3) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.5) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.6) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(stretch, size)\] at (1) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(stretch, size)\] at (1.5) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [max-content\] to [calc-size(stretch, size)\] at (-0.3) should be [max-content\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0) should be [max-content\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.3) should be [max-content\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.5) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.6) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [max-content\] to [calc-size(stretch, size)\] at (1) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [max-content\] to [calc-size(stretch, size)\] at (1.5) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [max-content\] to [calc-size(stretch, size)\] at (-0.3) should be [max-content\]]
- expected: FAIL
-
- [Web Animations: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0) should be [max-content\]]
- expected: FAIL
-
- [Web Animations: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.3) should be [max-content\]]
- expected: FAIL
-
- [Web Animations: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.5) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.6) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [max-content\] to [calc-size(stretch, size)\] at (1) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [max-content\] to [calc-size(stretch, size)\] at (1.5) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(20px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0) should be [calc-size(20px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(20px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(20px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0) should be [calc-size(20px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(20px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(20px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0) should be [calc-size(20px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(20px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(20px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0) should be [calc-size(20px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(20px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (-0.25) should be [225px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (0) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (0.75) should be [125px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (1) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (1.25) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (-0.25) should be [225px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (0) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (0.75) should be [125px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (1) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (1.25) should be [75px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (-0.25) should be [225px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (0) should be [200px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (0.75) should be [125px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (1) should be [100px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (1.25) should be [75px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (-0.25) should be [225px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (0) should be [200px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (0.75) should be [125px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (1) should be [100px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (1.25) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (-0.25) should be [337.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (0) should be [300px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (0.75) should be [187.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (1) should be [150px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (1.25) should be [112.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (-0.25) should be [337.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (0) should be [300px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (0.75) should be [187.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (1) should be [150px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (1.25) should be [112.5px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (-0.25) should be [337.5px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (0) should be [300px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (0.75) should be [187.5px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (1) should be [150px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (1.25) should be [112.5px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (-0.25) should be [337.5px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (0) should be [300px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (0.75) should be [187.5px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (1) should be [150px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (1.25) should be [112.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (-0.25) should be [10px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0.75) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1) should be [60px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1.25) should be [70px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (-0.25) should be [10px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0.75) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1) should be [60px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1.25) should be [70px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (-0.25) should be [10px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0) should be [20px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0.75) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1) should be [60px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1.25) should be [70px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (-0.25) should be [10px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0) should be [20px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0.75) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1) should be [60px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1.25) should be [70px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (-0.25) should be [110px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (0.75) should be [70px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (1) should be [60px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (1.25) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (-0.25) should be [110px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (0.75) should be [70px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (1) should be [60px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (1.25) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (-0.25) should be [110px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (0.75) should be [70px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (1) should be [60px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (1.25) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (-0.25) should be [110px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (0) should be [100px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (0.75) should be [70px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (1) should be [60px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (1.25) should be [50px\]]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-values/calc-size/calc-size-aspect-ratio-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-values/calc-size/calc-size-aspect-ratio-001.html.ini
new file mode 100644
index 00000000000..140dadd110d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-values/calc-size/calc-size-aspect-ratio-001.html.ini
@@ -0,0 +1,2 @@
+[calc-size-aspect-ratio-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-values/calc-size/calc-size-aspect-ratio-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-values/calc-size/calc-size-aspect-ratio-002.html.ini
new file mode 100644
index 00000000000..59d61fb57af
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-values/calc-size/calc-size-aspect-ratio-002.html.ini
@@ -0,0 +1,2 @@
+[calc-size-aspect-ratio-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-values/calc-size/calc-size-flex-basis-on-column.html.ini b/tests/wpt/meta-legacy-layout/css/css-values/calc-size/calc-size-flex-basis-on-column.html.ini
new file mode 100644
index 00000000000..3b8b0625f91
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-values/calc-size/calc-size-flex-basis-on-column.html.ini
@@ -0,0 +1,93 @@
+[calc-size-flex-basis-on-column.html]
+ [resolved value for height resulting from flex-basis: 274px]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: min-content]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: fit-content]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: max-content]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: content]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: calc-size(any, 357px)]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: calc-size(any, 220%)]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: calc-size(max-content, 350%)]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: calc-size(fit-content, 172px)]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: calc-size(37px, 193px)]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: calc-size(83px, size * 3)]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: calc-size(min-content, size / 0.25)]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: calc-size(max-content, size * 5.2)]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: calc-size(fit-content, size / 4 + 60px)]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: calc-size(stretch, size * 2 - 10%)]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: calc-size(30px, 15em)]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: calc-size(calc-size(any, 30px), 15em)]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: calc-size(calc-size(2in, 30px), 15em)]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: calc-size(calc-size(min-content, 30px), 15em)]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: calc-size(calc-size(min-content, size), size * 3)]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: calc-size(auto, size)]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: calc-size(auto, size * 1.6 + 23px)]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: calc-size(content, size)]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: calc-size(content, size * 1.6 + 23px)]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: calc-size(auto, size * 3) and height: auto]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: auto and height: calc-size(auto, size * 7)]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: calc-size(auto, size * 7) and height: calc-size(auto, size * 3)]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: auto and height: calc-size(max-content, size + 12px)]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: calc-size(auto, size + 4px) and height: calc-size(fit-content, size + 12px)]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: 372px and height: calc-size(fit-content, size + 12px)]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: calc-size(content, size * 7) and height: 321px]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-values/calc-size/calc-size-flex-basis-on-row.html.ini b/tests/wpt/meta-legacy-layout/css/css-values/calc-size/calc-size-flex-basis-on-row.html.ini
new file mode 100644
index 00000000000..be04a837a87
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-values/calc-size/calc-size-flex-basis-on-row.html.ini
@@ -0,0 +1,90 @@
+[calc-size-flex-basis-on-row.html]
+ [resolved value for width resulting from flex-basis: min-content]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: fit-content]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: max-content]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: content]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: calc-size(any, 357px)]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: calc-size(any, 31%)]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: calc-size(max-content, 31%)]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: calc-size(fit-content, 172px)]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: calc-size(37px, 193px)]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: calc-size(83px, size * 3)]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: calc-size(min-content, size / 2)]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: calc-size(max-content, size * 1.2)]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: calc-size(fit-content, size / 4 + 30px)]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: calc-size(stretch, size / 2 - 10%)]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: calc-size(30px, 15em)]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: calc-size(calc-size(any, 30px), 15em)]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: calc-size(calc-size(2in, 30px), 15em)]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: calc-size(calc-size(min-content, 30px), 15em)]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: calc-size(calc-size(min-content, size), size)]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: calc-size(auto, size)]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: calc-size(auto, size * 1.6 + 23px)]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: calc-size(content, size)]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: calc-size(content, size / 2)]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: calc-size(auto, size * 2) and width: auto]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: auto and width: calc-size(auto, size * 1.5 + 5px)]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: calc-size(auto, size + 14px) and width: calc-size(auto, size * 1.5)]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: auto and width: calc-size(max-content, size + 12px)]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: calc-size(auto, size + 4px) and width: calc-size(fit-content, size + 12px)]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: 472px and width: calc-size(fit-content, size + 12px)]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: calc-size(content, size * 1.5 + 4px) and width: 321px]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-values/calc-size/calc-size-height.html.ini b/tests/wpt/meta-legacy-layout/css/css-values/calc-size/calc-size-height.html.ini
new file mode 100644
index 00000000000..31265aa3279
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-values/calc-size/calc-size-height.html.ini
@@ -0,0 +1,93 @@
+[calc-size-height.html]
+ [resolved height for height in auto height container: calc-size(any, 357px)]
+ expected: FAIL
+
+ [resolved height for height in definite height container: calc-size(any, 357px)]
+ expected: FAIL
+
+ [resolved height for height in auto height container: calc-size(any, 31%)]
+ expected: FAIL
+
+ [resolved height for height in definite height container: calc-size(any, 31%)]
+ expected: FAIL
+
+ [resolved height for height in definite height container: calc-size(31%, size)]
+ expected: FAIL
+
+ [resolved height for height in auto height container: calc-size(max-content, 31%)]
+ expected: FAIL
+
+ [resolved height for height in definite height container: calc-size(max-content, 31%)]
+ expected: FAIL
+
+ [resolved height for height in auto height container: calc-size(fit-content, 72px)]
+ expected: FAIL
+
+ [resolved height for height in definite height container: calc-size(fit-content, 72px)]
+ expected: FAIL
+
+ [resolved height for height in auto height container: calc-size(37px, 93px)]
+ expected: FAIL
+
+ [resolved height for height in definite height container: calc-size(37px, 93px)]
+ expected: FAIL
+
+ [resolved height for height in auto height container: calc-size(83px, size * 3)]
+ expected: FAIL
+
+ [resolved height for height in definite height container: calc-size(83px, size * 3)]
+ expected: FAIL
+
+ [resolved height for height in auto height container: calc-size(min-content, size / 2)]
+ expected: FAIL
+
+ [resolved height for height in definite height container: calc-size(min-content, size / 2)]
+ expected: FAIL
+
+ [resolved height for height in auto height container: calc-size(max-content, size * 1.2)]
+ expected: FAIL
+
+ [resolved height for height in definite height container: calc-size(max-content, size * 1.2)]
+ expected: FAIL
+
+ [resolved height for height in auto height container: calc-size(fit-content, size / 2 + 30px)]
+ expected: FAIL
+
+ [resolved height for height in definite height container: calc-size(fit-content, size / 2 + 30px)]
+ expected: FAIL
+
+ [resolved height for height in auto height container: calc-size(30px, 15em)]
+ expected: FAIL
+
+ [resolved height for height in definite height container: calc-size(30px, 15em)]
+ expected: FAIL
+
+ [resolved height for height in auto height container: calc-size(calc-size(any, 30px), 15em)]
+ expected: FAIL
+
+ [resolved height for height in definite height container: calc-size(calc-size(any, 30px), 15em)]
+ expected: FAIL
+
+ [resolved height for height in auto height container: calc-size(calc-size(2in, 30px), 15em)]
+ expected: FAIL
+
+ [resolved height for height in definite height container: calc-size(calc-size(2in, 30px), 15em)]
+ expected: FAIL
+
+ [resolved height for height in auto height container: calc-size(calc-size(min-content, 30px), 15em)]
+ expected: FAIL
+
+ [resolved height for height in definite height container: calc-size(calc-size(min-content, 30px), 15em)]
+ expected: FAIL
+
+ [resolved height for height in auto height container: calc-size(any, 31% + 12px)]
+ expected: FAIL
+
+ [resolved height for height in definite height container: calc-size(any, 31% + 12px)]
+ expected: FAIL
+
+ [resolved height for height in auto height container: calc-size(auto, size * 1.5)]
+ expected: FAIL
+
+ [resolved height for height in definite height container: calc-size(auto, size * 1.5)]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-values/calc-size/calc-size-height.tentative.html.ini b/tests/wpt/meta-legacy-layout/css/css-values/calc-size/calc-size-height.tentative.html.ini
deleted file mode 100644
index 1d0e72e7a8a..00000000000
--- a/tests/wpt/meta-legacy-layout/css/css-values/calc-size/calc-size-height.tentative.html.ini
+++ /dev/null
@@ -1,96 +0,0 @@
-[calc-size-height.tentative.html]
- [resolved height for height in auto height container: calc-size(any, 357px)]
- expected: FAIL
-
- [resolved height for height in definite height container: calc-size(any, 357px)]
- expected: FAIL
-
- [resolved height for height in auto height container: calc-size(any, 31%)]
- expected: FAIL
-
- [resolved height for height in definite height container: calc-size(any, 31%)]
- expected: FAIL
-
- [resolved height for height in definite height container: calc-size(31%, size)]
- expected: FAIL
-
- [resolved height for height in auto height container: calc-size(max-content, 31%)]
- expected: FAIL
-
- [resolved height for height in definite height container: calc-size(max-content, 31%)]
- expected: FAIL
-
- [resolved height for height in auto height container: calc-size(fit-content, 72px)]
- expected: FAIL
-
- [resolved height for height in definite height container: calc-size(fit-content, 72px)]
- expected: FAIL
-
- [resolved height for height in auto height container: calc-size(37px, 93px)]
- expected: FAIL
-
- [resolved height for height in definite height container: calc-size(37px, 93px)]
- expected: FAIL
-
- [resolved height for height in auto height container: calc-size(83px, size * 3)]
- expected: FAIL
-
- [resolved height for height in definite height container: calc-size(83px, size * 3)]
- expected: FAIL
-
- [resolved height for height in auto height container: calc-size(min-content, size / 2)]
- expected: FAIL
-
- [resolved height for height in definite height container: calc-size(min-content, size / 2)]
- expected: FAIL
-
- [resolved height for height in auto height container: calc-size(max-content, size * 1.2)]
- expected: FAIL
-
- [resolved height for height in definite height container: calc-size(max-content, size * 1.2)]
- expected: FAIL
-
- [resolved height for height in auto height container: calc-size(fit-content, size / 2 + 30px)]
- expected: FAIL
-
- [resolved height for height in definite height container: calc-size(fit-content, size / 2 + 30px)]
- expected: FAIL
-
- [resolved height for height in auto height container: calc-size(30px, 15em)]
- expected: FAIL
-
- [resolved height for height in definite height container: calc-size(30px, 15em)]
- expected: FAIL
-
- [resolved height for height in auto height container: calc-size(calc-size(any, 30px), 15em)]
- expected: FAIL
-
- [resolved height for height in definite height container: calc-size(calc-size(any, 30px), 15em)]
- expected: FAIL
-
- [resolved height for height in auto height container: calc-size(calc-size(2in, 30px), 15em)]
- expected: FAIL
-
- [resolved height for height in definite height container: calc-size(calc-size(2in, 30px), 15em)]
- expected: FAIL
-
- [resolved height for height in auto height container: calc-size(calc-size(min-content, 30px), 15em)]
- expected: FAIL
-
- [resolved height for height in definite height container: calc-size(calc-size(min-content, 30px), 15em)]
- expected: FAIL
-
- [resolved height for height in definite height container: calc(12% + calc-size(any, 31%))]
- expected: FAIL
-
- [resolved height for height in auto height container: calc-size(any, 31% + 12px)]
- expected: FAIL
-
- [resolved height for height in definite height container: calc-size(any, 31% + 12px)]
- expected: FAIL
-
- [resolved height for height in auto height container: calc-size(auto, size * 1.5)]
- expected: FAIL
-
- [resolved height for height in definite height container: calc-size(auto, size * 1.5)]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-values/calc-size/calc-size-parsing.html.ini b/tests/wpt/meta-legacy-layout/css/css-values/calc-size/calc-size-parsing.html.ini
new file mode 100644
index 00000000000..92f07e5b5b0
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-values/calc-size/calc-size-parsing.html.ini
@@ -0,0 +1,126 @@
+[calc-size-parsing.html]
+ [e.style['width'\] = "calc-size(auto, size)" should set the property value]
+ expected: FAIL
+
+ [e.style['min-width'\] = "calc-size(auto, size)" should set the property value]
+ expected: FAIL
+
+ [e.style['height'\] = "calc-size(auto, size)" should set the property value]
+ expected: FAIL
+
+ [e.style['min-height'\] = "calc-size(auto, size)" should set the property value]
+ expected: FAIL
+
+ [e.style['width'\] = "calc-size(max-content, size)" should set the property value]
+ expected: FAIL
+
+ [e.style['height'\] = "calc-size(max-content, size)" should set the property value]
+ expected: FAIL
+
+ [e.style['max-width'\] = "calc-size(max-content, size)" should set the property value]
+ expected: FAIL
+
+ [e.style['max-height'\] = "calc-size(max-content, size)" should set the property value]
+ expected: FAIL
+
+ [e.style['min-width'\] = "calc-size(max-content, size)" should set the property value]
+ expected: FAIL
+
+ [e.style['min-height'\] = "calc-size(max-content, size)" should set the property value]
+ expected: FAIL
+
+ [e.style['block-size'\] = "calc-size(max-content, size)" should set the property value]
+ expected: FAIL
+
+ [e.style['inline-size'\] = "calc-size(max-content, size)" should set the property value]
+ expected: FAIL
+
+ [e.style['max-block-size'\] = "calc-size(max-content, size)" should set the property value]
+ expected: FAIL
+
+ [e.style['max-inline-size'\] = "calc-size(max-content, size)" should set the property value]
+ expected: FAIL
+
+ [e.style['min-block-size'\] = "calc-size(max-content, size)" should set the property value]
+ expected: FAIL
+
+ [e.style['min-inline-size'\] = "calc-size(max-content, size)" should set the property value]
+ expected: FAIL
+
+ [e.style['width'\] = "calc-size(fit-content, size)" should set the property value]
+ expected: FAIL
+
+ [e.style['height'\] = "calc-size(min-content, size * 2)" should set the property value]
+ expected: FAIL
+
+ [e.style['max-width'\] = "calc-size(max-content, size / 2)" should set the property value]
+ expected: FAIL
+
+ [e.style['max-height'\] = "calc-size(fit-content, 30px + size / 2)" should set the property value]
+ expected: FAIL
+
+ [e.style['width'\] = "calc-size(fit-content, 50% + size / 2)" should set the property value]
+ expected: FAIL
+
+ [e.style['width'\] = "calc-size(any, 25em)" should set the property value]
+ expected: FAIL
+
+ [e.style['width'\] = "calc-size(any, 40%)" should set the property value]
+ expected: FAIL
+
+ [e.style['width'\] = "calc-size(any, 50px + 30%)" should set the property value]
+ expected: FAIL
+
+ [e.style['width'\] = "calc-size(10px, sign(size) * size)" should set the property value]
+ expected: FAIL
+
+ [e.style['width'\] = "calc-size(30px, 25em)" should set the property value]
+ expected: FAIL
+
+ [e.style['width'\] = "calc-size(calc-size(any, 30px), 25em)" should set the property value]
+ expected: FAIL
+
+ [e.style['width'\] = "calc-size(calc-size(2in, 30px), 25em)" should set the property value]
+ expected: FAIL
+
+ [e.style['width'\] = "calc-size(calc-size(min-content, 30px), 25em)" should set the property value]
+ expected: FAIL
+
+ [e.style['width'\] = "calc-size(calc-size(min-content, size), size)" should set the property value]
+ expected: FAIL
+
+ [e.style['width'\] = "calc-size(30px)" should set the property value]
+ expected: FAIL
+
+ [e.style['width'\] = "calc-size(min(30px, 2em))" should set the property value]
+ expected: FAIL
+
+ [e.style['width'\] = "calc-size(calc-size(any, 30px))" should set the property value]
+ expected: FAIL
+
+ [e.style['width'\] = "calc-size(fit-content)" should set the property value]
+ expected: FAIL
+
+ [e.style['width'\] = "calc-size(calc-size(fit-content, size * 2))" should set the property value]
+ expected: FAIL
+
+ [e.style['width'\] = "calc-size(calc-size(30px))" should set the property value]
+ expected: FAIL
+
+ [e.style['flex-basis'\] = "calc-size(any, 50px)" should set the property value]
+ expected: FAIL
+
+ [e.style['flex-basis'\] = "calc-size(auto, size)" should set the property value]
+ expected: FAIL
+
+ [e.style['flex-basis'\] = "calc-size(min-content, size)" should set the property value]
+ expected: FAIL
+
+ [e.style['flex-basis'\] = "calc-size(max-content, size)" should set the property value]
+ expected: FAIL
+
+ [e.style['flex-basis'\] = "calc-size(fit-content, size)" should set the property value]
+ expected: FAIL
+
+ [e.style['flex-basis'\] = "calc-size(content, size)" should set the property value]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-values/calc-size/calc-size-parsing.tentative.html.ini b/tests/wpt/meta-legacy-layout/css/css-values/calc-size/calc-size-parsing.tentative.html.ini
deleted file mode 100644
index 07e762043c2..00000000000
--- a/tests/wpt/meta-legacy-layout/css/css-values/calc-size/calc-size-parsing.tentative.html.ini
+++ /dev/null
@@ -1,111 +0,0 @@
-[calc-size-parsing.tentative.html]
- [e.style['width'\] = "calc-size(fit-content, size)" should set the property value]
- expected: FAIL
-
- [e.style['height'\] = "calc-size(min-content, size * 2)" should set the property value]
- expected: FAIL
-
- [e.style['max-width'\] = "calc-size(max-content, size / 2)" should set the property value]
- expected: FAIL
-
- [e.style['max-height'\] = "calc-size(fit-content, 30px + size / 2)" should set the property value]
- expected: FAIL
-
- [e.style['width'\] = "calc-size(fit-content, 50% + size / 2)" should set the property value]
- expected: FAIL
-
- [e.style['width'\] = "calc-size(any, 25em)" should set the property value]
- expected: FAIL
-
- [e.style['width'\] = "calc-size(any, 40%)" should set the property value]
- expected: FAIL
-
- [e.style['width'\] = "calc-size(any, 50px + 30%)" should set the property value]
- expected: FAIL
-
- [e.style['width'\] = "calc-size(any, calc-size(10px, sign(size) * size))" should set the property value]
- expected: FAIL
-
- [e.style['width'\] = "calc-size(30px, 25em)" should set the property value]
- expected: FAIL
-
- [e.style['width'\] = "calc-size(calc-size(any, 30px), 25em)" should set the property value]
- expected: FAIL
-
- [e.style['width'\] = "calc-size(calc-size(2in, 30px), 25em)" should set the property value]
- expected: FAIL
-
- [e.style['width'\] = "calc-size(calc-size(min-content, 30px), 25em)" should set the property value]
- expected: FAIL
-
- [e.style['width'\] = "calc-size(calc-size(min-content, size), size)" should set the property value]
- expected: FAIL
-
- [e.style['width'\] = "calc-size(auto, size)" should set the property value]
- expected: FAIL
-
- [e.style['min-width'\] = "calc-size(auto, size)" should set the property value]
- expected: FAIL
-
- [e.style['height'\] = "calc-size(auto, size)" should set the property value]
- expected: FAIL
-
- [e.style['min-height'\] = "calc-size(auto, size)" should set the property value]
- expected: FAIL
-
- [e.style['width'\] = "calc-size(10px, sign(size) * size)" should set the property value]
- expected: FAIL
-
- [e.style['width'\] = "calc-size(30px)" should set the property value]
- expected: FAIL
-
- [e.style['width'\] = "calc-size(min(30px, 2em))" should set the property value]
- expected: FAIL
-
- [e.style['width'\] = "calc-size(calc-size(any, 30px))" should set the property value]
- expected: FAIL
-
- [e.style['width'\] = "calc-size(fit-content)" should set the property value]
- expected: FAIL
-
- [e.style['width'\] = "calc-size(calc-size(fit-content, size * 2))" should set the property value]
- expected: FAIL
-
- [e.style['width'\] = "calc-size(calc-size(30px))" should set the property value]
- expected: FAIL
-
- [e.style['width'\] = "calc-size(max-content, size)" should set the property value]
- expected: FAIL
-
- [e.style['height'\] = "calc-size(max-content, size)" should set the property value]
- expected: FAIL
-
- [e.style['max-width'\] = "calc-size(max-content, size)" should set the property value]
- expected: FAIL
-
- [e.style['max-height'\] = "calc-size(max-content, size)" should set the property value]
- expected: FAIL
-
- [e.style['min-width'\] = "calc-size(max-content, size)" should set the property value]
- expected: FAIL
-
- [e.style['min-height'\] = "calc-size(max-content, size)" should set the property value]
- expected: FAIL
-
- [e.style['block-size'\] = "calc-size(max-content, size)" should set the property value]
- expected: FAIL
-
- [e.style['inline-size'\] = "calc-size(max-content, size)" should set the property value]
- expected: FAIL
-
- [e.style['max-block-size'\] = "calc-size(max-content, size)" should set the property value]
- expected: FAIL
-
- [e.style['max-inline-size'\] = "calc-size(max-content, size)" should set the property value]
- expected: FAIL
-
- [e.style['min-block-size'\] = "calc-size(max-content, size)" should set the property value]
- expected: FAIL
-
- [e.style['min-inline-size'\] = "calc-size(max-content, size)" should set the property value]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-values/calc-size/calc-size-width.html.ini b/tests/wpt/meta-legacy-layout/css/css-values/calc-size/calc-size-width.html.ini
new file mode 100644
index 00000000000..42111367f45
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-values/calc-size/calc-size-width.html.ini
@@ -0,0 +1,57 @@
+[calc-size-width.html]
+ [resolved width for width: calc-size(any, 357px)]
+ expected: FAIL
+
+ [resolved width for width: calc-size(any, 31%)]
+ expected: FAIL
+
+ [resolved width for width: calc-size(max-content, 31%)]
+ expected: FAIL
+
+ [resolved width for width: calc-size(fit-content, 72px)]
+ expected: FAIL
+
+ [resolved width for width: calc-size(37px, 93px)]
+ expected: FAIL
+
+ [resolved width for width: calc-size(83px, size * 3)]
+ expected: FAIL
+
+ [resolved width for width: calc-size(min-content, size / 2)]
+ expected: FAIL
+
+ [resolved width for width: calc-size(max-content, size * 1.2)]
+ expected: FAIL
+
+ [resolved width for width: calc-size(fit-content, size / 4 + 30px)]
+ expected: FAIL
+
+ [resolved width for width: calc-size(stretch, size / 2 - 10%)]
+ expected: FAIL
+
+ [resolved width for width: calc-size(30px, 15em)]
+ expected: FAIL
+
+ [resolved width for width: calc-size(calc-size(any, 30px), 15em)]
+ expected: FAIL
+
+ [resolved width for width: calc-size(calc-size(2in, 30px), 15em)]
+ expected: FAIL
+
+ [resolved width for width: calc-size(calc-size(min-content, 30px), 15em)]
+ expected: FAIL
+
+ [resolved width for width: calc-size(calc-size(min-content, size), size)]
+ expected: FAIL
+
+ [resolved width for width: calc-size(auto, size * 0.6 + 23px)]
+ expected: FAIL
+
+ [resolved width for width: with container width 300px]
+ expected: FAIL
+
+ [resolved width for width: with container width 500px]
+ expected: FAIL
+
+ [resolved width for width: with container width 700px]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-values/calc-size/calc-size-width.tentative.html.ini b/tests/wpt/meta-legacy-layout/css/css-values/calc-size/calc-size-width.tentative.html.ini
deleted file mode 100644
index 5bc29b8c0e7..00000000000
--- a/tests/wpt/meta-legacy-layout/css/css-values/calc-size/calc-size-width.tentative.html.ini
+++ /dev/null
@@ -1,57 +0,0 @@
-[calc-size-width.tentative.html]
- [resolved width for width: calc-size(any, 357px)]
- expected: FAIL
-
- [resolved width for width: calc-size(any, 31%)]
- expected: FAIL
-
- [resolved width for width: calc-size(max-content, 31%)]
- expected: FAIL
-
- [resolved width for width: calc-size(fit-content, 72px)]
- expected: FAIL
-
- [resolved width for width: calc-size(37px, 93px)]
- expected: FAIL
-
- [resolved width for width: calc-size(83px, size * 3)]
- expected: FAIL
-
- [resolved width for width: calc-size(min-content, size / 2)]
- expected: FAIL
-
- [resolved width for width: calc-size(max-content, size * 1.2)]
- expected: FAIL
-
- [resolved width for width: calc-size(fit-content, size / 4 + 30px)]
- expected: FAIL
-
- [resolved width for width: calc-size(stretch, size / 2 - 10%)]
- expected: FAIL
-
- [resolved width for width: calc-size(30px, 15em)]
- expected: FAIL
-
- [resolved width for width: calc-size(calc-size(any, 30px), 15em)]
- expected: FAIL
-
- [resolved width for width: calc-size(calc-size(2in, 30px), 15em)]
- expected: FAIL
-
- [resolved width for width: calc-size(calc-size(min-content, 30px), 15em)]
- expected: FAIL
-
- [resolved width for width: calc-size(calc-size(min-content, size), size)]
- expected: FAIL
-
- [resolved width for width: calc-size(auto, size * 0.6 + 23px)]
- expected: FAIL
-
- [resolved width for width: with container width 300px]
- expected: FAIL
-
- [resolved width for width: with container width 500px]
- expected: FAIL
-
- [resolved width for width: with container width 700px]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-values/min-max-percentage-length-interpolation.html.ini b/tests/wpt/meta-legacy-layout/css/css-values/min-max-percentage-length-interpolation.html.ini
new file mode 100644
index 00000000000..d59c7b30211
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-values/min-max-percentage-length-interpolation.html.ini
@@ -0,0 +1,2 @@
+[min-max-percentage-length-interpolation.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-values/q-unit-case-insensitivity-001.html.ini b/tests/wpt/meta-legacy-layout/css/css-values/q-unit-case-insensitivity-001.html.ini
new file mode 100644
index 00000000000..0a4b494b07f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-values/q-unit-case-insensitivity-001.html.ini
@@ -0,0 +1,2 @@
+[q-unit-case-insensitivity-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-values/q-unit-case-insensitivity-002.html.ini b/tests/wpt/meta-legacy-layout/css/css-values/q-unit-case-insensitivity-002.html.ini
new file mode 100644
index 00000000000..591cc3814fd
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-values/q-unit-case-insensitivity-002.html.ini
@@ -0,0 +1,2 @@
+[q-unit-case-insensitivity-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/css-variables/variable-css-wide-keywords.html.ini b/tests/wpt/meta-legacy-layout/css/css-variables/variable-css-wide-keywords.html.ini
new file mode 100644
index 00000000000..1fddbc3a93f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/css-variables/variable-css-wide-keywords.html.ini
@@ -0,0 +1,33 @@
+[variable-css-wide-keywords.html]
+ [`initial` as a value for a non-inheriting registered custom property]
+ expected: FAIL
+
+ [`initial` as a value for an inheriting registered custom property]
+ expected: FAIL
+
+ [`unset` as a value for a non-inheriting registered custom property]
+ expected: FAIL
+
+ [`revert` as a value for a non-inheriting registered custom property]
+ expected: FAIL
+
+ [`revert-layer` as a `var()` fallback for an unregistered custom property]
+ expected: FAIL
+
+ [`initial` as a `var()` fallback for a non-inheriting registered custom property]
+ expected: FAIL
+
+ [`initial` as a `var()` fallback for an inheriting registered custom property]
+ expected: FAIL
+
+ [`unset` as a `var()` fallback for a non-inheriting registered custom property]
+ expected: FAIL
+
+ [`revert` as a `var()` fallback for a non-inheriting registered custom property]
+ expected: FAIL
+
+ [`revert-layer` as a `var()` fallback for a non-inheriting registered custom property]
+ expected: FAIL
+
+ [`revert-layer` as a `var()` fallback for an inheriting registered custom property]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/cssom-view/MediaQueryList-addListener-handleEvent.html.ini b/tests/wpt/meta-legacy-layout/css/cssom-view/MediaQueryList-addListener-handleEvent.html.ini
index 7b233e19a3d..70cbb50e1a5 100644
--- a/tests/wpt/meta-legacy-layout/css/cssom-view/MediaQueryList-addListener-handleEvent.html.ini
+++ b/tests/wpt/meta-legacy-layout/css/cssom-view/MediaQueryList-addListener-handleEvent.html.ini
@@ -6,9 +6,6 @@
[throws if handleEvent is thruthy and not callable]
expected: NOTRUN
- [looks up handleEvent method on every event dispatch]
- expected: TIMEOUT
-
[doesn't look up handleEvent method on callable event listeners]
expected: NOTRUN
diff --git a/tests/wpt/meta-legacy-layout/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini b/tests/wpt/meta-legacy-layout/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini
index 9c9f28ce8d7..40181360afd 100644
--- a/tests/wpt/meta-legacy-layout/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini
+++ b/tests/wpt/meta-legacy-layout/css/cssom-view/MediaQueryList-addListener-removeListener.html.ini
@@ -16,4 +16,7 @@
expected: NOTRUN
[listeners are called in order they were added]
+ expected: NOTRUN
+
+ [listeners are called correct number of times]
expected: TIMEOUT
diff --git a/tests/wpt/meta-legacy-layout/css/cssom-view/scrollintoview-containingblock-chain.html.ini b/tests/wpt/meta-legacy-layout/css/cssom-view/scrollintoview-containingblock-chain.html.ini
new file mode 100644
index 00000000000..b02f774d4c9
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/cssom-view/scrollintoview-containingblock-chain.html.ini
@@ -0,0 +1,3 @@
+[scrollintoview-containingblock-chain.html]
+ [scrollIntoView should not scroll ancestor overflow:scroll elements that are not containing block ancestors]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/cssom-view/scrollintoview-zero-height-item.html.ini b/tests/wpt/meta-legacy-layout/css/cssom-view/scrollintoview-zero-height-item.html.ini
new file mode 100644
index 00000000000..e39676b6ace
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/cssom-view/scrollintoview-zero-height-item.html.ini
@@ -0,0 +1,3 @@
+[scrollintoview-zero-height-item.html]
+ [scrollIntoView on zero height item]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/cssom/link-element-stylesheet-title.html.ini b/tests/wpt/meta-legacy-layout/css/cssom/link-element-stylesheet-title.html.ini
new file mode 100644
index 00000000000..8077f48d263
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/cssom/link-element-stylesheet-title.html.ini
@@ -0,0 +1,3 @@
+[link-element-stylesheet-title.html]
+ [StyleSheet.title]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/fill-stroke/animation/stroke-color-interpolation.html.ini b/tests/wpt/meta-legacy-layout/css/fill-stroke/animation/stroke-color-interpolation.html.ini
new file mode 100644
index 00000000000..cd924c39d8a
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/fill-stroke/animation/stroke-color-interpolation.html.ini
@@ -0,0 +1,516 @@
+[stroke-color-interpolation.html]
+ [CSS Transitions: property <stroke-color> from neutral to [green\] at (-0.3) should be [rgb(0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from neutral to [green\] at (0) should be [rgb(0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from neutral to [green\] at (0.3) should be [rgb(0, 38, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from neutral to [green\] at (0.6) should be [rgb(0, 77, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from neutral to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from neutral to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from neutral to [green\] at (-0.3) should be [rgb(0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from neutral to [green\] at (0) should be [rgb(0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from neutral to [green\] at (0.3) should be [rgb(0, 38, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from neutral to [green\] at (0.6) should be [rgb(0, 77, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from neutral to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from neutral to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from neutral to [green\] at (-0.3) should be [rgb(0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from neutral to [green\] at (0) should be [rgb(0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from neutral to [green\] at (0.3) should be [rgb(0, 38, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from neutral to [green\] at (0.6) should be [rgb(0, 77, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from neutral to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from neutral to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from neutral to [green\] at (-0.3) should be [rgb(0, 0, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from neutral to [green\] at (0) should be [rgb(0, 0, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from neutral to [green\] at (0.3) should be [rgb(0, 38, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from neutral to [green\] at (0.6) should be [rgb(0, 77, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from neutral to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from neutral to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [initial\] to [green\] at (-0.3) should be [rgba(0, 0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [initial\] to [green\] at (0) should be [rgba(0, 0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [initial\] to [green\] at (0.3) should be [rgba(0, 128, 0, 0.3)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [initial\] to [green\] at (0.6) should be [rgba(0, 128, 0, 0.6)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [initial\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [initial\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [initial\] to [green\] at (-0.3) should be [rgba(0, 0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [initial\] to [green\] at (0) should be [rgba(0, 0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [initial\] to [green\] at (0.3) should be [rgba(0, 128, 0, 0.3)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [initial\] to [green\] at (0.6) should be [rgba(0, 128, 0, 0.6)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [initial\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [initial\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [initial\] to [green\] at (-0.3) should be [rgba(0, 0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [initial\] to [green\] at (0) should be [rgba(0, 0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [initial\] to [green\] at (0.3) should be [rgba(0, 128, 0, 0.3)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [initial\] to [green\] at (0.6) should be [rgba(0, 128, 0, 0.6)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [initial\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [initial\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [initial\] to [green\] at (-0.3) should be [rgba(0, 0, 0, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [initial\] to [green\] at (0) should be [rgba(0, 0, 0, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [initial\] to [green\] at (0.3) should be [rgba(0, 128, 0, 0.3)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [initial\] to [green\] at (0.6) should be [rgba(0, 128, 0, 0.6)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [initial\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [initial\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [inherit\] to [green\] at (-0.3) should be [rgb(255, 255, 255)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [inherit\] to [green\] at (0) should be [rgb(238, 238, 238)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [inherit\] to [green\] at (0.3) should be [rgb(167, 205, 167)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [inherit\] to [green\] at (0.6) should be [rgb(95, 172, 95)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [inherit\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [inherit\] to [green\] at (1.5) should be [rgb(0, 73, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [inherit\] to [green\] at (-0.3) should be [rgb(255, 255, 255)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [inherit\] to [green\] at (0) should be [rgb(238, 238, 238)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [inherit\] to [green\] at (0.3) should be [rgb(167, 205, 167)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [inherit\] to [green\] at (0.6) should be [rgb(95, 172, 95)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [inherit\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [inherit\] to [green\] at (1.5) should be [rgb(0, 73, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [inherit\] to [green\] at (-0.3) should be [rgb(255, 255, 255)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [inherit\] to [green\] at (0) should be [rgb(238, 238, 238)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [inherit\] to [green\] at (0.3) should be [rgb(167, 205, 167)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [inherit\] to [green\] at (0.6) should be [rgb(95, 172, 95)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [inherit\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [inherit\] to [green\] at (1.5) should be [rgb(0, 73, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [inherit\] to [green\] at (-0.3) should be [rgb(255, 255, 255)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [inherit\] to [green\] at (0) should be [rgb(238, 238, 238)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [inherit\] to [green\] at (0.3) should be [rgb(167, 205, 167)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [inherit\] to [green\] at (0.6) should be [rgb(95, 172, 95)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [inherit\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [inherit\] to [green\] at (1.5) should be [rgb(0, 73, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [unset\] to [green\] at (-0.3) should be [rgb(255, 255, 255)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [unset\] to [green\] at (0) should be [rgb(238, 238, 238)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [unset\] to [green\] at (0.3) should be [rgb(167, 205, 167)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [unset\] to [green\] at (0.6) should be [rgb(95, 172, 95)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [unset\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [unset\] to [green\] at (1.5) should be [rgb(0, 73, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [unset\] to [green\] at (-0.3) should be [rgb(255, 255, 255)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [unset\] to [green\] at (0) should be [rgb(238, 238, 238)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [unset\] to [green\] at (0.3) should be [rgb(167, 205, 167)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [unset\] to [green\] at (0.6) should be [rgb(95, 172, 95)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [unset\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [unset\] to [green\] at (1.5) should be [rgb(0, 73, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [unset\] to [green\] at (-0.3) should be [rgb(255, 255, 255)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [unset\] to [green\] at (0) should be [rgb(238, 238, 238)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [unset\] to [green\] at (0.3) should be [rgb(167, 205, 167)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [unset\] to [green\] at (0.6) should be [rgb(95, 172, 95)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [unset\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [unset\] to [green\] at (1.5) should be [rgb(0, 73, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [unset\] to [green\] at (-0.3) should be [rgb(255, 255, 255)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [unset\] to [green\] at (0) should be [rgb(238, 238, 238)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [unset\] to [green\] at (0.3) should be [rgb(167, 205, 167)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [unset\] to [green\] at (0.6) should be [rgb(95, 172, 95)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [unset\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [unset\] to [green\] at (1.5) should be [rgb(0, 73, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [white\] to [orange\] at (-0.3) should be [white\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [white\] to [orange\] at (0) should be [white\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [white\] to [orange\] at (0.3) should be [rgb(255, 228, 179)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [white\] to [orange\] at (0.6) should be [rgb(255, 201, 102)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [white\] to [orange\] at (1) should be [orange\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [white\] to [orange\] at (1.5) should be [rgb(255, 120, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [white\] to [orange\] at (-0.3) should be [white\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [white\] to [orange\] at (0) should be [white\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [white\] to [orange\] at (0.3) should be [rgb(255, 228, 179)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [white\] to [orange\] at (0.6) should be [rgb(255, 201, 102)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [white\] to [orange\] at (1) should be [orange\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [white\] to [orange\] at (1.5) should be [rgb(255, 120, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [white\] to [orange\] at (-0.3) should be [white\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [white\] to [orange\] at (0) should be [white\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [white\] to [orange\] at (0.3) should be [rgb(255, 228, 179)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [white\] to [orange\] at (0.6) should be [rgb(255, 201, 102)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [white\] to [orange\] at (1) should be [orange\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [white\] to [orange\] at (1.5) should be [rgb(255, 120, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [white\] to [orange\] at (-0.3) should be [white\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [white\] to [orange\] at (0) should be [white\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [white\] to [orange\] at (0.3) should be [rgb(255, 228, 179)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [white\] to [orange\] at (0.6) should be [rgb(255, 201, 102)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [white\] to [orange\] at (1) should be [orange\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [white\] to [orange\] at (1.5) should be [rgb(255, 120, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [transparent\] to [green\] at (-0.3) should be [rgba(0, 0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [transparent\] to [green\] at (0) should be [rgba(0, 0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [transparent\] to [green\] at (0.3) should be [rgba(0, 128, 0, 0.3)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [transparent\] to [green\] at (0.6) should be [rgba(0, 128, 0, 0.6)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [transparent\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [transparent\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [transparent\] to [green\] at (-0.3) should be [rgba(0, 0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [transparent\] to [green\] at (0) should be [rgba(0, 0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [transparent\] to [green\] at (0.3) should be [rgba(0, 128, 0, 0.3)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [transparent\] to [green\] at (0.6) should be [rgba(0, 128, 0, 0.6)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [transparent\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [transparent\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [transparent\] to [green\] at (-0.3) should be [rgba(0, 0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [transparent\] to [green\] at (0) should be [rgba(0, 0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [transparent\] to [green\] at (0.3) should be [rgba(0, 128, 0, 0.3)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [transparent\] to [green\] at (0.6) should be [rgba(0, 128, 0, 0.6)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [transparent\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [transparent\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [transparent\] to [green\] at (-0.3) should be [rgba(0, 0, 0, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [transparent\] to [green\] at (0) should be [rgba(0, 0, 0, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [transparent\] to [green\] at (0.3) should be [rgba(0, 128, 0, 0.3)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [transparent\] to [green\] at (0.6) should be [rgba(0, 128, 0, 0.6)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [transparent\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [transparent\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (-0.5) should be [rgba(0, 0, 255, 0.38)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (0) should be [rgba(0, 0, 255, 0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (0.25) should be [rgba(0, 85, 170, 0.56)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (0.5) should be [rgba(0, 153, 102, 0.63)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (0.75) should be [rgba(0, 208, 47, 0.69)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (1) should be [rgba(0, 255, 0, 0.75)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (1.5) should be [rgba(0, 255, 0, 0.88)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (-0.5) should be [rgba(0, 0, 255, 0.38)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (0) should be [rgba(0, 0, 255, 0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (0.25) should be [rgba(0, 85, 170, 0.56)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (0.5) should be [rgba(0, 153, 102, 0.63)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (0.75) should be [rgba(0, 208, 47, 0.69)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (1) should be [rgba(0, 255, 0, 0.75)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (1.5) should be [rgba(0, 255, 0, 0.88)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (-0.5) should be [rgba(0, 0, 255, 0.38)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (0) should be [rgba(0, 0, 255, 0.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (0.25) should be [rgba(0, 85, 170, 0.56)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (0.5) should be [rgba(0, 153, 102, 0.63)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (0.75) should be [rgba(0, 208, 47, 0.69)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (1) should be [rgba(0, 255, 0, 0.75)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (1.5) should be [rgba(0, 255, 0, 0.88)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (-0.5) should be [rgba(0, 0, 255, 0.38)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (0) should be [rgba(0, 0, 255, 0.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (0.25) should be [rgba(0, 85, 170, 0.56)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (0.5) should be [rgba(0, 153, 102, 0.63)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (0.75) should be [rgba(0, 208, 47, 0.69)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (1) should be [rgba(0, 255, 0, 0.75)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (1.5) should be [rgba(0, 255, 0, 0.88)\]]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/filter-effects/backdrop-filter-backdrop-root-filter.html.ini b/tests/wpt/meta-legacy-layout/css/filter-effects/backdrop-filter-backdrop-root-filter.html.ini
new file mode 100644
index 00000000000..025a99e41fa
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/filter-effects/backdrop-filter-backdrop-root-filter.html.ini
@@ -0,0 +1,2 @@
+[backdrop-filter-backdrop-root-filter.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/filter-effects/backdrop-filter-backdrop-root-mix-blend-mode.html.ini b/tests/wpt/meta-legacy-layout/css/filter-effects/backdrop-filter-backdrop-root-mix-blend-mode.html.ini
new file mode 100644
index 00000000000..5852be841d6
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/filter-effects/backdrop-filter-backdrop-root-mix-blend-mode.html.ini
@@ -0,0 +1,2 @@
+[backdrop-filter-backdrop-root-mix-blend-mode.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/filter-effects/backdrop-filter-backdrop-root-opacity.html.ini b/tests/wpt/meta-legacy-layout/css/filter-effects/backdrop-filter-backdrop-root-opacity.html.ini
new file mode 100644
index 00000000000..95f299d8274
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/filter-effects/backdrop-filter-backdrop-root-opacity.html.ini
@@ -0,0 +1,2 @@
+[backdrop-filter-backdrop-root-opacity.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/filter-effects/clip-under-filter-001.html.ini b/tests/wpt/meta-legacy-layout/css/filter-effects/clip-under-filter-001.html.ini
new file mode 100644
index 00000000000..fbb017e55bc
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/filter-effects/clip-under-filter-001.html.ini
@@ -0,0 +1,2 @@
+[clip-under-filter-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/filter-effects/clip-under-filter-002.html.ini b/tests/wpt/meta-legacy-layout/css/filter-effects/clip-under-filter-002.html.ini
new file mode 100644
index 00000000000..c4275b0c058
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/filter-effects/clip-under-filter-002.html.ini
@@ -0,0 +1,2 @@
+[clip-under-filter-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/filter-effects/clip-under-filter-003.html.ini b/tests/wpt/meta-legacy-layout/css/filter-effects/clip-under-filter-003.html.ini
new file mode 100644
index 00000000000..daccafb1807
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/filter-effects/clip-under-filter-003.html.ini
@@ -0,0 +1,2 @@
+[clip-under-filter-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/filter-effects/drop-shadow-currentcolor-dynamic-001.html.ini b/tests/wpt/meta-legacy-layout/css/filter-effects/drop-shadow-currentcolor-dynamic-001.html.ini
new file mode 100644
index 00000000000..501a9ea8576
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/filter-effects/drop-shadow-currentcolor-dynamic-001.html.ini
@@ -0,0 +1,2 @@
+[drop-shadow-currentcolor-dynamic-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/filter-effects/dynamic-filter-changes-001.html.ini b/tests/wpt/meta-legacy-layout/css/filter-effects/dynamic-filter-changes-001.html.ini
new file mode 100644
index 00000000000..c9211c1a7bd
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/filter-effects/dynamic-filter-changes-001.html.ini
@@ -0,0 +1,2 @@
+[dynamic-filter-changes-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/filter-effects/filter-cb-dynamic-1a.html.ini b/tests/wpt/meta-legacy-layout/css/filter-effects/filter-cb-dynamic-1a.html.ini
new file mode 100644
index 00000000000..e5bd2744e11
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/filter-effects/filter-cb-dynamic-1a.html.ini
@@ -0,0 +1,2 @@
+[filter-cb-dynamic-1a.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/filter-effects/filter-cb-dynamic-1b.html.ini b/tests/wpt/meta-legacy-layout/css/filter-effects/filter-cb-dynamic-1b.html.ini
new file mode 100644
index 00000000000..072654fe989
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/filter-effects/filter-cb-dynamic-1b.html.ini
@@ -0,0 +1,2 @@
+[filter-cb-dynamic-1b.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/filter-effects/filter-contrast-001.html.ini b/tests/wpt/meta-legacy-layout/css/filter-effects/filter-contrast-001.html.ini
new file mode 100644
index 00000000000..d81da2a712f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/filter-effects/filter-contrast-001.html.ini
@@ -0,0 +1,2 @@
+[filter-contrast-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/filter-effects/filter-contrast-002.html.ini b/tests/wpt/meta-legacy-layout/css/filter-effects/filter-contrast-002.html.ini
new file mode 100644
index 00000000000..17ba6e16529
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/filter-effects/filter-contrast-002.html.ini
@@ -0,0 +1,2 @@
+[filter-contrast-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/filter-effects/filter-contrast-003.html.ini b/tests/wpt/meta-legacy-layout/css/filter-effects/filter-contrast-003.html.ini
new file mode 100644
index 00000000000..82435c18dd6
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/filter-effects/filter-contrast-003.html.ini
@@ -0,0 +1,2 @@
+[filter-contrast-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/filter-effects/filter-grayscale-001.html.ini b/tests/wpt/meta-legacy-layout/css/filter-effects/filter-grayscale-001.html.ini
new file mode 100644
index 00000000000..e3820b86f8f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/filter-effects/filter-grayscale-001.html.ini
@@ -0,0 +1,2 @@
+[filter-grayscale-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/filter-effects/filter-grayscale-002.html.ini b/tests/wpt/meta-legacy-layout/css/filter-effects/filter-grayscale-002.html.ini
new file mode 100644
index 00000000000..5ea2ed37ed0
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/filter-effects/filter-grayscale-002.html.ini
@@ -0,0 +1,2 @@
+[filter-grayscale-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/filter-effects/filter-grayscale-003.html.ini b/tests/wpt/meta-legacy-layout/css/filter-effects/filter-grayscale-003.html.ini
new file mode 100644
index 00000000000..4998f9b9013
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/filter-effects/filter-grayscale-003.html.ini
@@ -0,0 +1,2 @@
+[filter-grayscale-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/filter-effects/filter-grayscale-004.html.ini b/tests/wpt/meta-legacy-layout/css/filter-effects/filter-grayscale-004.html.ini
new file mode 100644
index 00000000000..9c1abbe7d17
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/filter-effects/filter-grayscale-004.html.ini
@@ -0,0 +1,2 @@
+[filter-grayscale-004.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/filter-effects/filter-grayscale-005.html.ini b/tests/wpt/meta-legacy-layout/css/filter-effects/filter-grayscale-005.html.ini
new file mode 100644
index 00000000000..523a42c4dcb
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/filter-effects/filter-grayscale-005.html.ini
@@ -0,0 +1,2 @@
+[filter-grayscale-005.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/filter-effects/filter-hue_rotate-001-test.html.ini b/tests/wpt/meta-legacy-layout/css/filter-effects/filter-hue_rotate-001-test.html.ini
new file mode 100644
index 00000000000..f8c63d40f6b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/filter-effects/filter-hue_rotate-001-test.html.ini
@@ -0,0 +1,2 @@
+[filter-hue_rotate-001-test.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/filter-effects/filter-invert-001-test.html.ini b/tests/wpt/meta-legacy-layout/css/filter-effects/filter-invert-001-test.html.ini
new file mode 100644
index 00000000000..459698ef47f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/filter-effects/filter-invert-001-test.html.ini
@@ -0,0 +1,2 @@
+[filter-invert-001-test.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/filter-effects/filter-invert-002-test.html.ini b/tests/wpt/meta-legacy-layout/css/filter-effects/filter-invert-002-test.html.ini
new file mode 100644
index 00000000000..ae3843c73bc
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/filter-effects/filter-invert-002-test.html.ini
@@ -0,0 +1,2 @@
+[filter-invert-002-test.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/filter-effects/filter-saturate-001-test.html.ini b/tests/wpt/meta-legacy-layout/css/filter-effects/filter-saturate-001-test.html.ini
new file mode 100644
index 00000000000..4d0b2f4e507
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/filter-effects/filter-saturate-001-test.html.ini
@@ -0,0 +1,2 @@
+[filter-saturate-001-test.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/filter-effects/filters-drop-shadow-001.html.ini b/tests/wpt/meta-legacy-layout/css/filter-effects/filters-drop-shadow-001.html.ini
new file mode 100644
index 00000000000..180e39f034b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/filter-effects/filters-drop-shadow-001.html.ini
@@ -0,0 +1,2 @@
+[filters-drop-shadow-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/filter-effects/filters-drop-shadow-003.html.ini b/tests/wpt/meta-legacy-layout/css/filter-effects/filters-drop-shadow-003.html.ini
new file mode 100644
index 00000000000..911a1dd84cb
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/filter-effects/filters-drop-shadow-003.html.ini
@@ -0,0 +1,2 @@
+[filters-drop-shadow-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/filter-effects/filters-grayscale-001-test.html.ini b/tests/wpt/meta-legacy-layout/css/filter-effects/filters-grayscale-001-test.html.ini
new file mode 100644
index 00000000000..adb94eb5068
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/filter-effects/filters-grayscale-001-test.html.ini
@@ -0,0 +1,2 @@
+[filters-grayscale-001-test.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/filter-effects/filters-opacity-001-test.html.ini b/tests/wpt/meta-legacy-layout/css/filter-effects/filters-opacity-001-test.html.ini
new file mode 100644
index 00000000000..d336aa817a0
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/filter-effects/filters-opacity-001-test.html.ini
@@ -0,0 +1,2 @@
+[filters-opacity-001-test.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/filter-effects/filters-sepia-001-test.html.ini b/tests/wpt/meta-legacy-layout/css/filter-effects/filters-sepia-001-test.html.ini
new file mode 100644
index 00000000000..a3bdfaf9d4e
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/filter-effects/filters-sepia-001-test.html.ini
@@ -0,0 +1,2 @@
+[filters-sepia-001-test.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/filter-effects/filters-test-brightness-001.html.ini b/tests/wpt/meta-legacy-layout/css/filter-effects/filters-test-brightness-001.html.ini
new file mode 100644
index 00000000000..2b7766b5141
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/filter-effects/filters-test-brightness-001.html.ini
@@ -0,0 +1,2 @@
+[filters-test-brightness-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/filter-effects/filters-test-brightness-002.html.ini b/tests/wpt/meta-legacy-layout/css/filter-effects/filters-test-brightness-002.html.ini
new file mode 100644
index 00000000000..2715ff54ccf
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/filter-effects/filters-test-brightness-002.html.ini
@@ -0,0 +1,2 @@
+[filters-test-brightness-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/filter-effects/filters-test-brightness-003.html.ini b/tests/wpt/meta-legacy-layout/css/filter-effects/filters-test-brightness-003.html.ini
new file mode 100644
index 00000000000..df5382158af
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/filter-effects/filters-test-brightness-003.html.ini
@@ -0,0 +1,2 @@
+[filters-test-brightness-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/filter-effects/fixed-pos-filter-clip-001.html.ini b/tests/wpt/meta-legacy-layout/css/filter-effects/fixed-pos-filter-clip-001.html.ini
new file mode 100644
index 00000000000..ee1318b3089
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/filter-effects/fixed-pos-filter-clip-001.html.ini
@@ -0,0 +1,2 @@
+[fixed-pos-filter-clip-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/filter-effects/fixed-pos-filter-clip-002.html.ini b/tests/wpt/meta-legacy-layout/css/filter-effects/fixed-pos-filter-clip-002.html.ini
new file mode 100644
index 00000000000..6e4c6f7b25c
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/filter-effects/fixed-pos-filter-clip-002.html.ini
@@ -0,0 +1,2 @@
+[fixed-pos-filter-clip-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/filter-effects/root-element-with-opacity-filter-001.html.ini b/tests/wpt/meta-legacy-layout/css/filter-effects/root-element-with-opacity-filter-001.html.ini
new file mode 100644
index 00000000000..c0d0ed8c711
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/css/filter-effects/root-element-with-opacity-filter-001.html.ini
@@ -0,0 +1,2 @@
+[root-element-with-opacity-filter-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/css/selectors/parsing/parse-part.html.ini b/tests/wpt/meta-legacy-layout/css/selectors/parsing/parse-part.html.ini
index f4b74af65bf..8a0356d9826 100644
--- a/tests/wpt/meta-legacy-layout/css/selectors/parsing/parse-part.html.ini
+++ b/tests/wpt/meta-legacy-layout/css/selectors/parsing/parse-part.html.ini
@@ -70,3 +70,9 @@
["::part(foo):where(nav ul)" should be a valid selector]
expected: FAIL
+
+ ["::part(foo):disabled" should be a valid selector]
+ expected: FAIL
+
+ ["::part(foo):checked" should be a valid selector]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/dom/idlharness.window.js.ini b/tests/wpt/meta-legacy-layout/dom/idlharness.window.js.ini
index 44af306d92c..e6ed5c4b6b5 100644
--- a/tests/wpt/meta-legacy-layout/dom/idlharness.window.js.ini
+++ b/tests/wpt/meta-legacy-layout/dom/idlharness.window.js.ini
@@ -806,18 +806,12 @@
[Document interface: attribute fullscreen]
expected: FAIL
- [Document interface: operation exitFullscreen()]
- expected: FAIL
-
[Document interface: attribute fullscreenElement]
expected: FAIL
[ShadowRoot interface: attribute fullscreenElement]
expected: FAIL
- [Element interface: operation requestFullscreen(optional FullscreenOptions)]
- expected: FAIL
-
[Element interface: attribute onfullscreenchange]
expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/dom/nodes/moveBefore/tentative/popover-preserve.html.ini b/tests/wpt/meta-legacy-layout/dom/nodes/moveBefore/tentative/popover-preserve.html.ini
new file mode 100644
index 00000000000..8f5193b1f88
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/dom/nodes/moveBefore/tentative/popover-preserve.html.ini
@@ -0,0 +1,3 @@
+[popover-preserve.html]
+ [when reparenting an open popover, it shouldn't be closed automatically]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/fetch/api/idlharness.any.js.ini b/tests/wpt/meta-legacy-layout/fetch/api/idlharness.any.js.ini
index 386713b9c51..c07a4038f26 100644
--- a/tests/wpt/meta-legacy-layout/fetch/api/idlharness.any.js.ini
+++ b/tests/wpt/meta-legacy-layout/fetch/api/idlharness.any.js.ini
@@ -5,12 +5,6 @@
[idlharness.any.html]
- [Response interface: operation blob()]
- expected: FAIL
-
- [Response interface: operation formData()]
- expected: FAIL
-
[Request interface: new Request('about:blank') must inherit property "isHistoryNavigation" with the proper type]
expected: FAIL
@@ -26,21 +20,6 @@
[Window interface: calling fetch(RequestInfo, RequestInit) on window with too few arguments must throw TypeError]
expected: FAIL
- [Request interface: operation formData()]
- expected: FAIL
-
- [Request interface: operation json()]
- expected: FAIL
-
- [Request interface: operation text()]
- expected: FAIL
-
- [Response interface: operation text()]
- expected: FAIL
-
- [Request interface: operation blob()]
- expected: FAIL
-
[Request interface: attribute isHistoryNavigation]
expected: FAIL
@@ -50,32 +29,18 @@
[Request interface: attribute isReloadNavigation]
expected: FAIL
- [Response interface: operation json()]
- expected: FAIL
-
- [Response interface: operation arrayBuffer()]
- expected: FAIL
-
[Request interface: new Request('about:blank') must inherit property "isReloadNavigation" with the proper type]
expected: FAIL
[Request interface: new Request('about:blank') must inherit property "signal" with the proper type]
expected: FAIL
- [Request interface: operation arrayBuffer()]
- expected: FAIL
-
[Response interface: new Response() must inherit property "trailer" with the proper type]
expected: FAIL
[Response interface: attribute trailer]
expected: FAIL
- [Window interface: calling fetch(RequestInfo, optional RequestInit) on window with too few arguments must throw TypeError]
-
- [Window interface: operation fetch(RequestInfo, optional RequestInit)]
- expected: FAIL
-
[Request interface: attribute duplex]
expected: FAIL
@@ -102,12 +67,6 @@
[idlharness.any.worker.html]
- [Response interface: operation blob()]
- expected: FAIL
-
- [Response interface: operation formData()]
- expected: FAIL
-
[Request interface: new Request('about:blank') must inherit property "isHistoryNavigation" with the proper type]
expected: FAIL
@@ -117,24 +76,9 @@
[Request interface: attribute keepalive]
expected: FAIL
- [Request interface: operation formData()]
- expected: FAIL
-
- [Request interface: operation json()]
- expected: FAIL
-
- [Request interface: operation text()]
- expected: FAIL
-
[WorkerGlobalScope interface: calling fetch(RequestInfo, RequestInit) on self with too few arguments must throw TypeError]
expected: FAIL
- [Response interface: operation text()]
- expected: FAIL
-
- [Request interface: operation blob()]
- expected: FAIL
-
[Request interface: attribute isHistoryNavigation]
expected: FAIL
@@ -144,12 +88,6 @@
[Request interface: attribute isReloadNavigation]
expected: FAIL
- [Response interface: operation json()]
- expected: FAIL
-
- [Response interface: operation arrayBuffer()]
- expected: FAIL
-
[WorkerGlobalScope interface: operation fetch(RequestInfo, RequestInit)]
expected: FAIL
@@ -159,20 +97,12 @@
[Request interface: new Request('about:blank') must inherit property "signal" with the proper type]
expected: FAIL
- [Request interface: operation arrayBuffer()]
- expected: FAIL
-
[Response interface: new Response() must inherit property "trailer" with the proper type]
expected: FAIL
[Response interface: attribute trailer]
expected: FAIL
- [WorkerGlobalScope interface: calling fetch(RequestInfo, optional RequestInit) on self with too few arguments must throw TypeError]
-
- [WorkerGlobalScope interface: operation fetch(RequestInfo, optional RequestInit)]
- expected: FAIL
-
[Request interface: attribute duplex]
expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/fetch/metadata/generated/css-font-face.sub.tentative.html.ini b/tests/wpt/meta-legacy-layout/fetch/metadata/generated/css-font-face.sub.tentative.html.ini
index fe95022ae6e..d76438d94b3 100644
--- a/tests/wpt/meta-legacy-layout/fetch/metadata/generated/css-font-face.sub.tentative.html.ini
+++ b/tests/wpt/meta-legacy-layout/fetch/metadata/generated/css-font-face.sub.tentative.html.ini
@@ -23,9 +23,6 @@
[sec-fetch-site - HTTPS downgrade-upgrade]
expected: FAIL
- [sec-fetch-dest - Not sent to non-trustworthy same-origin destination]
- expected: FAIL
-
[sec-fetch-user - Not sent to non-trustworthy same-origin destination]
expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/fullscreen/idlharness.window.js.ini b/tests/wpt/meta-legacy-layout/fullscreen/idlharness.window.js.ini
index 77acf9b97d4..93566efe979 100644
--- a/tests/wpt/meta-legacy-layout/fullscreen/idlharness.window.js.ini
+++ b/tests/wpt/meta-legacy-layout/fullscreen/idlharness.window.js.ini
@@ -5,9 +5,6 @@
[Element interface: operation requestFullscreen()]
expected: FAIL
- [Document interface: operation exitFullscreen()]
- expected: FAIL
-
[Element interface: document.createElementNS(null, "test") must inherit property "onfullscreenerror" with the proper type]
expected: FAIL
@@ -34,7 +31,3 @@
[Element interface: operation requestFullscreen(FullscreenOptions)]
expected: FAIL
-
- [Element interface: operation requestFullscreen(optional FullscreenOptions)]
- expected: FAIL
-
diff --git a/tests/wpt/meta-legacy-layout/gamepad/idlharness.window.js.ini b/tests/wpt/meta-legacy-layout/gamepad/idlharness.window.js.ini
index 577d82d9237..885d39022db 100644
--- a/tests/wpt/meta-legacy-layout/gamepad/idlharness.window.js.ini
+++ b/tests/wpt/meta-legacy-layout/gamepad/idlharness.window.js.ini
@@ -1,10 +1,4 @@
[idlharness.window.html]
- [GamepadHapticActuator interface: operation playEffect(GamepadHapticEffectType, optional GamepadEffectParameters)]
- expected: FAIL
-
- [GamepadHapticActuator interface: operation reset()]
- expected: FAIL
-
[GamepadEvent must be primary interface of new GamepadEvent("gamepad")]
expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/empty-iframe-load-event.html.ini b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/empty-iframe-load-event.html.ini
deleted file mode 100644
index 3e07e6b7d1f..00000000000
--- a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/empty-iframe-load-event.html.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[empty-iframe-load-event.html]
- [Check execution order from nested timeout]
- expected: FAIL
-
- [Check execution order on load handler]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-src-aboutblank-navigate-immediately.html.ini b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-src-aboutblank-navigate-immediately.html.ini
index 530635e744f..1bca09f21d6 100644
--- a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-src-aboutblank-navigate-immediately.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-src-aboutblank-navigate-immediately.html.ini
@@ -4,3 +4,6 @@
[Navigating to a different document with link click]
expected: FAIL
+
+ [Navigating to a different document with form submission]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/a-click.html.ini b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/a-click.html.ini
new file mode 100644
index 00000000000..60a4fa51f8a
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/browsers/browsing-the-web/navigating-across-documents/replace-before-load/a-click.html.ini
@@ -0,0 +1,3 @@
+[a-click.html]
+ [aElement.click() before the load event must NOT replace]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/manual/filters/canvas-fillStyle-opacity.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/manual/filters/canvas-fillStyle-opacity.html.ini
new file mode 100644
index 00000000000..afde27c68ff
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/manual/filters/canvas-fillStyle-opacity.html.ini
@@ -0,0 +1,2 @@
+[canvas-fillStyle-opacity.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/manual/filters/canvas-globalAlpha.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/manual/filters/canvas-globalAlpha.html.ini
new file mode 100644
index 00000000000..835b71afb18
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/manual/filters/canvas-globalAlpha.html.ini
@@ -0,0 +1,2 @@
+[canvas-globalAlpha.html]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/manual/imagebitmap/canvas-createImageBitmap-resize.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/manual/imagebitmap/canvas-createImageBitmap-resize.html.ini
index d0c4b9d0875..20d31fc80de 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/manual/imagebitmap/canvas-createImageBitmap-resize.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/manual/imagebitmap/canvas-createImageBitmap-resize.html.ini
@@ -1,5 +1,5 @@
[canvas-createImageBitmap-resize.html]
- expected: ERROR
+ expected: TIMEOUT
[createImageBitmap from an ImageData with resize option.]
expected: NOTRUN
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/manual/imagebitmap/createImageBitmap-invalid-args.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/manual/imagebitmap/createImageBitmap-invalid-args.html.ini
index 191de56c828..8daf97ba765 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/manual/imagebitmap/createImageBitmap-invalid-args.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/manual/imagebitmap/createImageBitmap-invalid-args.html.ini
@@ -162,9 +162,6 @@
[createImageBitmap with an ImageData source and a value between 0 and 1 in resizeWidth]
expected: NOTRUN
- [createImageBitmap with a bitmap HTMLImageElement source and a value between 0 and 1 in resizeWidth]
- expected: FAIL
-
[createImageBitmap with a vector SVGImageElement source and a value of 0 int resizeWidth]
expected: NOTRUN
@@ -174,9 +171,6 @@
[createImageBitmap with an ImageBitmap source and a value of 0 int resizeWidth]
expected: NOTRUN
- [createImageBitmap with a bitmap HTMLImageElement source and a value between 0 and 1 in resizeHeight]
- expected: FAIL
-
[createImageBitmap with an ImageData source and a value of 0 in resizeHeight]
expected: NOTRUN
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/manual/imagebitmap/createImageBitmap-serializable.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/manual/imagebitmap/createImageBitmap-serializable.html.ini
index ea398e580ef..7616121487c 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/manual/imagebitmap/createImageBitmap-serializable.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/manual/imagebitmap/createImageBitmap-serializable.html.ini
@@ -1,5 +1,5 @@
[createImageBitmap-serializable.html]
- expected: ERROR
+ expected: TIMEOUT
[Serialize ImageBitmap created from a vector SVGImageElement]
expected: NOTRUN
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-Blob.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-Blob.html.ini
index 61c181d2dc8..a539db2a3e4 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-Blob.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-Blob.html.ini
@@ -4,622 +4,622 @@
expected: TIMEOUT
[sRGB-FF0000FF.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-FF0000FF.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[sRGB-FF0000FF.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-FF0000FF.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[sRGB-FF0000FF.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-FF0000FF.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[sRGB-FF0000FF.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-FF0000CC.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[sRGB-FF0000CC.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-FF0000CC.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[sRGB-FF0000CC.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-FF0000CC.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[sRGB-FF0000CC.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-FF0000CC.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[sRGB-FF0000CC.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-BB0000FF.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[sRGB-BB0000FF.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-BB0000FF.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[sRGB-BB0000FF.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-BB0000FF.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[sRGB-BB0000FF.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-BB0000FF.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[sRGB-BB0000FF.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-BB0000CC.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[sRGB-BB0000CC.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-BB0000CC.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[sRGB-BB0000CC.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-BB0000CC.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[sRGB-BB0000CC.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-BB0000CC.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[sRGB-BB0000CC.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-FF0000FF.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Display-P3-FF0000FF.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-FF0000FF.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Display-P3-FF0000FF.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-FF0000FF.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Display-P3-FF0000FF.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-FF0000FF.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Display-P3-FF0000FF.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-FF0000CC.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Display-P3-FF0000CC.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-FF0000CC.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Display-P3-FF0000CC.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-FF0000CC.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Display-P3-FF0000CC.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-FF0000CC.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Display-P3-FF0000CC.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-BB0000FF.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Display-P3-BB0000FF.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-BB0000FF.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Display-P3-BB0000FF.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-BB0000FF.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Display-P3-BB0000FF.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-BB0000FF.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Display-P3-BB0000FF.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-BB0000CC.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Display-P3-BB0000CC.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-BB0000CC.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Display-P3-BB0000CC.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-BB0000CC.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Display-P3-BB0000CC.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-BB0000CC.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Display-P3-BB0000CC.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-FF0000FF.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-FF0000FF.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-FF0000FF.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-FF0000FF.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-FF0000FF.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-FF0000FF.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-FF0000FF.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-FF0000FF.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-FF0000CC.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-FF0000CC.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-FF0000CC.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-FF0000CC.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-FF0000CC.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-FF0000CC.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-FF0000CC.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-FF0000CC.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-BB0000FF.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-BB0000FF.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-BB0000FF.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-BB0000FF.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-BB0000FF.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-BB0000FF.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-BB0000FF.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-BB0000FF.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-BB0000CC.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-BB0000CC.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-BB0000CC.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-BB0000CC.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-BB0000CC.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-BB0000CC.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-BB0000CC.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-BB0000CC.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Generic-CMYK-FF000000.jpg, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Generic-CMYK-FF000000.jpg, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Generic-CMYK-FF000000.jpg, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Generic-CMYK-FF000000.jpg, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Generic-CMYK-FF000000.jpg, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Generic-CMYK-FF000000.jpg, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Generic-CMYK-FF000000.jpg, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Generic-CMYK-FF000000.jpg, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Generic-CMYK-BE000000.jpg, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Generic-CMYK-BE000000.jpg, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Generic-CMYK-BE000000.jpg, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Generic-CMYK-BE000000.jpg, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Generic-CMYK-BE000000.jpg, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Generic-CMYK-BE000000.jpg, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Generic-CMYK-BE000000.jpg, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Generic-CMYK-BE000000.jpg, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-FFFF00000000FFFF.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[sRGB-FFFF00000000FFFF.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-FFFF00000000FFFF.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[sRGB-FFFF00000000FFFF.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-FFFF00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[sRGB-FFFF00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-FFFF00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[sRGB-FFFF00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-FFFF00000000CCCC.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[sRGB-FFFF00000000CCCC.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-FFFF00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[sRGB-FFFF00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-FFFF00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[sRGB-FFFF00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-FFFF00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[sRGB-FFFF00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-BBBC00000000FFFF.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[sRGB-BBBC00000000FFFF.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-BBBC00000000FFFF.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[sRGB-BBBC00000000FFFF.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-BBBC00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[sRGB-BBBC00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-BBBC00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[sRGB-BBBC00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-BBBC00000000CCCC.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[sRGB-BBBC00000000CCCC.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-BBBC00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[sRGB-BBBC00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-BBBC00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[sRGB-BBBC00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-BBBC00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[sRGB-BBBC00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-FFFF00000000FFFF.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Display-P3-FFFF00000000FFFF.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-FFFF00000000FFFF.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Display-P3-FFFF00000000FFFF.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-FFFF00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Display-P3-FFFF00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-FFFF00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Display-P3-FFFF00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-FFFF00000000CCCC.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Display-P3-FFFF00000000CCCC.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-FFFF00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Display-P3-FFFF00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-FFFF00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Display-P3-FFFF00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-FFFF00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Display-P3-FFFF00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-BBBC00000000FFFF.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Display-P3-BBBC00000000FFFF.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-BBBC00000000FFFF.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Display-P3-BBBC00000000FFFF.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-BBBC00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Display-P3-BBBC00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-BBBC00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Display-P3-BBBC00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-BBBC00000000CCCC.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Display-P3-BBBC00000000CCCC.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-BBBC00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Display-P3-BBBC00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-BBBC00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Display-P3-BBBC00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-BBBC00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Display-P3-BBBC00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-FFFF00000000FFFF.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-FFFF00000000FFFF.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-FFFF00000000FFFF.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-FFFF00000000FFFF.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-FFFF00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-FFFF00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-FFFF00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-FFFF00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-FFFF00000000CCCC.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-FFFF00000000CCCC.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-FFFF00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-FFFF00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-FFFF00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-FFFF00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-FFFF00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-FFFF00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-BBBC00000000FFFF.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-BBBC00000000FFFF.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-BBBC00000000FFFF.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-BBBC00000000FFFF.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-BBBC00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-BBBC00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-BBBC00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-BBBC00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-BBBC00000000CCCC.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-BBBC00000000CCCC.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-BBBC00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-BBBC00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-BBBC00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-BBBC00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-BBBC00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-BBBC00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-cloned.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-cloned.html.ini
index 0eb162aeb21..8c68e3ebfa1 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-cloned.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-cloned.html.ini
@@ -4,622 +4,622 @@
expected: TIMEOUT
[sRGB-FF0000FF.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-FF0000FF.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[sRGB-FF0000FF.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-FF0000FF.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[sRGB-FF0000FF.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-FF0000FF.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[sRGB-FF0000FF.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-FF0000CC.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[sRGB-FF0000CC.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-FF0000CC.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[sRGB-FF0000CC.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-FF0000CC.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[sRGB-FF0000CC.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-FF0000CC.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[sRGB-FF0000CC.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-BB0000FF.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[sRGB-BB0000FF.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-BB0000FF.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[sRGB-BB0000FF.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-BB0000FF.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[sRGB-BB0000FF.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-BB0000FF.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[sRGB-BB0000FF.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-BB0000CC.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[sRGB-BB0000CC.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-BB0000CC.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[sRGB-BB0000CC.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-BB0000CC.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[sRGB-BB0000CC.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-BB0000CC.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[sRGB-BB0000CC.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-FF0000FF.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Display-P3-FF0000FF.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-FF0000FF.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Display-P3-FF0000FF.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-FF0000FF.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Display-P3-FF0000FF.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-FF0000FF.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Display-P3-FF0000FF.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-FF0000CC.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Display-P3-FF0000CC.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-FF0000CC.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Display-P3-FF0000CC.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-FF0000CC.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Display-P3-FF0000CC.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-FF0000CC.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Display-P3-FF0000CC.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-BB0000FF.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Display-P3-BB0000FF.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-BB0000FF.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Display-P3-BB0000FF.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-BB0000FF.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Display-P3-BB0000FF.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-BB0000FF.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Display-P3-BB0000FF.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-BB0000CC.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Display-P3-BB0000CC.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-BB0000CC.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Display-P3-BB0000CC.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-BB0000CC.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Display-P3-BB0000CC.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-BB0000CC.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Display-P3-BB0000CC.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-FF0000FF.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-FF0000FF.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-FF0000FF.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-FF0000FF.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-FF0000FF.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-FF0000FF.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-FF0000FF.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-FF0000FF.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-FF0000CC.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-FF0000CC.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-FF0000CC.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-FF0000CC.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-FF0000CC.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-FF0000CC.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-FF0000CC.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-FF0000CC.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-BB0000FF.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-BB0000FF.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-BB0000FF.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-BB0000FF.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-BB0000FF.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-BB0000FF.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-BB0000FF.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-BB0000FF.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-BB0000CC.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-BB0000CC.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-BB0000CC.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-BB0000CC.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-BB0000CC.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-BB0000CC.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-BB0000CC.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-BB0000CC.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Generic-CMYK-FF000000.jpg, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Generic-CMYK-FF000000.jpg, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Generic-CMYK-FF000000.jpg, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Generic-CMYK-FF000000.jpg, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Generic-CMYK-FF000000.jpg, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Generic-CMYK-FF000000.jpg, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Generic-CMYK-FF000000.jpg, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Generic-CMYK-FF000000.jpg, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Generic-CMYK-BE000000.jpg, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Generic-CMYK-BE000000.jpg, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Generic-CMYK-BE000000.jpg, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Generic-CMYK-BE000000.jpg, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Generic-CMYK-BE000000.jpg, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Generic-CMYK-BE000000.jpg, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Generic-CMYK-BE000000.jpg, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Generic-CMYK-BE000000.jpg, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-FFFF00000000FFFF.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[sRGB-FFFF00000000FFFF.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-FFFF00000000FFFF.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[sRGB-FFFF00000000FFFF.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-FFFF00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[sRGB-FFFF00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-FFFF00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[sRGB-FFFF00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-FFFF00000000CCCC.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[sRGB-FFFF00000000CCCC.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-FFFF00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[sRGB-FFFF00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-FFFF00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[sRGB-FFFF00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-FFFF00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[sRGB-FFFF00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-BBBC00000000FFFF.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[sRGB-BBBC00000000FFFF.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-BBBC00000000FFFF.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[sRGB-BBBC00000000FFFF.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-BBBC00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[sRGB-BBBC00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-BBBC00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[sRGB-BBBC00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-BBBC00000000CCCC.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[sRGB-BBBC00000000CCCC.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-BBBC00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[sRGB-BBBC00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-BBBC00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[sRGB-BBBC00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-BBBC00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[sRGB-BBBC00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-FFFF00000000FFFF.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Display-P3-FFFF00000000FFFF.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-FFFF00000000FFFF.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Display-P3-FFFF00000000FFFF.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-FFFF00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Display-P3-FFFF00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-FFFF00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Display-P3-FFFF00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-FFFF00000000CCCC.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Display-P3-FFFF00000000CCCC.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-FFFF00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Display-P3-FFFF00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-FFFF00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Display-P3-FFFF00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-FFFF00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Display-P3-FFFF00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-BBBC00000000FFFF.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Display-P3-BBBC00000000FFFF.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-BBBC00000000FFFF.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Display-P3-BBBC00000000FFFF.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-BBBC00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Display-P3-BBBC00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-BBBC00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Display-P3-BBBC00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-BBBC00000000CCCC.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Display-P3-BBBC00000000CCCC.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-BBBC00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Display-P3-BBBC00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-BBBC00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Display-P3-BBBC00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-BBBC00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Display-P3-BBBC00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-FFFF00000000FFFF.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-FFFF00000000FFFF.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-FFFF00000000FFFF.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-FFFF00000000FFFF.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-FFFF00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-FFFF00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-FFFF00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-FFFF00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-FFFF00000000CCCC.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-FFFF00000000CCCC.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-FFFF00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-FFFF00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-FFFF00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-FFFF00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-FFFF00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-FFFF00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-BBBC00000000FFFF.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-BBBC00000000FFFF.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-BBBC00000000FFFF.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-BBBC00000000FFFF.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-BBBC00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-BBBC00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-BBBC00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-BBBC00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-BBBC00000000CCCC.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-BBBC00000000CCCC.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-BBBC00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-BBBC00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-BBBC00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-BBBC00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-BBBC00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-BBBC00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-image.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-image.html.ini
index e1b474da4c7..df914f62f85 100644
--- a/tests/wpt/meta-legacy-layout/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-image.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/canvas/element/manual/wide-gamut-canvas/canvas-display-p3-drawImage-ImageBitmap-image.html.ini
@@ -4,622 +4,622 @@
expected: TIMEOUT
[sRGB-FF0000FF.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-FF0000FF.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[sRGB-FF0000FF.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-FF0000FF.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[sRGB-FF0000FF.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-FF0000FF.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[sRGB-FF0000FF.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-FF0000CC.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[sRGB-FF0000CC.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-FF0000CC.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[sRGB-FF0000CC.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-FF0000CC.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[sRGB-FF0000CC.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-FF0000CC.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[sRGB-FF0000CC.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-BB0000FF.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[sRGB-BB0000FF.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-BB0000FF.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[sRGB-BB0000FF.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-BB0000FF.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[sRGB-BB0000FF.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-BB0000FF.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[sRGB-BB0000FF.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-BB0000CC.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[sRGB-BB0000CC.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-BB0000CC.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[sRGB-BB0000CC.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-BB0000CC.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[sRGB-BB0000CC.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-BB0000CC.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[sRGB-BB0000CC.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-FF0000FF.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Display-P3-FF0000FF.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-FF0000FF.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Display-P3-FF0000FF.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-FF0000FF.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Display-P3-FF0000FF.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-FF0000FF.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Display-P3-FF0000FF.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-FF0000CC.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Display-P3-FF0000CC.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-FF0000CC.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Display-P3-FF0000CC.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-FF0000CC.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Display-P3-FF0000CC.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-FF0000CC.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Display-P3-FF0000CC.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-BB0000FF.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Display-P3-BB0000FF.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-BB0000FF.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Display-P3-BB0000FF.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-BB0000FF.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Display-P3-BB0000FF.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-BB0000FF.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Display-P3-BB0000FF.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-BB0000CC.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Display-P3-BB0000CC.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-BB0000CC.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Display-P3-BB0000CC.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-BB0000CC.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Display-P3-BB0000CC.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-BB0000CC.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Display-P3-BB0000CC.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-FF0000FF.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-FF0000FF.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-FF0000FF.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-FF0000FF.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-FF0000FF.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-FF0000FF.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-FF0000FF.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-FF0000FF.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-FF0000CC.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-FF0000CC.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-FF0000CC.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-FF0000CC.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-FF0000CC.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-FF0000CC.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-FF0000CC.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-FF0000CC.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-BB0000FF.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-BB0000FF.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-BB0000FF.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-BB0000FF.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-BB0000FF.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-BB0000FF.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-BB0000FF.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-BB0000FF.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-BB0000CC.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-BB0000CC.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-BB0000CC.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-BB0000CC.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-BB0000CC.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-BB0000CC.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-BB0000CC.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-BB0000CC.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Generic-CMYK-FF000000.jpg, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Generic-CMYK-FF000000.jpg, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Generic-CMYK-FF000000.jpg, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Generic-CMYK-FF000000.jpg, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Generic-CMYK-FF000000.jpg, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Generic-CMYK-FF000000.jpg, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Generic-CMYK-FF000000.jpg, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Generic-CMYK-FF000000.jpg, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Generic-CMYK-BE000000.jpg, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Generic-CMYK-BE000000.jpg, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Generic-CMYK-BE000000.jpg, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Generic-CMYK-BE000000.jpg, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Generic-CMYK-BE000000.jpg, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Generic-CMYK-BE000000.jpg, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Generic-CMYK-BE000000.jpg, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Generic-CMYK-BE000000.jpg, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-FFFF00000000FFFF.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[sRGB-FFFF00000000FFFF.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-FFFF00000000FFFF.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[sRGB-FFFF00000000FFFF.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-FFFF00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[sRGB-FFFF00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-FFFF00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[sRGB-FFFF00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-FFFF00000000CCCC.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[sRGB-FFFF00000000CCCC.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-FFFF00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[sRGB-FFFF00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-FFFF00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[sRGB-FFFF00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-FFFF00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[sRGB-FFFF00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-BBBC00000000FFFF.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[sRGB-BBBC00000000FFFF.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-BBBC00000000FFFF.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[sRGB-BBBC00000000FFFF.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-BBBC00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[sRGB-BBBC00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-BBBC00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[sRGB-BBBC00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-BBBC00000000CCCC.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[sRGB-BBBC00000000CCCC.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-BBBC00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[sRGB-BBBC00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-BBBC00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[sRGB-BBBC00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[sRGB-BBBC00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[sRGB-BBBC00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-FFFF00000000FFFF.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Display-P3-FFFF00000000FFFF.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-FFFF00000000FFFF.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Display-P3-FFFF00000000FFFF.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-FFFF00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Display-P3-FFFF00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-FFFF00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Display-P3-FFFF00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-FFFF00000000CCCC.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Display-P3-FFFF00000000CCCC.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-FFFF00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Display-P3-FFFF00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-FFFF00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Display-P3-FFFF00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-FFFF00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Display-P3-FFFF00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-BBBC00000000FFFF.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Display-P3-BBBC00000000FFFF.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-BBBC00000000FFFF.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Display-P3-BBBC00000000FFFF.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-BBBC00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Display-P3-BBBC00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-BBBC00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Display-P3-BBBC00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-BBBC00000000CCCC.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Display-P3-BBBC00000000CCCC.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-BBBC00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Display-P3-BBBC00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-BBBC00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Display-P3-BBBC00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Display-P3-BBBC00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Display-P3-BBBC00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-FFFF00000000FFFF.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-FFFF00000000FFFF.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-FFFF00000000FFFF.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-FFFF00000000FFFF.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-FFFF00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-FFFF00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-FFFF00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-FFFF00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-FFFF00000000CCCC.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-FFFF00000000CCCC.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-FFFF00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-FFFF00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-FFFF00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-FFFF00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-FFFF00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-FFFF00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-BBBC00000000FFFF.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-BBBC00000000FFFF.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-BBBC00000000FFFF.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-BBBC00000000FFFF.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-BBBC00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-BBBC00000000FFFF.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-BBBC00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-BBBC00000000FFFF.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-BBBC00000000CCCC.png, Context srgb, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-BBBC00000000CCCC.png, Context srgb, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-BBBC00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-BBBC00000000CCCC.png, Context srgb, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-BBBC00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-BBBC00000000CCCC.png, Context display-p3, ImageData srgb, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
[Adobe-RGB-BBBC00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=false]
expected: TIMEOUT
[Adobe-RGB-BBBC00000000CCCC.png, Context display-p3, ImageData display-p3, cropSource=true]
- expected: FAIL
+ expected: TIMEOUT
diff --git a/tests/wpt/meta-legacy-layout/html/canvas/offscreen/canvas-host/2d.canvas.host.size.large.html.ini b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/canvas-host/2d.canvas.host.size.large.html.ini
new file mode 100644
index 00000000000..f6455f9bd76
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/canvas/offscreen/canvas-host/2d.canvas.host.size.large.html.ini
@@ -0,0 +1,2 @@
+[2d.canvas.host.size.large.html]
+ expected: CRASH
diff --git a/tests/wpt/meta-legacy-layout/html/dom/idlharness.https.html.ini b/tests/wpt/meta-legacy-layout/html/dom/idlharness.https.html.ini
index 7a4c11216d0..7fe9a862f8a 100644
--- a/tests/wpt/meta-legacy-layout/html/dom/idlharness.https.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/dom/idlharness.https.html.ini
@@ -779,9 +779,6 @@
[BarProp interface: existence and properties of interface prototype object]
expected: FAIL
- [CustomElementRegistry interface: operation whenDefined(DOMString)]
- expected: FAIL
-
[DragEvent interface: existence and properties of interface object]
expected: FAIL
@@ -2101,9 +2098,6 @@
[Window interface: window must inherit property "statusbar" with the proper type]
expected: FAIL
- [Document interface: documentWithHandlers must inherit property "onsecuritypolicyviolation" with the proper type]
- expected: FAIL
-
[Document interface: calling queryCommandEnabled(DOMString) on documentWithHandlers with too few arguments must throw TypeError]
expected: FAIL
@@ -2116,9 +2110,6 @@
[Document interface: iframe.contentDocument must inherit property "dir" with the proper type]
expected: FAIL
- [Window interface: attribute onsecuritypolicyviolation]
- expected: FAIL
-
[Window interface: window must inherit property "applicationCache" with the proper type]
expected: FAIL
@@ -2164,9 +2155,6 @@
[Document interface: operation queryCommandEnabled(DOMString)]
expected: FAIL
- [Window interface: window must inherit property "onsecuritypolicyviolation" with the proper type]
- expected: FAIL
-
[Document interface: attribute all]
expected: FAIL
@@ -2194,9 +2182,6 @@
[Document interface: documentWithHandlers must inherit property "onauxclick" with the proper type]
expected: FAIL
- [Document interface: new Document() must inherit property "onsecuritypolicyviolation" with the proper type]
- expected: FAIL
-
[Document interface: calling queryCommandIndeterm(DOMString) on iframe.contentDocument with too few arguments must throw TypeError]
expected: FAIL
@@ -2275,9 +2260,6 @@
[Document interface: calling execCommand(DOMString, boolean, DOMString) on iframe.contentDocument with too few arguments must throw TypeError]
expected: FAIL
- [Document interface: attribute onsecuritypolicyviolation]
- expected: FAIL
-
[Document interface: documentWithHandlers must inherit property "alinkColor" with the proper type]
expected: FAIL
@@ -2350,9 +2332,6 @@
[Window interface: internal [[SetPrototypeOf\]\] method of interface prototype object - setting to a new value via Object.setPrototypeOf should throw a TypeError]
expected: FAIL
- [Document interface: iframe.contentDocument must inherit property "onsecuritypolicyviolation" with the proper type]
- expected: FAIL
-
[Document interface: new Document() must inherit property "queryCommandValue(DOMString)" with the proper type]
expected: FAIL
@@ -2491,12 +2470,6 @@
[Window interface: window must inherit property "onwebkitanimationstart" with the proper type]
expected: FAIL
- [Window interface: calling createImageBitmap(ImageBitmapSource, long, long, long, long, optional ImageBitmapOptions) on window with too few arguments must throw TypeError]
- expected: FAIL
-
- [Window interface: operation createImageBitmap(ImageBitmapSource, optional ImageBitmapOptions)]
- expected: FAIL
-
[Document interface: calling execCommand(DOMString, optional boolean, optional DOMString) on new Document() with too few arguments must throw TypeError]
expected: FAIL
@@ -2512,12 +2485,6 @@
[Document interface: operation execCommand(DOMString, optional boolean, optional DOMString)]
expected: FAIL
- [Window interface: operation createImageBitmap(ImageBitmapSource, long, long, long, long, optional ImageBitmapOptions)]
- expected: FAIL
-
- [Window interface: calling createImageBitmap(ImageBitmapSource, optional ImageBitmapOptions) on window with too few arguments must throw TypeError]
- expected: FAIL
-
[Document interface: iframe.contentDocument must inherit property "execCommand(DOMString, optional boolean, optional DOMString)" with the proper type]
expected: FAIL
@@ -3060,9 +3027,6 @@
[HTMLElement interface: document.createElement("noscript") must inherit property "autocapitalize" with the proper type]
expected: FAIL
- [HTMLElement interface: attribute onsecuritypolicyviolation]
- expected: FAIL
-
[HTMLTableColElement interface: document.createElement("col") must inherit property "align" with the proper type]
expected: FAIL
@@ -3141,9 +3105,6 @@
[HTMLInputElement interface: createInput("submit") must inherit property "autocomplete" with the proper type]
expected: FAIL
- [HTMLMediaElement interface: operation play()]
- expected: FAIL
-
[HTMLMarqueeElement interface: document.createElement("marquee") must inherit property "hspace" with the proper type]
expected: FAIL
@@ -3330,9 +3291,6 @@
[HTMLTableElement interface: attribute summary]
expected: FAIL
- [HTMLDialogElement interface: operation show()]
- expected: FAIL
-
[HTMLUListElement interface: attribute type]
expected: FAIL
@@ -3399,9 +3357,6 @@
[HTMLObjectElement interface: document.createElement("object") must inherit property "height" with the proper type]
expected: FAIL
- [HTMLImageElement interface: operation decode()]
- expected: FAIL
-
[HTMLTableRowElement interface: document.createElement("tr") must inherit property "vAlign" with the proper type]
expected: FAIL
@@ -4365,9 +4320,6 @@
[HTMLObjectElement interface: document.createElement("object") must inherit property "data" with the proper type]
expected: FAIL
- [HTMLElement interface: document.createElement("noscript") must inherit property "onsecuritypolicyviolation" with the proper type]
- expected: FAIL
-
[HTMLFrameElement interface: attribute contentDocument]
expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/dom/idlharness.worker.js.ini b/tests/wpt/meta-legacy-layout/html/dom/idlharness.worker.js.ini
index 74417a5ec31..f7f9dc4076c 100644
--- a/tests/wpt/meta-legacy-layout/html/dom/idlharness.worker.js.ini
+++ b/tests/wpt/meta-legacy-layout/html/dom/idlharness.worker.js.ini
@@ -482,18 +482,12 @@
[OffscreenCanvasRenderingContext2D interface: operation isPointInPath(Path2D, unrestricted double, unrestricted double, optional CanvasFillRule)]
expected: FAIL
- [WorkerGlobalScope interface: calling createImageBitmap(ImageBitmapSource, optional ImageBitmapOptions) on self with too few arguments must throw TypeError]
- expected: FAIL
-
[OffscreenCanvasRenderingContext2D interface: operation fill(Path2D, optional CanvasFillRule)]
expected: FAIL
[OffscreenCanvas interface: operation convertToBlob(optional ImageEncodeOptions)]
expected: FAIL
- [WorkerGlobalScope interface: operation createImageBitmap(ImageBitmapSource, long, long, long, long, optional ImageBitmapOptions)]
- expected: FAIL
-
[OffscreenCanvasRenderingContext2D interface: operation clip(Path2D, optional CanvasFillRule)]
expected: FAIL
@@ -512,9 +506,6 @@
[OffscreenCanvasRenderingContext2D interface: operation setLineDash(sequence<unrestricted double>)]
expected: FAIL
- [WorkerGlobalScope interface: calling createImageBitmap(ImageBitmapSource, long, long, long, long, optional ImageBitmapOptions) on self with too few arguments must throw TypeError]
- expected: FAIL
-
[OffscreenCanvasRenderingContext2D interface: operation setTransform(optional DOMMatrix2DInit)]
expected: FAIL
@@ -533,9 +524,6 @@
[OffscreenCanvasRenderingContext2D interface: operation clip(optional CanvasFillRule)]
expected: FAIL
- [WorkerGlobalScope interface: operation createImageBitmap(ImageBitmapSource, optional ImageBitmapOptions)]
- expected: FAIL
-
[ImageBitmapRenderingContext interface: operation transferFromImageBitmap(ImageBitmap?)]
expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/infrastructure/safe-passing-of-structured-data/cross-origin-transfer-resizable-arraybuffer.html.ini b/tests/wpt/meta-legacy-layout/html/infrastructure/safe-passing-of-structured-data/cross-origin-transfer-resizable-arraybuffer.html.ini
deleted file mode 100644
index 97ce0eb1815..00000000000
--- a/tests/wpt/meta-legacy-layout/html/infrastructure/safe-passing-of-structured-data/cross-origin-transfer-resizable-arraybuffer.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[cross-origin-transfer-resizable-arraybuffer.html]
- [postMessaging resizable ArrayBuffer to OOPIF]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/infrastructure/safe-passing-of-structured-data/messagechannel.any.js.ini b/tests/wpt/meta-legacy-layout/html/infrastructure/safe-passing-of-structured-data/messagechannel.any.js.ini
index 640dd3c391d..714b34e1875 100644
--- a/tests/wpt/meta-legacy-layout/html/infrastructure/safe-passing-of-structured-data/messagechannel.any.js.ini
+++ b/tests/wpt/meta-legacy-layout/html/infrastructure/safe-passing-of-structured-data/messagechannel.any.js.ini
@@ -56,39 +56,9 @@
[Object with a getter that throws]
expected: FAIL
- [Resizable ArrayBuffer]
- expected: FAIL
-
[Growable SharedArrayBuffer]
expected: FAIL
- [Length-tracking TypedArray]
- expected: FAIL
-
- [Length-tracking DataView]
- expected: FAIL
-
- [Serializing OOB TypedArray throws]
- expected: FAIL
-
- [Serializing OOB DataView throws]
- expected: FAIL
-
- [Resizable ArrayBuffer is transferable]
- expected: FAIL
-
- [Length-tracking TypedArray is transferable]
- expected: FAIL
-
- [Length-tracking DataView is transferable]
- expected: FAIL
-
- [Transferring OOB TypedArray throws]
- expected: FAIL
-
- [Transferring OOB DataView throws]
- expected: FAIL
-
[messagechannel.any.worker.html]
[File basic]
@@ -103,39 +73,9 @@
[Object with a getter that throws]
expected: FAIL
- [Resizable ArrayBuffer]
- expected: FAIL
-
[Growable SharedArrayBuffer]
expected: FAIL
- [Length-tracking TypedArray]
- expected: FAIL
-
- [Length-tracking DataView]
- expected: FAIL
-
- [Serializing OOB TypedArray throws]
- expected: FAIL
-
- [Serializing OOB DataView throws]
- expected: FAIL
-
- [Resizable ArrayBuffer is transferable]
- expected: FAIL
-
- [Length-tracking TypedArray is transferable]
- expected: FAIL
-
- [Length-tracking DataView is transferable]
- expected: FAIL
-
- [Transferring OOB TypedArray throws]
- expected: FAIL
-
- [Transferring OOB DataView throws]
- expected: FAIL
-
[messagechannel.any.serviceworker.html]
expected: ERROR
diff --git a/tests/wpt/meta-legacy-layout/html/infrastructure/safe-passing-of-structured-data/window-postmessage.window.js.ini b/tests/wpt/meta-legacy-layout/html/infrastructure/safe-passing-of-structured-data/window-postmessage.window.js.ini
index cfcd5fb8ac8..36612c99105 100644
--- a/tests/wpt/meta-legacy-layout/html/infrastructure/safe-passing-of-structured-data/window-postmessage.window.js.ini
+++ b/tests/wpt/meta-legacy-layout/html/infrastructure/safe-passing-of-structured-data/window-postmessage.window.js.ini
@@ -56,35 +56,5 @@
[Object with a getter that throws]
expected: FAIL
- [Resizable ArrayBuffer]
- expected: FAIL
-
[Growable SharedArrayBuffer]
expected: FAIL
-
- [Length-tracking TypedArray]
- expected: FAIL
-
- [Length-tracking DataView]
- expected: FAIL
-
- [Serializing OOB TypedArray throws]
- expected: FAIL
-
- [Serializing OOB DataView throws]
- expected: FAIL
-
- [Resizable ArrayBuffer is transferable]
- expected: FAIL
-
- [Length-tracking TypedArray is transferable]
- expected: FAIL
-
- [Length-tracking DataView is transferable]
- expected: FAIL
-
- [Transferring OOB TypedArray throws]
- expected: FAIL
-
- [Transferring OOB DataView throws]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini b/tests/wpt/meta-legacy-layout/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini
index d169bd2e9fa..58a99633547 100644
--- a/tests/wpt/meta-legacy-layout/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/interaction/focus/the-autofocus-attribute/supported-elements.html.ini
@@ -1,15 +1,19 @@
[supported-elements.html]
+ expected: TIMEOUT
[Contenteditable element should support autofocus]
expected: FAIL
[Element with tabindex should support autofocus]
- expected: FAIL
+ expected: TIMEOUT
[Host element with delegatesFocus including no focusable descendants should be skipped]
- expected: FAIL
+ expected: NOTRUN
[Area element should support autofocus]
- expected: FAIL
+ expected: NOTRUN
[Host element with delegatesFocus should support autofocus]
- expected: FAIL
+ expected: NOTRUN
+
+ [Non-HTMLElement should not support autofocus]
+ expected: NOTRUN
diff --git a/tests/wpt/meta-legacy-layout/html/rendering/replaced-elements/the-select-element/select-1-block-size.html.ini b/tests/wpt/meta-legacy-layout/html/rendering/replaced-elements/the-select-element/select-1-block-size.html.ini
deleted file mode 100644
index 706aff5771a..00000000000
--- a/tests/wpt/meta-legacy-layout/html/rendering/replaced-elements/the-select-element/select-1-block-size.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[select-1-block-size.html]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/document-metadata/the-meta-element/pragma-directives/http-equiv-enumerated-ascii-case-insensitive.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/document-metadata/the-meta-element/pragma-directives/http-equiv-enumerated-ascii-case-insensitive.html.ini
deleted file mode 100644
index 324a276aff8..00000000000
--- a/tests/wpt/meta-legacy-layout/html/semantics/document-metadata/the-meta-element/pragma-directives/http-equiv-enumerated-ascii-case-insensitive.html.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-[http-equiv-enumerated-ascii-case-insensitive.html]
- [keyword content-security-policy]
- expected: FAIL
-
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini
index 25d9964f057..e5994e21efc 100644
--- a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-1.html.ini
@@ -1,4 +1,5 @@
[iframe_sandbox_popups_escaping-1.html]
type: testharness
+ expected: CRASH
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini
index 841bafc6eca..b83d68ddd33 100644
--- a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini
@@ -1,3 +1,3 @@
[iframe_sandbox_popups_escaping-2.html]
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
- expected: FAIL
+ expected: TIMEOUT
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini
index a6c31bc671e..fe55ddae3f1 100644
--- a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html.ini
@@ -1,4 +1,4 @@
[iframe_sandbox_popups_escaping-3.html]
type: testharness
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
- expected: TIMEOUT
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini
index bc56655a13c..f9138fb999a 100644
--- a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-1.html.ini
@@ -2,4 +2,4 @@
type: testharness
expected: TIMEOUT
[Check that popups from a sandboxed iframe do not escape the sandbox]
- expected: FAIL
+ expected: NOTRUN
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini
index 6bec7a732b8..49e3449f144 100644
--- a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html.ini
@@ -1,4 +1,4 @@
[iframe_sandbox_popups_nonescaping-2.html]
type: testharness
[Check that popups from a sandboxed iframe do not escape the sandbox]
- expected: FAIL
+ expected: NOTRUN
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-img-element/empty-src-no-current-request.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-img-element/empty-src-no-current-request.html.ini
new file mode 100644
index 00000000000..2a1e0672085
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-img-element/empty-src-no-current-request.html.ini
@@ -0,0 +1,3 @@
+[empty-src-no-current-request.html]
+ [Without srcset]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-img-element/update-the-image-data/current-request-microtask-002.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-img-element/update-the-image-data/current-request-microtask-002.html.ini
new file mode 100644
index 00000000000..f617946311b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/embedded-content/the-img-element/update-the-image-data/current-request-microtask-002.html.ini
@@ -0,0 +1,3 @@
+[current-request-microtask-002.html]
+ [Current request microtask handling with multiple tasks.]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/forms/the-selectlist-element/selectlist-form-state-restore.tentative.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/forms/the-selectlist-element/selectlist-form-state-restore.tentative.html.ini
deleted file mode 100644
index 81cd0e54d89..00000000000
--- a/tests/wpt/meta-legacy-layout/html/semantics/forms/the-selectlist-element/selectlist-form-state-restore.tentative.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[selectlist-form-state-restore.tentative.html]
- [Test restoring state after form submission]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/interactive-elements/the-dialog-element/non-modal-dialog-layout.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/interactive-elements/the-dialog-element/non-modal-dialog-layout.html.ini
new file mode 100644
index 00000000000..6c65b8e6f0b
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/interactive-elements/the-dialog-element/non-modal-dialog-layout.html.ini
@@ -0,0 +1,3 @@
+[non-modal-dialog-layout.html]
+ [Tests layout of non-modal dialogs.]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/interactive-elements/the-dialog-element/submit-dialog-close-event.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/interactive-elements/the-dialog-element/submit-dialog-close-event.html.ini
index 70f8bf7ec7e..cd762141b9e 100644
--- a/tests/wpt/meta-legacy-layout/html/semantics/interactive-elements/the-dialog-element/submit-dialog-close-event.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/semantics/interactive-elements/the-dialog-element/submit-dialog-close-event.html.ini
@@ -1,3 +1,4 @@
[submit-dialog-close-event.html]
+ expected: TIMEOUT
[Tests submitting a dialog on a close event triggered by a previous submission.]
expected: TIMEOUT
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/module/dynamic-import/code-cache-nonce.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/module/dynamic-import/code-cache-nonce.html.ini
new file mode 100644
index 00000000000..359885bb37d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/module/dynamic-import/code-cache-nonce.html.ini
@@ -0,0 +1,10 @@
+[code-cache-nonce.html]
+ expected: ERROR
+ [First dynamic import should use nonce=abc]
+ expected: TIMEOUT
+
+ [Second dynamic import should use nonce=def]
+ expected: NOTRUN
+
+ [Third dynamic import should use nonce=ghi]
+ expected: NOTRUN
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/module/dynamic-import/propagate-nonce-external-classic.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/module/dynamic-import/propagate-nonce-external-classic.html.ini
new file mode 100644
index 00000000000..1ecf634225f
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/module/dynamic-import/propagate-nonce-external-classic.html.ini
@@ -0,0 +1,2 @@
+[propagate-nonce-external-classic.html]
+ expected: TIMEOUT
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/module/dynamic-import/propagate-nonce-external-module.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/module/dynamic-import/propagate-nonce-external-module.html.ini
new file mode 100644
index 00000000000..849c9b3e60d
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/module/dynamic-import/propagate-nonce-external-module.html.ini
@@ -0,0 +1,2 @@
+[propagate-nonce-external-module.html]
+ expected: TIMEOUT
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/module/dynamic-import/propagate-nonce-inline-classic.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/module/dynamic-import/propagate-nonce-inline-classic.html.ini
new file mode 100644
index 00000000000..2874543423a
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/module/dynamic-import/propagate-nonce-inline-classic.html.ini
@@ -0,0 +1,2 @@
+[propagate-nonce-inline-classic.html]
+ expected: TIMEOUT
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/module/dynamic-import/propagate-nonce-inline-module.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/module/dynamic-import/propagate-nonce-inline-module.html.ini
new file mode 100644
index 00000000000..cb8c561fb65
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/module/dynamic-import/propagate-nonce-inline-module.html.ini
@@ -0,0 +1,2 @@
+[propagate-nonce-inline-module.html]
+ expected: TIMEOUT
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-nonce-classic.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-nonce-classic.html.ini
index eb1b085a006..c4c17e34cc0 100644
--- a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-nonce-classic.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-nonce-classic.html.ini
@@ -1,7 +1,7 @@
[string-compilation-nonce-classic.html]
+ expected: TIMEOUT
[inline event handlers triggered via UA code must not inherit the nonce from the triggering script, thus fail]
expected: FAIL
[reflected inline event handlers must not inherit the nonce from the triggering script, thus fail]
expected: FAIL
-
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-nonce-module.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-nonce-module.html.ini
index e476dc488a8..16d662d5621 100644
--- a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-nonce-module.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/module/dynamic-import/string-compilation-nonce-module.html.ini
@@ -1,7 +1,7 @@
[string-compilation-nonce-module.html]
+ expected: TIMEOUT
[inline event handlers triggered via UA code must not inherit the nonce from the triggering script, thus fail]
expected: FAIL
[reflected inline event handlers must not inherit the nonce from the triggering script, thus fail]
expected: FAIL
-
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/module/dynamic-import/v8-code-cache.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/module/dynamic-import/v8-code-cache.html.ini
new file mode 100644
index 00000000000..e8c2de6a972
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/module/dynamic-import/v8-code-cache.html.ini
@@ -0,0 +1,31 @@
+[v8-code-cache.html]
+ expected: ERROR
+ [text/javascript: Run #1]
+ expected: TIMEOUT
+
+ [text/javascript: Run #2]
+ expected: NOTRUN
+
+ [text/javascript: Run #3]
+ expected: NOTRUN
+
+ [text/javascript: Run #4]
+ expected: NOTRUN
+
+ [text/javascript: Run #5]
+ expected: NOTRUN
+
+ [module: Run #1]
+ expected: NOTRUN
+
+ [module: Run #2]
+ expected: NOTRUN
+
+ [module: Run #3]
+ expected: NOTRUN
+
+ [module: Run #4]
+ expected: NOTRUN
+
+ [module: Run #5]
+ expected: NOTRUN
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/module/instantiation-error-3.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/module/instantiation-error-3.html.ini
deleted file mode 100644
index 80994e38131..00000000000
--- a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/module/instantiation-error-3.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[instantiation-error-3.html]
- [Test that unresolvable cycles lead to SyntaxError events on window and load events on script]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/module/instantiation-error-4.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/module/instantiation-error-4.html.ini
deleted file mode 100644
index 0ed72efc9f1..00000000000
--- a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/module/instantiation-error-4.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[instantiation-error-4.html]
- [Test that loading a graph in which a module is already errored results in an error.]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/module/instantiation-error-5.html.ini b/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/module/instantiation-error-5.html.ini
deleted file mode 100644
index a629aaf9a74..00000000000
--- a/tests/wpt/meta-legacy-layout/html/semantics/scripting-1/the-script-element/module/instantiation-error-5.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[instantiation-error-5.html]
- [Test that loading a graph in which a module is already errored results an error.]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/webappapis/scripting/events/event-handler-all-global-events.html.ini b/tests/wpt/meta-legacy-layout/html/webappapis/scripting/events/event-handler-all-global-events.html.ini
index 7649a7eff8c..4048753c233 100644
--- a/tests/wpt/meta-legacy-layout/html/webappapis/scripting/events/event-handler-all-global-events.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/webappapis/scripting/events/event-handler-all-global-events.html.ini
@@ -315,9 +315,6 @@
[onsecuritypolicyviolation: the default value must be null]
expected: FAIL
- [onsecuritypolicyviolation: the content attribute must be compiled into a function as the corresponding property]
- expected: FAIL
-
[onseeked: must be on the appropriate locations for GlobalEventHandlers]
expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/webappapis/scripting/events/event-handler-attributes-body-window.html.ini b/tests/wpt/meta-legacy-layout/html/webappapis/scripting/events/event-handler-attributes-body-window.html.ini
index f91a8774519..5956384c415 100644
--- a/tests/wpt/meta-legacy-layout/html/webappapis/scripting/events/event-handler-attributes-body-window.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/webappapis/scripting/events/event-handler-attributes-body-window.html.ini
@@ -9,9 +9,6 @@
[not shadowed loadend (document.body)]
expected: FAIL
- [not shadowed securitypolicyviolation (document.body)]
- expected: FAIL
-
[not shadowed copy (document.body)]
expected: FAIL
@@ -27,9 +24,6 @@
[not shadowed loadend (document.createElement("body"))]
expected: FAIL
- [not shadowed securitypolicyviolation (document.createElement("body"))]
- expected: FAIL
-
[not shadowed copy (document.createElement("body"))]
expected: FAIL
@@ -42,9 +36,6 @@
[not shadowed loadend (window)]
expected: FAIL
- [not shadowed securitypolicyviolation (window)]
- expected: FAIL
-
[not shadowed auxclick (window)]
expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/webappapis/scripting/events/event-handler-attributes-frameset-window.html.ini b/tests/wpt/meta-legacy-layout/html/webappapis/scripting/events/event-handler-attributes-frameset-window.html.ini
index b248907ed2c..e9e0e011857 100644
--- a/tests/wpt/meta-legacy-layout/html/webappapis/scripting/events/event-handler-attributes-frameset-window.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/webappapis/scripting/events/event-handler-attributes-frameset-window.html.ini
@@ -2,15 +2,9 @@
[not shadowed paste (document.createElement("frameset"))]
expected: FAIL
- [not shadowed securitypolicyviolation (document.body)]
- expected: FAIL
-
[not shadowed auxclick (window)]
expected: FAIL
- [not shadowed securitypolicyviolation (document.createElement("frameset"))]
- expected: FAIL
-
[not shadowed cut (document.body)]
expected: FAIL
@@ -20,9 +14,6 @@
[not shadowed loadend (document.body)]
expected: FAIL
- [not shadowed securitypolicyviolation (window)]
- expected: FAIL
-
[not shadowed auxclick (document.body)]
expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/html/webappapis/scripting/events/event-handler-attributes-windowless-body.html.ini b/tests/wpt/meta-legacy-layout/html/webappapis/scripting/events/event-handler-attributes-windowless-body.html.ini
index 64fda051bb5..b3697a1a052 100644
--- a/tests/wpt/meta-legacy-layout/html/webappapis/scripting/events/event-handler-attributes-windowless-body.html.ini
+++ b/tests/wpt/meta-legacy-layout/html/webappapis/scripting/events/event-handler-attributes-windowless-body.html.ini
@@ -8,18 +8,12 @@
[loadend is unaffected on a windowless body]
expected: FAIL
- [securitypolicyviolation is unaffected on a windowless body]
- expected: FAIL
-
[auxclick is unaffected on a windowless frameset]
expected: FAIL
[loadend is unaffected on a windowless frameset]
expected: FAIL
- [securitypolicyviolation is unaffected on a windowless frameset]
- expected: FAIL
-
[slotchange is unaffected on a windowless frameset]
expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/js/builtins/weakrefs/cleanup-prevented-with-reference.optional.any.js.ini b/tests/wpt/meta-legacy-layout/js/builtins/weakrefs/cleanup-prevented-with-reference.optional.any.js.ini
index b8a231b14bf..d45ab6425c1 100644
--- a/tests/wpt/meta-legacy-layout/js/builtins/weakrefs/cleanup-prevented-with-reference.optional.any.js.ini
+++ b/tests/wpt/meta-legacy-layout/js/builtins/weakrefs/cleanup-prevented-with-reference.optional.any.js.ini
@@ -1,5 +1,8 @@
[cleanup-prevented-with-reference.optional.any.html]
- expected: ERROR
+ [cleanupCallback has only one optional chance to be called for a GC that cleans up a registered target.]
+ expected: FAIL
+
[cleanup-prevented-with-reference.optional.any.worker.html]
- expected: ERROR
+ [cleanupCallback has only one optional chance to be called for a GC that cleans up a registered target.]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/js/builtins/weakrefs/cleanup-prevented-with-unregister.optional.any.js.ini b/tests/wpt/meta-legacy-layout/js/builtins/weakrefs/cleanup-prevented-with-unregister.optional.any.js.ini
index 4fc93faaf3d..8fa0c8a23e5 100644
--- a/tests/wpt/meta-legacy-layout/js/builtins/weakrefs/cleanup-prevented-with-unregister.optional.any.js.ini
+++ b/tests/wpt/meta-legacy-layout/js/builtins/weakrefs/cleanup-prevented-with-unregister.optional.any.js.ini
@@ -1,5 +1,8 @@
[cleanup-prevented-with-unregister.optional.any.worker.html]
- expected: ERROR
+ [Cleanup might be prevented with an unregister usage]
+ expected: FAIL
+
[cleanup-prevented-with-unregister.optional.any.html]
- expected: ERROR
+ [Cleanup might be prevented with an unregister usage]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/js/builtins/weakrefs/finalizationregistry-cleanupCallback-gets-a-microtask.optional.any.js.ini b/tests/wpt/meta-legacy-layout/js/builtins/weakrefs/finalizationregistry-cleanupCallback-gets-a-microtask.optional.any.js.ini
index 9af0aa8e510..5249b0cab44 100644
--- a/tests/wpt/meta-legacy-layout/js/builtins/weakrefs/finalizationregistry-cleanupCallback-gets-a-microtask.optional.any.js.ini
+++ b/tests/wpt/meta-legacy-layout/js/builtins/weakrefs/finalizationregistry-cleanupCallback-gets-a-microtask.optional.any.js.ini
@@ -1,5 +1,8 @@
[finalizationregistry-cleanupCallback-gets-a-microtask.optional.any.worker.html]
- expected: ERROR
+ [HostCleanupFinalizationRegistry is an implementation-defined abstract operation that is expected to call CleanupFinalizationRegistry(finalizationRegistry) at some point in the future, if possible.]
+ expected: FAIL
+
[finalizationregistry-cleanupCallback-gets-a-microtask.optional.any.html]
- expected: ERROR
+ [HostCleanupFinalizationRegistry is an implementation-defined abstract operation that is expected to call CleanupFinalizationRegistry(finalizationRegistry) at some point in the future, if possible.]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/js/builtins/weakrefs/finalizationregistry-cleanupCallback-throws-onerror-interaction.optional.window.js.ini b/tests/wpt/meta-legacy-layout/js/builtins/weakrefs/finalizationregistry-cleanupCallback-throws-onerror-interaction.optional.window.js.ini
deleted file mode 100644
index addeb13d5f1..00000000000
--- a/tests/wpt/meta-legacy-layout/js/builtins/weakrefs/finalizationregistry-cleanupCallback-throws-onerror-interaction.optional.window.js.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[finalizationregistry-cleanupCallback-throws-onerror-interaction.optional.window.html]
- expected: ERROR
diff --git a/tests/wpt/meta-legacy-layout/js/builtins/weakrefs/gc-has-one-chance-to-call-cleanupCallback-queueMicrotask.optional.any.js.ini b/tests/wpt/meta-legacy-layout/js/builtins/weakrefs/gc-has-one-chance-to-call-cleanupCallback-queueMicrotask.optional.any.js.ini
index 7479a168882..830562371e9 100644
--- a/tests/wpt/meta-legacy-layout/js/builtins/weakrefs/gc-has-one-chance-to-call-cleanupCallback-queueMicrotask.optional.any.js.ini
+++ b/tests/wpt/meta-legacy-layout/js/builtins/weakrefs/gc-has-one-chance-to-call-cleanupCallback-queueMicrotask.optional.any.js.ini
@@ -1,5 +1,8 @@
[gc-has-one-chance-to-call-cleanupCallback-queueMicrotask.optional.any.html]
- expected: ERROR
+ [cleanupCallback has only one optional chance to be called for a GC that cleans up a registered target.]
+ expected: FAIL
+
[gc-has-one-chance-to-call-cleanupCallback-queueMicrotask.optional.any.worker.html]
- expected: ERROR
+ [cleanupCallback has only one optional chance to be called for a GC that cleans up a registered target.]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/js/builtins/weakrefs/gc-has-one-chance-to-call-cleanupCallback-queueMicrotaskMutationObserver.optional.window.js.ini b/tests/wpt/meta-legacy-layout/js/builtins/weakrefs/gc-has-one-chance-to-call-cleanupCallback-queueMicrotaskMutationObserver.optional.window.js.ini
index 66b935a312d..a97669dd26c 100644
--- a/tests/wpt/meta-legacy-layout/js/builtins/weakrefs/gc-has-one-chance-to-call-cleanupCallback-queueMicrotaskMutationObserver.optional.window.js.ini
+++ b/tests/wpt/meta-legacy-layout/js/builtins/weakrefs/gc-has-one-chance-to-call-cleanupCallback-queueMicrotaskMutationObserver.optional.window.js.ini
@@ -1,2 +1,3 @@
[gc-has-one-chance-to-call-cleanupCallback-queueMicrotaskMutationObserver.optional.window.html]
- expected: ERROR
+ [cleanupCallback has only one optional chance to be called for a GC that cleans up a registered target.]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/js/builtins/weakrefs/gc-has-one-chance-to-call-cleanupCallback.optional.any.js.ini b/tests/wpt/meta-legacy-layout/js/builtins/weakrefs/gc-has-one-chance-to-call-cleanupCallback.optional.any.js.ini
index 481060a9e16..d87b3100399 100644
--- a/tests/wpt/meta-legacy-layout/js/builtins/weakrefs/gc-has-one-chance-to-call-cleanupCallback.optional.any.js.ini
+++ b/tests/wpt/meta-legacy-layout/js/builtins/weakrefs/gc-has-one-chance-to-call-cleanupCallback.optional.any.js.ini
@@ -1,5 +1,8 @@
[gc-has-one-chance-to-call-cleanupCallback.optional.any.worker.html]
- expected: ERROR
+ [cleanupCallback has only one optional chance to be called for a GC that cleans up a registered target.]
+ expected: FAIL
+
[gc-has-one-chance-to-call-cleanupCallback.optional.any.html]
- expected: ERROR
+ [cleanupCallback has only one optional chance to be called for a GC that cleans up a registered target.]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/js/builtins/weakrefs/reentrancy.optional.any.js.ini b/tests/wpt/meta-legacy-layout/js/builtins/weakrefs/reentrancy.optional.any.js.ini
index d4990b12ddf..3c206ec3b14 100644
--- a/tests/wpt/meta-legacy-layout/js/builtins/weakrefs/reentrancy.optional.any.js.ini
+++ b/tests/wpt/meta-legacy-layout/js/builtins/weakrefs/reentrancy.optional.any.js.ini
@@ -1,5 +1,8 @@
[reentrancy.optional.any.html]
- expected: ERROR
+ [cleanupCallback has only one optional chance to be called for a GC that cleans up a registered target.]
+ expected: FAIL
+
[reentrancy.optional.any.worker.html]
- expected: ERROR
+ [cleanupCallback has only one optional chance to be called for a GC that cleans up a registered target.]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/js/builtins/weakrefs/return-undefined-with-gc.optional.any.js.ini b/tests/wpt/meta-legacy-layout/js/builtins/weakrefs/return-undefined-with-gc.optional.any.js.ini
index 94bfc185df9..f0d89845e28 100644
--- a/tests/wpt/meta-legacy-layout/js/builtins/weakrefs/return-undefined-with-gc.optional.any.js.ini
+++ b/tests/wpt/meta-legacy-layout/js/builtins/weakrefs/return-undefined-with-gc.optional.any.js.ini
@@ -1,5 +1,8 @@
[return-undefined-with-gc.optional.any.html]
- expected: ERROR
+ [Return undefined regardless the result of CleanupFinalizationRegistry]
+ expected: FAIL
+
[return-undefined-with-gc.optional.any.worker.html]
- expected: ERROR
+ [Return undefined regardless the result of CleanupFinalizationRegistry]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/js/builtins/weakrefs/unregister-cleaned-up-cell.optional.any.js.ini b/tests/wpt/meta-legacy-layout/js/builtins/weakrefs/unregister-cleaned-up-cell.optional.any.js.ini
index 4ebd816db1f..1971a5de17d 100644
--- a/tests/wpt/meta-legacy-layout/js/builtins/weakrefs/unregister-cleaned-up-cell.optional.any.js.ini
+++ b/tests/wpt/meta-legacy-layout/js/builtins/weakrefs/unregister-cleaned-up-cell.optional.any.js.ini
@@ -1,5 +1,8 @@
[unregister-cleaned-up-cell.optional.any.html]
- expected: ERROR
+ [Cannot unregister a cell that has been cleaned up]
+ expected: FAIL
+
[unregister-cleaned-up-cell.optional.any.worker.html]
- expected: ERROR
+ [Cannot unregister a cell that has been cleaned up]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/permissions/idlharness.any.js.ini b/tests/wpt/meta-legacy-layout/permissions/idlharness.any.js.ini
index 26c2d99a9fa..3191d0751c0 100644
--- a/tests/wpt/meta-legacy-layout/permissions/idlharness.any.js.ini
+++ b/tests/wpt/meta-legacy-layout/permissions/idlharness.any.js.ini
@@ -1,10 +1,4 @@
[idlharness.any.worker.html]
- [Permissions interface: operation query(object)]
- expected: FAIL
-
- [Permissions interface: calling query(object) on navigator.permissions with too few arguments must throw TypeError]
- expected: FAIL
-
[PermissionStatus interface: attribute name]
expected: FAIL
@@ -13,12 +7,6 @@
[idlharness.any.html]
- [Permissions interface: operation query(object)]
- expected: FAIL
-
- [Permissions interface: calling query(object) on navigator.permissions with too few arguments must throw TypeError]
- expected: FAIL
-
[PermissionStatus interface: attribute name]
expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/resource-timing/test_resource_timing.https.html.ini b/tests/wpt/meta-legacy-layout/resource-timing/test_resource_timing.https.html.ini
index 54e3ef35665..32d149c8ae9 100644
--- a/tests/wpt/meta-legacy-layout/resource-timing/test_resource_timing.https.html.ini
+++ b/tests/wpt/meta-legacy-layout/resource-timing/test_resource_timing.https.html.ini
@@ -68,3 +68,6 @@
[PerformanceEntry has correct name, initiatorType, startTime, and duration (link)]
expected: NOTRUN
+
+ [PerformanceEntry has correct name, initiatorType, startTime, and duration (img)]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/selection/move-paragraphboundary-cross-editing-boundary.tentative.html.ini b/tests/wpt/meta-legacy-layout/selection/move-paragraphboundary-cross-editing-boundary.tentative.html.ini
new file mode 100644
index 00000000000..06e28ab6516
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/selection/move-paragraphboundary-cross-editing-boundary.tentative.html.ini
@@ -0,0 +1,6 @@
+[move-paragraphboundary-cross-editing-boundary.tentative.html]
+ [cross editing boundary]
+ expected: FAIL
+
+ [Selection.modify(): move by paragraphboundary cross editing boundary]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/selection/selection-content-visibility-hidden.html.ini b/tests/wpt/meta-legacy-layout/selection/selection-content-visibility-hidden.html.ini
new file mode 100644
index 00000000000..9c0a84940c4
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/selection/selection-content-visibility-hidden.html.ini
@@ -0,0 +1,3 @@
+[selection-content-visibility-hidden.html]
+ [Text with content-visibility: hidden is not selected]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/selection/selection-nested-video.html.ini b/tests/wpt/meta-legacy-layout/selection/selection-nested-video.html.ini
index ada31776b54..918cc07a32d 100644
--- a/tests/wpt/meta-legacy-layout/selection/selection-nested-video.html.ini
+++ b/tests/wpt/meta-legacy-layout/selection/selection-nested-video.html.ini
@@ -2,3 +2,6 @@
expected: ERROR
[Selection with nested videos doesn't crash]
expected: TIMEOUT
+
+ [selection have the same anchor and focus nodes because b and c are in different tree scopes.]
+ expected: TIMEOUT
diff --git a/tests/wpt/meta-legacy-layout/selection/shadow-dom/select-later-become-slotted-content.html.ini b/tests/wpt/meta-legacy-layout/selection/shadow-dom/select-later-become-slotted-content.html.ini
deleted file mode 100644
index b87085190ed..00000000000
--- a/tests/wpt/meta-legacy-layout/selection/shadow-dom/select-later-become-slotted-content.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[select-later-become-slotted-content.html]
- [test to select a light DOM element and it becomes a slotted content after the selection]
- expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/selection/shadow-dom/select-later-become-slotted-content.tentative.html.ini b/tests/wpt/meta-legacy-layout/selection/shadow-dom/select-later-become-slotted-content.tentative.html.ini
new file mode 100644
index 00000000000..1a6fbc450ce
--- /dev/null
+++ b/tests/wpt/meta-legacy-layout/selection/shadow-dom/select-later-become-slotted-content.tentative.html.ini
@@ -0,0 +1,3 @@
+[select-later-become-slotted-content.tentative.html]
+ [test to select a light DOM element and it becomes a slotted content after the selection]
+ expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/url/failure.html.ini b/tests/wpt/meta-legacy-layout/url/failure.html.ini
index e739baf2ea5..9e541022c0a 100644
--- a/tests/wpt/meta-legacy-layout/url/failure.html.ini
+++ b/tests/wpt/meta-legacy-layout/url/failure.html.ini
@@ -1,5 +1,6 @@
[failure.html]
type: testharness
+ expected: CRASH
[Test URL parser failure consistency]
expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/wasm/jsapi/gc/casts.tentative.any.js.ini b/tests/wpt/meta-legacy-layout/wasm/jsapi/gc/casts.tentative.any.js.ini
deleted file mode 100644
index 0b499ced6d7..00000000000
--- a/tests/wpt/meta-legacy-layout/wasm/jsapi/gc/casts.tentative.any.js.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[casts.tentative.any.worker.html]
- expected: ERROR
-
-[casts.tentative.any.html]
- expected: ERROR
diff --git a/tests/wpt/meta-legacy-layout/wasm/jsapi/gc/exported-object.tentative.any.js.ini b/tests/wpt/meta-legacy-layout/wasm/jsapi/gc/exported-object.tentative.any.js.ini
deleted file mode 100644
index 59dd05d2b08..00000000000
--- a/tests/wpt/meta-legacy-layout/wasm/jsapi/gc/exported-object.tentative.any.js.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[exported-object.tentative.any.worker.html]
- expected: ERROR
-
-[exported-object.tentative.any.html]
- expected: ERROR
diff --git a/tests/wpt/meta-legacy-layout/wasm/jsapi/gc/i31.tentative.any.js.ini b/tests/wpt/meta-legacy-layout/wasm/jsapi/gc/i31.tentative.any.js.ini
deleted file mode 100644
index 485ae1ecd1c..00000000000
--- a/tests/wpt/meta-legacy-layout/wasm/jsapi/gc/i31.tentative.any.js.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[i31.tentative.any.worker.html]
- expected: ERROR
-
-[i31.tentative.any.html]
- expected: ERROR
diff --git a/tests/wpt/meta-legacy-layout/webmessaging/message-channels/close-event/garbage-collected.tentative.any.js.ini b/tests/wpt/meta-legacy-layout/webmessaging/message-channels/close-event/garbage-collected.tentative.any.js.ini
index 267ce437f5c..5da35dfd119 100644
--- a/tests/wpt/meta-legacy-layout/webmessaging/message-channels/close-event/garbage-collected.tentative.any.js.ini
+++ b/tests/wpt/meta-legacy-layout/webmessaging/message-channels/close-event/garbage-collected.tentative.any.js.ini
@@ -1,8 +1,10 @@
[garbage-collected.tentative.any.worker.html]
+ expected: TIMEOUT
[Entangled port is garbage collected, and the close event is fired.]
- expected: FAIL
+ expected: TIMEOUT
[garbage-collected.tentative.any.html]
+ expected: TIMEOUT
[Entangled port is garbage collected, and the close event is fired.]
- expected: FAIL
+ expected: TIMEOUT
diff --git a/tests/wpt/meta-legacy-layout/webxr/hit-test/idlharness.https.html.ini b/tests/wpt/meta-legacy-layout/webxr/hit-test/idlharness.https.html.ini
index 83d6e65a501..43431dccab7 100644
--- a/tests/wpt/meta-legacy-layout/webxr/hit-test/idlharness.https.html.ini
+++ b/tests/wpt/meta-legacy-layout/webxr/hit-test/idlharness.https.html.ini
@@ -5,9 +5,6 @@
[XRFrame interface: operation getHitTestResultsForTransientInput(XRTransientInputHitTestSource)]
expected: FAIL
- [XRSession interface: operation requestHitTestSource(XRHitTestOptionsInit)]
- expected: FAIL
-
[XRTransientInputHitTestResult interface: existence and properties of interface prototype object]
expected: FAIL
@@ -67,4 +64,3 @@
[XRTransientInputHitTestResult interface object length]
expected: FAIL
-
diff --git a/tests/wpt/meta-legacy-layout/webxr/idlharness.https.window.js.ini b/tests/wpt/meta-legacy-layout/webxr/idlharness.https.window.js.ini
index a34d5829233..0717cfc14ce 100644
--- a/tests/wpt/meta-legacy-layout/webxr/idlharness.https.window.js.ini
+++ b/tests/wpt/meta-legacy-layout/webxr/idlharness.https.window.js.ini
@@ -32,9 +32,6 @@
[XRReferenceSpaceEvent interface object length]
expected: FAIL
- [WebGLRenderingContext interface: operation makeXRCompatible()]
- expected: FAIL
-
[XRBoundedReferenceSpace interface: existence and properties of interface prototype object's "constructor" property]
expected: FAIL
@@ -80,9 +77,6 @@
[XRRay interface: attribute origin]
expected: FAIL
- [XRSession interface: operation requestReferenceSpace(XRReferenceSpaceType)]
- expected: FAIL
-
[XRRay interface: existence and properties of interface prototype object's @@unscopables property]
expected: FAIL
@@ -107,9 +101,6 @@
[XR interface: calling requestSession(XRSessionMode, XRSessionInit) on navigator.xr with too few arguments must throw TypeError]
expected: FAIL
- [XRSession interface: operation end()]
- expected: FAIL
-
[XR interface: calling isSessionSupported(XRSessionMode) on navigator.xr with too few arguments must throw TypeError]
expected: FAIL
@@ -119,18 +110,12 @@
[XR interface: operation isSessionSupported(XRSessionMode)]
expected: FAIL
- [XRSystem interface: operation isSessionSupported(XRSessionMode)]
- expected: FAIL
-
[XRSystem interface: attribute ondevicechange]
expected: FAIL
[XRSystem interface: operation requestSession(XRSessionMode, XRSessionInit)]
expected: FAIL
- [XRSystem interface: operation requestSession(XRSessionMode, optional XRSessionInit)]
- expected: FAIL
-
[XRPermissionStatus interface: attribute granted]
expected: FAIL
diff --git a/tests/wpt/meta-legacy-layout/webxr/xrSession_requestReferenceSpace.https.html.ini b/tests/wpt/meta-legacy-layout/webxr/xrSession_requestReferenceSpace.https.html.ini
index 3502c8772dd..b583baab88e 100644
--- a/tests/wpt/meta-legacy-layout/webxr/xrSession_requestReferenceSpace.https.html.ini
+++ b/tests/wpt/meta-legacy-layout/webxr/xrSession_requestReferenceSpace.https.html.ini
@@ -8,12 +8,5 @@
[Immersive XRSession requestReferenceSpace returns expected objects - webgl2]
expected: FAIL
- [Immersive XRSession requestReferenceSpace returns expected objects - webgl]
- expected: FAIL
-
[Non-immersive XRSession requestReferenceSpace returns expected objects - webgl2]
expected: FAIL
-
- [Non-immersive XRSession requestReferenceSpace returns expected objects - webgl]
- expected: FAIL
-
diff --git a/tests/wpt/meta/FileAPI/BlobURL/cross-partition.tentative.https.html.ini b/tests/wpt/meta/FileAPI/BlobURL/cross-partition.tentative.https.html.ini
index 195c812d450..eae4d635a80 100644
--- a/tests/wpt/meta/FileAPI/BlobURL/cross-partition.tentative.https.html.ini
+++ b/tests/wpt/meta/FileAPI/BlobURL/cross-partition.tentative.https.html.ini
@@ -11,3 +11,15 @@
[Blob URL shouldn't be revocable from a service worker]
expected: NOTRUN
+
+ [Blob URL shouldn't be fetched from a cross-partition iframe]
+ expected: NOTRUN
+
+ [Blob URL shouldn't be fetched from a cross-partition dedicated worker]
+ expected: NOTRUN
+
+ [Blob URL shouldn't be fetched from a cross-partition shared worker]
+ expected: NOTRUN
+
+ [Blob URL shouldn't be fetched from a cross-partition service worker]
+ expected: NOTRUN
diff --git a/tests/wpt/meta/MANIFEST.json b/tests/wpt/meta/MANIFEST.json
index 67e93b63be7..01bb9e5685e 100644
--- a/tests/wpt/meta/MANIFEST.json
+++ b/tests/wpt/meta/MANIFEST.json
@@ -1971,6 +1971,13 @@
{}
]
],
+ "fieldset.html": [
+ "3d7b2486e2e6eb143caf5ba69a7cbea942b578ff",
+ [
+ null,
+ {}
+ ]
+ ],
"first-line-and-inline-block.html": [
"6d6c6605ee0486cd6329e2d81372ed25ad5d3f17",
[
@@ -2252,6 +2259,15 @@
]
},
"css-flexbox": {
+ "animation": {
+ "flex-basis-content-crash.html": [
+ "6c691b987f9b5d4cfeca094ff7d16b58ff073c8f",
+ [
+ null,
+ {}
+ ]
+ ]
+ },
"button-column-wrap-crash.html": [
"0741735d4e357af037169937229c96209c457ac7",
[
@@ -4054,6 +4070,13 @@
{}
]
],
+ "firefox-bug-1907238-crash.html": [
+ "7bfa2538d974139d1533479f4331026dcaf0a234",
+ [
+ null,
+ {}
+ ]
+ ],
"first-letter-bidi-pre-crash.html": [
"fbff1c8f0bc5fd295be094d5a2db36315ef808f7",
[
@@ -4146,6 +4169,24 @@
]
]
},
+ "css-ruby": {
+ "break-within-bases": {
+ "break-spaces-crash.html": [
+ "d6b8f340844535bb45bd627a668bb32fa6d4a215",
+ [
+ null,
+ {}
+ ]
+ ]
+ },
+ "ruby-dynamic-removal-004-crash.html": [
+ "be7c28956f6d1b16e734ff34feef5ae3d2648157",
+ [
+ null,
+ {}
+ ]
+ ]
+ },
"css-scoping": {
"chrome-1492368-crash.html": [
"04d48ef21532405548b80e23c482e848b3fc1ef6",
@@ -4189,6 +4230,15 @@
]
]
},
+ "css-scrollbars": {
+ "invalid-needs-layout-crash.html": [
+ "0b0ae427897894f9f38a7ce9d88256e860b0d5ea",
+ [
+ null,
+ {}
+ ]
+ ]
+ },
"css-shapes": {
"shape-outside": {
"supported-shapes": {
@@ -5500,6 +5550,13 @@
},
"dom": {
"abort": {
+ "abort-signal-any-crash.html": [
+ "912c0d0ada738593700f453ff4810ece2d6e9af6",
+ [
+ null,
+ {}
+ ]
+ ],
"crashtests": {
"timeout-close.html": [
"ee8544a7f57edb8cac05e94dbd836eac20a37b85",
@@ -6316,6 +6373,13 @@
{}
]
],
+ "replace-body-after-designMode-off-and-making-editing-host.html": [
+ "1ec599eabff8408b7b3f9bde97ddc5f13de6209d",
+ [
+ null,
+ {}
+ ]
+ ],
"replace-document-root-with-object-and-mo.html": [
"bdad541422833382c831de19bc0c1973006448c1",
[
@@ -8224,6 +8288,13 @@
null,
{}
]
+ ],
+ "viewport-100vh.html": [
+ "cc862bd29955ec0c6730614a4eb72e3565c46cd4",
+ [
+ null,
+ {}
+ ]
]
},
"scroll-timelines": {
@@ -10678,13 +10749,6 @@
}
},
"console": {
- "console-count-logging-manual.html": [
- "640729f1a2164ed2ab7258481341ce4109b19726",
- [
- null,
- {}
- ]
- ],
"console-countReset-logging-manual.html": [
"f0a9358fba5d74b82bb39000d5d42f18d6ea2795",
[
@@ -21048,6 +21112,13 @@
},
"editing": {
"manual": {
+ "contenteditable-insertfromdrop-type-inputevent-data-manual.html": [
+ "1836553b3b36c26eb0ee84d72f1418bf527216f8",
+ [
+ null,
+ {}
+ ]
+ ],
"delete-manual.html": [
"be8c773b1d5179788d1f5aa2777d959b6cee9118",
[
@@ -21089,6 +21160,13 @@
null,
{}
]
+ ],
+ "textarea-insertfromdrop-type-inputevent-data-manual.html": [
+ "eee35a3822047dab86d24793de7d5c11793404ff",
+ [
+ null,
+ {}
+ ]
]
}
},
@@ -122406,6 +122484,19 @@
]
},
"self-alignment": {
+ "block-justify-self.html": [
+ "1235a04a14e4329509b41621c1fa39c424390bf8",
+ [
+ null,
+ [
+ [
+ "/css/css-align/self-alignment/block-justify-self-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"self-align-safe-unsafe-flex-001.html": [
"bb933b99d722d462b2b824d86fb15e825a598f5a",
[
@@ -122971,65 +123062,65 @@
{}
]
],
- "inset-area-abs-inline-container.html": [
- "7bc59356e95ed76a430c96b047212dd4b102e94f",
+ "position-anchor-001.html": [
+ "b0a964485c65ed1c8eeff89a1406bda9f4ea9b48",
[
null,
[
[
- "/css/css-anchor-position/inset-area-inline-container-ref.html",
+ "/css/css-anchor-position/position-anchor-ref.html",
"=="
]
],
{}
]
],
- "inset-area-inline-container.html": [
- "b25a928b1fe08bc503627f1fb3d29c1a83799e16",
+ "position-anchor-002.html": [
+ "a9248ef694f810cc7d06e4ce20f22807e91e6607",
[
null,
[
[
- "/css/css-anchor-position/inset-area-inline-container-ref.html",
+ "/css/css-anchor-position/position-anchor-ref.html",
"=="
]
],
{}
]
],
- "inset-area-scroll-adjust.html": [
- "0d3cef4fc9631037dd362de8f710362f23ea4f4b",
+ "position-area-abs-inline-container.html": [
+ "deaf60647d4ecf6e2039bacbe41e6eb3e8593d8b",
[
null,
[
[
- "/css/css-anchor-position/inset-area-scroll-adjust-ref.html",
+ "/css/css-anchor-position/position-area-inline-container-ref.html",
"=="
]
],
{}
]
],
- "position-anchor-001.html": [
- "b0a964485c65ed1c8eeff89a1406bda9f4ea9b48",
+ "position-area-inline-container.html": [
+ "b6661ce5baa4a2d8ee3c6a69291096b2be9c74fd",
[
null,
[
[
- "/css/css-anchor-position/position-anchor-ref.html",
+ "/css/css-anchor-position/position-area-inline-container-ref.html",
"=="
]
],
{}
]
],
- "position-anchor-002.html": [
- "a9248ef694f810cc7d06e4ce20f22807e91e6607",
+ "position-area-scroll-adjust.html": [
+ "497b526fb62b942f93d092c0a247b3f45d8f6cd0",
[
null,
[
[
- "/css/css-anchor-position/position-anchor-ref.html",
+ "/css/css-anchor-position/position-area-scroll-adjust-ref.html",
"=="
]
],
@@ -123037,7 +123128,7 @@
]
],
"position-try-switch-from-fixed-anchor.html": [
- "df398e0090dd67a3a8d9d645b4c6d1dcb0228c2c",
+ "4c62dc9933283af4391ebe2c248c35830d6b3dc8",
[
null,
[
@@ -123050,7 +123141,7 @@
]
],
"position-try-switch-to-fixed-anchor.html": [
- "469064e7e28730076d5c4cf55e5804ec1cc4e818",
+ "5024f5bd48d891958953989f98cd774f3a7bbc29",
[
null,
[
@@ -123063,7 +123154,7 @@
]
],
"position-visibility-add-no-overflow.html": [
- "de0647f88bedb93a886761080a72582e4a76f045",
+ "a71327ba4ca7923d80692d788dcb8c6baae2d6df",
[
null,
[
@@ -123076,7 +123167,7 @@
]
],
"position-visibility-anchors-valid.tentative.html": [
- "4b069c253b8c41e4500b8beefa9beeb854a8d90d",
+ "d04bc7c4974f83acc1900b92a4d293a246855d3d",
[
null,
[
@@ -123089,7 +123180,7 @@
]
],
"position-visibility-anchors-visible-after-scroll-in.html": [
- "f13c50091505f553da421141201884787886bffe",
+ "4a038f8de3e307634d888a36da084630d513104a",
[
null,
[
@@ -123102,7 +123193,7 @@
]
],
"position-visibility-anchors-visible-after-scroll-out.html": [
- "4294091b899c775b72e8b9c0fc17c1b4d8194c4a",
+ "2cf2fb3e22538067044c4d2c0ec5c940a82c9dd8",
[
null,
[
@@ -123115,7 +123206,7 @@
]
],
"position-visibility-anchors-visible-both-position-fixed.tentative.html": [
- "3ea26c896e9179cad79b711f38c8bb1186ea484f",
+ "c603288f0a70a1f43e7384b9dd26c474ce96bac5",
[
null,
[
@@ -123128,7 +123219,7 @@
]
],
"position-visibility-anchors-visible-chained-001.html": [
- "3f515a56868298b895e516ff784bc6daab509467",
+ "cdceba665eed9578fd7ffef61ecc04b55d6a089e",
[
null,
[
@@ -123141,7 +123232,7 @@
]
],
"position-visibility-anchors-visible-chained-002.html": [
- "aa1dcd0eb96326aa650680179ea254797c03d94d",
+ "cd34d07acc3411664e663c9114aaad7ab958892d",
[
null,
[
@@ -123154,7 +123245,7 @@
]
],
"position-visibility-anchors-visible-chained-003.html": [
- "9a1e077de0896d943e1f1f33258cdbc83727d780",
+ "7b2766d2e5c7835f43776ed123ad480c0daa4534",
[
null,
[
@@ -123167,7 +123258,7 @@
]
],
"position-visibility-anchors-visible-chained-004.html": [
- "62ab7578a34da859c1f319fce4ecace780f65daf",
+ "e76e4ff1600f1e03f514d6162f04766da1fb3644",
[
null,
[
@@ -123180,7 +123271,7 @@
]
],
"position-visibility-anchors-visible-change-anchor.html": [
- "117628e7dcaf8f4db97006839437e05b1cb4dedd",
+ "3fda2fa4371d503d246bf867877171a777d116ae",
[
null,
[
@@ -123193,7 +123284,7 @@
]
],
"position-visibility-anchors-visible-change-css-visibility.html": [
- "f9c598374c1981671091ea93c478d006d458764f",
+ "290de127a2321c255ca751a051875eb68e489129",
[
null,
[
@@ -123206,7 +123297,7 @@
]
],
"position-visibility-anchors-visible-css-visibility.html": [
- "a6990253251e6007b3f93f127ca9daa1ee5d78b1",
+ "8ef4762818b081ec92040d2954b421935b24e60f",
[
null,
[
@@ -123219,7 +123310,7 @@
]
],
"position-visibility-anchors-visible-non-intervening-container.html": [
- "9c4d085b7ea78ecb054bdc3b4a6b4774baf6c54e",
+ "42597c4ccc2ad31ce5961c6c935f2c10c5da7ce1",
[
null,
[
@@ -123232,7 +123323,7 @@
]
],
"position-visibility-anchors-visible-position-fixed.tentative.html": [
- "25665ae4668433b8d800a8a023de047b60571e07",
+ "9c3495a635d2eaeb77de9586f031dedec5d7af97",
[
null,
[
@@ -123245,7 +123336,7 @@
]
],
"position-visibility-anchors-visible-stacked-child.html": [
- "e563fecfed165d4bf77833df9e76430321e911fa",
+ "84b5feb02fc7fb7ba92311ab754cf233caf4520f",
[
null,
[
@@ -123258,7 +123349,7 @@
]
],
"position-visibility-anchors-visible-stacked-child.tentative.html": [
- "7c0d5dc6aadd36fc9a894dbf0add608f5c0e31c4",
+ "4a9fcc0ae50d1be63a1457a1c2f9ae376f5102a7",
[
null,
[
@@ -123271,7 +123362,7 @@
]
],
"position-visibility-anchors-visible-with-position.html": [
- "43dd2cc782120763ee553c52b2f18a18308a1b7e",
+ "8ad3eb7e31053a6978a638e88003eadd150138ff",
[
null,
[
@@ -123284,7 +123375,7 @@
]
],
"position-visibility-anchors-visible.html": [
- "78daffb11bbca5be003f0c4d12a405b501665dbd",
+ "db246311f94783fb75265db2169133934a2a9050",
[
null,
[
@@ -123310,7 +123401,7 @@
]
],
"position-visibility-no-overflow-stacked-child.html": [
- "1ea5ff9a1eedbea7350947d4bf89984448993415",
+ "78a7b3e62025ba71ee26a746d36159c152b3084b",
[
null,
[
@@ -123323,7 +123414,7 @@
]
],
"position-visibility-no-overflow.html": [
- "ea3b2d0802651d88a322c69f9d8ccb7f732e3729",
+ "0569a9d179c02501eb747d66c830da96da14ae3b",
[
null,
[
@@ -123336,7 +123427,7 @@
]
],
"position-visibility-remove-anchors-visible.html": [
- "95be15ca55bb0d50e331f0218000a7132fa1d112",
+ "3408642ad2b4017c140020f21c76a6055af55b67",
[
null,
[
@@ -123349,7 +123440,7 @@
]
],
"position-visibility-remove-no-overflow.html": [
- "2cd2ed9fa30812d032d045273a514033d9eb57b8",
+ "1761bbea0bf939b579aa15f2c9b1c9da6d701629",
[
null,
[
@@ -123522,6 +123613,19 @@
{}
]
],
+ "display-none-to-display-block.html": [
+ "9e8cb032d38d01eb176ac67d0cd8e0875d2033cb",
+ [
+ null,
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"flip-running-animation-via-variable.html": [
"22d23c1f72603f465b0550b74a3e2367c88684ab",
[
@@ -124583,6 +124687,19 @@
{}
]
],
+ "clip-text-animated-text.html": [
+ "4bf6e783a4cfdf13bba9fe29ff7b22c93dc5540c",
+ [
+ null,
+ [
+ [
+ "/css/css-backgrounds/background-clip/clip-text-animated-text-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"clip-text-dynamic-2.html": [
"ee6b45c2ddfb733513e94e9125e626f44b31ab58",
[
@@ -125019,6 +125136,61 @@
{}
]
],
+ "background-gradient-interpolation-001.html": [
+ "f239b1b68d00d7a192b69c7328c60c17bc7cfa77",
+ [
+ null,
+ [
+ [
+ "/css/css-backgrounds/background-gradient-interpolation-001-notref.html",
+ "!="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "background-gradient-interpolation-002.html": [
+ "44d1a5a5a1d0be8e64b91767da80656285d1832c",
+ [
+ null,
+ [
+ [
+ "/css/css-backgrounds/background-gradient-interpolation-002-notref.html",
+ "!="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "background-gradient-interpolation-003.html": [
+ "0b60549355471f1aca4caa540c292dc28e1628f9",
+ [
+ null,
+ [
+ [
+ "/css/css-backgrounds/background-gradient-interpolation-001.html",
+ "=="
+ ]
+ ],
+ {
+ "fuzzy": [
+ [
+ null,
+ [
+ [
+ 0,
+ 2
+ ],
+ [
+ 0,
+ 6500
+ ]
+ ]
+ ]
+ ]
+ }
+ ]
+ ],
"background-gradient-subpixel-fills-area.html": [
"78d4c99c06f3d867cd1a567c5558b97fbc1f89b0",
[
@@ -132669,7 +132841,7 @@
]
],
"color-mix-currentcolor-background-repaint-parent.html": [
- "af894546942453cb50b30334a6a49ab3383d2418",
+ "ba80a7b063ca560aa6f7ca36dd59f303423a67e0",
[
null,
[
@@ -132682,7 +132854,7 @@
]
],
"color-mix-currentcolor-background-repaint.html": [
- "e584c4f9a838847e4f606c300ee31ef2677ec5a1",
+ "19ed949334b25f1bf76ab9dda2bd186cd7fefb44",
[
null,
[
@@ -132695,7 +132867,7 @@
]
],
"color-mix-currentcolor-border-repaint-parent.html": [
- "a8d55ace8fce3e01e9c15e354342d298b627c07b",
+ "058292efadfea96d15479c253eef3d20c4a71b76",
[
null,
[
@@ -132708,7 +132880,7 @@
]
],
"color-mix-currentcolor-border-repaint.html": [
- "aeacd72d3d27d26a4cfca69c382c3565e2979971",
+ "24407bbcf3086e3034eedfb6dd6a0079dff10945",
[
null,
[
@@ -132721,7 +132893,7 @@
]
],
"color-mix-currentcolor-outline-repaint-parent.html": [
- "e13880560637dd6483b58230d925d76084182505",
+ "bdfa0897e950432aba5a34f700fa7c05116e95c4",
[
null,
[
@@ -132734,7 +132906,7 @@
]
],
"color-mix-currentcolor-outline-repaint.html": [
- "87f87b0edb7fe9aab0e32537cce90ebeb8f97262",
+ "b796adaf0098ed72f93d99bf1ba97a14a8ed11db",
[
null,
[
@@ -133762,6 +133934,45 @@
{}
]
],
+ "block-container-block-end-collapsed-margins.html": [
+ "81ac9e141e3baddf3ca1b20528e9b12e5c9a3154",
+ [
+ null,
+ [
+ [
+ "/css/css-box/margin-trim/block-container-block-end-collapsed-margins-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "block-container-block-end-self-collapsing-item-has-larger-block-end.html": [
+ "f5c6f16797075fb77f15e988529c5108881b415c",
+ [
+ null,
+ [
+ [
+ "/css/css-box/margin-trim/block-container-block-end-self-collapsing-item-has-larger-block-end-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "block-container-block-end-self-collapsing-item-has-larger-block-start.html": [
+ "b5f7bf048db11553ed2588548a030b92c2e74fd8",
+ [
+ null,
+ [
+ [
+ "/css/css-box/margin-trim/block-container-block-end-self-collapsing-item-has-larger-block-start-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"block-container-block-start-001.html": [
"c33c7f0abe5aa80c396f0050a47e4ea3c854e9dc",
[
@@ -133788,6 +133999,45 @@
{}
]
],
+ "block-container-block-start-collapsed-margins.html": [
+ "35c5df82116e707f131f64944cb01aef73f0ea82",
+ [
+ null,
+ [
+ [
+ "/css/css-box/margin-trim/block-container-block-start-collapsed-margins-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "block-container-block-start-self-collapsing-item-has-larger-block-end.html": [
+ "6fab6732a876f73337bca95b2b04efc17a866253",
+ [
+ null,
+ [
+ [
+ "/css/css-box/margin-trim/block-container-block-start-self-collapsing-item-has-larger-block-end-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "block-container-block-start-self-collapsing-item-larger-block-start.html": [
+ "91919e22e07543d4d44d33bcc6f70b02916f10f0",
+ [
+ null,
+ [
+ [
+ "/css/css-box/margin-trim/block-container-block-start-self-collapsing-item-larger-block-start-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"block-container-non-adjoining-item.html": [
"215175418b834c74f99f66237aebdcd1b859776f",
[
@@ -146039,6 +146289,19 @@
{}
]
],
+ "scope-part.html": [
+ "6583db20c07068bf7a272012fdc0a4649c3b4016",
+ [
+ null,
+ [
+ [
+ "/css/css-cascade/scope-part-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"scope-pseudo-element.html": [
"29c446906092dc4bccec7fb4b21fb8b4a20b8f8f",
[
@@ -151316,6 +151579,71 @@
{}
]
],
+ "no-layout-containment-abspos-dynamic.html": [
+ "773476101f624dc0094621687ff6cdbc04eb2c76",
+ [
+ null,
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square-only.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "no-layout-containment-abspos.html": [
+ "f456d71044a29e0656db1b5169cbae32d4e1cb3a",
+ [
+ null,
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square-only.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "no-layout-containment-baseline.html": [
+ "1f8161e2185116b182c7e088ab42016235ac3771",
+ [
+ null,
+ [
+ [
+ "/css/css-conditional/container-queries/no-layout-containment-baseline-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "no-layout-containment-fixedpos-dynamic.html": [
+ "d73a31c003469cd64fe9cc2dcac5ff1e493a14ae",
+ [
+ null,
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square-only.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "no-layout-containment-fixedpos.html": [
+ "0730763a553efdba37aaaa4cbfe874b4e05bccb1",
+ [
+ null,
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square-only.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"pseudo-elements-002.html": [
"1198fb959d00e6befd2de62e76c10a547b589a4a",
[
@@ -151407,6 +151735,32 @@
{}
]
],
+ "scrollbar-container-units-block.html": [
+ "aabc8063573b814a8af203961a82ad18c6a93f13",
+ [
+ null,
+ [
+ [
+ "/css/css-conditional/container-queries/scrollbar-container-units-block-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "scrollbar-container-units-inline.html": [
+ "794ae9441c04d68f339f624c49c3d290e05b24ba",
+ [
+ null,
+ [
+ [
+ "/css/css-conditional/container-queries/scrollbar-container-units-inline-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"size-container-with-quotes.html": [
"30a4191d3371af6912610b2e9a878c8024d87f8c",
[
@@ -167273,6 +167627,58 @@
{}
]
],
+ "flex-item-max-height-min-content.html": [
+ "bf2bc67453d52931c747d8fb3fed874dfbfb52e9",
+ [
+ null,
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square-only.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "flex-item-max-width-min-content.html": [
+ "dc5ce0523a6a12e50aaf23f26c3529d23040bee7",
+ [
+ null,
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square-only.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "flex-item-min-height-min-content.html": [
+ "7bb06a8ef7b78e7432e4dbbdbc8eea8d9474eb85",
+ [
+ null,
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square-only.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "flex-item-min-width-min-content.html": [
+ "ee232956f27b9d2df466e0139baea4e2421d9f53",
+ [
+ null,
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square-only.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"flex-item-transferred-sizes-padding-border-sizing.html": [
"fc1a163e01ee1eaca8186619aee3e8d0e25c3155",
[
@@ -170950,6 +171356,84 @@
{}
]
],
+ "flexbox-writing-mode-slr-row-mix.html": [
+ "a4d841f3b310fdd087ca6bf0bb21684724a36860",
+ [
+ null,
+ [
+ [
+ "/css/css-flexbox/flexbox-writing-mode-slr-row-mix-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "flexbox-writing-mode-slr-rtl.html": [
+ "8bc0f54819b23405d8a6acfa859fc8bc358ebf89",
+ [
+ null,
+ [
+ [
+ "/css/css-flexbox/flexbox-writing-mode-003-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "flexbox-writing-mode-slr.html": [
+ "4eb27c4e457d57e53b6198c49d7162df1b5da08c",
+ [
+ null,
+ [
+ [
+ "/css/css-flexbox/flexbox-writing-mode-slr-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "flexbox-writing-mode-srl-row-mix.html": [
+ "8724d9574d127eb5dfb34735816c303fd4b794b5",
+ [
+ null,
+ [
+ [
+ "/css/css-flexbox/flexbox-writing-mode-srl-row-mix-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "flexbox-writing-mode-srl-rtl.html": [
+ "bf9936d195711a35375d9abe8fd60f853ff2c605",
+ [
+ null,
+ [
+ [
+ "/css/css-flexbox/flexbox-writing-mode-005-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "flexbox-writing-mode-srl.html": [
+ "cc2b5136df98a66254fae00c045278a0bb282244",
+ [
+ null,
+ [
+ [
+ "/css/css-flexbox/flexbox-writing-mode-002-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"flexbox_align-content-center.html": [
"37c76f4c02ce49a30ea1c293020c7e4de7dae3e3",
[
@@ -177867,7 +178351,7 @@
]
],
"font-size-adjust-012.html": [
- "197a1809a89295fe09d3445198c553096211c4bf",
+ "8052ac6400850d4e9528f5f5b108cd06cc1abdc8",
[
null,
[
@@ -177883,11 +178367,11 @@
[
[
0,
- 120
+ 130
],
[
0,
- 160
+ 350
]
]
]
@@ -177896,7 +178380,7 @@
]
],
"font-size-adjust-013.html": [
- "bd59456462724cbdc2111b883936e198760d2631",
+ "5fab02732eb956512e4fa21689f93444fd1a96b7",
[
null,
[
@@ -177912,11 +178396,11 @@
[
[
0,
- 120
+ 130
],
[
0,
- 160
+ 350
]
]
]
@@ -180363,6 +180847,19 @@
{}
]
],
+ "synthetic-bold-space-width.html": [
+ "ecb0dd1c912d5a82d694f163586c0d3cdbf003e2",
+ [
+ null,
+ [
+ [
+ "/css/css-fonts/synthetic-bold-space-width-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"system-ui-ar.html": [
"a65a564f9bae9729c033c3de8d51bf4ae2fab2fb",
[
@@ -183703,7 +184200,7 @@
],
"self-baseline": {
"grid-self-baseline-001.html": [
- "2473bb5d4fc8adc351af441bf39cffcacc076273",
+ "61621ab0d6bfbffde43d402d481263c301094e93",
[
null,
[
@@ -183716,7 +184213,7 @@
]
],
"grid-self-baseline-002-b.html": [
- "7d9ebecb8ca542f8ebb7574e87a77c086262ebca",
+ "9d3b55793512be253f6e10fc37dccbf23c7163d7",
[
null,
[
@@ -183729,7 +184226,7 @@
]
],
"grid-self-baseline-002.html": [
- "700fd26097e850a3a348dedc657ebd295a439486",
+ "d563dd9a2c473a3a55eeedecec6947aadda30175",
[
null,
[
@@ -183742,7 +184239,7 @@
]
],
"grid-self-baseline-003.html": [
- "2372ac19318f65ba1a28ff15aea46579d10c63aa",
+ "746fb1a0b02abc2ea70db106ce5cb5783af41207",
[
null,
[
@@ -183755,7 +184252,7 @@
]
],
"grid-self-baseline-004.html": [
- "c7f49bf24af08f82df9d2975bd485057de5e3018",
+ "9b08598cefbe898260699e3d16feebb466f602d7",
[
null,
[
@@ -183768,7 +184265,7 @@
]
],
"grid-self-baseline-005.html": [
- "3bfa2d2079955095fc73244f7073e99aeda0e5b1",
+ "0e2e0c51aad3cc501b72071ad0218b65e0051514",
[
null,
[
@@ -183781,7 +184278,7 @@
]
],
"grid-self-baseline-006.html": [
- "34edced2b4345474acd364f6d3cb6310f24eca3e",
+ "bbadf59158bccdc44f1ad8f9e8190dbfc90273e8",
[
null,
[
@@ -183794,7 +184291,7 @@
]
],
"grid-self-baseline-007.html": [
- "e0966bb6e6421a5e950d486e3f45b93ce4a55416",
+ "5a6488f08ed07e378e2bc62ae2a2c5f7628c6381",
[
null,
[
@@ -183976,7 +184473,7 @@
]
],
"grid-self-baseline-horiz-001.html": [
- "556009dfde719b49ad0bb62f939e4a08ee16053f",
+ "c70926b9a51e131424ae1e7e6260be4e48c688ca",
[
null,
[
@@ -183989,7 +184486,7 @@
]
],
"grid-self-baseline-horiz-002.html": [
- "c196cd35c514da0e35a6754a3e7905b02d6eda16",
+ "8b7d080669fde3d93d4a570d99fae74aa5d173c0",
[
null,
[
@@ -184002,7 +184499,7 @@
]
],
"grid-self-baseline-horiz-003.html": [
- "287cb80fd58b4f8feb57ce5723478cb025c77040",
+ "f97ffc7d281774edc212f18f939d07b2703f58fb",
[
null,
[
@@ -184015,7 +184512,7 @@
]
],
"grid-self-baseline-horiz-004.html": [
- "673c9ff20829c5ac451443bf9bccacb6ed9d6546",
+ "472e0c1db9e63b62253aefaa4d7e74399ae9fcca",
[
null,
[
@@ -184028,7 +184525,7 @@
]
],
"grid-self-baseline-horiz-005.html": [
- "f816e893ca288abeb0b94a13d049f04d6ea8b4f4",
+ "d482d7fbff7cb1e7a15ae0d9c0e1c13eca678c4d",
[
null,
[
@@ -184041,7 +184538,7 @@
]
],
"grid-self-baseline-horiz-006.html": [
- "c034040b5fdc032770014d4b55ef55c2f5b7956c",
+ "f06a24723f00ae0d02baf77b48676a05634269d5",
[
null,
[
@@ -184054,7 +184551,7 @@
]
],
"grid-self-baseline-horiz-007.html": [
- "60185142427a8858a37c93e380578a37cd9b936d",
+ "1b9178b16b0625117f7cfdeb9e60dce24ddd4eeb",
[
null,
[
@@ -184067,7 +184564,7 @@
]
],
"grid-self-baseline-vertical-lr-001.html": [
- "801474df57c29737a173e46c0eb59a5e4211f0ed",
+ "e4023de1a26435c4cb8b8c700be5ae6307508316",
[
null,
[
@@ -184080,7 +184577,7 @@
]
],
"grid-self-baseline-vertical-lr-002.html": [
- "6dd235a7b6fcdf7a7d37ee5f65776e28669bf252",
+ "a6d73382161629e609a83b45b2e650174ed77081",
[
null,
[
@@ -184093,7 +184590,7 @@
]
],
"grid-self-baseline-vertical-lr-003.html": [
- "18f581620d611e159f9c9af8f9a9bc4b40b3a3ae",
+ "d100bfb9138e051c78342cf5987c0ebb682feae3",
[
null,
[
@@ -184106,7 +184603,7 @@
]
],
"grid-self-baseline-vertical-lr-004.html": [
- "1f2e3860b06f96a5d4fe1ee6416a9ba78f347eee",
+ "4e57fdba679c9affbd765d53f4f7fa2d75d01dd2",
[
null,
[
@@ -184119,7 +184616,7 @@
]
],
"grid-self-baseline-vertical-lr-005.html": [
- "a27cb67898eb5e3167c6869faffaf2936e9705cd",
+ "f3d9b2368d1bbad978c28a9b1bf4937b695849ed",
[
null,
[
@@ -184132,7 +184629,7 @@
]
],
"grid-self-baseline-vertical-lr-006.html": [
- "654c17cd9e85ba7bb3d2abdd91e5405036d6ddaa",
+ "7a4a8118f5a7176754bc4194b4425978468143a2",
[
null,
[
@@ -184145,7 +184642,7 @@
]
],
"grid-self-baseline-vertical-lr-007.html": [
- "ae7b6bf36ea49eb8b078a5b40f608dc8a7167323",
+ "8e2422403a63fe568042763e860a17da2ad1d2e9",
[
null,
[
@@ -184158,7 +184655,7 @@
]
],
"grid-self-baseline-vertical-rl-001.html": [
- "af7ca16d6345ad52c00d2efcc5bd33fca93d5619",
+ "890cde5a00c3659d8a1e4a6b6ce2696cd5e27f21",
[
null,
[
@@ -184171,7 +184668,7 @@
]
],
"grid-self-baseline-vertical-rl-002.html": [
- "9aa00a71147d2c4618859ba28905ddf6f0c4cd9a",
+ "345d71d0af264dfbd6bea14656b3586a92b39d5d",
[
null,
[
@@ -184184,7 +184681,7 @@
]
],
"grid-self-baseline-vertical-rl-003.html": [
- "2ae2f4fba6536359b8ec11b71f3b448445e776a2",
+ "9567b08c693bb8972d63b5943ee1f38b57c18032",
[
null,
[
@@ -184197,7 +184694,7 @@
]
],
"grid-self-baseline-vertical-rl-004.html": [
- "d2f08642fcd52bbb574206b957caf1a71cec231c",
+ "35c3fa49bea5692c9da74f5e4fe2d8e0b3ca5b01",
[
null,
[
@@ -184210,7 +184707,7 @@
]
],
"grid-self-baseline-vertical-rl-005.html": [
- "0d40ce288d7406bec157fb27aff9bcb591d3b87d",
+ "639a76fe146071c2382e5c8b8eeb92a25c8325ed",
[
null,
[
@@ -184223,7 +184720,7 @@
]
],
"grid-self-baseline-vertical-rl-006.html": [
- "40f1e0796ea3733d55679a3aa5fcbe8a220ab4bc",
+ "4ace6d0343931e281e563268826c485897d55a87",
[
null,
[
@@ -184236,7 +184733,7 @@
]
],
"grid-self-baseline-vertical-rl-007.html": [
- "49bab61ca091aaab8e4773d29ea274ba3be3790c",
+ "dd06aae4c50d170d6042ef4a89497a2155683384",
[
null,
[
@@ -184748,6 +185245,19 @@
]
]
},
+ "grid-in-table-cell-with-img.html": [
+ "492a5866b71cf503ea41c9cb4d862e96c4ee4d18",
+ [
+ null,
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square-only.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"grid-item-non-auto-height-stretch-001.html": [
"458ed020e37d8b8b66bc6ee7a8b4a6f8acf7d1df",
[
@@ -187313,6 +187823,19 @@
]
]
},
+ "grid-relayout-with-nested-grid.html": [
+ "a898affa3a2944aa870258e448b53dc06269f26a",
+ [
+ null,
+ [
+ [
+ "/css/css-grid/grid-relayout-with-nested-grid-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"grid-with-aspect-ratio-uses-content-box-height-for-track-sizing.html": [
"45e527dd44ae89bb42e87a15ccb6ae62c0a3f918",
[
@@ -188012,78 +188535,169 @@
]
},
"intrinsic-sizing": {
- "masonry-intrinsic-sizing-001.html": [
- "cc0608eafe7f3f983468205a5bdbeda645f2f411",
+ "masonry-intrinsic-sizing-cols-001.html": [
+ "ead5ad98086170265c3e5877049e7ed3effd952d",
[
null,
[
[
- "/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-001-ref.html",
+ "/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-001-ref.html",
"=="
]
],
{}
]
],
- "masonry-intrinsic-sizing-002.html": [
- "3867bb13c8915dd992cd0081ab54a6dbdfd16d88",
+ "masonry-intrinsic-sizing-cols-002.html": [
+ "03e8617f248939a48ead8d69d0b8f181298372f9",
[
null,
[
[
- "/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-002-ref.html",
+ "/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-002-ref.html",
"=="
]
],
{}
]
],
- "masonry-intrinsic-sizing-003.html": [
- "48489d3c86985fedb0635f25c82b129190148edb",
+ "masonry-intrinsic-sizing-cols-003.html": [
+ "9b03ee44ab1caab1413f29167d1cc47e72a23902",
[
null,
[
[
- "/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-003-ref.html",
+ "/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-003-ref.html",
"=="
]
],
{}
]
],
- "masonry-intrinsic-sizing-004.html": [
- "c8bc671bb3b4f5981df78e8e21e0a50bf011fecc",
+ "masonry-intrinsic-sizing-cols-004.html": [
+ "3c2f1a20e11e95ed0a8d6975e823fbb857bfa971",
[
null,
[
[
- "/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-004-ref.html",
+ "/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-004-ref.html",
"=="
]
],
{}
]
],
- "masonry-intrinsic-sizing-005.html": [
- "83afd5bafa0376e105f38de833aa94b6c2603222",
+ "masonry-intrinsic-sizing-cols-005.html": [
+ "a4edd6151f654b2c72955469f5075589f29da3ee",
[
null,
[
[
- "/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-005-ref.html",
+ "/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-005-ref.html",
"=="
]
],
{}
]
],
- "masonry-intrinsic-sizing-006.html": [
- "ad5480092162584589bbea3608f70688d7e6eb3c",
+ "masonry-intrinsic-sizing-cols-006.html": [
+ "e980d84b8e92d180cd21752d416fba6f0e227963",
[
null,
[
[
- "/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-006-ref.html",
+ "/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-006-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "masonry-intrinsic-sizing-cols-007.html": [
+ "e00273f6ed866859e840424e55b2a57ab446b6a5",
+ [
+ null,
+ [
+ [
+ "/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-007-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "masonry-intrinsic-sizing-rows-001.html": [
+ "45b5de5d0c837804c9d85065262f9afeae2aa292",
+ [
+ null,
+ [
+ [
+ "/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-001-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "masonry-intrinsic-sizing-rows-002.html": [
+ "5faf63c2c244b567bc03a176739ee254cd75bbd9",
+ [
+ null,
+ [
+ [
+ "/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-002-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "masonry-intrinsic-sizing-rows-003.html": [
+ "5e0a150ef1f089e5678e2a806ddfec3a385d5e61",
+ [
+ null,
+ [
+ [
+ "/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-003-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "masonry-intrinsic-sizing-rows-004.html": [
+ "6bacac5255dbb2747877570f1adbf562757b1387",
+ [
+ null,
+ [
+ [
+ "/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-004-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "masonry-intrinsic-sizing-rows-005.html": [
+ "4c8e4373202eac737da33b13b954c2936fa071bb",
+ [
+ null,
+ [
+ [
+ "/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-005-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "masonry-intrinsic-sizing-rows-006.html": [
+ "0639e395eaef2f759fef77be8148d40a9dcf3bcd",
+ [
+ null,
+ [
+ [
+ "/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-006-ref.html",
"=="
]
],
@@ -189901,6 +190515,19 @@
]
},
"css-highlight-api": {
+ "highlight-image.html": [
+ "b5d44e06b29735d6a5ab9fbfc9d1f92917fd4ff3",
+ [
+ null,
+ [
+ [
+ "/css/css-highlight-api/highlight-image-notref.html",
+ "!="
+ ]
+ ],
+ {}
+ ]
+ ],
"highlight-priority-painting.html": [
"89ae87359250001fb4105142e174f15b0c5896da",
[
@@ -189914,6 +190541,84 @@
{}
]
],
+ "highlight-text-across-elements.html": [
+ "4ff6cff4b0b2f872ad494cefeab8bcc60a95878d",
+ [
+ null,
+ [
+ [
+ "/css/css-highlight-api/highlight-text-across-elements-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "highlight-text-cascade.html": [
+ "20d5eaf60a025715d7ba1b72804db9c35fd94090",
+ [
+ null,
+ [
+ [
+ "/css/css-highlight-api/highlight-text-cascade-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "highlight-text-decorations.html": [
+ "bf8f3f79b0d9765886f3925f9b4d4c54d29ea817",
+ [
+ null,
+ [
+ [
+ "/css/css-highlight-api/highlight-text-decorations-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "highlight-text-dynamic.html": [
+ "8258c1322a4d1f1305bfcdd6b8f848b0f8009d47",
+ [
+ null,
+ [
+ [
+ "/css/css-highlight-api/highlight-text-dynamic-notref.html",
+ "!="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "highlight-text-replace.html": [
+ "6a47e06f5ca5b39920233166fbfb6ef41f500493",
+ [
+ null,
+ [
+ [
+ "/css/css-highlight-api/highlight-text-replace-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "highlight-text.html": [
+ "1442d9602d87fb239425eddf929559fcad7a7133",
+ [
+ null,
+ [
+ [
+ "/css/css-highlight-api/highlight-text-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"painting": {
"css-highlight-painting-underline-offset-001.html": [
"534438089ca0afd4a565e615f43cd964db3a0eb6",
@@ -191329,7 +192034,7 @@
]
],
"conic-gradient-angle-negative.html": [
- "ff8e20aafedd1c21730d1a5e61787f525d47ef11",
+ "5a7030d0ff098d020864ccd16856119026322369",
[
null,
[
@@ -191338,11 +192043,27 @@
"=="
]
],
- {}
+ {
+ "fuzzy": [
+ [
+ null,
+ [
+ [
+ 1,
+ 1
+ ],
+ [
+ 40000,
+ 40000
+ ]
+ ]
+ ]
+ ]
+ }
]
],
"conic-gradient-angle.html": [
- "0b3404508d072705a59bdc97ac23b8d53fc1ffde",
+ "ba37ec15e1e4ad6651a5b8e039884d0980d897ca",
[
null,
[
@@ -191351,11 +192072,27 @@
"=="
]
],
- {}
+ {
+ "fuzzy": [
+ [
+ null,
+ [
+ [
+ 1,
+ 1
+ ],
+ [
+ 40000,
+ 40000
+ ]
+ ]
+ ]
+ ]
+ }
]
],
"conic-gradient-center.html": [
- "ecbc3ffa5c7cbae41b90940b6cdb591e82aef4cb",
+ "7e810270567dc7ec63157054d6d6415d38d415e4",
[
null,
[
@@ -191364,7 +192101,23 @@
"=="
]
],
- {}
+ {
+ "fuzzy": [
+ [
+ null,
+ [
+ [
+ 1,
+ 1
+ ],
+ [
+ 40000,
+ 40000
+ ]
+ ]
+ ]
+ ]
+ }
]
],
"cross-fade-basic.html": [
@@ -193530,7 +194283,7 @@
]
],
"multiple-position-color-stop-conic.html": [
- "8a7331d08ff53bed6c19d96c95740b57fed43516",
+ "41aa505c879562f90658f0f8fd83f597a62d44d8",
[
null,
[
@@ -193539,7 +194292,23 @@
"=="
]
],
- {}
+ {
+ "fuzzy": [
+ [
+ null,
+ [
+ [
+ 1,
+ 1
+ ],
+ [
+ 10000,
+ 10000
+ ]
+ ]
+ ]
+ ]
+ }
]
],
"multiple-position-color-stop-linear-2.html": [
@@ -193611,7 +194380,7 @@
]
],
"normalization-conic-2.html": [
- "7f5c3954f61a3c0f2c71069065f0c6d29bb1708b",
+ "9856f6b8f2c1472330a97cf79b553e7703cb1df5",
[
null,
[
@@ -193620,11 +194389,27 @@
"=="
]
],
- {}
+ {
+ "fuzzy": [
+ [
+ null,
+ [
+ [
+ 1,
+ 1
+ ],
+ [
+ 10000,
+ 10000
+ ]
+ ]
+ ]
+ ]
+ }
]
],
"normalization-conic-degenerate.html": [
- "909fd54dcbdb4c865a8bbfc4f7d9b966cd1c663d",
+ "6905c39ef9d2c2c92c8ad2b1029ae1feb6e4f2e5",
[
null,
[
@@ -193633,11 +194418,27 @@
"=="
]
],
- {}
+ {
+ "fuzzy": [
+ [
+ null,
+ [
+ [
+ 1,
+ 1
+ ],
+ [
+ 10000,
+ 10000
+ ]
+ ]
+ ]
+ ]
+ }
]
],
"normalization-conic.html": [
- "9c5e82d71cc779553835400aa596fe973d94e4bb",
+ "21fb8bae8a62043ca63b60006443a558c42f6dee",
[
null,
[
@@ -193646,7 +194447,23 @@
"=="
]
],
- {}
+ {
+ "fuzzy": [
+ [
+ null,
+ [
+ [
+ 1,
+ 1
+ ],
+ [
+ 10000,
+ 10000
+ ]
+ ]
+ ]
+ ]
+ }
]
],
"normalization-linear-2.html": [
@@ -196821,7 +197638,7 @@
]
],
"out-of-range-color-stop-conic.html": [
- "be0c73a3bac62f5686f255245b080a07331ed48c",
+ "1fe59a5a6b917062b834ef898345ace2a0c90217",
[
null,
[
@@ -196830,7 +197647,23 @@
"=="
]
],
- {}
+ {
+ "fuzzy": [
+ [
+ null,
+ [
+ [
+ 1,
+ 1
+ ],
+ [
+ 40000,
+ 40000
+ ]
+ ]
+ ]
+ ]
+ }
]
],
"repeating-conic-gradient.html": [
@@ -196862,8 +197695,34 @@
}
]
],
+ "svg-images-are-ignored.html": [
+ "99d86f366cae594889a38e8df9bc6ca2026d8189",
+ [
+ null,
+ [
+ [
+ "/css/css-images/svg-images-are-ignored-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "svg-script-is-ignored.html": [
+ "e57f22d6b8af9e9ea44e3d0196e9e2100b14aa7e",
+ [
+ null,
+ [
+ [
+ "/css/css-images/svg-script-is-ignored-ref.svg",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"tiled-conic-gradients.html": [
- "22f9f4b6ba753d926b827ec1cb5352e5a7ed833d",
+ "eab48b83e92572f3936bd9601876633c47d4bf48",
[
null,
[
@@ -196872,7 +197731,23 @@
"=="
]
],
- {}
+ {
+ "fuzzy": [
+ [
+ null,
+ [
+ [
+ 1,
+ 1
+ ],
+ [
+ 40000,
+ 40000
+ ]
+ ]
+ ]
+ ]
+ }
]
],
"tiled-gradients.html": [
@@ -201524,6 +202399,19 @@
],
{}
]
+ ],
+ "pseudo-element-remove-update.html": [
+ "dea7d99662b57179d5dedcef081346f9a7fe9101",
+ [
+ null,
+ [
+ [
+ "/css/css-lists/pseudo-element-remove-update-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
]
},
"css-logical": {
@@ -214266,16 +215154,14 @@
],
{}
]
- ]
- },
- "css-outline": {
- "subpixel-outline-width.tentative.html": [
- "a9fc0c49cf3e4a21c36eace6769058f99afa1458",
+ ],
+ "supports-rule.html": [
+ "886eda432370f1262dd55280e9d941cc2667c5aa",
[
null,
[
[
- "/css/css-outline/reference/subpixel-outline-width-ref.tentative.html",
+ "/css/css-nesting/supports-rule-ref.html",
"=="
]
],
@@ -215221,6 +216107,32 @@
{}
]
],
+ "line-clamp-auto-033.tentative.html": [
+ "f18d7eefb271e8529d0f2dedde8fe3fe9d7ea947",
+ [
+ null,
+ [
+ [
+ "/css/css-overflow/line-clamp/reference/webkit-line-clamp-005-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "line-clamp-auto-034.tentative.html": [
+ "d581c31e10061aadff3aee62e1d92d990598c7ec",
+ [
+ null,
+ [
+ [
+ "/css/css-overflow/line-clamp/reference/line-clamp-auto-034-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"line-clamp-with-abspos-001.tentative.html": [
"79667f23fbdc3d941484c343b2cf0a04ec34363f",
[
@@ -225222,6 +226134,32 @@
]
},
"css-rhythm": {
+ "block-step-size-establishes-block-formatting-context-list-item.html": [
+ "85daa729789becc1ed561596788ede5dde23c490",
+ [
+ null,
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square-only.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "block-step-size-establishes-block-formatting-context.html": [
+ "e96e3e00824eca6c449a9753f82d81476a264c37",
+ [
+ null,
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square-only.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"block-step-size-establishes-independent-formatting-context-list-item.html": [
"301ae3e9a2ff58084ba942edbcaf862521cf51f0",
[
@@ -225248,6 +226186,19 @@
{}
]
],
+ "block-step-size-none-does-not-establish-block-formatting-context.html": [
+ "afbfcd84efb731cfa1fcb5d2261c93fb46e6ecc1",
+ [
+ null,
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"block-step-size-none-does-not-establish-indepdendent-formatting-context.html": [
"678428e381be5cd2cdb05054cf67ed416d655d44",
[
@@ -234694,6 +235645,84 @@
{}
]
],
+ "block-size-with-min-or-max-content-2.html": [
+ "cd649b86df19127c52e4713bbb93a05ec46a2ed3",
+ [
+ null,
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square-only.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "block-size-with-min-or-max-content-3.html": [
+ "0d765ca27d12617286bc1066de1c7ef1d4b59601",
+ [
+ null,
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square-only.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "block-size-with-min-or-max-content-4.html": [
+ "95a60ec85fa83b4833f7803b8937dbf3035dcb8b",
+ [
+ null,
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square-only.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "block-size-with-min-or-max-content-5.html": [
+ "749ccf59bfcc604221e93bdc7f933de020cdfa9c",
+ [
+ null,
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square-only.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "block-size-with-min-or-max-content-6.html": [
+ "e05962cb7a6995319deb828eb449fbfe3b58c79a",
+ [
+ null,
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square-only.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "block-size-with-min-or-max-content-7.html": [
+ "11517c23ee7d773966156cbaf52a8ddc2a38a6eb",
+ [
+ null,
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square-only.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"block-size-with-min-or-max-content-table-1a.html": [
"f5abc672a853779fdcc8356db754954bc711aadb",
[
@@ -236217,6 +237246,19 @@
{}
]
],
+ "intrinsic-percent-non-replaced-002.html": [
+ "fd0490a68a969afcfa349d2ecc7d0198c999fdd1",
+ [
+ null,
+ [
+ [
+ "/css/css-sizing/intrinsic-percent-non-replaced-002-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"intrinsic-percent-non-replaced-003.html": [
"1dd1a2ef5da40e98950e28a6c6951ed75219491a",
[
@@ -236698,6 +237740,19 @@
{}
]
],
+ "replaced-max-height-min-content.html": [
+ "189a979be8beb66f45b4677c40431ad6e491da51",
+ [
+ null,
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square-only.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"replaced-max-size-saturation.html": [
"16765fba78afb703e89c84f81df0384e3abe7d74",
[
@@ -236711,6 +237766,45 @@
{}
]
],
+ "replaced-max-width-min-content.html": [
+ "41074632422d3e01dde66ad843411698c3c49807",
+ [
+ null,
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square-only.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "replaced-min-height-min-content.html": [
+ "6e6938107336fdcbdfadb820e9888d4ef8d0da36",
+ [
+ null,
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square-only.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "replaced-min-width-min-content.html": [
+ "bb77166def1e806d4b8277ffd105d71277d46db1",
+ [
+ null,
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square-only.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"slice-intrinsic-size.html": [
"05ce6e46304adda6aab773147e8a32d2564680b6",
[
@@ -236776,6 +237870,32 @@
{}
]
],
+ "svg-no-ar-max-height-min-content.html": [
+ "ae3f69e72bd436483f9e1e0961be3770beae6250",
+ [
+ null,
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square-only.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "svg-no-ar-min-height-min-content.html": [
+ "6848e9375be22f7d6abf4e321c20add0097978ff",
+ [
+ null,
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square-only.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"table-child-percentage-height-with-border-box.html": [
"1b798ff8c54cd36b821f62d0aec32d275a998da5",
[
@@ -238092,6 +239212,32 @@
{}
]
],
+ "remove-caption-from-anon-table.html": [
+ "ea71c54327c4efcc127be3a5de5758b421161b45",
+ [
+ null,
+ [
+ [
+ "/css/css-tables/remove-caption-from-anon-table-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "remove-colgroup-from-anon-table.html": [
+ "cea6524ddfce6feb9edee877770680b7049613bf",
+ [
+ null,
+ [
+ [
+ "/css/css-tables/remove-caption-from-anon-table-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"row-group-margin-border-padding.html": [
"97c7a6e5b9ce29ab7143a5b0b06e57916097ce02",
[
@@ -257756,7 +258902,7 @@
]
],
"text-decoration-thickness.html": [
- "93fe9a611579de3ed66d23b62049fda45e6924df",
+ "66080a1301d8cb88ca91bdc70984ce91fb2c1a97",
[
null,
[
@@ -258754,45 +259900,6 @@
{}
]
],
- "text-decoration-underline-position-horizontal.html": [
- "e4d495e722e43414e562c315c530c285d7bc6356",
- [
- null,
- [
- [
- "/css/css-text-decor/reference/text-decoration-underline-position-horizontal-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "text-decoration-underline-position-vertical-ja.html": [
- "6f41e939b24ffdfeac213879550c6c5d1158b922",
- [
- null,
- [
- [
- "/css/css-text-decor/reference/text-decoration-underline-position-vertical-ja-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
- "text-decoration-underline-position-vertical.html": [
- "9f60bc116bab043db1e476e68c77ab6797f6d323",
- [
- null,
- [
- [
- "/css/css-text-decor/reference/text-decoration-underline-position-vertical-ref.html",
- "=="
- ]
- ],
- {}
- ]
- ],
"text-decoration-underline-wavy-covers-whole-line-length-001.html": [
"9ff8cd00b2d514efda5bad117d2751dc8749c178",
[
@@ -261028,6 +262135,45 @@
],
{}
]
+ ],
+ "text-underline-position-horizontal.html": [
+ "f008bdec2f77d8d6ea7adace6456fd14b0bc7943",
+ [
+ null,
+ [
+ [
+ "/css/css-text-decor/reference/text-underline-position-horizontal-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "text-underline-position-vertical-ja.html": [
+ "27c978bc7d19ebe4d1e7309f0d52e50cc57afe0d",
+ [
+ null,
+ [
+ [
+ "/css/css-text-decor/reference/text-underline-position-vertical-ja-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "text-underline-position-vertical.html": [
+ "95aea0a6a292bd5dc0dfc8f83a8b0f008fdb1253",
+ [
+ null,
+ [
+ [
+ "/css/css-text-decor/reference/text-underline-position-vertical-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
]
},
"css-transforms": {
@@ -261324,6 +262470,32 @@
{}
]
],
+ "transform-box-will-change-transform-layer.html": [
+ "2d2f9c99149dfabfdf8c7a6d79f78852d8dcaff3",
+ [
+ null,
+ [
+ [
+ "/css/css-transforms/animation/transform-box-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "transform-box.html": [
+ "87f32e4883815bec23b5d935e2e8995d317fd8a1",
+ [
+ null,
+ [
+ [
+ "/css/css-transforms/animation/transform-box-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"transform-interpolation-matrix.html": [
"b5f9c3cd3084024756ef95e46e85d0110273cab5",
[
@@ -284533,6 +285705,19 @@
{}
]
],
+ "subpixel-outline-width.tentative.html": [
+ "a9fc0c49cf3e4a21c36eace6769058f99afa1458",
+ [
+ null,
+ [
+ [
+ "/css/css-ui/reference/subpixel-outline-width-ref.tentative.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"text-overflow-001.html": [
"ae9029933a6ade15e63ea06b60082b5a06f85232",
[
@@ -285427,19 +286612,6 @@
{}
]
],
- "attr-invalid-type-008.html": [
- "a76be44d76a1c1f03d818b8b11a3ee5830815e38",
- [
- null,
- [
- [
- "/css/reference/ref-filled-green-100px-square.xht",
- "=="
- ]
- ],
- {}
- ]
- ],
"attr-length-invalid-cast.html": [
"930832363605fa85651b075f17d6c109535c0b41",
[
@@ -286054,6 +287226,34 @@
{}
]
],
+ "calc-size": {
+ "calc-size-aspect-ratio-001.html": [
+ "34487f49dd1e0fe709b3e0e5ce1c46af2ea2a8e5",
+ [
+ null,
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square-only.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "calc-size-aspect-ratio-002.html": [
+ "0730a31d82a00bfbb42fac761fb3785fd3cc7051",
+ [
+ null,
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square-only.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ]
+ },
"calc-text-indent-1.html": [
"f1480f46e773e8767367306dd16a64950f176880",
[
@@ -286603,6 +287803,64 @@
{}
]
],
+ "lh-unit-same-element-font-size-dependency.html": [
+ "0646f2d876c0322f0bf6e0f6701becb7fd9178bb",
+ [
+ null,
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {
+ "fuzzy": [
+ [
+ null,
+ [
+ [
+ 0,
+ 1
+ ],
+ [
+ 0,
+ 5000
+ ]
+ ]
+ ]
+ ]
+ }
+ ]
+ ],
+ "lh-unit-same-element-line-height-dependency.html": [
+ "0a9da7d536d77923c4ffbcadee67945c6cd2fd8d",
+ [
+ null,
+ [
+ [
+ "/css/reference/ref-filled-green-100px-square.xht",
+ "=="
+ ]
+ ],
+ {
+ "fuzzy": [
+ [
+ null,
+ [
+ [
+ 0,
+ 1
+ ],
+ [
+ 0,
+ 5000
+ ]
+ ]
+ ]
+ ]
+ }
+ ]
+ ],
"max-20-arguments.html": [
"9ed12875ac42ce55cf3b763d07c760c37c8f6616",
[
@@ -289453,7 +290711,7 @@
]
],
"block-with-overflowing-text.html": [
- "15d1653bfc29ad2233873062454bc157a1d82530",
+ "61b3dc1329ce0d94fffe6aa8f26200927a94d282",
[
null,
[
@@ -289637,7 +290895,7 @@
]
],
"clip-path-larger-than-border-box-on-child-of-named-element.html": [
- "4a26c50ef82e0d2dad55f56ae602755cea65dfe5",
+ "75019d349d1222380a13fbe40b538c875431ca8d",
[
null,
[
@@ -290117,7 +291375,7 @@
]
],
"fractional-translation-from-position.html": [
- "a09b08cf00c554955ec4c4e041c169fe1575de43",
+ "6187348b9ea792e252cd5c34e00e11b5774481a8",
[
null,
[
@@ -290390,7 +291648,7 @@
]
],
"inline-element-size.html": [
- "4f94c92550ee323822ad4dcd59482cccf46ee649",
+ "a571ace718a32882d727ac965bb2431451d8046c",
[
null,
[
@@ -290561,7 +291819,7 @@
]
],
"massive-element-below-viewport-partially-onscreen-new.html": [
- "42f97555f5c7bbc5ec322b6fa733bac97d41b7e4",
+ "127dc2ef344ebe2d186926db10697980c529375a",
[
null,
[
@@ -290590,7 +291848,7 @@
]
],
"massive-element-below-viewport-partially-onscreen-old.html": [
- "87b9a207956a2eebea49f37011ab31f8ae6b63f8",
+ "275c0d8840b64ce4fec54484dfb06154611f9bea",
[
null,
[
@@ -290677,7 +291935,7 @@
]
],
"massive-element-left-of-viewport-partially-onscreen-new.html": [
- "accd909158e0e5d199097efad16fe6fff07aa067",
+ "a472c0906188c7a2a7422f9e26be53d90ace81ef",
[
null,
[
@@ -290706,7 +291964,7 @@
]
],
"massive-element-left-of-viewport-partially-onscreen-old.html": [
- "e16806e8f37c7327a31e1193df7c86508f4464a9",
+ "6c29737ab358aec4d8b60e80d92a5d9a2e9ef781",
[
null,
[
@@ -290793,7 +292051,7 @@
]
],
"massive-element-on-top-of-viewport-partially-onscreen-new.html": [
- "c301e470996b5804839a4b6c4ce633501df43e45",
+ "f9a3babdf99c143620d954e20d6a4a000d559e21",
[
null,
[
@@ -290822,7 +292080,7 @@
]
],
"massive-element-on-top-of-viewport-partially-onscreen-old.html": [
- "1f810af745b1455001a6c433903f0a435f52d43e",
+ "15786b55fc53017aab795929d8fb0d60dcc654fd",
[
null,
[
@@ -290967,7 +292225,7 @@
]
],
"massive-element-right-of-viewport-partially-onscreen-new.html": [
- "ac3fe48a0a7835a9085a8dfc3daf9d2dee674673",
+ "9daadd97de44265cffed8dbe29977ee36bf80e66",
[
null,
[
@@ -290996,7 +292254,7 @@
]
],
"massive-element-right-of-viewport-partially-onscreen-old.html": [
- "2626910d7836da42c21cd33b24a2b4f04f9e8a65",
+ "b99d752e3fe931a054bad945cc0bda390dd175be",
[
null,
[
@@ -291038,7 +292296,7 @@
]
],
"multiline-span-with-overflowing-text-and-box-decorations.html": [
- "8fff184b2a71112466590a356e516000beeacd40",
+ "423cd255081e52b6feea7aa2b637e1c974dfbb0c",
[
null,
[
@@ -291454,6 +292712,443 @@
]
}
},
+ "nested": {
+ "adjust-transform-with-scale.html": [
+ "e58a7f363004def39a6ef9e8acb8e73e84dd18e2",
+ [
+ null,
+ [
+ [
+ "/css/css-view-transitions/nested/nested-ref-100.html",
+ "=="
+ ]
+ ],
+ {
+ "fuzzy": [
+ [
+ null,
+ [
+ [
+ 0,
+ 255
+ ],
+ [
+ 0,
+ 1250
+ ]
+ ]
+ ]
+ ]
+ }
+ ]
+ ],
+ "adjust-transform.html": [
+ "bbf9e8376e57e291c11516436af720fb94d26b0b",
+ [
+ null,
+ [
+ [
+ "/css/css-view-transitions/nested/nested-ref-100.html",
+ "=="
+ ]
+ ],
+ {
+ "fuzzy": [
+ [
+ null,
+ [
+ [
+ 0,
+ 255
+ ],
+ [
+ 0,
+ 515
+ ]
+ ]
+ ]
+ ]
+ }
+ ]
+ ],
+ "compute-explicit-name-direct.html": [
+ "d0b3e0f16d64e710cd2cfb144bff0c4ebcddda78",
+ [
+ null,
+ [
+ [
+ "/css/css-view-transitions/nested/nested-ref.html",
+ "=="
+ ]
+ ],
+ {
+ "fuzzy": [
+ [
+ null,
+ [
+ [
+ 0,
+ 255
+ ],
+ [
+ 0,
+ 515
+ ]
+ ]
+ ]
+ ]
+ }
+ ]
+ ],
+ "compute-explicit-name-nested-vt-names.html": [
+ "b5b12197712657f1e917162b37482465dbd48487",
+ [
+ null,
+ [
+ [
+ "/css/css-view-transitions/nested/nested-ref.html",
+ "=="
+ ]
+ ],
+ {
+ "fuzzy": [
+ [
+ null,
+ [
+ [
+ 0,
+ 255
+ ],
+ [
+ 0,
+ 515
+ ]
+ ]
+ ]
+ ]
+ }
+ ]
+ ],
+ "compute-explicit-name-nested.html": [
+ "ad47461b142323817196f49c81b0e8ada34f4154",
+ [
+ null,
+ [
+ [
+ "/css/css-view-transitions/nested/nested-ref.html",
+ "=="
+ ]
+ ],
+ {
+ "fuzzy": [
+ [
+ null,
+ [
+ [
+ 0,
+ 255
+ ],
+ [
+ 0,
+ 515
+ ]
+ ]
+ ]
+ ]
+ }
+ ]
+ ],
+ "compute-explicit-name-non-ancestor.html": [
+ "8a2c69147ad6bfe28146b1ab22db857fdf0e2fa3",
+ [
+ null,
+ [
+ [
+ "/css/css-view-transitions/nested/nested-ref.html",
+ "=="
+ ]
+ ],
+ {
+ "fuzzy": [
+ [
+ null,
+ [
+ [
+ 0,
+ 255
+ ],
+ [
+ 0,
+ 515
+ ]
+ ]
+ ]
+ ]
+ }
+ ]
+ ],
+ "compute-explicit-name-non-existent.html": [
+ "2e3d71f96d15abb468a03d6a7f41a26399867a38",
+ [
+ null,
+ [
+ [
+ "/css/css-view-transitions/nested/nested-ref.html",
+ "=="
+ ]
+ ],
+ {
+ "fuzzy": [
+ [
+ null,
+ [
+ [
+ 0,
+ 255
+ ],
+ [
+ 0,
+ 515
+ ]
+ ]
+ ]
+ ]
+ }
+ ]
+ ],
+ "compute-explicit-name-self.html": [
+ "09aa0f653318610fca56decf9366e984c1d4f0a7",
+ [
+ null,
+ [
+ [
+ "/css/css-view-transitions/nested/nested-ref.html",
+ "=="
+ ]
+ ],
+ {
+ "fuzzy": [
+ [
+ null,
+ [
+ [
+ 0,
+ 255
+ ],
+ [
+ 0,
+ 515
+ ]
+ ]
+ ]
+ ]
+ }
+ ]
+ ],
+ "nearest-direct.html": [
+ "bc49ef8d2647ca0e6646d88e2ed517dfca2d5583",
+ [
+ null,
+ [
+ [
+ "/css/css-view-transitions/nested/nested-ref.html",
+ "=="
+ ]
+ ],
+ {
+ "fuzzy": [
+ [
+ null,
+ [
+ [
+ 0,
+ 255
+ ],
+ [
+ 0,
+ 515
+ ]
+ ]
+ ]
+ ]
+ }
+ ]
+ ],
+ "nearest-ignores-nearest-name.html": [
+ "0afa170eaec84a2ebd18ce1625889ff138c215b6",
+ [
+ null,
+ [
+ [
+ "/css/css-view-transitions/nested/nested-ref.html",
+ "=="
+ ]
+ ],
+ {
+ "fuzzy": [
+ [
+ null,
+ [
+ [
+ 0,
+ 255
+ ],
+ [
+ 0,
+ 515
+ ]
+ ]
+ ]
+ ]
+ }
+ ]
+ ],
+ "nearest-nested.html": [
+ "1c4f153427d5cf67995ef4f3fd1fabd91e283662",
+ [
+ null,
+ [
+ [
+ "/css/css-view-transitions/nested/nested-ref.html",
+ "=="
+ ]
+ ],
+ {
+ "fuzzy": [
+ [
+ null,
+ [
+ [
+ 0,
+ 255
+ ],
+ [
+ 0,
+ 515
+ ]
+ ]
+ ]
+ ]
+ }
+ ]
+ ],
+ "nested-group-display-none.html": [
+ "084348732540c7651230c3072ee736dbea0c0bd5",
+ [
+ null,
+ [
+ [
+ "/css/css-view-transitions/nested/nested-ref.html",
+ "=="
+ ]
+ ],
+ {
+ "fuzzy": [
+ [
+ null,
+ [
+ [
+ 0,
+ 255
+ ],
+ [
+ 0,
+ 515
+ ]
+ ]
+ ]
+ ]
+ }
+ ]
+ ],
+ "nested-group-in-pseudo-basic.html": [
+ "2cacf7a759c6a8d23fce677c8aeab37ab8261133",
+ [
+ null,
+ [
+ [
+ "/css/css-view-transitions/nested/nested-ref.html",
+ "=="
+ ]
+ ],
+ {
+ "fuzzy": [
+ [
+ null,
+ [
+ [
+ 0,
+ 255
+ ],
+ [
+ 0,
+ 515
+ ]
+ ]
+ ]
+ ]
+ }
+ ]
+ ],
+ "normal-goes-up.html": [
+ "f68c93d474425d958b46c3dcd2d29197f797fbdd",
+ [
+ null,
+ [
+ [
+ "/css/css-view-transitions/nested/nested-ref.html",
+ "=="
+ ]
+ ],
+ {
+ "fuzzy": [
+ [
+ null,
+ [
+ [
+ 0,
+ 255
+ ],
+ [
+ 0,
+ 515
+ ]
+ ]
+ ]
+ ]
+ }
+ ]
+ ],
+ "render-element.html": [
+ "59a5a108314c0270b561339bf9a8a0cb6fdfe27d",
+ [
+ null,
+ [
+ [
+ "/css/css-view-transitions/nested/nested-ref-100.html",
+ "=="
+ ]
+ ],
+ {
+ "fuzzy": [
+ [
+ null,
+ [
+ [
+ 0,
+ 255
+ ],
+ [
+ 0,
+ 515
+ ]
+ ]
+ ]
+ ]
+ }
+ ]
+ ]
+ },
"new-and-old-sizes-match.html": [
"70b6515fb5b8189c925127636f7860ae424f0284",
[
@@ -291608,7 +293303,7 @@
]
],
"new-content-captures-spans.html": [
- "5f4807404c7e32a79bc4d6c50cc5cd96332f9af7",
+ "c099ff7ced67eb8b610bfb022ef31c3599bad6e7",
[
null,
[
@@ -291817,7 +293512,7 @@
]
],
"new-content-is-inline.html": [
- "81b261a9bfffaf1ef4be4ac94f90673475450c15",
+ "9be8332c857beee817788a85e3c0b876c8e6b0d0",
[
null,
[
@@ -292090,6 +293785,19 @@
{}
]
],
+ "no-named-elements.html": [
+ "ee7625591319ef36163b2337390cb8db45882bab",
+ [
+ null,
+ [
+ [
+ "/css/css-view-transitions/no-named-elements-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"no-painting-while-render-blocked.html": [
"1feb4759eb87e43e125f0753bd3c0c9c889816f7",
[
@@ -292717,7 +294425,7 @@
]
],
"pseudo-with-classes-entry.html": [
- "44f95dccbf41ef85a8a007b59c9dd23f0217b025",
+ "21f87b907ecfc055d590cbfeb81abe04fd8aa8a3",
[
null,
[
@@ -292730,7 +294438,7 @@
]
],
"pseudo-with-classes-exit.html": [
- "c687461f18eab4cdb1e4d3f9b2956eefe0fe2579",
+ "0480e1e53123b2fd7d1525e1085e36f1abf68e84",
[
null,
[
@@ -292743,7 +294451,7 @@
]
],
"pseudo-with-classes-match-ident.html": [
- "1418a90bc45577c26afcabe9f8216ebe8ddccf70",
+ "9cfc3f12ce8450a845f2a407f95476e10bccd1b6",
[
null,
[
@@ -292756,7 +294464,7 @@
]
],
"pseudo-with-classes-match-multiple-wildcard.html": [
- "53eaacfe799bfdc8aff97705f25ffa2809e6b7d0",
+ "261c00f0875ac4d1d566a1cca0dda13cf209132a",
[
null,
[
@@ -292769,7 +294477,7 @@
]
],
"pseudo-with-classes-match-multiple.html": [
- "1ab69340b4be005a7f5e8efe396beb01f1a1a300",
+ "7ff42edf366d8f97cb53961c00b84bb9feac66ec",
[
null,
[
@@ -292782,7 +294490,7 @@
]
],
"pseudo-with-classes-match-wildcard-no-star.html": [
- "2dc7d00cd18e55405974de169390545f820f5c10",
+ "96186cd8784ab76ea3ac4a0b210da43030bfa5a1",
[
null,
[
@@ -292795,7 +294503,7 @@
]
],
"pseudo-with-classes-match-wildcard.html": [
- "13490d58786b296d306425fc632da73fda86c763",
+ "f777e245ba68f2c06440372bbcb671e09982c419",
[
null,
[
@@ -292808,7 +294516,7 @@
]
],
"pseudo-with-classes-mismatch-ident.html": [
- "97db64fca20022b9b6bc96d3c4af429e8723d40d",
+ "107f388b388f42a51c311198cd911b54008a21d7",
[
null,
[
@@ -292821,7 +294529,7 @@
]
],
"pseudo-with-classes-mismatch-partial.html": [
- "9d9838036bc70d97627fd3884e41c7a5224d4bcb",
+ "ddb9b2535f26aa77e6c485e99043dd9496ef3dab",
[
null,
[
@@ -292834,7 +294542,7 @@
]
],
"pseudo-with-classes-mismatch-wildcard.html": [
- "722e41304550d11196c30c68de9b62e7bd2add3e",
+ "1e27dc2c05ce97b54f4b362f6d21b94bf6e32d61",
[
null,
[
@@ -292847,7 +294555,7 @@
]
],
"pseudo-with-classes-multiple-vt-classes.html": [
- "d7ca0a049361c747a344231e74b8f1dfac5f4d8a",
+ "fa7ae4eeb15f1df1366069d7fa7cdf4a3c30947f",
[
null,
[
@@ -292860,7 +294568,7 @@
]
],
"pseudo-with-classes-new-with-class-old-without.html": [
- "5aedc33b3c106f10c0fef594b88735224360a04b",
+ "225ed1cb7f32194b67808207f899fc1034d33171",
[
null,
[
@@ -292873,7 +294581,7 @@
]
],
"pseudo-with-classes-old-with-class-new-without.html": [
- "6c153253e00af7065e2467b0e0754bf81f657e15",
+ "f9ef100ef7edf9f279594af18cb970ea7b1dab80",
[
null,
[
@@ -292886,7 +294594,7 @@
]
],
"pseudo-with-classes-view-transition-group.html": [
- "3e4dbb303c6149727cbffb8dcd7f32d4cc6826f7",
+ "f9fe20222589283591cee10fa33f88d8d47f15ad",
[
null,
[
@@ -292899,7 +294607,7 @@
]
],
"pseudo-with-classes-view-transition-image-pair.html": [
- "8f0f2ef2a9749d00b9af279c621417611d4b129c",
+ "0473742260c3d40ccd8ddd311e4a40b3647a1852",
[
null,
[
@@ -293329,7 +295037,7 @@
]
],
"span-with-overflowing-text-and-box-decorations.html": [
- "262970ad5fba81e630e31a39d1742d09fb98a9e8",
+ "c22fda0f797c843582212173007f3ef42186fdea",
[
null,
[
@@ -293371,7 +295079,7 @@
]
],
"span-with-overflowing-text.html": [
- "5a6268ddf03c43bcdf1dbbda161c35c19365ef3e",
+ "769b47159f1e965007937dc919b6618cc53ac82b",
[
null,
[
@@ -293814,7 +295522,7 @@
},
"css-viewport": {
"width.html": [
- "b6d9753ea3cb1c4907fb8e84f3b68bbec3cd194a",
+ "b76328be84913a40a1cc3dfd3de2d2d2d30b8401",
[
null,
[
@@ -293854,7 +295562,7 @@
]
],
"border-spacing.html": [
- "2801a2920066f24655f84b9a2cccdaf361de2ab1",
+ "f4ecb8f77a50eb6c17cfb0bdf5f165b21b2f8808",
[
null,
[
@@ -293866,8 +295574,21 @@
{}
]
],
+ "container-queries.html": [
+ "cc8cefdd6c03a2f0da838ef1f35bfda9c1a7af48",
+ [
+ null,
+ [
+ [
+ "/css/css-viewport/zoom/reference/container-queries-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"font-size.html": [
- "e4b20c3c9314acf71bcd49bbcc6fd215207b22f8",
+ "e572806be41f21297b6b864f9b74378de35a28c6",
[
null,
[
@@ -293945,7 +295666,7 @@
]
],
"letter-spacing.html": [
- "5c17e10ebed8c1b81b74235060c385835e1d42a3",
+ "03b66cddb358b64fc14401c1ecd6db9456aace21",
[
null,
[
@@ -293958,7 +295679,7 @@
]
],
"line-height.html": [
- "fa333be32f6abf97911ee62a09555ceb1071d9d6",
+ "072d666ed290487fe747acdbb70228227b84eef1",
[
null,
[
@@ -294062,7 +295783,7 @@
]
],
"text-indent.html": [
- "2edf6a62223d8d7ba1709a539731d3f9d62c0f78",
+ "1994d4e489c32b0d952053883aecaa13e77b4694",
[
null,
[
@@ -294075,7 +295796,7 @@
]
],
"text-shadow.html": [
- "1d39a24cd19123f7db5d397dbdd69d884bd7f429",
+ "b1aa9be581abefaa2335a5114d7196c08ac984ed",
[
null,
[
@@ -294088,7 +295809,7 @@
]
],
"text-stroke-width.html": [
- "b11dc67d52c2f46a3a2c384d3e764f964a13ddb1",
+ "1bba3236894181e7ff411dc8fc50b21ab969b196",
[
null,
[
@@ -294101,7 +295822,7 @@
]
],
"text-underline-offset.html": [
- "cdf7b3d7ab26e7c99b5640a617f5e30d30477ea5",
+ "4c7f378ab95c2cabfa8367d01333034567b010a5",
[
null,
[
@@ -313436,7 +315157,7 @@
]
],
"mq-calc-sign-function-001.html": [
- "96c3853136253f8ca1da380660e6ba55cb3673c3",
+ "12286cb531e89a710b4dd471e19c7693a18626be",
[
null,
[
@@ -313449,7 +315170,7 @@
]
],
"mq-calc-sign-function-002.html": [
- "31ff421ea2a2216d008e30a7295358f1866f9a1b",
+ "35fd111ba1e0317c8c7f964bd1533a0cc67161d2",
[
null,
[
@@ -313462,7 +315183,7 @@
]
],
"mq-calc-sign-function-003.html": [
- "423948f722d85a819a4ff63639a27f6ae3482b90",
+ "8d532b915ac19fabfce2114a8be1fe513cf0ab7c",
[
null,
[
@@ -313475,7 +315196,7 @@
]
],
"mq-calc-sign-function-004.html": [
- "219f0c152721bc76197b9f31d1961e6dcf11a5ae",
+ "bd4c74331ce22068bc0a7fa997403cd508d565f1",
[
null,
[
@@ -313488,7 +315209,7 @@
]
],
"mq-calc-sign-function-005.html": [
- "ca5fecb338bb5e31ab46790067f1441fd9dd2b31",
+ "602cac02be137335b060d85219dad6c5a0f6b291",
[
null,
[
@@ -313501,7 +315222,7 @@
]
],
"mq-calc-sign-function-006.html": [
- "239748d205f2706b22574eadaf7c7e7389f70403",
+ "3db626343ab96aa74a54557867fb4af772e0f073",
[
null,
[
@@ -314787,6 +316508,35 @@
}
]
],
+ "offset-path-shape-circle-008.html": [
+ "7c3dfe81355c6e178476bab34423ac1f790befa6",
+ [
+ null,
+ [
+ [
+ "/css/motion/offset-path-shape-circle-001-ref.html",
+ "=="
+ ]
+ ],
+ {
+ "fuzzy": [
+ [
+ null,
+ [
+ [
+ 0,
+ 150
+ ],
+ [
+ 0,
+ 300
+ ]
+ ]
+ ]
+ ]
+ }
+ ]
+ ],
"offset-path-shape-ellipse-001.html": [
"ec152e323c52a02f441556ecc12b77b528e1f0b5",
[
@@ -314945,6 +316695,35 @@
}
]
],
+ "offset-path-shape-ellipse-007.html": [
+ "fda9cd44f9fce408d820ad6a70af1e89d62f3f6e",
+ [
+ null,
+ [
+ [
+ "/css/motion/offset-path-shape-ellipse-001-ref.html",
+ "=="
+ ]
+ ],
+ {
+ "fuzzy": [
+ [
+ null,
+ [
+ [
+ 0,
+ 100
+ ],
+ [
+ 0,
+ 401
+ ]
+ ]
+ ]
+ ]
+ }
+ ]
+ ],
"offset-path-shape-inset-001.html": [
"8d90aef2e1971ed8132e1302ff990f7de1347d5c",
[
@@ -322970,6 +324749,19 @@
{}
]
],
+ "2d.text.writingmode.html": [
+ "2a12154762badecc5e86880dd7fae61cea125b58",
+ [
+ null,
+ [
+ [
+ "/html/canvas/element/text/2d.text.writingmode-expected.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"direction-inherit-rtl.html": [
"0ad92181a06acfdd4ca1d553b5fc7dfa4970f001",
[
@@ -330503,6 +332295,21 @@
}
}
},
+ "select": {
+ "select-capitalize-sizing.html": [
+ "47214a67cf1e478358114f2604265c9ebd2c0b65",
+ [
+ null,
+ [
+ [
+ "/html/select/select-capitalize-sizing-ref.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ]
+ },
"semantics": {
"document-metadata": {
"the-link-element": {
@@ -331564,7 +333371,7 @@
],
"stylable-select": {
"select-child-button-and-datalist-invalidation.tentative.html": [
- "822a63e1045879d7293b4a48469f2cf06e1b4aec",
+ "4a71c187c6e858de69b23e3e9170e519488bac38",
[
null,
[
@@ -331577,7 +333384,7 @@
]
],
"select-child-button-and-datalist.tentative.html": [
- "9b2f53df2838a680fa9c356e88fdbbdc4e5604c3",
+ "1650f37d5c1612e74120eb2723639a0030b3b566",
[
null,
[
@@ -331603,7 +333410,7 @@
]
],
"select-open-invalidation.tentative.html": [
- "809ae69d7af60b6338613e60cdffe67209407527",
+ "d973d42b5bf7698652446f3393f4231398c36387",
[
null,
[
@@ -339502,7 +341309,7 @@
]
],
"view-timeline-range-update-reversed-animation.html": [
- "960a8e6ecfb90bf9c03178aab3fa8b3047c41dc3",
+ "be51998f2e0e2efe78f7a255a1d6343ad9b579bd",
[
null,
[
@@ -343561,6 +345368,45 @@
{}
]
],
+ "use-external-html-resource-with-content-type-svg.html": [
+ "bc2ac83978ba30925b0be630a88cd027b4b1d441",
+ [
+ null,
+ [
+ [
+ "/svg/struct/reftests/reference/green-100x100.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "use-external-html-resource-with-doctype.html": [
+ "c0aba28334e382bc597836df747e0b3f796079db",
+ [
+ null,
+ [
+ [
+ "/svg/struct/reftests/reference/green-100x100.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
+ "use-external-html-resource.html": [
+ "7e79ea1ff76d7d0cd1086912f116cf85d703f9cd",
+ [
+ null,
+ [
+ [
+ "/svg/struct/reftests/reference/green-100x100.html",
+ "=="
+ ]
+ ],
+ {}
+ ]
+ ],
"use-external-resource-no-svg-root.html": [
"444dbe843f1ca9f1154b3c112018d1e10c73e0df",
[
@@ -351127,7 +352973,7 @@
[]
],
"bluetooth-test.js": [
- "7852aadf466cbb2617c3be049c4aa05b5edee0b6",
+ "474c9b9bec4c1a2274e0a3fc7838c66240e03c88",
[]
],
"health-thermometer-iframe.html": [
@@ -372160,7 +374006,7 @@
[]
],
"not-embeddable-frame.py": [
- "9e65b42435908e33ed5b16e97f8bee3700bab340",
+ "be7e635ac2456a26a9783565184bee5f881c2bb7",
[]
],
"preload-csp-report.https.sub.html": [
@@ -390967,6 +392813,10 @@
]
},
"self-alignment": {
+ "block-justify-self-ref.html": [
+ "862719986965da01ca6daf529ddb95c1f3bd206b",
+ []
+ ],
"self-align-safe-unsafe-flex-001-ref.html": [
"69d7f347087d7a298090a76762714268aa11930a",
[]
@@ -391022,16 +392872,16 @@
"3528b565fccb1d32dff6fe732c9497446e5f525e",
[]
],
- "inset-area-inline-container-ref.html": [
- "ecf54f1a9ac2d756cb78f4d2c0690c1ac8b65916",
+ "position-anchor-ref.html": [
+ "4d7de12447c8297b8f0fc04338d80a028a3e9798",
[]
],
- "inset-area-scroll-adjust-ref.html": [
- "5cd863500a7729a8acf0eaab5883ca58cfcfb935",
+ "position-area-inline-container-ref.html": [
+ "ecf54f1a9ac2d756cb78f4d2c0690c1ac8b65916",
[]
],
- "position-anchor-ref.html": [
- "4d7de12447c8297b8f0fc04338d80a028a3e9798",
+ "position-area-scroll-adjust-ref.html": [
+ "5cd863500a7729a8acf0eaab5883ca58cfcfb935",
[]
],
"position-try-switch-from-fixed-anchor-ref.html": [
@@ -391501,6 +393351,10 @@
"379ad36992a92384444bd0db12cb7b90531fcd1c",
[]
],
+ "clip-text-animated-text-ref.html": [
+ "10ffd2442096f35175172fa2d2efef3a2f6534e5",
+ []
+ ],
"clip-text-dynamic-2-ref.html": [
"2619a196d77f615cdee81bfdfe8d8cf3449bedef",
[]
@@ -391530,6 +393384,14 @@
"87ddae625a5453d1602be1580264e412f5de21ae",
[]
],
+ "background-gradient-interpolation-001-notref.html": [
+ "7820bb0c4103d76035316ce2974f6841403c150a",
+ []
+ ],
+ "background-gradient-interpolation-002-notref.html": [
+ "672dd42e8cc9dd9fd2443815eb5c785d48874531",
+ []
+ ],
"background-image-centered-ref.html": [
"f52cd963ad25238bafc2081b7024aa5375614f5a",
[]
@@ -392246,22 +394108,6 @@
"10324966edb042c1c7298ce22dad76766c2a777b",
[]
],
- "color-mix-currentcolor-background-repaint-expected.xht": [
- "05a13794482a94f6c10bd9d4c98704e63ef60331",
- []
- ],
- "color-mix-currentcolor-background-repaint-parent-expected.xht": [
- "05a13794482a94f6c10bd9d4c98704e63ef60331",
- []
- ],
- "color-mix-currentcolor-outline-repaint-expected.xht": [
- "05a13794482a94f6c10bd9d4c98704e63ef60331",
- []
- ],
- "color-mix-currentcolor-outline-repaint-parent-expected.xht": [
- "05a13794482a94f6c10bd9d4c98704e63ef60331",
- []
- ],
"document-canvas-remove-body-ref.html": [
"8612aaafa99b6805690766d4ac5f910a695a7991",
[]
@@ -393481,6 +395327,30 @@
[]
],
"margin-trim": {
+ "block-container-block-end-collapsed-margins-ref.html": [
+ "1d2f7ff98b28adb58509753e6c1a3714fa6ffe3d",
+ []
+ ],
+ "block-container-block-end-self-collapsing-item-has-larger-block-end-ref.html": [
+ "9633928fd4d1a9702496ff714241f2436a92169a",
+ []
+ ],
+ "block-container-block-end-self-collapsing-item-has-larger-block-start-ref.html": [
+ "0b2b5662d1065241bdef7a9353891ba5cd58afb2",
+ []
+ ],
+ "block-container-block-start-collapsed-margins-ref.html": [
+ "c90bc2bf3a9d683bc72deaee29396b388e549894",
+ []
+ ],
+ "block-container-block-start-self-collapsing-item-has-larger-block-end-ref.html": [
+ "f851fe437a15ddba32af84122047870a81234fad",
+ []
+ ],
+ "block-container-block-start-self-collapsing-item-larger-block-start-ref.html": [
+ "3e7de7eb972639ef400b20493e87eae7ed8a2920",
+ []
+ ],
"block-container-non-adjoining-item-ref.html": [
"4affb87f11b2174047836baecc556734fd2e77b7",
[]
@@ -394258,6 +396128,10 @@
"b53c789544655dddf05bb40fb5cc8ad46622e0e2",
[]
],
+ "scope-part-ref.html": [
+ "d0824e735722a568d86c46e822b8d9adb30fd5d5",
+ []
+ ],
"scope-pseudo-element-ref.html": [
"2ad6a0995a9e3bb9db0131eb2c42b19d09768fb4",
[]
@@ -395025,6 +396899,10 @@
"99e9c334bf2c856535c7643911a3050390658a6f",
[]
],
+ "no-layout-containment-baseline-ref.html": [
+ "295dc88c1bd409ffce276502a1c5d6a3d5e9ed18",
+ []
+ ],
"pseudo-elements-002-ref.html": [
"da96a826cffe697475ff552aafe97d72d613e9fb",
[]
@@ -395045,6 +396923,14 @@
"2a87df85b7aba82588c984e7c41132feb777f427",
[]
],
+ "scrollbar-container-units-block-ref.html": [
+ "0d64f07f4a53144ee62b66af6d446a4f04a4538c",
+ []
+ ],
+ "scrollbar-container-units-inline-ref.html": [
+ "bd9c0966856f33ee38fc632e8099df7d41d80bae",
+ []
+ ],
"size-container-with-quotes-ref.html": [
"e1822fa544ec91a113eaa911f69243d767eaf5cc",
[]
@@ -398424,6 +400310,18 @@
"c3a223389d0455b2fe71d74837e5ff6121567432",
[]
],
+ "flexbox-writing-mode-slr-ref.html": [
+ "2ca10b3e0ee9f02b70eac2f7155c33f0c7c68b83",
+ []
+ ],
+ "flexbox-writing-mode-slr-row-mix-ref.html": [
+ "6f4c1df339c5006da2f283a535e75608cff1b3c1",
+ []
+ ],
+ "flexbox-writing-mode-srl-row-mix-ref.html": [
+ "32eebea0ac47f03bdb0b1903b82ef40e81697ae1",
+ []
+ ],
"flexbox_align-content-center-ref.html": [
"e0118b707fc2a6e01cab0d8e16216140b1bc869b",
[]
@@ -407144,6 +409042,10 @@
[]
]
},
+ "synthetic-bold-space-width-ref.html": [
+ "6345defe68153186ffbbcf65f16675804c3834ef",
+ []
+ ],
"system-ui-ar-notref.html": [
"76a216ca7439a37190a38bc70cd5abc91432df77",
[]
@@ -407981,35 +409883,35 @@
},
"self-baseline": {
"grid-self-baseline-001-ref.html": [
- "c85fd77ef91092a1e87a9a60ddf5bc5392b3be3b",
+ "2253b24ac07f83b2b2b5e161e071c8e2309eb0ce",
[]
],
"grid-self-baseline-002-b-ref.html": [
- "1b563f1f42ad319879ef13f9798ceb771184f136",
+ "800578e31d70022c90cf3cb86300c8192e90f4d6",
[]
],
"grid-self-baseline-002-ref.html": [
- "8593ea1abce9757b07f04da3b8b257cff5448d3d",
+ "a959d659d35203bb65966b47d743a90eb94fc038",
[]
],
"grid-self-baseline-003-ref.html": [
- "cd097c1d48a6ba4cddf10030e2d499c383ac2fed",
+ "c701e97fb8567cbb6d158978d281decadc57e22d",
[]
],
"grid-self-baseline-004-ref.html": [
- "d589acb3742cdc8cd61557d5a5afa9d1cf206b2f",
+ "57b44e6d769c0879ed77598fef3b302213dedde8",
[]
],
"grid-self-baseline-005-ref.html": [
- "75a366fc409d7ecc19fef2408b0aad08a302b778",
+ "52390473f218dd01241385da91b37e7b6015afe9",
[]
],
"grid-self-baseline-006-ref.html": [
- "610b2ad0a11ff010e30fc9c8d8a532c5e8c7c973",
+ "a8129d0bec4ed6d925b99bed2b2ca81e90f30b23",
[]
],
"grid-self-baseline-007-ref.html": [
- "59a0e339598b4c6e0f9b604636c9199826c45f2d",
+ "aa79b3eda74a521dcad8dd8b3408d15a79fa3189",
[]
],
"grid-self-baseline-008-ref.html": [
@@ -408017,87 +409919,87 @@
[]
],
"grid-self-baseline-horiz-001-ref.html": [
- "1b8130d7b89ae35111009318535320e05bbda766",
+ "e8c6bb3b09c2479b7f00f73882fe2c2203c94bca",
[]
],
"grid-self-baseline-horiz-002-ref.html": [
- "735ea557868ab9e2f4c4bcd3b2b8eebd60f9d150",
+ "35068082ba5c04537713c93a451b8a7552dc2327",
[]
],
"grid-self-baseline-horiz-003-ref.html": [
- "fd966d16a152cf0748f390acc9f651c3124651ea",
+ "26ab87872c39b6f583ca423815e0001686b0fbc9",
[]
],
"grid-self-baseline-horiz-004-ref.html": [
- "be610d4f7f2ba9a0fd51116e3dfd66be89c470af",
+ "3851c45ff45a874b4e7edece4a4430973b32409d",
[]
],
"grid-self-baseline-horiz-005-ref.html": [
- "c38b6c76115724d05b284c197b9012bcff86c9d9",
+ "7851a214eec3acae68b344c5593638b92ffbfd7f",
[]
],
"grid-self-baseline-horiz-006-ref.html": [
- "6053b38a6fdf1e402ed341d2077dd3b2e78cc990",
+ "a92602fb3dbae37485d8f5d39d8d3b11960ae4b6",
[]
],
"grid-self-baseline-horiz-007-ref.html": [
- "cba725f4256d67ce022635aea66ce5be2f8bf8dd",
+ "ef5e5dac1546d457095ac702c8cba787a615a9b3",
[]
],
"grid-self-baseline-vertical-lr-001-ref.html": [
- "cf19544be84333c3820a8cb7776d019ea3c15693",
+ "ecb3c7c5014fc547536e95dbacd14f491cb8ef06",
[]
],
"grid-self-baseline-vertical-lr-002-ref.html": [
- "9a7a53969d3aad4e0453b104a536387c24fc0487",
+ "0e32b854180053a53e02b2ae9602d260ef19edcc",
[]
],
"grid-self-baseline-vertical-lr-003-ref.html": [
- "795926615fabb0634162ae2592eae10d4450a4f6",
+ "ce7bbb722ec640e26e8f8cfc154376a256524927",
[]
],
"grid-self-baseline-vertical-lr-004-ref.html": [
- "1ce8267ee7d3a381116afd1dcd62c9bdc40c71c5",
+ "17f0bbf75064b6c75b2903f8fac114a4a311cead",
[]
],
"grid-self-baseline-vertical-lr-005-ref.html": [
- "fb68579d9aef3c511550337204383649840b6942",
+ "4409a98b778bfd7f96bd36079e2e53d5d4a75da1",
[]
],
"grid-self-baseline-vertical-lr-006-ref.html": [
- "51c5f77da3574f49b5d9ce87d1f3128607f07f9d",
+ "46fbf2ebbc86e5805db0bf828f79461b47fb1f68",
[]
],
"grid-self-baseline-vertical-lr-007-ref.html": [
- "6f5641448d588dcf58ada8560ddaa069c07d4101",
+ "d216a18a9e9c95430550a202ff9a59c57b40fe37",
[]
],
"grid-self-baseline-vertical-rl-001-ref.html": [
- "02d3feb12672028ba0616414b93245327014807f",
+ "e759c48e636e431c5c93e4eb8ef162f7917c76ca",
[]
],
"grid-self-baseline-vertical-rl-002-ref.html": [
- "ef6b45c9c97e91620982683da957d49a817b7422",
+ "03faebeeceb74e33606d93fc1efbd1877afb1333",
[]
],
"grid-self-baseline-vertical-rl-003-ref.html": [
- "b72fc8817a4986cae1b0143f74ddc9cb58ef0366",
+ "40f6ac86da3524f2812f3153397375ef76e1de68",
[]
],
"grid-self-baseline-vertical-rl-004-ref.html": [
- "bab359226660df446219a578da60da73f2855e00",
+ "33958bcf937fd609866206914b810e04f8c6fd3f",
[]
],
"grid-self-baseline-vertical-rl-005-ref.html": [
- "da72a5f0179f01204c49e1fcaa62f5b16a60918d",
+ "0a0a935e296bf4bb60e59fd152d76f8f40482d3a",
[]
],
"grid-self-baseline-vertical-rl-006-ref.html": [
- "4011c691427b8f13ac15f79409213df39a82b86c",
+ "e345ca9d761283f0a9a283d4a3a8199984b66a9f",
[]
],
"grid-self-baseline-vertical-rl-007-ref.html": [
- "30658b8cc730598817d055f8ba6d0d2ae1f74b81",
+ "6c702dfbf5d26b6e403a6426085537f2c60725e6",
[]
]
},
@@ -408342,6 +410244,10 @@
]
}
},
+ "grid-relayout-with-nested-grid-ref.html": [
+ "5cace4099c4b3e271a853d06721e592f6442dce5",
+ []
+ ],
"layout-algorithm": {
"references": {
"auto-margins-ignored-during-track-sizing-001-ref.html": [
@@ -408459,33 +410365,61 @@
]
},
"intrinsic-sizing": {
- "masonry-intrinsic-sizing-001-ref.html": [
- "1a9f65aaf698b0b20b2c33b17420795972d6ff8d",
+ "masonry-intrinsic-sizing-cols-001-ref.html": [
+ "eddbb9cbe197fb296389a7dd7f61e23f27c8a993",
[]
],
- "masonry-intrinsic-sizing-002-ref.html": [
- "ddae8e7fe37f8873791cd56d8c6404eafa6fd703",
+ "masonry-intrinsic-sizing-cols-002-ref.html": [
+ "54f29233252e715f835a5505aca96341d4c34012",
[]
],
- "masonry-intrinsic-sizing-003-ref.html": [
- "044750dc45183a50fb19153977081eb0e7b83eaa",
+ "masonry-intrinsic-sizing-cols-003-ref.html": [
+ "d088b132c29e68905337219f97c2c018f5985f40",
[]
],
- "masonry-intrinsic-sizing-004-ref.html": [
- "302dcad11696895a9f3fb12ac5a38d0d721b2650",
+ "masonry-intrinsic-sizing-cols-004-ref.html": [
+ "282dd280213579a591094f5043c0f8fbf0fb4e6f",
[]
],
- "masonry-intrinsic-sizing-005-ref.html": [
- "725f646ebd9160f91dcba65fdbdbb77e0c20e370",
+ "masonry-intrinsic-sizing-cols-005-ref.html": [
+ "99d5d05dd4e06eb23e7b6a2dab59e5e2743a2240",
[]
],
- "masonry-intrinsic-sizing-006-ref.html": [
- "1a88c2b4cb665dd4586f662d280475dab3cd0ae6",
+ "masonry-intrinsic-sizing-cols-006-ref.html": [
+ "1a41f071ab431c3c150aa9c06c28dd82b3f6cd71",
+ []
+ ],
+ "masonry-intrinsic-sizing-cols-007-ref.html": [
+ "0c4da43ef50cd20a2c520267a52d0ecb37960f3d",
+ []
+ ],
+ "masonry-intrinsic-sizing-rows-001-ref.html": [
+ "6214f6723ad5ef8e35a8eac515f54d7aceaba924",
+ []
+ ],
+ "masonry-intrinsic-sizing-rows-002-ref.html": [
+ "38ede3202adafccdfc5fd25cbbdc6b3e4f49f3f5",
+ []
+ ],
+ "masonry-intrinsic-sizing-rows-003-ref.html": [
+ "3e2b0a2a3be6b7a5fcb9f74e5e8ad83e2901cc79",
+ []
+ ],
+ "masonry-intrinsic-sizing-rows-004-ref.html": [
+ "a79aca3b88212f568600123ed28879c61d42a0b6",
+ []
+ ],
+ "masonry-intrinsic-sizing-rows-005-ref.html": [
+ "0c5eae740f608a2ecf029e0c07f926716b951ae4",
+ []
+ ],
+ "masonry-intrinsic-sizing-rows-006-ref.html": [
+ "f3f67e287d2a454f4c16de2dfae18f7f2d4fd090",
[]
],
"support": {
"masonry-intrinsic-sizing-visual.css": [
- "150f0f2679a35a97fc0fb7de792c4473850b73d9",
+ "5ac6586904f13b3eb716897390a7293c4beb7f3e",
[]
]
}
@@ -409022,10 +410956,38 @@
"0ce5201312974300d33d2c95171640f60b1bbc0e",
[]
],
+ "highlight-image-notref.html": [
+ "0f4e21fc3d679c197b2f51ce8ba96c3eec3addcf",
+ []
+ ],
"highlight-priority-painting-ref.html": [
"1865f1e104917ebeb3d6e9cb53de06977ea8623c",
[]
],
+ "highlight-text-across-elements-ref.html": [
+ "1c3e9110fcf963fa2283e419104c91621068da06",
+ []
+ ],
+ "highlight-text-cascade-ref.html": [
+ "ec3a9a5741aa746e18594c96abfe0f37f30bef0b",
+ []
+ ],
+ "highlight-text-decorations-ref.html": [
+ "8120ae34da208003f8797518662da5d3b8cad68c",
+ []
+ ],
+ "highlight-text-dynamic-notref.html": [
+ "0489cb6e8c9ea3e5832451c4fdfaeb07b5e01b1f",
+ []
+ ],
+ "highlight-text-ref.html": [
+ "227e950c04b721113ee456bbce5b654d0204d2d3",
+ []
+ ],
+ "highlight-text-replace-ref.html": [
+ "402f0ee622debc5b07a0107913ecb00d9b130b78",
+ []
+ ],
"painting": {
"css-highlight-painting-underline-offset-001-ref.html": [
"3d01bccf55dd9c20e361551bc924d5c9353c503e",
@@ -409227,9 +411189,15 @@
[]
],
"WEB_FEATURES.yml": [
- "0a1af1998309bacf9fdfeb69f0a33f662eac20ea",
+ "6f2806d64c0aaa5959ec35f40f63f1a73a301235",
[]
],
+ "animation": {
+ "WEB_FEATURES.yml": [
+ "ce2e2c31f99ddc63cd868ebea90fc65cbf23cfc4",
+ []
+ ]
+ },
"color-stop-currentcolor-ref.html": [
"7686a3b16ed8b9ebf3f8ffcbecd4bdb5e1225bfe",
[]
@@ -410075,6 +412043,10 @@
"08d03f0a537f8e54ee1edc2f6afcc0d366cd4f46",
[]
],
+ "external-images.svg": [
+ "8439561e160dd0a8919360c3d0d6896e90a972c8",
+ []
+ ],
"import-green.css": [
"537104e663364492c6ef388e4afce190e9c5bc58",
[]
@@ -410123,6 +412095,10 @@
"84141028020b7e8cdf2412acbca3c799ba50a534",
[]
],
+ "scripted.svg": [
+ "6936caad32255809d6013aa0112d1f22e93d8124",
+ []
+ ],
"small-border.png": [
"0e978c592223b1692a0b082434283e2cdfbce298",
[]
@@ -410206,6 +412182,14 @@
[]
]
},
+ "svg-images-are-ignored-ref.html": [
+ "3c1864fea4176bbf2a4cabb9d9c321adeea58674",
+ []
+ ],
+ "svg-script-is-ignored-ref.svg": [
+ "2230d80393c05ddbd182b029ba6746f8a682fbd0",
+ []
+ ],
"tiled-conic-gradients-ref.html": [
"95a4122bc0d293a78988714e07d4a247c02f23dd",
[]
@@ -411144,6 +413128,10 @@
"a10bc17899f9cfaa938d04d198598c4fc82fe3ca",
[]
],
+ "pseudo-element-remove-update-ref.html": [
+ "3dc156aa13f033b57c7383ce600d55f21681db7f",
+ []
+ ],
"resources": {
"blue-20.png": [
"c464c75eeca3ead65c00e7c26150d97ad58da5c3",
@@ -411287,7 +413275,7 @@
"clip-path": {
"animations": {
"clip-path-animation-cancel-ref.html": [
- "661e7b3be8460934b425b1330b66f56f6c214096",
+ "ac04bd53798188fb5fcc27ea87a6eae2ffb46a3b",
[]
],
"clip-path-animation-custom-timing-function-ref.html": [
@@ -411299,7 +413287,7 @@
[]
],
"clip-path-animation-ellipse-ref.html": [
- "63b3174806f9751a6fcfebb3b81e508decd4ebbc",
+ "8fda2089cd051d29e83175c1c57ce8bbe5e8e1c3",
[]
],
"clip-path-animation-filter-ref.html": [
@@ -411315,7 +413303,7 @@
[]
],
"clip-path-animation-font-size-ref.html": [
- "912a8e8464266e98588bc3a6faf6b60d589198d7",
+ "f4369b0f111ad591f020f1d6e2f675590e0357bb",
[]
],
"clip-path-animation-fragmented-ref.html": [
@@ -411351,11 +413339,11 @@
[]
],
"clip-path-animation-path-ref.html": [
- "d53067f5634265344f78962fbab011e742b0dbf3",
+ "be3e970e462b3ed2a1884212321895ea72d1d3d9",
[]
],
"clip-path-animation-polygon-ref.html": [
- "28e11e966d58ad6ed074ff1a3e8b232f56df8213",
+ "7c18c5feca2b242d6484329ac0bae01beb458de7",
[]
],
"clip-path-animation-ref.html": [
@@ -411394,6 +413382,10 @@
"7e0d2a54266f3855dbc8e8e87167a06ea0cc323b",
[]
],
+ "clip-path-transition-crashtest.html": [
+ "103a0da2a60a7c00bb12eb941ebceec94f318d47",
+ []
+ ],
"clip-path-transition-ref.html": [
"af164c30f06808c3394cf3210ca13bc41792d53c",
[]
@@ -413203,23 +415195,19 @@
"supports-is-consistent-ref.html": [
"0eb8cd16a1688183fa52bc6bc9f2b4243123513d",
[]
+ ],
+ "supports-rule-ref.html": [
+ "1be71b225233ed934bc40b8051f4c9b2682118c8",
+ []
]
},
- "css-outline": {
- "reference": {
- "subpixel-outline-width-ref.tentative.html": [
- "28d84fabb77750d5e9dbad9515b1e85b4a6fadcb",
- []
- ]
- }
- },
"css-overflow": {
"META.yml": [
"b9ba7acd150e5022de5c5208cd7f5f7d4dde93c3",
[]
],
"WEB_FEATURES.yml": [
- "7d0688929ab0dd06031443a48b4b25844d260506",
+ "6c270951f7932fc9eac70f910996e3a4f5a78150",
[]
],
"clip-001-ref.html": [
@@ -413360,6 +415348,10 @@
"3b32f988cd91c6c3acf65a3368788a44d6850eea",
[]
],
+ "line-clamp-auto-034-ref.html": [
+ "8fae3b278c124db00b8f79eb0cd0b91cb8752217",
+ []
+ ],
"line-clamp-with-abspos-001-ref.html": [
"d756162dde0c54bd52646597b01bbff8a80f5fd8",
[]
@@ -418211,7 +420203,7 @@
[]
],
"hori-block-size-small-or-larger-than-container-with-min-or-max-content-1-ref.html": [
- "263a0869aedbaceb06ebe81a53372c905e8acd9e",
+ "523d80324eeba02b7cc74bd8e37cc468a4ceab08",
[]
],
"hori-block-size-small-or-larger-than-container-with-min-or-max-content-2-ref.html": [
@@ -418397,7 +420389,7 @@
[]
],
"vert-block-size-small-or-larger-than-container-with-min-or-max-content-1-ref.html": [
- "0a5de8da1461fe972a8e64f089feb9b70d226e55",
+ "e137920f131e621470888f88194d8df72fc7ff48",
[]
],
"vert-block-size-small-or-larger-than-container-with-min-or-max-content-2-ref.html": [
@@ -418866,6 +420858,10 @@
[]
]
},
+ "remove-caption-from-anon-table-ref.html": [
+ "41af5464c78fb9e6a806106c8f05d38639e88669",
+ []
+ ],
"row-group-margin-border-padding-ref.html": [
"aa3e68e6ab2830a817f8612e240888c2cc6e7a6a",
[]
@@ -422986,7 +424982,7 @@
]
},
"text-decoration-thickness-ref.html": [
- "f0276959fbdf1304889b343a18ad0d4ed8de2a5b",
+ "d29edee1cf241ab994790c27732eb1ce93c322e5",
[]
]
},
@@ -423231,18 +425227,6 @@
"8955e8469aa6cd3d63a34e9376b3f6c135f01e85",
[]
],
- "text-decoration-underline-position-horizontal-ref.html": [
- "be9155bbcf82bec1011de42ed5054ca8d1da72de",
- []
- ],
- "text-decoration-underline-position-vertical-ja-ref.html": [
- "303655abdd2489884a6e0fd6ab08eef114fcbc5f",
- []
- ],
- "text-decoration-underline-position-vertical-ref.html": [
- "8c0bee6720355c6216ce6f11d27e2f1fb4d4b401",
- []
- ],
"text-decoration-underline-ref.html": [
"2370054a8fbd5cb8c00bfb95401129d01de38d00",
[]
@@ -423390,6 +425374,18 @@
"text-underline-position-from-font-variable-ref.html": [
"e9e5252194b66f348595b42ae58c0d2c823d422e",
[]
+ ],
+ "text-underline-position-horizontal-ref.html": [
+ "be9155bbcf82bec1011de42ed5054ca8d1da72de",
+ []
+ ],
+ "text-underline-position-vertical-ja-ref.html": [
+ "3f594c6c0fcd996ae8f48a7dfe2d6601a68a46ef",
+ []
+ ],
+ "text-underline-position-vertical-ref.html": [
+ "8c0bee6720355c6216ce6f11d27e2f1fb4d4b401",
+ []
]
},
"resources": {
@@ -423743,6 +425739,10 @@
[]
]
},
+ "transform-box-ref.html": [
+ "f041336b6c5a57732c3da91f44ac224271a3547c",
+ []
+ ],
"transform-interpolation-animated-ref.html": [
"0930a7469a87fc8f6515e9f6ff442b6f7988ed4c",
[]
@@ -425755,6 +427755,10 @@
"62b0c41757dd1bb4e323c8a6753f82c30c98ce7a",
[]
],
+ "subpixel-outline-width-ref.tentative.html": [
+ "28d84fabb77750d5e9dbad9515b1e85b4a6fadcb",
+ []
+ ],
"text-overflow-001-ref.html": [
"9e9303106a82dea9433ec61fa9ec0df8950ae38f",
[]
@@ -427497,7 +429501,7 @@
[]
],
"block-with-overflowing-text-ref.html": [
- "8d9c430fcc7ff3cc44b62d444cdb2cbb80506f9b",
+ "ec5d871200087e7526ca78df5bf1d51a3e5c9572",
[]
],
"break-inside-avoid-child-ref.html": [
@@ -427637,7 +429641,7 @@
[]
],
"fractional-translation-from-position-ref.html": [
- "0674b265ac92566737e4c0ab0e86e93c4313579e",
+ "9821593438ed3afe0afdfb0035ee375d790fa087",
[]
],
"fractional-translation-from-transform-ref.html": [
@@ -427701,7 +429705,7 @@
[]
],
"inline-element-size-ref.html": [
- "14b76fb07e76189306ffd148886617bec1cf0100",
+ "ea791930e9bdf51a25125062b7da7cedafea1b95",
[]
],
"inline-with-offset-from-containing-block-clipped-ref.html": [
@@ -427729,7 +429733,7 @@
[]
],
"massive-element-below-viewport-partially-onscreen-ref.html": [
- "3c2ae6a6f58b655e53e6a9478fcdc517073f3a27",
+ "72861d37a09d408e16f183aacd2fe01ba5e31238",
[]
],
"massive-element-left-of-viewport-offscreen-ref.html": [
@@ -427737,7 +429741,7 @@
[]
],
"massive-element-left-of-viewport-partially-onscreen-ref.html": [
- "436783b42e95307007c600ef95ebee753a8a66c3",
+ "aa15c1fb22ac25eb8be67ee3ca2324ba3cad3ddf",
[]
],
"massive-element-on-top-of-viewport-offscreen-ref.html": [
@@ -427745,7 +429749,7 @@
[]
],
"massive-element-on-top-of-viewport-partially-onscreen-ref.html": [
- "6377c72616a17e431ac283cfd0873b32e99cd403",
+ "31c9c4e1a6e03a62c0a3b72a6b76bc4c44300590",
[]
],
"massive-element-right-and-left-of-viewport-partially-onscreen-ref.html": [
@@ -427757,7 +429761,7 @@
[]
],
"massive-element-right-of-viewport-partially-onscreen-ref.html": [
- "b134c158589a6cd0e2cf0a892af457a809c8e2fc",
+ "5a50d7fabf8e7d6e1c3e350940838d084508db67",
[]
],
"modify-style-via-cssom-ref.html": [
@@ -427765,7 +429769,7 @@
[]
],
"multiline-span-with-overflowing-text-and-box-decorations-ref.html": [
- "ca9efc52d6e412d2eb2ee3511b5f3845a36854b8",
+ "47edb8a3b030b44e783808182d2c79d53d994bd7",
[]
],
"named-element-with-fix-pos-child-ref.html": [
@@ -427916,6 +429920,26 @@
[]
]
},
+ "nested": {
+ "nested-ref-100.html": [
+ "dde4f026c36a11a40aef594ccfdc89d6f573120b",
+ []
+ ],
+ "nested-ref.html": [
+ "d189a460c7cb5147b04367d4e56aac0ae751c6d5",
+ []
+ ],
+ "resources": {
+ "compute-common.css": [
+ "92cb8243c0b1bf54cc022aa4cb83a5f40163aafa",
+ []
+ ],
+ "compute-test.js": [
+ "6d3905239c717d93e930ff0b9954ee8ff3682607",
+ []
+ ]
+ }
+ },
"new-and-old-sizes-match-ref.html": [
"79e89801391530b6fb074545a92db68493667f05",
[]
@@ -427949,7 +429973,7 @@
[]
],
"new-content-captures-spans-ref.html": [
- "f7bba2d683c740844cfef1d6ac5f03cbf9f39f05",
+ "941ed432b26414ad5437a799d4deb2ea5e144061",
[]
],
"new-content-changes-overflow-left-ref.html": [
@@ -427985,7 +430009,7 @@
[]
],
"new-content-is-inline-ref.html": [
- "c75cfcc252ae25e2b5577243c3ed3662a4eba653",
+ "10098bec8efc7c4aeae58d039cb7fa32758081ec",
[]
],
"new-content-object-view-box-clip-path-ref.html": [
@@ -428024,6 +430048,10 @@
"99ca705d00e3d6e9b1a5d26c1cf2477a2d8c9d7e",
[]
],
+ "no-named-elements-ref.html": [
+ "750fdf37303c4268c16993f3a813795365d518dd",
+ []
+ ],
"no-painting-while-render-blocked-ref.html": [
"8c7ab1bc5ffee13ff74e7bf33532145180b50e70",
[]
@@ -428197,7 +430225,7 @@
[]
],
"span-with-overflowing-text-and-box-decorations-ref.html": [
- "e0a75e730ffb134a797baa6847a14e59e8639fe7",
+ "b2479b60ad4d6e090bf80812ede8916a3a4ef5de",
[]
],
"span-with-overflowing-text-hidden-ref.html": [
@@ -428205,7 +430233,7 @@
[]
],
"span-with-overflowing-text-ref.html": [
- "4ec4d4ccf856b2c786825bfe2c60fd35f6d804a6",
+ "ed8586811f842b2bb94ae19ea1439a4cda8a4ede",
[]
],
"support": {
@@ -428285,10 +430313,14 @@
[]
],
"width-ref.html": [
- "5d2755f3e9ea0e3b9b1134ec40a50ef7588bf0ea",
+ "b1b5e1156720cd0a63186ac25ce25731b046e4e9",
[]
],
"zoom": {
+ "WEB_FEATURES.yml": [
+ "7e5ac576a42213696b37d679d2e3c2c19f944b52",
+ []
+ ],
"background-image-ref.html": [
"6fe548f3435a61b3d34ecd1fa9be538224b3d28e",
[]
@@ -428298,7 +430330,7 @@
[]
],
"font-size-ref.html": [
- "5714a878b301a645e9ca07d0b52e68d67febfc7a",
+ "30eaa4aeb9fcae4e42ca2061358bd976e9144eee",
[]
],
"green-square-100px.html": [
@@ -428306,12 +430338,16 @@
[]
],
"line-height-ref.html": [
- "c75539243cbb45ab7407d5519748811e0f44eef0",
+ "a34093cce754948504f9bb076926efb679537dcb",
[]
],
"reference": {
"border-spacing-ref.html": [
- "df01e965a27404c85784f8a86dda9bba7ceb7ddb",
+ "c5b18cc3c37a9513456d594ba13e0618ebbb9f53",
+ []
+ ],
+ "container-queries-ref.html": [
+ "e9d93d39e72cb1a22206082fb73de6e4fa1f1430",
[]
],
"iframe-zoom-nested-ref.html": [
@@ -428323,7 +430359,7 @@
[]
],
"letter-spacing-ref.html": [
- "7d050672c4eae54a27f888957173eb62f4a451ec",
+ "59df4318320497bf6a9b32318f2c672e7eafd091",
[]
],
"list-style-image-ref.html": [
@@ -428335,23 +430371,23 @@
[]
],
"text-indent-ref.html": [
- "6dc0f8527c289c66a90fa7e109fc2aeed60b7959",
+ "7ec1f57c7b46a930b05d26f222b0f2d1246a9ace",
[]
],
"text-shadow-ref.html": [
- "0538ba2c538ba4daa096a12d8721474836009fea",
+ "8341822f61048dbeb37b09607f8c0e36b9f144b9",
[]
],
"text-stroke-width-ref.html": [
- "d1c675fc77d14f2238221aa2cb1a86a5a02a1069",
+ "1fb1b9c08861287ce2957869af953c756b6405d2",
[]
],
"text-underline-offset-ref.html": [
- "11b61e0acaa286cb222031afa0ab6ea8a60f3e34",
+ "a60d46a6e920c553fb78af398b0d2109942c50cd",
[]
],
"word-spacing-ref.html": [
- "02ace8352adde979c0eb4df39aebc3e342093172",
+ "f2f59c36decb1235144846478ab3d6a3e4dae2da",
[]
]
},
@@ -432777,7 +434813,7 @@
[]
],
"WEB_FEATURES.yml": [
- "a674f92e29ca70907f622d05579acf489ba22219",
+ "89c6f53f8f93a225bdfa19992dd40e18d5a4eeb2",
[]
],
"attribute-selectors": {
@@ -432974,7 +435010,7 @@
},
"invalidation": {
"WEB_FEATURES.yml": [
- "1f80a7755b3dbc8e80496cf3ac5efdde7dda9b63",
+ "33e80ad651e8a8fe9f51c48cd39fdd42a335a9a3",
[]
],
"any-link-attribute-removal-ref.html": [
@@ -433445,7 +435481,7 @@
[]
],
"color-testcommon.js": [
- "18ab4420f67946664380f4cabeb830d56ba74210",
+ "060f251f0c1c1ff17e4093c6e9e98cb589cda301",
[]
],
"computed-testcommon.js": [
@@ -433638,7 +435674,7 @@
[]
],
"WEB_FEATURES.yml": [
- "7a9f56f6d6a596a010f2cfc9a427d8f0ff47f50b",
+ "e77a8695bdd8f4782ba02a1a039597d300965601",
[]
],
"custom-element-registry": {
@@ -434203,7 +436239,7 @@
[]
],
"testdriver.md": [
- "fcf0199badc12e8cca1d017d266db4abe02544ad",
+ "b1428b6af71f0210e554d4de7cc41a393a03451e",
[]
],
"testharness-api.md": [
@@ -436445,7 +438481,7 @@
[]
],
"drm-messagehandler.js": [
- "5c5577c6d68942a9526cb9bd655942db80877990",
+ "b1565c12cb02e4a99caa9399f2d7714db22501f8",
[]
],
"testmediasource.js": [
@@ -436457,7 +438493,7 @@
[]
],
"utils.js": [
- "79f8c7ea6d1b5c5c38131205c20499019ba7371c",
+ "78678d5c038d4c25a3c695838c93ac28c6f08746",
[]
]
}
@@ -436533,7 +438569,7 @@
[]
],
"event-timing-test-utils.js": [
- "a10f1c20c355360dafee0fccd08ceff34334f394",
+ "8bf429974a02e8d970d0cb638ea605bace4d81c4",
[]
],
"slow-image.py": [
@@ -436992,6 +439028,10 @@
"28a6d3453bda1d74b2c0f81f0a9ab23e71545503",
[]
],
+ "acao-cors.py": [
+ "57b6f1e32182865fc12eecc4226a0740e3d0535c",
+ []
+ ],
"accounts.py": [
"c0117862816ff4668b6dd9416633bee6eb9af227",
[]
@@ -437034,7 +439074,7 @@
],
"fedcm": {
"disconnect-iframe.html": [
- "f65763932b8c742debdbabbefc310613fe83f0e5",
+ "ae97011a53535b66ae619132ae91a2d763bc1dad",
[]
],
"intercept_service_worker.js": [
@@ -437067,7 +439107,7 @@
[]
],
"fedcm-iframe.html": [
- "ba79c4cf9e955672d94450143dff091a6691a0e2",
+ "085d6128976f9852f638fd5b0c17912db13ea011",
[]
],
"fedcm-mock.js": [
@@ -437090,6 +439130,18 @@
"6b7d67e21e7eea7927a40ab094847b7224d49985",
[]
],
+ "lfedcm-helpers.js": [
+ "28a43d9328eaa59835e6c0ec282968237db2460e",
+ []
+ ],
+ "lfedcm-identity.provider-create.sub.html": [
+ "4b60c7866f03cde9bd047264112f48f60995a856",
+ []
+ ],
+ "lfedcm-identity.provider-delete.sub.html": [
+ "47ff664e7223a6bc8632517a96855f37c88f6487",
+ []
+ ],
"login.html": [
"78d241cda952bccdeff05653f0cc7311afa73710",
[]
@@ -437190,6 +439242,10 @@
"69157b3a371e369df585331a2479144fee444f5c",
[]
],
+ "no-cors.py": [
+ "a5be59ccb69f5e7e8e5ddca990b4eea34b49e4bd",
+ []
+ ],
"no_accounts.py": [
"fad93088db5b9204c890fea871574c8b7d1ee4f8",
[]
@@ -441106,6 +443162,14 @@
"218858b24c1ff080016c82dbc0c4c16fb6e95a26",
[]
],
+ "change-observer-scope-test.js": [
+ "c11d2ff922463aa5f2ccc9bf2ded450b9015902e",
+ []
+ ],
+ "collecting-file-system-observer.js": [
+ "64bb671af1430d2ddf365387cfa6fc47042300e0",
+ []
+ ],
"message-target-dedicated-worker.js": [
"26ff23ef8ac65009c3c5efd4bdeda3970ae93910",
[]
@@ -441123,7 +443187,7 @@
[]
],
"message-target.js": [
- "a59fa6bec2b41cf9ba9bb580ce6fc580edac47ad",
+ "ac5fa63e1372a1422439f072c8a5fe170c18d548",
[]
],
"messaging-blob-helpers.js": [
@@ -441151,7 +443215,7 @@
[]
],
"test-helpers.js": [
- "add3dba6455669854331a78b51a56fa9508b42e0",
+ "8f969c987dd523629576c7ca1542c2c6b6e2e676",
[]
]
},
@@ -441240,8 +443304,12 @@
"c5d08f305d0612376a3641798d0a6b3b909cf404",
[]
],
+ "FileSystemObserver-writable-file-stream.js": [
+ "6a3eb6b4ca94b2e79b5f8542b35319fdf129e3c0",
+ []
+ ],
"FileSystemObserver.js": [
- "2c8fd57f7c95dff2cd23de02dcaa1c9d71003526",
+ "d1e1ce40dbc439a94e6153cca8d87fd84da1fac8",
[]
],
"FileSystemSyncAccessHandle-flush.js": [
@@ -445224,6 +447292,10 @@
"af9c736aea7f9b20f4fd09522a8aa2dd25a11ef1",
[]
],
+ "2d.text.writingmode-expected.html": [
+ "d7003a2a08ad583395e06b8f8f6674afe3728e7b",
+ []
+ ],
"WEB_FEATURES.yml": [
"1d9e4bab82191d72c374c7399e666bd6bfe42bc2",
[]
@@ -445728,7 +447800,7 @@
[]
],
"name2dir-canvas.yaml": [
- "1e0caff5b982da5ef914aaae6e376bf749ac412c",
+ "4081f674c6d3458dd08b06bcb0da55631fe749d2",
[]
],
"name2dir-offscreen.yaml": [
@@ -445736,7 +447808,7 @@
[]
],
"name2dir.yaml": [
- "ae69c153780ed2398466bfa12287462bf04c3bfa",
+ "a62fab3a04e68bfa30cd1dbefcef358504aebb43",
[]
],
"templates": {
@@ -445864,16 +447936,12 @@
"27764e4550e015a424d6faed4a07356e703ab720",
[]
],
- "scroll.yaml": [
- "0579a8b3d74c407e27181847f0d8fc59c572bb87",
- []
- ],
"shadows.yaml": [
"e42237dadbbab398419a761e5ebba217d7a94b7f",
[]
],
"text.yaml": [
- "b54cc7ebc266c50f742e309ea263468771e4a65d",
+ "5c6b9f8abc374e602fae8a7986fe9b66fa8d671d",
[]
],
"the-canvas-state.yaml": [
@@ -452157,6 +454225,12 @@
}
}
},
+ "select": {
+ "select-capitalize-sizing-ref.html": [
+ "6371f213c100fc2185608793901996e5213ccd65",
+ []
+ ]
+ },
"semantics": {
"document-metadata": {
"interactions-of-styling-and-scripting": {
@@ -458189,6 +460263,10 @@
"a0bf1fec6e0cc5b803995d9d93d1de84a6e5253c",
[]
],
+ "blank-highlight.png": [
+ "6dbee091749fb6d70d62f3914d75cba432b55b5a",
+ []
+ ],
"blue-area.png": [
"570ae0f2bf763698e16a917565ee62a397bc2f54",
[]
@@ -458992,6 +461070,12 @@
]
},
"webdriver": {
+ "bidi": {
+ "subscription.html.ini": [
+ "c357f765ab9c54e35c2df824b84dfad3c3c3f2c6",
+ []
+ ]
+ },
"tests": {
"test_load_file.py.ini": [
"7e6ef522c9b9544508654f63d12501560625608a",
@@ -460841,7 +462925,7 @@
]
},
"lint.ignore": [
- "ca22175f33cf197d13a9fe0ef7d67b474579e30f",
+ "62ad931cb83b0fb0681f02f92b24ffd895973663",
[]
],
"loading": {
@@ -465457,7 +467541,7 @@
[]
],
"util.js": [
- "a4e7e905c65f0f6640c9e61bec9c9169a77f57c7",
+ "64f638684ba3f348d640f005d45667bb30a94619",
[]
]
}
@@ -468270,7 +470354,7 @@
[]
],
"testdriver.js": [
- "af7b3e06cd93b614b957bfbd3e7358862f38e137",
+ "985dbb0e4030aaaeb9e912367262d8cee3de3806",
[]
],
"testdriver.js.headers": [
@@ -468550,7 +470634,7 @@
[]
],
"find-range-from-text-directive-target.html": [
- "dc02ebd87415581b82941bf57cb14871e86c52f9",
+ "c7ed1899e7c729cff5fc5734ffee9e49d9b78d37",
[]
],
"force-load-at-top-target.html": [
@@ -471863,7 +473947,7 @@
[]
],
"cross-origin-worklet-in-sandboxed-frame-inner.https.sub.html": [
- "498fda3078099a1843eca3d7da2fdd96542ec89d",
+ "f5e41c84d55755ceb1a756911d4a4ddffcd227fc",
[]
],
"delete-key.https.html": [
@@ -472002,12 +474086,20 @@
"cf3e03e24c7d68e3fb9f0be9102591c659a2b43c",
[]
],
+ "simple-module2.js": [
+ "dd5f31f36e8388dac13938dd8253fee4a76d094b",
+ []
+ ],
+ "simple-module2.js.headers": [
+ "cb762eff806849df46dc758ef7b98b63f27f54c9",
+ []
+ ],
"util.js": [
"09eb45c591b42b3bbb969948362668daf902b3f0",
[]
],
"util.sub.js": [
- "dc1ec780a24007d275fbfc751410a95f99073353",
+ "a5511a96800eaabb289c4e1e193e10e2ddb06f21",
[]
],
"verify-get-undefined-module.js": [
@@ -472031,7 +474123,7 @@
[]
],
"verify-shared-storage.https.html": [
- "c2d75ddf8529991932fd23174b80a8d730f0379e",
+ "cc4440df7d8e3aed92bbae2545bc2fe20cb3bcb6",
[]
],
"verify-storage-entries-module.js": [
@@ -472824,7 +474916,7 @@
[]
],
"utils.js": [
- "3533c77a86d69880aa82936086d31442bf687e5e",
+ "c9486d7fa1dfe5ad2230958c57d6c5a2a924eada",
[]
],
"wake-lock.https.html": [
@@ -473001,7 +475093,7 @@
[]
],
"embedded_responder.js": [
- "15ba640a1e5ce95572498dda285f02c3bfe883c2",
+ "c222c4dac0562ef6fda4f5a9b0855c358229492a",
[]
],
"embedded_worker.py": [
@@ -474140,6 +476232,22 @@
"3f0c26c8feaf58e51ef387c972c2b772166d0fe8",
[]
],
+ "html-resource-with-doctype-and-symbol.html": [
+ "357528a6a99bff60d4dca3bd8d7ce261ad245ffd",
+ []
+ ],
+ "html-resource-with-symbol-and-content-type-svg.html": [
+ "59cdfb91c104b5cf9ed346802236c890523133c4",
+ []
+ ],
+ "html-resource-with-symbol-and-content-type-svg.html.headers": [
+ "070de35fbe96585b9cf1b7da4ce8e4ff08a8f3ba",
+ []
+ ],
+ "html-resource-with-symbol.html": [
+ "59cdfb91c104b5cf9ed346802236c890523133c4",
+ []
+ ],
"non-svg-root-resource.xml": [
"6012063ea5b03ce468b950d348bbb0265a249550",
[]
@@ -475194,7 +477302,7 @@
[]
],
"schema.py": [
- "4cfe154b2f5180594f47f206d7ed23b7b0de74c8",
+ "b6e64bcd4676dbddb88be107e048dd0d9e058229",
[]
],
"tests": {
@@ -475203,7 +477311,7 @@
[]
],
"test_schema.py": [
- "3534ad33983afdc57081a7a0983680738621fbd1",
+ "78c40b44bf6021aef18efd16297b6394de6581be",
[]
]
}
@@ -475246,11 +477354,11 @@
[]
],
"requirements_mypy.txt": [
- "66ae1420387a6af8df07a4f53d2c7b837d47d551",
+ "3224251e3fda9bdf9bac7fd0a0cc35ba3f549be5",
[]
],
"requirements_pytest.txt": [
- "14cc97014aa256f67c0c95369306fe9bf42f72b9",
+ "757cee5037f5ff91145f7a2241fc3cd29198306c",
[]
],
"requirements_tests.txt": [
@@ -485512,12 +487620,12 @@
[]
],
"test_web_feature_map.py": [
- "06afa181fe570e504d4dc2303f2e0429f4021159",
+ "609645f055668c0819d591865183c141d75cdb5d",
[]
]
},
"web_feature_map.py": [
- "d66b07e1146f902f103baf67587f00de8aae0e46",
+ "481225206f3a5be99602073f50ac075561f566a9",
[]
]
},
@@ -485594,6 +487702,10 @@
[]
]
},
+ "protocol.py": [
+ "25c34b91bb23cea79e08694bdc04fe64c34bd2bf",
+ []
+ ],
"transport.py": [
"14b990f971d235db7a354677a7b9032dd2ff88a5",
[]
@@ -485612,11 +487724,11 @@
[]
],
"protocol.py": [
- "d6c89af22be2eb72068f4e59ab0040e5cbce1fd2",
+ "5d07047d5c3ad908b70c6b3ee200d3c587c5f1c7",
[]
],
"transport.py": [
- "7e898b2869f2a87add6a79312d778b9a3774b7d1",
+ "31d4997589adbdacc2438b104c86d88bfb9e3282",
[]
]
}
@@ -485667,11 +487779,11 @@
[]
],
"android.py": [
- "f25350db078a8612e37f262b98b847a914e5ce2a",
+ "1e2d30fb389a420b5c8fcd6032b74d1102443750",
[]
],
"browser.py": [
- "ba716cd14f6d700325b956d1cadab2110402db43",
+ "932604397013bae93ce3d0ba58abc4d9424aa67d",
[]
],
"commands.json": [
@@ -485875,7 +487987,7 @@
[]
],
"requirements_firefox.txt": [
- "ed377b9c95a20911500ce9e0ba7b907f0af7295a",
+ "7ed450d33218d26f1680d9872c890466b7689774",
[]
],
"requirements_opera.txt": [
@@ -485917,7 +488029,7 @@
[]
],
"chrome.py": [
- "8ebbfdc91a527e150f8b2223891780bfac7a67c8",
+ "0848f1cbeed275fa6242b7410568438717e7cf6c",
[]
],
"chrome_android.py": [
@@ -485953,7 +488065,7 @@
[]
],
"headless_shell.py": [
- "e7da3e64548669f373aca6c1a350ebf1d4330581",
+ "7fd11fecbe0e7022a047cd1f58cd4f220739e66f",
[]
],
"ladybird.py": [
@@ -486013,15 +488125,19 @@
[]
],
"actions.py": [
- "6e0c081b48f7529e1175e360784adffa26376868",
+ "4bf8d735a1ded0f07400c0d6b18857d83e7b67db",
+ []
+ ],
+ "asyncactions.py": [
+ "6b4ee6fe70f4c95703ca027e1e43282fb7b4454c",
[]
],
"base.py": [
- "2c88f10e0edfc5b3789ccca5271a2a3dbc4de450",
+ "7d5ed5cabcae5a7291f26f008eccb83514bded72",
[]
],
"executorchrome.py": [
- "d972a0eea5f3ff021c16d262764730b5400cf9ee",
+ "153e2cb72c14c0ead2f5382ad2e5b4f33efffb31",
[]
],
"executoredge.py": [
@@ -486045,7 +488161,7 @@
[]
],
"executorwebdriver.py": [
- "20ae4a42118d19d0b34395a920025d7a6dd2a281",
+ "3ecf04df9a10626dd90311006f5b986eb84c7286",
[]
],
"executorwktr.py": [
@@ -486057,7 +488173,7 @@
[]
],
"protocol.py": [
- "5ebdeed35995c41f3e6eb56d1d574e7091336ce0",
+ "76408aafc0df3af72095fc6dd1e5db5a65bde611",
[]
],
"pytestrunner": {
@@ -486172,7 +488288,7 @@
[]
],
"testdriver-extra.js": [
- "87d3826bfceb6aa4d3f6d43b49b52d21b4a3669f",
+ "f7b9ae5fdbfc27c42b1f56ab1327bdcbc6cf8664",
[]
],
"testdriver-vendor.js": [
@@ -486204,7 +488320,7 @@
[]
],
"testrunner.py": [
- "003a6acbd990f08ba5ff573941aad30247d03137",
+ "c5b12ee1d93a72b0e2a75ac800c298f29e4aa946",
[]
],
"tests": {
@@ -487635,6 +489751,10 @@
}
},
"urlpattern": {
+ "WEB_FEATURES.yml": [
+ "cb82ba5cda2918be080e10ab8bbd4c145e05b790",
+ []
+ ],
"resources": {
"urlpattern-compare-test-data.json": [
"0043ac08bca55418e61e3b054a5d78f648adfc9d",
@@ -488190,7 +490310,7 @@
"animation-model": {
"animation-types": {
"property-list.js": [
- "98ab02a122155e75e4e5877d07baac7d34fb2be5",
+ "2e5e876204be276ea6df70e92b960d94695be84b",
[]
],
"property-types.js": [
@@ -489472,7 +491592,7 @@
[]
],
"__init__.py": [
- "c8715183b01b1c55c277cb5e6660de6964edb99c",
+ "c42b5f3e501202b12c244d4db3a7010fbb9f1f55",
[]
],
"browser": {
@@ -489582,6 +491702,12 @@
[]
]
},
+ "navigation_failed": {
+ "__init__.py": [
+ "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
+ []
+ ]
+ },
"navigation_started": {
"__init__.py": [
"e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
@@ -489731,7 +491857,7 @@
},
"network": {
"__init__.py": [
- "00fc5e3c71b3d151be7aa8f4c48d93d565ffba97",
+ "60a39741f833e65f22d733441390c7cad0b5d8dd",
[]
],
"add_intercept": {
@@ -489759,7 +491885,7 @@
]
},
"conftest.py": [
- "591e3b42d6ef0f8d4bd64654f3d0d3fb13ff929b",
+ "6928334b7d989006cd97b4b2d52ef288634dbdc2",
[]
],
"continue_request": {
@@ -489980,10 +492106,6 @@
"56ea539914328c6d4dafe3d202ad08017e26f717",
[]
],
- "conftest.py": [
- "0941411fab84f20df84563698821f5cdb7a13ccd",
- []
- ],
"delete_cookies": {
"__init__.py": [
"4b73b0bcedf401f9af495d853e943501f81cce7e",
@@ -490482,7 +492604,7 @@
[]
],
"fixtures_bidi.py": [
- "7c88abcd2e029ffe2f938d6d187602e05a71ca67",
+ "9f3c31d3d57cfc0189481c48800512b4a780efc1",
[]
],
"fixtures_http.py": [
@@ -490812,318 +492934,16 @@
},
"webnn": {
"META.yml": [
- "3f87fc8042d2b3de1bf13d64333ba08cdfdabb3b",
+ "6b22a19db920390ef34e86711fc399569db31e13",
[]
],
"resources": {
- "test_data": {
- "abs.json": [
- "d665da6bb4576cb0575dc5488394648c0421058e",
- []
- ],
- "add.json": [
- "804ad5e345d0b73b7f003837df66c7f3ef8bb416",
- []
- ],
- "arg_max.json": [
- "d65939d0477b7cb008e715d797d9a9e3e3991c00",
- []
- ],
- "arg_min.json": [
- "f7b3f6d10d6239cd24d3c1a930093b2de19ed28c",
- []
- ],
- "average_pool2d.json": [
- "b95e9395e7f810ee658f7c4cfc8cae4bbedfd43f",
- []
- ],
- "batch_normalization.json": [
- "f1d445e37244f92aafe01a1d0f2626caf9508f5e",
- []
- ],
- "cast.json": [
- "59d1036eeed5ad93460f75f04efb51bfc67a4617",
- []
- ],
- "ceil.json": [
- "b9bccbc3a07657e3ecc3a8dcbfd1c7c6a68896b7",
- []
- ],
- "clamp.json": [
- "f25019e4d9eb686c8c7a1e4042149724d2b12489",
- []
- ],
- "concat.json": [
- "5e2285b75a0a0c17198832d9193855e6560474fc",
- []
- ],
- "constant.json": [
- "06fe0a7a958e749efd4c0213104f22437561e7ea",
- []
- ],
- "conv2d.json": [
- "e6e36021333db0bcf1b03f9e266c48fa782b14c3",
- []
- ],
- "conv_transpose2d.json": [
- "ba25e04094cbe9b19e7c41f29681c970985a7d36",
- []
- ],
- "cos.json": [
- "db7ade11e380a6c795d69d7f313b39abd01d3d13",
- []
- ],
- "div.json": [
- "a60341181d1c87245bea89181142b8eadd74cb5b",
- []
- ],
- "elu.json": [
- "b1c443282e43551e7dc2e098fdfa52e421bf776a",
- []
- ],
- "equal.json": [
- "bbd9143a0327dc999832e09fb78e2ce54e02f668",
- []
- ],
- "erf.json": [
- "6f0b550cf7933aed8c6fe04a1c5d2206f5f15887",
- []
- ],
- "exp.json": [
- "2de52d951e95fc98dae8ce637bd3be48e469cf18",
- []
- ],
- "expand.json": [
- "00bf4a37b4e9d5ee01138f1a9c722076113d3044",
- []
- ],
- "floor.json": [
- "3b5dba1576282692b474d3b57e06d5b12f5b35df",
- []
- ],
- "gather.json": [
- "a67e708ae20b0e0d0b39fd55685be068ccd162a6",
- []
- ],
- "gelu.json": [
- "3adf4b6a2b6a89e574e407ae771b6531a8b5dc1f",
- []
- ],
- "gemm.json": [
- "23a18b316caab6b9531cface498d36808ec4796d",
- []
- ],
- "greater.json": [
- "d7dc34d18bbce203ddfc8aeb6c13eb3827b6c4a9",
- []
- ],
- "greater_or_equal.json": [
- "e47ac4350abe80932b5560e45eb788e3cbcfbcf1",
- []
- ],
- "hard_sigmoid.json": [
- "5d8c0c5daf1f100aa0847841c1e31fedab34765f",
- []
- ],
- "hard_swish.json": [
- "e43f62ede0eaffa703b2597e96ddff204f6bbe4e",
- []
- ],
- "identity.json": [
- "6024e8786fb2e6f6e6c655757001c421d0d4f748",
- []
- ],
- "instance_normalization.json": [
- "a9fd493c9924ed5c73a56de61ed80b71670ebd4f",
- []
- ],
- "l2_pool2d.json": [
- "a65687721a33c10aec6c75f0e621859a2cf7ec1a",
- []
- ],
- "layer_normalization.json": [
- "6005776de5e2234f6ef3f7332a574e4bb86b2e71",
- []
- ],
- "leaky_relu.json": [
- "be810a90cea061626ba6b707e50e2336ba9e4bdc",
- []
- ],
- "lesser.json": [
- "7527ea5c53a34f0e981953a2deb300b6c7ea2e17",
- []
- ],
- "lesser_or_equal.json": [
- "f47bd3b9d9c31f2723303b9768bab148a890301b",
- []
- ],
- "linear.json": [
- "6cbb84e9cb0ceeb66a11f2e52821880758889258",
- []
- ],
- "log.json": [
- "0481061272dbfa450b3e112c3bdc388f73aa2bba",
- []
- ],
- "logical_not.json": [
- "3a37652a134bc0aca13a840b6cc219e619ddde62",
- []
- ],
- "matmul.json": [
- "cc1789ee25f5bb738943951dda84c02178e22709",
- []
- ],
- "max.json": [
- "26285042d0443a0cdcb9a887fe8c3797961915c3",
- []
- ],
- "max_pool2d.json": [
- "216b4c55ddbe30940a21e24d9ad30c47fa7e1039",
- []
- ],
- "min.json": [
- "a08e6514286886b4d11e5427a50240ffc87d3ab9",
- []
- ],
- "mul.json": [
- "3de9018427372e2b3ef8f869544ee346507573bc",
- []
- ],
- "neg.json": [
- "34dee53df164b19ed922e9367bb88a6bdb54da7f",
- []
- ],
- "pad.json": [
- "53e8ed8f5979e2adb1f4dfc09d1a9aab32e55dff",
- []
- ],
- "pow.json": [
- "1738722b10bad4e14643df2e38015cac4b06d339",
- []
- ],
- "prelu.json": [
- "14a7c412dd77e184be76b39bd616891d91855376",
- []
- ],
- "reciprocal.json": [
- "c71ac28005029c788b2a8600a76dd3caa796f701",
- []
- ],
- "reduce_l1.json": [
- "7637c02be23ce287e9d4fe1c8698ac86fbe3d315",
- []
- ],
- "reduce_l2.json": [
- "b4d270a701927ed1c60581c12911839189f3755e",
- []
- ],
- "reduce_log_sum.json": [
- "f3de240e458ea3ba27807da21bd6db130b837dbc",
- []
- ],
- "reduce_log_sum_exp.json": [
- "b999a567aa5bb2a1bb71c64b909f89e8d4853845",
- []
- ],
- "reduce_max.json": [
- "6cd55492692dc9c132512cab6465f376416d4046",
- []
- ],
- "reduce_mean.json": [
- "b990b0f93bba1bf22869663fa191991014d7280d",
- []
- ],
- "reduce_min.json": [
- "4d91480bb95a049727afe8c3db3cb1db73832071",
- []
- ],
- "reduce_product.json": [
- "e9b2dc34c26894255a881cd51ecc9e000fa711dd",
- []
- ],
- "reduce_sum.json": [
- "fd93e131b3e290f6c829ae695ca6ae55bf668932",
- []
- ],
- "reduce_sum_square.json": [
- "d308cad463a291218557dbc554830a6c9772a714",
- []
- ],
- "relu.json": [
- "248902c6658a5142e7ed21689d246f6576894c31",
- []
- ],
- "resample2d.json": [
- "605d1b55c017a57748547bd472ccbc3375ab2381",
- []
- ],
- "reshape.json": [
- "ada3daa4e2de4beaa718f976f0af094c4652cd1e",
- []
- ],
- "sigmoid.json": [
- "69756fbb9c2e30ebddf3cea243f16975277b7e27",
- []
- ],
- "sin.json": [
- "1fe76df45fbf5634abe32c4591e4ede8bbbcbbe8",
- []
- ],
- "slice.json": [
- "28cfd2c0e266cac15775570cb73711a2c1183351",
- []
- ],
- "softmax.json": [
- "cbe868ac1dee4cfa85454b5c785daa8be2aaad39",
- []
- ],
- "softplus.json": [
- "373612d5ca23d664a517bdd536a71d4686b2f21c",
- []
- ],
- "softsign.json": [
- "290f6711d09324886c6cbf4a6f11545abc7b34ef",
- []
- ],
- "split.json": [
- "6432044ea204243e75370c9c4861fc5946c6923b",
- []
- ],
- "sqrt.json": [
- "fa59308d45ba6cf75fa09bd7f6f7444ad36d9e27",
- []
- ],
- "sub.json": [
- "207d9106b42056c538e7cee21d5d8490c6fe0800",
- []
- ],
- "tan.json": [
- "63c7056d90546670f421e128f7c093a9434f5214",
- []
- ],
- "tanh.json": [
- "063c10623d83b8e03e8990d038164e5996d7f476",
- []
- ],
- "transpose.json": [
- "f7e6a7d2dd2f74089f38cd7d43dd847bef452f6a",
- []
- ],
- "triangular.json": [
- "652f780d58b6f1c79b9d9cb503359570beefc029",
- []
- ],
- "where.json": [
- "7c55b3171aed789df628396d6999dfdaad40a749",
- []
- ]
- },
"utils.js": [
- "7f99e3e1593b39648fbca13c06361c3c090797a9",
+ "e4a1e898598e6190da25fbdfe53b483af844d08c",
[]
],
"utils_validation.js": [
- "119450be4c1c3005132da0f5d96123e64ac054a4",
+ "da5786ca86bb52adb2c3d82c20c935de4d4a32b8",
[]
]
}
@@ -491787,6 +493607,10 @@
"server-connection-close.py": [
"9721c67170c832c9c0d6179c06744d31117289ae",
[]
+ ],
+ "server-read-then-close.py": [
+ "7f992e0dcca3ae62277cac0fa39355fce3e57be0",
+ []
]
},
"resources": {
@@ -495850,7 +497674,7 @@
],
"BlobURL": {
"cross-partition.tentative.https.html": [
- "c75ce07d054eb79d048373ff003a3f385a813596",
+ "11d9787b8873a8b77c81d80826009236336a88a3",
[
null,
{
@@ -499431,32 +501255,83 @@
{}
]
],
- "idbindex_openKeyCursor.htm": [
- "9436684c3d1050ed06a23837eed5397b3134ebbb",
+ "idbindex_openKeyCursor.any.js": [
+ "9166ff386cb2896170a2af43e7174397972883fe",
[
- null,
- {}
- ]
- ],
- "idbindex_openKeyCursor2.htm": [
- "ec97345a873109b1a4273214127765238877d1ec",
+ "IndexedDB/idbindex_openKeyCursor.any.html",
+ {
+ "script_metadata": [
+ [
+ "global",
+ "window,worker"
+ ],
+ [
+ "title",
+ "IDBIndex.openKeyCursor()"
+ ],
+ [
+ "script",
+ "resources/support.js"
+ ]
+ ]
+ }
+ ],
[
- null,
- {}
- ]
- ],
- "idbindex_openKeyCursor3.htm": [
- "c7416be38d230e9a7d79f49456ef42e04994a8cb",
+ "IndexedDB/idbindex_openKeyCursor.any.serviceworker.html",
+ {
+ "script_metadata": [
+ [
+ "global",
+ "window,worker"
+ ],
+ [
+ "title",
+ "IDBIndex.openKeyCursor()"
+ ],
+ [
+ "script",
+ "resources/support.js"
+ ]
+ ]
+ }
+ ],
[
- null,
- {}
- ]
- ],
- "idbindex_openKeyCursor4.htm": [
- "bcc1511c90c8a8611bb2023b1e995f774edc1f64",
+ "IndexedDB/idbindex_openKeyCursor.any.sharedworker.html",
+ {
+ "script_metadata": [
+ [
+ "global",
+ "window,worker"
+ ],
+ [
+ "title",
+ "IDBIndex.openKeyCursor()"
+ ],
+ [
+ "script",
+ "resources/support.js"
+ ]
+ ]
+ }
+ ],
[
- null,
- {}
+ "IndexedDB/idbindex_openKeyCursor.any.worker.html",
+ {
+ "script_metadata": [
+ [
+ "global",
+ "window,worker"
+ ],
+ [
+ "title",
+ "IDBIndex.openKeyCursor()"
+ ],
+ [
+ "script",
+ "resources/support.js"
+ ]
+ ]
+ }
]
],
"idbindex_reverse_cursor.any.js": [
@@ -499725,32 +501600,83 @@
}
]
],
- "idbobjectstore_clear.htm": [
- "51b6da72d7ee2e01d3295f84049a43ea832333ed",
+ "idbobjectstore_clear.any.js": [
+ "f384b6cfc8bfbd211152b6188fbb1c463162bf17",
[
- null,
- {}
- ]
- ],
- "idbobjectstore_clear2.htm": [
- "a4f15bde022be6f6c2a72b386c8ccbc7066f8211",
+ "IndexedDB/idbobjectstore_clear.any.html",
+ {
+ "script_metadata": [
+ [
+ "global",
+ "window,worker"
+ ],
+ [
+ "title",
+ "IDBObjectStore.clear()"
+ ],
+ [
+ "script",
+ "resources/support.js"
+ ]
+ ]
+ }
+ ],
[
- null,
- {}
- ]
- ],
- "idbobjectstore_clear3.htm": [
- "2bb44ec31cb5827d70774237538189673f8b8183",
+ "IndexedDB/idbobjectstore_clear.any.serviceworker.html",
+ {
+ "script_metadata": [
+ [
+ "global",
+ "window,worker"
+ ],
+ [
+ "title",
+ "IDBObjectStore.clear()"
+ ],
+ [
+ "script",
+ "resources/support.js"
+ ]
+ ]
+ }
+ ],
[
- null,
- {}
- ]
- ],
- "idbobjectstore_clear4.htm": [
- "f5e1cad563e1a8859a85719ca17a640dc007ee3e",
+ "IndexedDB/idbobjectstore_clear.any.sharedworker.html",
+ {
+ "script_metadata": [
+ [
+ "global",
+ "window,worker"
+ ],
+ [
+ "title",
+ "IDBObjectStore.clear()"
+ ],
+ [
+ "script",
+ "resources/support.js"
+ ]
+ ]
+ }
+ ],
[
- null,
- {}
+ "IndexedDB/idbobjectstore_clear.any.worker.html",
+ {
+ "script_metadata": [
+ [
+ "global",
+ "window,worker"
+ ],
+ [
+ "title",
+ "IDBObjectStore.clear()"
+ ],
+ [
+ "script",
+ "resources/support.js"
+ ]
+ ]
+ }
]
],
"idbobjectstore_count.htm": [
@@ -499781,115 +501707,83 @@
{}
]
],
- "idbobjectstore_createIndex.htm": [
- "ebd6377e492a3844a0ca8bbac4f194fcae7ceb18",
- [
- null,
- {}
- ]
- ],
- "idbobjectstore_createIndex10.htm": [
- "46678b1b6c7b66bb433423520b836c7dd40c454a",
- [
- null,
- {}
- ]
- ],
- "idbobjectstore_createIndex11.htm": [
- "e458977212ab3dbc2fa07b190b6fd3b1f37a721a",
- [
- null,
- {}
- ]
- ],
- "idbobjectstore_createIndex12.htm": [
- "a74ac6f5a1f97bf4d5a3bb070eeb5c2648c4c8ef",
- [
- null,
- {}
- ]
- ],
- "idbobjectstore_createIndex13.htm": [
- "673a54fb00b663f29ee6751bab9895b8967620c3",
- [
- null,
- {}
- ]
- ],
- "idbobjectstore_createIndex14-exception_order.htm": [
- "53aaec2a879183658670dbfb703e6d5afc70925c",
+ "idbobjectstore_createIndex.any.js": [
+ "79df5a77c870a3c0c3d2f57368ddb49a801679f3",
[
- null,
- {}
- ]
- ],
- "idbobjectstore_createIndex15-autoincrement.htm": [
- "679b5d05aa1bf61062a3f9f00aadc59fb177221d",
- [
- null,
+ "IndexedDB/idbobjectstore_createIndex.any.html",
{
- "timeout": "long"
+ "script_metadata": [
+ [
+ "title",
+ "IDBObjectStore.createIndex()"
+ ],
+ [
+ "global",
+ "window,worker"
+ ],
+ [
+ "script",
+ "resources/support.js"
+ ]
+ ]
}
- ]
- ],
- "idbobjectstore_createIndex2.htm": [
- "cac6c7996784d0b9da0f4d6d3dbed8dd8358433c",
- [
- null,
- {}
- ]
- ],
- "idbobjectstore_createIndex3-usable-right-away.htm": [
- "510f17f173c9fd405f76755841e20f8c1f68e9c3",
+ ],
[
- null,
+ "IndexedDB/idbobjectstore_createIndex.any.serviceworker.html",
{
- "timeout": "long"
+ "script_metadata": [
+ [
+ "title",
+ "IDBObjectStore.createIndex()"
+ ],
+ [
+ "global",
+ "window,worker"
+ ],
+ [
+ "script",
+ "resources/support.js"
+ ]
+ ]
}
- ]
- ],
- "idbobjectstore_createIndex4-deleteIndex-event_order.htm": [
- "bc5915f54a0587f810057f3513eb39fec8aea424",
- [
- null,
- {}
- ]
- ],
- "idbobjectstore_createIndex5-emptykeypath.htm": [
- "b004a218ffba0870513323ddeccdcc6a174ff101",
- [
- null,
- {}
- ]
- ],
- "idbobjectstore_createIndex6-event_order.htm": [
- "db7398d3604ea00a43e403b879ad86a37460fc2d",
- [
- null,
- {}
- ]
- ],
- "idbobjectstore_createIndex7-event_order.htm": [
- "9be4c563f437ef37c61d1e7c27cd82ba2e88451d",
- [
- null,
- {}
- ]
- ],
- "idbobjectstore_createIndex8-valid_keys.htm": [
- "10c2b29c57d2b7787619f3bb2a244134f3a684d7",
+ ],
[
- null,
+ "IndexedDB/idbobjectstore_createIndex.any.sharedworker.html",
{
- "timeout": "long"
+ "script_metadata": [
+ [
+ "title",
+ "IDBObjectStore.createIndex()"
+ ],
+ [
+ "global",
+ "window,worker"
+ ],
+ [
+ "script",
+ "resources/support.js"
+ ]
+ ]
}
- ]
- ],
- "idbobjectstore_createIndex9-emptyname.htm": [
- "3e1ef3c600bd5c169f6eb801263ff9e11882b3b9",
+ ],
[
- null,
- {}
+ "IndexedDB/idbobjectstore_createIndex.any.worker.html",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "IDBObjectStore.createIndex()"
+ ],
+ [
+ "global",
+ "window,worker"
+ ],
+ [
+ "script",
+ "resources/support.js"
+ ]
+ ]
+ }
]
],
"idbobjectstore_delete.any.js": [
@@ -510424,7 +512318,7 @@
]
],
"comp_host_language_label.html": [
- "b07566a56d4c7823a9f215aeb16d982b6af2e90e",
+ "d2057e4e855484af4a33abee7988534959afb00e",
[
null,
{
@@ -522749,6 +524643,15 @@
}
},
"console": {
+ "console-count-logging.html": [
+ "4cdd607b7f2242652502c1f4123e7d161d95b179",
+ [
+ null,
+ {
+ "testdriver": true
+ }
+ ]
+ ],
"console-is-a-namespace.any.js": [
"1756ba6bc1b27d6b9398b4ce078a891b4a4540f5",
[
@@ -526704,6 +528607,13 @@
{}
]
],
+ "img-src-none-blocks-data-uri.html": [
+ "8b9032afcefbbde533edf094a87a5cd9039a24fe",
+ [
+ null,
+ {}
+ ]
+ ],
"img-src-none-blocks.html": [
"5a05970f6006c2977db2f4e828d79c5d6369e114",
[
@@ -526733,7 +528643,7 @@
]
],
"report-blocked-data-uri.sub.html": [
- "d7405cd25570a48145760be3a859a27393afac69",
+ "c12ebbf568a5f849c1549df1d9cdffd975dcc901",
[
null,
{}
@@ -526784,10 +528694,12 @@
]
],
"history-iframe.sub.html": [
- "412b3ac3464d44822d21af142f3702b3eae7505f",
+ "1f6960531ebab658df4ed02093cae67f9b9ac963",
[
null,
- {}
+ {
+ "timeout": "long"
+ }
]
],
"history.sub.html": [
@@ -527558,6 +529470,15 @@
}
]
],
+ "report-frame-ancestors-no-parent-cookies.sub.html": [
+ "b500811c070da02b0a7a5519481c1c5af5a49ddf",
+ [
+ null,
+ {
+ "timeout": "long"
+ }
+ ]
+ ],
"report-frame-ancestors-with-x-frame-options.sub.html": [
"0c58a5efd54ceda6ad5f906b02862976c40f65cd",
[
@@ -528556,7 +530477,7 @@
]
],
"securitypolicyviolation-block-cross-origin-image-from-script.sub.html": [
- "37499db4b5c2c603a60fabd139b56a4d6b8ad86c",
+ "3c0e34c34220669b4089026be72ebb6741d88797",
[
null,
{}
@@ -528570,7 +530491,7 @@
]
],
"securitypolicyviolation-block-image-from-script.sub.html": [
- "b75d3804a89d3490701d78c288baea842ea02baa",
+ "5f4f301322c974024217ed3831a3ece2fd4836c5",
[
null,
{}
@@ -531736,6 +533657,13 @@
{}
]
],
+ "credentialscontainer-get-basics.https.html": [
+ "c1030b48f954655833636971bcfb5d919f10133e",
+ [
+ null,
+ {}
+ ]
+ ],
"credentialscontainer-prevent-silent-access.https.html": [
"5a83e556a738594d47b12b54521806648ed26262",
[
@@ -531774,7 +533702,7 @@
]
],
"non-fully-active.https.html": [
- "8101599cedb70ba4a258ef3b4bae3543f42602f8",
+ "508b4325d78b6565f4e0b9b79420b9523a327d83",
[
null,
{
@@ -534324,14 +536252,14 @@
]
],
"anchor-scroll-position-try-013.html": [
- "0d115c26fc436b73007c87cf3614131a21968441",
+ "2edad12be7256e3ef55df10ab865b58f8c678650",
[
null,
{}
]
],
"anchor-scroll-position-try-014.html": [
- "3e964e4dbd60774ef797474db0a21599ca363a6a",
+ "6d1019ee4aef7ba451f925685692f7a23a101877",
[
null,
{}
@@ -534450,14 +536378,14 @@
]
],
"at-position-try-allowed-declarations.html": [
- "f6dac753d2bcf29faede677fd5a5731294722ca0",
+ "3d2a70390a4ab0e3a0d7e3c9418fb6fdef5f7fdc",
[
null,
{}
]
],
"at-position-try-cssom.html": [
- "46ca8f73e92e132f47f2cdd8a0495da31fa4cd0c",
+ "126b9fa81a76d48a3a915d0ae4e03f27c161bc76",
[
null,
{}
@@ -534498,127 +536426,29 @@
{}
]
],
- "inset-area-align-justify-wm-dir.html": [
- "3e42913ffc46cb2231886027e957dd93226b1061",
- [
- null,
- {}
- ]
- ],
- "inset-area-align-justify.html": [
- "7f7f05ccf3a9857566de7b9fb92d3f84d1ba10ec",
- [
- null,
- {}
- ]
- ],
- "inset-area-anchor-outside.html": [
- "ac7e85bafb1a1db5ffdedf495cab5a230388d82a",
- [
- null,
- {}
- ]
- ],
- "inset-area-anchor-partially-outside.html": [
- "9d7f5b5f6baca2bdccea6590bcb650d6e7a80fcb",
- [
- null,
- {}
- ]
- ],
- "inset-area-basic.html": [
- "3ede9dcd92584b4d50a5def737826f416a209c87",
- [
- null,
- {}
- ]
- ],
- "inset-area-computed-insets.html": [
- "b06714b8a78ea18d9f733ed6e477cc85c620dcea",
- [
- null,
- {}
- ]
- ],
- "inset-area-computed.html": [
- "a49ff2a452288a5b9676ffe726dd5b3c5df466d7",
- [
- null,
- {}
- ]
- ],
- "inset-area-in-grid.html": [
- "bbf92e8d1c66a30abf6b5b645966f289cad633a6",
- [
- null,
- {}
- ]
- ],
- "inset-area-in-position-try.html": [
- "3affc1b30b710ee43fec882cb61659e0f3ff9cdf",
- [
- null,
- {}
- ]
- ],
- "inset-area-interpolation.html": [
- "b09b3913531f9533e2d0d821466ecbc5cfedd23f",
- [
- null,
- {}
- ]
- ],
- "inset-area-parsing.html": [
- "7c7fc8249178279dc640ac2fba9e3aca32d8b15b",
- [
- null,
- {}
- ]
- ],
- "inset-area-value.html": [
- "27c5882fc6e1814ada86a988e1ad6f146c9ffbdb",
- [
- null,
- {}
- ]
- ],
- "inset-area-with-insets.html": [
- "f6a4cd3665224e1d71d78773256f655b0e9309e8",
- [
- null,
- {}
- ]
- ],
- "inset-area-wm-dir.html": [
- "7e740b4aceb85aab2455c5ee5b4f65e25e5f9352",
- [
- null,
- {}
- ]
- ],
"last-successful-basic.html": [
- "cda0eed6fbad429d43c04b61ee16f6abf25e5162",
+ "953ad80fcfc10078350b5771b8cd7c377fe91e96",
[
null,
{}
]
],
"last-successful-change-fallbacks.html": [
- "ed4f8a43626e3d0c4ef7f27c96450be3bf1708d1",
+ "d9aed01a90b08d3c6f63f8056aa4029855de5c63",
[
null,
{}
]
],
"last-successful-change-try-rule.html": [
- "205aba014c3cd5f1cea5bed48128c29928265bcc",
+ "f7caf2f08ee1d8b6bf66d867c835bffd3faf9464",
[
null,
{}
]
],
"last-successful-intermediate-ignored.html": [
- "82bf1e8aca9ae6151062fd52f2ef814b2e74b526",
+ "33f42e7be8f1b0a9a5c694cf00a78dd8a88719e1",
[
null,
{}
@@ -534696,6 +536526,13 @@
]
]
},
+ "popover-anchor-backdrop-transition.html": [
+ "60c222363de2889817f4da74c768c1b0bc0ac0ff",
+ [
+ null,
+ {}
+ ]
+ ],
"position-anchor-003.html": [
"6117027e22029cdef83e9c01190af1fbb90c75ac",
[
@@ -534710,6 +536547,104 @@
{}
]
],
+ "position-area-align-justify-wm-dir.html": [
+ "25b53d44f788b3b2412a84b07cd394cfa89462e8",
+ [
+ null,
+ {}
+ ]
+ ],
+ "position-area-align-justify.html": [
+ "e0bce2c82683243ecff838f71a56e805bd1fac7e",
+ [
+ null,
+ {}
+ ]
+ ],
+ "position-area-anchor-outside.html": [
+ "d8fb5dbc98fa90513e339487b6e8284ca2db92bc",
+ [
+ null,
+ {}
+ ]
+ ],
+ "position-area-anchor-partially-outside.html": [
+ "e23cea474787b1f613a87fdddf306aec40fb93b1",
+ [
+ null,
+ {}
+ ]
+ ],
+ "position-area-basic.html": [
+ "6cbaf8e50145b19a3e761f91abb7adcdb30d400d",
+ [
+ null,
+ {}
+ ]
+ ],
+ "position-area-computed-insets.html": [
+ "2d7907fd92d240c3c26b380bdfe1a4fa6d1ce8a2",
+ [
+ null,
+ {}
+ ]
+ ],
+ "position-area-computed.html": [
+ "0acc853eb9048cab3d5c2a5e10082ffa489abe59",
+ [
+ null,
+ {}
+ ]
+ ],
+ "position-area-in-grid.html": [
+ "85dd4f483060168ed3d312c044a38915705fcd7e",
+ [
+ null,
+ {}
+ ]
+ ],
+ "position-area-in-position-try.html": [
+ "1812c3892ea1b805eb6b9092c04aa8328ad156a5",
+ [
+ null,
+ {}
+ ]
+ ],
+ "position-area-interpolation.html": [
+ "b0e696ec25507af5102d32ece575710cf14a01f0",
+ [
+ null,
+ {}
+ ]
+ ],
+ "position-area-parsing.html": [
+ "9eefd256f41e0aa50dffd73febf71b037d3834cf",
+ [
+ null,
+ {}
+ ]
+ ],
+ "position-area-value.html": [
+ "dfe753427e6abc6ad844b67b180c2b46ff0d3611",
+ [
+ null,
+ {}
+ ]
+ ],
+ "position-area-with-insets.html": [
+ "6f6cf438ac17657961831dfa04a66fe65a5da27a",
+ [
+ null,
+ {}
+ ]
+ ],
+ "position-area-wm-dir.html": [
+ "1ca0668067ca06833ff592d4d64d003b3befae19",
+ [
+ null,
+ {}
+ ]
+ ],
"position-try-001.html": [
"739e09f6a7b8b5ba5a2de8c17fc30618ba36bd13",
[
@@ -534808,8 +536743,8 @@
{}
]
],
- "position-try-order-inset-area.html": [
- "71ae5d78debe9ecc9059906ec125931ff09769df",
+ "position-try-order-position-area.html": [
+ "3b7a3475c759d0910b770e89c9df6adf0ac0e62a",
[
null,
{}
@@ -534858,7 +536793,7 @@
]
],
"property-interpolations.html": [
- "5687e34cfd6dbbaf4b46bb21d612c7c5aa072edd",
+ "4dc6c71ab2c25c17a03ccda5c02e7781b707279c",
[
null,
{}
@@ -534913,22 +536848,22 @@
{}
]
],
- "try-tactic-inset-area.html": [
- "9e53fab91fc9f0c33c7ee9da5342d69ca0831183",
+ "try-tactic-margin.html": [
+ "7e0b25652c743fe2f6607202a7cab985ecf8d681",
[
null,
{}
]
],
- "try-tactic-margin.html": [
- "7e0b25652c743fe2f6607202a7cab985ecf8d681",
+ "try-tactic-percentage.html": [
+ "41b5926e2cdb3c0014bd3dfa11e2fdcc1c121c08",
[
null,
{}
]
],
- "try-tactic-percentage.html": [
- "41b5926e2cdb3c0014bd3dfa11e2fdcc1c121c08",
+ "try-tactic-position-area.html": [
+ "e050dbccef2b5679229c8df8ba02535e989ed23e",
[
null,
{}
@@ -535127,13 +537062,6 @@
{}
]
],
- "animation-canceled-by-parent-details-element-being-closed.html": [
- "3f6521fccfd9ffd4dd52de4afbe43933d5feca32",
- [
- null,
- {}
- ]
- ],
"animation-change-underlying-value-changed-in-flight.html": [
"444ea7378533da40fd6243d7c165785325374cdb",
[
@@ -535284,7 +537212,7 @@
]
],
"display-none-dont-cancel.tentative.html": [
- "6ae115803b820ffdb51169c38769ee51f5062652",
+ "12394ffb599c402cfc9843cbcec12833e1d0a13a",
[
null,
{}
@@ -535297,6 +537225,13 @@
{}
]
],
+ "display-none-to-display-block-dont-cancel.tentative.html": [
+ "45958a1ee240f740a9d01411c7df75896d76176c",
+ [
+ null,
+ {}
+ ]
+ ],
"empty-pseudo-class-with-animation.html": [
"d8dba1ab5bdae3b752004ae7112d680582cd010f",
[
@@ -535671,7 +537606,7 @@
],
"stability": {
"animation-event-destroy-renderer.html": [
- "0a1e1d508530a23ee80dc27efbb66413adc0570e",
+ "3540d5c5ecbd16529010deb2d6f2f7f85edbc7da",
[
"css/css-animations/stability/animation-event-destroy-renderer.html?animationiteration",
{}
@@ -536087,7 +538022,7 @@
]
],
"background-image-computed.sub.html": [
- "cf3c065d4954773dc9c97d588bc100b52850af4a",
+ "707cf33061b25f94e79d6aa502de0288399cb021",
[
null,
{}
@@ -536980,6 +538915,62 @@
]
],
"margin-trim": {
+ "block-container-block-end-last-child-with-border.html": [
+ "42893cdc01b7893b180368d6aac648cbf792e0c8",
+ [
+ null,
+ {}
+ ]
+ ],
+ "block-container-block-end-nested-last-child-with-border.html": [
+ "3bff1829b16e811425539d81198122b011fb3ae4",
+ [
+ null,
+ {}
+ ]
+ ],
+ "block-container-block-end-self-collapsing-children-nested-at-bottom.html": [
+ "1cb9995e94849964815e6e7a135ba5e1f5af3d44",
+ [
+ null,
+ {}
+ ]
+ ],
+ "block-container-block-end-self-collapsing-children-nested-margin-trim.html": [
+ "997e20350d3d23a0b52a691d06520f3bb1f7a084",
+ [
+ null,
+ {}
+ ]
+ ],
+ "block-container-block-end-self-collapsing-children-offsets-nested-multiple-times.html": [
+ "9ca3c3b28afb04948be57fca5421c25ee16af7d0",
+ [
+ null,
+ {}
+ ]
+ ],
+ "block-container-block-end-self-collapsing-children-offsets-nested-once.html": [
+ "97a15b3a841b81b24972ee0e1ff6cdec7c49e4ee",
+ [
+ null,
+ {}
+ ]
+ ],
+ "block-container-block-end-self-collapsing-children-offsets-vert-lr.html": [
+ "0b378b39eec61007474f1443a3b5a21fec034399",
+ [
+ null,
+ {}
+ ]
+ ],
+ "block-container-block-end-self-collapsing-children-offsets.html": [
+ "67c0a3e22838cb2025adf74b32114e0786c4dc6f",
+ [
+ null,
+ {}
+ ]
+ ],
"computed-margin-values": {
"block-container-block-end-nested-child.html": [
"8a3b03c2e502c1f92ba43ac49ae0f4a304f60538",
@@ -537184,6 +539175,13 @@
{}
]
],
+ "grid-block-start.html": [
+ "c08d905ca29d8191c842c6e75f5971625420415c",
+ [
+ null,
+ {}
+ ]
+ ],
"grid-inline-end-columns-added-to-end.html": [
"9c88c2981598f316a3b19be88b5bc99c10c76725",
[
@@ -537191,6 +539189,13 @@
{}
]
],
+ "grid-inline-end-items-in-last-column-trimmed.html": [
+ "58c05216ae041a1bfb5b6e304a9b7b940ddb71e9",
+ [
+ null,
+ {}
+ ]
+ ],
"grid-inline-start-item-negative-span.html": [
"80b97e9cd0d10526c713e58887733e51bad62ffb",
[
@@ -538388,7 +540393,7 @@
]
],
"color-computed-relative-color.html": [
- "765485fd13505ec3fb9dd1d9539af869992a3050",
+ "4997d6585d831f12341269e87f6a673e6376748b",
[
null,
{}
@@ -538521,7 +540526,7 @@
]
],
"color-valid-relative-color.html": [
- "7b44b4f0bfcd73d611410b420adf1653f3c9f511",
+ "f7ee41410ea91eda290bd6ede019695de38d73c4",
[
null,
{}
@@ -539255,6 +541260,13 @@
{}
]
],
+ "no-layout-containment-scroll.html": [
+ "57a912bcea0acf6f59fd77e5d865ab419c36ebb3",
+ [
+ null,
+ {}
+ ]
+ ],
"orthogonal-wm-container-query.html": [
"630226500effd84819a696939c2133ccbbea763b",
[
@@ -539326,7 +541338,7 @@
]
],
"query-content-box.html": [
- "b689acdb095ca307344329c9fb6ca63e4c817e6a",
+ "5b83944d2f81deebb3c685cc7c87dd2fd03f17d7",
[
null,
{}
@@ -539562,7 +541574,7 @@
},
"css-contain": {
"contain-chrome-thcrash-001.html": [
- "c7c03bca106c84678ac06e52c506198af0948228",
+ "586c89428a1f3f63e324246420b1ac760ab2ee9c",
[
null,
{}
@@ -539946,7 +541958,7 @@
]
],
"content-visibility-anchor-positioning-007.html": [
- "988caad79a69441475de8ba3779ecc51dbfaba30",
+ "69e7f6f53e6bf072655e3c6336f885c39bcaeab7",
[
null,
{}
@@ -540002,7 +542014,7 @@
]
],
"content-visibility-auto-state-changed.html": [
- "0333c052e4a2ea80e750e9da342657abd337420e",
+ "6a14470c0f4b1d66bacd6316803fba01a6ba6d20",
[
null,
{
@@ -540552,7 +542564,23 @@
null,
{}
]
- ]
+ ],
+ "tentative": {
+ "display-computed.html": [
+ "50c8f0a53884ea47f096918c2b39860c9ec6f5b1",
+ [
+ null,
+ {}
+ ]
+ ],
+ "display-valid.html": [
+ "0bfdbc671d2f72cbc87398fc50d976a21ddca770",
+ [
+ null,
+ {}
+ ]
+ ]
+ }
},
"reading-flow": {
"tentative": {
@@ -543516,6 +545544,13 @@
{}
]
],
+ "font-face-size-adjust.html": [
+ "01a551d350d860588acc7a8b27cd4174f3d96362",
+ [
+ null,
+ {}
+ ]
+ ],
"font-face-src-format.html": [
"7a5bb5b97ec3e3d2bb1b4894865bca2086522f2c",
[
@@ -545437,28 +547472,28 @@
]
],
"grid-column-axis-self-baseline-synthesized-001.html": [
- "0d3a556f40c0cbdb107bc646d84314916e3f42be",
+ "e378b36d38847083cd21934591e75e43ab375955",
[
null,
{}
]
],
"grid-column-axis-self-baseline-synthesized-002.html": [
- "c20489e9a8b68fe05939357c9aaf75492e5dc49d",
+ "49f983bb0117bb68af55f63717e26841d27ac89c",
[
null,
{}
]
],
"grid-column-axis-self-baseline-synthesized-003.html": [
- "10a9adb9ff2d385c2b0f054e94e5cb59139c5f96",
+ "de17f70feb8218836b13c0ea6b5940d1a6afb601",
[
null,
{}
]
],
"grid-column-axis-self-baseline-synthesized-004.html": [
- "8c6d7abe4edcd88d690c9f4748478078ea07d800",
+ "b48e112fa6a815ea276e084715072ee177b1268b",
[
null,
{}
@@ -545843,28 +547878,28 @@
]
],
"grid-row-axis-self-baseline-synthesized-001.html": [
- "c9e630cbac40c153048d2d671cedf9c1d26ae1e4",
+ "43a57a200697f2063632a1ae207e87806022fb4d",
[
null,
{}
]
],
"grid-row-axis-self-baseline-synthesized-002.html": [
- "e96f8da6e724b0e47b11265463cb795c4d875308",
+ "b1058a2aea262134a4ebdf287814510fb1997674",
[
null,
{}
]
],
"grid-row-axis-self-baseline-synthesized-003.html": [
- "19a4f5193bfb12917a7454d65b9fd5ad35e6bca7",
+ "79c056f46fc6b694661bd69aca0dc2d3b92c4dd3",
[
null,
{}
]
],
"grid-row-axis-self-baseline-synthesized-004.html": [
- "f3f70790c9811fea794a1cb892405a434073acec",
+ "8780377605543a446f69ae6454c71e9971f9cd37",
[
null,
{}
@@ -548138,7 +550173,7 @@
],
"gradient": {
"color-stops-parsing.html": [
- "a8baa63a6765a4c6052752eb638156f0688b12f2",
+ "1b83ea3b153c3696cc118a107c2008000f6e0aee",
[
null,
{}
@@ -549603,6 +551638,62 @@
{}
]
],
+ "mask-border-outset-composition.html": [
+ "ce4b76bd135f44fbab03a980d965dbef43211104",
+ [
+ null,
+ {}
+ ]
+ ],
+ "mask-border-outset-interpolation.html": [
+ "863166e1fb897838decb7f3ed2d15826d641198b",
+ [
+ null,
+ {}
+ ]
+ ],
+ "mask-border-slice-composition.html": [
+ "3a195e655d55f6ec2555411f36391f3a0e343946",
+ [
+ null,
+ {}
+ ]
+ ],
+ "mask-border-slice-interpolation-stability.html": [
+ "68cee911ca3fab726018b0976169aaa622580537",
+ [
+ null,
+ {}
+ ]
+ ],
+ "mask-border-slice-interpolation.html": [
+ "1a3f4a2063d154e0452d1e8c4a80683183531180",
+ [
+ null,
+ {}
+ ]
+ ],
+ "mask-border-source-interpolation.html": [
+ "799e9cfd7578b55d244698fca84676dfd2a73aca",
+ [
+ null,
+ {}
+ ]
+ ],
+ "mask-border-width-composition.html": [
+ "6489ff9084129ed17d184ed6f52d87cfeb5a0ada",
+ [
+ null,
+ {}
+ ]
+ ],
+ "mask-border-width-interpolation.html": [
+ "18b3f37bc63ca65eaae93596714576eb1e8b226a",
+ [
+ null,
+ {}
+ ]
+ ],
"mask-image-interpolation.html": [
"ac6b266992d5eafffa8a1195abe8aae0403819b2",
[
@@ -550493,15 +552584,6 @@
]
]
},
- "css-outline": {
- "outline-width-rounding.tentative.html": [
- "8a4a724bbe5b95989de2398385c6d3139043fe7f",
- [
- null,
- {}
- ]
- ]
- },
"css-overflow": {
"auto-scrollbar-inline-children.html": [
"149cf942fe625af24de8623baab3e68fed581738",
@@ -551200,15 +553282,15 @@
{}
]
],
- "size-001.html": [
- "885a7b85306f3f5d0737e62e400225d9f35a2bb6",
+ "size-invalid.html": [
+ "238d10ee4a18e90778dd90135578719538012e93",
[
null,
{}
]
],
- "size-invalid.html": [
- "6e7c4a222df82e7ebb989831c373d556905a5bc2",
+ "size-valid.html": [
+ "1e0911655369ae8923c46761749c4eef654ac72b",
[
null,
{}
@@ -552446,7 +554528,7 @@
]
],
"at-property.html": [
- "950d9b02d7b7d336262ec82a36a85c32635d47e3",
+ "56a1956f56dd552779db4e3ad0d41078f4e6c80f",
[
null,
{}
@@ -552502,7 +554584,7 @@
]
],
"register-property-syntax-parsing.html": [
- "664ccabd33c3a1ac62b5dbad83b8ed8640053bc8",
+ "537a921efc7e7dde149622337314f4ad4a3151c7",
[
null,
{}
@@ -552805,14 +554887,14 @@
]
],
"marker-supported-properties-in-animation.html": [
- "e581a786367ac13a90f95cb043b95c629babd9ab",
+ "11811bae127d0836f904d0f982164665fd7b07a2",
[
null,
{}
]
],
"marker-supported-properties.html": [
- "700d04aa83a10c9d38c30d4695f2a14be27297a9",
+ "203c0a640774e40bf497a6531f2b08e8362ab2f0",
[
null,
{}
@@ -553661,6 +555743,13 @@
{}
]
],
+ "shadow-dom-subscroller.html": [
+ "bbae72df7153f67a3fb99567d912f1da9a0857cd",
+ [
+ null,
+ {}
+ ]
+ ],
"start-edge-in-block-layout-direction.html": [
"043844d05646a0955f21a24f65e7467dd9df632e",
[
@@ -553689,12 +555778,19 @@
{}
]
],
- "zero-scroll-offset.html": [
+ "zero-scroll-offset-001.html": [
"b8f5aa2ccc52d8236cbd1feadd0ff6f18f3ccef3",
[
null,
{}
]
+ ],
+ "zero-scroll-offset-002.html": [
+ "b1da4560c6d828f2b110b4881a5e3854cdef1b3e",
+ [
+ null,
+ {}
+ ]
]
},
"css-scroll-snap": {
@@ -554376,6 +556472,13 @@
{}
]
],
+ "snap-to-visible-areas-both-pseudo.html": [
+ "6bc6d13b3bbf3f0e375df929b2185b74c2fd0136",
+ [
+ null,
+ {}
+ ]
+ ],
"snap-to-visible-areas-both.html": [
"cde329bcc38da15bbf225f7f6dfc0cc34103a221",
[
@@ -555066,6 +557169,13 @@
{}
]
],
+ "grouping-with-disabled.html": [
+ "187b40ba3b50ec9df0a91fde5ce79e80e0b3f002",
+ [
+ null,
+ {}
+ ]
+ ],
"host-part-001.html": [
"9004141534f134d85590df3372f83838668a72e7",
[
@@ -555367,22 +557477,157 @@
{}
]
],
- "shape-outside-invalid.html": [
- "5fe89a605ec2d720b648cff54f8ec812399776d0",
+ "shape-outside-valid-position.html": [
+ "07b82ddda6472d04d8fc53a9803e83f8214723dd",
+ [
+ null,
+ {}
+ ]
+ ]
+ },
+ "shape-functions": {
+ "circle-function-computed.html": [
+ "cdfbbb5aa0357d04b23ae0e493f32638a2e76baf",
[
null,
{}
]
],
- "shape-outside-valid-position.html": [
- "07b82ddda6472d04d8fc53a9803e83f8214723dd",
+ "circle-function-invalid.html": [
+ "56ca23d23a52b98e95f10754a65f60e288d54e93",
[
null,
{}
]
],
- "shape-outside-valid.html": [
- "e5587c6b233a0c94568447777e95533ecbb50b29",
+ "circle-function-valid.html": [
+ "417e397de9ec689a67e69524243fd56ce3844606",
+ [
+ null,
+ {}
+ ]
+ ],
+ "ellipse-function-computed.html": [
+ "2f574f5a8b1ccab799626e6b11dbd8c52a8b9143",
+ [
+ null,
+ {}
+ ]
+ ],
+ "ellipse-function-invalid.html": [
+ "d17034439bf2a505b1bef655c49aa20becb9cebe",
+ [
+ null,
+ {}
+ ]
+ ],
+ "ellipse-function-valid.html": [
+ "7d82996068f65fc281a7593d47dddbdbe1415f17",
+ [
+ null,
+ {}
+ ]
+ ],
+ "inset-function-computed.html": [
+ "4712c591cc24e840bfd9d48bbd57fbf57455a459",
+ [
+ null,
+ {}
+ ]
+ ],
+ "inset-function-invalid.html": [
+ "fb1fd998e3c9f5ecde18266e9ffa73044c2b3e74",
+ [
+ null,
+ {}
+ ]
+ ],
+ "inset-function-valid.html": [
+ "25fc426d2c8665e54240b3afbd6a249c51cee10b",
+ [
+ null,
+ {}
+ ]
+ ],
+ "path-function-computed.html": [
+ "e6ed3734ce4f5375af592ef0653c8fe8a380f07b",
+ [
+ null,
+ {}
+ ]
+ ],
+ "path-function-invalid.html": [
+ "8b9bbcfa1270035332a3cc98e4fa1b0eac4858bf",
+ [
+ null,
+ {}
+ ]
+ ],
+ "path-function-valid.html": [
+ "4a576a0de2565e8ca7f1c19994263b8ffff1d4e9",
+ [
+ null,
+ {}
+ ]
+ ],
+ "polygon-function-computed.html": [
+ "beb9714e652e632d1f51953cd041f88ea62ce2dd",
+ [
+ null,
+ {}
+ ]
+ ],
+ "polygon-function-invalid.html": [
+ "c37fd9e748c58501cbb4a791fb0ddb3734a08daf",
+ [
+ null,
+ {}
+ ]
+ ],
+ "polygon-function-valid.html": [
+ "45b0c1eda1c8809c21068608973ff51aff9f62cf",
+ [
+ null,
+ {}
+ ]
+ ],
+ "rect-function-computed.html": [
+ "bf43cdce68d5a682565885e6c52a51f4553dfbef",
+ [
+ null,
+ {}
+ ]
+ ],
+ "rect-function-invalid.html": [
+ "528502b904da5102053c0806a61d7b296bd5b70d",
+ [
+ null,
+ {}
+ ]
+ ],
+ "rect-function-valid.html": [
+ "6489f4e82adaf452824e54f772eb160bb190353b",
+ [
+ null,
+ {}
+ ]
+ ],
+ "xywh-function-computed.html": [
+ "117e7a40cfeb4405ef508afab1d8e9cc11d9165f",
+ [
+ null,
+ {}
+ ]
+ ],
+ "xywh-function-invalid.html": [
+ "b2b1677fb344cada03582e0588e4f019ea15ece4",
+ [
+ null,
+ {}
+ ]
+ ],
+ "xywh-function-valid.html": [
+ "bfb5a9cae3d8a3034558bc402abc2009d38334d7",
[
null,
{}
@@ -562217,6 +564462,13 @@
}
]
],
+ "parse-calc-expressions.html": [
+ "df8ac6b511a259b6f11f45756f7a5a4b7979b13c",
+ [
+ null,
+ {}
+ ]
+ ],
"set-var-reference-thcrash.html": [
"c6bc3cc2a39703fcaee050c459fa3182b5454cd5",
[
@@ -564907,6 +567159,13 @@
{}
]
],
+ "outline-width-rounding.tentative.html": [
+ "8a4a724bbe5b95989de2398385c6d3139043fe7f",
+ [
+ null,
+ {}
+ ]
+ ],
"parsing": {
"box-sizing-computed.html": [
"9b7f1d1c4237c5a3d7236fe992c327a2247a7a81",
@@ -565321,7 +567580,7 @@
]
},
"attr-all-types.html": [
- "129e1fd6c73b253750f643fe5c40e87254351913",
+ "4e9dd9a6bd99395b60d546f2ae01b4cd80e56346",
[
null,
{}
@@ -565334,6 +567593,13 @@
{}
]
],
+ "attr-pseudo-elem-invalidation.html": [
+ "1ef912bf75d2ed811e4676754a794dc6f2564f31",
+ [
+ null,
+ {}
+ ]
+ ],
"calc-angle-values.html": [
"699af7a5cdcb3b4cfa106f53eb416a15427f0a91",
[
@@ -565504,7 +567770,7 @@
],
"calc-size": {
"animation": {
- "calc-size-height-interpolation.tentative.html": [
+ "calc-size-height-interpolation.html": [
"b37b57bf26dea390448746d20e92ba66b4ccc920",
[
null,
@@ -565513,14 +567779,14 @@
}
]
],
- "calc-size-interpolation-expansion.tentative.html": [
+ "calc-size-interpolation-expansion.html": [
"a34aec0608512c44781679d780023a3165631222",
[
null,
{}
]
],
- "calc-size-width-interpolation.tentative.html": [
+ "calc-size-width-interpolation.html": [
"c08198bd4a5f0f677156c18ef9e238f4c49bff1b",
[
null,
@@ -565635,15 +567901,29 @@
]
]
},
- "calc-size-height.tentative.html": [
+ "calc-size-flex-basis-on-column.html": [
+ "1d2ba5804b9c0f7204e962620f5b8920a303b8f7",
+ [
+ null,
+ {}
+ ]
+ ],
+ "calc-size-flex-basis-on-row.html": [
+ "23231f213ed8359ec288a7885f0c887f4bd439d3",
+ [
+ null,
+ {}
+ ]
+ ],
+ "calc-size-height.html": [
"c3d58931b87d8a6dba2ff92e91c4fe163352a96a",
[
null,
{}
]
],
- "calc-size-parsing.tentative.html": [
- "bec5fb1a8d512a7387600200a5ca33115e87114c",
+ "calc-size-parsing.html": [
+ "37eb933c713e06d81b67bd9da9d4ca4730a38b9a",
[
null,
{}
@@ -565656,7 +567936,7 @@
{}
]
],
- "calc-size-width.tentative.html": [
+ "calc-size-width.html": [
"96b2719c5d18fa6b0f96d9de196b77a045e8d8d5",
[
null,
@@ -565874,6 +568154,20 @@
{}
]
],
+ "integer_interpolation_round_half_towards_positive_infinity_order.html": [
+ "60c439ebcf4cb5e6e7a412326b4333a163a6bd60",
+ [
+ null,
+ {}
+ ]
+ ],
+ "integer_interpolation_round_half_towards_positive_infinity_z_index.html": [
+ "c9b042ccb8f2d08e04dca56df9715b4081c4d19d",
+ [
+ null,
+ {}
+ ]
+ ],
"lh-rlh-on-root-001.html": [
"f26981669910af31bcc4fead14394b6baeffaac7",
[
@@ -566445,6 +568739,13 @@
{}
]
],
+ "variable-css-wide-keywords.html": [
+ "4666729da514e23824cb9697befa4a975df2b093",
+ [
+ null,
+ {}
+ ]
+ ],
"variable-cssText.html": [
"15a3ad83c16131e419c2a7ad2bc58d8c6849053d",
[
@@ -566819,6 +569120,13 @@
{}
]
],
+ "pagereveal-ctor.html": [
+ "a840b29f3179c2e50c3899066707f69e61f9638b",
+ [
+ null,
+ {}
+ ]
+ ],
"pagereveal-microtask-sequence.html": [
"205f4d1ddcfb71d60788af58c77e6b12957336c3",
[
@@ -566854,6 +569162,13 @@
{}
]
],
+ "pageswap-ctor.html": [
+ "3e4e9b6466156f5ffc6497e6b3145df5dd361c1f",
+ [
+ null,
+ {}
+ ]
+ ],
"pageswap-in-hidden-doc-should-skip-transition.html": [
"5be3b6cb27ce915eea1711caa93d4adee4e4f35b",
[
@@ -567051,7 +569366,7 @@
]
],
"pseudo-elements-invalid.html": [
- "14bd768f76cfc2d631f7b5db841c8f1c37d560dc",
+ "e13df89fe329ad79bc5dd985b902583229986b1c",
[
null,
{}
@@ -567065,7 +569380,7 @@
]
],
"pseudo-elements-valid.html": [
- "1a0e5b82d35e7bdd7bb1b753d42106c9d46b9c30",
+ "1d5ccd1442c20ce5457e1145a8d1b8c8a10727d6",
[
null,
{}
@@ -567092,6 +569407,20 @@
{}
]
],
+ "view-transition-group-invalid.html": [
+ "a371a94665eb835b750293dca11e85aab7eb4366",
+ [
+ null,
+ {}
+ ]
+ ],
+ "view-transition-group-valid.html": [
+ "d1d21a60997070cc0ead0a583e46b5c7a5a27b47",
+ [
+ null,
+ {}
+ ]
+ ],
"view-transition-name-computed.html": [
"5b05667f749e0b9c1161aea91f7448eea5cd94e6",
[
@@ -568816,6 +571145,13 @@
{}
]
],
+ "link-element-stylesheet-title.html": [
+ "bca6a3082e96b06925370a5400fb53e1be3df00b",
+ [
+ null,
+ {}
+ ]
+ ],
"medialist-interfaces-001.html": [
"f436177fb8ec210d878418883d7876f64d1c45df",
[
@@ -570106,6 +572442,20 @@
{}
]
],
+ "scrollintoview-containingblock-chain.html": [
+ "fd66bfadce14e23f857000adef1639ac738f187f",
+ [
+ null,
+ {}
+ ]
+ ],
+ "scrollintoview-zero-height-item.html": [
+ "0973dadb35e0306ca14de7cf5db0fc4b8426bf70",
+ [
+ null,
+ {}
+ ]
+ ],
"scrollintoview.html": [
"7a7ecfafccbe679a96e06f3fa934cf6d19e2c760",
[
@@ -570237,6 +572587,17 @@
]
]
},
+ "fill-stroke": {
+ "animation": {
+ "stroke-color-interpolation.html": [
+ "e519e6b8a53635301b5823b1483dad8fe3fc4cb9",
+ [
+ null,
+ {}
+ ]
+ ]
+ }
+ },
"filter-effects": {
"animation": {
"backdrop-filter-interpolation-001.html": [
@@ -570560,6 +572921,13 @@
{}
]
],
+ "DOMMatrix-invertSelf.html": [
+ "b9b8066d1d190e121ec80fef393efeac843b1866",
+ [
+ null,
+ {}
+ ]
+ ],
"DOMMatrix-newobject.html": [
"33604e3c6718f05583ad544f6659d0060fe7d79d",
[
@@ -572272,6 +574640,15 @@
{}
]
],
+ "has-with-nesting-parent-containing-complex.html": [
+ "4ed611146b80ed5e5aef720f345b5394fa4d4fbb",
+ [
+ null,
+ {
+ "testdriver": true
+ }
+ ]
+ ],
"has-with-nesting-parent-containing-hover.html": [
"8082980e6261ab4bd9407e0a1e0a807a215f4731",
[
@@ -572690,6 +575067,13 @@
{}
]
],
+ "nth-last-child-invalid.html": [
+ "ae768b8698e35f74bf34b310993381834dda3c9f",
+ [
+ null,
+ {}
+ ]
+ ],
"nth-of-type-namespace.html": [
"f5d81a5df3ac1380749a075cb5588897d6816c58",
[
@@ -572820,7 +575204,7 @@
]
],
"parse-part.html": [
- "c166fd7765b1bfb36871b47ea08a55e03392292d",
+ "fa1856ad2a9ff3bddeb73ba673c548f31b36bba7",
[
null,
{}
@@ -573029,6 +575413,15 @@
{}
]
],
+ "ElementInternals-role.html": [
+ "193cd77644c5137839b3f15ed060f37688c66bf5",
+ [
+ null,
+ {
+ "testdriver": true
+ }
+ ]
+ ],
"HTMLElement-attachInternals.html": [
"43ea55a67e08ce1c3086775f0df89f464e505e03",
[
@@ -574248,7 +576641,7 @@
]
],
"non-fully-active.https.html": [
- "dac4cecb78c03dfd7b09fb14412c11cfbecf533b",
+ "82b87b63d7dea3c7ed9bbd4003f5b58ad07d5831",
[
null,
{
@@ -578111,6 +580504,13 @@
]
}
]
+ ],
+ "popover-preserve.html": [
+ "5487bd4aec51e37eb0fb54e3e63d8a510b0f923c",
+ [
+ null,
+ {}
+ ]
]
}
},
@@ -578225,7 +580625,7 @@
]
],
"observable-filter.any.js": [
- "419d59ed8a8c49486e9ef90fbad3b087b126390d",
+ "0a2aa36658499f30ee35d03f28536f122387d93c",
[
"dom/observable/tentative/observable-filter.any.html",
{}
@@ -579767,6 +582167,15 @@
{}
]
],
+ "fire-selection-change-on-deleting-empty-element.html": [
+ "747700530669127fa47bef6e01bf9543bd4fe9f3",
+ [
+ null,
+ {
+ "testdriver": true
+ }
+ ]
+ ],
"formatblock-preserving-selection.tentative.html": [
"d10e80b4ea67aed4a0884c04c337d4f52eacc622",
[
@@ -579896,6 +582305,13 @@
}
]
],
+ "html-text-copy-paste-of-anchor-with-href-in-content-editable.html": [
+ "5724b59ada4bb34fe416cb0031643e1fd4973667",
+ [
+ null,
+ {}
+ ]
+ ],
"indent-preserving-selection.tentative.html": [
"b3fae41faf06b4b1a62ead587bdbbd9c253cded1",
[
@@ -582428,6 +584844,13 @@
{}
]
],
+ "plain-text-copy-paste-of-paragraph-ending-with-non-layed-out-content.html": [
+ "4b053e37706c2ed0e044caf5166f1f07fe59fa7e",
+ [
+ null,
+ {}
+ ]
+ ],
"recursive-exec-command-calls.tentative.html": [
"60a3b03099f358cf88e8e10c67347d9322cc9124",
[
@@ -582480,6 +584903,15 @@
{}
]
],
+ "selection-change-not-fired-if-selection-set-to-root.html": [
+ "39e8b46e69b2c469b4b5d4ed40314bd67a2b3524",
+ [
+ null,
+ {
+ "testdriver": true
+ }
+ ]
+ ],
"setting-value-of-textcontrol-immediately-after-hidden.html": [
"f8a867f0782ae6d0066326aa58aec431a46e67db",
[
@@ -595940,6 +598372,15 @@
]
},
"event-timing": {
+ "TapToStopFling.html": [
+ "df309d6584c744a608080b8a5be6243160531d53",
+ [
+ null,
+ {
+ "testdriver": true
+ }
+ ]
+ ],
"auxclick.html": [
"b88328e2aa36715e8165c6eb277be49f7d189655",
[
@@ -596246,6 +598687,33 @@
}
]
],
+ "interactionid-keyboard-event-simulated-click-button-space.html": [
+ "d3ab5437f8e533a32fad8d327e5e1dd58d210574",
+ [
+ null,
+ {
+ "testdriver": true
+ }
+ ]
+ ],
+ "interactionid-keyboard-event-simulated-click-checkbox-space.html": [
+ "3dd8e21e784d7d8970e2fdfba4d4e146ce32f968",
+ [
+ null,
+ {
+ "testdriver": true
+ }
+ ]
+ ],
+ "interactionid-keyboard-event-simulated-click-link-enter.html": [
+ "6945d2ff771976ea1a17ba66f427e51d840268d5",
+ [
+ null,
+ {
+ "testdriver": true
+ }
+ ]
+ ],
"interactionid-keypress.html": [
"a6f200996714f473056a69e849837fffb1792dca",
[
@@ -598281,7 +600749,7 @@
]
],
"fedcm-disconnect-iframe.sub.https.html": [
- "275a4a55c5efe5c17bc1dfe417c098a9ac19b166",
+ "1587ef5f8be1d4ba75074b82cd758824669fd93a",
[
null,
{
@@ -598326,7 +600794,7 @@
]
],
"fedcm-identity-assertion-nocors.https.html": [
- "ae89f51ab4ef22ee1a9c9340a26270dff6d396ec",
+ "79da95d50061d5274811b067a5e1be116edb680b",
[
null,
{
@@ -598335,7 +600803,7 @@
]
],
"fedcm-iframe.https.html": [
- "6a9bec677cc67e07fd25de0d3f3c9d7ea9d7580f",
+ "2c63a9973b2908a35508ffafaa576bd74cb781a0",
[
null,
{
@@ -598538,17 +601006,15 @@
}
]
],
- "fedcm-same-site-none": {
- "fedcm-same-site-none.https.html": [
- "d3d20ea9df270cc23c48f7f709c9cc21bab7990e",
- [
- null,
- {
- "testdriver": true
- }
- ]
+ "fedcm-same-site-none.https.html": [
+ "e4a9e3c41463411e158aa4eb0f92d958dcade4a2",
+ [
+ null,
+ {
+ "testdriver": true
+ }
]
- },
+ ],
"fedcm-store.https.html": [
"d1e6ef464c4f3eb8e2d4118d1a5e2dc498410e05",
[
@@ -598577,7 +601043,25 @@
]
],
"fedcm-userinfo.https.html": [
- "d256f685f7c8f90402a7505b4d9343ad1b1c9fa3",
+ "ea0db0b69f9a5cc6459e2259f3c5272876b72b9e",
+ [
+ null,
+ {
+ "testdriver": true
+ }
+ ]
+ ],
+ "lfedcm-identity.create-store-collect.tentative.sub.https.html": [
+ "9cc7278d375e38d6c176192174d9becfbce459c6",
+ [
+ null,
+ {
+ "testdriver": true
+ }
+ ]
+ ],
+ "lfedcm-identity.discovery.tentative.sub.https.html": [
+ "2d5e8e8db476e226722da1f5b041165e9b560e3e",
[
null,
{
@@ -598594,6 +601078,17 @@
{}
]
],
+ "allow-attribute-src.https.html": [
+ "1cf53a1db3c904afcc8141f9106f6834ad6918f1",
+ [
+ "fenced-frame/allow-attribute-src.https.html?type=fencedframe",
+ {}
+ ],
+ [
+ "fenced-frame/allow-attribute-src.https.html?type=iframe",
+ {}
+ ]
+ ],
"ancestor-throttle.https.html": [
"679bb7881327ccda0abfb1d28e22b60a378c72d4",
[
@@ -599108,7 +601603,7 @@
]
],
"document-activeelement.https.html": [
- "3ac1fd866fc58c7bc957054976cf70baa92eacf6",
+ "4f5bbb67655fe1d87bff78f6830e3ac12d8ce750",
[
null,
{
@@ -599595,6 +602090,15 @@
}
]
],
+ "notify-event-prevent-caching.https.html": [
+ "872bab5b87280469813305ee37450117a92161c8",
+ [
+ null,
+ {
+ "testdriver": true
+ }
+ ]
+ ],
"notify-event-success.https.html": [
"76ed9abbfa05cabdd6540363d0af4dfcc72900c5",
[
@@ -625171,6 +627675,15 @@
{}
]
],
+ "activeelement-after-nested-loses-focus.html": [
+ "fbbec9b9cd55d49122ae4c1030cce9376705c143",
+ [
+ null,
+ {
+ "testdriver": true
+ }
+ ]
+ ],
"ancestor-activeelement-after-child-lose-focus.html": [
"38f31d64ae7d7d0b3a36ed9e49a1570eaffd5f34",
[
@@ -626656,19 +629169,198 @@
{}
]
],
- "FileSystemObserver.https.tentative.window.js": [
- "2b9f7ca7c78471c001222d57e9daa1e6cce68508",
+ "FileSystemObserver-sync-access-handle.https.tentative.worker.js": [
+ "e21a3dd39040558056bd09afd5465c22569d99bc",
+ [
+ "fs/FileSystemObserver-sync-access-handle.https.tentative.worker.html",
+ {}
+ ]
+ ],
+ "FileSystemObserver-unsupported-global.https.tentative.any.js": [
+ "adafe7d9dc067b658c6acd4fb0d98418b4f7874c",
+ [
+ "fs/FileSystemObserver-unsupported-global.https.tentative.any.serviceworker.html",
+ {
+ "script_metadata": [
+ [
+ "global",
+ "serviceworker"
+ ]
+ ]
+ }
+ ]
+ ],
+ "FileSystemObserver-writable-file-stream.https.tentative.any.js": [
+ "9c030fb54716777d3ba73c9f4a18da41f39514c6",
[
- "fs/FileSystemObserver.https.tentative.window.html",
+ "fs/FileSystemObserver-writable-file-stream.https.tentative.any.html",
{
"script_metadata": [
[
+ "global",
+ "window,dedicatedworker,sharedworker"
+ ],
+ [
"script",
- "/service-workers/service-worker/resources/test-helpers.sub.js"
+ "resources/sandboxed-fs-test-helpers.js"
],
[
"script",
- "resources/messaging-helpers.js"
+ "resources/test-helpers.js"
+ ],
+ [
+ "script",
+ "resources/collecting-file-system-observer.js"
+ ],
+ [
+ "script",
+ "script-tests/FileSystemObserver-writable-file-stream.js"
+ ]
+ ]
+ }
+ ],
+ [
+ "fs/FileSystemObserver-writable-file-stream.https.tentative.any.sharedworker.html",
+ {
+ "script_metadata": [
+ [
+ "global",
+ "window,dedicatedworker,sharedworker"
+ ],
+ [
+ "script",
+ "resources/sandboxed-fs-test-helpers.js"
+ ],
+ [
+ "script",
+ "resources/test-helpers.js"
+ ],
+ [
+ "script",
+ "resources/collecting-file-system-observer.js"
+ ],
+ [
+ "script",
+ "script-tests/FileSystemObserver-writable-file-stream.js"
+ ]
+ ]
+ }
+ ],
+ [
+ "fs/FileSystemObserver-writable-file-stream.https.tentative.any.worker.html",
+ {
+ "script_metadata": [
+ [
+ "global",
+ "window,dedicatedworker,sharedworker"
+ ],
+ [
+ "script",
+ "resources/sandboxed-fs-test-helpers.js"
+ ],
+ [
+ "script",
+ "resources/test-helpers.js"
+ ],
+ [
+ "script",
+ "resources/collecting-file-system-observer.js"
+ ],
+ [
+ "script",
+ "script-tests/FileSystemObserver-writable-file-stream.js"
+ ]
+ ]
+ }
+ ]
+ ],
+ "FileSystemObserver.https.tentative.any.js": [
+ "992e73246ccc630a8c55586f4e0d27e82eed1bce",
+ [
+ "fs/FileSystemObserver.https.tentative.any.html",
+ {
+ "script_metadata": [
+ [
+ "global",
+ "window,dedicatedworker,sharedworker"
+ ],
+ [
+ "script",
+ "resources/sandboxed-fs-test-helpers.js"
+ ],
+ [
+ "script",
+ "resources/test-helpers.js"
+ ],
+ [
+ "script",
+ "resources/collecting-file-system-observer.js"
+ ],
+ [
+ "script",
+ "resources/change-observer-scope-test.js"
+ ],
+ [
+ "script",
+ "script-tests/FileSystemObserver.js"
+ ]
+ ]
+ }
+ ],
+ [
+ "fs/FileSystemObserver.https.tentative.any.sharedworker.html",
+ {
+ "script_metadata": [
+ [
+ "global",
+ "window,dedicatedworker,sharedworker"
+ ],
+ [
+ "script",
+ "resources/sandboxed-fs-test-helpers.js"
+ ],
+ [
+ "script",
+ "resources/test-helpers.js"
+ ],
+ [
+ "script",
+ "resources/collecting-file-system-observer.js"
+ ],
+ [
+ "script",
+ "resources/change-observer-scope-test.js"
+ ],
+ [
+ "script",
+ "script-tests/FileSystemObserver.js"
+ ]
+ ]
+ }
+ ],
+ [
+ "fs/FileSystemObserver.https.tentative.any.worker.html",
+ {
+ "script_metadata": [
+ [
+ "global",
+ "window,dedicatedworker,sharedworker"
+ ],
+ [
+ "script",
+ "resources/sandboxed-fs-test-helpers.js"
+ ],
+ [
+ "script",
+ "resources/test-helpers.js"
+ ],
+ [
+ "script",
+ "resources/collecting-file-system-observer.js"
+ ],
+ [
+ "script",
+ "resources/change-observer-scope-test.js"
],
[
"script",
@@ -627318,6 +630010,15 @@
}
]
],
+ "element-request-fullscreen-without-user-activation.tentative.https.html": [
+ "4315ba2118730072641fd24a96c354e556130841",
+ [
+ null,
+ {
+ "testdriver": true
+ }
+ ]
+ ],
"element-request-fullscreen.html": [
"fd9f249551551a9c5e800ee346eddc4182699dbd",
[
@@ -673100,7 +675801,7 @@
]
],
"image-decode-path-changes.html": [
- "4b878c1bae2af4e104b6073832990ec8a84982b7",
+ "72e27af296c17e9d898ba31132d0db22c72defb8",
[
null,
{
@@ -673136,7 +675837,7 @@
]
],
"image-decode-with-quick-attach.html": [
- "be680da619e8dd75f57d454268a528eba7d0d6c2",
+ "2d18789896b201e150cfd0b7f88344e86ef8e5c7",
[
null,
{
@@ -673182,6 +675883,13 @@
{}
]
],
+ "empty-src-no-current-request.html": [
+ "443da20bd6d008ddc163d6203a0581bd0ff9dc51",
+ [
+ null,
+ {}
+ ]
+ ],
"environment-changes": {
"viewport-change.html": [
"f6ae65708c661c5ff1a957c3a8606d75a44827fb",
@@ -673676,6 +676384,13 @@
]
],
"update-the-image-data": {
+ "current-request-microtask-002.html": [
+ "a843f2228223b4c05e1b752a557ddb2fd29de4c1",
+ [
+ null,
+ {}
+ ]
+ ],
"current-request-microtask.html": [
"125b37eadb4b793425814bf30052e3e5fb0b3f68",
[
@@ -676156,7 +678871,7 @@
]
],
"select-datalist-popover-behavior.tentative.html": [
- "caea2a2f8db1d863cc05ac541064f8b76dad3788",
+ "2853a09bad4f9220807ff334e35de33af8a9f267",
[
null,
{
@@ -676165,7 +678880,7 @@
]
],
"select-keyboard-behavior.tentative.html": [
- "8b06212169793e06e33c1bc972e965f3d77c8861",
+ "ff27aeb3a99ba150809d47fdf92a7bbd143a1701",
[
null,
{
@@ -676175,7 +678890,7 @@
]
],
"select-mouse-behavior.tentative.html": [
- "aff976d1ad5c704e4ece24fe524244b119bee106",
+ "b5d5c3fd1bb2c3fc381dea505ca01ca51b2bdaff",
[
null,
{
@@ -676200,7 +678915,7 @@
]
],
"selectedoption.tentative.html": [
- "16d711515c931cf2163f3d9ac372ce816a6b7d6c",
+ "ad006a8b38e038fedb3ee612f9944365cdbf17e3",
[
null,
{
@@ -676270,13 +678985,6 @@
}
]
],
- "selectlist-form-state-restore.tentative.html": [
- "f98494a950719ef94d8b91f525659cb68682d813",
- [
- null,
- {}
- ]
- ],
"selectlist-form-submission.tentative.html": [
"4b5e4970287b4df5bfd0c516f0e116fe68ddd77d",
[
@@ -676363,15 +679071,6 @@
}
]
],
- "selectlist-popover.tentative.html": [
- "a26d0266496d01294e667fc9007d277fa46ba3b3",
- [
- null,
- {
- "testdriver": true
- }
- ]
- ],
"selectlist-pseudo-light-dismiss-invalidation.tentative.html": [
"bda5842a37c4bdd8484a39ec0b10b6ed63384816",
[
@@ -676764,7 +679463,7 @@
]
],
"child-sequential-focus.html": [
- "bc787202cf53522188238b9bc7db6537a7533100",
+ "84853fc216965037e5c84f1ed5e1c169654ebb79",
[
null,
{}
@@ -682299,6 +684998,13 @@
{}
]
],
+ "remove-src-attr-prepare-a-script.html": [
+ "7caacb5917c921bac9083a41277e3dcd03075df8",
+ [
+ null,
+ {}
+ ]
+ ],
"script-charset-01.html": [
"c5ac0d0a62a048a55d091935cb6ea733e52a5b82",
[
@@ -688556,7 +691262,16 @@
]
],
"roles-contextual.html": [
- "200fed7e75329b266118b69b2f092395960ff4bd",
+ "4edcc12e8f269c47f951b3c77027fcb733544bad",
+ [
+ null,
+ {
+ "testdriver": true
+ }
+ ]
+ ],
+ "roles-contextual.tentative.html": [
+ "0f918b24c700c31f399a015d7e0219c3e112640a",
[
null,
{
@@ -690426,6 +693141,19 @@
{}
]
]
+ },
+ "webdriver": {
+ "bidi": {
+ "subscription.html": [
+ "056c2e5f77fb9593c0e8c9d9a09c5afc853856d9",
+ [
+ null,
+ {
+ "testdriver": true
+ }
+ ]
+ ]
+ }
}
},
"input-device-capabilities": {
@@ -690454,6 +693182,13 @@
]
},
"input-events": {
+ "contenteditable-insertfrompaste-type-inputevent-data.html": [
+ "ab4cce7da302af708cf2c1c9862e8cc87b662cea",
+ [
+ null,
+ {}
+ ]
+ ],
"idlharness.window.js": [
"3a9a34837e88971c625aadfa378dd1386be8a7cd",
[
@@ -690695,6 +693430,13 @@
"testdriver": true
}
]
+ ],
+ "textarea-insertfrompaste-type-inputevent-data.html": [
+ "277e598238446fa7c5f66361fe9b86df28b9ee59",
+ [
+ null,
+ {}
+ ]
]
},
"installedapp": {
@@ -692376,6 +695118,36 @@
]
]
},
+ "language_detection": {
+ "canDetect.tentative.window.js": [
+ "a69d1787fb802d78fde4a693ab094e956682b195",
+ [
+ "language_detection/canDetect.tentative.window.html",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "canDetect"
+ ]
+ ]
+ }
+ ]
+ ],
+ "detect-en.tentative.window.js": [
+ "b4494d460d951eabcab4603d171db302dc0ec92d",
+ [
+ "language_detection/detect-en.tentative.window.html",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "Detect english"
+ ]
+ ]
+ }
+ ]
+ ]
+ },
"largest-contentful-paint": {
"animated": {
"observe-animated-image-gif.tentative.html": [
@@ -694939,6 +697711,13 @@
null,
{}
]
+ ],
+ "mpadded-rendering-from-in-flow.html": [
+ "3275b774f796a45a872d9362b4c552e76a4afe3f",
+ [
+ null,
+ {}
+ ]
]
},
"mrow": {
@@ -695020,7 +697799,7 @@
]
],
"stretch-along-block-axis-001.html": [
- "31385f5388017078047481a3235c51a04e835dc8",
+ "477fa27ebe77f1dec3f708bc99c65e2829c1059a",
[
null,
{}
@@ -695442,6 +698221,13 @@
{}
]
],
+ "scripts-rendering-from-in-flow.html": [
+ "84099cad0906f74372ab67be73342c9ff6554cc0",
+ [
+ null,
+ {}
+ ]
+ ],
"subsup-1.html": [
"1117e1008e2fee7a896613de156a77c2f2081154",
[
@@ -695642,6 +698428,15 @@
{}
]
]
+ },
+ "tokens": {
+ "tokens-rendering-from-in-flow.html": [
+ "ccc0f25452ddd16eda7b4473e3d74d4218043a0d",
+ [
+ null,
+ {}
+ ]
+ ]
}
},
"relations": {
@@ -698209,6 +701004,15 @@
}
]
],
+ "GUM-permissions-query.https.html": [
+ "877b901705dc37f7c9ab5c295e886619b395d015",
+ [
+ null,
+ {
+ "testdriver": true
+ }
+ ]
+ ],
"GUM-required-constraint-with-ideal-value.https.html": [
"7f234c5c7448e940c85079fd552a008d4431ef12",
[
@@ -701864,6 +704668,21 @@
{}
]
],
+ "navigate-relative-url-utf8.html": [
+ "22c723fd3bc28e316856b2eb034edce0e3d49afc",
+ [
+ "navigation-api/navigation-methods/navigate-relative-url-utf8.html?encoding=utf8",
+ {}
+ ],
+ [
+ "navigation-api/navigation-methods/navigate-relative-url-utf8.html?encoding=windows-1252",
+ {}
+ ],
+ [
+ "navigation-api/navigation-methods/navigate-relative-url-utf8.html?encoding=x-cp1251",
+ {}
+ ]
+ ],
"navigate-relative-url.html": [
"cc95d5e003826b0a309b647107a30d0054a01285",
[
@@ -706996,7 +709815,7 @@
},
"permissions": {
"all-permissions.html": [
- "9ad014bc6e2c9785ce05bbeb364f286e07d168e3",
+ "76d45279b7ce5255593e4c568e816ad705fc4e97",
[
null,
{}
@@ -708626,6 +711445,15 @@
}
]
],
+ "pointerevent-boundary-event-target-when-hover-generates-content-under-pointer.html": [
+ "3cbed96c8675d01bfa9bf6a2c8f45dc099dbf8c1",
+ [
+ null,
+ {
+ "testdriver": true
+ }
+ ]
+ ],
"pointerevent_after_target_appended.html": [
"a5cb82088e85a548159a8c0ab7700700fa10b4cd",
[
@@ -708915,7 +711743,7 @@
]
],
"pointerevent_click_is_a_pointerevent.html": [
- "ceaae68db213b248afef4a80991721c2c12e30c3",
+ "9087a42436e0c82f519a2427999f4b5a7edf502f",
[
"pointerevents/pointerevent_click_is_a_pointerevent.html?mouse",
{
@@ -710685,21 +713513,21 @@
},
"private-aggregation": {
"private-aggregation-permissions-policy-default.https.sub.html": [
- "81e0c241184b6b43d5c00bcc51ff1cd5e59a5d15",
+ "3deb607705152249d3072d932b2f50adcad311a8",
[
null,
{}
]
],
"private-aggregation-permissions-policy-none.https.sub.html": [
- "a10efe95c4bb7fe0406e028f4aeebce940ff0ff8",
+ "92fd2d5f360958b8ba2821250c3b42e80806a433",
[
null,
{}
]
],
"private-aggregation-permissions-policy-self.https.sub.html": [
- "0ec4c6b400dd6519f45acd96f03fff3632d6d51b",
+ "56b98356548e332f71b67f2f7ad76885efce803b",
[
null,
{}
@@ -726992,7 +729820,7 @@
]
],
"animation-shorthand.html": [
- "b128b33dd8b20edefdd46a2349f9edc09e9b1f6e",
+ "144fc5773fd5c75af30d74775a75ec9e7e478396",
[
null,
{}
@@ -727892,8 +730720,17 @@
}
},
"scroll-to-text-fragment": {
+ "drag-selection-over-target-text.html": [
+ "f7b3c4c7f4d409b908498d5d05708808a88728cd",
+ [
+ null,
+ {
+ "testdriver": true
+ }
+ ]
+ ],
"find-range-from-text-directive.html": [
- "229f082747b4ca32ce5724e2785269789b2d016f",
+ "bc34b60fe7f8eefe2c46266956c45c5fa4311a99",
[
null,
{
@@ -728072,7 +730909,7 @@
]
],
"sequential-focus.html": [
- "30b467f1ecd1a59e275c20a17c4e2928a07a5dc4",
+ "79b013ca229c66cfb486de1a39f4dd0d7e5a7d88",
[
null,
{
@@ -728702,6 +731539,13 @@
{}
]
],
+ "move-paragraphboundary-cross-editing-boundary.tentative.html": [
+ "552b8aecb66e8f2369e1b6800d0d9273f7a86788",
+ [
+ null,
+ {}
+ ]
+ ],
"move-selection-range-into-different-root.tentative.html": [
"d6e4ccda257212e580768fb00d26ce15c2fb9cf3",
[
@@ -728762,8 +731606,15 @@
}
]
],
+ "selection-content-visibility-hidden.html": [
+ "a44b23f6b76f98986b0bb9deeaa79dc2c7072c1f",
+ [
+ null,
+ {}
+ ]
+ ],
"selection-nested-video.html": [
- "9777d7d99272e144bcc535d11ab72d01d615d6b1",
+ "7565665a7c8abbaec47f3720cb37e13b64aa6cdf",
[
null,
{}
@@ -728814,7 +731665,7 @@
]
],
"shadow-dom": {
- "select-later-become-slotted-content.html": [
+ "select-later-become-slotted-content.tentative.html": [
"f38105dd0bb32e609bb67c5c625f435e87ef3ebc",
[
null,
@@ -728952,7 +731803,7 @@
]
],
"sandboxed_iframe.https.window.js": [
- "f6d7abad103bd5515cfba8830d4967e9e302e625",
+ "763cdefa0671b60b2f7b0ca98087e7a26b5d3de3",
[
"serial/requestPort/sandboxed_iframe.https.window.html",
{}
@@ -733474,6 +736325,15 @@
{}
]
],
+ "selection.html": [
+ "62509317667757bb9f58475daba90bebb134f0ee",
+ [
+ null,
+ {
+ "testdriver": true
+ }
+ ]
+ ],
"window-frames.html": [
"5ba2531ff26a27f6309bce11d488d2ff77f563f3",
[
@@ -733519,8 +736379,15 @@
}
]
],
+ "selection-getComposedRanges-collapsed.tentative.html": [
+ "6af01fd8e0f2a3d070986aab3ac5986f95162328",
+ [
+ null,
+ {}
+ ]
+ ],
"selection-getComposedRanges.tentative.html": [
- "983328693c6c32b5b0ca8454b626017550868bc4",
+ "9d5fa7616272503bd959df1844e5dac98e6dae67",
[
null,
{}
@@ -734264,8 +737131,22 @@
]
},
"shared-storage": {
+ "add-module-cross-origin-script.tentative.https.sub.html": [
+ "6ac73bdeddca7f63e8a4ea5142e50ab2f0dfd690",
+ [
+ null,
+ {}
+ ]
+ ],
+ "add-module-or-create-worklet-with-data-url.tentative.https.sub.html": [
+ "548165073342e0035ecf503a396f55bace921235",
+ [
+ null,
+ {}
+ ]
+ ],
"add-module.tentative.https.sub.html": [
- "7859e750c96d7c54bb679f5b66c43b5362713e47",
+ "33ff70d1145e32ece4e083239c7b25c36fc2ed48",
[
null,
{}
@@ -734302,21 +737183,21 @@
]
],
"cross-origin-create-worklet-credentials-include.tentative.https.sub.html": [
- "4c0e91c15613f5388e80fe2a9c57592058933e86",
+ "3b73f92d3117595bdd2846f55b5e87684522fb79",
[
null,
{}
]
],
"cross-origin-create-worklet-credentials-omit.tentative.https.sub.html": [
- "86b56ce80d6a1e87a68228f4bae4c41639b06ffa",
+ "4f23e2f8de3226f5f268b07e4079118595f3081f",
[
null,
{}
]
],
"cross-origin-create-worklet-credentials-same-origin.tentative.https.sub.html": [
- "0b8faad7830019e011fe5697cb8c8c46feab5f56",
+ "bda5da10dbecb62a6e72dee199402b2cea838b6a",
[
null,
{}
@@ -734329,29 +737210,29 @@
{}
]
],
- "cross-origin-create-worklet-failure-false-shared-storage-cross-origin-worklet-allowed.tentative.https.sub.html": [
- "db361776f638731401883e8605c5e4f9d2a28411",
+ "cross-origin-create-worklet-failure-missing-access-control-allow-credentials.tentative.https.sub.html": [
+ "49ffe8e84264ce6f34469fdf3ce5a45bc3f5637e",
[
null,
{}
]
],
- "cross-origin-create-worklet-failure-missing-access-control-allow-credentials.tentative.https.sub.html": [
- "8887aad64dc72e5e36fc254c8a6b4221d4f0ef6b",
+ "cross-origin-create-worklet-failure-missing-access-control-allow-origin.tentative.https.sub.html": [
+ "e3154fd191e512e01cae6d4a8b1686d8f07c6a00",
[
null,
{}
]
],
- "cross-origin-create-worklet-failure-missing-access-control-allow-origin.tentative.https.sub.html": [
- "58a2f3a77bbfb402f425be9c8a7262a9e65a3df4",
+ "cross-origin-create-worklet-false-shared-storage-cross-origin-worklet-allowed.tentative.https.sub.html": [
+ "0b8f8b9e23d77f874375bc6eb35dfdb9d8c52e9b",
[
null,
{}
]
],
- "cross-origin-create-worklet-failure-missing-shared-storage-cross-origin-worklet-allowed.tentative.https.sub.html": [
- "5b140a8141c96473af0ba4e5135bd5099094359d",
+ "cross-origin-create-worklet-missing-shared-storage-cross-origin-worklet-allowed.tentative.https.sub.html": [
+ "fe7333a6360bef0a25bdfeb0e93c231df4f210e5",
[
null,
{}
@@ -734365,7 +737246,7 @@
]
],
"cross-origin-worklet-select-url-and-verify-data-origin.tentative.https.sub.html": [
- "5b6b9d5f8f5b5e04f89a651eb88e344dae8e957b",
+ "bc78433d8e90602e8f4b93e85df54012dcc19447",
[
null,
{}
@@ -734491,21 +737372,21 @@
]
],
"select-url-permissions-policy-default.tentative.https.sub.html": [
- "a5be825d0e80f776127c58bcf0f43e5538c489a7",
+ "6bb6dde4a07681dbc7bfd44a23ca037f4a9795bd",
[
null,
{}
]
],
"select-url-permissions-policy-none.tentative.https.sub.html": [
- "6b48036fadb0820d445ecac4d98021237b31d795",
+ "caaa1285e7649853056b909cccfb80f4da970fb3",
[
null,
{}
]
],
"select-url-permissions-policy-self.tentative.https.sub.html": [
- "71d5653a2d180083fea0ba7ff567cab8c3697db7",
+ "86414c2c9daacc98e2d3fa001d61969ca4716e91",
[
null,
{}
@@ -734542,28 +737423,28 @@
]
],
"shared-storage-in-sandboxed-iframe.tentative.https.html": [
- "537f2e99d3850ad51318b9654e67fe579076a882",
+ "c0accefc4971b4d7dab16ccab4cbafe6902414d8",
[
null,
{}
]
],
"shared-storage-permissions-policy-default.tentative.https.sub.html": [
- "d0ff76a61efd17d498bcef4d19dcc2c32f3357f2",
+ "a0560765414af3fceec3eaed8fda053b625babce",
[
null,
{}
]
],
"shared-storage-permissions-policy-none.tentative.https.sub.html": [
- "c3cd3b1b47851ddecc42cf140f98deef7dd5136e",
+ "e23174d6b96037b9d7f23c9556b0845fc41611cf",
[
null,
{}
]
],
"shared-storage-permissions-policy-self.tentative.https.sub.html": [
- "9c45e86b67ab88b432367de86519b918a3cd82b0",
+ "e976be94335d6da97628eb1e3d62183d386be79c",
[
null,
{}
@@ -734768,21 +737649,21 @@
},
"shared-storage-selecturl-limit": {
"run-url-selection-operation-limit-multiple-sites.tentative.https.sub.html": [
- "b71c368704bb9ca2bb7878fbbb6f37264c8dfa73",
+ "bc27ccae485173901bd4fb8609d6d730507a6282",
[
null,
{}
]
],
"run-url-selection-operation-limit.tentative.https.sub.html": [
- "b8f8d5a4bf00f536ce5828aaaaca0a9e3348f352",
+ "5989aa160bc956de2c2d30544482c88939a6a1e3",
[
null,
{}
]
],
"select-url-limit-multiple-worklets.tentative.https.sub.html": [
- "c0eedc6f5fa537ccd3c7ab0087e8b519a0800b47",
+ "62cbe7a90ffa04fffe34280d37a4add6409a8365",
[
null,
{}
@@ -736930,7 +739811,7 @@
]
],
"no-vary-search.https.html": [
- "dc47ff7ca2123bd609e5814c3a5e80b171b54080",
+ "3e7cffda1dded94afe1ed103a2816404d0fd54d4",
[
"speculation-rules/prerender/no-vary-search.https.html?1-1",
{
@@ -739451,7 +742332,7 @@
]
],
"requestStorageAccess-sandboxed-iframe-allow-storage-access.sub.https.window.js": [
- "a631b981a6435c639abddb6c9ea768f92b131ab0",
+ "9d7927037573289b16befb5eeadfd838cd4dd433",
[
"storage-access-api/requestStorageAccess-sandboxed-iframe-allow-storage-access.sub.https.window.html",
{
@@ -739462,6 +742343,10 @@
],
[
"script",
+ "/cookies/resources/cookie-helper.sub.js"
+ ],
+ [
+ "script",
"/resources/testdriver.js"
],
[
@@ -739472,10 +742357,10 @@
}
]
],
- "requestStorageAccess-sandboxed-iframe.sub.https.window.js": [
- "e32a29601b35dd28f15c936a8bdae36492e66d27",
+ "requestStorageAccess-sandboxed-iframe-no-storage-access.sub.https.window.js": [
+ "db1d88fe0dceb7dbafbe13b836a443fd300caf11",
[
- "storage-access-api/requestStorageAccess-sandboxed-iframe.sub.https.window.html",
+ "storage-access-api/requestStorageAccess-sandboxed-iframe-no-storage-access.sub.https.window.html",
{
"script_metadata": [
[
@@ -739785,7 +742670,7 @@
]
],
"storage-access-permission.sub.https.window.js": [
- "56a5425722e79d5fc702ea6745604885a43ef667",
+ "2faec7b5fdbb1f4bf8e4b3aefe10acf16ac615bb",
[
"storage-access-api/storage-access-permission.sub.https.window.html",
{
@@ -743444,7 +746329,7 @@
]
],
"transfer-with-messageport.window.js": [
- "37f8c9df169607a4565f76d04c7cc56bc408af47",
+ "3bfe634a6e153d3a80a8a78ced9d1c2325c59daf",
[
"streams/transferable/transfer-with-messageport.window.html",
{}
@@ -749446,6 +752331,13 @@
{}
]
],
+ "Node-multiple-arguments-tt-enforced.html": [
+ "3a82c264ae4380caf410a79af0bc8ce14b1a6de2",
+ [
+ null,
+ {}
+ ]
+ ],
"Node-multiple-arguments.html": [
"64b04656d35ba922c528581975682fbd61b5e5a1",
[
@@ -749651,13 +752543,6 @@
{}
]
],
- "block-Node-multiple-arguments.html": [
- "c3e7671534e70b959b30c8ed9cc16429ee23c45d",
- [
- null,
- {}
- ]
- ],
"block-string-assignment-to-DOMParser-parseFromString.html": [
"dd912e6b8dea596141630d7b9d18ab6bbe8c9925",
[
@@ -749673,7 +752558,7 @@
]
],
"block-string-assignment-to-Document-parseHTMLUnsafe.html": [
- "83dfcda5d9215fa275e7946e9c771584c7300634",
+ "405da5f1643eccc0a22b31ff91a044ac6237843d",
[
null,
{}
@@ -754611,7 +757496,16 @@
]
],
"contextual-roles.html": [
- "ff5c073e95464da129aa8e4f809b6c69d76441c0",
+ "234f42bb7928bf930b49c9f5ff04d79397816507",
+ [
+ null,
+ {
+ "testdriver": true
+ }
+ ]
+ ],
+ "contextual-roles.tentative.html": [
+ "efec67b7ae57b5b177f131c5bf9feb70406b0a10",
[
null,
{
@@ -764466,7 +767360,7 @@
]
],
"public-key-credential-creation-options-from-json.https.window.js": [
- "fe2df1ef7fd434209c7eb2ebe09065784cc2db9e",
+ "b3882146f0c5fcf05740c39b622ea4e5a486d6e3",
[
"webauthn/public-key-credential-creation-options-from-json.https.window.html",
{
@@ -764492,7 +767386,7 @@
]
],
"public-key-credential-request-options-from-json.https.window.js": [
- "82e778b027d35733b456598c472c64ced0562e83",
+ "6bcfe03e4d9b1bd4e4742e931ce07e1891ff97d6",
[
"webauthn/public-key-credential-request-options-from-json.https.window.html",
{
@@ -771873,15 +774767,234 @@
},
"webnn": {
"conformance_tests": {
+ "abs.https.any.js": [
+ "ca9f3d3ca94fa02e51e58b0c9783ed63faf5d738",
+ [
+ "webnn/conformance_tests/abs.https.any.html?cpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise abs operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/abs.https.any.html?gpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise abs operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/abs.https.any.html?npu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise abs operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/abs.https.any.worker.html?cpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise abs operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/abs.https.any.worker.html?gpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise abs operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/abs.https.any.worker.html?npu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise abs operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ]
+ ],
"add.https.any.js": [
- "60fef8e0b4adb2521a150eacf5d5c8559a2d86d3",
+ "17c04d1d2c188d67d415f5347b839a866bf4d55f",
[
"webnn/conformance_tests/add.https.any.html?cpu",
{
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise add operation"
],
[
"global",
@@ -771917,7 +775030,7 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise add operation"
],
[
"global",
@@ -771953,7 +775066,7 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise add operation"
],
[
"global",
@@ -771989,7 +775102,7 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise add operation"
],
[
"global",
@@ -772025,7 +775138,7 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise add operation"
],
[
"global",
@@ -772061,7 +775174,7 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise add operation"
],
[
"global",
@@ -772093,7 +775206,7 @@
]
],
"arg_min_max.https.any.js": [
- "dd6cd6d9181abe7070e34376b678df6d5204f076",
+ "e730f5135e8a49d80324d24532ebcc862cd5ef62",
[
"webnn/conformance_tests/arg_min_max.https.any.html?cpu",
{
@@ -772312,7 +775425,7 @@
]
],
"batch_normalization.https.any.js": [
- "569881f94f6d058da35cfe051c1ab78d81f8b70c",
+ "08dda14db28e781db2defc683b9fc86964d3f30a",
[
"webnn/conformance_tests/batch_normalization.https.any.html?cpu",
{
@@ -772531,7 +775644,7 @@
]
],
"buffer.https.any.js": [
- "bc838ee7680cea828baa27b0dd1483573ff4188a",
+ "2242ccdc7a02d7b738be47ece400615d62dd4cb4",
[
"webnn/conformance_tests/buffer.https.any.html?cpu",
{
@@ -772774,7 +775887,7 @@
]
],
"cast.https.any.js": [
- "29f197a1aa6c20c053c79874606432cf9a4736d9",
+ "a4223736f612173e8fe76635ece98011515123ef",
[
"webnn/conformance_tests/cast.https.any.html?cpu",
{
@@ -772992,8 +776105,227 @@
}
]
],
+ "ceil.https.any.js": [
+ "2e490bd1ecb07110b4160a69a44da1d1cdc1769f",
+ [
+ "webnn/conformance_tests/ceil.https.any.html?cpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise ceil operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/ceil.https.any.html?gpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise ceil operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/ceil.https.any.html?npu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise ceil operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/ceil.https.any.worker.html?cpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise ceil operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/ceil.https.any.worker.html?gpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise ceil operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/ceil.https.any.worker.html?npu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise ceil operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ]
+ ],
"clamp.https.any.js": [
- "15777271872bc1e53c1845f358b6294e76d1439f",
+ "5ccbe3b8e64b824ef26a96115e17b22188d8c9c6",
[
"webnn/conformance_tests/clamp.https.any.html?cpu",
{
@@ -773212,7 +776544,7 @@
]
],
"compute-arraybufferview-with-bigger-arraybuffer.https.any.js": [
- "1380b604dac20d4cb0d12dac197503c4b34dd731",
+ "e1e647ee50cf49049ff5901403a328cee2983950",
[
"webnn/conformance_tests/compute-arraybufferview-with-bigger-arraybuffer.https.any.html?cpu",
{
@@ -773401,7 +776733,7 @@
]
],
"concat.https.any.js": [
- "3898ee7d6d864dac33c48c446c6f44d019b0e7c1",
+ "6beb089e84efd8fce9f7dc6eb4b2ca8afa25646b",
[
"webnn/conformance_tests/concat.https.any.html?cpu",
{
@@ -773619,15 +776951,15 @@
}
]
],
- "constant.https.any.js": [
- "acc24e7772b4da85bb478c2ae1429a3e135b2f49",
+ "conv2d.https.any.js": [
+ "b3354728634a9bf5848f75ce1d13abd0a3375453",
[
- "webnn/conformance_tests/constant.https.any.html?cpu",
+ "webnn/conformance_tests/conv2d.https.any.html?cpu",
{
"script_metadata": [
[
"title",
- "test WebNN API constant"
+ "test WebNN API conv2d operation"
],
[
"global",
@@ -773658,12 +776990,12 @@
}
],
[
- "webnn/conformance_tests/constant.https.any.html?gpu",
+ "webnn/conformance_tests/conv2d.https.any.html?gpu",
{
"script_metadata": [
[
"title",
- "test WebNN API constant"
+ "test WebNN API conv2d operation"
],
[
"global",
@@ -773694,12 +777026,12 @@
}
],
[
- "webnn/conformance_tests/constant.https.any.html?npu",
+ "webnn/conformance_tests/conv2d.https.any.html?npu",
{
"script_metadata": [
[
"title",
- "test WebNN API constant"
+ "test WebNN API conv2d operation"
],
[
"global",
@@ -773730,12 +777062,12 @@
}
],
[
- "webnn/conformance_tests/constant.https.any.worker.html?cpu",
+ "webnn/conformance_tests/conv2d.https.any.worker.html?cpu",
{
"script_metadata": [
[
"title",
- "test WebNN API constant"
+ "test WebNN API conv2d operation"
],
[
"global",
@@ -773766,12 +777098,12 @@
}
],
[
- "webnn/conformance_tests/constant.https.any.worker.html?gpu",
+ "webnn/conformance_tests/conv2d.https.any.worker.html?gpu",
{
"script_metadata": [
[
"title",
- "test WebNN API constant"
+ "test WebNN API conv2d operation"
],
[
"global",
@@ -773802,12 +777134,12 @@
}
],
[
- "webnn/conformance_tests/constant.https.any.worker.html?npu",
+ "webnn/conformance_tests/conv2d.https.any.worker.html?npu",
{
"script_metadata": [
[
"title",
- "test WebNN API constant"
+ "test WebNN API conv2d operation"
],
[
"global",
@@ -773838,15 +777170,15 @@
}
]
],
- "conv2d.https.any.js": [
- "f6e5ec0fa1dabcb8492b9cc7d68fe605d5c09be4",
+ "conv_transpose2d.https.any.js": [
+ "a76f180b55667756bc09bb635488721b1c340e62",
[
- "webnn/conformance_tests/conv2d.https.any.html?cpu",
+ "webnn/conformance_tests/conv_transpose2d.https.any.html?cpu",
{
"script_metadata": [
[
"title",
- "test WebNN API conv2d operation"
+ "test WebNN API convTranspose2d operation"
],
[
"global",
@@ -773877,12 +777209,12 @@
}
],
[
- "webnn/conformance_tests/conv2d.https.any.html?gpu",
+ "webnn/conformance_tests/conv_transpose2d.https.any.html?gpu",
{
"script_metadata": [
[
"title",
- "test WebNN API conv2d operation"
+ "test WebNN API convTranspose2d operation"
],
[
"global",
@@ -773913,12 +777245,12 @@
}
],
[
- "webnn/conformance_tests/conv2d.https.any.html?npu",
+ "webnn/conformance_tests/conv_transpose2d.https.any.html?npu",
{
"script_metadata": [
[
"title",
- "test WebNN API conv2d operation"
+ "test WebNN API convTranspose2d operation"
],
[
"global",
@@ -773949,12 +777281,12 @@
}
],
[
- "webnn/conformance_tests/conv2d.https.any.worker.html?cpu",
+ "webnn/conformance_tests/conv_transpose2d.https.any.worker.html?cpu",
{
"script_metadata": [
[
"title",
- "test WebNN API conv2d operation"
+ "test WebNN API convTranspose2d operation"
],
[
"global",
@@ -773985,12 +777317,12 @@
}
],
[
- "webnn/conformance_tests/conv2d.https.any.worker.html?gpu",
+ "webnn/conformance_tests/conv_transpose2d.https.any.worker.html?gpu",
{
"script_metadata": [
[
"title",
- "test WebNN API conv2d operation"
+ "test WebNN API convTranspose2d operation"
],
[
"global",
@@ -774021,12 +777353,12 @@
}
],
[
- "webnn/conformance_tests/conv2d.https.any.worker.html?npu",
+ "webnn/conformance_tests/conv_transpose2d.https.any.worker.html?npu",
{
"script_metadata": [
[
"title",
- "test WebNN API conv2d operation"
+ "test WebNN API convTranspose2d operation"
],
[
"global",
@@ -774057,15 +777389,15 @@
}
]
],
- "conv_transpose2d.https.any.js": [
- "9e741a45d09f77a8c1ba6347dcafc0d1468126ae",
+ "cos.https.any.js": [
+ "5ad92e7014a8b826ddd7c622f1edb5d9a6a6fda0",
[
- "webnn/conformance_tests/conv_transpose2d.https.any.html?cpu",
+ "webnn/conformance_tests/cos.https.any.html?cpu",
{
"script_metadata": [
[
"title",
- "test WebNN API convTranspose2d operation"
+ "test WebNN API element-wise cos operation"
],
[
"global",
@@ -774096,12 +777428,12 @@
}
],
[
- "webnn/conformance_tests/conv_transpose2d.https.any.html?gpu",
+ "webnn/conformance_tests/cos.https.any.html?gpu",
{
"script_metadata": [
[
"title",
- "test WebNN API convTranspose2d operation"
+ "test WebNN API element-wise cos operation"
],
[
"global",
@@ -774132,12 +777464,12 @@
}
],
[
- "webnn/conformance_tests/conv_transpose2d.https.any.html?npu",
+ "webnn/conformance_tests/cos.https.any.html?npu",
{
"script_metadata": [
[
"title",
- "test WebNN API convTranspose2d operation"
+ "test WebNN API element-wise cos operation"
],
[
"global",
@@ -774168,12 +777500,12 @@
}
],
[
- "webnn/conformance_tests/conv_transpose2d.https.any.worker.html?cpu",
+ "webnn/conformance_tests/cos.https.any.worker.html?cpu",
{
"script_metadata": [
[
"title",
- "test WebNN API convTranspose2d operation"
+ "test WebNN API element-wise cos operation"
],
[
"global",
@@ -774204,12 +777536,12 @@
}
],
[
- "webnn/conformance_tests/conv_transpose2d.https.any.worker.html?gpu",
+ "webnn/conformance_tests/cos.https.any.worker.html?gpu",
{
"script_metadata": [
[
"title",
- "test WebNN API convTranspose2d operation"
+ "test WebNN API element-wise cos operation"
],
[
"global",
@@ -774240,12 +777572,12 @@
}
],
[
- "webnn/conformance_tests/conv_transpose2d.https.any.worker.html?npu",
+ "webnn/conformance_tests/cos.https.any.worker.html?npu",
{
"script_metadata": [
[
"title",
- "test WebNN API convTranspose2d operation"
+ "test WebNN API element-wise cos operation"
],
[
"global",
@@ -774277,14 +777609,14 @@
]
],
"div.https.any.js": [
- "65438e6c519de4bf56819cbfa4ec34a16cb3e49f",
+ "69183ee1097b1aacd36f863383fc5b846741e0a4",
[
"webnn/conformance_tests/div.https.any.html?cpu",
{
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise div operation"
],
[
"global",
@@ -774320,7 +777652,7 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise div operation"
],
[
"global",
@@ -774356,7 +777688,7 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise div operation"
],
[
"global",
@@ -774392,7 +777724,7 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise div operation"
],
[
"global",
@@ -774428,7 +777760,7 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise div operation"
],
[
"global",
@@ -774464,7 +777796,7 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise div operation"
],
[
"global",
@@ -774495,15 +777827,15 @@
}
]
],
- "elementwise_unary.https.any.js": [
- "54406005e89639c8f856830e9cc7d922c18c3c6b",
+ "elu.https.any.js": [
+ "75b982944ba972cd01fd7fe606a4e062511ec524",
[
- "webnn/conformance_tests/elementwise_unary.https.any.html?cpu",
+ "webnn/conformance_tests/elu.https.any.html?cpu",
{
"script_metadata": [
[
"title",
- "test WebNN API element-wise unary operations"
+ "test WebNN API elu operation"
],
[
"global",
@@ -774534,12 +777866,12 @@
}
],
[
- "webnn/conformance_tests/elementwise_unary.https.any.html?gpu",
+ "webnn/conformance_tests/elu.https.any.html?gpu",
{
"script_metadata": [
[
"title",
- "test WebNN API element-wise unary operations"
+ "test WebNN API elu operation"
],
[
"global",
@@ -774570,12 +777902,12 @@
}
],
[
- "webnn/conformance_tests/elementwise_unary.https.any.html?npu",
+ "webnn/conformance_tests/elu.https.any.html?npu",
{
"script_metadata": [
[
"title",
- "test WebNN API element-wise unary operations"
+ "test WebNN API elu operation"
],
[
"global",
@@ -774606,12 +777938,12 @@
}
],
[
- "webnn/conformance_tests/elementwise_unary.https.any.worker.html?cpu",
+ "webnn/conformance_tests/elu.https.any.worker.html?cpu",
{
"script_metadata": [
[
"title",
- "test WebNN API element-wise unary operations"
+ "test WebNN API elu operation"
],
[
"global",
@@ -774642,12 +777974,12 @@
}
],
[
- "webnn/conformance_tests/elementwise_unary.https.any.worker.html?gpu",
+ "webnn/conformance_tests/elu.https.any.worker.html?gpu",
{
"script_metadata": [
[
"title",
- "test WebNN API element-wise unary operations"
+ "test WebNN API elu operation"
],
[
"global",
@@ -774678,12 +778010,12 @@
}
],
[
- "webnn/conformance_tests/elementwise_unary.https.any.worker.html?npu",
+ "webnn/conformance_tests/elu.https.any.worker.html?npu",
{
"script_metadata": [
[
"title",
- "test WebNN API element-wise unary operations"
+ "test WebNN API elu operation"
],
[
"global",
@@ -774714,15 +778046,15 @@
}
]
],
- "elu.https.any.js": [
- "b16cf04b624290d85578a46014f750556cc65b10",
+ "equal.https.any.js": [
+ "c763786d4aff522f8be95750cd4f033490c1db90",
[
- "webnn/conformance_tests/elu.https.any.html?cpu",
+ "webnn/conformance_tests/equal.https.any.html?cpu",
{
"script_metadata": [
[
"title",
- "test WebNN API elu operation"
+ "test WebNN API element-wise equal operation"
],
[
"global",
@@ -774753,12 +778085,12 @@
}
],
[
- "webnn/conformance_tests/elu.https.any.html?gpu",
+ "webnn/conformance_tests/equal.https.any.html?gpu",
{
"script_metadata": [
[
"title",
- "test WebNN API elu operation"
+ "test WebNN API element-wise equal operation"
],
[
"global",
@@ -774789,12 +778121,12 @@
}
],
[
- "webnn/conformance_tests/elu.https.any.html?npu",
+ "webnn/conformance_tests/equal.https.any.html?npu",
{
"script_metadata": [
[
"title",
- "test WebNN API elu operation"
+ "test WebNN API element-wise equal operation"
],
[
"global",
@@ -774825,12 +778157,12 @@
}
],
[
- "webnn/conformance_tests/elu.https.any.worker.html?cpu",
+ "webnn/conformance_tests/equal.https.any.worker.html?cpu",
{
"script_metadata": [
[
"title",
- "test WebNN API elu operation"
+ "test WebNN API element-wise equal operation"
],
[
"global",
@@ -774861,12 +778193,12 @@
}
],
[
- "webnn/conformance_tests/elu.https.any.worker.html?gpu",
+ "webnn/conformance_tests/equal.https.any.worker.html?gpu",
{
"script_metadata": [
[
"title",
- "test WebNN API elu operation"
+ "test WebNN API element-wise equal operation"
],
[
"global",
@@ -774897,12 +778229,12 @@
}
],
[
- "webnn/conformance_tests/elu.https.any.worker.html?npu",
+ "webnn/conformance_tests/equal.https.any.worker.html?npu",
{
"script_metadata": [
[
"title",
- "test WebNN API elu operation"
+ "test WebNN API element-wise equal operation"
],
[
"global",
@@ -774933,15 +778265,15 @@
}
]
],
- "equal.https.any.js": [
- "4b8c6c646d8e764ed271b2238f3cdc5e5287c618",
+ "erf.https.any.js": [
+ "78fc81ea74a693f0ebe4a76bf186de007a427000",
[
- "webnn/conformance_tests/equal.https.any.html?cpu",
+ "webnn/conformance_tests/erf.https.any.html?cpu",
{
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise erf operation"
],
[
"global",
@@ -774972,12 +778304,12 @@
}
],
[
- "webnn/conformance_tests/equal.https.any.html?gpu",
+ "webnn/conformance_tests/erf.https.any.html?gpu",
{
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise erf operation"
],
[
"global",
@@ -775008,12 +778340,12 @@
}
],
[
- "webnn/conformance_tests/equal.https.any.html?npu",
+ "webnn/conformance_tests/erf.https.any.html?npu",
{
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise erf operation"
],
[
"global",
@@ -775044,12 +778376,12 @@
}
],
[
- "webnn/conformance_tests/equal.https.any.worker.html?cpu",
+ "webnn/conformance_tests/erf.https.any.worker.html?cpu",
{
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise erf operation"
],
[
"global",
@@ -775080,12 +778412,12 @@
}
],
[
- "webnn/conformance_tests/equal.https.any.worker.html?gpu",
+ "webnn/conformance_tests/erf.https.any.worker.html?gpu",
{
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise erf operation"
],
[
"global",
@@ -775116,12 +778448,231 @@
}
],
[
- "webnn/conformance_tests/equal.https.any.worker.html?npu",
+ "webnn/conformance_tests/erf.https.any.worker.html?npu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise erf operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ]
+ ],
+ "exp.https.any.js": [
+ "9d67712ee60cdf14584ad8c66a9df02d62fee822",
+ [
+ "webnn/conformance_tests/exp.https.any.html?cpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise exp operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/exp.https.any.html?gpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise exp operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/exp.https.any.html?npu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise exp operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/exp.https.any.worker.html?cpu",
{
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise exp operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/exp.https.any.worker.html?gpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise exp operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/exp.https.any.worker.html?npu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise exp operation"
],
[
"global",
@@ -775153,7 +778704,7 @@
]
],
"expand.https.any.js": [
- "1535bb76a9027572b3fa91e7b4c7074b7a2f1691",
+ "6f94795370fab10c825a74534ae2cbc3bf74eb15",
[
"webnn/conformance_tests/expand.https.any.html?cpu",
{
@@ -775371,8 +778922,227 @@
}
]
],
+ "floor.https.any.js": [
+ "4cca407cd4c3df4bba1e94a68ca2adbd97d26927",
+ [
+ "webnn/conformance_tests/floor.https.any.html?cpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise floor operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/floor.https.any.html?gpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise floor operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/floor.https.any.html?npu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise floor operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/floor.https.any.worker.html?cpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise floor operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/floor.https.any.worker.html?gpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise floor operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/floor.https.any.worker.html?npu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise floor operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ]
+ ],
"gather.https.any.js": [
- "68d33bbf748f6842283e401d13d5487fed88d64a",
+ "3befa3818fcef7abd4aaeb9d28bae84f53546940",
[
"webnn/conformance_tests/gather.https.any.html?cpu",
{
@@ -775591,7 +779361,7 @@
]
],
"gelu.https.any.js": [
- "67287c3ad3f1983b419e6b5f98126cd5577b5876",
+ "446c5bc4effb9727c3577b588f361952ba3ee0ae",
[
"webnn/conformance_tests/gelu.https.any.html?cpu",
{
@@ -775810,7 +779580,7 @@
]
],
"gemm.https.any.js": [
- "0af471753e049fe8984e9c047c3b1d9555914e49",
+ "70b2ecb5e1e72670eefa03994020bc13e41e87e4",
[
"webnn/conformance_tests/gemm.https.any.html?cpu",
{
@@ -776029,14 +779799,14 @@
]
],
"greater.https.any.js": [
- "8d642413e2952c3584ea066e9eb5fce555b0afad",
+ "e9a63b1682a69ca3ad988ed7e6bd377d7ad6589c",
[
"webnn/conformance_tests/greater.https.any.html?cpu",
{
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise greater operation"
],
[
"global",
@@ -776072,7 +779842,7 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise greater operation"
],
[
"global",
@@ -776108,7 +779878,7 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise greater operation"
],
[
"global",
@@ -776144,7 +779914,7 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise greater operation"
],
[
"global",
@@ -776180,7 +779950,7 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise greater operation"
],
[
"global",
@@ -776216,7 +779986,7 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise greater operation"
],
[
"global",
@@ -776248,14 +780018,14 @@
]
],
"greater_or_equal.https.any.js": [
- "676116aff6674b93bf6aec2fe83a956a88664be6",
+ "2f2f572eba3be796aa0a53a7b6b9888851ee62b1",
[
"webnn/conformance_tests/greater_or_equal.https.any.html?cpu",
{
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise greaterOrEqual operation"
],
[
"global",
@@ -776291,7 +780061,7 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise greaterOrEqual operation"
],
[
"global",
@@ -776327,7 +780097,7 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise greaterOrEqual operation"
],
[
"global",
@@ -776363,7 +780133,7 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise greaterOrEqual operation"
],
[
"global",
@@ -776399,7 +780169,7 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise greaterOrEqual operation"
],
[
"global",
@@ -776435,7 +780205,7 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise greaterOrEqual operation"
],
[
"global",
@@ -776467,7 +780237,7 @@
]
],
"hard_sigmoid.https.any.js": [
- "cfc726a57be26bca99b7c8857276dd0a86b82104",
+ "a5c4d3d6dee97d0ec23b81ea094d87945023720c",
[
"webnn/conformance_tests/hard_sigmoid.https.any.html?cpu",
{
@@ -776686,7 +780456,7 @@
]
],
"hard_swish.https.any.js": [
- "229e1b561083b852b26519e86b896dc222e14811",
+ "5459e5662e4f982d07b230420427f2a9028c0ff8",
[
"webnn/conformance_tests/hard_swish.https.any.html?cpu",
{
@@ -776904,8 +780674,227 @@
}
]
],
+ "identity.https.any.js": [
+ "ca4239145b142cb27d85f1ce89d5a910835e5168",
+ [
+ "webnn/conformance_tests/identity.https.any.html?cpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise identity operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/identity.https.any.html?gpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise identity operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/identity.https.any.html?npu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise identity operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/identity.https.any.worker.html?cpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise identity operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/identity.https.any.worker.html?gpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise identity operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/identity.https.any.worker.html?npu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise identity operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ]
+ ],
"instance_normalization.https.any.js": [
- "4c5d33bbf70cdec71a79c005c852e4c3f66f9976",
+ "5790b20d8e802543ed8a1697971de39d50081251",
[
"webnn/conformance_tests/instance_normalization.https.any.html?cpu",
{
@@ -777124,7 +781113,7 @@
]
],
"layer_normalization.https.any.js": [
- "f5bfb8c2cc82800a2602337f2af7e6290ddf660e",
+ "84b90ca2779e2027294a212a468b325bd5999bcc",
[
"webnn/conformance_tests/layer_normalization.https.any.html?cpu",
{
@@ -777343,7 +781332,7 @@
]
],
"leaky_relu.https.any.js": [
- "9012f02a5edf2de886f3c308659a23336de293a1",
+ "af4ac23e4444d2d654a04e062db602303e5e530c",
[
"webnn/conformance_tests/leaky_relu.https.any.html?cpu",
{
@@ -777562,14 +781551,14 @@
]
],
"lesser.https.any.js": [
- "246c3ed2c26c6bbd139efc963f2f0f331d13b2c3",
+ "f7200bc21d8a1d8b33c9f088c28f12a976228291",
[
"webnn/conformance_tests/lesser.https.any.html?cpu",
{
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise lesser operation"
],
[
"global",
@@ -777605,7 +781594,7 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise lesser operation"
],
[
"global",
@@ -777641,7 +781630,7 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise lesser operation"
],
[
"global",
@@ -777677,7 +781666,7 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise lesser operation"
],
[
"global",
@@ -777713,7 +781702,7 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise lesser operation"
],
[
"global",
@@ -777749,7 +781738,7 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise lesser operation"
],
[
"global",
@@ -777781,14 +781770,14 @@
]
],
"lesser_or_equal.https.any.js": [
- "75d60bd73ceedab60f827887acfcb2a69a5a71bf",
+ "fce69f611253b6a2410b5d5b268df43cac5b4f39",
[
"webnn/conformance_tests/lesser_or_equal.https.any.html?cpu",
{
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise lesserOrEqual operation"
],
[
"global",
@@ -777824,7 +781813,7 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise lesserOrEqual operation"
],
[
"global",
@@ -777860,7 +781849,7 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise lesserOrEqual operation"
],
[
"global",
@@ -777896,7 +781885,7 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise lesserOrEqual operation"
],
[
"global",
@@ -777932,7 +781921,7 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise lesserOrEqual operation"
],
[
"global",
@@ -777968,7 +781957,7 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise lesserOrEqual operation"
],
[
"global",
@@ -778000,7 +781989,7 @@
]
],
"linear.https.any.js": [
- "c011229db8f1f50f6ab3f7930d754984fb58f866",
+ "1f092303d6a497b69d8bd3ff22b5dcbe158d6b0d",
[
"webnn/conformance_tests/linear.https.any.html?cpu",
{
@@ -778218,15 +782207,234 @@
}
]
],
+ "log.https.any.js": [
+ "a8d5b006ebbb6ac9e8835adcc6433228274bee44",
+ [
+ "webnn/conformance_tests/log.https.any.html?cpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise log operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/log.https.any.html?gpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise log operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/log.https.any.html?npu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise log operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/log.https.any.worker.html?cpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise log operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/log.https.any.worker.html?gpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise log operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/log.https.any.worker.html?npu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise log operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ]
+ ],
"logical_not.https.any.js": [
- "db0cc4e8c607d3a8b55dfc9062e2696919cab4cf",
+ "51db74cd3ae2178c293d88b4b87dd1c1fbe2a15a",
[
"webnn/conformance_tests/logical_not.https.any.html?cpu",
{
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise logicalNot operation"
],
[
"global",
@@ -778262,7 +782470,7 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise logicalNot operation"
],
[
"global",
@@ -778298,7 +782506,7 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise logicalNot operation"
],
[
"global",
@@ -778334,7 +782542,7 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise logicalNot operation"
],
[
"global",
@@ -778370,7 +782578,7 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise logicalNot operation"
],
[
"global",
@@ -778406,7 +782614,7 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise logicalNot operation"
],
[
"global",
@@ -778438,7 +782646,7 @@
]
],
"matmul.https.any.js": [
- "50930d1b0f73102da00921e543a3f8e2ce86ef06",
+ "58410a6046327f9f7741f57b5a6f82ed3be43d87",
[
"webnn/conformance_tests/matmul.https.any.html?cpu",
{
@@ -778657,14 +782865,14 @@
]
],
"max.https.any.js": [
- "2281f3ed0a15a0f46f1e92de0f942c1fea81d70e",
+ "0c28b85994da6e6482b529477ea0d7517ae8d29c",
[
"webnn/conformance_tests/max.https.any.html?cpu",
{
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise max operation"
],
[
"global",
@@ -778700,7 +782908,7 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise max operation"
],
[
"global",
@@ -778736,7 +782944,7 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise max operation"
],
[
"global",
@@ -778772,7 +782980,7 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise max operation"
],
[
"global",
@@ -778808,7 +783016,7 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise max operation"
],
[
"global",
@@ -778844,7 +783052,7 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise max operation"
],
[
"global",
@@ -778876,14 +783084,14 @@
]
],
"min.https.any.js": [
- "5d12a1d7e2cb5b79012bf3b1f88191f96c24380e",
+ "2892bc1ec0f21fa893b0aac115bbdcd2412058b5",
[
"webnn/conformance_tests/min.https.any.html?cpu",
{
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise min operation"
],
[
"global",
@@ -778919,7 +783127,7 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise min operation"
],
[
"global",
@@ -778955,7 +783163,7 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise min operation"
],
[
"global",
@@ -778991,7 +783199,7 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise min operation"
],
[
"global",
@@ -779027,7 +783235,7 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise min operation"
],
[
"global",
@@ -779063,7 +783271,7 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise min operation"
],
[
"global",
@@ -779095,14 +783303,14 @@
]
],
"mul.https.any.js": [
- "94ead346449debe79f99d5a7589f22521a1baedf",
+ "d46a4d9074464d48076bb21a4b340262aa8e3725",
[
"webnn/conformance_tests/mul.https.any.html?cpu",
{
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise mul operation"
],
[
"global",
@@ -779138,7 +783346,7 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise mul operation"
],
[
"global",
@@ -779174,7 +783382,7 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise mul operation"
],
[
"global",
@@ -779210,7 +783418,7 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise mul operation"
],
[
"global",
@@ -779246,7 +783454,7 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise mul operation"
],
[
"global",
@@ -779282,7 +783490,226 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise mul operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ]
+ ],
+ "neg.https.any.js": [
+ "8ffe3623567206786e0a4785a75ea18ea9d1b7b9",
+ [
+ "webnn/conformance_tests/neg.https.any.html?cpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise neg operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/neg.https.any.html?gpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise neg operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/neg.https.any.html?npu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise neg operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/neg.https.any.worker.html?cpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise neg operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/neg.https.any.worker.html?gpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise neg operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/neg.https.any.worker.html?npu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise neg operation"
],
[
"global",
@@ -779314,7 +783741,7 @@
]
],
"pad.https.any.js": [
- "ec9c106e6330fe399c99e63d523f611b8f4c31ee",
+ "c05f18f83c2800fc5511eebf7116696982f55a61",
[
"webnn/conformance_tests/pad.https.any.html?cpu",
{
@@ -779533,7 +783960,7 @@
]
],
"parallel-compute.https.any.js": [
- "ea1b5dbdc44917b34c70a21d04498f9b6b6912d3",
+ "3b9c41276ad3cb9ef993fcf3184d5d3bf0c207ff",
[
"webnn/conformance_tests/parallel-compute.https.any.html?cpu",
{
@@ -779752,7 +784179,7 @@
]
],
"pooling.https.any.js": [
- "83eea50a12f0021027cc22334e2c712f31b00d97",
+ "9dfd6ba0ca4b4a2dbfd2448a947c9b13da4f00f6",
[
"webnn/conformance_tests/pooling.https.any.html?cpu",
{
@@ -779971,14 +784398,14 @@
]
],
"pow.https.any.js": [
- "c988e92d91775179eb429fbb463d3752eec347c9",
+ "3da766df69df6184d719789bcdfbb9ab8773d439",
[
"webnn/conformance_tests/pow.https.any.html?cpu",
{
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise pow operation"
],
[
"global",
@@ -780014,7 +784441,7 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise pow operation"
],
[
"global",
@@ -780050,7 +784477,7 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise pow operation"
],
[
"global",
@@ -780086,7 +784513,7 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise pow operation"
],
[
"global",
@@ -780122,7 +784549,7 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise pow operation"
],
[
"global",
@@ -780158,7 +784585,7 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise pow operation"
],
[
"global",
@@ -780190,7 +784617,7 @@
]
],
"prelu.https.any.js": [
- "3b4717663fa86ed33f38e09eade394f29b5a833a",
+ "4730d4e2d17ac5f694a9e6a69c1648a4c7740e33",
[
"webnn/conformance_tests/prelu.https.any.html?cpu",
{
@@ -780408,15 +784835,453 @@
}
]
],
- "reduction.https.any.js": [
- "f5247ee137c6bfd24140028a87bf60cd5081465c",
+ "reciprocal.https.any.js": [
+ "a97c00e2b996ba13b052a4ec79e2208ab5b2e384",
+ [
+ "webnn/conformance_tests/reciprocal.https.any.html?cpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise reciprocal operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/reciprocal.https.any.html?gpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise reciprocal operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/reciprocal.https.any.html?npu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise reciprocal operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/reciprocal.https.any.worker.html?cpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise reciprocal operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/reciprocal.https.any.worker.html?gpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise reciprocal operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/reciprocal.https.any.worker.html?npu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise reciprocal operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ]
+ ],
+ "reduce_l1.https.any.js": [
+ "f15de087cf0ae164569e93c26afd6525fe3e8c8a",
+ [
+ "webnn/conformance_tests/reduce_l1.https.any.html?cpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API reduction operations"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/reduce_l1.https.any.html?gpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API reduction operations"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/reduce_l1.https.any.html?npu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API reduction operations"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/reduce_l1.https.any.worker.html?cpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API reduction operations"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/reduce_l1.https.any.worker.html?gpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API reduction operations"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/reduce_l1.https.any.worker.html?npu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API reduction operations"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ]
+ ],
+ "reduce_l2.https.any.js": [
+ "7c1d45434620306203c05b2c9365e2caff4b1f70",
[
- "webnn/conformance_tests/reduction.https.any.html?cpu",
+ "webnn/conformance_tests/reduce_l2.https.any.html?cpu",
{
"script_metadata": [
[
"title",
- "test WebNN API reduction operation"
+ "test WebNN API reduction operations"
],
[
"global",
@@ -780447,12 +785312,12 @@
}
],
[
- "webnn/conformance_tests/reduction.https.any.html?gpu",
+ "webnn/conformance_tests/reduce_l2.https.any.html?gpu",
{
"script_metadata": [
[
"title",
- "test WebNN API reduction operation"
+ "test WebNN API reduction operations"
],
[
"global",
@@ -780483,12 +785348,12 @@
}
],
[
- "webnn/conformance_tests/reduction.https.any.html?npu",
+ "webnn/conformance_tests/reduce_l2.https.any.html?npu",
{
"script_metadata": [
[
"title",
- "test WebNN API reduction operation"
+ "test WebNN API reduction operations"
],
[
"global",
@@ -780519,12 +785384,12 @@
}
],
[
- "webnn/conformance_tests/reduction.https.any.worker.html?cpu",
+ "webnn/conformance_tests/reduce_l2.https.any.worker.html?cpu",
{
"script_metadata": [
[
"title",
- "test WebNN API reduction operation"
+ "test WebNN API reduction operations"
],
[
"global",
@@ -780555,12 +785420,12 @@
}
],
[
- "webnn/conformance_tests/reduction.https.any.worker.html?gpu",
+ "webnn/conformance_tests/reduce_l2.https.any.worker.html?gpu",
{
"script_metadata": [
[
"title",
- "test WebNN API reduction operation"
+ "test WebNN API reduction operations"
],
[
"global",
@@ -780591,12 +785456,1764 @@
}
],
[
- "webnn/conformance_tests/reduction.https.any.worker.html?npu",
+ "webnn/conformance_tests/reduce_l2.https.any.worker.html?npu",
{
"script_metadata": [
[
"title",
- "test WebNN API reduction operation"
+ "test WebNN API reduction operations"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ]
+ ],
+ "reduce_log_sum.https.any.js": [
+ "47a88732dedc937b32d58d548e8fea35676bf3d8",
+ [
+ "webnn/conformance_tests/reduce_log_sum.https.any.html?cpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API reduction operations"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/reduce_log_sum.https.any.html?gpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API reduction operations"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/reduce_log_sum.https.any.html?npu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API reduction operations"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/reduce_log_sum.https.any.worker.html?cpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API reduction operations"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/reduce_log_sum.https.any.worker.html?gpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API reduction operations"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/reduce_log_sum.https.any.worker.html?npu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API reduction operations"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ]
+ ],
+ "reduce_log_sum_exp.https.any.js": [
+ "5ba2e39307784618975c2cb1bbeba3a048d11fe0",
+ [
+ "webnn/conformance_tests/reduce_log_sum_exp.https.any.html?cpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API reduction operations"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/reduce_log_sum_exp.https.any.html?gpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API reduction operations"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/reduce_log_sum_exp.https.any.html?npu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API reduction operations"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/reduce_log_sum_exp.https.any.worker.html?cpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API reduction operations"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/reduce_log_sum_exp.https.any.worker.html?gpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API reduction operations"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/reduce_log_sum_exp.https.any.worker.html?npu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API reduction operations"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ]
+ ],
+ "reduce_max.https.any.js": [
+ "709b25b0ad311e4717cc1b857c1412d98617f9fe",
+ [
+ "webnn/conformance_tests/reduce_max.https.any.html?cpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API reduction operations"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/reduce_max.https.any.html?gpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API reduction operations"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/reduce_max.https.any.html?npu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API reduction operations"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/reduce_max.https.any.worker.html?cpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API reduction operations"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/reduce_max.https.any.worker.html?gpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API reduction operations"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/reduce_max.https.any.worker.html?npu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API reduction operations"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ]
+ ],
+ "reduce_mean.https.any.js": [
+ "21fa1a5102c703c4aaded366df4f30b19f83075f",
+ [
+ "webnn/conformance_tests/reduce_mean.https.any.html?cpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API reduction operations"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/reduce_mean.https.any.html?gpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API reduction operations"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/reduce_mean.https.any.html?npu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API reduction operations"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/reduce_mean.https.any.worker.html?cpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API reduction operations"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/reduce_mean.https.any.worker.html?gpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API reduction operations"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/reduce_mean.https.any.worker.html?npu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API reduction operations"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ]
+ ],
+ "reduce_min.https.any.js": [
+ "6cc38d6a0782ab8f5a7191b591776483a4fe73fc",
+ [
+ "webnn/conformance_tests/reduce_min.https.any.html?cpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API reduction operations"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/reduce_min.https.any.html?gpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API reduction operations"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/reduce_min.https.any.html?npu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API reduction operations"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/reduce_min.https.any.worker.html?cpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API reduction operations"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/reduce_min.https.any.worker.html?gpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API reduction operations"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/reduce_min.https.any.worker.html?npu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API reduction operations"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ]
+ ],
+ "reduce_product.https.any.js": [
+ "745f83b3ceabc47193762c0fdeca2df2a519e7ef",
+ [
+ "webnn/conformance_tests/reduce_product.https.any.html?cpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API reduction operations"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/reduce_product.https.any.html?gpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API reduction operations"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/reduce_product.https.any.html?npu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API reduction operations"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/reduce_product.https.any.worker.html?cpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API reduction operations"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/reduce_product.https.any.worker.html?gpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API reduction operations"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/reduce_product.https.any.worker.html?npu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API reduction operations"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ]
+ ],
+ "reduce_sum.https.any.js": [
+ "9aec31d3f6826bd5113cfa430bf8c276d6351983",
+ [
+ "webnn/conformance_tests/reduce_sum.https.any.html?cpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API reduction operations"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/reduce_sum.https.any.html?gpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API reduction operations"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/reduce_sum.https.any.html?npu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API reduction operations"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/reduce_sum.https.any.worker.html?cpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API reduction operations"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/reduce_sum.https.any.worker.html?gpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API reduction operations"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/reduce_sum.https.any.worker.html?npu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API reduction operations"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ]
+ ],
+ "reduce_sum_square.https.any.js": [
+ "10930c44c6e7bd47703973d19966fef393a1b566",
+ [
+ "webnn/conformance_tests/reduce_sum_square.https.any.html?cpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API reduction operations"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/reduce_sum_square.https.any.html?gpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API reduction operations"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/reduce_sum_square.https.any.html?npu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API reduction operations"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/reduce_sum_square.https.any.worker.html?cpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API reduction operations"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/reduce_sum_square.https.any.worker.html?gpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API reduction operations"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/reduce_sum_square.https.any.worker.html?npu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API reduction operations"
],
[
"global",
@@ -780628,7 +787245,7 @@
]
],
"relu.https.any.js": [
- "458cd61d82c1840cc872797b68f9ca743e77dee7",
+ "fb4726b4b3e9fcb19be7b50c11d5fbad9309fa39",
[
"webnn/conformance_tests/relu.https.any.html?cpu",
{
@@ -780847,7 +787464,7 @@
]
],
"resample2d.https.any.js": [
- "4d68f9f51bd5e6b6fc20202a1fbdd76c8c65577e",
+ "bedd348fe58961048a6d23b0d82ac2b2701ef630",
[
"webnn/conformance_tests/resample2d.https.any.html?cpu",
{
@@ -781066,7 +787683,7 @@
]
],
"reshape.https.any.js": [
- "de9953e6f820353f15dcbd828e919b972c553860",
+ "212e93575bc04636b5d72eae5c2691c72c2a6409",
[
"webnn/conformance_tests/reshape.https.any.html?cpu",
{
@@ -781285,7 +787902,7 @@
]
],
"sigmoid.https.any.js": [
- "154e68e4299947ce83bece8db01b828a82c2c24c",
+ "1aba9bbb10bcddb2a15488c1a89119e866473cc3",
[
"webnn/conformance_tests/sigmoid.https.any.html?cpu",
{
@@ -781503,8 +788120,227 @@
}
]
],
+ "sin.https.any.js": [
+ "30fc9a54f8f02bdec3e4493bee38c8b4e3af30b1",
+ [
+ "webnn/conformance_tests/sin.https.any.html?cpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise sin operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/sin.https.any.html?gpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise sin operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/sin.https.any.html?npu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise sin operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/sin.https.any.worker.html?cpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise sin operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/sin.https.any.worker.html?gpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise sin operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/sin.https.any.worker.html?npu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise sin operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ]
+ ],
"slice.https.any.js": [
- "b39eade98f29b9590a23cac65b3c69f798e8096d",
+ "1c53d45fd5c05218a3542c307f5acc409be16a96",
[
"webnn/conformance_tests/slice.https.any.html?cpu",
{
@@ -781723,7 +788559,7 @@
]
],
"softmax.https.any.js": [
- "20c050d7bd8e5c4788e799c0991e7e4dcadd338e",
+ "28c0ff5ecac22930636a156198ae0fac89396cbf",
[
"webnn/conformance_tests/softmax.https.any.html?cpu",
{
@@ -781942,7 +788778,7 @@
]
],
"softplus.https.any.js": [
- "a2f90bd23d5e1899401041914c8a4c707876662a",
+ "9c6698e6d05df4ce222aa627bbcaff6b15db270f",
[
"webnn/conformance_tests/softplus.https.any.html?cpu",
{
@@ -782161,7 +788997,7 @@
]
],
"softsign.https.any.js": [
- "1e9c9f77fee33850f75566ad8f174f6114dca53f",
+ "b146953bb6168460187e92f6efd2ec14f4f68d34",
[
"webnn/conformance_tests/softsign.https.any.html?cpu",
{
@@ -782380,7 +789216,7 @@
]
],
"split.https.any.js": [
- "84fee2f66512a5d53f0dee6596342feba7b21695",
+ "eee757f29766df13e1eb8cff92198a7586325a7e",
[
"webnn/conformance_tests/split.https.any.html?cpu",
{
@@ -782598,15 +789434,234 @@
}
]
],
+ "sqrt.https.any.js": [
+ "aa24dc5501f3fd325c935dcc531febb2ab7a4824",
+ [
+ "webnn/conformance_tests/sqrt.https.any.html?cpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise sqrt operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/sqrt.https.any.html?gpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise sqrt operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/sqrt.https.any.html?npu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise sqrt operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/sqrt.https.any.worker.html?cpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise sqrt operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/sqrt.https.any.worker.html?gpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise sqrt operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/sqrt.https.any.worker.html?npu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise sqrt operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ]
+ ],
"sub.https.any.js": [
- "367780e1147f9b6a845ead3fb0e162605c843ed1",
+ "c034cf7b0ada3816691a73cb5ce7b3154ca2ae17",
[
"webnn/conformance_tests/sub.https.any.html?cpu",
{
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise sub operation"
],
[
"global",
@@ -782642,7 +789697,7 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise sub operation"
],
[
"global",
@@ -782678,7 +789733,7 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise sub operation"
],
[
"global",
@@ -782714,7 +789769,7 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise sub operation"
],
[
"global",
@@ -782750,7 +789805,7 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise sub operation"
],
[
"global",
@@ -782786,7 +789841,226 @@
"script_metadata": [
[
"title",
- "test WebNN API element-wise binary operations"
+ "test WebNN API element-wise sub operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ]
+ ],
+ "tan.https.any.js": [
+ "5fcf0e689968551cce42716f59cf9e4b39e86d56",
+ [
+ "webnn/conformance_tests/tan.https.any.html?cpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise tan operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/tan.https.any.html?gpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise tan operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/tan.https.any.html?npu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise tan operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/tan.https.any.worker.html?cpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise tan operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/tan.https.any.worker.html?gpu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise tan operation"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "variant",
+ "?cpu"
+ ],
+ [
+ "variant",
+ "?gpu"
+ ],
+ [
+ "variant",
+ "?npu"
+ ],
+ [
+ "script",
+ "../resources/utils.js"
+ ],
+ [
+ "timeout",
+ "long"
+ ]
+ ],
+ "timeout": "long"
+ }
+ ],
+ [
+ "webnn/conformance_tests/tan.https.any.worker.html?npu",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "test WebNN API element-wise tan operation"
],
[
"global",
@@ -782818,7 +790092,7 @@
]
],
"tanh.https.any.js": [
- "d7d1b5975189091bbe1cf6ffef4b836ca8bf2831",
+ "8fc7317a2cf56627a4bae7c69dbef44ddc0b66bc",
[
"webnn/conformance_tests/tanh.https.any.html?cpu",
{
@@ -783037,7 +790311,7 @@
]
],
"transpose.https.any.js": [
- "82abef96ea2f66dd70d827550a9b6151e752c814",
+ "61f043a9b0fcef01419c577052dbf33878e5adae",
[
"webnn/conformance_tests/transpose.https.any.html?cpu",
{
@@ -783256,7 +790530,7 @@
]
],
"triangular.https.any.js": [
- "9919110e9b1941f42185a53db0975d81fcfa4f2d",
+ "7c79518d43f9514510bb611f2add6c1a5f2f6573",
[
"webnn/conformance_tests/triangular.https.any.html?cpu",
{
@@ -783475,7 +790749,7 @@
]
],
"where.https.any.js": [
- "fa920ac2519dc35d05477845925283f05b96b282",
+ "957f82860839e0edb0b6d9a19e4a9b792fe8afc0",
[
"webnn/conformance_tests/where.https.any.html?cpu",
{
@@ -783695,7 +790969,7 @@
]
},
"idlharness.https.any.js": [
- "c2f579a2b4f58e6806d603c9201e7f98c2fe8409",
+ "6c95e534a4cd6b597beedddbf46969bf19a134f6",
[
"webnn/idlharness.https.any.html",
{
@@ -783755,7 +791029,7 @@
],
"validation_tests": {
"argMinMax.https.any.js": [
- "2d7b286c8711c4e236e0efa6b372cc680086426a",
+ "5d6806e5f4c41479a12ddb2b563e1220af684216",
[
"webnn/validation_tests/argMinMax.https.any.html",
{
@@ -783796,7 +791070,7 @@
]
],
"batchNormalization.https.any.js": [
- "7a2755927ca917262748952a3fd6c42b606c1a8f",
+ "2fec37dcbf513cbf2e018b8a68eee0432b6761be",
[
"webnn/validation_tests/batchNormalization.https.any.html",
{
@@ -783836,6 +791110,47 @@
}
]
],
+ "build-more-than-once.https.any.js": [
+ "d0d6800f682ad581eb82965cc03b323f7f79dd45",
+ [
+ "webnn/validation_tests/build-more-than-once.https.any.html",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "ensure MLMLGraphBuilder may build at most one MLGraph"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "script",
+ "../resources/utils_validation.js"
+ ]
+ ]
+ }
+ ],
+ [
+ "webnn/validation_tests/build-more-than-once.https.any.worker.html",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "ensure MLMLGraphBuilder may build at most one MLGraph"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "script",
+ "../resources/utils_validation.js"
+ ]
+ ]
+ }
+ ]
+ ],
"cast.https.any.js": [
"f616203a88b5f716e4c2e646049c641db3aef3dc",
[
@@ -783878,7 +791193,7 @@
]
],
"clamp.https.any.js": [
- "96600c22f8b83f68195f8434a1289b21708a1749",
+ "5a347bd230eeaf2649fe26a14e366edd82942e48",
[
"webnn/validation_tests/clamp.https.any.html",
{
@@ -783919,7 +791234,7 @@
]
],
"compute-multiple-arraybufferviews-sharing-same-arraybuffer.https.any.js": [
- "42b123a97e5732a401959dca7bd37ab171965883",
+ "f7210e55d4538e3dce290d750955a8623e6aa8f8",
[
"webnn/validation_tests/compute-multiple-arraybufferviews-sharing-same-arraybuffer.https.any.html",
{
@@ -783960,7 +791275,7 @@
]
],
"concat.https.any.js": [
- "b61f2d2bc779bf622e26da9658a65030795ae667",
+ "6fe22c02bcdcda15267ea52bb89ba9ccaad22425",
[
"webnn/validation_tests/concat.https.any.html",
{
@@ -784001,7 +791316,7 @@
]
],
"constant-changed-buffer.https.any.js": [
- "7840a83d947adc1e0b6d2d3a7830e9684a23ecbd",
+ "a6a24a0686585ff8b452d8f9bcd08a2286ea91f7",
[
"webnn/validation_tests/constant-changed-buffer.https.any.html",
{
@@ -784042,7 +791357,7 @@
]
],
"constant.https.any.js": [
- "86a60ee209c1a6c9f5c03f7a0d45bb25c9930f92",
+ "136f8bd764ef5d7314e2ea70010ad318e8a5d653",
[
"webnn/validation_tests/constant.https.any.html",
{
@@ -784083,7 +791398,7 @@
]
],
"conv2d.https.any.js": [
- "55615faed9d29477c06f3f405a76e549714ba83b",
+ "cf8ed9a0d8f75139c94fae923786541c03114ac9",
[
"webnn/validation_tests/conv2d.https.any.html",
{
@@ -784124,7 +791439,7 @@
]
],
"convTranspose2d.https.any.js": [
- "f7cf4b3200ca280688eb4a244a75b620aebc5c4d",
+ "6028d51c6c8d2e185237260d00fb9eda2e3c3abd",
[
"webnn/validation_tests/convTranspose2d.https.any.html",
{
@@ -784164,8 +791479,49 @@
}
]
],
+ "createContext.https.any.js": [
+ "52b99ff337d0e5cc579cdcee29f431e0811590c0",
+ [
+ "webnn/validation_tests/createContext.https.any.html",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "validation tests for WebNN API createContext()"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "script",
+ "../resources/utils_validation.js"
+ ]
+ ]
+ }
+ ],
+ [
+ "webnn/validation_tests/createContext.https.any.worker.html",
+ {
+ "script_metadata": [
+ [
+ "title",
+ "validation tests for WebNN API createContext()"
+ ],
+ [
+ "global",
+ "window,dedicatedworker"
+ ],
+ [
+ "script",
+ "../resources/utils_validation.js"
+ ]
+ ]
+ }
+ ]
+ ],
"elementwise-binary.https.any.js": [
- "8e86731a0fd977ac5deb08b8b585fcfed400fb43",
+ "369191dd7fd8e690e2b7fc727c0bc347eb5e3754",
[
"webnn/validation_tests/elementwise-binary.https.any.html",
{
@@ -784206,7 +791562,7 @@
]
],
"elementwise-logical.https.any.js": [
- "25d7b59924cc4d5a2cff89ece5c5397f92d04c11",
+ "e5e5b5a5a81299c4d1faaeb95d383364437464e6",
[
"webnn/validation_tests/elementwise-logical.https.any.html",
{
@@ -784247,7 +791603,7 @@
]
],
"elementwise-unary.https.any.js": [
- "c735183aab1d1410668b85a2d390800aa82b1525",
+ "9380c766960bb75904821422e09623b474d5c194",
[
"webnn/validation_tests/elementwise-unary.https.any.html",
{
@@ -784288,7 +791644,7 @@
]
],
"elu.https.any.js": [
- "53ec5e54ae2dc2d790f493b0669c8ca35dc34737",
+ "a84848c2c39b6ef7e6beb8435a96d7109f9c0b84",
[
"webnn/validation_tests/elu.https.any.html",
{
@@ -784329,7 +791685,7 @@
]
],
"expand.https.any.js": [
- "088d826df7ab5415a0d03f24c902ea61aa051b06",
+ "b333b573ba14ba3fa071bdc34a67cb5c9781c4f0",
[
"webnn/validation_tests/expand.https.any.html",
{
@@ -784370,7 +791726,7 @@
]
],
"gather.https.any.js": [
- "4a2ab218f8d2ab36c355eaab80f692d01755a75a",
+ "74db3f15d0c4b031989fdc2bafc47f3f8ebf5b4f",
[
"webnn/validation_tests/gather.https.any.html",
{
@@ -784411,7 +791767,7 @@
]
],
"gelu.https.any.js": [
- "c758c61f4c38477cde055438758f2fb1294708cc",
+ "498dc509cee8f05dea94cedbf2f7634e936c27c2",
[
"webnn/validation_tests/gelu.https.any.html",
{
@@ -784452,7 +791808,7 @@
]
],
"gemm.https.any.js": [
- "abe0ba61936b0f11a6eade254a3e58a2ec29d11b",
+ "117fd541a34f93fb8b844f2ce42d2078a00769cc",
[
"webnn/validation_tests/gemm.https.any.html",
{
@@ -784493,7 +791849,7 @@
]
],
"gru.https.any.js": [
- "2b85ce23144ca9c7bd7d65975cfb8c230d1cb071",
+ "ac69fcf83024c930c23cede97201491f786cd597",
[
"webnn/validation_tests/gru.https.any.html",
{
@@ -784534,7 +791890,7 @@
]
],
"gruCell.https.any.js": [
- "e37c9ec5209912078b6238d0c544778740e02e83",
+ "98ba3eec62c43c3b5a9687d19b96602715472ee0",
[
"webnn/validation_tests/gruCell.https.any.html",
{
@@ -784575,7 +791931,7 @@
]
],
"hardSigmoid.https.any.js": [
- "2c55d0eb9dfe21b69e88049d2570751eb2b23fb7",
+ "154e82936f797caa0793fe84582afe24900ade72",
[
"webnn/validation_tests/hardSigmoid.https.any.html",
{
@@ -784616,7 +791972,7 @@
]
],
"hardSwish.https.any.js": [
- "97ecfb4142de4aa53d5999ca96b768abdec6af4f",
+ "7bdf6eb1db341c95098af4660e43e28629fb2b8c",
[
"webnn/validation_tests/hardSwish.https.any.html",
{
@@ -784657,7 +792013,7 @@
]
],
"input.https.any.js": [
- "a7561bf628be78620eb2a907001041edde03d413",
+ "443cd829461faaa3e14c20926f1aa2313a4f1621",
[
"webnn/validation_tests/input.https.any.html",
{
@@ -784698,7 +792054,7 @@
]
],
"instanceNormalization.https.any.js": [
- "4fc26ec5ae65113cd07f08d754c24e527aefb96f",
+ "78094dd8816e424b0561abdccadfecffb1360477",
[
"webnn/validation_tests/instanceNormalization.https.any.html",
{
@@ -784739,7 +792095,7 @@
]
],
"layerNormalization.https.any.js": [
- "63f9c0dbc5855a10ae574bdcb4fddda346124497",
+ "3b3636ba11d8601bcbd9f499823c7b2c11c6d85a",
[
"webnn/validation_tests/layerNormalization.https.any.html",
{
@@ -784780,7 +792136,7 @@
]
],
"leakyRelu.https.any.js": [
- "f250b0eda66c883af5f715fe7d24d086eec3631a",
+ "3a8ac892b98d72e53d53b966d30f063cf48075bc",
[
"webnn/validation_tests/leakyRelu.https.any.html",
{
@@ -784821,7 +792177,7 @@
]
],
"linear.https.any.js": [
- "6ec0389fc362c2aea490f5e990968144ead2d5df",
+ "05f88a34dc7cc4461809db9c7576b484e9071a65",
[
"webnn/validation_tests/linear.https.any.html",
{
@@ -784862,7 +792218,7 @@
]
],
"lstm.https.any.js": [
- "06834b3960437d821fcdd5e35551ba6dd7608e4a",
+ "00f6b129dfa99827605a048d1cff84c52efd0d34",
[
"webnn/validation_tests/lstm.https.any.html",
{
@@ -784903,7 +792259,7 @@
]
],
"lstmCell.https.any.js": [
- "6b7bd1958b323980876269c28bfdfd96610ee8bd",
+ "28a9cb8dd3f7f1b8f57cfba35b900feb5b760a76",
[
"webnn/validation_tests/lstmCell.https.any.html",
{
@@ -784944,7 +792300,7 @@
]
],
"matmul.https.any.js": [
- "8db16242c9efb5612123333eb80d93167d754503",
+ "c298c87388b954c599cfba6b4d7a29db801c513d",
[
"webnn/validation_tests/matmul.https.any.html",
{
@@ -784985,7 +792341,7 @@
]
],
"pad.https.any.js": [
- "cc39bee4c0d1e65a09f8c96db05db74e6201874e",
+ "4971706e49db954e4ea07cc98ad3982a3865a5aa",
[
"webnn/validation_tests/pad.https.any.html",
{
@@ -785026,7 +792382,7 @@
]
],
"pooling-and-reduction-keep-dims.https.any.js": [
- "9f6b9fb3384249ee9b5bd9b3453d1700d703a38e",
+ "ca9632a5f728b85b65d300e38dcdd035f86e575b",
[
"webnn/validation_tests/pooling-and-reduction-keep-dims.https.any.html",
{
@@ -785085,7 +792441,7 @@
]
],
"pooling.https.any.js": [
- "6d21f3d52f1c3402faf7b860ba960144fce53121",
+ "aca73de9488a61f6948fe7e427edef7c7ccb0088",
[
"webnn/validation_tests/pooling.https.any.html",
{
@@ -785126,7 +792482,7 @@
]
],
"prelu.https.any.js": [
- "fa89df9631b0d11984f0240b42912ea426ef7400",
+ "a07413007354f8715c28c9a798e583efc2f4acb0",
[
"webnn/validation_tests/prelu.https.any.html",
{
@@ -785167,7 +792523,7 @@
]
],
"reduction.https.any.js": [
- "219a60076af4d094f630edcf321b6ef0b29d0b6b",
+ "0ffc9c309fd0721b67db0a2ea14a91bcb5f66c03",
[
"webnn/validation_tests/reduction.https.any.html",
{
@@ -785208,7 +792564,7 @@
]
],
"relu.https.any.js": [
- "61b0d1938fe5365afc852db79beeddbedce97c37",
+ "caebba9b316a20be4036c1536b8daba032ae65cf",
[
"webnn/validation_tests/relu.https.any.html",
{
@@ -785249,7 +792605,7 @@
]
],
"resample2d.https.any.js": [
- "0c6a475e878486453722a2a9e7dcdac0bb177424",
+ "9558e2bf5a9efba1b88805dc8f305adbbd6b6c4c",
[
"webnn/validation_tests/resample2d.https.any.html",
{
@@ -785290,7 +792646,7 @@
]
],
"reshape.https.any.js": [
- "67491fbc1684e16bcf03cf12aaac8101f70a0175",
+ "57a5dde2c9112b1bd3d297f415618a1b5b5a4373",
[
"webnn/validation_tests/reshape.https.any.html",
{
@@ -785331,7 +792687,7 @@
]
],
"sigmoid.https.any.js": [
- "b40ddc3fd4a7bc014c5a4050f4c42a3e525627ce",
+ "e76403eca3e154718a065a57c419537867efe645",
[
"webnn/validation_tests/sigmoid.https.any.html",
{
@@ -785372,7 +792728,7 @@
]
],
"slice.https.any.js": [
- "de426216101fb29f2afa5535d7732284922e67d4",
+ "3eb308ad2b80611f021b28e0a043ac99e35e0ce8",
[
"webnn/validation_tests/slice.https.any.html",
{
@@ -785413,7 +792769,7 @@
]
],
"softmax.https.any.js": [
- "a75878307f620f672ff0aecc4d7649c8e4a3162b",
+ "94695e69c6cc5dae85125bc71f597e321ce11858",
[
"webnn/validation_tests/softmax.https.any.html",
{
@@ -785454,7 +792810,7 @@
]
],
"softplus.https.any.js": [
- "3cf91d26ecb9316d8847feb84aebf9da6742e138",
+ "2196c895f3980ad57e58054ab68f0aa793b17833",
[
"webnn/validation_tests/softplus.https.any.html",
{
@@ -785495,7 +792851,7 @@
]
],
"softsign.https.any.js": [
- "58ec4871599686e51568ef045ac447b6dfdfa6a4",
+ "81b4b4fbe75b4a11c9d2b9fa112add96453bbe2c",
[
"webnn/validation_tests/softsign.https.any.html",
{
@@ -785536,7 +792892,7 @@
]
],
"split.https.any.js": [
- "91d00b0a6d71ff5e92ac1fac9c38586d665ebe39",
+ "9946df34ed8c8545c3e93bf12e28886056dea7ac",
[
"webnn/validation_tests/split.https.any.html",
{
@@ -785577,7 +792933,7 @@
]
],
"tanh.https.any.js": [
- "4f9de919f61e2f119cae9ceba81ef3a4dcb5a6a8",
+ "deb9f3614eb97faed2a5f86782207839a874822b",
[
"webnn/validation_tests/tanh.https.any.html",
{
@@ -785618,7 +792974,7 @@
]
],
"transpose.https.any.js": [
- "3475a427d7347ba3ab3429b1470591d39400395d",
+ "be9c9bd8a6379baacdf2e7cc96b0d6891579cfd4",
[
"webnn/validation_tests/transpose.https.any.html",
{
@@ -785659,7 +793015,7 @@
]
],
"triangular.https.any.js": [
- "59694a426036aba9517af64e8426e6a25f51ec28",
+ "b6e2802b7c5bbc8fe05b368ae7facd02479c7a73",
[
"webnn/validation_tests/triangular.https.any.html",
{
@@ -785700,7 +793056,7 @@
]
],
"where.https.any.js": [
- "33394f863227ccc906a16e3175285a237d68e023",
+ "f509971f69a3fbe5d1bf4c05594253098fb8e7db",
[
"webnn/validation_tests/where.https.any.html",
{
@@ -785886,7 +793242,7 @@
]
],
"RTCDataChannel-send-close.html": [
- "1bcc96790d9e5e162db1acda02f4c07bb7780f6e",
+ "4ffe4a2019739cd640e53360083c8fd324193dc3",
[
null,
{
@@ -786878,7 +794234,7 @@
]
],
"idlharness.https.window.js": [
- "58e696f73c15a0c5fd2f38e625577096df0af318",
+ "611494f641d6060e69fe79e7ab975341703969fa",
[
"webrtc/idlharness.https.window.html",
{
@@ -801406,7 +808762,7 @@
]
],
"close.https.any.js": [
- "0d8579584fbb21e74595588f663ef21c3b028c63",
+ "d7271b61cfdfa132e370400162afeea80591698c",
[
"webtransport/close.https.any.html",
{
@@ -802724,7 +810080,7 @@
]
],
"sandboxed_iframe.https.window.js": [
- "b63f4094803239fd34f3609be5035a1e8e017670",
+ "0311db8849186ee2ae553c9e1a2247e3fa948b6a",
[
"webusb/requestDevice/sandboxed_iframe.https.window.html",
{}
@@ -830636,13 +837992,6 @@
]
},
"css-sizing": {
- "intrinsic-percent-non-replaced-002.html": [
- "748aa5f8f7149841ea0cd47770a722e9f3d8f934",
- [
- null,
- {}
- ]
- ],
"replaced-fractional-height-from-aspect-ratio.html": [
"d97c3f133ebec02ce5569e95826ab3237b7559c7",
[
@@ -832831,7 +840180,7 @@
]
],
"prompt_unload.py": [
- "e7d88ad272d0ae0a3cabef1bfb2b675475e70698",
+ "065e8f3249429b438ebd867c9d9fe03c1a192348",
[
null,
{}
@@ -833089,7 +840438,7 @@
]
],
"navigate.py": [
- "1f003f4aa6909f5cff7aa00a0dd4e43624f9216f",
+ "8f2fd4822abc88e614fab629f7879ce95744f55a",
[
null,
{}
@@ -833103,9 +840452,18 @@
]
]
},
+ "navigation_failed": {
+ "navigation_failed.py": [
+ "fcab85fb075dc39a2b73fce0fda98aa02a2b1638",
+ [
+ null,
+ {}
+ ]
+ ]
+ },
"navigation_started": {
"navigation_started.py": [
- "af91f0110aa0c3af0610ed46b34bb14ec57ac926",
+ "bc711814d3aa11b52db1d2f98774650802a17024",
[
null,
{}
@@ -833204,7 +840562,7 @@
]
],
"wait.py": [
- "1024b787f0889865962f91849137eff402dfe38a",
+ "a9f113a2a9a4e4c8cca932b942d13ca1da507cf5",
[
null,
{
@@ -833503,7 +840861,7 @@
},
"integration": {
"cookies_with_network_events.py": [
- "30ba8e3bd7b8009070c4a6c1739b43efc8235f50",
+ "625628f0360a3e72ee692cf3768073db263cd015",
[
null,
{}
@@ -833617,7 +840975,7 @@
},
"auth_required": {
"auth_required.py": [
- "4f5c836280dc69a03f7f3284382b44d5019c636b",
+ "8ae539056429b4651cee0fcab4d6dce639a9a8c5",
[
null,
{}
@@ -833633,7 +840991,7 @@
},
"before_request_sent": {
"before_request_sent.py": [
- "3ef51b2d61c171328c6d7a5435912fe4a327c014",
+ "f8d1f7ba786bef57da02badc7b3506c1505b0408",
[
null,
{}
@@ -833761,7 +841119,7 @@
},
"fetch_error": {
"fetch_error.py": [
- "025da87c928df9a2966a08a31884d83304d57f0a",
+ "de6567100a96a4a5303f2ea4e7ec1f576ee8fddb",
[
null,
{}
@@ -833841,7 +841199,7 @@
},
"response_completed": {
"response_completed.py": [
- "51333a0195f41869662830cba7fbd4d18e31f691",
+ "ba916390ea2ed382197df3d351d8b1bce0074d74",
[
null,
{}
@@ -833857,7 +841215,7 @@
},
"response_started": {
"response_started.py": [
- "17ec9ffe31b33f9799db722fefc12b3c9c2c7e2d",
+ "d2d987d8e4aa61c95d94bb30f935b22b6f43f977",
[
null,
{}
@@ -834674,7 +842032,7 @@
]
],
"scroll_into_view.py": [
- "041f0dee6a3fa6865e5645e024085eb9cb592774",
+ "1b9c671efaba12ac42a79ac0f97e84544ce9621e",
[
null,
{}
diff --git a/tests/wpt/meta/css/css-align/self-alignment/block-justify-self.html.ini b/tests/wpt/meta/css/css-align/self-alignment/block-justify-self.html.ini
new file mode 100644
index 00000000000..a08847eb3f6
--- /dev/null
+++ b/tests/wpt/meta/css/css-align/self-alignment/block-justify-self.html.ini
@@ -0,0 +1,2 @@
+[block-justify-self.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-animations/animation-canceled-by-parent-details-element-being-closed.html.ini b/tests/wpt/meta/css/css-animations/animation-canceled-by-parent-details-element-being-closed.html.ini
deleted file mode 100644
index 3e9bca56bed..00000000000
--- a/tests/wpt/meta/css/css-animations/animation-canceled-by-parent-details-element-being-closed.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[animation-canceled-by-parent-details-element-being-closed.html]
- [A CSS Animation running on an element within a <details> element is canceled after the <details> element is closed.]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-animations/display-none-to-display-block-dont-cancel.tentative.html.ini b/tests/wpt/meta/css/css-animations/display-none-to-display-block-dont-cancel.tentative.html.ini
new file mode 100644
index 00000000000..59ed5518e54
--- /dev/null
+++ b/tests/wpt/meta/css/css-animations/display-none-to-display-block-dont-cancel.tentative.html.ini
@@ -0,0 +1,3 @@
+[display-none-to-display-block-dont-cancel.tentative.html]
+ [display:none animating to display:block should be block for the whole animation.]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-animations/display-none-to-display-block.html.ini b/tests/wpt/meta/css/css-animations/display-none-to-display-block.html.ini
new file mode 100644
index 00000000000..fc311a8e03e
--- /dev/null
+++ b/tests/wpt/meta/css/css-animations/display-none-to-display-block.html.ini
@@ -0,0 +1,2 @@
+[display-none-to-display-block.html]
+ expected: TIMEOUT
diff --git a/tests/wpt/meta/css/css-backgrounds/background-clip/clip-text-animated-text.html.ini b/tests/wpt/meta/css/css-backgrounds/background-clip/clip-text-animated-text.html.ini
new file mode 100644
index 00000000000..26aaf911522
--- /dev/null
+++ b/tests/wpt/meta/css/css-backgrounds/background-clip/clip-text-animated-text.html.ini
@@ -0,0 +1,2 @@
+[clip-text-animated-text.html]
+ expected: TIMEOUT
diff --git a/tests/wpt/meta/css/css-backgrounds/background-gradient-interpolation-003.html.ini b/tests/wpt/meta/css/css-backgrounds/background-gradient-interpolation-003.html.ini
new file mode 100644
index 00000000000..a6b7dd89d96
--- /dev/null
+++ b/tests/wpt/meta/css/css-backgrounds/background-gradient-interpolation-003.html.ini
@@ -0,0 +1,2 @@
+[background-gradient-interpolation-003.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-backgrounds/parsing/background-image-computed.sub.html.ini b/tests/wpt/meta/css/css-backgrounds/parsing/background-image-computed.sub.html.ini
new file mode 100644
index 00000000000..696a410e663
--- /dev/null
+++ b/tests/wpt/meta/css/css-backgrounds/parsing/background-image-computed.sub.html.ini
@@ -0,0 +1,3 @@
+[background-image-computed.sub.html]
+ [Property background-image value 'conic-gradient(red 0deg, gold 1turn)']
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-cascade/scope-part.html.ini b/tests/wpt/meta/css/css-cascade/scope-part.html.ini
new file mode 100644
index 00000000000..f9df626caf8
--- /dev/null
+++ b/tests/wpt/meta/css/css-cascade/scope-part.html.ini
@@ -0,0 +1,2 @@
+[scope-part.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-color/parsing/color-computed-relative-color.html.ini b/tests/wpt/meta/css/css-color/parsing/color-computed-relative-color.html.ini
index 03508b45213..0b4190c2b1f 100644
--- a/tests/wpt/meta/css/css-color/parsing/color-computed-relative-color.html.ini
+++ b/tests/wpt/meta/css/css-color/parsing/color-computed-relative-color.html.ini
@@ -3640,3 +3640,51 @@
[Property color value 'color(from color(from color(xyz-d65 7 -20.5 100) xyz-d65 x y z / calc(alpha - 1.5)) xyz-d65 x y z / calc(alpha + 0.5))']
expected: FAIL
+
+ [Property background-color value 'rgb(from currentColor r g b)']
+ expected: FAIL
+
+ [Property background-color value 'hsl(from currentColor h s l)']
+ expected: FAIL
+
+ [Property background-color value 'hwb(from currentColor h w b)']
+ expected: FAIL
+
+ [Property background-color value 'lab(from currentColor l a b)']
+ expected: FAIL
+
+ [Property background-color value 'oklab(from currentColor l a b)']
+ expected: FAIL
+
+ [Property background-color value 'lch(from currentColor l c h)']
+ expected: FAIL
+
+ [Property background-color value 'oklch(from currentColor l c h)']
+ expected: FAIL
+
+ [Property background-color value 'color(from currentColor srgb r g b)']
+ expected: FAIL
+
+ [Property background-color value 'color(from currentColor srgb-linear r g b)']
+ expected: FAIL
+
+ [Property background-color value 'color(from currentColor a98-rgb r g b)']
+ expected: FAIL
+
+ [Property background-color value 'color(from currentColor rec2020 r g b)']
+ expected: FAIL
+
+ [Property background-color value 'color(from currentColor prophoto-rgb r g b)']
+ expected: FAIL
+
+ [Property background-color value 'color(from currentColor display-p3 r g b)']
+ expected: FAIL
+
+ [Property background-color value 'color(from currentColor xyz x y z)']
+ expected: FAIL
+
+ [Property background-color value 'color(from currentColor xyz-d50 x y z)']
+ expected: FAIL
+
+ [Property background-color value 'color(from currentColor xyz-d65 x y z)']
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-color/parsing/color-valid-relative-color.html.ini b/tests/wpt/meta/css/css-color/parsing/color-valid-relative-color.html.ini
index 0c607b8dc33..3d655cd0048 100644
--- a/tests/wpt/meta/css/css-color/parsing/color-valid-relative-color.html.ini
+++ b/tests/wpt/meta/css/css-color/parsing/color-valid-relative-color.html.ini
@@ -3676,3 +3676,51 @@
[e.style['color'\] = "rgb(from color(srgb 0.4 0.2 0.6) r g b)" should set the property value]
expected: FAIL
+
+ [e.style['color'\] = "oklab(from oklab(0.25 0.2 0.5) l a b / 0.35)" should set the property value]
+ expected: FAIL
+
+ [e.style['color'\] = "lch(from lch(0.7 45 30) l c h / 0.25)" should set the property value]
+ expected: FAIL
+
+ [e.style['color'\] = "lch(from lch(0.7 45 30) l c c / alpha)" should set the property value]
+ expected: FAIL
+
+ [e.style['color'\] = "lch(from lch(0.7 45 30 / 40%) l c c / alpha)" should set the property value]
+ expected: FAIL
+
+ [e.style['color'\] = "oklch(from oklch(0.7 0.45 30) l c h / 0.25)" should set the property value]
+ expected: FAIL
+
+ [e.style['color'\] = "oklch(from oklch(0.7 0.45 30 / 40%) l c h / 0.25)" should set the property value]
+ expected: FAIL
+
+ [e.style['color'\] = "oklch(from oklch(0.7 0.45 30) l c c / alpha)" should set the property value]
+ expected: FAIL
+
+ [e.style['color'\] = "oklch(from oklch(0.7 0.45 30 / 40%) l c c / alpha)" should set the property value]
+ expected: FAIL
+
+ [e.style['color'\] = "color(from color-mix(in srgb, color(srgb 0.7 0.5 0.3), color(srgb 0.7 0.5 0.3)) srgb r g b / alpha)" should set the property value]
+ expected: FAIL
+
+ [e.style['color'\] = "color(from color-mix(in srgb-linear, color(srgb-linear 0.7 0.5 0.3), color(srgb-linear 0.7 0.5 0.3)) srgb-linear r g b / alpha)" should set the property value]
+ expected: FAIL
+
+ [e.style['color'\] = "color(from color-mix(in a98-rgb, color(a98-rgb 0.7 0.5 0.3), color(a98-rgb 0.7 0.5 0.3)) a98-rgb r g b / alpha)" should set the property value]
+ expected: FAIL
+
+ [e.style['color'\] = "color(from color-mix(in rec2020, color(rec2020 0.7 0.5 0.3), color(rec2020 0.7 0.5 0.3)) rec2020 r g b / alpha)" should set the property value]
+ expected: FAIL
+
+ [e.style['color'\] = "color(from color-mix(in prophoto-rgb, color(prophoto-rgb 0.7 0.5 0.3), color(prophoto-rgb 0.7 0.5 0.3)) prophoto-rgb r g b / alpha)" should set the property value]
+ expected: FAIL
+
+ [e.style['color'\] = "color(from color-mix(in display-p3, color(display-p3 0.7 0.5 0.3), color(display-p3 0.7 0.5 0.3)) display-p3 r g b / alpha)" should set the property value]
+ expected: FAIL
+
+ [e.style['color'\] = "color(from color-mix(in xyz-d50, color(xyz-d50 0.7 0.5 0.3), color(xyz-d50 0.7 0.5 0.3)) xyz-d50 x y z / alpha)" should set the property value]
+ expected: FAIL
+
+ [e.style['color'\] = "color(from color-mix(in xyz-d65, color(xyz-d65 0.7 0.5 0.3), color(xyz-d65 0.7 0.5 0.3)) xyz-d65 x y z / alpha)" should set the property value]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-conditional/container-queries/no-layout-containment-abspos-dynamic.html.ini b/tests/wpt/meta/css/css-conditional/container-queries/no-layout-containment-abspos-dynamic.html.ini
new file mode 100644
index 00000000000..4e8fd73c0cc
--- /dev/null
+++ b/tests/wpt/meta/css/css-conditional/container-queries/no-layout-containment-abspos-dynamic.html.ini
@@ -0,0 +1,2 @@
+[no-layout-containment-abspos-dynamic.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-conditional/container-queries/no-layout-containment-fixedpos-dynamic.html.ini b/tests/wpt/meta/css/css-conditional/container-queries/no-layout-containment-fixedpos-dynamic.html.ini
new file mode 100644
index 00000000000..5750ff26123
--- /dev/null
+++ b/tests/wpt/meta/css/css-conditional/container-queries/no-layout-containment-fixedpos-dynamic.html.ini
@@ -0,0 +1,2 @@
+[no-layout-containment-fixedpos-dynamic.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-conditional/container-queries/no-layout-containment-fixedpos.html.ini b/tests/wpt/meta/css/css-conditional/container-queries/no-layout-containment-fixedpos.html.ini
new file mode 100644
index 00000000000..983e3c3c0a6
--- /dev/null
+++ b/tests/wpt/meta/css/css-conditional/container-queries/no-layout-containment-fixedpos.html.ini
@@ -0,0 +1,2 @@
+[no-layout-containment-fixedpos.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-conditional/container-queries/scrollbar-container-units-block.html.ini b/tests/wpt/meta/css/css-conditional/container-queries/scrollbar-container-units-block.html.ini
new file mode 100644
index 00000000000..05e9fd8cd27
--- /dev/null
+++ b/tests/wpt/meta/css/css-conditional/container-queries/scrollbar-container-units-block.html.ini
@@ -0,0 +1,2 @@
+[scrollbar-container-units-block.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-display/parsing/tentative/display-computed.html.ini b/tests/wpt/meta/css/css-display/parsing/tentative/display-computed.html.ini
new file mode 100644
index 00000000000..95b56ed68f4
--- /dev/null
+++ b/tests/wpt/meta/css/css-display/parsing/tentative/display-computed.html.ini
@@ -0,0 +1,18 @@
+[display-computed.html]
+ [Property display value 'masonry']
+ expected: FAIL
+
+ [Property display value 'inline-masonry']
+ expected: FAIL
+
+ [position absolute affects computed display]
+ expected: FAIL
+
+ [position fixed affects computed display]
+ expected: FAIL
+
+ [float left affects computed display]
+ expected: FAIL
+
+ [float right affects computed display]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-display/parsing/tentative/display-valid.html.ini b/tests/wpt/meta/css/css-display/parsing/tentative/display-valid.html.ini
new file mode 100644
index 00000000000..1cf9ba8827e
--- /dev/null
+++ b/tests/wpt/meta/css/css-display/parsing/tentative/display-valid.html.ini
@@ -0,0 +1,6 @@
+[display-valid.html]
+ [e.style['display'\] = "masonry" should set the property value]
+ expected: FAIL
+
+ [e.style['display'\] = "inline-masonry" should set the property value]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flex-item-max-height-min-content.html.ini b/tests/wpt/meta/css/css-flexbox/flex-item-max-height-min-content.html.ini
new file mode 100644
index 00000000000..e4ae6e737e4
--- /dev/null
+++ b/tests/wpt/meta/css/css-flexbox/flex-item-max-height-min-content.html.ini
@@ -0,0 +1,2 @@
+[flex-item-max-height-min-content.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flex-item-max-width-min-content.html.ini b/tests/wpt/meta/css/css-flexbox/flex-item-max-width-min-content.html.ini
new file mode 100644
index 00000000000..8fb5b9803c0
--- /dev/null
+++ b/tests/wpt/meta/css/css-flexbox/flex-item-max-width-min-content.html.ini
@@ -0,0 +1,2 @@
+[flex-item-max-width-min-content.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flex-item-min-height-min-content.html.ini b/tests/wpt/meta/css/css-flexbox/flex-item-min-height-min-content.html.ini
new file mode 100644
index 00000000000..b2f2e7a52fd
--- /dev/null
+++ b/tests/wpt/meta/css/css-flexbox/flex-item-min-height-min-content.html.ini
@@ -0,0 +1,2 @@
+[flex-item-min-height-min-content.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flexbox-writing-mode-slr-row-mix.html.ini b/tests/wpt/meta/css/css-flexbox/flexbox-writing-mode-slr-row-mix.html.ini
new file mode 100644
index 00000000000..f7048580a8d
--- /dev/null
+++ b/tests/wpt/meta/css/css-flexbox/flexbox-writing-mode-slr-row-mix.html.ini
@@ -0,0 +1,2 @@
+[flexbox-writing-mode-slr-row-mix.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flexbox-writing-mode-slr-rtl.html.ini b/tests/wpt/meta/css/css-flexbox/flexbox-writing-mode-slr-rtl.html.ini
new file mode 100644
index 00000000000..97036a0fb0b
--- /dev/null
+++ b/tests/wpt/meta/css/css-flexbox/flexbox-writing-mode-slr-rtl.html.ini
@@ -0,0 +1,2 @@
+[flexbox-writing-mode-slr-rtl.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flexbox-writing-mode-slr.html.ini b/tests/wpt/meta/css/css-flexbox/flexbox-writing-mode-slr.html.ini
new file mode 100644
index 00000000000..4734b7d9ef6
--- /dev/null
+++ b/tests/wpt/meta/css/css-flexbox/flexbox-writing-mode-slr.html.ini
@@ -0,0 +1,2 @@
+[flexbox-writing-mode-slr.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flexbox-writing-mode-srl-row-mix.html.ini b/tests/wpt/meta/css/css-flexbox/flexbox-writing-mode-srl-row-mix.html.ini
new file mode 100644
index 00000000000..f74d65a488d
--- /dev/null
+++ b/tests/wpt/meta/css/css-flexbox/flexbox-writing-mode-srl-row-mix.html.ini
@@ -0,0 +1,2 @@
+[flexbox-writing-mode-srl-row-mix.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flexbox-writing-mode-srl-rtl.html.ini b/tests/wpt/meta/css/css-flexbox/flexbox-writing-mode-srl-rtl.html.ini
new file mode 100644
index 00000000000..3f5d0cb55bd
--- /dev/null
+++ b/tests/wpt/meta/css/css-flexbox/flexbox-writing-mode-srl-rtl.html.ini
@@ -0,0 +1,2 @@
+[flexbox-writing-mode-srl-rtl.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-flexbox/flexbox-writing-mode-srl.html.ini b/tests/wpt/meta/css/css-flexbox/flexbox-writing-mode-srl.html.ini
new file mode 100644
index 00000000000..678afdca266
--- /dev/null
+++ b/tests/wpt/meta/css/css-flexbox/flexbox-writing-mode-srl.html.ini
@@ -0,0 +1,2 @@
+[flexbox-writing-mode-srl.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-fonts/parsing/font-face-size-adjust.html.ini b/tests/wpt/meta/css/css-fonts/parsing/font-face-size-adjust.html.ini
new file mode 100644
index 00000000000..584a05788a0
--- /dev/null
+++ b/tests/wpt/meta/css/css-fonts/parsing/font-face-size-adjust.html.ini
@@ -0,0 +1,18 @@
+[font-face-size-adjust.html]
+ [Check that size-adjust: 100% is valid]
+ expected: FAIL
+
+ [Check that size-adjust: 0% is valid]
+ expected: FAIL
+
+ [Check that size-adjust: 110% is valid]
+ expected: FAIL
+
+ [Check that size-adjust: 100000000000% is valid]
+ expected: FAIL
+
+ [Check that size-adjust: -100% is invalid]
+ expected: FAIL
+
+ [Check that size-adjust: -1% is invalid]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-fonts/variations/at-font-face-font-matching.html.ini b/tests/wpt/meta/css/css-fonts/variations/at-font-face-font-matching.html.ini
deleted file mode 100644
index 6fe4576cf14..00000000000
--- a/tests/wpt/meta/css/css-fonts/variations/at-font-face-font-matching.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[at-font-face-font-matching.html]
- [Matching font-style: 'oblique -10deg' should prefer 'oblique -20deg -15deg' over 'oblique -60deg -30deg']
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-images/conic-gradient-angle-negative.html.ini b/tests/wpt/meta/css/css-images/conic-gradient-angle-negative.html.ini
new file mode 100644
index 00000000000..2d32aca2dd1
--- /dev/null
+++ b/tests/wpt/meta/css/css-images/conic-gradient-angle-negative.html.ini
@@ -0,0 +1,2 @@
+[conic-gradient-angle-negative.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-images/conic-gradient-angle.html.ini b/tests/wpt/meta/css/css-images/conic-gradient-angle.html.ini
new file mode 100644
index 00000000000..f5905bc26fd
--- /dev/null
+++ b/tests/wpt/meta/css/css-images/conic-gradient-angle.html.ini
@@ -0,0 +1,2 @@
+[conic-gradient-angle.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-images/conic-gradient-center.html.ini b/tests/wpt/meta/css/css-images/conic-gradient-center.html.ini
new file mode 100644
index 00000000000..52c7e1636ef
--- /dev/null
+++ b/tests/wpt/meta/css/css-images/conic-gradient-center.html.ini
@@ -0,0 +1,2 @@
+[conic-gradient-center.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-images/multiple-position-color-stop-conic.html.ini b/tests/wpt/meta/css/css-images/multiple-position-color-stop-conic.html.ini
new file mode 100644
index 00000000000..7897d70c1a1
--- /dev/null
+++ b/tests/wpt/meta/css/css-images/multiple-position-color-stop-conic.html.ini
@@ -0,0 +1,2 @@
+[multiple-position-color-stop-conic.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-images/normalization-conic-2.html.ini b/tests/wpt/meta/css/css-images/normalization-conic-2.html.ini
new file mode 100644
index 00000000000..712f51069c5
--- /dev/null
+++ b/tests/wpt/meta/css/css-images/normalization-conic-2.html.ini
@@ -0,0 +1,2 @@
+[normalization-conic-2.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-images/normalization-conic-degenerate.html.ini b/tests/wpt/meta/css/css-images/normalization-conic-degenerate.html.ini
new file mode 100644
index 00000000000..7348a8278d8
--- /dev/null
+++ b/tests/wpt/meta/css/css-images/normalization-conic-degenerate.html.ini
@@ -0,0 +1,2 @@
+[normalization-conic-degenerate.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-images/normalization-conic.html.ini b/tests/wpt/meta/css/css-images/normalization-conic.html.ini
new file mode 100644
index 00000000000..a5ac414e610
--- /dev/null
+++ b/tests/wpt/meta/css/css-images/normalization-conic.html.ini
@@ -0,0 +1,2 @@
+[normalization-conic.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-images/out-of-range-color-stop-conic.html.ini b/tests/wpt/meta/css/css-images/out-of-range-color-stop-conic.html.ini
new file mode 100644
index 00000000000..fa1a353540c
--- /dev/null
+++ b/tests/wpt/meta/css/css-images/out-of-range-color-stop-conic.html.ini
@@ -0,0 +1,2 @@
+[out-of-range-color-stop-conic.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-images/tiled-conic-gradients.html.ini b/tests/wpt/meta/css/css-images/tiled-conic-gradients.html.ini
new file mode 100644
index 00000000000..e2b676b1315
--- /dev/null
+++ b/tests/wpt/meta/css/css-images/tiled-conic-gradients.html.ini
@@ -0,0 +1,2 @@
+[tiled-conic-gradients.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-lists/pseudo-element-remove-update.html.ini b/tests/wpt/meta/css/css-lists/pseudo-element-remove-update.html.ini
new file mode 100644
index 00000000000..9c228bcd43f
--- /dev/null
+++ b/tests/wpt/meta/css/css-lists/pseudo-element-remove-update.html.ini
@@ -0,0 +1,2 @@
+[pseudo-element-remove-update.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-outline/outline-width-rounding.tentative.html.ini b/tests/wpt/meta/css/css-outline/outline-width-rounding.tentative.html.ini
deleted file mode 100644
index eade878b956..00000000000
--- a/tests/wpt/meta/css/css-outline/outline-width-rounding.tentative.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[outline-width-rounding.tentative.html]
- [Test that outline widths are rounded up when they are greater than 0px but less than 1px, and rounded down when they are greater than 1px.]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-overflow/line-clamp/line-clamp-auto-033.tentative.html.ini b/tests/wpt/meta/css/css-overflow/line-clamp/line-clamp-auto-033.tentative.html.ini
new file mode 100644
index 00000000000..1821369372d
--- /dev/null
+++ b/tests/wpt/meta/css/css-overflow/line-clamp/line-clamp-auto-033.tentative.html.ini
@@ -0,0 +1,2 @@
+[line-clamp-auto-033.tentative.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-overflow/line-clamp/line-clamp-auto-034.tentative.html.ini b/tests/wpt/meta/css/css-overflow/line-clamp/line-clamp-auto-034.tentative.html.ini
new file mode 100644
index 00000000000..29472609ea1
--- /dev/null
+++ b/tests/wpt/meta/css/css-overflow/line-clamp/line-clamp-auto-034.tentative.html.ini
@@ -0,0 +1,2 @@
+[line-clamp-auto-034.tentative.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-pseudo/parsing/marker-supported-properties.html.ini b/tests/wpt/meta/css/css-pseudo/parsing/marker-supported-properties.html.ini
index 1b852abc7cb..cb4247c08b9 100644
--- a/tests/wpt/meta/css/css-pseudo/parsing/marker-supported-properties.html.ini
+++ b/tests/wpt/meta/css/css-pseudo/parsing/marker-supported-properties.html.ini
@@ -184,3 +184,6 @@
[Property list-style-type value 'decimal' in ::marker]
expected: FAIL
+
+ [Property cursor value 'move' in ::marker]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-sizing/block-size-with-min-or-max-content-2.html.ini b/tests/wpt/meta/css/css-sizing/block-size-with-min-or-max-content-2.html.ini
new file mode 100644
index 00000000000..2cbaeed40c7
--- /dev/null
+++ b/tests/wpt/meta/css/css-sizing/block-size-with-min-or-max-content-2.html.ini
@@ -0,0 +1,2 @@
+[block-size-with-min-or-max-content-2.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-sizing/block-size-with-min-or-max-content-3.html.ini b/tests/wpt/meta/css/css-sizing/block-size-with-min-or-max-content-3.html.ini
new file mode 100644
index 00000000000..176b69004a4
--- /dev/null
+++ b/tests/wpt/meta/css/css-sizing/block-size-with-min-or-max-content-3.html.ini
@@ -0,0 +1,2 @@
+[block-size-with-min-or-max-content-3.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-sizing/block-size-with-min-or-max-content-4.html.ini b/tests/wpt/meta/css/css-sizing/block-size-with-min-or-max-content-4.html.ini
new file mode 100644
index 00000000000..47258ad268e
--- /dev/null
+++ b/tests/wpt/meta/css/css-sizing/block-size-with-min-or-max-content-4.html.ini
@@ -0,0 +1,2 @@
+[block-size-with-min-or-max-content-4.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-sizing/block-size-with-min-or-max-content-5.html.ini b/tests/wpt/meta/css/css-sizing/block-size-with-min-or-max-content-5.html.ini
new file mode 100644
index 00000000000..e83cce2e0ab
--- /dev/null
+++ b/tests/wpt/meta/css/css-sizing/block-size-with-min-or-max-content-5.html.ini
@@ -0,0 +1,2 @@
+[block-size-with-min-or-max-content-5.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-sizing/block-size-with-min-or-max-content-6.html.ini b/tests/wpt/meta/css/css-sizing/block-size-with-min-or-max-content-6.html.ini
new file mode 100644
index 00000000000..6e9b8930c28
--- /dev/null
+++ b/tests/wpt/meta/css/css-sizing/block-size-with-min-or-max-content-6.html.ini
@@ -0,0 +1,2 @@
+[block-size-with-min-or-max-content-6.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-sizing/block-size-with-min-or-max-content-7.html.ini b/tests/wpt/meta/css/css-sizing/block-size-with-min-or-max-content-7.html.ini
new file mode 100644
index 00000000000..67d7103c0a8
--- /dev/null
+++ b/tests/wpt/meta/css/css-sizing/block-size-with-min-or-max-content-7.html.ini
@@ -0,0 +1,2 @@
+[block-size-with-min-or-max-content-7.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-sizing/replaced-max-height-min-content.html.ini b/tests/wpt/meta/css/css-sizing/replaced-max-height-min-content.html.ini
new file mode 100644
index 00000000000..1850f3c41c2
--- /dev/null
+++ b/tests/wpt/meta/css/css-sizing/replaced-max-height-min-content.html.ini
@@ -0,0 +1,2 @@
+[replaced-max-height-min-content.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-sizing/replaced-max-width-min-content.html.ini b/tests/wpt/meta/css/css-sizing/replaced-max-width-min-content.html.ini
new file mode 100644
index 00000000000..70634828627
--- /dev/null
+++ b/tests/wpt/meta/css/css-sizing/replaced-max-width-min-content.html.ini
@@ -0,0 +1,2 @@
+[replaced-max-width-min-content.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-sizing/replaced-min-height-min-content.html.ini b/tests/wpt/meta/css/css-sizing/replaced-min-height-min-content.html.ini
new file mode 100644
index 00000000000..e10292f4a06
--- /dev/null
+++ b/tests/wpt/meta/css/css-sizing/replaced-min-height-min-content.html.ini
@@ -0,0 +1,2 @@
+[replaced-min-height-min-content.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-sizing/replaced-min-width-min-content.html.ini b/tests/wpt/meta/css/css-sizing/replaced-min-width-min-content.html.ini
new file mode 100644
index 00000000000..acf6d031ca8
--- /dev/null
+++ b/tests/wpt/meta/css/css-sizing/replaced-min-width-min-content.html.ini
@@ -0,0 +1,2 @@
+[replaced-min-width-min-content.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-sizing/svg-no-ar-max-height-min-content.html.ini b/tests/wpt/meta/css/css-sizing/svg-no-ar-max-height-min-content.html.ini
new file mode 100644
index 00000000000..7353d867505
--- /dev/null
+++ b/tests/wpt/meta/css/css-sizing/svg-no-ar-max-height-min-content.html.ini
@@ -0,0 +1,2 @@
+[svg-no-ar-max-height-min-content.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-sizing/svg-no-ar-min-height-min-content.html.ini b/tests/wpt/meta/css/css-sizing/svg-no-ar-min-height-min-content.html.ini
new file mode 100644
index 00000000000..75211364e3b
--- /dev/null
+++ b/tests/wpt/meta/css/css-sizing/svg-no-ar-min-height-min-content.html.ini
@@ -0,0 +1,2 @@
+[svg-no-ar-min-height-min-content.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-text-decor/text-decoration-underline-position-vertical-ja.html.ini b/tests/wpt/meta/css/css-text-decor/text-decoration-underline-position-vertical-ja.html.ini
deleted file mode 100644
index 2c69ffca92c..00000000000
--- a/tests/wpt/meta/css/css-text-decor/text-decoration-underline-position-vertical-ja.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[text-decoration-underline-position-vertical-ja.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-text-decor/text-decoration-underline-position-vertical.html.ini b/tests/wpt/meta/css/css-text-decor/text-decoration-underline-position-vertical.html.ini
deleted file mode 100644
index cfdff6ecde1..00000000000
--- a/tests/wpt/meta/css/css-text-decor/text-decoration-underline-position-vertical.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[text-decoration-underline-position-vertical.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-text-decor/text-underline-position-vertical-ja.html.ini b/tests/wpt/meta/css/css-text-decor/text-underline-position-vertical-ja.html.ini
new file mode 100644
index 00000000000..ea2203ff67f
--- /dev/null
+++ b/tests/wpt/meta/css/css-text-decor/text-underline-position-vertical-ja.html.ini
@@ -0,0 +1,2 @@
+[text-underline-position-vertical-ja.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-text-decor/text-underline-position-vertical.html.ini b/tests/wpt/meta/css/css-text-decor/text-underline-position-vertical.html.ini
new file mode 100644
index 00000000000..e5bd825acf3
--- /dev/null
+++ b/tests/wpt/meta/css/css-text-decor/text-underline-position-vertical.html.ini
@@ -0,0 +1,2 @@
+[text-underline-position-vertical.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-transforms/animation/transform-box-will-change-transform-layer.html.ini b/tests/wpt/meta/css/css-transforms/animation/transform-box-will-change-transform-layer.html.ini
new file mode 100644
index 00000000000..40d004b03b6
--- /dev/null
+++ b/tests/wpt/meta/css/css-transforms/animation/transform-box-will-change-transform-layer.html.ini
@@ -0,0 +1,2 @@
+[transform-box-will-change-transform-layer.html]
+ expected: TIMEOUT
diff --git a/tests/wpt/meta/css/css-transforms/animation/transform-box.html.ini b/tests/wpt/meta/css/css-transforms/animation/transform-box.html.ini
new file mode 100644
index 00000000000..e2320dd4c15
--- /dev/null
+++ b/tests/wpt/meta/css/css-transforms/animation/transform-box.html.ini
@@ -0,0 +1,2 @@
+[transform-box.html]
+ expected: TIMEOUT
diff --git a/tests/wpt/meta/css/css-values/attr-all-types.html.ini b/tests/wpt/meta/css/css-values/attr-all-types.html.ini
index b4ee5fc070d..b78185da0c1 100644
--- a/tests/wpt/meta/css/css-values/attr-all-types.html.ini
+++ b/tests/wpt/meta/css/css-values/attr-all-types.html.ini
@@ -41,42 +41,18 @@
[CSS Values and Units Test: attr 14]
expected: FAIL
- [CSS Values and Units Test: attr 15]
- expected: FAIL
-
[CSS Values and Units Test: attr 18]
expected: FAIL
- [CSS Values and Units Test: attr 19]
- expected: FAIL
-
- [CSS Values and Units Test: attr 20]
- expected: FAIL
-
[CSS Values and Units Test: attr 21]
expected: FAIL
- [CSS Values and Units Test: attr 25]
- expected: FAIL
-
- [CSS Values and Units Test: attr 26]
- expected: FAIL
-
[CSS Values and Units Test: attr 28]
expected: FAIL
[CSS Values and Units Test: attr 29]
expected: FAIL
- [CSS Values and Units Test: attr 30]
- expected: FAIL
-
- [CSS Values and Units Test: attr 31]
- expected: FAIL
-
- [CSS Values and Units Test: attr 32]
- expected: FAIL
-
[CSS Values and Units Test: attr 33]
expected: FAIL
@@ -146,14 +122,47 @@
[CSS Values and Units Test: attr 55]
expected: FAIL
- [CSS Values and Units Test: attr 64]
+ [CSS Values and Units Test: attr 12]
+ expected: FAIL
+
+ [CSS Values and Units Test: attr 16]
+ expected: FAIL
+
+ [CSS Values and Units Test: attr 17]
+ expected: FAIL
+
+ [CSS Values and Units Test: attr 22]
+ expected: FAIL
+
+ [CSS Values and Units Test: attr 23]
+ expected: FAIL
+
+ [CSS Values and Units Test: attr 24]
+ expected: FAIL
+
+ [CSS Values and Units Test: attr 56]
+ expected: FAIL
+
+ [CSS Values and Units Test: attr 57]
+ expected: FAIL
+
+ [CSS Values and Units Test: attr 58]
+ expected: FAIL
+
+ [CSS Values and Units Test: attr 59]
+ expected: FAIL
+
+ [CSS Values and Units Test: attr 60]
+ expected: FAIL
+
+ [CSS Values and Units Test: attr 69]
expected: FAIL
- [CSS Values and Units Test: attr 65]
+ [CSS Values and Units Test: attr 70]
expected: FAIL
- [CSS Values and Units Test: attr 66]
+ [CSS Values and Units Test: attr 71]
expected: FAIL
- [CSS Values and Units Test: attr 67]
+ [CSS Values and Units Test: attr 72]
expected: FAIL
diff --git a/tests/wpt/meta/css/css-values/attr-invalid-type-008.html.ini b/tests/wpt/meta/css/css-values/attr-invalid-type-008.html.ini
deleted file mode 100644
index 65fd07a15f3..00000000000
--- a/tests/wpt/meta/css/css-values/attr-invalid-type-008.html.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[attr-invalid-type-008.html]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-values/attr-pseudo-elem-invalidation.html.ini b/tests/wpt/meta/css/css-values/attr-pseudo-elem-invalidation.html.ini
new file mode 100644
index 00000000000..5962238388c
--- /dev/null
+++ b/tests/wpt/meta/css/css-values/attr-pseudo-elem-invalidation.html.ini
@@ -0,0 +1,18 @@
+[attr-pseudo-elem-invalidation.html]
+ [CSS Values and Units Test: attr() invalidation of pseudo elements]
+ expected: FAIL
+
+ [CSS Values and Units Test: attr() invalidation of pseudo elements 1]
+ expected: FAIL
+
+ [CSS Values and Units Test: attr() invalidation of pseudo elements 2]
+ expected: FAIL
+
+ [CSS Values and Units Test: attr() invalidation of pseudo elements 3]
+ expected: FAIL
+
+ [CSS Values and Units Test: attr() invalidation of pseudo elements 4]
+ expected: FAIL
+
+ [CSS Values and Units Test: attr() invalidation of pseudo elements 5]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-values/calc-size/animation/calc-size-height-interpolation.html.ini b/tests/wpt/meta/css/css-values/calc-size/animation/calc-size-height-interpolation.html.ini
new file mode 100644
index 00000000000..82f26f67c1e
--- /dev/null
+++ b/tests/wpt/meta/css/css-values/calc-size/animation/calc-size-height-interpolation.html.ini
@@ -0,0 +1,3492 @@
+[calc-size-height-interpolation.html]
+ [CSS Transitions: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.25) should be [125px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.5) should be [150px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.25) should be [125px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.5) should be [150px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.25) should be [125px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.5) should be [150px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.25) should be [125px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.5) should be [150px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from neutral to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from neutral to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from neutral to [calc-size(auto, size * 2)\] at (0.25) should be [125px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from neutral to [calc-size(auto, size * 2)\] at (0.5) should be [150px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from neutral to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from neutral to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from neutral to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from neutral to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from neutral to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from neutral to [calc-size(auto, size * 2)\] at (0.25) should be [125px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from neutral to [calc-size(auto, size * 2)\] at (0.5) should be [150px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from neutral to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from neutral to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from neutral to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from neutral to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from neutral to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from neutral to [calc-size(auto, size * 2)\] at (0.25) should be [125px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from neutral to [calc-size(auto, size * 2)\] at (0.5) should be [150px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from neutral to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from neutral to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from neutral to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from neutral to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from neutral to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from neutral to [calc-size(auto, size * 2)\] at (0.25) should be [125px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from neutral to [calc-size(auto, size * 2)\] at (0.5) should be [150px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from neutral to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from neutral to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from neutral to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (-0.25) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0.25) should be [25px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0.5) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0.75) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (1.25) should be [125px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (-0.25) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0.25) should be [25px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0.5) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0.75) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (1.25) should be [125px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (-0.25) should be [0\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0) should be [0\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0.25) should be [25px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0.5) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0.75) should be [75px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (1.25) should be [125px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (-0.25) should be [0\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0) should be [0\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0.25) should be [25px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0.5) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0.75) should be [75px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (1.25) should be [125px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (-0.25) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.25) should be [25px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.5) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.75) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1.25) should be [125px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (-0.25) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.25) should be [25px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.5) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.75) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1.25) should be [125px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (-0.25) should be [0\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0) should be [0\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.25) should be [25px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.5) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.75) should be [75px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1.25) should be [125px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (-0.25) should be [0\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0) should be [0\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.25) should be [25px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.5) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.75) should be [75px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1.25) should be [125px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [0\] to [calc-size(max-content, size)\] at (-0.25) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [0\] to [calc-size(max-content, size)\] at (0) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [0\] to [calc-size(max-content, size)\] at (0.25) should be [25px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [0\] to [calc-size(max-content, size)\] at (0.5) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [0\] to [calc-size(max-content, size)\] at (0.75) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [0\] to [calc-size(max-content, size)\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [0\] to [calc-size(max-content, size)\] at (1.25) should be [125px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [0\] to [calc-size(max-content, size)\] at (-0.25) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [0\] to [calc-size(max-content, size)\] at (0) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [0\] to [calc-size(max-content, size)\] at (0.25) should be [25px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [0\] to [calc-size(max-content, size)\] at (0.5) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [0\] to [calc-size(max-content, size)\] at (0.75) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [0\] to [calc-size(max-content, size)\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [0\] to [calc-size(max-content, size)\] at (1.25) should be [125px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [0\] to [calc-size(max-content, size)\] at (-0.25) should be [0\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [0\] to [calc-size(max-content, size)\] at (0) should be [0\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [0\] to [calc-size(max-content, size)\] at (0.25) should be [25px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [0\] to [calc-size(max-content, size)\] at (0.5) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [0\] to [calc-size(max-content, size)\] at (0.75) should be [75px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [0\] to [calc-size(max-content, size)\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [0\] to [calc-size(max-content, size)\] at (1.25) should be [125px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [0\] to [calc-size(max-content, size)\] at (-0.25) should be [0\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [0\] to [calc-size(max-content, size)\] at (0) should be [0\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [0\] to [calc-size(max-content, size)\] at (0.25) should be [25px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [0\] to [calc-size(max-content, size)\] at (0.5) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [0\] to [calc-size(max-content, size)\] at (0.75) should be [75px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [0\] to [calc-size(max-content, size)\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [0\] to [calc-size(max-content, size)\] at (1.25) should be [125px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [auto\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [auto\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [auto\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [auto\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [auto\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [auto\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [auto\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [auto\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [auto\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [auto\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [auto\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [auto\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [auto\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [auto\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [auto\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0.75) should be [162.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1.25) should be [237.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0.75) should be [162.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1.25) should be [237.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0.75) should be [162.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1.25) should be [237.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0.75) should be [162.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1.25) should be [237.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [auto\] to [calc-size(50px, size)\] at (-0.3) should be [auto\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [auto\] to [calc-size(50px, size)\] at (0) should be [auto\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [auto\] to [calc-size(50px, size)\] at (0.3) should be [auto\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [auto\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [auto\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [auto\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [auto\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [auto\] to [calc-size(50px, size)\] at (-0.3) should be [auto\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [auto\] to [calc-size(50px, size)\] at (0) should be [auto\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [auto\] to [calc-size(50px, size)\] at (0.3) should be [auto\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [auto\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [auto\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [auto\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [auto\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [auto\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [auto\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [auto\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [auto\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [auto\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [auto\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [auto\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [auto\] to [calc-size(50px, size)\] at (-0.3) should be [auto\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [auto\] to [calc-size(50px, size)\] at (0) should be [auto\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [auto\] to [calc-size(50px, size)\] at (0.3) should be [auto\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [auto\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [auto\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [auto\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [auto\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [auto\] to [calc-size(50px, size)\] at (-0.3) should be [auto\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [auto\] to [calc-size(50px, size)\] at (0) should be [auto\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [auto\] to [calc-size(50px, size)\] at (0.3) should be [auto\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [auto\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [auto\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [auto\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [auto\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [min-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [min-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [min-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [min-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [min-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [min-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [min-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [min-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [min-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [min-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [min-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [min-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [min-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [min-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [min-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0.75) should be [162.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1.25) should be [237.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0.75) should be [162.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1.25) should be [237.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0.75) should be [162.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1.25) should be [237.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0.75) should be [162.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1.25) should be [237.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [min-content\] to [calc-size(50px, size)\] at (-0.3) should be [min-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [min-content\] to [calc-size(50px, size)\] at (0) should be [min-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.3) should be [min-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [min-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [min-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [min-content\] to [calc-size(50px, size)\] at (-0.3) should be [min-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [min-content\] to [calc-size(50px, size)\] at (0) should be [min-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.3) should be [min-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [min-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [min-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [min-content\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [min-content\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [min-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [min-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [min-content\] to [calc-size(50px, size)\] at (-0.3) should be [min-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [min-content\] to [calc-size(50px, size)\] at (0) should be [min-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.3) should be [min-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [min-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [min-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [min-content\] to [calc-size(50px, size)\] at (-0.3) should be [min-content\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [min-content\] to [calc-size(50px, size)\] at (0) should be [min-content\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.3) should be [min-content\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [min-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [min-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [162.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [237.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [162.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [237.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [162.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [237.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [162.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [237.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [fit-content\] to [calc-size(50px, size)\] at (-0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [fit-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [fit-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [fit-content\] to [calc-size(50px, size)\] at (-0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [fit-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [fit-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [fit-content\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [fit-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [fit-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [fit-content\] to [calc-size(50px, size)\] at (-0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [fit-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [fit-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [fit-content\] to [calc-size(50px, size)\] at (-0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0) should be [fit-content\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [fit-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [fit-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [max-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [max-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [max-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [max-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [max-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [max-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [max-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [max-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [max-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [max-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [max-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [max-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [max-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [max-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [max-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0.75) should be [162.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1.25) should be [237.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0.75) should be [162.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1.25) should be [237.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0.75) should be [162.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1.25) should be [237.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0.75) should be [162.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1.25) should be [237.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [max-content\] to [calc-size(50px, size)\] at (-0.3) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [max-content\] to [calc-size(50px, size)\] at (0) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.3) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [max-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [max-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [max-content\] to [calc-size(50px, size)\] at (-0.3) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [max-content\] to [calc-size(50px, size)\] at (0) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.3) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [max-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [max-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [max-content\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [max-content\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [max-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [max-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [max-content\] to [calc-size(50px, size)\] at (-0.3) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [max-content\] to [calc-size(50px, size)\] at (0) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.3) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [max-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [max-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [max-content\] to [calc-size(50px, size)\] at (-0.3) should be [max-content\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [max-content\] to [calc-size(50px, size)\] at (0) should be [max-content\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.3) should be [max-content\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [max-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [max-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (-0.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (0) should be [300px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (0.75) should be [525px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (1) should be [600px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (1.25) should be [675px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (-0.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (0) should be [300px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (0.75) should be [525px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (1) should be [600px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (1.25) should be [675px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (-0.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (0) should be [300px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (0.75) should be [525px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (1) should be [600px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (1.25) should be [675px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (-0.25) should be [225px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (0) should be [300px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (0.75) should be [525px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (1) should be [600px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (1.25) should be [675px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [stretch\] to [calc-size(any, 50px)\] at (-0.25) should be [362.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [stretch\] to [calc-size(any, 50px)\] at (0) should be [300px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [stretch\] to [calc-size(any, 50px)\] at (0.75) should be [112.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [stretch\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [stretch\] to [calc-size(any, 50px)\] at (1.25) should be [-12.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(any, 50px)\] at (-0.25) should be [362.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(any, 50px)\] at (0) should be [300px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(any, 50px)\] at (0.75) should be [112.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(any, 50px)\] at (1.25) should be [-12.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [stretch\] to [calc-size(any, 50px)\] at (-0.25) should be [362.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [stretch\] to [calc-size(any, 50px)\] at (0) should be [300px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [stretch\] to [calc-size(any, 50px)\] at (0.75) should be [112.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [stretch\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [stretch\] to [calc-size(any, 50px)\] at (1.25) should be [-12.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [stretch\] to [calc-size(any, 50px)\] at (-0.25) should be [362.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [stretch\] to [calc-size(any, 50px)\] at (0) should be [300px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [stretch\] to [calc-size(any, 50px)\] at (0.75) should be [112.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [stretch\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [stretch\] to [calc-size(any, 50px)\] at (1.25) should be [-12.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (-0.1) should be [-4.999999999999993px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0.75) should be [462.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1) should be [600px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1.25) should be [737.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (-0.1) should be [-4.999999999999993px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0.75) should be [462.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1) should be [600px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1.25) should be [737.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (-0.1) should be [-4.999999999999993px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0.75) should be [462.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1) should be [600px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1.25) should be [737.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (-0.1) should be [-4.999999999999993px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0.75) should be [462.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1) should be [600px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1.25) should be [737.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [stretch\] to [calc-size(50px, size)\] at (-0.3) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [stretch\] to [calc-size(50px, size)\] at (0) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.3) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [stretch\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [stretch\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [stretch\] to [calc-size(50px, size)\] at (-0.3) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [stretch\] to [calc-size(50px, size)\] at (0) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.3) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [stretch\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [stretch\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [stretch\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [stretch\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [stretch\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [stretch\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [stretch\] to [calc-size(50px, size)\] at (-0.3) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [stretch\] to [calc-size(50px, size)\] at (0) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.3) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [stretch\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [stretch\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [stretch\] to [calc-size(50px, size)\] at (-0.3) should be [stretch\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [stretch\] to [calc-size(50px, size)\] at (0) should be [stretch\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.3) should be [stretch\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [stretch\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [stretch\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [auto\] to [calc-size(fit-content, size)\] at (-0.3) should be [auto\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0) should be [auto\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.3) should be [auto\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.5) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.6) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [auto\] to [calc-size(fit-content, size)\] at (1) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [auto\] to [calc-size(fit-content, size)\] at (1.5) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [auto\] to [calc-size(fit-content, size)\] at (-0.3) should be [auto\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0) should be [auto\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.3) should be [auto\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.5) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.6) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [auto\] to [calc-size(fit-content, size)\] at (1) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [auto\] to [calc-size(fit-content, size)\] at (1.5) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [auto\] to [calc-size(fit-content, size)\] at (-0.3) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.3) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.5) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.6) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [auto\] to [calc-size(fit-content, size)\] at (1) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [auto\] to [calc-size(fit-content, size)\] at (1.5) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(fit-content, size)\] at (-0.3) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.3) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.5) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.6) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(fit-content, size)\] at (1) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(fit-content, size)\] at (1.5) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [auto\] to [calc-size(fit-content, size)\] at (-0.3) should be [auto\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0) should be [auto\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.3) should be [auto\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.5) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.6) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [auto\] to [calc-size(fit-content, size)\] at (1) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [auto\] to [calc-size(fit-content, size)\] at (1.5) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [auto\] to [calc-size(fit-content, size)\] at (-0.3) should be [auto\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0) should be [auto\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.3) should be [auto\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.5) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.6) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [auto\] to [calc-size(fit-content, size)\] at (1) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [auto\] to [calc-size(fit-content, size)\] at (1.5) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (-0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.5) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.6) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (1) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (1.5) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (-0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.5) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.6) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (1) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (1.5) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (-0.3) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.3) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.5) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.6) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (1) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (1.5) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (-0.3) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.3) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.5) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.6) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (1) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (1.5) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (-0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.5) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.6) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (1) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (1.5) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (-0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0) should be [fit-content\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.5) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.6) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (1) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (1.5) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [stretch\] to [calc-size(auto, size)\] at (-0.3) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [stretch\] to [calc-size(auto, size)\] at (0) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.3) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.5) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.6) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [stretch\] to [calc-size(auto, size)\] at (1) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [stretch\] to [calc-size(auto, size)\] at (1.5) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [stretch\] to [calc-size(auto, size)\] at (-0.3) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [stretch\] to [calc-size(auto, size)\] at (0) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.3) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.5) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.6) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [stretch\] to [calc-size(auto, size)\] at (1) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [stretch\] to [calc-size(auto, size)\] at (1.5) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [stretch\] to [calc-size(auto, size)\] at (-0.3) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [stretch\] to [calc-size(auto, size)\] at (0) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.3) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.5) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.6) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [stretch\] to [calc-size(auto, size)\] at (1) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [stretch\] to [calc-size(auto, size)\] at (1.5) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(auto, size)\] at (-0.3) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(auto, size)\] at (0) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.3) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.5) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.6) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(auto, size)\] at (1) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(auto, size)\] at (1.5) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [stretch\] to [calc-size(auto, size)\] at (-0.3) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [stretch\] to [calc-size(auto, size)\] at (0) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.3) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.5) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.6) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [stretch\] to [calc-size(auto, size)\] at (1) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [stretch\] to [calc-size(auto, size)\] at (1.5) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [stretch\] to [calc-size(auto, size)\] at (-0.3) should be [stretch\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [stretch\] to [calc-size(auto, size)\] at (0) should be [stretch\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.3) should be [stretch\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.5) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.6) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [stretch\] to [calc-size(auto, size)\] at (1) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [stretch\] to [calc-size(auto, size)\] at (1.5) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [max-content\] to [calc-size(stretch, size)\] at (-0.3) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.3) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.5) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.6) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [max-content\] to [calc-size(stretch, size)\] at (1) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [max-content\] to [calc-size(stretch, size)\] at (1.5) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [max-content\] to [calc-size(stretch, size)\] at (-0.3) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.3) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.5) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.6) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [max-content\] to [calc-size(stretch, size)\] at (1) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [max-content\] to [calc-size(stretch, size)\] at (1.5) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [max-content\] to [calc-size(stretch, size)\] at (-0.3) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.3) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.5) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.6) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [max-content\] to [calc-size(stretch, size)\] at (1) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [max-content\] to [calc-size(stretch, size)\] at (1.5) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(stretch, size)\] at (-0.3) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.3) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.5) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.6) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(stretch, size)\] at (1) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(stretch, size)\] at (1.5) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [max-content\] to [calc-size(stretch, size)\] at (-0.3) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.3) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.5) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.6) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [max-content\] to [calc-size(stretch, size)\] at (1) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [max-content\] to [calc-size(stretch, size)\] at (1.5) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [max-content\] to [calc-size(stretch, size)\] at (-0.3) should be [max-content\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0) should be [max-content\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.3) should be [max-content\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.5) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.6) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [max-content\] to [calc-size(stretch, size)\] at (1) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [max-content\] to [calc-size(stretch, size)\] at (1.5) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (-0.25) should be [10px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0.75) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1) should be [60px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1.25) should be [70px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (-0.25) should be [10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0.75) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1) should be [60px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1.25) should be [70px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (-0.25) should be [10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0.75) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1) should be [60px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1.25) should be [70px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (-0.25) should be [10px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0.75) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1) should be [60px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1.25) should be [70px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (-0.25) should be [175px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0) should be [150px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.75) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1.25) should be [25px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (-0.25) should be [175px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0) should be [150px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.75) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1.25) should be [25px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (-0.25) should be [175px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0) should be [150px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.75) should be [75px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1.25) should be [25px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (-0.25) should be [175px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0) should be [150px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.75) should be [75px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1.25) should be [25px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (-0.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (0.75) should be [125px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (1.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (-0.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (0.75) should be [125px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (1.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (-0.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (0.75) should be [125px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (1.25) should be [75px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (-0.25) should be [225px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (0.75) should be [125px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (1.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(auto, size)\] to [50%\] at (-0.25) should be [87.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(auto, size)\] to [50%\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(auto, size)\] to [50%\] at (0.75) should be [137.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(auto, size)\] to [50%\] at (1) should be [150px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(auto, size)\] to [50%\] at (1.25) should be [162.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [50%\] at (-0.25) should be [87.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [50%\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [50%\] at (0.75) should be [137.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [50%\] at (1) should be [150px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [50%\] at (1.25) should be [162.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(auto, size)\] to [50%\] at (-0.25) should be [87.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(auto, size)\] to [50%\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(auto, size)\] to [50%\] at (0.75) should be [137.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(auto, size)\] to [50%\] at (1) should be [150px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(auto, size)\] to [50%\] at (1.25) should be [162.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(auto, size)\] to [50%\] at (-0.25) should be [87.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(auto, size)\] to [50%\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(auto, size)\] to [50%\] at (0.75) should be [137.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(auto, size)\] to [50%\] at (1) should be [150px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(auto, size)\] to [50%\] at (1.25) should be [162.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (-0.25) should be [250px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (0.75) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (1) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (1.25) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (-0.25) should be [250px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (0.75) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (1) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (1.25) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (-0.25) should be [250px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (0.75) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (1) should be [0px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (1.25) should be [0px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (-0.25) should be [250px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (0.75) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (1) should be [0px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (1.25) should be [0px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (-0.3) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.3) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.5) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.6) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (1) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (1.5) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (-0.3) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.3) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.5) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.6) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (1) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (1.5) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (-0.3) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.3) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.5) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.6) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (1) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (1.5) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (-0.3) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.3) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.5) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.6) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (1) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (1.5) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (-0.3) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.3) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.5) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.6) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (1) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (1.5) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (-0.3) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.3) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.5) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.6) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (1) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (1.5) should be [calc-size(50%, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (-0.3) should be [calc-size(calc-size(auto, size / 2), size * 2)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0) should be [calc-size(calc-size(auto, size / 2), size * 2)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.3) should be [calc-size(calc-size(auto, size / 2), size * 2)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.5) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.6) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1.5) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (-0.3) should be [calc-size(calc-size(auto, size / 2), size * 2)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0) should be [calc-size(calc-size(auto, size / 2), size * 2)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.3) should be [calc-size(calc-size(auto, size / 2), size * 2)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.5) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.6) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1.5) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (-0.3) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.3) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.5) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.6) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1.5) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (-0.3) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.3) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.5) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.6) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1.5) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (-0.3) should be [calc-size(calc-size(auto, size / 2), size * 2)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0) should be [calc-size(calc-size(auto, size / 2), size * 2)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.3) should be [calc-size(calc-size(auto, size / 2), size * 2)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.5) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.6) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1.5) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (-0.3) should be [calc-size(calc-size(auto, size / 2), size * 2)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0) should be [calc-size(calc-size(auto, size / 2), size * 2)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.3) should be [calc-size(calc-size(auto, size / 2), size * 2)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.5) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.6) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1.5) should be [calc-size(12.5%, size * 4)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (-0.25) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (0.75) should be [250px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (1) should be [300px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (1.25) should be [350px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (-0.25) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (0.75) should be [250px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (1) should be [300px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (1.25) should be [350px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (-0.25) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (0.75) should be [250px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (1) should be [300px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (1.25) should be [350px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (-0.25) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (0.75) should be [250px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (1) should be [300px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (1.25) should be [350px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (-0.125) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (0.75) should be [400px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (1) should be [500px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (1.25) should be [600px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (-0.125) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (0.75) should be [400px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (1) should be [500px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (1.25) should be [600px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (-0.125) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (0.75) should be [400px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (1) should be [500px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (1.25) should be [600px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (-0.125) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (0.75) should be [400px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (1) should be [500px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (1.25) should be [600px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (-0.25) should be [87.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.75) should be [137.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1) should be [150px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1.25) should be [162.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (-0.25) should be [87.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.75) should be [137.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1) should be [150px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1.25) should be [162.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (-0.25) should be [87.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.75) should be [137.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1) should be [150px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1.25) should be [162.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (-0.25) should be [87.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.75) should be [137.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1) should be [150px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1.25) should be [162.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (-0.25) should be [425px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (0) should be [400px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (0.75) should be [325px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (1) should be [300px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (1.25) should be [275px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (-0.25) should be [425px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (0) should be [400px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (0.75) should be [325px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (1) should be [300px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (1.25) should be [275px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (-0.25) should be [425px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (0) should be [400px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (0.75) should be [325px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (1) should be [300px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (1.25) should be [275px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (-0.25) should be [425px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (0) should be [400px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (0.75) should be [325px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (1) should be [300px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (1.25) should be [275px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (-0.3) should be [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0) should be [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.3) should be [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.5) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.6) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (1) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (1.5) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (-0.3) should be [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0) should be [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.3) should be [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.5) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.6) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (1) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (1.5) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (-0.3) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.3) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.5) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.6) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (1) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (1.5) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (-0.3) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.3) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.5) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.6) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (1) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (1.5) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (-0.3) should be [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0) should be [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.3) should be [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.5) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.6) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (1) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
+
+ [CSS Animations: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (1.5) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (-0.3) should be [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0) should be [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.3) should be [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.5) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.6) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (1) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
+
+ [Web Animations: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (1.5) should be [calc-size(auto, size * 3)\]]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-values/calc-size/animation/calc-size-height-interpolation.tentative.html.ini b/tests/wpt/meta/css/css-values/calc-size/animation/calc-size-height-interpolation.tentative.html.ini
deleted file mode 100644
index 8f11b5285e0..00000000000
--- a/tests/wpt/meta/css/css-values/calc-size/animation/calc-size-height-interpolation.tentative.html.ini
+++ /dev/null
@@ -1,3744 +0,0 @@
-[calc-size-height-interpolation.tentative.html]
- [CSS Transitions: property <height> from neutral to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from neutral to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from neutral to [calc-size(auto, size * 2)\] at (0.25) should be [125px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from neutral to [calc-size(auto, size * 2)\] at (0.5) should be [150px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from neutral to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from neutral to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from neutral to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from neutral to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from neutral to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from neutral to [calc-size(auto, size * 2)\] at (0.25) should be [125px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from neutral to [calc-size(auto, size * 2)\] at (0.5) should be [150px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from neutral to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from neutral to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from neutral to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from neutral to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from neutral to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from neutral to [calc-size(auto, size * 2)\] at (0.25) should be [125px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from neutral to [calc-size(auto, size * 2)\] at (0.5) should be [150px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from neutral to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from neutral to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from neutral to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [Web Animations: property <height> from neutral to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [Web Animations: property <height> from neutral to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [Web Animations: property <height> from neutral to [calc-size(auto, size * 2)\] at (0.25) should be [125px\]]
- expected: FAIL
-
- [Web Animations: property <height> from neutral to [calc-size(auto, size * 2)\] at (0.5) should be [150px\]]
- expected: FAIL
-
- [Web Animations: property <height> from neutral to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [Web Animations: property <height> from neutral to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [Web Animations: property <height> from neutral to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (-0.25) should be [0\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0) should be [0\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0.25) should be [25px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0.5) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0.75) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (1) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (1.25) should be [125px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (-0.25) should be [0\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0) should be [0\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0.25) should be [25px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0.5) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0.75) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (1) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (1.25) should be [125px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (-0.25) should be [0\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0) should be [0\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0.25) should be [25px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0.5) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0.75) should be [75px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (1) should be [100px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (1.25) should be [125px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (-0.25) should be [0\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0) should be [0\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0.25) should be [25px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0.5) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (0.75) should be [75px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (1) should be [100px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(min-content, 0 * size)\] to [calc-size(min-content, size)\] at (1.25) should be [125px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (-0.25) should be [0\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0) should be [0\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.25) should be [25px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.5) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.75) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1.25) should be [125px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (-0.25) should be [0\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0) should be [0\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.25) should be [25px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.5) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.75) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1.25) should be [125px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (-0.25) should be [0\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0) should be [0\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.25) should be [25px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.5) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.75) should be [75px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1) should be [100px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1.25) should be [125px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (-0.25) should be [0\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0) should be [0\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.25) should be [25px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.5) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.75) should be [75px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1) should be [100px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1.25) should be [125px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [0\] to [calc-size(max-content, size)\] at (-0.25) should be [0\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [0\] to [calc-size(max-content, size)\] at (0) should be [0\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [0\] to [calc-size(max-content, size)\] at (0.25) should be [25px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [0\] to [calc-size(max-content, size)\] at (0.5) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [0\] to [calc-size(max-content, size)\] at (0.75) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [0\] to [calc-size(max-content, size)\] at (1) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [0\] to [calc-size(max-content, size)\] at (1.25) should be [125px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [0\] to [calc-size(max-content, size)\] at (-0.25) should be [0\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [0\] to [calc-size(max-content, size)\] at (0) should be [0\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [0\] to [calc-size(max-content, size)\] at (0.25) should be [25px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [0\] to [calc-size(max-content, size)\] at (0.5) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [0\] to [calc-size(max-content, size)\] at (0.75) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [0\] to [calc-size(max-content, size)\] at (1) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [0\] to [calc-size(max-content, size)\] at (1.25) should be [125px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [0\] to [calc-size(max-content, size)\] at (-0.25) should be [0\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [0\] to [calc-size(max-content, size)\] at (0) should be [0\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [0\] to [calc-size(max-content, size)\] at (0.25) should be [25px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [0\] to [calc-size(max-content, size)\] at (0.5) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [0\] to [calc-size(max-content, size)\] at (0.75) should be [75px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [0\] to [calc-size(max-content, size)\] at (1) should be [100px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [0\] to [calc-size(max-content, size)\] at (1.25) should be [125px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [0\] to [calc-size(max-content, size)\] at (-0.25) should be [0\]]
- expected: FAIL
-
- [Web Animations: property <height> from [0\] to [calc-size(max-content, size)\] at (0) should be [0\]]
- expected: FAIL
-
- [Web Animations: property <height> from [0\] to [calc-size(max-content, size)\] at (0.25) should be [25px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [0\] to [calc-size(max-content, size)\] at (0.5) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [0\] to [calc-size(max-content, size)\] at (0.75) should be [75px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [0\] to [calc-size(max-content, size)\] at (1) should be [100px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [0\] to [calc-size(max-content, size)\] at (1.25) should be [125px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.25) should be [125px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.5) should be [150px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.25) should be [125px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.5) should be [150px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.25) should be [125px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.5) should be [150px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.25) should be [125px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.5) should be [150px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [auto\] to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [auto\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [auto\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [auto\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [auto\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [auto\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [auto\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [auto\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [auto\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [auto\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [auto\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [auto\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [auto\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [auto\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [auto\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [auto\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0.75) should be [162.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1.25) should be [237.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0.75) should be [162.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1.25) should be [237.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0.75) should be [162.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1.25) should be [237.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0.75) should be [162.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1.25) should be [237.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [auto\] to [calc-size(50px, size)\] at (-0.3) should be [auto\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [auto\] to [calc-size(50px, size)\] at (0) should be [auto\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [auto\] to [calc-size(50px, size)\] at (0.3) should be [auto\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [auto\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [auto\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [auto\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [auto\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [auto\] to [calc-size(50px, size)\] at (-0.3) should be [auto\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [auto\] to [calc-size(50px, size)\] at (0) should be [auto\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [auto\] to [calc-size(50px, size)\] at (0.3) should be [auto\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [auto\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [auto\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [auto\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [auto\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [auto\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [auto\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [auto\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [auto\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [auto\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [auto\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [auto\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [auto\] to [calc-size(50px, size)\] at (-0.3) should be [auto\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [auto\] to [calc-size(50px, size)\] at (0) should be [auto\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [auto\] to [calc-size(50px, size)\] at (0.3) should be [auto\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [auto\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [auto\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [auto\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [auto\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [auto\] to [calc-size(50px, size)\] at (-0.3) should be [auto\]]
- expected: FAIL
-
- [Web Animations: property <height> from [auto\] to [calc-size(50px, size)\] at (0) should be [auto\]]
- expected: FAIL
-
- [Web Animations: property <height> from [auto\] to [calc-size(50px, size)\] at (0.3) should be [auto\]]
- expected: FAIL
-
- [Web Animations: property <height> from [auto\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [auto\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [auto\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [auto\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [min-content\] to [calc-size(min-content, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [min-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [min-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [min-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [min-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [min-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [min-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [min-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [min-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [min-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [min-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [min-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [min-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [min-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [min-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [min-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0.75) should be [162.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1.25) should be [237.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0.75) should be [162.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1.25) should be [237.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0.75) should be [162.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1.25) should be [237.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0.75) should be [162.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1.25) should be [237.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [min-content\] to [calc-size(50px, size)\] at (-0.3) should be [min-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [min-content\] to [calc-size(50px, size)\] at (0) should be [min-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.3) should be [min-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [min-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [min-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [min-content\] to [calc-size(50px, size)\] at (-0.3) should be [min-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [min-content\] to [calc-size(50px, size)\] at (0) should be [min-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.3) should be [min-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [min-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [min-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [min-content\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [min-content\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [min-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [min-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [min-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [min-content\] to [calc-size(50px, size)\] at (-0.3) should be [min-content\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [min-content\] to [calc-size(50px, size)\] at (0) should be [min-content\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.3) should be [min-content\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [min-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [min-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [min-content\] to [calc-size(50px, size)\] at (-0.3) should be [min-content\]]
- expected: FAIL
-
- [Web Animations: property <height> from [min-content\] to [calc-size(50px, size)\] at (0) should be [min-content\]]
- expected: FAIL
-
- [Web Animations: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.3) should be [min-content\]]
- expected: FAIL
-
- [Web Animations: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [min-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [min-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [min-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [fit-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [162.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [237.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [162.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [237.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [162.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [237.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [162.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [237.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [fit-content\] to [calc-size(50px, size)\] at (-0.3) should be [fit-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0) should be [fit-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.3) should be [fit-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [fit-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [fit-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [fit-content\] to [calc-size(50px, size)\] at (-0.3) should be [fit-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0) should be [fit-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.3) should be [fit-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [fit-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [fit-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [fit-content\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [fit-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [fit-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [fit-content\] to [calc-size(50px, size)\] at (-0.3) should be [fit-content\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0) should be [fit-content\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.3) should be [fit-content\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [fit-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [fit-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [fit-content\] to [calc-size(50px, size)\] at (-0.3) should be [fit-content\]]
- expected: FAIL
-
- [Web Animations: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0) should be [fit-content\]]
- expected: FAIL
-
- [Web Animations: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.3) should be [fit-content\]]
- expected: FAIL
-
- [Web Animations: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [fit-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [fit-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [fit-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [max-content\] to [calc-size(max-content, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [max-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [max-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [max-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [max-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [max-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [max-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [max-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [max-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [max-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [max-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [max-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [max-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [max-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [max-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [max-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0.75) should be [162.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1.25) should be [237.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0.75) should be [162.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1.25) should be [237.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0.75) should be [162.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1.25) should be [237.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0.75) should be [162.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1.25) should be [237.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [max-content\] to [calc-size(50px, size)\] at (-0.3) should be [max-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [max-content\] to [calc-size(50px, size)\] at (0) should be [max-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.3) should be [max-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [max-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [max-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [max-content\] to [calc-size(50px, size)\] at (-0.3) should be [max-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [max-content\] to [calc-size(50px, size)\] at (0) should be [max-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.3) should be [max-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [max-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [max-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [max-content\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [max-content\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [max-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [max-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [max-content\] to [calc-size(50px, size)\] at (-0.3) should be [max-content\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [max-content\] to [calc-size(50px, size)\] at (0) should be [max-content\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.3) should be [max-content\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [max-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [max-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [max-content\] to [calc-size(50px, size)\] at (-0.3) should be [max-content\]]
- expected: FAIL
-
- [Web Animations: property <height> from [max-content\] to [calc-size(50px, size)\] at (0) should be [max-content\]]
- expected: FAIL
-
- [Web Animations: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.3) should be [max-content\]]
- expected: FAIL
-
- [Web Animations: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [max-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [max-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [max-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (-0.25) should be [225px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (0) should be [300px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (0.75) should be [525px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (1) should be [600px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (1.25) should be [675px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (-0.25) should be [225px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (0) should be [300px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (0.75) should be [525px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (1) should be [600px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (1.25) should be [675px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (-0.25) should be [225px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (0) should be [300px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (0.75) should be [525px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (1) should be [600px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (1.25) should be [675px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (-0.25) should be [225px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (0) should be [300px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (0.75) should be [525px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (1) should be [600px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [stretch\] to [calc-size(stretch, size * 2)\] at (1.25) should be [675px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [stretch\] to [calc-size(any, 50px)\] at (-0.25) should be [362.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [stretch\] to [calc-size(any, 50px)\] at (0) should be [300px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [stretch\] to [calc-size(any, 50px)\] at (0.75) should be [112.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [stretch\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [stretch\] to [calc-size(any, 50px)\] at (1.25) should be [-12.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(any, 50px)\] at (-0.25) should be [362.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(any, 50px)\] at (0) should be [300px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(any, 50px)\] at (0.75) should be [112.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(any, 50px)\] at (1.25) should be [-12.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [stretch\] to [calc-size(any, 50px)\] at (-0.25) should be [362.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [stretch\] to [calc-size(any, 50px)\] at (0) should be [300px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [stretch\] to [calc-size(any, 50px)\] at (0.75) should be [112.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [stretch\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [stretch\] to [calc-size(any, 50px)\] at (1.25) should be [-12.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [stretch\] to [calc-size(any, 50px)\] at (-0.25) should be [362.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [stretch\] to [calc-size(any, 50px)\] at (0) should be [300px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [stretch\] to [calc-size(any, 50px)\] at (0.75) should be [112.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [stretch\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [stretch\] to [calc-size(any, 50px)\] at (1.25) should be [-12.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (-0.1) should be [-4.999999999999993px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0.75) should be [462.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1) should be [600px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1.25) should be [737.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (-0.1) should be [-4.999999999999993px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0.75) should be [462.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1) should be [600px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1.25) should be [737.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (-0.1) should be [-4.999999999999993px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0.75) should be [462.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1) should be [600px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1.25) should be [737.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (-0.1) should be [-4.999999999999993px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0.75) should be [462.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1) should be [600px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1.25) should be [737.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [stretch\] to [calc-size(50px, size)\] at (-0.3) should be [stretch\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [stretch\] to [calc-size(50px, size)\] at (0) should be [stretch\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.3) should be [stretch\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [stretch\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [stretch\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [stretch\] to [calc-size(50px, size)\] at (-0.3) should be [stretch\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [stretch\] to [calc-size(50px, size)\] at (0) should be [stretch\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.3) should be [stretch\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [stretch\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [stretch\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [stretch\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [stretch\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [stretch\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [stretch\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [stretch\] to [calc-size(50px, size)\] at (-0.3) should be [stretch\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [stretch\] to [calc-size(50px, size)\] at (0) should be [stretch\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.3) should be [stretch\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [stretch\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [stretch\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [stretch\] to [calc-size(50px, size)\] at (-0.3) should be [stretch\]]
- expected: FAIL
-
- [Web Animations: property <height> from [stretch\] to [calc-size(50px, size)\] at (0) should be [stretch\]]
- expected: FAIL
-
- [Web Animations: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.3) should be [stretch\]]
- expected: FAIL
-
- [Web Animations: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [stretch\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [stretch\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [stretch\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [auto\] to [calc-size(fit-content, size)\] at (-0.3) should be [auto\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0) should be [auto\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.3) should be [auto\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.5) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.6) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [auto\] to [calc-size(fit-content, size)\] at (1) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [auto\] to [calc-size(fit-content, size)\] at (1.5) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [auto\] to [calc-size(fit-content, size)\] at (-0.3) should be [auto\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0) should be [auto\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.3) should be [auto\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.5) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.6) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [auto\] to [calc-size(fit-content, size)\] at (1) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [auto\] to [calc-size(fit-content, size)\] at (1.5) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [auto\] to [calc-size(fit-content, size)\] at (-0.3) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.3) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.5) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.6) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [auto\] to [calc-size(fit-content, size)\] at (1) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [auto\] to [calc-size(fit-content, size)\] at (1.5) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(fit-content, size)\] at (-0.3) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.3) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.5) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.6) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(fit-content, size)\] at (1) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [auto\] to [calc-size(fit-content, size)\] at (1.5) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [auto\] to [calc-size(fit-content, size)\] at (-0.3) should be [auto\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0) should be [auto\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.3) should be [auto\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.5) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.6) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [auto\] to [calc-size(fit-content, size)\] at (1) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [auto\] to [calc-size(fit-content, size)\] at (1.5) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [auto\] to [calc-size(fit-content, size)\] at (-0.3) should be [auto\]]
- expected: FAIL
-
- [Web Animations: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0) should be [auto\]]
- expected: FAIL
-
- [Web Animations: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.3) should be [auto\]]
- expected: FAIL
-
- [Web Animations: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.5) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [auto\] to [calc-size(fit-content, size)\] at (0.6) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [auto\] to [calc-size(fit-content, size)\] at (1) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [auto\] to [calc-size(fit-content, size)\] at (1.5) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (-0.3) should be [fit-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0) should be [fit-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.3) should be [fit-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.5) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.6) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (1) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (1.5) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (-0.3) should be [fit-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0) should be [fit-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.3) should be [fit-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.5) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.6) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (1) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (1.5) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (-0.3) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.3) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.5) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.6) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (1) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (1.5) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (-0.3) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.3) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.5) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.6) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (1) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (1.5) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (-0.3) should be [fit-content\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0) should be [fit-content\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.3) should be [fit-content\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.5) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.6) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (1) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (1.5) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (-0.3) should be [fit-content\]]
- expected: FAIL
-
- [Web Animations: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0) should be [fit-content\]]
- expected: FAIL
-
- [Web Animations: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.3) should be [fit-content\]]
- expected: FAIL
-
- [Web Animations: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.5) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (0.6) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (1) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [fit-content\] to [calc-size(min-content, size)\] at (1.5) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [stretch\] to [calc-size(auto, size)\] at (-0.3) should be [stretch\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [stretch\] to [calc-size(auto, size)\] at (0) should be [stretch\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.3) should be [stretch\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.5) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.6) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [stretch\] to [calc-size(auto, size)\] at (1) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [stretch\] to [calc-size(auto, size)\] at (1.5) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [stretch\] to [calc-size(auto, size)\] at (-0.3) should be [stretch\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [stretch\] to [calc-size(auto, size)\] at (0) should be [stretch\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.3) should be [stretch\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.5) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.6) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [stretch\] to [calc-size(auto, size)\] at (1) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [stretch\] to [calc-size(auto, size)\] at (1.5) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [stretch\] to [calc-size(auto, size)\] at (-0.3) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [stretch\] to [calc-size(auto, size)\] at (0) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.3) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.5) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.6) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [stretch\] to [calc-size(auto, size)\] at (1) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [stretch\] to [calc-size(auto, size)\] at (1.5) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(auto, size)\] at (-0.3) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(auto, size)\] at (0) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.3) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.5) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.6) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(auto, size)\] at (1) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [stretch\] to [calc-size(auto, size)\] at (1.5) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [stretch\] to [calc-size(auto, size)\] at (-0.3) should be [stretch\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [stretch\] to [calc-size(auto, size)\] at (0) should be [stretch\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.3) should be [stretch\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.5) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.6) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [stretch\] to [calc-size(auto, size)\] at (1) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [stretch\] to [calc-size(auto, size)\] at (1.5) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [stretch\] to [calc-size(auto, size)\] at (-0.3) should be [stretch\]]
- expected: FAIL
-
- [Web Animations: property <height> from [stretch\] to [calc-size(auto, size)\] at (0) should be [stretch\]]
- expected: FAIL
-
- [Web Animations: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.3) should be [stretch\]]
- expected: FAIL
-
- [Web Animations: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.5) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [stretch\] to [calc-size(auto, size)\] at (0.6) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [stretch\] to [calc-size(auto, size)\] at (1) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [stretch\] to [calc-size(auto, size)\] at (1.5) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [max-content\] to [calc-size(stretch, size)\] at (-0.3) should be [max-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0) should be [max-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.3) should be [max-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.5) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.6) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [max-content\] to [calc-size(stretch, size)\] at (1) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [max-content\] to [calc-size(stretch, size)\] at (1.5) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [max-content\] to [calc-size(stretch, size)\] at (-0.3) should be [max-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0) should be [max-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.3) should be [max-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.5) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.6) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [max-content\] to [calc-size(stretch, size)\] at (1) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [max-content\] to [calc-size(stretch, size)\] at (1.5) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [max-content\] to [calc-size(stretch, size)\] at (-0.3) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.3) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.5) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.6) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [max-content\] to [calc-size(stretch, size)\] at (1) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [max-content\] to [calc-size(stretch, size)\] at (1.5) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(stretch, size)\] at (-0.3) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.3) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.5) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.6) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(stretch, size)\] at (1) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [max-content\] to [calc-size(stretch, size)\] at (1.5) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [max-content\] to [calc-size(stretch, size)\] at (-0.3) should be [max-content\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0) should be [max-content\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.3) should be [max-content\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.5) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.6) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [max-content\] to [calc-size(stretch, size)\] at (1) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [max-content\] to [calc-size(stretch, size)\] at (1.5) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [max-content\] to [calc-size(stretch, size)\] at (-0.3) should be [max-content\]]
- expected: FAIL
-
- [Web Animations: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0) should be [max-content\]]
- expected: FAIL
-
- [Web Animations: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.3) should be [max-content\]]
- expected: FAIL
-
- [Web Animations: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.5) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [max-content\] to [calc-size(stretch, size)\] at (0.6) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [max-content\] to [calc-size(stretch, size)\] at (1) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [max-content\] to [calc-size(stretch, size)\] at (1.5) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(20px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0) should be [calc-size(20px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(20px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(20px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0) should be [calc-size(20px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(20px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(20px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0) should be [calc-size(20px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(20px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(20px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0) should be [calc-size(20px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(20px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (-0.25) should be [225px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (0) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (0.75) should be [125px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (1) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (1.25) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (-0.25) should be [225px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (0) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (0.75) should be [125px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (1) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (1.25) should be [75px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (-0.25) should be [225px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (0) should be [200px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (0.75) should be [125px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (1) should be [100px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (1.25) should be [75px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (-0.25) should be [225px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (0) should be [200px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (0.75) should be [125px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (1) should be [100px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 3% + 17px)\] at (1.25) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(auto, size)\] to [50%\] at (-0.25) should be [87.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(auto, size)\] to [50%\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(auto, size)\] to [50%\] at (0.75) should be [137.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(auto, size)\] to [50%\] at (1) should be [150px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(auto, size)\] to [50%\] at (1.25) should be [162.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [50%\] at (-0.25) should be [87.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [50%\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [50%\] at (0.75) should be [137.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [50%\] at (1) should be [150px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [50%\] at (1.25) should be [162.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(auto, size)\] to [50%\] at (-0.25) should be [87.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(auto, size)\] to [50%\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(auto, size)\] to [50%\] at (0.75) should be [137.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(auto, size)\] to [50%\] at (1) should be [150px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(auto, size)\] to [50%\] at (1.25) should be [162.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(auto, size)\] to [50%\] at (-0.25) should be [87.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(auto, size)\] to [50%\] at (0) should be [100px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(auto, size)\] to [50%\] at (0.75) should be [137.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(auto, size)\] to [50%\] at (1) should be [150px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(auto, size)\] to [50%\] at (1.25) should be [162.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (-0.25) should be [250px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (0) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (0.75) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (1) should be [0px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (1.25) should be [0px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (-0.25) should be [250px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (0) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (0.75) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (1) should be [0px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (1.25) should be [0px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (-0.25) should be [250px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (0) should be [200px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (0.75) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (1) should be [0px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (1.25) should be [0px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (-0.25) should be [250px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (0) should be [200px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (0.75) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (1) should be [0px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(auto, size * 2)\] to [50%\] at (1.25) should be [0px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (-0.25) should be [10px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0.75) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1) should be [60px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1.25) should be [70px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (-0.25) should be [10px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0.75) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1) should be [60px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1.25) should be [70px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (-0.25) should be [10px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0) should be [20px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0.75) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1) should be [60px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1.25) should be [70px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (-0.25) should be [10px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0) should be [20px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0.75) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1) should be [60px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1.25) should be [70px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (-0.25) should be [175px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0) should be [150px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.75) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1.25) should be [25px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (-0.25) should be [175px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0) should be [150px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.75) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1.25) should be [25px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (-0.25) should be [175px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0) should be [150px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.75) should be [75px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1.25) should be [25px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (-0.25) should be [175px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0) should be [150px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.75) should be [75px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1.25) should be [25px\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (-0.3) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.3) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.5) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.6) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (1) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (1.5) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (-0.3) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.3) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.5) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.6) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (1) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (1.5) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (-0.3) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.3) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.5) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.6) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (1) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (1.5) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (-0.3) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.3) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.5) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.6) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (1) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (1.5) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (-0.3) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.3) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.5) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.6) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (1) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (1.5) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (-0.3) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.3) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.5) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (0.6) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (1) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(auto, size)\] to [calc-size(50%, size)\] at (1.5) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (-0.3) should be [calc-size(calc-size(auto, size / 2), size * 2)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0) should be [calc-size(calc-size(auto, size / 2), size * 2)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.3) should be [calc-size(calc-size(auto, size / 2), size * 2)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.5) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.6) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1.5) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (-0.3) should be [calc-size(calc-size(auto, size / 2), size * 2)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0) should be [calc-size(calc-size(auto, size / 2), size * 2)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.3) should be [calc-size(calc-size(auto, size / 2), size * 2)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.5) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.6) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1.5) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (-0.3) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.3) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.5) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.6) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1.5) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (-0.3) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.3) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.5) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.6) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1.5) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (-0.3) should be [calc-size(calc-size(auto, size / 2), size * 2)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0) should be [calc-size(calc-size(auto, size / 2), size * 2)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.3) should be [calc-size(calc-size(auto, size / 2), size * 2)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.5) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.6) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1.5) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (-0.3) should be [calc-size(calc-size(auto, size / 2), size * 2)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0) should be [calc-size(calc-size(auto, size / 2), size * 2)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.3) should be [calc-size(calc-size(auto, size / 2), size * 2)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.5) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.6) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1.5) should be [calc-size(12.5%, size * 4)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (-0.25) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (0.75) should be [250px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (1) should be [300px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (1.25) should be [350px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (-0.25) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (0.75) should be [250px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (1) should be [300px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (1.25) should be [350px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (-0.25) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (0.75) should be [250px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (1) should be [300px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (1.25) should be [350px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (-0.25) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (0.75) should be [250px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (1) should be [300px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(min-content, size / 2), size * 2)\] to [calc-size(calc-size(any, 150px), size * 2)\] at (1.25) should be [350px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (-0.125) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (0.75) should be [400px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (1) should be [500px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (1.25) should be [600px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (-0.125) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (0.75) should be [400px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (1) should be [500px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (1.25) should be [600px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (-0.125) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (0.75) should be [400px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (1) should be [500px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (1.25) should be [600px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (-0.125) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (0) should be [100px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (0.75) should be [400px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (1) should be [500px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(auto, size * 5)\] at (1.25) should be [600px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (-0.25) should be [87.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.75) should be [137.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1) should be [150px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1.25) should be [162.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (-0.25) should be [87.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.75) should be [137.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1) should be [150px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1.25) should be [162.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (-0.25) should be [87.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.75) should be [137.5px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1) should be [150px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1.25) should be [162.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (-0.25) should be [87.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0) should be [100px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (0.75) should be [137.5px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1) should be [150px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(100px, size / 2), size * 2)\] to [calc-size(12.5%, size * 4)\] at (1.25) should be [162.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (-0.25) should be [425px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (0) should be [400px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (0.75) should be [325px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (1) should be [300px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (1.25) should be [275px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (-0.25) should be [425px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (0) should be [400px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (0.75) should be [325px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (1) should be [300px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (1.25) should be [275px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (-0.25) should be [425px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (0) should be [400px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (0.75) should be [325px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (1) should be [300px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (1.25) should be [275px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (-0.25) should be [425px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (0) should be [400px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (0.75) should be [325px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (1) should be [300px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(100px, size * 2), size * 2)\] to [calc-size(100px, size * 3)\] at (1.25) should be [275px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (0) should be [100px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (1) should be [200px\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(auto, size / 2), size * 2)\] to [calc-size(calc-size(calc-size(auto, size + size / 2 + size / 2), size + size), size / 4 + size / 8 + size / 8)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (-0.3) should be [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0) should be [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.3) should be [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.5) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.6) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (1) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (1.5) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (-0.3) should be [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0) should be [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.3) should be [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.5) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.6) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (1) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (1.5) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (-0.3) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.3) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.5) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.6) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (1) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
-
- [CSS Transitions: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (1.5) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (-0.3) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.3) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.5) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.6) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (1) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (1.5) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (-0.3) should be [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0) should be [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.3) should be [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.5) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.6) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (1) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
-
- [CSS Animations: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (1.5) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (-0.3) should be [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0) should be [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.3) should be [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.5) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (0.6) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (1) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
-
- [Web Animations: property <height> from [calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(calc-size(auto, size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2), size / 2 + size / 2)\] to [calc-size(auto, size * 3)\] at (1.5) should be [calc-size(auto, size * 3)\]]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-values/calc-size/animation/calc-size-interpolation-expansion.html.ini b/tests/wpt/meta/css/css-values/calc-size/animation/calc-size-interpolation-expansion.html.ini
new file mode 100644
index 00000000000..eac708dbfbc
--- /dev/null
+++ b/tests/wpt/meta/css/css-values/calc-size/animation/calc-size-interpolation-expansion.html.ini
@@ -0,0 +1,21 @@
+[calc-size-interpolation-expansion.html]
+ [value at progress 0.75 in animation of "height" from "auto" to "calc-size(0px)"]
+ expected: FAIL
+
+ [value at progress 0.75 in animation of "height" from "0px" to "calc-size(calc-size(min-content, size + 20px), size * 2)"]
+ expected: FAIL
+
+ [value at progress 0.75 in animation of "height" from "calc-size(min-content, size * 4)" to "calc-size(calc-size(min-content, size + 20px), size * 2)"]
+ expected: FAIL
+
+ [value at progress 0.75 in animation of "width" from "calc-size(fit-content, 20px)" to "calc-size(calc-size(fit-content, 40px), size)"]
+ expected: FAIL
+
+ [value at progress 0.75 in animation of "width" from "calc-size(any, 20px)" to "calc-size(calc-size(fit-content, 40px), size)"]
+ expected: FAIL
+
+ [value at progress 0.75 in animation of "width" from "calc-size(calc-size(any, 30px), 20px)" to "calc-size(calc-size(fit-content, 40px), size)"]
+ expected: FAIL
+
+ [value at progress 0.75 in animation of "width" from "calc-size(fit-content, 20px)" to "calc-size(calc-size(fit-content, 3 * size + 10px), min(size + 20px, size * 2 - 30px) + size * 2 + 80px)"]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-values/calc-size/animation/calc-size-interpolation-expansion.tentative.html.ini b/tests/wpt/meta/css/css-values/calc-size/animation/calc-size-interpolation-expansion.tentative.html.ini
deleted file mode 100644
index b241061a801..00000000000
--- a/tests/wpt/meta/css/css-values/calc-size/animation/calc-size-interpolation-expansion.tentative.html.ini
+++ /dev/null
@@ -1,21 +0,0 @@
-[calc-size-interpolation-expansion.tentative.html]
- [value at progress 0.75 in animation of "height" from "auto" to "calc-size(0px)"]
- expected: FAIL
-
- [value at progress 0.75 in animation of "height" from "0px" to "calc-size(calc-size(min-content, size + 20px), size * 2)"]
- expected: FAIL
-
- [value at progress 0.75 in animation of "height" from "calc-size(min-content, size * 4)" to "calc-size(calc-size(min-content, size + 20px), size * 2)"]
- expected: FAIL
-
- [value at progress 0.75 in animation of "width" from "calc-size(fit-content, 20px)" to "calc-size(calc-size(fit-content, 40px), size)"]
- expected: FAIL
-
- [value at progress 0.75 in animation of "width" from "calc-size(any, 20px)" to "calc-size(calc-size(fit-content, 40px), size)"]
- expected: FAIL
-
- [value at progress 0.75 in animation of "width" from "calc-size(calc-size(any, 30px), 20px)" to "calc-size(calc-size(fit-content, 40px), size)"]
- expected: FAIL
-
- [value at progress 0.75 in animation of "width" from "calc-size(fit-content, 20px)" to "calc-size(calc-size(fit-content, 3 * size + 10px), min(size + 20px, size * 2 - 30px) + size * 2 + 80px)"]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-values/calc-size/animation/calc-size-width-interpolation.html.ini b/tests/wpt/meta/css/css-values/calc-size/animation/calc-size-width-interpolation.html.ini
new file mode 100644
index 00000000000..e0a3d879ceb
--- /dev/null
+++ b/tests/wpt/meta/css/css-values/calc-size/animation/calc-size-width-interpolation.html.ini
@@ -0,0 +1,2526 @@
+[calc-size-width-interpolation.html]
+ [CSS Transitions: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (-0.25) should be [150px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.25) should be [250px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.5) should be [300px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.75) should be [350px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1.25) should be [450px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (-0.25) should be [150px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.25) should be [250px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.5) should be [300px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.75) should be [350px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1.25) should be [450px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (-0.25) should be [150px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.25) should be [250px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.5) should be [300px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.75) should be [350px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1.25) should be [450px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (-0.25) should be [150px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.25) should be [250px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.5) should be [300px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.75) should be [350px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1.25) should be [450px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from neutral to [calc-size(auto, size * 2)\] at (-0.25) should be [150px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from neutral to [calc-size(auto, size * 2)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.25) should be [250px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.5) should be [300px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.75) should be [350px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from neutral to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from neutral to [calc-size(auto, size * 2)\] at (1.25) should be [450px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from neutral to [calc-size(auto, size * 2)\] at (-0.25) should be [150px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from neutral to [calc-size(auto, size * 2)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.25) should be [250px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.5) should be [300px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.75) should be [350px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from neutral to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from neutral to [calc-size(auto, size * 2)\] at (1.25) should be [450px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (-0.25) should be [150px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.25) should be [250px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.5) should be [300px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.75) should be [350px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (1.25) should be [450px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (-0.25) should be [150px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.25) should be [250px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.5) should be [300px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.75) should be [350px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (1.25) should be [450px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (-0.25) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.25) should be [25px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.5) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.75) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1.25) should be [125px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (-0.25) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0) should be [0\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.25) should be [25px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.5) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.75) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1.25) should be [125px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (-0.25) should be [0\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0) should be [0\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.25) should be [25px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.5) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.75) should be [75px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1.25) should be [125px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (-0.25) should be [0\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0) should be [0\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.25) should be [25px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.5) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.75) should be [75px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1.25) should be [125px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (-0.25) should be [150px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (0.75) should be [350px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (1.25) should be [450px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (-0.25) should be [150px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (0.75) should be [350px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (1.25) should be [450px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (-0.25) should be [150px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (0.75) should be [350px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (1.25) should be [450px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (-0.25) should be [150px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (0.75) should be [350px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (1.25) should be [450px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [auto\] to [calc-size(any, 50px)\] at (-0.25) should be [237.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [auto\] to [calc-size(any, 50px)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [auto\] to [calc-size(any, 50px)\] at (0.75) should be [87.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [auto\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [auto\] to [calc-size(any, 50px)\] at (1.25) should be [12.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(any, 50px)\] at (-0.25) should be [237.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(any, 50px)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(any, 50px)\] at (0.75) should be [87.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(any, 50px)\] at (1.25) should be [12.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [auto\] to [calc-size(any, 50px)\] at (-0.25) should be [237.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [auto\] to [calc-size(any, 50px)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [auto\] to [calc-size(any, 50px)\] at (0.75) should be [87.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [auto\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [auto\] to [calc-size(any, 50px)\] at (1.25) should be [12.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [auto\] to [calc-size(any, 50px)\] at (-0.25) should be [237.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [auto\] to [calc-size(any, 50px)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [auto\] to [calc-size(any, 50px)\] at (0.75) should be [87.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [auto\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [auto\] to [calc-size(any, 50px)\] at (1.25) should be [12.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (-0.1) should be [15.000000000000007px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0.75) should be [312.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1.25) should be [487.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (-0.1) should be [15.000000000000007px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0.75) should be [312.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1.25) should be [487.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (-0.1) should be [15.000000000000007px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0.75) should be [312.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1.25) should be [487.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (-0.1) should be [15.000000000000007px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0.75) should be [312.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1.25) should be [487.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [auto\] to [calc-size(50px, size)\] at (-0.3) should be [auto\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [auto\] to [calc-size(50px, size)\] at (0) should be [auto\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [auto\] to [calc-size(50px, size)\] at (0.3) should be [auto\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [auto\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [auto\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [auto\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [auto\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [auto\] to [calc-size(50px, size)\] at (-0.3) should be [auto\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [auto\] to [calc-size(50px, size)\] at (0) should be [auto\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [auto\] to [calc-size(50px, size)\] at (0.3) should be [auto\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [auto\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [auto\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [auto\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [auto\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [auto\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [auto\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [auto\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [auto\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [auto\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [auto\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [auto\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [auto\] to [calc-size(50px, size)\] at (-0.3) should be [auto\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [auto\] to [calc-size(50px, size)\] at (0) should be [auto\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [auto\] to [calc-size(50px, size)\] at (0.3) should be [auto\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [auto\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [auto\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [auto\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [auto\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [auto\] to [calc-size(50px, size)\] at (-0.3) should be [auto\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [auto\] to [calc-size(50px, size)\] at (0) should be [auto\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [auto\] to [calc-size(50px, size)\] at (0.3) should be [auto\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [auto\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [auto\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [auto\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [auto\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [min-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [min-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [min-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [min-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [min-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [min-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [min-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [min-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [min-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [min-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [min-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [min-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [min-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [min-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [min-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0.75) should be [162.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1.25) should be [237.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0.75) should be [162.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1.25) should be [237.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0.75) should be [162.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1.25) should be [237.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0.75) should be [162.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1.25) should be [237.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [min-content\] to [calc-size(50px, size)\] at (-0.3) should be [min-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [min-content\] to [calc-size(50px, size)\] at (0) should be [min-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.3) should be [min-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [min-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [min-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [min-content\] to [calc-size(50px, size)\] at (-0.3) should be [min-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [min-content\] to [calc-size(50px, size)\] at (0) should be [min-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.3) should be [min-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [min-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [min-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [min-content\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [min-content\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [min-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [min-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [min-content\] to [calc-size(50px, size)\] at (-0.3) should be [min-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [min-content\] to [calc-size(50px, size)\] at (0) should be [min-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.3) should be [min-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [min-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [min-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [min-content\] to [calc-size(50px, size)\] at (-0.3) should be [min-content\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [min-content\] to [calc-size(50px, size)\] at (0) should be [min-content\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.3) should be [min-content\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [min-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [min-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [162.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [237.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [162.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [237.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [162.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [237.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [162.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [237.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [fit-content\] to [calc-size(50px, size)\] at (-0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [fit-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [fit-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [fit-content\] to [calc-size(50px, size)\] at (-0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [fit-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [fit-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [fit-content\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [fit-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [fit-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [fit-content\] to [calc-size(50px, size)\] at (-0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [fit-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [fit-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [fit-content\] to [calc-size(50px, size)\] at (-0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0) should be [fit-content\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [fit-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [fit-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (-0.25) should be [75px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (0.75) should be [175px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (1.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [max-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [max-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [max-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [max-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [max-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [max-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [max-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [max-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [max-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [max-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [max-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [max-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [max-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [max-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [max-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0.75) should be [162.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1.25) should be [237.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0.75) should be [162.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1.25) should be [237.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0.75) should be [162.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1.25) should be [237.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0.75) should be [162.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1.25) should be [237.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [max-content\] to [calc-size(50px, size)\] at (-0.3) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [max-content\] to [calc-size(50px, size)\] at (0) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.3) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [max-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [max-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [max-content\] to [calc-size(50px, size)\] at (-0.3) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [max-content\] to [calc-size(50px, size)\] at (0) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.3) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [max-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [max-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [max-content\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [max-content\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [max-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [max-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [max-content\] to [calc-size(50px, size)\] at (-0.3) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [max-content\] to [calc-size(50px, size)\] at (0) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.3) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [max-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [max-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [max-content\] to [calc-size(50px, size)\] at (-0.3) should be [max-content\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [max-content\] to [calc-size(50px, size)\] at (0) should be [max-content\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.3) should be [max-content\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [max-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [max-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (-0.25) should be [150px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (0.75) should be [350px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (1) should be [400px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (1.25) should be [450px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (-0.25) should be [150px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (0.75) should be [350px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (1) should be [400px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (1.25) should be [450px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (-0.25) should be [150px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (0.75) should be [350px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (1) should be [400px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (1.25) should be [450px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (-0.25) should be [150px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (0.75) should be [350px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (1) should be [400px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (1.25) should be [450px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [stretch\] to [calc-size(any, 50px)\] at (-0.25) should be [237.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [stretch\] to [calc-size(any, 50px)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [stretch\] to [calc-size(any, 50px)\] at (0.75) should be [87.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [stretch\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [stretch\] to [calc-size(any, 50px)\] at (1.25) should be [12.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(any, 50px)\] at (-0.25) should be [237.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(any, 50px)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(any, 50px)\] at (0.75) should be [87.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(any, 50px)\] at (1.25) should be [12.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [stretch\] to [calc-size(any, 50px)\] at (-0.25) should be [237.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [stretch\] to [calc-size(any, 50px)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [stretch\] to [calc-size(any, 50px)\] at (0.75) should be [87.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [stretch\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [stretch\] to [calc-size(any, 50px)\] at (1.25) should be [12.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [stretch\] to [calc-size(any, 50px)\] at (-0.25) should be [237.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [stretch\] to [calc-size(any, 50px)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [stretch\] to [calc-size(any, 50px)\] at (0.75) should be [87.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [stretch\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [stretch\] to [calc-size(any, 50px)\] at (1.25) should be [12.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (-0.1) should be [15.000000000000007px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0.75) should be [312.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1) should be [400px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1.25) should be [487.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (-0.1) should be [15.000000000000007px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0.75) should be [312.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1) should be [400px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1.25) should be [487.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (-0.1) should be [15.000000000000007px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0.75) should be [312.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1) should be [400px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1.25) should be [487.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (-0.1) should be [15.000000000000007px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0.75) should be [312.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1) should be [400px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1.25) should be [487.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [stretch\] to [calc-size(50px, size)\] at (-0.3) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [stretch\] to [calc-size(50px, size)\] at (0) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.3) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [stretch\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [stretch\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [stretch\] to [calc-size(50px, size)\] at (-0.3) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [stretch\] to [calc-size(50px, size)\] at (0) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.3) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [stretch\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [stretch\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [stretch\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [stretch\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [stretch\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [stretch\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [stretch\] to [calc-size(50px, size)\] at (-0.3) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [stretch\] to [calc-size(50px, size)\] at (0) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.3) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [stretch\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [stretch\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [stretch\] to [calc-size(50px, size)\] at (-0.3) should be [stretch\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [stretch\] to [calc-size(50px, size)\] at (0) should be [stretch\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.3) should be [stretch\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [stretch\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [stretch\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [auto\] to [calc-size(fit-content, size)\] at (-0.3) should be [auto\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0) should be [auto\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.3) should be [auto\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.5) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.6) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [auto\] to [calc-size(fit-content, size)\] at (1) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [auto\] to [calc-size(fit-content, size)\] at (1.5) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [auto\] to [calc-size(fit-content, size)\] at (-0.3) should be [auto\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0) should be [auto\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.3) should be [auto\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.5) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.6) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [auto\] to [calc-size(fit-content, size)\] at (1) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [auto\] to [calc-size(fit-content, size)\] at (1.5) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [auto\] to [calc-size(fit-content, size)\] at (-0.3) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.3) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.5) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.6) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [auto\] to [calc-size(fit-content, size)\] at (1) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [auto\] to [calc-size(fit-content, size)\] at (1.5) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(fit-content, size)\] at (-0.3) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.3) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.5) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.6) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(fit-content, size)\] at (1) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(fit-content, size)\] at (1.5) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [auto\] to [calc-size(fit-content, size)\] at (-0.3) should be [auto\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0) should be [auto\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.3) should be [auto\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.5) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.6) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [auto\] to [calc-size(fit-content, size)\] at (1) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [auto\] to [calc-size(fit-content, size)\] at (1.5) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [auto\] to [calc-size(fit-content, size)\] at (-0.3) should be [auto\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0) should be [auto\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.3) should be [auto\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.5) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.6) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [auto\] to [calc-size(fit-content, size)\] at (1) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [auto\] to [calc-size(fit-content, size)\] at (1.5) should be [calc-size(fit-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (-0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.5) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.6) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (1) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (1.5) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (-0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.5) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.6) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (1) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (1.5) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (-0.3) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.3) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.5) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.6) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (1) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (1.5) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (-0.3) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.3) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.5) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.6) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (1) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (1.5) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (-0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.5) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.6) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (1) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (1.5) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (-0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0) should be [fit-content\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.3) should be [fit-content\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.5) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.6) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (1) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (1.5) should be [calc-size(min-content, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [stretch\] to [calc-size(auto, size)\] at (-0.3) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [stretch\] to [calc-size(auto, size)\] at (0) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.3) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.5) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.6) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [stretch\] to [calc-size(auto, size)\] at (1) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [stretch\] to [calc-size(auto, size)\] at (1.5) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [stretch\] to [calc-size(auto, size)\] at (-0.3) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [stretch\] to [calc-size(auto, size)\] at (0) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.3) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.5) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.6) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [stretch\] to [calc-size(auto, size)\] at (1) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [stretch\] to [calc-size(auto, size)\] at (1.5) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [stretch\] to [calc-size(auto, size)\] at (-0.3) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [stretch\] to [calc-size(auto, size)\] at (0) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.3) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.5) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.6) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [stretch\] to [calc-size(auto, size)\] at (1) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [stretch\] to [calc-size(auto, size)\] at (1.5) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(auto, size)\] at (-0.3) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(auto, size)\] at (0) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.3) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.5) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.6) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(auto, size)\] at (1) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(auto, size)\] at (1.5) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [stretch\] to [calc-size(auto, size)\] at (-0.3) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [stretch\] to [calc-size(auto, size)\] at (0) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.3) should be [stretch\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.5) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.6) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [stretch\] to [calc-size(auto, size)\] at (1) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [stretch\] to [calc-size(auto, size)\] at (1.5) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [stretch\] to [calc-size(auto, size)\] at (-0.3) should be [stretch\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [stretch\] to [calc-size(auto, size)\] at (0) should be [stretch\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.3) should be [stretch\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.5) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.6) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [stretch\] to [calc-size(auto, size)\] at (1) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [stretch\] to [calc-size(auto, size)\] at (1.5) should be [calc-size(auto, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [max-content\] to [calc-size(stretch, size)\] at (-0.3) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.3) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.5) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.6) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [max-content\] to [calc-size(stretch, size)\] at (1) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-behavior:allow-discrete: property <width> from [max-content\] to [calc-size(stretch, size)\] at (1.5) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [max-content\] to [calc-size(stretch, size)\] at (-0.3) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.3) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.5) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.6) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [max-content\] to [calc-size(stretch, size)\] at (1) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [max-content\] to [calc-size(stretch, size)\] at (1.5) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [max-content\] to [calc-size(stretch, size)\] at (-0.3) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.3) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.5) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.6) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [max-content\] to [calc-size(stretch, size)\] at (1) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [max-content\] to [calc-size(stretch, size)\] at (1.5) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(stretch, size)\] at (-0.3) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.3) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.5) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.6) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(stretch, size)\] at (1) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(stretch, size)\] at (1.5) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [max-content\] to [calc-size(stretch, size)\] at (-0.3) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.3) should be [max-content\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.5) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.6) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [max-content\] to [calc-size(stretch, size)\] at (1) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [max-content\] to [calc-size(stretch, size)\] at (1.5) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [max-content\] to [calc-size(stretch, size)\] at (-0.3) should be [max-content\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0) should be [max-content\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.3) should be [max-content\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.5) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.6) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [max-content\] to [calc-size(stretch, size)\] at (1) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [max-content\] to [calc-size(stretch, size)\] at (1.5) should be [calc-size(stretch, size)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (-0.25) should be [10px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0.75) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1) should be [60px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1.25) should be [70px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (-0.25) should be [10px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0) should be [20px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0.75) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1) should be [60px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1.25) should be [70px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (-0.25) should be [10px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0) should be [20px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0.75) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1) should be [60px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1.25) should be [70px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (-0.25) should be [10px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0) should be [20px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0.75) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1) should be [60px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1.25) should be [70px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (-0.25) should be [110px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (0.75) should be [70px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (1) should be [60px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (1.25) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (-0.25) should be [110px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (0.75) should be [70px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (1) should be [60px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (1.25) should be [50px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (-0.25) should be [110px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (0.75) should be [70px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (1) should be [60px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (1.25) should be [50px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (-0.25) should be [110px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (0) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (0.75) should be [70px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (1) should be [60px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (1.25) should be [50px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (-0.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (0.75) should be [125px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (1.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (-0.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (0.75) should be [125px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (1.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (-0.25) should be [225px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (0.75) should be [125px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (1.25) should be [75px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (-0.25) should be [225px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (0) should be [200px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (0.75) should be [125px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (1) should be [100px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (1.25) should be [75px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (-0.25) should be [337.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (0) should be [300px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (0.75) should be [187.5px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (1) should be [150px\]]
+ expected: FAIL
+
+ [CSS Transitions: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (1.25) should be [112.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (-0.25) should be [337.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (0) should be [300px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (0.75) should be [187.5px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (1) should be [150px\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (1.25) should be [112.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (-0.25) should be [337.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (0) should be [300px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (0.75) should be [187.5px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (1) should be [150px\]]
+ expected: FAIL
+
+ [CSS Animations: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (1.25) should be [112.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (-0.25) should be [337.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (0) should be [300px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (0.75) should be [187.5px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (1) should be [150px\]]
+ expected: FAIL
+
+ [Web Animations: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (1.25) should be [112.5px\]]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-values/calc-size/animation/calc-size-width-interpolation.tentative.html.ini b/tests/wpt/meta/css/css-values/calc-size/animation/calc-size-width-interpolation.tentative.html.ini
deleted file mode 100644
index 0bf4e50b1c8..00000000000
--- a/tests/wpt/meta/css/css-values/calc-size/animation/calc-size-width-interpolation.tentative.html.ini
+++ /dev/null
@@ -1,2838 +0,0 @@
-[calc-size-width-interpolation.tentative.html]
- [CSS Transitions: property <width> from neutral to [calc-size(auto, size * 2)\] at (-0.25) should be [150px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from neutral to [calc-size(auto, size * 2)\] at (0) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.25) should be [calc-size(auto, size * 1.25)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.5) should be [calc-size(auto, size * 1.5)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.75) should be [calc-size(auto, size * 1.75)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from neutral to [calc-size(auto, size * 2)\] at (1) should be [calc-size(auto, size * 2)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from neutral to [calc-size(auto, size * 2)\] at (1.25) should be [calc-size(auto, size * 2.25)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from neutral to [calc-size(auto, size * 2)\] at (-0.25) should be [150px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from neutral to [calc-size(auto, size * 2)\] at (0) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.25) should be [calc-size(auto, size * 1.25)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.5) should be [calc-size(auto, size * 1.5)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.75) should be [calc-size(auto, size * 1.75)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from neutral to [calc-size(auto, size * 2)\] at (1) should be [calc-size(auto, size * 2)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from neutral to [calc-size(auto, size * 2)\] at (1.25) should be [calc-size(auto, size * 2.25)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (-0.25) should be [150px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (0) should be [200px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.25) should be [calc-size(auto, size * 1.25)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.5) should be [calc-size(auto, size * 1.5)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.75) should be [calc-size(auto, size * 1.75)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (1) should be [calc-size(auto, size * 2)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (1.25) should be [calc-size(auto, size * 2.25)\]]
- expected: FAIL
-
- [Web Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (-0.25) should be [150px\]]
- expected: FAIL
-
- [Web Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (0) should be [200px\]]
- expected: FAIL
-
- [Web Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.25) should be [calc-size(auto, size * 1.25)\]]
- expected: FAIL
-
- [Web Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.5) should be [calc-size(auto, size * 1.5)\]]
- expected: FAIL
-
- [Web Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.75) should be [calc-size(auto, size * 1.75)\]]
- expected: FAIL
-
- [Web Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (1) should be [calc-size(auto, size * 2)\]]
- expected: FAIL
-
- [Web Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (1.25) should be [calc-size(auto, size * 2.25)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (-0.25) should be [0\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0) should be [0\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.25) should be [25px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.5) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.75) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1.25) should be [125px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (-0.25) should be [0\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0) should be [0\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.25) should be [25px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.5) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.75) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1.25) should be [125px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (-0.25) should be [0\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0) should be [0\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.25) should be [25px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.5) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.75) should be [75px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1) should be [100px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1.25) should be [125px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (-0.25) should be [0\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0) should be [0\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.25) should be [25px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.5) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (0.75) should be [75px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1) should be [100px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(min-content, 0px)\] to [calc-size(min-content, size)\] at (1.25) should be [125px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (-0.25) should be [150px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.25) should be [250px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.5) should be [300px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.75) should be [350px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1.25) should be [450px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (-0.25) should be [150px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.25) should be [250px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.5) should be [300px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.75) should be [350px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1.25) should be [450px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (-0.25) should be [150px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0) should be [200px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.25) should be [250px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.5) should be [300px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.75) should be [350px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1.25) should be [450px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (-0.25) should be [150px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0) should be [200px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.25) should be [250px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.5) should be [300px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (0.75) should be [350px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(auto, size)\] to [calc-size(auto, size * 2)\] at (1.25) should be [450px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.25) should be [250px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.5) should be [300px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.75) should be [350px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from neutral to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from neutral to [calc-size(auto, size * 2)\] at (1.25) should be [450px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.25) should be [250px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.5) should be [300px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.75) should be [350px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from neutral to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from neutral to [calc-size(auto, size * 2)\] at (1.25) should be [450px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.25) should be [250px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.5) should be [300px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.75) should be [350px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (1.25) should be [450px\]]
- expected: FAIL
-
- [Web Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.25) should be [250px\]]
- expected: FAIL
-
- [Web Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.5) should be [300px\]]
- expected: FAIL
-
- [Web Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (0.75) should be [350px\]]
- expected: FAIL
-
- [Web Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
- expected: FAIL
-
- [Web Animations: property <width> from neutral to [calc-size(auto, size * 2)\] at (1.25) should be [450px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (-0.25) should be [150px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (0) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (0.75) should be [350px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (1.25) should be [450px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (-0.25) should be [150px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (0) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (0.75) should be [350px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (1.25) should be [450px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (-0.25) should be [150px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (0) should be [200px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (0.75) should be [350px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (1.25) should be [450px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (-0.25) should be [150px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (0) should be [200px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (0.75) should be [350px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [auto\] to [calc-size(auto, size * 2)\] at (1.25) should be [450px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [auto\] to [calc-size(any, 50px)\] at (-0.25) should be [237.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [auto\] to [calc-size(any, 50px)\] at (0) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [auto\] to [calc-size(any, 50px)\] at (0.75) should be [87.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [auto\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [auto\] to [calc-size(any, 50px)\] at (1.25) should be [12.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(any, 50px)\] at (-0.25) should be [237.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(any, 50px)\] at (0) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(any, 50px)\] at (0.75) should be [87.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(any, 50px)\] at (1.25) should be [12.5px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [auto\] to [calc-size(any, 50px)\] at (-0.25) should be [237.5px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [auto\] to [calc-size(any, 50px)\] at (0) should be [200px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [auto\] to [calc-size(any, 50px)\] at (0.75) should be [87.5px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [auto\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [auto\] to [calc-size(any, 50px)\] at (1.25) should be [12.5px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [auto\] to [calc-size(any, 50px)\] at (-0.25) should be [237.5px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [auto\] to [calc-size(any, 50px)\] at (0) should be [200px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [auto\] to [calc-size(any, 50px)\] at (0.75) should be [87.5px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [auto\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [auto\] to [calc-size(any, 50px)\] at (1.25) should be [12.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (-0.1) should be [15.000000000000007px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0.75) should be [312.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1.25) should be [487.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (-0.1) should be [15.000000000000007px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0.75) should be [312.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1.25) should be [487.5px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (-0.1) should be [15.000000000000007px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0.75) should be [312.5px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1.25) should be [487.5px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (-0.1) should be [15.000000000000007px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (0.75) should be [312.5px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1) should be [400px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(auto, size * 2)\] at (1.25) should be [487.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [auto\] to [calc-size(50px, size)\] at (-0.3) should be [auto\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [auto\] to [calc-size(50px, size)\] at (0) should be [auto\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [auto\] to [calc-size(50px, size)\] at (0.3) should be [auto\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [auto\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [auto\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [auto\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [auto\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [auto\] to [calc-size(50px, size)\] at (-0.3) should be [auto\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [auto\] to [calc-size(50px, size)\] at (0) should be [auto\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [auto\] to [calc-size(50px, size)\] at (0.3) should be [auto\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [auto\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [auto\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [auto\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [auto\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [auto\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [auto\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [auto\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [auto\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [auto\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [auto\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [auto\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [auto\] to [calc-size(50px, size)\] at (-0.3) should be [auto\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [auto\] to [calc-size(50px, size)\] at (0) should be [auto\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [auto\] to [calc-size(50px, size)\] at (0.3) should be [auto\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [auto\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [auto\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [auto\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [auto\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [auto\] to [calc-size(50px, size)\] at (-0.3) should be [auto\]]
- expected: FAIL
-
- [Web Animations: property <width> from [auto\] to [calc-size(50px, size)\] at (0) should be [auto\]]
- expected: FAIL
-
- [Web Animations: property <width> from [auto\] to [calc-size(50px, size)\] at (0.3) should be [auto\]]
- expected: FAIL
-
- [Web Animations: property <width> from [auto\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [auto\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [auto\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [auto\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [min-content\] to [calc-size(min-content, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [min-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [min-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [min-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [min-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [min-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [min-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [min-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [min-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [min-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [min-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [min-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [min-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [min-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [min-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [min-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0.75) should be [162.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1.25) should be [237.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0.75) should be [162.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1.25) should be [237.5px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0.75) should be [162.5px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1.25) should be [237.5px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (0.75) should be [162.5px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(min-content, size * 2)\] at (1.25) should be [237.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [min-content\] to [calc-size(50px, size)\] at (-0.3) should be [min-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [min-content\] to [calc-size(50px, size)\] at (0) should be [min-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.3) should be [min-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [min-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [min-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [min-content\] to [calc-size(50px, size)\] at (-0.3) should be [min-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [min-content\] to [calc-size(50px, size)\] at (0) should be [min-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.3) should be [min-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [min-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [min-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [min-content\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [min-content\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [min-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [min-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [min-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [min-content\] to [calc-size(50px, size)\] at (-0.3) should be [min-content\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [min-content\] to [calc-size(50px, size)\] at (0) should be [min-content\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.3) should be [min-content\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [min-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [min-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [min-content\] to [calc-size(50px, size)\] at (-0.3) should be [min-content\]]
- expected: FAIL
-
- [Web Animations: property <width> from [min-content\] to [calc-size(50px, size)\] at (0) should be [min-content\]]
- expected: FAIL
-
- [Web Animations: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.3) should be [min-content\]]
- expected: FAIL
-
- [Web Animations: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [min-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [min-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [min-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [fit-content\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [fit-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [162.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [237.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [162.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [237.5px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [162.5px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [237.5px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (0.75) should be [162.5px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(fit-content, size * 2)\] at (1.25) should be [237.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [fit-content\] to [calc-size(50px, size)\] at (-0.3) should be [fit-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0) should be [fit-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.3) should be [fit-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [fit-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [fit-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [fit-content\] to [calc-size(50px, size)\] at (-0.3) should be [fit-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0) should be [fit-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.3) should be [fit-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [fit-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [fit-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [fit-content\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [fit-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [fit-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [fit-content\] to [calc-size(50px, size)\] at (-0.3) should be [fit-content\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0) should be [fit-content\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.3) should be [fit-content\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [fit-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [fit-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [fit-content\] to [calc-size(50px, size)\] at (-0.3) should be [fit-content\]]
- expected: FAIL
-
- [Web Animations: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0) should be [fit-content\]]
- expected: FAIL
-
- [Web Animations: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.3) should be [fit-content\]]
- expected: FAIL
-
- [Web Animations: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [fit-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [fit-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [fit-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (-0.25) should be [75px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (0) should be [100px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (0.75) should be [175px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [max-content\] to [calc-size(max-content, size * 2)\] at (1.25) should be [225px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [max-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [max-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [max-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [max-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [max-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [max-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [max-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [max-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [max-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [max-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [max-content\] to [calc-size(any, 50px)\] at (-0.25) should be [112.5px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [max-content\] to [calc-size(any, 50px)\] at (0) should be [100px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [max-content\] to [calc-size(any, 50px)\] at (0.75) should be [62.5px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [max-content\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [max-content\] to [calc-size(any, 50px)\] at (1.25) should be [37.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0.75) should be [162.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1.25) should be [237.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0.75) should be [162.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1.25) should be [237.5px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0.75) should be [162.5px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1.25) should be [237.5px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (-0.1) should be [35.00000000000001px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (0.75) should be [162.5px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1) should be [200px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(max-content, size * 2)\] at (1.25) should be [237.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [max-content\] to [calc-size(50px, size)\] at (-0.3) should be [max-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [max-content\] to [calc-size(50px, size)\] at (0) should be [max-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.3) should be [max-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [max-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [max-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [max-content\] to [calc-size(50px, size)\] at (-0.3) should be [max-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [max-content\] to [calc-size(50px, size)\] at (0) should be [max-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.3) should be [max-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [max-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [max-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [max-content\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [max-content\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [max-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [max-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [max-content\] to [calc-size(50px, size)\] at (-0.3) should be [max-content\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [max-content\] to [calc-size(50px, size)\] at (0) should be [max-content\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.3) should be [max-content\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [max-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [max-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [max-content\] to [calc-size(50px, size)\] at (-0.3) should be [max-content\]]
- expected: FAIL
-
- [Web Animations: property <width> from [max-content\] to [calc-size(50px, size)\] at (0) should be [max-content\]]
- expected: FAIL
-
- [Web Animations: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.3) should be [max-content\]]
- expected: FAIL
-
- [Web Animations: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [max-content\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [max-content\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [max-content\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (-0.25) should be [150px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (0) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (0.75) should be [350px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (1) should be [400px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (1.25) should be [450px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (-0.25) should be [150px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (0) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (0.75) should be [350px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (1) should be [400px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (1.25) should be [450px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (-0.25) should be [150px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (0) should be [200px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (0.75) should be [350px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (1) should be [400px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (1.25) should be [450px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (-0.25) should be [150px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (0) should be [200px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (0.75) should be [350px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (1) should be [400px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [stretch\] to [calc-size(stretch, size * 2)\] at (1.25) should be [450px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [stretch\] to [calc-size(any, 50px)\] at (-0.25) should be [237.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [stretch\] to [calc-size(any, 50px)\] at (0) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [stretch\] to [calc-size(any, 50px)\] at (0.75) should be [87.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [stretch\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [stretch\] to [calc-size(any, 50px)\] at (1.25) should be [12.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(any, 50px)\] at (-0.25) should be [237.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(any, 50px)\] at (0) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(any, 50px)\] at (0.75) should be [87.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(any, 50px)\] at (1.25) should be [12.5px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [stretch\] to [calc-size(any, 50px)\] at (-0.25) should be [237.5px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [stretch\] to [calc-size(any, 50px)\] at (0) should be [200px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [stretch\] to [calc-size(any, 50px)\] at (0.75) should be [87.5px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [stretch\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [stretch\] to [calc-size(any, 50px)\] at (1.25) should be [12.5px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [stretch\] to [calc-size(any, 50px)\] at (-0.25) should be [237.5px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [stretch\] to [calc-size(any, 50px)\] at (0) should be [200px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [stretch\] to [calc-size(any, 50px)\] at (0.75) should be [87.5px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [stretch\] to [calc-size(any, 50px)\] at (1) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [stretch\] to [calc-size(any, 50px)\] at (1.25) should be [12.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (-0.1) should be [15.000000000000007px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0.75) should be [312.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1) should be [400px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1.25) should be [487.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (-0.1) should be [15.000000000000007px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0.75) should be [312.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1) should be [400px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1.25) should be [487.5px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (-0.1) should be [15.000000000000007px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0.75) should be [312.5px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1) should be [400px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1.25) should be [487.5px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (-0.1) should be [15.000000000000007px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (0.75) should be [312.5px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1) should be [400px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(any, 50px)\] to [calc-size(stretch, size * 2)\] at (1.25) should be [487.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [stretch\] to [calc-size(50px, size)\] at (-0.3) should be [stretch\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [stretch\] to [calc-size(50px, size)\] at (0) should be [stretch\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.3) should be [stretch\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [stretch\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [stretch\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [stretch\] to [calc-size(50px, size)\] at (-0.3) should be [stretch\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [stretch\] to [calc-size(50px, size)\] at (0) should be [stretch\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.3) should be [stretch\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [stretch\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [stretch\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [stretch\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [stretch\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [stretch\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [stretch\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [stretch\] to [calc-size(50px, size)\] at (-0.3) should be [stretch\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [stretch\] to [calc-size(50px, size)\] at (0) should be [stretch\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.3) should be [stretch\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [stretch\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [stretch\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [stretch\] to [calc-size(50px, size)\] at (-0.3) should be [stretch\]]
- expected: FAIL
-
- [Web Animations: property <width> from [stretch\] to [calc-size(50px, size)\] at (0) should be [stretch\]]
- expected: FAIL
-
- [Web Animations: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.3) should be [stretch\]]
- expected: FAIL
-
- [Web Animations: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [stretch\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [stretch\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [stretch\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [auto\] to [calc-size(fit-content, size)\] at (-0.3) should be [auto\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0) should be [auto\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.3) should be [auto\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.5) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.6) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [auto\] to [calc-size(fit-content, size)\] at (1) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [auto\] to [calc-size(fit-content, size)\] at (1.5) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [auto\] to [calc-size(fit-content, size)\] at (-0.3) should be [auto\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0) should be [auto\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.3) should be [auto\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.5) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.6) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [auto\] to [calc-size(fit-content, size)\] at (1) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [auto\] to [calc-size(fit-content, size)\] at (1.5) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [auto\] to [calc-size(fit-content, size)\] at (-0.3) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.3) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.5) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.6) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [auto\] to [calc-size(fit-content, size)\] at (1) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [auto\] to [calc-size(fit-content, size)\] at (1.5) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(fit-content, size)\] at (-0.3) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.3) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.5) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.6) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(fit-content, size)\] at (1) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [auto\] to [calc-size(fit-content, size)\] at (1.5) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [auto\] to [calc-size(fit-content, size)\] at (-0.3) should be [auto\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0) should be [auto\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.3) should be [auto\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.5) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.6) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [auto\] to [calc-size(fit-content, size)\] at (1) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [auto\] to [calc-size(fit-content, size)\] at (1.5) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [auto\] to [calc-size(fit-content, size)\] at (-0.3) should be [auto\]]
- expected: FAIL
-
- [Web Animations: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0) should be [auto\]]
- expected: FAIL
-
- [Web Animations: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.3) should be [auto\]]
- expected: FAIL
-
- [Web Animations: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.5) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [auto\] to [calc-size(fit-content, size)\] at (0.6) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [auto\] to [calc-size(fit-content, size)\] at (1) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [auto\] to [calc-size(fit-content, size)\] at (1.5) should be [calc-size(fit-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (-0.3) should be [fit-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0) should be [fit-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.3) should be [fit-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.5) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.6) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (1) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (1.5) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (-0.3) should be [fit-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0) should be [fit-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.3) should be [fit-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.5) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.6) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (1) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (1.5) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (-0.3) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.3) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.5) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.6) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (1) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (1.5) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (-0.3) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.3) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.5) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.6) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (1) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (1.5) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (-0.3) should be [fit-content\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0) should be [fit-content\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.3) should be [fit-content\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.5) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.6) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (1) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (1.5) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (-0.3) should be [fit-content\]]
- expected: FAIL
-
- [Web Animations: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0) should be [fit-content\]]
- expected: FAIL
-
- [Web Animations: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.3) should be [fit-content\]]
- expected: FAIL
-
- [Web Animations: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.5) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (0.6) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (1) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [fit-content\] to [calc-size(min-content, size)\] at (1.5) should be [calc-size(min-content, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [stretch\] to [calc-size(auto, size)\] at (-0.3) should be [stretch\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [stretch\] to [calc-size(auto, size)\] at (0) should be [stretch\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.3) should be [stretch\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.5) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.6) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [stretch\] to [calc-size(auto, size)\] at (1) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [stretch\] to [calc-size(auto, size)\] at (1.5) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [stretch\] to [calc-size(auto, size)\] at (-0.3) should be [stretch\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [stretch\] to [calc-size(auto, size)\] at (0) should be [stretch\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.3) should be [stretch\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.5) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.6) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [stretch\] to [calc-size(auto, size)\] at (1) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [stretch\] to [calc-size(auto, size)\] at (1.5) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [stretch\] to [calc-size(auto, size)\] at (-0.3) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [stretch\] to [calc-size(auto, size)\] at (0) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.3) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.5) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.6) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [stretch\] to [calc-size(auto, size)\] at (1) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [stretch\] to [calc-size(auto, size)\] at (1.5) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(auto, size)\] at (-0.3) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(auto, size)\] at (0) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.3) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.5) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.6) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(auto, size)\] at (1) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [stretch\] to [calc-size(auto, size)\] at (1.5) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [stretch\] to [calc-size(auto, size)\] at (-0.3) should be [stretch\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [stretch\] to [calc-size(auto, size)\] at (0) should be [stretch\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.3) should be [stretch\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.5) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.6) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [stretch\] to [calc-size(auto, size)\] at (1) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [stretch\] to [calc-size(auto, size)\] at (1.5) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [stretch\] to [calc-size(auto, size)\] at (-0.3) should be [stretch\]]
- expected: FAIL
-
- [Web Animations: property <width> from [stretch\] to [calc-size(auto, size)\] at (0) should be [stretch\]]
- expected: FAIL
-
- [Web Animations: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.3) should be [stretch\]]
- expected: FAIL
-
- [Web Animations: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.5) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [stretch\] to [calc-size(auto, size)\] at (0.6) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [stretch\] to [calc-size(auto, size)\] at (1) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [stretch\] to [calc-size(auto, size)\] at (1.5) should be [calc-size(auto, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [max-content\] to [calc-size(stretch, size)\] at (-0.3) should be [max-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0) should be [max-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.3) should be [max-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.5) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.6) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [max-content\] to [calc-size(stretch, size)\] at (1) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [max-content\] to [calc-size(stretch, size)\] at (1.5) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [max-content\] to [calc-size(stretch, size)\] at (-0.3) should be [max-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0) should be [max-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.3) should be [max-content\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.5) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.6) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [max-content\] to [calc-size(stretch, size)\] at (1) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [max-content\] to [calc-size(stretch, size)\] at (1.5) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [max-content\] to [calc-size(stretch, size)\] at (-0.3) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.3) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.5) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.6) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [max-content\] to [calc-size(stretch, size)\] at (1) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [max-content\] to [calc-size(stretch, size)\] at (1.5) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(stretch, size)\] at (-0.3) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.3) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.5) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.6) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(stretch, size)\] at (1) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [max-content\] to [calc-size(stretch, size)\] at (1.5) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [max-content\] to [calc-size(stretch, size)\] at (-0.3) should be [max-content\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0) should be [max-content\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.3) should be [max-content\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.5) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.6) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [max-content\] to [calc-size(stretch, size)\] at (1) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [max-content\] to [calc-size(stretch, size)\] at (1.5) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [max-content\] to [calc-size(stretch, size)\] at (-0.3) should be [max-content\]]
- expected: FAIL
-
- [Web Animations: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0) should be [max-content\]]
- expected: FAIL
-
- [Web Animations: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.3) should be [max-content\]]
- expected: FAIL
-
- [Web Animations: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.5) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [max-content\] to [calc-size(stretch, size)\] at (0.6) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [max-content\] to [calc-size(stretch, size)\] at (1) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [max-content\] to [calc-size(stretch, size)\] at (1.5) should be [calc-size(stretch, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(20px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0) should be [calc-size(20px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(20px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(20px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0) should be [calc-size(20px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(20px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(20px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0) should be [calc-size(20px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(20px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(20px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0) should be [calc-size(20px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(20px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(20px, size)\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-behavior:allow-discrete: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition-property:all and transition-behavor:allow-discrete: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (-0.3) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.3) should be [calc-size(50%, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (0.6) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(50%, size)\] to [calc-size(50px, size)\] at (1.5) should be [calc-size(50px, size)\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (-0.25) should be [225px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (0) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (0.75) should be [125px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (1) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (1.25) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (-0.25) should be [225px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (0) should be [200px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (0.75) should be [125px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (1) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (1.25) should be [75px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (-0.25) should be [225px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (0) should be [200px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (0.75) should be [125px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (1) should be [100px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (1.25) should be [75px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (-0.25) should be [225px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (0) should be [200px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (0.75) should be [125px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (1) should be [100px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(37px, 200px)\] to [calc-size(37px, size * 2 + 7% + 12px)\] at (1.25) should be [75px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (-0.25) should be [337.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (0) should be [300px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (0.75) should be [187.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (1) should be [150px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (1.25) should be [112.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (-0.25) should be [337.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (0) should be [300px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (0.75) should be [187.5px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (1) should be [150px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (1.25) should be [112.5px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (-0.25) should be [337.5px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (0) should be [300px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (0.75) should be [187.5px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (1) should be [150px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (1.25) should be [112.5px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (-0.25) should be [337.5px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (0) should be [300px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (0.75) should be [187.5px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (1) should be [150px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [inherit\] to [calc-size(auto, size * 0.5)\] at (1.25) should be [112.5px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (-0.25) should be [10px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0.75) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1) should be [60px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1.25) should be [70px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (-0.25) should be [10px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0) should be [20px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0.75) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1) should be [60px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1.25) should be [70px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (-0.25) should be [10px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0) should be [20px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0.75) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1) should be [60px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1.25) should be [70px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (-0.25) should be [10px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0) should be [20px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (0.75) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1) should be [60px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(20px, size)\] to [calc-size(60px, size)\] at (1.25) should be [70px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (-0.25) should be [110px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (0.75) should be [70px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (1) should be [60px\]]
- expected: FAIL
-
- [CSS Transitions: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (1.25) should be [50px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (-0.25) should be [110px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (0.75) should be [70px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (1) should be [60px\]]
- expected: FAIL
-
- [CSS Transitions with transition: all: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (1.25) should be [50px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (-0.25) should be [110px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (0) should be [100px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (0.75) should be [70px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (1) should be [60px\]]
- expected: FAIL
-
- [CSS Animations: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (1.25) should be [50px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (-0.25) should be [110px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (0) should be [100px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (0.75) should be [70px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (1) should be [60px\]]
- expected: FAIL
-
- [Web Animations: property <width> from [calc-size(50%, size)\] to [calc-size(60px, size)\] at (1.25) should be [50px\]]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-values/calc-size/calc-size-aspect-ratio-001.html.ini b/tests/wpt/meta/css/css-values/calc-size/calc-size-aspect-ratio-001.html.ini
new file mode 100644
index 00000000000..140dadd110d
--- /dev/null
+++ b/tests/wpt/meta/css/css-values/calc-size/calc-size-aspect-ratio-001.html.ini
@@ -0,0 +1,2 @@
+[calc-size-aspect-ratio-001.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-values/calc-size/calc-size-aspect-ratio-002.html.ini b/tests/wpt/meta/css/css-values/calc-size/calc-size-aspect-ratio-002.html.ini
new file mode 100644
index 00000000000..59d61fb57af
--- /dev/null
+++ b/tests/wpt/meta/css/css-values/calc-size/calc-size-aspect-ratio-002.html.ini
@@ -0,0 +1,2 @@
+[calc-size-aspect-ratio-002.html]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-values/calc-size/calc-size-flex-basis-on-column.html.ini b/tests/wpt/meta/css/css-values/calc-size/calc-size-flex-basis-on-column.html.ini
new file mode 100644
index 00000000000..5155f5a5804
--- /dev/null
+++ b/tests/wpt/meta/css/css-values/calc-size/calc-size-flex-basis-on-column.html.ini
@@ -0,0 +1,90 @@
+[calc-size-flex-basis-on-column.html]
+ [resolved value for height resulting from flex-basis: 274px]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: min-content]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: fit-content]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: max-content]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: content]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: calc-size(any, 357px)]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: calc-size(any, 220%)]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: calc-size(max-content, 350%)]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: calc-size(fit-content, 172px)]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: calc-size(37px, 193px)]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: calc-size(83px, size * 3)]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: calc-size(min-content, size / 0.25)]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: calc-size(max-content, size * 5.2)]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: calc-size(fit-content, size / 4 + 60px)]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: calc-size(stretch, size * 2 - 10%)]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: calc-size(30px, 15em)]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: calc-size(calc-size(any, 30px), 15em)]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: calc-size(calc-size(2in, 30px), 15em)]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: calc-size(calc-size(min-content, 30px), 15em)]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: calc-size(calc-size(min-content, size), size * 3)]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: calc-size(auto, size * 1.6 + 23px)]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: calc-size(content, size)]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: calc-size(content, size * 1.6 + 23px)]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: calc-size(auto, size * 3) and height: auto]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: auto and height: calc-size(auto, size * 7)]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: calc-size(auto, size * 7) and height: calc-size(auto, size * 3)]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: auto and height: calc-size(max-content, size + 12px)]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: calc-size(auto, size + 4px) and height: calc-size(fit-content, size + 12px)]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: 372px and height: calc-size(fit-content, size + 12px)]
+ expected: FAIL
+
+ [resolved value for height resulting from flex-basis: calc-size(content, size * 7) and height: 321px]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-values/calc-size/calc-size-flex-basis-on-row.html.ini b/tests/wpt/meta/css/css-values/calc-size/calc-size-flex-basis-on-row.html.ini
new file mode 100644
index 00000000000..326bee09871
--- /dev/null
+++ b/tests/wpt/meta/css/css-values/calc-size/calc-size-flex-basis-on-row.html.ini
@@ -0,0 +1,93 @@
+[calc-size-flex-basis-on-row.html]
+ [resolved value for width resulting from flex-basis: 274px]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: min-content]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: fit-content]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: max-content]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: content]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: calc-size(any, 357px)]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: calc-size(any, 31%)]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: calc-size(max-content, 31%)]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: calc-size(fit-content, 172px)]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: calc-size(37px, 193px)]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: calc-size(83px, size * 3)]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: calc-size(min-content, size / 2)]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: calc-size(max-content, size * 1.2)]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: calc-size(fit-content, size / 4 + 30px)]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: calc-size(stretch, size / 2 - 10%)]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: calc-size(30px, 15em)]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: calc-size(calc-size(any, 30px), 15em)]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: calc-size(calc-size(2in, 30px), 15em)]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: calc-size(calc-size(min-content, 30px), 15em)]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: calc-size(calc-size(min-content, size), size)]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: calc-size(auto, size * 1.6 + 23px)]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: calc-size(content, size)]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: calc-size(content, size / 2)]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: auto and width: auto]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: calc-size(auto, size * 2) and width: auto]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: auto and width: calc-size(auto, size * 1.5 + 5px)]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: calc-size(auto, size + 14px) and width: calc-size(auto, size * 1.5)]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: auto and width: calc-size(max-content, size + 12px)]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: calc-size(auto, size + 4px) and width: calc-size(fit-content, size + 12px)]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: 472px and width: calc-size(fit-content, size + 12px)]
+ expected: FAIL
+
+ [resolved value for width resulting from flex-basis: calc-size(content, size * 1.5 + 4px) and width: 321px]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-values/calc-size/calc-size-height.html.ini b/tests/wpt/meta/css/css-values/calc-size/calc-size-height.html.ini
new file mode 100644
index 00000000000..31265aa3279
--- /dev/null
+++ b/tests/wpt/meta/css/css-values/calc-size/calc-size-height.html.ini
@@ -0,0 +1,93 @@
+[calc-size-height.html]
+ [resolved height for height in auto height container: calc-size(any, 357px)]
+ expected: FAIL
+
+ [resolved height for height in definite height container: calc-size(any, 357px)]
+ expected: FAIL
+
+ [resolved height for height in auto height container: calc-size(any, 31%)]
+ expected: FAIL
+
+ [resolved height for height in definite height container: calc-size(any, 31%)]
+ expected: FAIL
+
+ [resolved height for height in definite height container: calc-size(31%, size)]
+ expected: FAIL
+
+ [resolved height for height in auto height container: calc-size(max-content, 31%)]
+ expected: FAIL
+
+ [resolved height for height in definite height container: calc-size(max-content, 31%)]
+ expected: FAIL
+
+ [resolved height for height in auto height container: calc-size(fit-content, 72px)]
+ expected: FAIL
+
+ [resolved height for height in definite height container: calc-size(fit-content, 72px)]
+ expected: FAIL
+
+ [resolved height for height in auto height container: calc-size(37px, 93px)]
+ expected: FAIL
+
+ [resolved height for height in definite height container: calc-size(37px, 93px)]
+ expected: FAIL
+
+ [resolved height for height in auto height container: calc-size(83px, size * 3)]
+ expected: FAIL
+
+ [resolved height for height in definite height container: calc-size(83px, size * 3)]
+ expected: FAIL
+
+ [resolved height for height in auto height container: calc-size(min-content, size / 2)]
+ expected: FAIL
+
+ [resolved height for height in definite height container: calc-size(min-content, size / 2)]
+ expected: FAIL
+
+ [resolved height for height in auto height container: calc-size(max-content, size * 1.2)]
+ expected: FAIL
+
+ [resolved height for height in definite height container: calc-size(max-content, size * 1.2)]
+ expected: FAIL
+
+ [resolved height for height in auto height container: calc-size(fit-content, size / 2 + 30px)]
+ expected: FAIL
+
+ [resolved height for height in definite height container: calc-size(fit-content, size / 2 + 30px)]
+ expected: FAIL
+
+ [resolved height for height in auto height container: calc-size(30px, 15em)]
+ expected: FAIL
+
+ [resolved height for height in definite height container: calc-size(30px, 15em)]
+ expected: FAIL
+
+ [resolved height for height in auto height container: calc-size(calc-size(any, 30px), 15em)]
+ expected: FAIL
+
+ [resolved height for height in definite height container: calc-size(calc-size(any, 30px), 15em)]
+ expected: FAIL
+
+ [resolved height for height in auto height container: calc-size(calc-size(2in, 30px), 15em)]
+ expected: FAIL
+
+ [resolved height for height in definite height container: calc-size(calc-size(2in, 30px), 15em)]
+ expected: FAIL
+
+ [resolved height for height in auto height container: calc-size(calc-size(min-content, 30px), 15em)]
+ expected: FAIL
+
+ [resolved height for height in definite height container: calc-size(calc-size(min-content, 30px), 15em)]
+ expected: FAIL
+
+ [resolved height for height in auto height container: calc-size(any, 31% + 12px)]
+ expected: FAIL
+
+ [resolved height for height in definite height container: calc-size(any, 31% + 12px)]
+ expected: FAIL
+
+ [resolved height for height in auto height container: calc-size(auto, size * 1.5)]
+ expected: FAIL
+
+ [resolved height for height in definite height container: calc-size(auto, size * 1.5)]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-values/calc-size/calc-size-height.tentative.html.ini b/tests/wpt/meta/css/css-values/calc-size/calc-size-height.tentative.html.ini
deleted file mode 100644
index 1d0e72e7a8a..00000000000
--- a/tests/wpt/meta/css/css-values/calc-size/calc-size-height.tentative.html.ini
+++ /dev/null
@@ -1,96 +0,0 @@
-[calc-size-height.tentative.html]
- [resolved height for height in auto height container: calc-size(any, 357px)]
- expected: FAIL
-
- [resolved height for height in definite height container: calc-size(any, 357px)]
- expected: FAIL
-
- [resolved height for height in auto height container: calc-size(any, 31%)]
- expected: FAIL
-
- [resolved height for height in definite height container: calc-size(any, 31%)]
- expected: FAIL
-
- [resolved height for height in definite height container: calc-size(31%, size)]
- expected: FAIL
-
- [resolved height for height in auto height container: calc-size(max-content, 31%)]
- expected: FAIL
-
- [resolved height for height in definite height container: calc-size(max-content, 31%)]
- expected: FAIL
-
- [resolved height for height in auto height container: calc-size(fit-content, 72px)]
- expected: FAIL
-
- [resolved height for height in definite height container: calc-size(fit-content, 72px)]
- expected: FAIL
-
- [resolved height for height in auto height container: calc-size(37px, 93px)]
- expected: FAIL
-
- [resolved height for height in definite height container: calc-size(37px, 93px)]
- expected: FAIL
-
- [resolved height for height in auto height container: calc-size(83px, size * 3)]
- expected: FAIL
-
- [resolved height for height in definite height container: calc-size(83px, size * 3)]
- expected: FAIL
-
- [resolved height for height in auto height container: calc-size(min-content, size / 2)]
- expected: FAIL
-
- [resolved height for height in definite height container: calc-size(min-content, size / 2)]
- expected: FAIL
-
- [resolved height for height in auto height container: calc-size(max-content, size * 1.2)]
- expected: FAIL
-
- [resolved height for height in definite height container: calc-size(max-content, size * 1.2)]
- expected: FAIL
-
- [resolved height for height in auto height container: calc-size(fit-content, size / 2 + 30px)]
- expected: FAIL
-
- [resolved height for height in definite height container: calc-size(fit-content, size / 2 + 30px)]
- expected: FAIL
-
- [resolved height for height in auto height container: calc-size(30px, 15em)]
- expected: FAIL
-
- [resolved height for height in definite height container: calc-size(30px, 15em)]
- expected: FAIL
-
- [resolved height for height in auto height container: calc-size(calc-size(any, 30px), 15em)]
- expected: FAIL
-
- [resolved height for height in definite height container: calc-size(calc-size(any, 30px), 15em)]
- expected: FAIL
-
- [resolved height for height in auto height container: calc-size(calc-size(2in, 30px), 15em)]
- expected: FAIL
-
- [resolved height for height in definite height container: calc-size(calc-size(2in, 30px), 15em)]
- expected: FAIL
-
- [resolved height for height in auto height container: calc-size(calc-size(min-content, 30px), 15em)]
- expected: FAIL
-
- [resolved height for height in definite height container: calc-size(calc-size(min-content, 30px), 15em)]
- expected: FAIL
-
- [resolved height for height in definite height container: calc(12% + calc-size(any, 31%))]
- expected: FAIL
-
- [resolved height for height in auto height container: calc-size(any, 31% + 12px)]
- expected: FAIL
-
- [resolved height for height in definite height container: calc-size(any, 31% + 12px)]
- expected: FAIL
-
- [resolved height for height in auto height container: calc-size(auto, size * 1.5)]
- expected: FAIL
-
- [resolved height for height in definite height container: calc-size(auto, size * 1.5)]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-values/calc-size/calc-size-parsing.html.ini b/tests/wpt/meta/css/css-values/calc-size/calc-size-parsing.html.ini
new file mode 100644
index 00000000000..92f07e5b5b0
--- /dev/null
+++ b/tests/wpt/meta/css/css-values/calc-size/calc-size-parsing.html.ini
@@ -0,0 +1,126 @@
+[calc-size-parsing.html]
+ [e.style['width'\] = "calc-size(auto, size)" should set the property value]
+ expected: FAIL
+
+ [e.style['min-width'\] = "calc-size(auto, size)" should set the property value]
+ expected: FAIL
+
+ [e.style['height'\] = "calc-size(auto, size)" should set the property value]
+ expected: FAIL
+
+ [e.style['min-height'\] = "calc-size(auto, size)" should set the property value]
+ expected: FAIL
+
+ [e.style['width'\] = "calc-size(max-content, size)" should set the property value]
+ expected: FAIL
+
+ [e.style['height'\] = "calc-size(max-content, size)" should set the property value]
+ expected: FAIL
+
+ [e.style['max-width'\] = "calc-size(max-content, size)" should set the property value]
+ expected: FAIL
+
+ [e.style['max-height'\] = "calc-size(max-content, size)" should set the property value]
+ expected: FAIL
+
+ [e.style['min-width'\] = "calc-size(max-content, size)" should set the property value]
+ expected: FAIL
+
+ [e.style['min-height'\] = "calc-size(max-content, size)" should set the property value]
+ expected: FAIL
+
+ [e.style['block-size'\] = "calc-size(max-content, size)" should set the property value]
+ expected: FAIL
+
+ [e.style['inline-size'\] = "calc-size(max-content, size)" should set the property value]
+ expected: FAIL
+
+ [e.style['max-block-size'\] = "calc-size(max-content, size)" should set the property value]
+ expected: FAIL
+
+ [e.style['max-inline-size'\] = "calc-size(max-content, size)" should set the property value]
+ expected: FAIL
+
+ [e.style['min-block-size'\] = "calc-size(max-content, size)" should set the property value]
+ expected: FAIL
+
+ [e.style['min-inline-size'\] = "calc-size(max-content, size)" should set the property value]
+ expected: FAIL
+
+ [e.style['width'\] = "calc-size(fit-content, size)" should set the property value]
+ expected: FAIL
+
+ [e.style['height'\] = "calc-size(min-content, size * 2)" should set the property value]
+ expected: FAIL
+
+ [e.style['max-width'\] = "calc-size(max-content, size / 2)" should set the property value]
+ expected: FAIL
+
+ [e.style['max-height'\] = "calc-size(fit-content, 30px + size / 2)" should set the property value]
+ expected: FAIL
+
+ [e.style['width'\] = "calc-size(fit-content, 50% + size / 2)" should set the property value]
+ expected: FAIL
+
+ [e.style['width'\] = "calc-size(any, 25em)" should set the property value]
+ expected: FAIL
+
+ [e.style['width'\] = "calc-size(any, 40%)" should set the property value]
+ expected: FAIL
+
+ [e.style['width'\] = "calc-size(any, 50px + 30%)" should set the property value]
+ expected: FAIL
+
+ [e.style['width'\] = "calc-size(10px, sign(size) * size)" should set the property value]
+ expected: FAIL
+
+ [e.style['width'\] = "calc-size(30px, 25em)" should set the property value]
+ expected: FAIL
+
+ [e.style['width'\] = "calc-size(calc-size(any, 30px), 25em)" should set the property value]
+ expected: FAIL
+
+ [e.style['width'\] = "calc-size(calc-size(2in, 30px), 25em)" should set the property value]
+ expected: FAIL
+
+ [e.style['width'\] = "calc-size(calc-size(min-content, 30px), 25em)" should set the property value]
+ expected: FAIL
+
+ [e.style['width'\] = "calc-size(calc-size(min-content, size), size)" should set the property value]
+ expected: FAIL
+
+ [e.style['width'\] = "calc-size(30px)" should set the property value]
+ expected: FAIL
+
+ [e.style['width'\] = "calc-size(min(30px, 2em))" should set the property value]
+ expected: FAIL
+
+ [e.style['width'\] = "calc-size(calc-size(any, 30px))" should set the property value]
+ expected: FAIL
+
+ [e.style['width'\] = "calc-size(fit-content)" should set the property value]
+ expected: FAIL
+
+ [e.style['width'\] = "calc-size(calc-size(fit-content, size * 2))" should set the property value]
+ expected: FAIL
+
+ [e.style['width'\] = "calc-size(calc-size(30px))" should set the property value]
+ expected: FAIL
+
+ [e.style['flex-basis'\] = "calc-size(any, 50px)" should set the property value]
+ expected: FAIL
+
+ [e.style['flex-basis'\] = "calc-size(auto, size)" should set the property value]
+ expected: FAIL
+
+ [e.style['flex-basis'\] = "calc-size(min-content, size)" should set the property value]
+ expected: FAIL
+
+ [e.style['flex-basis'\] = "calc-size(max-content, size)" should set the property value]
+ expected: FAIL
+
+ [e.style['flex-basis'\] = "calc-size(fit-content, size)" should set the property value]
+ expected: FAIL
+
+ [e.style['flex-basis'\] = "calc-size(content, size)" should set the property value]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-values/calc-size/calc-size-parsing.tentative.html.ini b/tests/wpt/meta/css/css-values/calc-size/calc-size-parsing.tentative.html.ini
deleted file mode 100644
index 07e762043c2..00000000000
--- a/tests/wpt/meta/css/css-values/calc-size/calc-size-parsing.tentative.html.ini
+++ /dev/null
@@ -1,111 +0,0 @@
-[calc-size-parsing.tentative.html]
- [e.style['width'\] = "calc-size(fit-content, size)" should set the property value]
- expected: FAIL
-
- [e.style['height'\] = "calc-size(min-content, size * 2)" should set the property value]
- expected: FAIL
-
- [e.style['max-width'\] = "calc-size(max-content, size / 2)" should set the property value]
- expected: FAIL
-
- [e.style['max-height'\] = "calc-size(fit-content, 30px + size / 2)" should set the property value]
- expected: FAIL
-
- [e.style['width'\] = "calc-size(fit-content, 50% + size / 2)" should set the property value]
- expected: FAIL
-
- [e.style['width'\] = "calc-size(any, 25em)" should set the property value]
- expected: FAIL
-
- [e.style['width'\] = "calc-size(any, 40%)" should set the property value]
- expected: FAIL
-
- [e.style['width'\] = "calc-size(any, 50px + 30%)" should set the property value]
- expected: FAIL
-
- [e.style['width'\] = "calc-size(any, calc-size(10px, sign(size) * size))" should set the property value]
- expected: FAIL
-
- [e.style['width'\] = "calc-size(30px, 25em)" should set the property value]
- expected: FAIL
-
- [e.style['width'\] = "calc-size(calc-size(any, 30px), 25em)" should set the property value]
- expected: FAIL
-
- [e.style['width'\] = "calc-size(calc-size(2in, 30px), 25em)" should set the property value]
- expected: FAIL
-
- [e.style['width'\] = "calc-size(calc-size(min-content, 30px), 25em)" should set the property value]
- expected: FAIL
-
- [e.style['width'\] = "calc-size(calc-size(min-content, size), size)" should set the property value]
- expected: FAIL
-
- [e.style['width'\] = "calc-size(auto, size)" should set the property value]
- expected: FAIL
-
- [e.style['min-width'\] = "calc-size(auto, size)" should set the property value]
- expected: FAIL
-
- [e.style['height'\] = "calc-size(auto, size)" should set the property value]
- expected: FAIL
-
- [e.style['min-height'\] = "calc-size(auto, size)" should set the property value]
- expected: FAIL
-
- [e.style['width'\] = "calc-size(10px, sign(size) * size)" should set the property value]
- expected: FAIL
-
- [e.style['width'\] = "calc-size(30px)" should set the property value]
- expected: FAIL
-
- [e.style['width'\] = "calc-size(min(30px, 2em))" should set the property value]
- expected: FAIL
-
- [e.style['width'\] = "calc-size(calc-size(any, 30px))" should set the property value]
- expected: FAIL
-
- [e.style['width'\] = "calc-size(fit-content)" should set the property value]
- expected: FAIL
-
- [e.style['width'\] = "calc-size(calc-size(fit-content, size * 2))" should set the property value]
- expected: FAIL
-
- [e.style['width'\] = "calc-size(calc-size(30px))" should set the property value]
- expected: FAIL
-
- [e.style['width'\] = "calc-size(max-content, size)" should set the property value]
- expected: FAIL
-
- [e.style['height'\] = "calc-size(max-content, size)" should set the property value]
- expected: FAIL
-
- [e.style['max-width'\] = "calc-size(max-content, size)" should set the property value]
- expected: FAIL
-
- [e.style['max-height'\] = "calc-size(max-content, size)" should set the property value]
- expected: FAIL
-
- [e.style['min-width'\] = "calc-size(max-content, size)" should set the property value]
- expected: FAIL
-
- [e.style['min-height'\] = "calc-size(max-content, size)" should set the property value]
- expected: FAIL
-
- [e.style['block-size'\] = "calc-size(max-content, size)" should set the property value]
- expected: FAIL
-
- [e.style['inline-size'\] = "calc-size(max-content, size)" should set the property value]
- expected: FAIL
-
- [e.style['max-block-size'\] = "calc-size(max-content, size)" should set the property value]
- expected: FAIL
-
- [e.style['max-inline-size'\] = "calc-size(max-content, size)" should set the property value]
- expected: FAIL
-
- [e.style['min-block-size'\] = "calc-size(max-content, size)" should set the property value]
- expected: FAIL
-
- [e.style['min-inline-size'\] = "calc-size(max-content, size)" should set the property value]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-values/calc-size/calc-size-width.html.ini b/tests/wpt/meta/css/css-values/calc-size/calc-size-width.html.ini
new file mode 100644
index 00000000000..42111367f45
--- /dev/null
+++ b/tests/wpt/meta/css/css-values/calc-size/calc-size-width.html.ini
@@ -0,0 +1,57 @@
+[calc-size-width.html]
+ [resolved width for width: calc-size(any, 357px)]
+ expected: FAIL
+
+ [resolved width for width: calc-size(any, 31%)]
+ expected: FAIL
+
+ [resolved width for width: calc-size(max-content, 31%)]
+ expected: FAIL
+
+ [resolved width for width: calc-size(fit-content, 72px)]
+ expected: FAIL
+
+ [resolved width for width: calc-size(37px, 93px)]
+ expected: FAIL
+
+ [resolved width for width: calc-size(83px, size * 3)]
+ expected: FAIL
+
+ [resolved width for width: calc-size(min-content, size / 2)]
+ expected: FAIL
+
+ [resolved width for width: calc-size(max-content, size * 1.2)]
+ expected: FAIL
+
+ [resolved width for width: calc-size(fit-content, size / 4 + 30px)]
+ expected: FAIL
+
+ [resolved width for width: calc-size(stretch, size / 2 - 10%)]
+ expected: FAIL
+
+ [resolved width for width: calc-size(30px, 15em)]
+ expected: FAIL
+
+ [resolved width for width: calc-size(calc-size(any, 30px), 15em)]
+ expected: FAIL
+
+ [resolved width for width: calc-size(calc-size(2in, 30px), 15em)]
+ expected: FAIL
+
+ [resolved width for width: calc-size(calc-size(min-content, 30px), 15em)]
+ expected: FAIL
+
+ [resolved width for width: calc-size(calc-size(min-content, size), size)]
+ expected: FAIL
+
+ [resolved width for width: calc-size(auto, size * 0.6 + 23px)]
+ expected: FAIL
+
+ [resolved width for width: with container width 300px]
+ expected: FAIL
+
+ [resolved width for width: with container width 500px]
+ expected: FAIL
+
+ [resolved width for width: with container width 700px]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-values/calc-size/calc-size-width.tentative.html.ini b/tests/wpt/meta/css/css-values/calc-size/calc-size-width.tentative.html.ini
deleted file mode 100644
index 5bc29b8c0e7..00000000000
--- a/tests/wpt/meta/css/css-values/calc-size/calc-size-width.tentative.html.ini
+++ /dev/null
@@ -1,57 +0,0 @@
-[calc-size-width.tentative.html]
- [resolved width for width: calc-size(any, 357px)]
- expected: FAIL
-
- [resolved width for width: calc-size(any, 31%)]
- expected: FAIL
-
- [resolved width for width: calc-size(max-content, 31%)]
- expected: FAIL
-
- [resolved width for width: calc-size(fit-content, 72px)]
- expected: FAIL
-
- [resolved width for width: calc-size(37px, 93px)]
- expected: FAIL
-
- [resolved width for width: calc-size(83px, size * 3)]
- expected: FAIL
-
- [resolved width for width: calc-size(min-content, size / 2)]
- expected: FAIL
-
- [resolved width for width: calc-size(max-content, size * 1.2)]
- expected: FAIL
-
- [resolved width for width: calc-size(fit-content, size / 4 + 30px)]
- expected: FAIL
-
- [resolved width for width: calc-size(stretch, size / 2 - 10%)]
- expected: FAIL
-
- [resolved width for width: calc-size(30px, 15em)]
- expected: FAIL
-
- [resolved width for width: calc-size(calc-size(any, 30px), 15em)]
- expected: FAIL
-
- [resolved width for width: calc-size(calc-size(2in, 30px), 15em)]
- expected: FAIL
-
- [resolved width for width: calc-size(calc-size(min-content, 30px), 15em)]
- expected: FAIL
-
- [resolved width for width: calc-size(calc-size(min-content, size), size)]
- expected: FAIL
-
- [resolved width for width: calc-size(auto, size * 0.6 + 23px)]
- expected: FAIL
-
- [resolved width for width: with container width 300px]
- expected: FAIL
-
- [resolved width for width: with container width 500px]
- expected: FAIL
-
- [resolved width for width: with container width 700px]
- expected: FAIL
diff --git a/tests/wpt/meta/css/css-values/cap-invalidation.html.ini b/tests/wpt/meta/css/css-values/cap-invalidation.html.ini
new file mode 100644
index 00000000000..fe359e79ece
--- /dev/null
+++ b/tests/wpt/meta/css/css-values/cap-invalidation.html.ini
@@ -0,0 +1,3 @@
+[cap-invalidation.html]
+ [CSS Values and Units Test: cap invalidation]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-values/integer_interpolation_round_half_towards_positive_infinity_order.html.ini b/tests/wpt/meta/css/css-values/integer_interpolation_round_half_towards_positive_infinity_order.html.ini
new file mode 100644
index 00000000000..3b874030901
--- /dev/null
+++ b/tests/wpt/meta/css/css-values/integer_interpolation_round_half_towards_positive_infinity_order.html.ini
@@ -0,0 +1,3 @@
+[integer_interpolation_round_half_towards_positive_infinity_order.html]
+ [Integer interpolation should be rounded towards positive infinity]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/css-variables/variable-css-wide-keywords.html.ini b/tests/wpt/meta/css/css-variables/variable-css-wide-keywords.html.ini
new file mode 100644
index 00000000000..1fddbc3a93f
--- /dev/null
+++ b/tests/wpt/meta/css/css-variables/variable-css-wide-keywords.html.ini
@@ -0,0 +1,33 @@
+[variable-css-wide-keywords.html]
+ [`initial` as a value for a non-inheriting registered custom property]
+ expected: FAIL
+
+ [`initial` as a value for an inheriting registered custom property]
+ expected: FAIL
+
+ [`unset` as a value for a non-inheriting registered custom property]
+ expected: FAIL
+
+ [`revert` as a value for a non-inheriting registered custom property]
+ expected: FAIL
+
+ [`revert-layer` as a `var()` fallback for an unregistered custom property]
+ expected: FAIL
+
+ [`initial` as a `var()` fallback for a non-inheriting registered custom property]
+ expected: FAIL
+
+ [`initial` as a `var()` fallback for an inheriting registered custom property]
+ expected: FAIL
+
+ [`unset` as a `var()` fallback for a non-inheriting registered custom property]
+ expected: FAIL
+
+ [`revert` as a `var()` fallback for a non-inheriting registered custom property]
+ expected: FAIL
+
+ [`revert-layer` as a `var()` fallback for a non-inheriting registered custom property]
+ expected: FAIL
+
+ [`revert-layer` as a `var()` fallback for an inheriting registered custom property]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/cssom-view/MediaQueryList-extends-EventTarget-interop.html.ini b/tests/wpt/meta/css/cssom-view/MediaQueryList-extends-EventTarget-interop.html.ini
index e6af0bd1e0a..12c4bfdbca8 100644
--- a/tests/wpt/meta/css/cssom-view/MediaQueryList-extends-EventTarget-interop.html.ini
+++ b/tests/wpt/meta/css/cssom-view/MediaQueryList-extends-EventTarget-interop.html.ini
@@ -1,19 +1,9 @@
[MediaQueryList-extends-EventTarget-interop.html]
- expected: TIMEOUT
- [listener added with addListener and addEventListener (capture) is called twice]
- expected: TIMEOUT
-
- [removeEventListener removes listener added with addListener]
- expected: NOTRUN
-
[removeEventListener (capture) doesn't remove listener added with addListener]
- expected: NOTRUN
-
- [removeListener removes listener added with addEventListener]
- expected: NOTRUN
+ expected: FAIL
[removeListener doesn't remove listener added with addEventListener (capture)]
- expected: NOTRUN
+ expected: FAIL
[capturing event listener fires before non-capturing listener at target]
- expected: NOTRUN
+ expected: FAIL
diff --git a/tests/wpt/meta/css/cssom-view/scrollintoview-containingblock-chain.html.ini b/tests/wpt/meta/css/cssom-view/scrollintoview-containingblock-chain.html.ini
new file mode 100644
index 00000000000..b02f774d4c9
--- /dev/null
+++ b/tests/wpt/meta/css/cssom-view/scrollintoview-containingblock-chain.html.ini
@@ -0,0 +1,3 @@
+[scrollintoview-containingblock-chain.html]
+ [scrollIntoView should not scroll ancestor overflow:scroll elements that are not containing block ancestors]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/cssom-view/scrollintoview-zero-height-item.html.ini b/tests/wpt/meta/css/cssom-view/scrollintoview-zero-height-item.html.ini
new file mode 100644
index 00000000000..e39676b6ace
--- /dev/null
+++ b/tests/wpt/meta/css/cssom-view/scrollintoview-zero-height-item.html.ini
@@ -0,0 +1,3 @@
+[scrollintoview-zero-height-item.html]
+ [scrollIntoView on zero height item]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/cssom/link-element-stylesheet-title.html.ini b/tests/wpt/meta/css/cssom/link-element-stylesheet-title.html.ini
new file mode 100644
index 00000000000..8077f48d263
--- /dev/null
+++ b/tests/wpt/meta/css/cssom/link-element-stylesheet-title.html.ini
@@ -0,0 +1,3 @@
+[link-element-stylesheet-title.html]
+ [StyleSheet.title]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/fill-stroke/animation/stroke-color-interpolation.html.ini b/tests/wpt/meta/css/fill-stroke/animation/stroke-color-interpolation.html.ini
new file mode 100644
index 00000000000..cd924c39d8a
--- /dev/null
+++ b/tests/wpt/meta/css/fill-stroke/animation/stroke-color-interpolation.html.ini
@@ -0,0 +1,516 @@
+[stroke-color-interpolation.html]
+ [CSS Transitions: property <stroke-color> from neutral to [green\] at (-0.3) should be [rgb(0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from neutral to [green\] at (0) should be [rgb(0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from neutral to [green\] at (0.3) should be [rgb(0, 38, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from neutral to [green\] at (0.6) should be [rgb(0, 77, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from neutral to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from neutral to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from neutral to [green\] at (-0.3) should be [rgb(0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from neutral to [green\] at (0) should be [rgb(0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from neutral to [green\] at (0.3) should be [rgb(0, 38, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from neutral to [green\] at (0.6) should be [rgb(0, 77, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from neutral to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from neutral to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from neutral to [green\] at (-0.3) should be [rgb(0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from neutral to [green\] at (0) should be [rgb(0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from neutral to [green\] at (0.3) should be [rgb(0, 38, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from neutral to [green\] at (0.6) should be [rgb(0, 77, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from neutral to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from neutral to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from neutral to [green\] at (-0.3) should be [rgb(0, 0, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from neutral to [green\] at (0) should be [rgb(0, 0, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from neutral to [green\] at (0.3) should be [rgb(0, 38, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from neutral to [green\] at (0.6) should be [rgb(0, 77, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from neutral to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from neutral to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [initial\] to [green\] at (-0.3) should be [rgba(0, 0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [initial\] to [green\] at (0) should be [rgba(0, 0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [initial\] to [green\] at (0.3) should be [rgba(0, 128, 0, 0.3)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [initial\] to [green\] at (0.6) should be [rgba(0, 128, 0, 0.6)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [initial\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [initial\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [initial\] to [green\] at (-0.3) should be [rgba(0, 0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [initial\] to [green\] at (0) should be [rgba(0, 0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [initial\] to [green\] at (0.3) should be [rgba(0, 128, 0, 0.3)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [initial\] to [green\] at (0.6) should be [rgba(0, 128, 0, 0.6)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [initial\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [initial\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [initial\] to [green\] at (-0.3) should be [rgba(0, 0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [initial\] to [green\] at (0) should be [rgba(0, 0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [initial\] to [green\] at (0.3) should be [rgba(0, 128, 0, 0.3)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [initial\] to [green\] at (0.6) should be [rgba(0, 128, 0, 0.6)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [initial\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [initial\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [initial\] to [green\] at (-0.3) should be [rgba(0, 0, 0, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [initial\] to [green\] at (0) should be [rgba(0, 0, 0, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [initial\] to [green\] at (0.3) should be [rgba(0, 128, 0, 0.3)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [initial\] to [green\] at (0.6) should be [rgba(0, 128, 0, 0.6)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [initial\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [initial\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [inherit\] to [green\] at (-0.3) should be [rgb(255, 255, 255)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [inherit\] to [green\] at (0) should be [rgb(238, 238, 238)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [inherit\] to [green\] at (0.3) should be [rgb(167, 205, 167)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [inherit\] to [green\] at (0.6) should be [rgb(95, 172, 95)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [inherit\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [inherit\] to [green\] at (1.5) should be [rgb(0, 73, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [inherit\] to [green\] at (-0.3) should be [rgb(255, 255, 255)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [inherit\] to [green\] at (0) should be [rgb(238, 238, 238)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [inherit\] to [green\] at (0.3) should be [rgb(167, 205, 167)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [inherit\] to [green\] at (0.6) should be [rgb(95, 172, 95)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [inherit\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [inherit\] to [green\] at (1.5) should be [rgb(0, 73, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [inherit\] to [green\] at (-0.3) should be [rgb(255, 255, 255)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [inherit\] to [green\] at (0) should be [rgb(238, 238, 238)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [inherit\] to [green\] at (0.3) should be [rgb(167, 205, 167)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [inherit\] to [green\] at (0.6) should be [rgb(95, 172, 95)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [inherit\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [inherit\] to [green\] at (1.5) should be [rgb(0, 73, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [inherit\] to [green\] at (-0.3) should be [rgb(255, 255, 255)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [inherit\] to [green\] at (0) should be [rgb(238, 238, 238)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [inherit\] to [green\] at (0.3) should be [rgb(167, 205, 167)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [inherit\] to [green\] at (0.6) should be [rgb(95, 172, 95)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [inherit\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [inherit\] to [green\] at (1.5) should be [rgb(0, 73, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [unset\] to [green\] at (-0.3) should be [rgb(255, 255, 255)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [unset\] to [green\] at (0) should be [rgb(238, 238, 238)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [unset\] to [green\] at (0.3) should be [rgb(167, 205, 167)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [unset\] to [green\] at (0.6) should be [rgb(95, 172, 95)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [unset\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [unset\] to [green\] at (1.5) should be [rgb(0, 73, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [unset\] to [green\] at (-0.3) should be [rgb(255, 255, 255)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [unset\] to [green\] at (0) should be [rgb(238, 238, 238)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [unset\] to [green\] at (0.3) should be [rgb(167, 205, 167)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [unset\] to [green\] at (0.6) should be [rgb(95, 172, 95)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [unset\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [unset\] to [green\] at (1.5) should be [rgb(0, 73, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [unset\] to [green\] at (-0.3) should be [rgb(255, 255, 255)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [unset\] to [green\] at (0) should be [rgb(238, 238, 238)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [unset\] to [green\] at (0.3) should be [rgb(167, 205, 167)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [unset\] to [green\] at (0.6) should be [rgb(95, 172, 95)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [unset\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [unset\] to [green\] at (1.5) should be [rgb(0, 73, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [unset\] to [green\] at (-0.3) should be [rgb(255, 255, 255)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [unset\] to [green\] at (0) should be [rgb(238, 238, 238)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [unset\] to [green\] at (0.3) should be [rgb(167, 205, 167)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [unset\] to [green\] at (0.6) should be [rgb(95, 172, 95)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [unset\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [unset\] to [green\] at (1.5) should be [rgb(0, 73, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [white\] to [orange\] at (-0.3) should be [white\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [white\] to [orange\] at (0) should be [white\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [white\] to [orange\] at (0.3) should be [rgb(255, 228, 179)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [white\] to [orange\] at (0.6) should be [rgb(255, 201, 102)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [white\] to [orange\] at (1) should be [orange\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [white\] to [orange\] at (1.5) should be [rgb(255, 120, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [white\] to [orange\] at (-0.3) should be [white\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [white\] to [orange\] at (0) should be [white\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [white\] to [orange\] at (0.3) should be [rgb(255, 228, 179)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [white\] to [orange\] at (0.6) should be [rgb(255, 201, 102)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [white\] to [orange\] at (1) should be [orange\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [white\] to [orange\] at (1.5) should be [rgb(255, 120, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [white\] to [orange\] at (-0.3) should be [white\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [white\] to [orange\] at (0) should be [white\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [white\] to [orange\] at (0.3) should be [rgb(255, 228, 179)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [white\] to [orange\] at (0.6) should be [rgb(255, 201, 102)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [white\] to [orange\] at (1) should be [orange\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [white\] to [orange\] at (1.5) should be [rgb(255, 120, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [white\] to [orange\] at (-0.3) should be [white\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [white\] to [orange\] at (0) should be [white\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [white\] to [orange\] at (0.3) should be [rgb(255, 228, 179)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [white\] to [orange\] at (0.6) should be [rgb(255, 201, 102)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [white\] to [orange\] at (1) should be [orange\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [white\] to [orange\] at (1.5) should be [rgb(255, 120, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [transparent\] to [green\] at (-0.3) should be [rgba(0, 0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [transparent\] to [green\] at (0) should be [rgba(0, 0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [transparent\] to [green\] at (0.3) should be [rgba(0, 128, 0, 0.3)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [transparent\] to [green\] at (0.6) should be [rgba(0, 128, 0, 0.6)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [transparent\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [transparent\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [transparent\] to [green\] at (-0.3) should be [rgba(0, 0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [transparent\] to [green\] at (0) should be [rgba(0, 0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [transparent\] to [green\] at (0.3) should be [rgba(0, 128, 0, 0.3)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [transparent\] to [green\] at (0.6) should be [rgba(0, 128, 0, 0.6)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [transparent\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [transparent\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [transparent\] to [green\] at (-0.3) should be [rgba(0, 0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [transparent\] to [green\] at (0) should be [rgba(0, 0, 0, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [transparent\] to [green\] at (0.3) should be [rgba(0, 128, 0, 0.3)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [transparent\] to [green\] at (0.6) should be [rgba(0, 128, 0, 0.6)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [transparent\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [transparent\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [transparent\] to [green\] at (-0.3) should be [rgba(0, 0, 0, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [transparent\] to [green\] at (0) should be [rgba(0, 0, 0, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [transparent\] to [green\] at (0.3) should be [rgba(0, 128, 0, 0.3)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [transparent\] to [green\] at (0.6) should be [rgba(0, 128, 0, 0.6)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [transparent\] to [green\] at (1) should be [rgb(0, 128, 0)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [transparent\] to [green\] at (1.5) should be [rgb(0, 192, 0)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (-0.5) should be [rgba(0, 0, 255, 0.38)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (0) should be [rgba(0, 0, 255, 0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (0.25) should be [rgba(0, 85, 170, 0.56)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (0.5) should be [rgba(0, 153, 102, 0.63)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (0.75) should be [rgba(0, 208, 47, 0.69)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (1) should be [rgba(0, 255, 0, 0.75)\]]
+ expected: FAIL
+
+ [CSS Transitions: property <stroke-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (1.5) should be [rgba(0, 255, 0, 0.88)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (-0.5) should be [rgba(0, 0, 255, 0.38)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (0) should be [rgba(0, 0, 255, 0.5)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (0.25) should be [rgba(0, 85, 170, 0.56)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (0.5) should be [rgba(0, 153, 102, 0.63)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (0.75) should be [rgba(0, 208, 47, 0.69)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (1) should be [rgba(0, 255, 0, 0.75)\]]
+ expected: FAIL
+
+ [CSS Transitions with transition: all: property <stroke-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (1.5) should be [rgba(0, 255, 0, 0.88)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (-0.5) should be [rgba(0, 0, 255, 0.38)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (0) should be [rgba(0, 0, 255, 0.5)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (0.25) should be [rgba(0, 85, 170, 0.56)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (0.5) should be [rgba(0, 153, 102, 0.63)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (0.75) should be [rgba(0, 208, 47, 0.69)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (1) should be [rgba(0, 255, 0, 0.75)\]]
+ expected: FAIL
+
+ [CSS Animations: property <stroke-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (1.5) should be [rgba(0, 255, 0, 0.88)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (-0.5) should be [rgba(0, 0, 255, 0.38)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (0) should be [rgba(0, 0, 255, 0.5)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (0.25) should be [rgba(0, 85, 170, 0.56)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (0.5) should be [rgba(0, 153, 102, 0.63)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (0.75) should be [rgba(0, 208, 47, 0.69)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (1) should be [rgba(0, 255, 0, 0.75)\]]
+ expected: FAIL
+
+ [Web Animations: property <stroke-color> from [currentcolor\] to [rgba(0, 255, 0, 0.75)\] at (1.5) should be [rgba(0, 255, 0, 0.88)\]]
+ expected: FAIL
diff --git a/tests/wpt/meta/css/selectors/parsing/parse-part.html.ini b/tests/wpt/meta/css/selectors/parsing/parse-part.html.ini
index f4b74af65bf..8a0356d9826 100644
--- a/tests/wpt/meta/css/selectors/parsing/parse-part.html.ini
+++ b/tests/wpt/meta/css/selectors/parsing/parse-part.html.ini
@@ -70,3 +70,9 @@
["::part(foo):where(nav ul)" should be a valid selector]
expected: FAIL
+
+ ["::part(foo):disabled" should be a valid selector]
+ expected: FAIL
+
+ ["::part(foo):checked" should be a valid selector]
+ expected: FAIL
diff --git a/tests/wpt/meta/custom-elements/form-associated/ElementInternals-setFormValue.html.ini b/tests/wpt/meta/custom-elements/form-associated/ElementInternals-setFormValue.html.ini
index 1e562c9abe5..a85875a7456 100644
--- a/tests/wpt/meta/custom-elements/form-associated/ElementInternals-setFormValue.html.ini
+++ b/tests/wpt/meta/custom-elements/form-associated/ElementInternals-setFormValue.html.ini
@@ -2,9 +2,6 @@
[Newline normalization - \\n\\r in value]
expected: FAIL
- [Single value - name is missing]
- expected: FAIL
-
[Single value - Non-empty name exists]
expected: FAIL
diff --git a/tests/wpt/meta/dom/nodes/moveBefore/tentative/popover-preserve.html.ini b/tests/wpt/meta/dom/nodes/moveBefore/tentative/popover-preserve.html.ini
new file mode 100644
index 00000000000..8f5193b1f88
--- /dev/null
+++ b/tests/wpt/meta/dom/nodes/moveBefore/tentative/popover-preserve.html.ini
@@ -0,0 +1,3 @@
+[popover-preserve.html]
+ [when reparenting an open popover, it shouldn't be closed automatically]
+ expected: FAIL
diff --git a/tests/wpt/meta/fetch/metadata/generated/element-img-environment-change.sub.html.ini b/tests/wpt/meta/fetch/metadata/generated/element-img-environment-change.sub.html.ini
index 410ec4c1d39..4648085f98d 100644
--- a/tests/wpt/meta/fetch/metadata/generated/element-img-environment-change.sub.html.ini
+++ b/tests/wpt/meta/fetch/metadata/generated/element-img-environment-change.sub.html.ini
@@ -41,3 +41,6 @@
[sec-fetch-site - HTTPS downgrade-upgrade, no attributes]
expected: NOTRUN
+
+ [sec-fetch-site - Not sent to non-trustworthy same-origin destination, no attributes]
+ expected: FAIL
diff --git a/tests/wpt/meta/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin.window.js.ini b/tests/wpt/meta/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin.window.js.ini
deleted file mode 100644
index 7dc346632a4..00000000000
--- a/tests/wpt/meta/html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin.window.js.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[navigation-unload-same-origin.window.html]
- [Same-origin navigation started from unload handler must be ignored]
- expected: FAIL
diff --git a/tests/wpt/meta/html/infrastructure/urls/base-url/document-base-url-window-initiator-is-not-opener.https.window.js.ini b/tests/wpt/meta/html/infrastructure/urls/base-url/document-base-url-window-initiator-is-not-opener.https.window.js.ini
index 8b8af2b9c2e..2ef0896e3b3 100644
--- a/tests/wpt/meta/html/infrastructure/urls/base-url/document-base-url-window-initiator-is-not-opener.https.window.js.ini
+++ b/tests/wpt/meta/html/infrastructure/urls/base-url/document-base-url-window-initiator-is-not-opener.https.window.js.ini
@@ -1,3 +1,4 @@
[document-base-url-window-initiator-is-not-opener.https.window.html]
+ expected: TIMEOUT
[window.open() gets base url from initiator not opener.]
expected: [FAIL, PASS, TIMEOUT]
diff --git a/tests/wpt/meta/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini b/tests/wpt/meta/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini
index 26704422bbe..68203d2a082 100644
--- a/tests/wpt/meta/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini
+++ b/tests/wpt/meta/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-2.html.ini
@@ -1,4 +1,4 @@
[iframe_sandbox_popups_escaping-2.html]
- expected: TIMEOUT
+ expected: CRASH
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
expected: TIMEOUT
diff --git a/tests/wpt/meta/html/semantics/embedded-content/the-img-element/empty-src-no-current-request.html.ini b/tests/wpt/meta/html/semantics/embedded-content/the-img-element/empty-src-no-current-request.html.ini
new file mode 100644
index 00000000000..2a1e0672085
--- /dev/null
+++ b/tests/wpt/meta/html/semantics/embedded-content/the-img-element/empty-src-no-current-request.html.ini
@@ -0,0 +1,3 @@
+[empty-src-no-current-request.html]
+ [Without srcset]
+ expected: FAIL
diff --git a/tests/wpt/meta/html/semantics/embedded-content/the-img-element/update-the-image-data/current-request-microtask-002.html.ini b/tests/wpt/meta/html/semantics/embedded-content/the-img-element/update-the-image-data/current-request-microtask-002.html.ini
new file mode 100644
index 00000000000..f617946311b
--- /dev/null
+++ b/tests/wpt/meta/html/semantics/embedded-content/the-img-element/update-the-image-data/current-request-microtask-002.html.ini
@@ -0,0 +1,3 @@
+[current-request-microtask-002.html]
+ [Current request microtask handling with multiple tasks.]
+ expected: FAIL
diff --git a/tests/wpt/meta/html/semantics/forms/the-selectlist-element/selectlist-form-state-restore.tentative.html.ini b/tests/wpt/meta/html/semantics/forms/the-selectlist-element/selectlist-form-state-restore.tentative.html.ini
deleted file mode 100644
index 81cd0e54d89..00000000000
--- a/tests/wpt/meta/html/semantics/forms/the-selectlist-element/selectlist-form-state-restore.tentative.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[selectlist-form-state-restore.tentative.html]
- [Test restoring state after form submission]
- expected: FAIL
diff --git a/tests/wpt/meta/html/semantics/scripting-1/the-script-element/module/dynamic-import/microtasks/basic.any.js.ini b/tests/wpt/meta/html/semantics/scripting-1/the-script-element/module/dynamic-import/microtasks/basic.any.js.ini
index 1bed20b7797..ff014ca4c83 100644
--- a/tests/wpt/meta/html/semantics/scripting-1/the-script-element/module/dynamic-import/microtasks/basic.any.js.ini
+++ b/tests/wpt/meta/html/semantics/scripting-1/the-script-element/module/dynamic-import/microtasks/basic.any.js.ini
@@ -1,5 +1,4 @@
[basic.any.html]
- expected: TIMEOUT
[basic.any.sharedworker.html]
expected: ERROR
diff --git a/tests/wpt/meta/resource-timing/content-type-parsing.html.ini b/tests/wpt/meta/resource-timing/content-type-parsing.html.ini
index 49b17a921b5..71ca4ed5411 100644
--- a/tests/wpt/meta/resource-timing/content-type-parsing.html.ini
+++ b/tests/wpt/meta/resource-timing/content-type-parsing.html.ini
@@ -94,10 +94,10 @@
expected: FAIL
[mime-type 16 : text/html;charset=\x0bgbk]
- expected: TIMEOUT
+ expected: FAIL
[mime-type 17 : text/html;charset=\x0cgbk]
- expected: NOTRUN
+ expected: TIMEOUT
[mime-type 18 : text/html;\x0bcharset=gbk]
expected: NOTRUN
diff --git a/tests/wpt/meta/selection/move-paragraphboundary-cross-editing-boundary.tentative.html.ini b/tests/wpt/meta/selection/move-paragraphboundary-cross-editing-boundary.tentative.html.ini
new file mode 100644
index 00000000000..06e28ab6516
--- /dev/null
+++ b/tests/wpt/meta/selection/move-paragraphboundary-cross-editing-boundary.tentative.html.ini
@@ -0,0 +1,6 @@
+[move-paragraphboundary-cross-editing-boundary.tentative.html]
+ [cross editing boundary]
+ expected: FAIL
+
+ [Selection.modify(): move by paragraphboundary cross editing boundary]
+ expected: FAIL
diff --git a/tests/wpt/meta/selection/selection-content-visibility-hidden.html.ini b/tests/wpt/meta/selection/selection-content-visibility-hidden.html.ini
new file mode 100644
index 00000000000..9c0a84940c4
--- /dev/null
+++ b/tests/wpt/meta/selection/selection-content-visibility-hidden.html.ini
@@ -0,0 +1,3 @@
+[selection-content-visibility-hidden.html]
+ [Text with content-visibility: hidden is not selected]
+ expected: FAIL
diff --git a/tests/wpt/meta/selection/selection-nested-video.html.ini b/tests/wpt/meta/selection/selection-nested-video.html.ini
index ada31776b54..918cc07a32d 100644
--- a/tests/wpt/meta/selection/selection-nested-video.html.ini
+++ b/tests/wpt/meta/selection/selection-nested-video.html.ini
@@ -2,3 +2,6 @@
expected: ERROR
[Selection with nested videos doesn't crash]
expected: TIMEOUT
+
+ [selection have the same anchor and focus nodes because b and c are in different tree scopes.]
+ expected: TIMEOUT
diff --git a/tests/wpt/meta/selection/shadow-dom/select-later-become-slotted-content.html.ini b/tests/wpt/meta/selection/shadow-dom/select-later-become-slotted-content.html.ini
deleted file mode 100644
index b87085190ed..00000000000
--- a/tests/wpt/meta/selection/shadow-dom/select-later-become-slotted-content.html.ini
+++ /dev/null
@@ -1,3 +0,0 @@
-[select-later-become-slotted-content.html]
- [test to select a light DOM element and it becomes a slotted content after the selection]
- expected: FAIL
diff --git a/tests/wpt/meta/selection/shadow-dom/select-later-become-slotted-content.tentative.html.ini b/tests/wpt/meta/selection/shadow-dom/select-later-become-slotted-content.tentative.html.ini
new file mode 100644
index 00000000000..1a6fbc450ce
--- /dev/null
+++ b/tests/wpt/meta/selection/shadow-dom/select-later-become-slotted-content.tentative.html.ini
@@ -0,0 +1,3 @@
+[select-later-become-slotted-content.tentative.html]
+ [test to select a light DOM element and it becomes a slotted content after the selection]
+ expected: FAIL
diff --git a/tests/wpt/tests/FileAPI/BlobURL/cross-partition.tentative.https.html b/tests/wpt/tests/FileAPI/BlobURL/cross-partition.tentative.https.html
index c75ce07d054..11d9787b887 100644
--- a/tests/wpt/tests/FileAPI/BlobURL/cross-partition.tentative.https.html
+++ b/tests/wpt/tests/FileAPI/BlobURL/cross-partition.tentative.https.html
@@ -13,8 +13,20 @@
<body>
<script>
-const did_revoke_response = "URL.revokeObjectURL did revoke";
-const did_not_revoke_response = "URL.revokeObjectURL did not revoke";
+const fetch_unsuccessful_response = "Fetch failed";
+const fetch_successful_response = "Fetch succeeded";
+const js_finished = "revoking blob_url js finished";
+
+// Fetches a previously revoked blob_url to see if the revoking was successful.
+async function fetch_contents_check(blob_url) {
+ try {
+ const blob = await fetch(blob_url).then(response => response.blob());
+ await blob.text();
+ } catch(e) {
+ return fetch_unsuccessful_response;
+ }
+ return fetch_successful_response;
+}
const can_blob_url_be_revoked_js = (blob_url, response_queue_name) => `
async function test() {
@@ -22,22 +34,33 @@ const can_blob_url_be_revoked_js = (blob_url, response_queue_name) => `
return send("${response_queue_name}", "URL.revokeObjectURL is not exposed");
}
try {
- var blob = await fetch("${blob_url}").then(response => response.blob());
- await blob.text();
- } catch {
- return send("${response_queue_name}", "Blob URL invalid");
- }
- try {
URL.revokeObjectURL("${blob_url}");
} catch(e) {
return send("${response_queue_name}", e.toString());
}
+
+ // Create, fetch, and revoke a separate blob URL to better ensure that the
+ // revoke call above has had time to take effect before we return.
+ const blob_1 = new Blob(["blob data"], {type : "text/plain"});
+ const blob_url_1 = URL.createObjectURL(blob_1);
+ await fetch(blob_url_1).then(response => response.blob());
+ URL.revokeObjectURL(blob_url_1);
+
+ return send("${response_queue_name}", "${js_finished}");
+ }
+ await test();
+`;
+
+const can_blob_url_be_fetched_js = (blob_url, response_queue_name) => `
+ async function test() {
try {
const blob = await fetch("${blob_url}").then(response => response.blob());
+ await blob.text();
} catch(e) {
- return send("${response_queue_name}", "${did_revoke_response}");
+ return send("${response_queue_name}", "${fetch_unsuccessful_response}");
}
- return send("${response_queue_name}", "${did_not_revoke_response}");
+
+ return send("${response_queue_name}", "${fetch_successful_response}");
}
await test();
`;
@@ -55,6 +78,9 @@ const same_site_origin = get_host_info().HTTPS_ORIGIN;
const cross_site_origin = get_host_info().HTTPS_NOTSAMESITE_ORIGIN;
async function create_test_iframes(t, response_queue_uuid) {
+ assert_equals("https://" + window.location.host, same_site_origin,
+ "this test assumes that the page's window.location.host corresponds to " +
+ "get_host_info().HTTPS_ORIGIN");
// Create a same-origin iframe in a cross-site popup.
const not_same_site_popup_uuid = newPopup(t, cross_site_origin);
@@ -71,30 +97,47 @@ async function create_test_iframes(t, response_queue_uuid) {
return [iframe_1_uuid, iframe_2_uuid];
}
+// Tests revoking blob URL for same and cross partition iframes.
promise_test(t => {
return new Promise(async (resolve, reject) => {
try {
+ // Creates blob URL.
+ const blob = new Blob(["blob data"], {type : "text/plain"});
+ const blob_url = window.URL.createObjectURL(blob);
+
+ // Fetches blob URL to ensure that it's valid.
+ const blob_fetch = await fetch_contents_check(blob_url);
+ if (blob_fetch !== fetch_successful_response) {
+ reject("Blob URL invalid");
+ }
+
+ // Creates same and cross partition iframes.
const response_queue_uuid = token();
const [iframe_1_uuid, iframe_2_uuid] =
await create_test_iframes(t, response_queue_uuid);
- const blob = new Blob(["blob data"], {type : "text/plain"});
- const blob_url = window.URL.createObjectURL(blob);
- t.add_cleanup(() => window.URL.revokeObjectURL(blob_url));
-
- await send(iframe_1_uuid,
- can_blob_url_be_revoked_js(blob_url, response_queue_uuid));
- var response = await receive(response_queue_uuid);
- if (response !== did_not_revoke_response) {
- reject(`Blob URL was revoked in not-same-top-level-site iframe: ${response}`);
+ // Attempt to revoke blob URL in cross partition iframe.
+ await send(iframe_1_uuid, can_blob_url_be_revoked_js(blob_url, response_queue_uuid));
+ var response_1 = await receive(response_queue_uuid);
+ if (response_1 !== js_finished) {
+ reject(response_1);
+ }
+ response_1 = await fetch_contents_check(blob_url);
+ if (response_1 !== fetch_successful_response) {
+ reject(`Blob URL was revoked in not-same-top-level-site iframe: ${response_1}`);
}
- await send(iframe_2_uuid,
- can_blob_url_be_revoked_js(blob_url, response_queue_uuid));
- response = await receive(response_queue_uuid);
- if (response !== did_revoke_response) {
- reject(`Blob URL wasn't revoked in same-top-level-site iframe: ${response}`);
+ // Attempt to revoke blob URL in same partition iframe.
+ await send(iframe_2_uuid, can_blob_url_be_revoked_js(blob_url, response_queue_uuid));
+ var response_2 = await receive(response_queue_uuid);
+ if (response_2 !== js_finished) {
+ reject(response_2);
+ }
+ response_2 = await fetch_contents_check(blob_url);
+ if (response_2 !== fetch_unsuccessful_response) {
+ t.add_cleanup(() => window.URL.revokeObjectURL(blob_url));
+ reject(`Blob URL wasn't revoked in same-top-level-site iframe: ${response_2}`);
}
resolve();
@@ -111,48 +154,53 @@ const newWorker = (origin) => {
return worker_token;
}
+const create_dedicated_worker_js = (origin, response_queue_uuid) => `
+ const importScript = ${importScript};
+ await importScript("/html/cross-origin-embedder-policy/credentialless" +
+ "/resources/common.js");
+ await importScript("/html/anonymous-iframe/resources/common.js");
+ await importScript("/common/utils.js");
+ const newWorker = ${newWorker};
+ await send("${response_queue_uuid}", newWorker("${origin}"));
+`;
+
+// Tests revoking blob URL from same and cross partition dedicated worker.
promise_test(t => {
return new Promise(async (resolve, reject) => {
try {
const response_queue_uuid = token();
- const create_worker_js = (origin) => `
- const importScript = ${importScript};
- await importScript("/html/cross-origin-embedder-policy/credentialless" +
- "/resources/common.js");
- await importScript("/html/anonymous-iframe/resources/common.js");
- await importScript("/common/utils.js");
- const newWorker = ${newWorker};
- await send("${response_queue_uuid}", newWorker("${origin}"));
- `;
-
const [iframe_1_uuid, iframe_2_uuid] =
await create_test_iframes(t, response_queue_uuid);
- // Create a dedicated worker in the cross-top-level-site iframe.
- await send(iframe_1_uuid, create_worker_js(same_site_origin));
+ await send(iframe_1_uuid, create_dedicated_worker_js(same_site_origin, response_queue_uuid));
const worker_1_uuid = await receive(response_queue_uuid);
- // Create a dedicated worker in the same-top-level-site iframe.
- await send(iframe_2_uuid, create_worker_js(same_site_origin));
+ await send(iframe_2_uuid, create_dedicated_worker_js(same_site_origin, response_queue_uuid));
const worker_2_uuid = await receive(response_queue_uuid);
const blob = new Blob(["blob data"], {type : "text/plain"});
const blob_url = window.URL.createObjectURL(blob);
- t.add_cleanup(() => window.URL.revokeObjectURL(blob_url));
- await send(worker_1_uuid,
- can_blob_url_be_revoked_js(blob_url, response_queue_uuid));
- var response = await receive(response_queue_uuid);
- if (response !== did_not_revoke_response) {
- reject(`Blob URL was revoked in not-same-top-level-site dedicated worker: ${response}`);
+ await send(worker_1_uuid, can_blob_url_be_revoked_js(blob_url, response_queue_uuid));
+ var response_1 = await receive(response_queue_uuid);
+ if (response_1 !== js_finished) {
+ reject(response_1);
+ }
+ response_1 = await fetch_contents_check(blob_url);
+ if (response_1 !== fetch_successful_response) {
+ reject(`Blob URL was revoked in not-same-top-level-site dedicated worker: ${response_1}`);
}
- await send(worker_2_uuid,
- can_blob_url_be_revoked_js(blob_url, response_queue_uuid));
- response = await receive(response_queue_uuid);
- if (response !== did_revoke_response) {
- reject(`Blob URL wasn't revoked in same-top-level-site dedicated worker: ${response}`);
+ await send(worker_2_uuid, can_blob_url_be_revoked_js(blob_url, response_queue_uuid));
+ var response_2 = await receive(response_queue_uuid);
+ if (response_2 !== js_finished) {
+ reject(response_2);
+ }
+ response_2 = await fetch_contents_check(blob_url);
+ if (response_2 !== fetch_unsuccessful_response) {
+ t.add_cleanup(() => window.URL.revokeObjectURL(blob_url));
+ reject(`Blob URL wasn't revoked in same-top-level-site dedicated worker: ${response_2}`);
}
resolve();
@@ -169,48 +217,55 @@ const newSharedWorker = (origin) => {
return worker_token;
}
+const create_shared_worker_js = (origin, response_queue_uuid) => `
+ const importScript = ${importScript};
+ await importScript("/html/cross-origin-embedder-policy/credentialless" +
+ "/resources/common.js");
+ await importScript("/html/anonymous-iframe/resources/common.js");
+ await importScript("/common/utils.js");
+ const newSharedWorker = ${newSharedWorker};
+ await send("${response_queue_uuid}", newSharedWorker("${origin}"));
+`;
+
+// Tests revoking blob URL from same and cross partition shared worker.
promise_test(t => {
return new Promise(async (resolve, reject) => {
try {
const response_queue_uuid = token();
- const create_worker_js = (origin) => `
- const importScript = ${importScript};
- await importScript("/html/cross-origin-embedder-policy/credentialless" +
- "/resources/common.js");
- await importScript("/html/anonymous-iframe/resources/common.js");
- await importScript("/common/utils.js");
- const newSharedWorker = ${newSharedWorker};
- await send("${response_queue_uuid}", newSharedWorker("${origin}"));
- `;
-
const [iframe_1_uuid, iframe_2_uuid] =
await create_test_iframes(t, response_queue_uuid);
// Create a shared worker in the cross-top-level-site iframe.
- await send(iframe_1_uuid, create_worker_js(same_site_origin));
+ await send(iframe_1_uuid, create_shared_worker_js(same_site_origin, response_queue_uuid));
const worker_1_uuid = await receive(response_queue_uuid);
// Create a shared worker in the same-top-level-site iframe.
- await send(iframe_2_uuid, create_worker_js(same_site_origin));
+ await send(iframe_2_uuid, create_shared_worker_js(same_site_origin, response_queue_uuid));
const worker_2_uuid = await receive(response_queue_uuid);
const blob = new Blob(["blob data"], {type : "text/plain"});
const blob_url = window.URL.createObjectURL(blob);
- t.add_cleanup(() => window.URL.revokeObjectURL(blob_url));
- await send(worker_1_uuid,
- can_blob_url_be_revoked_js(blob_url, response_queue_uuid));
- var response = await receive(response_queue_uuid);
- if (response !== did_not_revoke_response) {
- reject(`Blob URL was revoked in not-same-top-level-site shared worker: ${response}`);
+ await send(worker_1_uuid, can_blob_url_be_revoked_js(blob_url, response_queue_uuid));
+ var response_1 = await receive(response_queue_uuid);
+ if (response_1 !== js_finished) {
+ reject(response_1);
+ }
+ response_1 = await fetch_contents_check(blob_url);
+ if (response_1 !== fetch_successful_response) {
+ reject(`Blob URL was revoked in not-same-top-level-site shared worker: ${response_1}`);
}
- await send(worker_2_uuid,
- can_blob_url_be_revoked_js(blob_url, response_queue_uuid));
- response = await receive(response_queue_uuid);
- if (response !== did_revoke_response) {
- reject(`Blob URL wasn't revoked in same-top-level-site shared worker: ${response}`);
+ await send(worker_2_uuid, can_blob_url_be_revoked_js(blob_url, response_queue_uuid));
+ var response_2 = await receive(response_queue_uuid);
+ if (response_2 !== js_finished) {
+ reject(response_2);
+ }
+ response_2 = await fetch_contents_check(blob_url);
+ if (response_2 !== fetch_unsuccessful_response) {
+ t.add_cleanup(() => window.URL.revokeObjectURL(blob_url));
+ reject(`Blob URL wasn't revoked in same-top-level-site shared worker: ${response_2}`);
}
resolve();
@@ -232,26 +287,27 @@ const newServiceWorker = async (origin) => {
return worker_token;
}
+const create_service_worker_js = (origin, response_queue_uuid) => `
+ const importScript = ${importScript};
+ await importScript("/html/cross-origin-embedder-policy/credentialless" +
+ "/resources/common.js");
+ await importScript("/html/anonymous-iframe/resources/common.js");
+ await importScript("/common/utils.js");
+ const newServiceWorker = ${newServiceWorker};
+ await send("${response_queue_uuid}", await newServiceWorker("${origin}"));
+`;
+
+// Tests revoking blob URL from a service worker.
promise_test(t => {
return new Promise(async (resolve, reject) => {
try {
const response_queue_uuid = token();
- const create_worker_js = (origin) => `
- const importScript = ${importScript};
- await importScript("/html/cross-origin-embedder-policy/credentialless" +
- "/resources/common.js");
- await importScript("/html/anonymous-iframe/resources/common.js");
- await importScript("/common/utils.js");
- const newServiceWorker = ${newServiceWorker};
- await send("${response_queue_uuid}", await newServiceWorker("${origin}"));
- `;
-
const [iframe_1_uuid, iframe_2_uuid] =
await create_test_iframes(t, response_queue_uuid);
// Create a service worker in either iframe.
- await send(iframe_1_uuid, create_worker_js(same_site_origin));
+ await send(iframe_1_uuid, create_service_worker_js(same_site_origin, response_queue_uuid));
var worker_1_uuid = await receive(response_queue_uuid);
t.add_cleanup(() =>
send(worker_1_uuid, "self.registration.unregister();"));
@@ -272,5 +328,178 @@ promise_test(t => {
}
});
}, "Blob URL shouldn't be revocable from a service worker");
+
+// Tests fetching blob URL for same and cross partition iframes.
+promise_test(t => {
+ return new Promise(async (resolve, reject) => {
+ try {
+ // Creates blob URL.
+ const blob = new Blob(["blob data"], {type : "text/plain"});
+ const blob_url = window.URL.createObjectURL(blob);
+ t.add_cleanup(() => window.URL.revokeObjectURL(blob_url));
+
+ // Fetches blob URL to ensure that it's valid.
+ const blob_fetch = await fetch_contents_check(blob_url);
+ if (blob_fetch !== fetch_successful_response) {
+ reject("Blob URL invalid");
+ }
+
+ // Creates same and cross partition iframes.
+ const response_queue_uuid = token();
+
+ const [iframe_1_uuid, iframe_2_uuid] =
+ await create_test_iframes(t, response_queue_uuid);
+
+ // Attempt to fetch blob URL in cross partition iframe.
+ await send(iframe_1_uuid, can_blob_url_be_fetched_js(blob_url, response_queue_uuid));
+ var response_1 = await receive(response_queue_uuid);
+ if (response_1 !== fetch_unsuccessful_response) {
+ reject(`Blob URL was fetched in not-same-top-level-site iframe: ${response_1}`);
+ }
+
+ // Attempt to fetch blob URL in same partition iframe.
+ await send(iframe_2_uuid, can_blob_url_be_fetched_js(blob_url, response_queue_uuid));
+ var response_2 = await receive(response_queue_uuid);
+ if (response_2 !== fetch_successful_response) {
+ reject(`Blob URL wasn't fetched in same-top-level-site iframe: ${response_2}`);
+ }
+
+ resolve();
+ } catch (e) {
+ reject(e);
+ }
+ });
+}, "Blob URL shouldn't be fetched from a cross-partition iframe");
+
+// Tests fetching blob URL from same and cross partition dedicated worker.
+promise_test(t => {
+ return new Promise(async (resolve, reject) => {
+ try {
+ const response_queue_uuid = token();
+
+ // Creates same and cross partition iframes.
+ const [iframe_1_uuid, iframe_2_uuid] =
+ await create_test_iframes(t, response_queue_uuid);
+
+ // Creates a dedicated worker in the cross-top-level-site iframe.
+ await send(iframe_1_uuid, create_dedicated_worker_js(same_site_origin, response_queue_uuid));
+ const worker_1_uuid = await receive(response_queue_uuid);
+
+ // Creates a dedicated worker in the same-top-level-site iframe.
+ await send(iframe_2_uuid, create_dedicated_worker_js(same_site_origin, response_queue_uuid));
+ const worker_2_uuid = await receive(response_queue_uuid);
+
+ const blob = new Blob(["blob data"], {type : "text/plain"});
+ const blob_url = window.URL.createObjectURL(blob);
+ t.add_cleanup(() => window.URL.revokeObjectURL(blob_url));
+
+ // Attempts to fetch in the cross-top-level-site dedicated worker.
+ await send(worker_1_uuid, can_blob_url_be_fetched_js(blob_url, response_queue_uuid));
+ var response_1 = await receive(response_queue_uuid);
+ if (response_1 !== fetch_unsuccessful_response) {
+ reject(`Blob URL was fetched in not-same-top-level-site dedicated worker: ${response_1}`);
+ }
+
+ // Attempts to fetch in the same-top-level-site dedicated worker.
+ await send(worker_2_uuid, can_blob_url_be_fetched_js(blob_url, response_queue_uuid));
+ var response_2 = await receive(response_queue_uuid);
+ if (response_2 !== fetch_successful_response) {
+ reject(`Blob URL wasn't fetched in same-top-level-site dedicated worker: ${response_2}`);
+ }
+
+ resolve();
+ } catch (e) {
+ reject(e);
+ }
+ });
+}, "Blob URL shouldn't be fetched from a cross-partition dedicated worker");
+
+// Tests fetching blob URL from same and cross partition shared worker.
+promise_test(t => {
+ return new Promise(async (resolve, reject) => {
+ try {
+ const response_queue_uuid = token();
+
+ const [iframe_1_uuid, iframe_2_uuid] =
+ await create_test_iframes(t, response_queue_uuid);
+
+ // Create a shared worker in the cross-top-level-site iframe.
+ await send(iframe_1_uuid, create_shared_worker_js(same_site_origin, response_queue_uuid));
+ const worker_1_uuid = await receive(response_queue_uuid);
+
+ // Create a shared worker in the same-top-level-site iframe.
+ await send(iframe_2_uuid, create_shared_worker_js(same_site_origin, response_queue_uuid));
+ const worker_2_uuid = await receive(response_queue_uuid);
+
+ const blob = new Blob(["blob data"], {type : "text/plain"});
+ const blob_url = window.URL.createObjectURL(blob);
+ t.add_cleanup(() => window.URL.revokeObjectURL(blob_url));
+
+ // Attempts to fetch in the cross-top-level-site shared worker.
+ await send(worker_1_uuid, can_blob_url_be_fetched_js(blob_url, response_queue_uuid));
+ var response_1 = await receive(response_queue_uuid);
+ if (response_1 !== fetch_unsuccessful_response) {
+ reject(`Blob URL was fetched in not-same-top-level-site shared worker: ${response_1}`);
+ }
+
+ // Attempts to fetch in the same-top-level-site shared worker.
+ await send(worker_2_uuid, can_blob_url_be_fetched_js(blob_url, response_queue_uuid));
+ var response_2 = await receive(response_queue_uuid);
+ if (response_2 !== fetch_successful_response) {
+ reject(`Blob URL wasn't fetched in same-top-level-site shared worker: ${response_2}`);
+ }
+
+ resolve();
+ } catch (e) {
+ reject(e);
+ }
+ });
+}, "Blob URL shouldn't be fetched from a cross-partition shared worker");
+
+// Tests fetching blob URL from a cross partition service worker.
+promise_test(t => {
+ return new Promise(async (resolve, reject) => {
+ try {
+ const response_queue_uuid = token();
+
+ const [iframe_1_uuid, iframe_2_uuid] =
+ await create_test_iframes(t, response_queue_uuid);
+
+ const blob = new Blob(["blob data"], {type : "text/plain"});
+ const blob_url = window.URL.createObjectURL(blob);
+ t.add_cleanup(() => window.URL.revokeObjectURL(blob_url));
+
+ // Create a service worker in cross-top-level-site iframe.
+ await send(iframe_1_uuid, create_service_worker_js(same_site_origin, response_queue_uuid));
+ var worker_1_uuid = await receive(response_queue_uuid);
+ t.add_cleanup(() =>
+ send(worker_1_uuid, "self.registration.unregister();"));
+
+ await send(worker_1_uuid,
+ can_blob_url_be_fetched_js(blob_url, response_queue_uuid));
+ const response_1 = await receive(response_queue_uuid);
+ if (response_1 !== fetch_unsuccessful_response) {
+ reject(`Blob URL was fetched in not-same-top-level-site service worker: ${response_1}`);
+ }
+
+ // Create a service worker in same-top-level-site iframe.
+ await send(iframe_2_uuid, create_service_worker_js(same_site_origin, response_queue_uuid));
+ var worker_2_uuid = await receive(response_queue_uuid);
+ t.add_cleanup(() =>
+ send(worker_2_uuid, "self.registration.unregister();"));
+
+ await send(worker_2_uuid,
+ can_blob_url_be_fetched_js(blob_url, response_queue_uuid));
+ const response_2 = await receive(response_queue_uuid);
+ if (response_2 !== fetch_successful_response) {
+ reject(`Blob URL wasn't fetched in same-top-level-site service worker: ${response_2}`);
+ }
+ resolve();
+ } catch (e) {
+ reject(e);
+ }
+ });
+}, "Blob URL shouldn't be fetched from a cross-partition service worker");
+
</script>
-</body>
+</body> \ No newline at end of file
diff --git a/tests/wpt/tests/IndexedDB/idbindex_openKeyCursor.any.js b/tests/wpt/tests/IndexedDB/idbindex_openKeyCursor.any.js
new file mode 100644
index 00000000000..9166ff386cb
--- /dev/null
+++ b/tests/wpt/tests/IndexedDB/idbindex_openKeyCursor.any.js
@@ -0,0 +1,84 @@
+// META: global=window,worker
+// META: title=IDBIndex.openKeyCursor()
+// META: script=resources/support.js
+
+'use strict';
+
+async_test(t => {
+ let db;
+
+ let open_rq = createdb(t);
+ open_rq.onupgradeneeded = function(e) {
+ db = e.target.result;
+ let store = db.createObjectStore("store", { keyPath: "key" });
+ let index = store.createIndex("index", "indexedProperty");
+
+ store.add({ key: 1, indexedProperty: "data" });
+
+ assert_throws_dom("DataError", function(){
+ index.openKeyCursor(NaN);
+ });
+ t.done();
+ }
+}, "Throw DataError when using a invalid key");
+
+async_test(t => {
+ let db;
+
+ let open_rq = createdb(t);
+ open_rq.onupgradeneeded = function(e) {
+ db = e.target.result;
+ let store = db.createObjectStore("store", { keyPath: "key" });
+ let index = store.createIndex("index", "indexedProperty");
+
+ store.add({ key: 1, indexedProperty: "data" });
+ store.deleteIndex("index");
+
+ assert_throws_dom("InvalidStateError", function(){
+ index.openKeyCursor();
+ });
+ t.done();
+ }
+}, "Throw InvalidStateError when the index is deleted");
+
+async_test(t => {
+ let db;
+
+ let open_rq = createdb(t);
+ open_rq.onupgradeneeded = function(e) {
+ db = e.target.result;
+ let store = db.createObjectStore("store", { keyPath: "key" });
+ let index = store.createIndex("index", "indexedProperty");
+ store.add({ key: 1, indexedProperty: "data" });
+ }
+ open_rq.onsuccess = function(e) {
+ db = e.target.result;
+ let tx = db.transaction('store', 'readonly', {durability: 'relaxed'});
+ let index = tx.objectStore('store').index('index');
+ tx.abort();
+
+ assert_throws_dom("TransactionInactiveError", function(){
+ index.openKeyCursor();
+ });
+ t.done();
+ }
+}, "Throw TransactionInactiveError on aborted transaction");
+
+async_test(t => {
+ let db;
+
+ let open_rq = createdb(t);
+ open_rq.onupgradeneeded = function(e) {
+ db = e.target.result;
+ let store = db.createObjectStore("store", { keyPath: "key" });
+ let index = store.createIndex("index", "indexedProperty");
+ store.add({ key: 1, indexedProperty: "data" });
+
+ e.target.transaction.abort();
+
+ assert_throws_dom("InvalidStateError", function(){
+ index.openKeyCursor();
+ });
+ t.done();
+ }
+}, "Throw InvalidStateError on index deleted by aborted upgrade");
diff --git a/tests/wpt/tests/IndexedDB/idbindex_openKeyCursor.htm b/tests/wpt/tests/IndexedDB/idbindex_openKeyCursor.htm
deleted file mode 100644
index 9436684c3d1..00000000000
--- a/tests/wpt/tests/IndexedDB/idbindex_openKeyCursor.htm
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>IDBIndex.openKeyCursor() - throw DataError when using a invalid key</title>
-<link rel="author" title="Intel" href="http://www.intel.com">
-<link rel="help" href="https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBIndex-openKeyCursor-IDBRequest-any-range-IDBCursorDirection-direction">
-<script src=/resources/testharness.js></script>
-<script src=/resources/testharnessreport.js></script>
-<script src=resources/support.js></script>
-<div id="log"></div>
-<script>
- var db,
- t = async_test();
-
- var open_rq = createdb(t);
- open_rq.onupgradeneeded = function(e) {
- db = e.target.result;
- var store = db.createObjectStore("store", { keyPath: "key" });
- var index = store.createIndex("index", "indexedProperty");
-
- store.add({ key: 1, indexedProperty: "data" });
-
- assert_throws_dom("DataError", function(){
- index.openKeyCursor(NaN);
- });
- t.done();
- }
-</script>
-
diff --git a/tests/wpt/tests/IndexedDB/idbindex_openKeyCursor2.htm b/tests/wpt/tests/IndexedDB/idbindex_openKeyCursor2.htm
deleted file mode 100644
index ec97345a873..00000000000
--- a/tests/wpt/tests/IndexedDB/idbindex_openKeyCursor2.htm
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>IDBIndex.openKeyCursor() - throw InvalidStateError when the index is deleted</title>
-<link rel="author" title="Intel" href="http://www.intel.com">
-<link rel="help" href="https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBIndex-openKeyCursor-IDBRequest-any-range-IDBCursorDirection-direction">
-<script src=/resources/testharness.js></script>
-<script src=/resources/testharnessreport.js></script>
-<script src=resources/support.js></script>
-<div id="log"></div>
-<script>
- var db,
- t = async_test();
-
- var open_rq = createdb(t);
- open_rq.onupgradeneeded = function(e) {
- db = e.target.result;
- var store = db.createObjectStore("store", { keyPath: "key" });
- var index = store.createIndex("index", "indexedProperty");
-
- store.add({ key: 1, indexedProperty: "data" });
- store.deleteIndex("index");
-
- assert_throws_dom("InvalidStateError", function(){
- index.openKeyCursor();
- });
- t.done();
- }
-</script>
-
diff --git a/tests/wpt/tests/IndexedDB/idbindex_openKeyCursor3.htm b/tests/wpt/tests/IndexedDB/idbindex_openKeyCursor3.htm
deleted file mode 100644
index c7416be38d2..00000000000
--- a/tests/wpt/tests/IndexedDB/idbindex_openKeyCursor3.htm
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>IDBIndex.openKeyCursor() - throw TransactionInactiveError on aborted transaction</title>
-<link rel="author" title="Intel" href="http://www.intel.com">
-<link rel="help" href="https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBIndex-openKeyCursor-IDBRequest-any-range-IDBCursorDirection-direction">
-<script src=/resources/testharness.js></script>
-<script src=/resources/testharnessreport.js></script>
-<script src=resources/support.js></script>
-<div id="log"></div>
-<script>
- var db,
- t = async_test();
-
- var open_rq = createdb(t);
- open_rq.onupgradeneeded = function(e) {
- db = e.target.result;
- var store = db.createObjectStore("store", { keyPath: "key" });
- var index = store.createIndex("index", "indexedProperty");
- store.add({ key: 1, indexedProperty: "data" });
- }
- open_rq.onsuccess = function(e) {
- db = e.target.result;
- var tx = db.transaction('store', 'readonly', {durability: 'relaxed'});
- var index = tx.objectStore('store').index('index');
- tx.abort();
-
- assert_throws_dom("TransactionInactiveError", function(){
- index.openKeyCursor();
- });
- t.done();
- }
-</script>
diff --git a/tests/wpt/tests/IndexedDB/idbindex_openKeyCursor4.htm b/tests/wpt/tests/IndexedDB/idbindex_openKeyCursor4.htm
deleted file mode 100644
index bcc1511c90c..00000000000
--- a/tests/wpt/tests/IndexedDB/idbindex_openKeyCursor4.htm
+++ /dev/null
@@ -1,27 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>IDBIndex.openKeyCursor() - throw InvalidStateError on index deleted by aborted upgrade</title>
-<link rel="help" href="https://w3c.github.io/IndexedDB/#dom-idbindex-openkeycursor">
-<script src=/resources/testharness.js></script>
-<script src=/resources/testharnessreport.js></script>
-<script src=resources/support.js></script>
-<div id="log"></div>
-<script>
- var db,
- t = async_test();
-
- var open_rq = createdb(t);
- open_rq.onupgradeneeded = function(e) {
- db = e.target.result;
- var store = db.createObjectStore("store", { keyPath: "key" });
- var index = store.createIndex("index", "indexedProperty");
- store.add({ key: 1, indexedProperty: "data" });
-
- e.target.transaction.abort();
-
- assert_throws_dom("InvalidStateError", function(){
- index.openKeyCursor();
- });
- t.done();
- }
-</script>
diff --git a/tests/wpt/tests/IndexedDB/idbobjectstore_clear.any.js b/tests/wpt/tests/IndexedDB/idbobjectstore_clear.any.js
new file mode 100644
index 00000000000..f384b6cfc8b
--- /dev/null
+++ b/tests/wpt/tests/IndexedDB/idbobjectstore_clear.any.js
@@ -0,0 +1,108 @@
+// META: global=window,worker
+// META: title=IDBObjectStore.clear()
+// META: script=resources/support.js
+
+'use strict';
+
+async_test(t => {
+ let db;
+
+ let open_rq = createdb(t);
+ open_rq.onupgradeneeded = function(e) {
+ db = e.target.result;
+ let objStore = db.createObjectStore("store", { autoIncrement: true });
+
+ objStore.add({ property: "data" });
+ objStore.add({ something_different: "Yup, totally different" });
+ objStore.add(1234);
+ objStore.add([1, 2, 1234]);
+
+ objStore.clear().onsuccess = t.step_func(function(e) {
+ assert_equals(e.target.result, undefined);
+ });
+ };
+
+
+ open_rq.onsuccess = function(e) {
+ let rq = db.transaction("store", "readonly", {durability: 'relaxed'})
+ .objectStore("store")
+ .openCursor();
+
+ rq.onsuccess = t.step_func(function(e) {
+ assert_equals(e.target.result, null, 'cursor');
+ t.done();
+ });
+ };
+}, "Verify clear removes all records ");
+
+async_test(t => {
+ let db;
+
+ let open_rq = createdb(t);
+ open_rq.onupgradeneeded = function(e) {
+ db = e.target.result;
+ let objStore = db.createObjectStore("store", { autoIncrement: true });
+ objStore.createIndex("index", "indexedProperty");
+
+ objStore.add({ indexedProperty: "data" });
+ objStore.add({ indexedProperty: "yo, man", something_different: "Yup, totally different" });
+ objStore.add({ indexedProperty: 1234 });
+ objStore.add({ indexedProperty: [1, 2, 1234] });
+ objStore.add(1234);
+
+ objStore.clear().onsuccess = t.step_func(function(e) {
+ assert_equals(e.target.result, undefined);
+ });
+ };
+
+ open_rq.onsuccess = function(e) {
+ let rq = db.transaction("store", "readonly", {durability: 'relaxed'})
+ .objectStore("store")
+ .index("index")
+ .openCursor();
+
+ rq.onsuccess = t.step_func(function(e) {
+ assert_equals(e.target.result, null, 'cursor');
+ t.done();
+ });
+ };
+}, "Clear removes all records from an index ");
+
+async_test(t => {
+ let db, records = [{ pKey: "primaryKey_0"}, { pKey: "primaryKey_1"}];
+
+ let open_rq = createdb(t);
+ open_rq.onupgradeneeded = function (event) {
+ db = event.target.result;
+ let objStore = db.createObjectStore("store", {keyPath:"pKey"});
+ for (let i = 0; i < records.length; i++) {
+ objStore.add(records[i]);
+ }
+ }
+
+ open_rq.onsuccess = function (event) {
+ let txn = db.transaction("store", "readonly", {durability: 'relaxed'});
+ let ostore = txn.objectStore("store");
+ t.step(function(){
+ assert_throws_dom("ReadOnlyError", function(){
+ ostore.clear();
+ });
+ });
+ t.done();
+ }
+}, "If the transaction this IDBObjectStore belongs to has its mode set to readonly, throw ReadOnlyError ");
+
+async_test(t => {
+ let db, ostore;
+
+ let open_rq = createdb(t);
+ open_rq.onupgradeneeded = function (event) {
+ db = event.target.result;
+ ostore = db.createObjectStore("store", {keyPath:"pKey"});
+ db.deleteObjectStore("store");
+ assert_throws_dom("InvalidStateError", function(){
+ ostore.clear();
+ });
+ t.done();
+ }
+}, "If the object store has been deleted, the implementation must throw a DOMException of type InvalidStateError ");
diff --git a/tests/wpt/tests/IndexedDB/idbobjectstore_clear.htm b/tests/wpt/tests/IndexedDB/idbobjectstore_clear.htm
deleted file mode 100644
index 51b6da72d7e..00000000000
--- a/tests/wpt/tests/IndexedDB/idbobjectstore_clear.htm
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>IDBObjectStore.clear() - Verify clear removes all records </title>
-<link rel="author" title="Microsoft" href="http://www.microsoft.com">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="resources/support.js"></script>
-
-<script>
- var db,
- t = async_test();
-
- var open_rq = createdb(t);
- open_rq.onupgradeneeded = function(e) {
- db = e.target.result;
- var objStore = db.createObjectStore("store", { autoIncrement: true });
-
- objStore.add({ property: "data" });
- objStore.add({ something_different: "Yup, totally different" });
- objStore.add(1234);
- objStore.add([1, 2, 1234]);
-
- objStore.clear().onsuccess = t.step_func(function(e) {
- assert_equals(e.target.result, undefined);
- });
- };
-
-
- open_rq.onsuccess = function(e) {
- var rq = db.transaction("store", "readonly", {durability: 'relaxed'})
- .objectStore("store")
- .openCursor();
-
- rq.onsuccess = t.step_func(function(e) {
- assert_equals(e.target.result, null, 'cursor');
- t.done();
- });
- };
-</script>
-
-<div id="log"></div>
diff --git a/tests/wpt/tests/IndexedDB/idbobjectstore_clear2.htm b/tests/wpt/tests/IndexedDB/idbobjectstore_clear2.htm
deleted file mode 100644
index a4f15bde022..00000000000
--- a/tests/wpt/tests/IndexedDB/idbobjectstore_clear2.htm
+++ /dev/null
@@ -1,43 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>IDBObjectStore.clear() - clear removes all records from an index </title>
-<link rel="author" title="Microsoft" href="http://www.microsoft.com">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="resources/support.js"></script>
-
-<script>
- var db,
- t = async_test();
-
- var open_rq = createdb(t);
- open_rq.onupgradeneeded = function(e) {
- db = e.target.result;
- var objStore = db.createObjectStore("store", { autoIncrement: true });
- objStore.createIndex("index", "indexedProperty");
-
- objStore.add({ indexedProperty: "data" });
- objStore.add({ indexedProperty: "yo, man", something_different: "Yup, totally different" });
- objStore.add({ indexedProperty: 1234 });
- objStore.add({ indexedProperty: [1, 2, 1234] });
- objStore.add(1234);
-
- objStore.clear().onsuccess = t.step_func(function(e) {
- assert_equals(e.target.result, undefined);
- });
- };
-
- open_rq.onsuccess = function(e) {
- var rq = db.transaction("store", "readonly", {durability: 'relaxed'})
- .objectStore("store")
- .index("index")
- .openCursor();
-
- rq.onsuccess = t.step_func(function(e) {
- assert_equals(e.target.result, null, 'cursor');
- t.done();
- });
- };
-</script>
-
-<div id="log"></div>
diff --git a/tests/wpt/tests/IndexedDB/idbobjectstore_clear3.htm b/tests/wpt/tests/IndexedDB/idbobjectstore_clear3.htm
deleted file mode 100644
index 2bb44ec31cb..00000000000
--- a/tests/wpt/tests/IndexedDB/idbobjectstore_clear3.htm
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>IDBObjectStore.clear() - If the transaction this IDBObjectStore belongs to has its mode set to readonly, throw ReadOnlyError </title>
-<link rel="author" title="Intel" href="http://www.intel.com">
-<link rel="help" href="https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBObjectStore-clear-IDBRequest">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="resources/support.js"></script>
-<div id="log"></div>
-<script>
- var db,
- t = async_test(),
- records = [{ pKey: "primaryKey_0"},
- { pKey: "primaryKey_1"}];
-
- var open_rq = createdb(t);
- open_rq.onupgradeneeded = function (event) {
- db = event.target.result;
- var objStore = db.createObjectStore("store", {keyPath:"pKey"});
- for (var i = 0; i < records.length; i++) {
- objStore.add(records[i]);
- }
- }
-
- open_rq.onsuccess = function (event) {
- var txn = db.transaction("store", "readonly", {durability: 'relaxed'});
- var ostore = txn.objectStore("store");
- t.step(function(){
- assert_throws_dom("ReadOnlyError", function(){
- ostore.clear();
- });
- });
- t.done();
- }
-</script>
-
diff --git a/tests/wpt/tests/IndexedDB/idbobjectstore_clear4.htm b/tests/wpt/tests/IndexedDB/idbobjectstore_clear4.htm
deleted file mode 100644
index f5e1cad563e..00000000000
--- a/tests/wpt/tests/IndexedDB/idbobjectstore_clear4.htm
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>IDBObjectStore.clear() - If the object store has been deleted, the implementation must throw a DOMException of type InvalidStateError </title>
-<link rel="author" title="Intel" href="http://www.intel.com">
-<link rel="help" href="https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBObjectStore-clear-IDBRequest">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="resources/support.js"></script>
-<div id="log"></div>
-<script>
- var db,
- ostore,
- t = async_test();
-
- var open_rq = createdb(t);
- open_rq.onupgradeneeded = function (event) {
- db = event.target.result;
- ostore = db.createObjectStore("store", {keyPath:"pKey"});
- db.deleteObjectStore("store");
- assert_throws_dom("InvalidStateError", function(){
- ostore.clear();
- });
- t.done();
- }
-</script>
diff --git a/tests/wpt/tests/IndexedDB/idbobjectstore_createIndex.any.js b/tests/wpt/tests/IndexedDB/idbobjectstore_createIndex.any.js
new file mode 100644
index 00000000000..79df5a77c87
--- /dev/null
+++ b/tests/wpt/tests/IndexedDB/idbobjectstore_createIndex.any.js
@@ -0,0 +1,612 @@
+// META: title=IDBObjectStore.createIndex()
+// META: global=window,worker
+// META: script=resources/support.js
+
+'use strict';
+
+async_test(t => {
+ let db;
+
+ let open_rq = createdb(t);
+ open_rq.onupgradeneeded = function (e) {
+ db = e.target.result;
+ let objStore = db.createObjectStore("store");
+ let index = objStore.createIndex("index", "indexedProperty", { unique: true });
+
+ assert_true(index instanceof IDBIndex, "IDBIndex");
+ assert_equals(index.name, "index", "name");
+ assert_equals(index.objectStore, objStore, "objectStore");
+ assert_equals(index.keyPath, "indexedProperty", "keyPath");
+ assert_true(index.unique, "unique");
+ assert_false(index.multiEntry, "multiEntry");
+
+ t.done();
+ };
+}, "Returns an IDBIndex and the properties are set correctly");
+
+async_test(t => {
+ let db, aborted,
+ record = { indexedProperty: "bar" };
+
+ let open_rq = createdb(t);
+ open_rq.onupgradeneeded = function (e) {
+ db = e.target.result;
+ let txn = e.target.transaction,
+ objStore = db.createObjectStore("store");
+
+ objStore.add(record, 1);
+ objStore.add(record, 2);
+ let index = objStore.createIndex("index", "indexedProperty", { unique: true });
+
+ assert_true(index instanceof IDBIndex, "IDBIndex");
+
+ e.target.transaction.onabort = t.step_func(function (e) {
+ aborted = true;
+ assert_equals(e.type, "abort", "event type");
+ });
+
+ db.onabort = function (e) {
+ assert_true(aborted, "transaction.abort event has fired");
+ t.done();
+ };
+
+ e.target.transaction.oncomplete = fail(t, "got complete, expected abort");
+ };
+}, "Attempt to create an index that requires unique values on an object store already contains duplicates");
+
+async_test(t => {
+ let db, aborted;
+
+ let open_rq = createdb(t);
+ open_rq.onupgradeneeded = function (e) {
+ db = e.target.result;
+ let txn = e.target.transaction,
+ objStore = db.createObjectStore("store", { keyPath: 'key' });
+
+ for (let i = 0; i < 100; i++)
+ objStore.add({ key: "key_" + i, indexedProperty: "indexed_" + i });
+
+ let idx = objStore.createIndex("index", "indexedProperty")
+
+ idx.get('indexed_99').onsuccess = t.step_func(function (e) {
+ assert_equals(e.target.result.key, 'key_99', 'key');
+ });
+ idx.get('indexed_9').onsuccess = t.step_func(function (e) {
+ assert_equals(e.target.result.key, 'key_9', 'key');
+ });
+ }
+
+ open_rq.onsuccess = function () {
+ t.done();
+ }
+}, "The index is usable right after being made");
+
+async_test(t => {
+ let db,
+ events = [];
+
+ let open_rq = createdb(t);
+ open_rq.onupgradeneeded = function (e) {
+ db = e.target.result;
+ e.target.transaction.oncomplete = log("transaction.complete");
+
+ let txn = e.target.transaction,
+ objStore = db.createObjectStore("store");
+
+ let rq_add1 = objStore.add({ animal: "Unicorn" }, 1);
+ rq_add1.onsuccess = log("rq_add1.success");
+ rq_add1.onerror = log("rq_add1.error");
+
+ objStore.createIndex("index", "animal", { unique: true });
+
+ let rq_add2 = objStore.add({ animal: "Unicorn" }, 2);
+ rq_add2.onsuccess = log("rq_add2.success");
+ rq_add2.onerror = function (e) {
+ log("rq_add2.error")(e);
+ e.preventDefault();
+ e.stopPropagation();
+ }
+
+ objStore.deleteIndex("index");
+
+ let rq_add3 = objStore.add({ animal: "Unicorn" }, 3);
+ rq_add3.onsuccess = log("rq_add3.success");
+ rq_add3.onerror = log("rq_add3.error");
+ }
+
+ open_rq.onsuccess = function (e) {
+ log("open_rq.success")(e);
+ assert_array_equals(events, ["rq_add1.success",
+ "rq_add2.error: ConstraintError",
+ "rq_add3.success",
+
+ "transaction.complete",
+
+ "open_rq.success"],
+ "events");
+ t.done();
+ }
+
+ function log(msg) {
+ return function (e) {
+ if (e && e.target && e.target.error)
+ events.push(msg + ": " + e.target.error.name);
+ else
+ events.push(msg);
+ };
+ }
+}, "Event ordering for a later deleted index");
+
+async_test(t => {
+ let db, aborted;
+
+ let open_rq = createdb(t);
+ open_rq.onupgradeneeded = function (e) {
+ db = e.target.result;
+ let txn = e.target.transaction,
+ objStore = db.createObjectStore("store");
+
+ for (let i = 0; i < 5; i++)
+ objStore.add("object_" + i, i);
+
+ let rq = objStore.createIndex("index", "")
+ rq.onerror = function () { assert_unreached("error: " + rq.error.name); }
+ rq.onsuccess = function () { }
+
+ objStore.index("index")
+ .get('object_4')
+ .onsuccess = t.step_func(function (e) {
+ assert_equals(e.target.result, 'object_4', 'result');
+ });
+ }
+
+ open_rq.onsuccess = function () {
+ t.done();
+ }
+}, "Empty keyPath");
+
+async_test(t => {
+ // Transaction may fire window.onerror in some implementations.
+ setup({ allow_uncaught_exception: true });
+
+ let db,
+ events = [];
+
+ let open_rq = createdb(t);
+ open_rq.onupgradeneeded = function (e) {
+ db = e.target.result;
+ db.onerror = log("db.error");
+ db.onabort = log("db.abort");
+ e.target.transaction.onabort = log("transaction.abort")
+ e.target.transaction.onerror = log("transaction.error")
+ e.target.transaction.oncomplete = log("transaction.complete")
+
+ let txn = e.target.transaction,
+ objStore = db.createObjectStore("store");
+
+ let rq_add1 = objStore.add({ animal: "Unicorn" }, 1);
+ rq_add1.onsuccess = log("rq_add1.success");
+ rq_add1.onerror = log("rq_add1.error");
+
+ let rq_add2 = objStore.add({ animal: "Unicorn" }, 2);
+ rq_add2.onsuccess = log("rq_add2.success");
+ rq_add2.onerror = log("rq_add2.error");
+
+ objStore.createIndex("index", "animal", { unique: true })
+
+ let rq_add3 = objStore.add({ animal: "Unicorn" }, 3);
+ rq_add3.onsuccess = log("rq_add3.success");
+ rq_add3.onerror = log("rq_add3.error");
+ }
+
+ open_rq.onerror = function (e) {
+ log("open_rq.error")(e);
+ assert_array_equals(events, ["rq_add1.success",
+ "rq_add2.success",
+
+ "rq_add3.error: AbortError",
+ "transaction.error: AbortError",
+ "db.error: AbortError",
+
+ "transaction.abort: ConstraintError",
+ "db.abort: ConstraintError",
+
+ "open_rq.error: AbortError"],
+ "events");
+ t.done();
+ }
+
+ function log(msg) {
+ return function (e) {
+ if (e && e.target && e.target.error)
+ events.push(msg + ": " + e.target.error.name);
+ else
+ events.push(msg);
+ };
+ }
+}, "Event order when unique constraint is triggered");
+
+async_test(t => {
+ setup({ allow_uncaught_exception: true });
+
+ let db,
+ events = [];
+
+ const open_rq = createdb(t);
+ open_rq.onupgradeneeded = function (e) {
+ db = e.target.result;
+ let txn = e.target.transaction;
+ db.onerror = log("db.error");
+ db.onabort = log("db.abort");
+ txn.onabort = log("transaction.abort")
+ txn.onerror = log("transaction.error")
+ txn.oncomplete = log("transaction.complete")
+
+ let objStore = db.createObjectStore("store");
+
+ let rq_add1 = objStore.add({ animal: "Unicorn" }, 1);
+ rq_add1.onsuccess = log("rq_add1.success");
+ rq_add1.onerror = log("rq_add1.error");
+
+ objStore.createIndex("index", "animal", { unique: true })
+
+ let rq_add2 = objStore.add({ animal: "Unicorn" }, 2);
+ rq_add2.onsuccess = log("rq_add2.success");
+ rq_add2.onerror = log("rq_add2.error");
+
+ let rq_add3 = objStore.add({ animal: "Horse" }, 3);
+ rq_add3.onsuccess = log("rq_add3.success");
+ rq_add3.onerror = log("rq_add3.error");
+ }
+
+ open_rq.onerror = function (e) {
+ log("open_rq.error")(e);
+ assert_array_equals(events, ["rq_add1.success",
+
+ "rq_add2.error: ConstraintError",
+ "transaction.error: ConstraintError",
+ "db.error: ConstraintError",
+
+ "rq_add3.error: AbortError",
+ "transaction.error: AbortError",
+ "db.error: AbortError",
+
+ "transaction.abort: ConstraintError",
+ "db.abort: ConstraintError",
+
+ "open_rq.error: AbortError"],
+ "events");
+ t.done();
+ }
+
+ function log(msg) {
+ return function (e) {
+ if (e && e.target && e.target.error)
+ events.push(msg + ": " + e.target.error.name);
+ else
+ events.push(msg);
+ };
+ }
+}, "Event ordering for ConstraintError on request");
+
+async_test(t => {
+ let db,
+ now = new Date(),
+ mar18 = new Date(1111111111111),
+ ar = ["Yay", 2, -Infinity],
+ num = 1337;
+
+ const open_rq = createdb(t);
+ open_rq.onupgradeneeded = function (e) {
+ db = e.target.result;
+ let txn = e.target.transaction,
+ objStore = db.createObjectStore("store", { keyPath: 'key' });
+
+ objStore.add({ key: "now", i: now });
+ objStore.add({ key: "mar18", i: mar18 });
+ objStore.add({ key: "array", i: ar });
+ objStore.add({ key: "number", i: num });
+
+ let idx = objStore.createIndex("index", "i")
+
+ idx.get(now).onsuccess = t.step_func(function (e) {
+ assert_equals(e.target.result.key, 'now', 'key');
+ assert_equals(e.target.result.i.getTime(), now.getTime(), 'getTime');
+ });
+ idx.get(mar18).onsuccess = t.step_func(function (e) {
+ assert_equals(e.target.result.key, 'mar18', 'key');
+ assert_equals(e.target.result.i.getTime(), mar18.getTime(), 'getTime');
+ });
+ idx.get(ar).onsuccess = t.step_func(function (e) {
+ assert_equals(e.target.result.key, 'array', 'key');
+ assert_array_equals(e.target.result.i, ar, 'array is the same');
+ });
+ idx.get(num).onsuccess = t.step_func(function (e) {
+ assert_equals(e.target.result.key, 'number', 'key');
+ assert_equals(e.target.result.i, num, 'number is the same');
+ });
+ }
+
+ open_rq.onsuccess = function () {
+ t.done();
+ }
+}, "Index can be valid keys");
+
+async_test(t => {
+ let db;
+
+ const open_rq = createdb(t);
+ open_rq.onupgradeneeded = function (e) {
+ db = e.target.result
+ let store = db.createObjectStore("store")
+
+ for (let i = 0; i < 5; i++)
+ store.add({ idx: "object_" + i }, i)
+
+ store.createIndex("", "idx")
+
+ store.index("")
+ .get('object_4')
+ .onsuccess = t.step_func(function (e) {
+ assert_equals(e.target.result.idx, 'object_4', 'result')
+ })
+ assert_equals(store.indexNames[0], "", "indexNames[0]")
+ assert_equals(store.indexNames.length, 1, "indexNames.length")
+ }
+
+ open_rq.onsuccess = function () {
+ let store = db.transaction("store", "readonly", { durability: 'relaxed' }).objectStore("store")
+
+ assert_equals(store.indexNames[0], "", "indexNames[0]")
+ assert_equals(store.indexNames.length, 1, "indexNames.length")
+
+ t.done()
+ }
+}, "IDBObjectStore.createIndex() - empty name");
+
+async_test(t => {
+ const open_rq = createdb(t);
+
+ open_rq.onupgradeneeded = function (e) {
+ let db = e.target.result;
+ let ostore = db.createObjectStore("store");
+ ostore.createIndex("a", "a");
+ assert_throws_dom("ConstraintError", function () {
+ ostore.createIndex("a", "a");
+ });
+ t.done();
+ }
+}, "If an index with the name name already exists in this object store, the implementation must throw a DOMException of type ConstraintError");
+
+async_test(t => {
+ const open_rq = createdb(t);
+
+ open_rq.onupgradeneeded = function (e) {
+ let db = e.target.result;
+ let ostore = db.createObjectStore("store");
+ assert_throws_dom("SyntaxError", function () {
+ ostore.createIndex("ab", ".");
+ });
+ t.done();
+ }
+}, "If keyPath is not a valid key path, the implementation must throw a DOMException of type SyntaxError");
+
+async_test(t => {
+ let db, ostore;
+
+ let open_rq = createdb(t);
+ open_rq.onupgradeneeded = function (event) {
+ db = event.target.result;
+ ostore = db.createObjectStore("store");
+ db.deleteObjectStore("store");
+ }
+
+ open_rq.onsuccess = function (event) {
+ t.step(function () {
+ assert_throws_dom("InvalidStateError", function () {
+ ostore.createIndex("index", "indexedProperty");
+ });
+ });
+ t.done();
+ }
+}, "If the object store has been deleted, the implementation must throw a DOMException of type InvalidStateError");
+
+async_test(t => {
+ let db;
+
+ const open_rq = createdb(t);
+ open_rq.onupgradeneeded = function (event) {
+ db = event.target.result;
+ db.createObjectStore("store");
+ }
+
+ open_rq.onsuccess = function (event) {
+ let txn = db.transaction("store", "readwrite", { durability: 'relaxed' });
+ let ostore = txn.objectStore("store");
+ t.step(function () {
+ assert_throws_dom("InvalidStateError", function () {
+ ostore.createIndex("index", "indexedProperty");
+ });
+ });
+ t.done();
+ }
+}, "Operate out versionchange throw InvalidStateError");
+
+/* IndexedDB: Exception Order of IDBObjectStore.createIndex() */
+indexeddb_test(
+ function (t, db, txn) {
+ let store = db.createObjectStore("s");
+ },
+ function (t, db) {
+ let txn = db.transaction("s", "readonly", { durability: 'relaxed' });
+ let store = txn.objectStore("s");
+ txn.oncomplete = function () {
+ assert_throws_dom("InvalidStateError", function () {
+ store.createIndex("index", "foo");
+ });
+ t.done();
+ };
+ },
+ "InvalidStateError(Incorrect mode) vs. TransactionInactiveError. Mode check should precede state check of the transaction."
+);
+
+let gDeletedObjectStore;
+indexeddb_test(
+ function (t, db, txn) {
+ gDeletedObjectStore = db.createObjectStore("s");
+ db.deleteObjectStore("s");
+ txn.oncomplete = function () {
+ assert_throws_dom("InvalidStateError", function () {
+ gDeletedObjectStore.createIndex("index", "foo");
+ });
+ t.done();
+ };
+ },
+ null,
+ "InvalidStateError(Deleted ObjectStore) vs. TransactionInactiveError. Deletion check should precede transaction-state check."
+);
+
+indexeddb_test(
+ function (t, db, txn) {
+ let store = db.createObjectStore("s");
+ store.createIndex("index", "foo");
+ txn.oncomplete = function () {
+ assert_throws_dom("TransactionInactiveError", function () {
+ store.createIndex("index", "foo");
+ });
+ t.done();
+ };
+ },
+ null,
+ "TransactionInactiveError vs. ConstraintError. Transaction-state check should precede index name check."
+);
+
+indexeddb_test(
+ function (t, db) {
+ let store = db.createObjectStore("s");
+ store.createIndex("index", "foo");
+ assert_throws_dom("ConstraintError", function () {
+ store.createIndex("index", "invalid key path");
+ });
+ assert_throws_dom("ConstraintError", function () {
+ store.createIndex("index",
+ ["invalid key path 1", "invalid key path 2"]);
+ });
+ t.done();
+ },
+ null,
+ "ConstraintError vs. SyntaxError. Index name check should precede syntax check of the key path"
+);
+
+indexeddb_test(
+ function (t, db) {
+ let store = db.createObjectStore("s");
+ assert_throws_dom("SyntaxError", function () {
+ store.createIndex("index",
+ ["invalid key path 1", "invalid key path 2"],
+ { multiEntry: true });
+ });
+ t.done();
+ },
+ null,
+ "SyntaxError vs. InvalidAccessError. Syntax check should precede multiEntry check of the key path."
+);
+
+/* AutoIncrement in Compound Index */
+indexeddb_test(
+ function (t, db, txn) {
+ // No auto-increment
+ let store = db.createObjectStore("Store1", { keyPath: "id" });
+ store.createIndex("CompoundKey", ["num", "id"]);
+
+ // Add data
+ store.put({ id: 1, num: 100 });
+ },
+ function (t, db) {
+ let store = db.transaction("Store1", "readwrite", { durability: 'relaxed' }).objectStore("Store1");
+
+ store.openCursor().onsuccess = t.step_func(function (e) {
+ let item = e.target.result.value;
+ store.index("CompoundKey").get([item.num, item.id]).onsuccess = t.step_func(function (e) {
+ assert_equals(e.target.result ? e.target.result.num : null, 100, 'Expected 100.');
+ t.done();
+ });
+ });
+ },
+ "Explicit Primary Key"
+);
+
+indexeddb_test(
+ function (t, db, txn) {
+ // Auto-increment
+ let store = db.createObjectStore("Store2", { keyPath: "id", autoIncrement: true });
+ store.createIndex("CompoundKey", ["num", "id"]);
+
+ // Add data
+ store.put({ num: 100 });
+ },
+ function (t, db) {
+ let store = db.transaction("Store2", "readwrite", { durability: 'relaxed' }).objectStore("Store2");
+ store.openCursor().onsuccess = t.step_func(function (e) {
+ let item = e.target.result.value;
+ store.index("CompoundKey").get([item.num, item.id]).onsuccess = t.step_func(function (e) {
+ assert_equals(e.target.result ? e.target.result.num : null, 100, 'Expected 100.');
+ t.done();
+ });
+ });
+ },
+ "Auto-Increment Primary Key"
+);
+
+indexeddb_test(
+ function (t, db, txn) {
+ // Auto-increment
+ let store = db.createObjectStore("Store3", { keyPath: "id", autoIncrement: true });
+ store.createIndex("CompoundKey", ["num", "id", "other"]);
+
+ let num = 100;
+
+ // Add data to Store3 - valid keys
+ // Objects will be stored in Store3 and keys will get added
+ // to the CompoundKeys index.
+ store.put({ num: num++, other: 0 });
+ store.put({ num: num++, other: [0] });
+
+ // Add data - missing key
+ // Objects will be stored in Store3 but keys won't get added to
+ // the CompoundKeys index because the 'other' keypath doesn't
+ // resolve to a value.
+ store.put({ num: num++ });
+
+ // Add data to Store3 - invalid keys
+ // Objects will be stored in Store3 but keys won't get added to
+ // the CompoundKeys index because the 'other' property values
+ // aren't valid keys.
+ store.put({ num: num++, other: null });
+ store.put({ num: num++, other: {} });
+ store.put({ num: num++, other: [null] });
+ store.put({ num: num++, other: [{}] });
+ },
+ function (t, db) {
+ let store = db.transaction("Store3", "readwrite", { durability: 'relaxed' }).objectStore("Store3");
+ const keys = [];
+ let count;
+ store.count().onsuccess = t.step_func(e => { count = e.target.result; });
+ store.index("CompoundKey").openCursor().onsuccess = t.step_func(function (e) {
+ const cursor = e.target.result;
+ if (cursor !== null) {
+ keys.push(cursor.key);
+ cursor.continue();
+ return;
+ }
+
+ // Done iteration, check results.
+ assert_equals(count, 7, 'Expected all 7 records to be stored.');
+ assert_equals(keys.length, 2, 'Expected exactly two index entries.');
+ assert_array_equals(keys[0], [100, 1, 0]);
+ assert_object_equals(keys[1], [101, 2, [0]]);
+ t.done();
+ });
+ },
+ "Auto-Increment Primary Key - invalid key values elsewhere"
+); \ No newline at end of file
diff --git a/tests/wpt/tests/IndexedDB/idbobjectstore_createIndex.htm b/tests/wpt/tests/IndexedDB/idbobjectstore_createIndex.htm
deleted file mode 100644
index ebd6377e492..00000000000
--- a/tests/wpt/tests/IndexedDB/idbobjectstore_createIndex.htm
+++ /dev/null
@@ -1,30 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>IDBObjectStore.createIndex() - returns an IDBIndex and the properties are set correctly</title>
-<link rel="author" title="Microsoft" href="http://www.microsoft.com">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="resources/support.js"></script>
-
-<script>
- var db,
- t = async_test();
-
- var open_rq = createdb(t);
- open_rq.onupgradeneeded = function(e) {
- db = e.target.result;
- var objStore = db.createObjectStore("store");
- var index = objStore.createIndex("index", "indexedProperty", { unique: true });
-
- assert_true(index instanceof IDBIndex, "IDBIndex");
- assert_equals(index.name, "index", "name");
- assert_equals(index.objectStore, objStore, "objectStore");
- assert_equals(index.keyPath, "indexedProperty", "keyPath");
- assert_true(index.unique, "unique");
- assert_false(index.multiEntry, "multiEntry");
-
- t.done();
- };
-</script>
-
-<div id="log"></div>
diff --git a/tests/wpt/tests/IndexedDB/idbobjectstore_createIndex10.htm b/tests/wpt/tests/IndexedDB/idbobjectstore_createIndex10.htm
deleted file mode 100644
index 46678b1b6c7..00000000000
--- a/tests/wpt/tests/IndexedDB/idbobjectstore_createIndex10.htm
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>IDBDatabase.createIndex() - If an index with the name name already exists in this object store, the implementation must throw a DOMException of type ConstraintError </title>
-<link rel="author" title="Intel" href="http://www.intel.com">
-<link rel="help" href="https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBObjectStore-createIndex-IDBIndex-DOMString-name-DOMString-sequence-DOMString--keyPath-IDBIndexParameters-optionalParameters">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="resources/support.js"></script>
-<div id="log"></div>
-<script>
-var t = async_test(),
- open_rq = createdb(t);
-
-open_rq.onupgradeneeded = function (e) {
- var db = e.target.result;
- var ostore = db.createObjectStore("store");
- ostore.createIndex("a", "a");
- assert_throws_dom("ConstraintError", function(){
- ostore.createIndex("a", "a");
- });
- t.done();
-}
-</script>
-
diff --git a/tests/wpt/tests/IndexedDB/idbobjectstore_createIndex11.htm b/tests/wpt/tests/IndexedDB/idbobjectstore_createIndex11.htm
deleted file mode 100644
index e458977212a..00000000000
--- a/tests/wpt/tests/IndexedDB/idbobjectstore_createIndex11.htm
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>IDBDatabase.createIndex() - If keyPath is not a valid key path, the implementation must throw a DOMException of type SyntaxError </title>
-<link rel="author" title="Intel" href="http://www.intel.com">
-<link rel="help" href="https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBObjectStore-createIndex-IDBIndex-DOMString-name-DOMString-sequence-DOMString--keyPath-IDBIndexParameters-optionalParameters">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="resources/support.js"></script>
-<div id="log"></div>
-<script>
-var t = async_test(),
- open_rq = createdb(t);
-
-open_rq.onupgradeneeded = function (e) {
- var db = e.target.result;
- var ostore = db.createObjectStore("store");
- assert_throws_dom("SyntaxError", function(){
- ostore.createIndex("ab", ".");
- });
- t.done();
-}
-</script>
-
diff --git a/tests/wpt/tests/IndexedDB/idbobjectstore_createIndex12.htm b/tests/wpt/tests/IndexedDB/idbobjectstore_createIndex12.htm
deleted file mode 100644
index a74ac6f5a1f..00000000000
--- a/tests/wpt/tests/IndexedDB/idbobjectstore_createIndex12.htm
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>IDBDatabase.createIndex() - If the object store has been deleted, the implementation must throw a DOMException of type InvalidStateError </title>
-<link rel="author" title="Intel" href="http://www.intel.com">
-<link rel="help" href="https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBObjectStore-createIndex-IDBIndex-DOMString-name-DOMString-sequence-DOMString--keyPath-IDBIndexParameters-optionalParameters">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="resources/support.js"></script>
-<div id="log"></div>
-<script>
- var db,
- ostore,
- t = async_test();
-
- var open_rq = createdb(t);
- open_rq.onupgradeneeded = function (event) {
- db = event.target.result;
- ostore = db.createObjectStore("store");
- db.deleteObjectStore("store");
- }
-
- open_rq.onsuccess = function (event) {
- t.step(function(){
- assert_throws_dom("InvalidStateError", function(){
- ostore.createIndex("index", "indexedProperty");
- });
- });
- t.done();
- }
-</script>
-
diff --git a/tests/wpt/tests/IndexedDB/idbobjectstore_createIndex13.htm b/tests/wpt/tests/IndexedDB/idbobjectstore_createIndex13.htm
deleted file mode 100644
index 673a54fb00b..00000000000
--- a/tests/wpt/tests/IndexedDB/idbobjectstore_createIndex13.htm
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>IDBDatabase.createIndex() - Operate out versionchange throw InvalidStateError </title>
-<link rel="author" title="Intel" href="http://www.intel.com">
-<link rel="help" href="https://dvcs.w3.org/hg/IndexedDB/raw-file/tip/Overview.html#widl-IDBObjectStore-createIndex-IDBIndex-DOMString-name-DOMString-sequence-DOMString--keyPath-IDBIndexParameters-optionalParameters">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="resources/support.js"></script>
-<div id="log"></div>
-<script>
- var db,
- t = async_test();
-
- var open_rq = createdb(t);
- open_rq.onupgradeneeded = function (event) {
- db = event.target.result;
- db.createObjectStore("store");
- }
-
- open_rq.onsuccess = function (event) {
- var txn = db.transaction("store", "readwrite", {durability: 'relaxed'});
- var ostore = txn.objectStore("store");
- t.step(function(){
- assert_throws_dom("InvalidStateError", function(){
- ostore.createIndex("index", "indexedProperty");
- });
- });
- t.done();
- }
-</script>
-
diff --git a/tests/wpt/tests/IndexedDB/idbobjectstore_createIndex14-exception_order.htm b/tests/wpt/tests/IndexedDB/idbobjectstore_createIndex14-exception_order.htm
deleted file mode 100644
index 53aaec2a879..00000000000
--- a/tests/wpt/tests/IndexedDB/idbobjectstore_createIndex14-exception_order.htm
+++ /dev/null
@@ -1,89 +0,0 @@
-<!DOCTYPE html>
-<title>IndexedDB: Exception Order of IDBObjectStore.createIndex()</title>
-<link rel="author" title="Mozilla" href="https://www.mozilla.org">
-<link rel="help" href="http://w3c.github.io/IndexedDB/#dom-idbobjectstore-createindex">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="resources/support.js"></script>
-<script>
-
-indexeddb_test(
- function(t, db, txn) {
- var store = db.createObjectStore("s");
- },
- function(t, db) {
- var txn = db.transaction("s", "readonly", {durability: 'relaxed'});
- var store = txn.objectStore("s");
- txn.oncomplete = function() {
- assert_throws_dom("InvalidStateError", function() {
- store.createIndex("index", "foo");
- }, "Mode check should precede state check of the transaction");
- t.done();
- };
- },
- "InvalidStateError(Incorrect mode) vs. TransactionInactiveError"
-);
-
-var gDeletedObjectStore;
-indexeddb_test(
- function(t, db, txn) {
- gDeletedObjectStore = db.createObjectStore("s");
- db.deleteObjectStore("s");
- txn.oncomplete = function() {
- assert_throws_dom("InvalidStateError", function() {
- gDeletedObjectStore.createIndex("index", "foo");
- }, "Deletion check should precede transaction-state check");
- t.done();
- };
- },
- null,
- "InvalidStateError(Deleted ObjectStore) vs. TransactionInactiveError"
-);
-
-indexeddb_test(
- function(t, db, txn) {
- var store = db.createObjectStore("s");
- store.createIndex("index", "foo");
- txn.oncomplete = function() {
- assert_throws_dom("TransactionInactiveError", function() {
- store.createIndex("index", "foo");
- }, "Transaction-state check should precede index name check");
- t.done();
- };
- },
- null,
- "TransactionInactiveError vs. ConstraintError"
-);
-
-indexeddb_test(
- function(t, db) {
- var store = db.createObjectStore("s");
- store.createIndex("index", "foo");
- assert_throws_dom("ConstraintError", function() {
- store.createIndex("index", "invalid key path");
- }, "Index name check should precede syntax check of the key path");
- assert_throws_dom("ConstraintError", function() {
- store.createIndex("index",
- ["invalid key path 1", "invalid key path 2"]);
- }, "Index name check should precede syntax check of the key path");
- t.done();
- },
- null,
- "ConstraintError vs. SyntaxError"
-);
-
-indexeddb_test(
- function(t, db) {
- var store = db.createObjectStore("s");
- assert_throws_dom("SyntaxError", function() {
- store.createIndex("index",
- ["invalid key path 1", "invalid key path 2"],
- { multiEntry: true });
- }, "Syntax check should precede multiEntry check of the key path");
- t.done();
- },
- null,
- "SyntaxError vs. InvalidAccessError"
-);
-
-</script>
diff --git a/tests/wpt/tests/IndexedDB/idbobjectstore_createIndex15-autoincrement.htm b/tests/wpt/tests/IndexedDB/idbobjectstore_createIndex15-autoincrement.htm
deleted file mode 100644
index 679b5d05aa1..00000000000
--- a/tests/wpt/tests/IndexedDB/idbobjectstore_createIndex15-autoincrement.htm
+++ /dev/null
@@ -1,106 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<title>IDBObjectStore.createIndex() - AutoIncrement in Compound Index</title>
-<meta name="timeout" content="long">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="resources/support.js"></script>
-<script>
- indexeddb_test(
- function(t, db, txn) {
- // No auto-increment
- var store = db.createObjectStore("Store1", {keyPath: "id"});
- store.createIndex("CompoundKey", ["num", "id"]);
-
- // Add data
- store.put({id: 1, num: 100});
- },
- function(t, db) {
- var store = db.transaction("Store1", "readwrite", {durability: 'relaxed'}).objectStore("Store1");
-
- store.openCursor().onsuccess = t.step_func(function(e) {
- var item = e.target.result.value;
- store.index("CompoundKey").get([item.num, item.id]).onsuccess = t.step_func(function(e) {
- assert_equals(e.target.result ? e.target.result.num : null, 100, 'Expected 100.');
- t.done();
- });
- });
- },
- "Explicit Primary Key"
- );
-
- indexeddb_test(
- function(t, db, txn) {
- // Auto-increment
- var store = db.createObjectStore("Store2", {keyPath: "id", autoIncrement: true});
- store.createIndex("CompoundKey", ["num", "id"]);
-
- // Add data
- store.put({num: 100});
- },
- function(t, db) {
- var store = db.transaction("Store2", "readwrite", {durability: 'relaxed'}).objectStore("Store2");
- store.openCursor().onsuccess = t.step_func(function(e) {
- var item = e.target.result.value;
- store.index("CompoundKey").get([item.num, item.id]).onsuccess = t.step_func(function(e) {
- assert_equals(e.target.result ? e.target.result.num : null, 100, 'Expected 100.');
- t.done();
- });
- });
- },
- "Auto-Increment Primary Key"
- );
-
- indexeddb_test(
- function(t, db, txn) {
- // Auto-increment
- var store = db.createObjectStore("Store3", {keyPath: "id", autoIncrement: true});
- store.createIndex("CompoundKey", ["num", "id", "other"]);
-
- var num = 100;
-
- // Add data to Store3 - valid keys
- // Objects will be stored in Store3 and keys will get added
- // to the CompoundKeys index.
- store.put({num: num++, other: 0});
- store.put({num: num++, other: [0]});
-
- // Add data - missing key
- // Objects will be stored in Store3 but keys won't get added to
- // the CompoundKeys index because the 'other' keypath doesn't
- // resolve to a value.
- store.put({num: num++});
-
- // Add data to Store3 - invalid keys
- // Objects will be stored in Store3 but keys won't get added to
- // the CompoundKeys index because the 'other' property values
- // aren't valid keys.
- store.put({num: num++, other: null});
- store.put({num: num++, other: {}});
- store.put({num: num++, other: [null]});
- store.put({num: num++, other: [{}]});
- },
- function(t, db) {
- var store = db.transaction("Store3", "readwrite", {durability: 'relaxed'}).objectStore("Store3");
- const keys = [];
- let count;
- store.count().onsuccess = t.step_func(e => { count = e.target.result; });
- store.index("CompoundKey").openCursor().onsuccess = t.step_func(function(e) {
- const cursor = e.target.result;
- if (cursor !== null) {
- keys.push(cursor.key);
- cursor.continue();
- return;
- }
-
- // Done iteration, check results.
- assert_equals(count, 7, 'Expected all 7 records to be stored.');
- assert_equals(keys.length, 2, 'Expected exactly two index entries.');
- assert_array_equals(keys[0], [100, 1, 0]);
- assert_object_equals(keys[1], [101, 2, [0]]);
- t.done();
- });
- },
- "Auto-Increment Primary Key - invalid key values elsewhere"
- );
-</script>
diff --git a/tests/wpt/tests/IndexedDB/idbobjectstore_createIndex2.htm b/tests/wpt/tests/IndexedDB/idbobjectstore_createIndex2.htm
deleted file mode 100644
index cac6c799678..00000000000
--- a/tests/wpt/tests/IndexedDB/idbobjectstore_createIndex2.htm
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>IDBObjectStore.createIndex() - attempt to create an index that requires unique values on an object store already contains duplicates </title>
-<link rel="author" title="Microsoft" href="http://www.microsoft.com">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="resources/support.js"></script>
-
-<script>
- var db, aborted,
- t = async_test(),
- record = { indexedProperty: "bar" };
-
- var open_rq = createdb(t);
- open_rq.onupgradeneeded = function(e) {
- db = e.target.result;
- var txn = e.target.transaction,
- objStore = db.createObjectStore("store");
-
- objStore.add(record, 1);
- objStore.add(record, 2);
- var index = objStore.createIndex("index", "indexedProperty", { unique: true });
-
- assert_true(index instanceof IDBIndex, "IDBIndex");
-
- e.target.transaction.onabort = t.step_func(function(e) {
- aborted = true;
- assert_equals(e.type, "abort", "event type");
- });
-
- db.onabort = function(e) {
- assert_true(aborted, "transaction.abort event has fired");
- t.done();
- };
-
- e.target.transaction.oncomplete = fail(t, "got complete, expected abort");
- };
-
-</script>
-
-<div id="log"></div>
diff --git a/tests/wpt/tests/IndexedDB/idbobjectstore_createIndex3-usable-right-away.htm b/tests/wpt/tests/IndexedDB/idbobjectstore_createIndex3-usable-right-away.htm
deleted file mode 100644
index 510f17f173c..00000000000
--- a/tests/wpt/tests/IndexedDB/idbobjectstore_createIndex3-usable-right-away.htm
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>IDBObjectStore.createIndex() - the index is usable right after being made</title>
-<link rel="author" href="mailto:odinho@opera.com" title="Odin Hørthe Omdal">
-<meta name=timeout content=long>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="resources/support.js"></script>
-
-<script>
- var db, aborted,
- t = async_test()
-
- var open_rq = createdb(t);
- open_rq.onupgradeneeded = function(e) {
- db = e.target.result;
- var txn = e.target.transaction,
- objStore = db.createObjectStore("store", { keyPath: 'key' });
-
- for (var i = 0; i < 100; i++)
- objStore.add({ key: "key_" + i, indexedProperty: "indexed_" + i });
-
- var idx = objStore.createIndex("index", "indexedProperty")
-
- idx.get('indexed_99').onsuccess = t.step_func(function(e) {
- assert_equals(e.target.result.key, 'key_99', 'key');
- });
- idx.get('indexed_9').onsuccess = t.step_func(function(e) {
- assert_equals(e.target.result.key, 'key_9', 'key');
- });
- }
-
- open_rq.onsuccess = function() {
- t.done();
- }
-</script>
-
-<div id="log"></div>
diff --git a/tests/wpt/tests/IndexedDB/idbobjectstore_createIndex4-deleteIndex-event_order.htm b/tests/wpt/tests/IndexedDB/idbobjectstore_createIndex4-deleteIndex-event_order.htm
deleted file mode 100644
index bc5915f54a0..00000000000
--- a/tests/wpt/tests/IndexedDB/idbobjectstore_createIndex4-deleteIndex-event_order.htm
+++ /dev/null
@@ -1,66 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>IDBObjectStore.createIndex() - Event ordering for a later deleted index</title>
-<link rel="author" href="mailto:odinho@opera.com" title="Odin Hørthe Omdal">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="resources/support.js"></script>
-
-<script>
- var db,
- events = [],
- t = async_test()
-
- var open_rq = createdb(t);
- open_rq.onupgradeneeded = function(e) {
- db = e.target.result;
- e.target.transaction.oncomplete = log("transaction.complete");
-
- var txn = e.target.transaction,
- objStore = db.createObjectStore("store");
-
- var rq_add1 = objStore.add({ animal: "Unicorn" }, 1);
- rq_add1.onsuccess = log("rq_add1.success");
- rq_add1.onerror = log("rq_add1.error");
-
- objStore.createIndex("index", "animal", { unique: true });
-
- var rq_add2 = objStore.add({ animal: "Unicorn" }, 2);
- rq_add2.onsuccess = log("rq_add2.success");
- rq_add2.onerror = function(e) {
- log("rq_add2.error")(e);
- e.preventDefault();
- e.stopPropagation();
- }
-
- objStore.deleteIndex("index");
-
- var rq_add3 = objStore.add({ animal: "Unicorn" }, 3);
- rq_add3.onsuccess = log("rq_add3.success");
- rq_add3.onerror = log("rq_add3.error");
- }
-
- open_rq.onsuccess = function(e) {
- log("open_rq.success")(e);
- assert_array_equals(events, [ "rq_add1.success",
- "rq_add2.error: ConstraintError",
- "rq_add3.success",
-
- "transaction.complete",
-
- "open_rq.success" ],
- "events");
- t.done();
- }
-
- function log(msg) {
- return function(e) {
- if(e && e.target && e.target.error)
- events.push(msg + ": " + e.target.error.name);
- else
- events.push(msg);
- };
- }
-</script>
-
-<div id="log"></div>
diff --git a/tests/wpt/tests/IndexedDB/idbobjectstore_createIndex5-emptykeypath.htm b/tests/wpt/tests/IndexedDB/idbobjectstore_createIndex5-emptykeypath.htm
deleted file mode 100644
index b004a218ffb..00000000000
--- a/tests/wpt/tests/IndexedDB/idbobjectstore_createIndex5-emptykeypath.htm
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>IDBObjectStore.createIndex() - empty keyPath</title>
-<link rel="author" href="mailto:odinho@opera.com" title="Odin Hørthe Omdal">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="resources/support.js"></script>
-
-<script>
- var db, aborted,
- t = async_test()
-
- var open_rq = createdb(t);
- open_rq.onupgradeneeded = function(e) {
- db = e.target.result;
- var txn = e.target.transaction,
- objStore = db.createObjectStore("store");
-
- for (var i = 0; i < 5; i++)
- objStore.add("object_" + i, i);
-
- var rq = objStore.createIndex("index", "")
- rq.onerror = function() { assert_unreached("error: " + rq.error.name); }
- rq.onsuccess = function() { }
-
- objStore.index("index")
- .get('object_4')
- .onsuccess = t.step_func(function(e) {
- assert_equals(e.target.result, 'object_4', 'result');
- });
- }
-
- open_rq.onsuccess = function() {
- t.done();
- }
-</script>
-
-<div id="log"></div>
diff --git a/tests/wpt/tests/IndexedDB/idbobjectstore_createIndex6-event_order.htm b/tests/wpt/tests/IndexedDB/idbobjectstore_createIndex6-event_order.htm
deleted file mode 100644
index db7398d3604..00000000000
--- a/tests/wpt/tests/IndexedDB/idbobjectstore_createIndex6-event_order.htm
+++ /dev/null
@@ -1,75 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<title>IDBObjectStore.createIndex() - event order when unique constraint is triggered</title>
-<link rel="author" href="mailto:odinho@opera.com" title="Odin Hørthe Omdal">
-<meta rel=help href=http://odinho.html5.org/IndexedDB/spec/Overview.html#widl-IDBObjectStore-createIndex-IDBIndex-DOMString-name-any-keyPath-IDBIndexParameters-optionalParameters>
-<meta rel=assert title="The index that is requested to be created can contain constraints on the data allowed in the index's referenced object store, such as requiring uniqueness of the values referenced by the index's keyPath. If the referenced object store already contains data which violates these constraints, this must not cause the implementation of createIndex to throw an exception or affect what it returns. The implementation must still create and return an IDBIndex object. Instead the implementation must queue up an operation to abort the 'versionchange' transaction which was used for the createIndex call.">
-<meta rel=assert title="In some implementations it's possible for the implementation to asynchronously run into problems creating the index after the createIndex function has returned. For example in implementations where metadata about the newly created index is queued up to be inserted into the database asynchronously, or where the implementation might need to ask the user for permission for quota reasons. Such implementations must still create and return an IDBIndex object. Instead, once the implementation realizes that creating the index has failed, it must abort the transaction using the steps for aborting a transaction using the appropriate error as error parameter.">
-<meta rel=assert title="if the index can't be created due to unique constraints, ConstraintError must be used as error">
-<script src=/resources/testharness.js></script>
-<script src=/resources/testharnessreport.js></script>
-<script src=resources/support.js></script>
-
-<script>
- // Transaction may fire window.onerror in some implementations.
- setup({allow_uncaught_exception:true});
-
- var db,
- events = [],
- t = async_test()
-
- var open_rq = createdb(t);
- open_rq.onupgradeneeded = function(e) {
- db = e.target.result;
- db.onerror = log("db.error");
- db.onabort = log("db.abort");
- e.target.transaction.onabort = log("transaction.abort")
- e.target.transaction.onerror = log("transaction.error")
- e.target.transaction.oncomplete = log("transaction.complete")
-
- var txn = e.target.transaction,
- objStore = db.createObjectStore("store");
-
- var rq_add1 = objStore.add({ animal: "Unicorn" }, 1);
- rq_add1.onsuccess = log("rq_add1.success");
- rq_add1.onerror = log("rq_add1.error");
-
- var rq_add2 = objStore.add({ animal: "Unicorn" }, 2);
- rq_add2.onsuccess = log("rq_add2.success");
- rq_add2.onerror = log("rq_add2.error");
-
- objStore.createIndex("index", "animal", { unique: true })
-
- var rq_add3 = objStore.add({ animal: "Unicorn" }, 3);
- rq_add3.onsuccess = log("rq_add3.success");
- rq_add3.onerror = log("rq_add3.error");
- }
-
- open_rq.onerror = function(e) {
- log("open_rq.error")(e);
- assert_array_equals(events, [ "rq_add1.success",
- "rq_add2.success",
-
- "rq_add3.error: AbortError",
- "transaction.error: AbortError",
- "db.error: AbortError",
-
- "transaction.abort: ConstraintError",
- "db.abort: ConstraintError",
-
- "open_rq.error: AbortError" ],
- "events");
- t.done();
- }
-
- function log(msg) {
- return function(e) {
- if(e && e.target && e.target.error)
- events.push(msg + ": " + e.target.error.name);
- else
- events.push(msg);
- };
- }
-</script>
-
-<div id=log></div>
diff --git a/tests/wpt/tests/IndexedDB/idbobjectstore_createIndex7-event_order.htm b/tests/wpt/tests/IndexedDB/idbobjectstore_createIndex7-event_order.htm
deleted file mode 100644
index 9be4c563f43..00000000000
--- a/tests/wpt/tests/IndexedDB/idbobjectstore_createIndex7-event_order.htm
+++ /dev/null
@@ -1,80 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>IDBObjectStore.createIndex() - Event ordering for ConstraintError on request</title>
-<link rel="author" href="mailto:odinho@opera.com" title="Odin Hørthe Omdal">
-<meta rel=help href=http://odinho.html5.org/IndexedDB/spec/Overview.html#dfn-steps-for-aborting-a-transaction>
-<meta rel=assert title="Unless error was set to null, create a DOMException object and set its name to error. Set transaction's error property to this newly created DOMException.">
-<meta rel=assert title="If the transaction's request list contain any requests whose done flag is still false, abort the steps for asynchronously executing a request for each such request and queue a task to perform the following steps:">
-<meta rel=assert title="set the request's error attribute to a DOMException with a type of AbortError.">
-<meta rel=assert title="Dispatch an event at request. The event must use the Event interface and have its type set to 'error'. The event bubbles and is cancelable. The propagation path for the event is transaction's connection, then transaction and finally the request. There is no default action for the event.">
-<meta rel=assert title="Queue up an operation to dispatch an event at transaction. The event must use the Event interface and have its type set to 'abort'. The event does bubble but is not cancelable. The propagation path for the event is transaction's connection and then transaction.">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="resources/support.js"></script>
-
-<script>
- // Transaction may fire window.onerror in some implementations.
- setup({allow_uncaught_exception:true});
-
- var db,
- events = [],
- t = async_test()
-
- var open_rq = createdb(t);
- open_rq.onupgradeneeded = function(e) {
- db = e.target.result;
- var txn = e.target.transaction;
- db.onerror = log("db.error");
- db.onabort = log("db.abort");
- txn.onabort = log("transaction.abort")
- txn.onerror = log("transaction.error")
- txn.oncomplete = log("transaction.complete")
-
- var objStore = db.createObjectStore("store");
-
- var rq_add1 = objStore.add({ animal: "Unicorn" }, 1);
- rq_add1.onsuccess = log("rq_add1.success");
- rq_add1.onerror = log("rq_add1.error");
-
- objStore.createIndex("index", "animal", { unique: true })
-
- var rq_add2 = objStore.add({ animal: "Unicorn" }, 2);
- rq_add2.onsuccess = log("rq_add2.success");
- rq_add2.onerror = log("rq_add2.error");
-
- var rq_add3 = objStore.add({ animal: "Horse" }, 3);
- rq_add3.onsuccess = log("rq_add3.success");
- rq_add3.onerror = log("rq_add3.error");
- }
-
- open_rq.onerror = function(e) {
- log("open_rq.error")(e);
- assert_array_equals(events, [ "rq_add1.success",
-
- "rq_add2.error: ConstraintError",
- "transaction.error: ConstraintError",
- "db.error: ConstraintError",
-
- "rq_add3.error: AbortError",
- "transaction.error: AbortError",
- "db.error: AbortError",
-
- "transaction.abort: ConstraintError",
- "db.abort: ConstraintError",
-
- "open_rq.error: AbortError" ],
- "events");
- t.done();
- }
-
- function log(msg) {
- return function(e) {
- if(e && e.target && e.target.error)
- events.push(msg + ": " + e.target.error.name);
- else
- events.push(msg);
- };
- }
-</script>
-
-<div id="log"></div>
diff --git a/tests/wpt/tests/IndexedDB/idbobjectstore_createIndex8-valid_keys.htm b/tests/wpt/tests/IndexedDB/idbobjectstore_createIndex8-valid_keys.htm
deleted file mode 100644
index 10c2b29c57d..00000000000
--- a/tests/wpt/tests/IndexedDB/idbobjectstore_createIndex8-valid_keys.htm
+++ /dev/null
@@ -1,54 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>IDBObjectStore.createIndex() - index can be valid keys</title>
-<link rel="author" href="mailto:odinho@opera.com" title="Odin Hørthe Omdal">
-<meta name=timeout content=long>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="resources/support.js"></script>
-
-<script>
- var db,
- t = async_test(),
- now = new Date(),
- mar18 = new Date(1111111111111),
- ar = ["Yay", 2, -Infinity],
- num = 1337
-
- var open_rq = createdb(t);
- open_rq.onupgradeneeded = function(e) {
- db = e.target.result;
- var txn = e.target.transaction,
- objStore = db.createObjectStore("store", { keyPath: 'key' });
-
- objStore.add({ key: "now", i: now });
- objStore.add({ key: "mar18", i: mar18 });
- objStore.add({ key: "array", i: ar });
- objStore.add({ key: "number", i: num });
-
- var idx = objStore.createIndex("index", "i")
-
- idx.get(now).onsuccess = t.step_func(function(e) {
- assert_equals(e.target.result.key, 'now', 'key');
- assert_equals(e.target.result.i.getTime(), now.getTime(), 'getTime');
- });
- idx.get(mar18).onsuccess = t.step_func(function(e) {
- assert_equals(e.target.result.key, 'mar18', 'key');
- assert_equals(e.target.result.i.getTime(), mar18.getTime(), 'getTime');
- });
- idx.get(ar).onsuccess = t.step_func(function(e) {
- assert_equals(e.target.result.key, 'array', 'key');
- assert_array_equals(e.target.result.i, ar, 'array is the same');
- });
- idx.get(num).onsuccess = t.step_func(function(e) {
- assert_equals(e.target.result.key, 'number', 'key');
- assert_equals(e.target.result.i, num, 'number is the same');
- });
- }
-
- open_rq.onsuccess = function() {
- t.done();
- }
-</script>
-
-<div id="log"></div>
diff --git a/tests/wpt/tests/IndexedDB/idbobjectstore_createIndex9-emptyname.htm b/tests/wpt/tests/IndexedDB/idbobjectstore_createIndex9-emptyname.htm
deleted file mode 100644
index 3e1ef3c600b..00000000000
--- a/tests/wpt/tests/IndexedDB/idbobjectstore_createIndex9-emptyname.htm
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<title>IDBObjectStore.createIndex() - empty name</title>
-<link rel="author" href="mailto:odinho@opera.com" title="Odin Hørthe Omdal">
-<script src=/resources/testharness.js></script>
-<script src=/resources/testharnessreport.js></script>
-<script src=resources/support.js></script>
-
-<script>
- var db
-
- var open_rq = createdb(async_test())
- open_rq.onupgradeneeded = function(e) {
- db = e.target.result
- var store = db.createObjectStore("store")
-
- for (var i = 0; i < 5; i++)
- store.add({ idx: "object_" + i }, i)
-
- store.createIndex("", "idx")
-
- store.index("")
- .get('object_4')
- .onsuccess = this.step_func(function(e) {
- assert_equals(e.target.result.idx, 'object_4', 'result')
- })
- assert_equals(store.indexNames[0], "", "indexNames[0]")
- assert_equals(store.indexNames.length, 1, "indexNames.length")
- }
-
- open_rq.onsuccess = function() {
- var store = db.transaction("store", "readonly", {durability: 'relaxed'}).objectStore("store")
-
- assert_equals(store.indexNames[0], "", "indexNames[0]")
- assert_equals(store.indexNames.length, 1, "indexNames.length")
-
- this.done()
- }
-</script>
-
-<div id=log></div>
diff --git a/tests/wpt/tests/accname/name/comp_host_language_label.html b/tests/wpt/tests/accname/name/comp_host_language_label.html
index b07566a56d4..d2057e4e855 100644
--- a/tests/wpt/tests/accname/name/comp_host_language_label.html
+++ b/tests/wpt/tests/accname/name/comp_host_language_label.html
@@ -24,10 +24,17 @@
<h2>HTML input label/for</h2>
<!-- above: input[type=button] -->
<label for="cb">checkbox label</label><input id="cb" type="checkbox" data-expectedlabel="checkbox label" data-testname="html: label[for] input[type=checkbox]" class="ex"><br>
+<label for="cbv">checkbox label with non-empty value</label><input id="cbv" type="checkbox" data-expectedlabel="checkbox label with non-empty value" data-testname="html: label[for] input[type=checkbox][value='test']" class="ex" value="test"><br>
+<label for="cbc">checkbox label checked</label><input id="cbc" type="checkbox" data-expectedlabel="checkbox label checked" data-testname="html: label[for] input[type=checkbox][checked]" class="ex" checked><br>
+<label for="cbcv">checkbox label checked with non-empty value</label><input id="cbcv" type="checkbox" data-expectedlabel="checkbox label checked with non-empty value" data-testname="html: label[for] input[type=checkbox][checked][value='test']" class="ex" value="test" checked><br>
<label for="co">color label</label><input id="co" type="color" data-expectedlabel="color label" data-testname="html: label[for] input[type=color]" class="ex"><br>
+<label for="cov">color label with non-empty value</label><input id="cov" type="color" data-expectedlabel="color label with non-empty value" data-testname="html: label[for] input[type=color][value='#999999']" class="ex" value="#999999"><br>
<label for="da">date label</label><input id="da" type="date" data-expectedlabel="date label" data-testname="html: label[for] input[type=date]" class="ex"><br>
+<label for="dav">date label with non-empty value</label><input id="dav" type="date" data-expectedlabel="date label with non-empty value" data-testname="html: label[for] input[type=date][value='2025-01-01']" class="ex" value="2025-01-01"><br>
<label for="dtl">datetime-local label</label><input id="dtl" type="date" data-expectedlabel="datetime-local label" data-testname="html: label[for] input[type=datetime-local]" class="ex"><br>
+<label for="dtlv">datetime-local label with non-empty value</label><input id="dtlv" type="date" data-expectedlabel="datetime-local label with non-empty value" data-testname="html: label[for] input[type=datetime-local][value='2025-01-01T00:01']" class="ex" value="2025-01-01T00:01"><br>
<label for="em">email label</label><input id="em" type="email" data-expectedlabel="email label" data-testname="html: label[for] input[type=email]" class="ex"><br>
+<label for="emv">email label with non-empty value</label><input id="emv" type="email" data-expectedlabel="email label with non-empty value" data-testname="html: label[for] input[type=email][value='test@test.com']" class="ex" value="test@test.com"><br>
<!-- todo: results for input[type=file] currently differ in all engines -->
<!--
@@ -37,27 +44,45 @@
<!-- skipped: input[type=hidden] for/id n/a -->
<!-- above: input[type=image] -->
<label for="mo">month label</label><input id="mo" type="month" data-expectedlabel="month label" data-testname="html: label[for] input[type=month]" class="ex"><br>
+<label for="mov">month label with non-empty value</label><input id="mov" type="month" data-expectedlabel="month label with non-empty value" data-testname="html: label[for] input[type=month][value='2025-01']" class="ex" value="2025-01"><br>
<label for="n">number label</label><input id="n" type="number" data-expectedlabel="number label" data-testname="html: label[for] input[type=number]" class="ex"><br>
+<label for="nv">number label with non-empty value</label><input id="nv" type="number" data-expectedlabel="number label with non-empty value" data-testname="html: label[for] input[type=number][value=2025]" class="ex" value="2025"><br>
<label for="pw">password label</label><input id="pw" type="password" data-expectedlabel="password label" data-testname="html: label[for] input[type=password]" class="ex"><br>
+<label for="pwv">password label with non-empty value</label><input id="pwv" type="password" data-expectedlabel="password label with non-empty value" data-testname="html: label[for] input[type=password][value='test']" class="ex" value="test"><br>
<label for="ra">radio label</label><input id="ra" type="radio" data-expectedlabel="radio label" data-testname="html: label[for] input[type=radio]" class="ex"><br>
+<label for="rav">radio label with non-empty value</label><input id="rav" type="radio" data-expectedlabel="radio label with non-empty value" data-testname="html: label[for] input[type=radio][value='test']" class="ex" value="test"><br>
<label for="rng">range label</label><input id="rng" type="range" data-expectedlabel="range label" data-testname="html: label[for] input[type=range]" class="ex"><br>
+<label for="rngv">range label with non-empty value</label><input id="rngv" type="range" data-expectedlabel="range label with non-empty value" data-testname="html: label[for] input[type=range][min=0][max=10][value=5]" class="ex" min="0" max="10" value="5"><br>
<!-- input[type=reset] above -->
<label for="search">search label</label><input id="search" type="search" data-expectedlabel="search label" data-testname="html: label[for] input[type=search]" class="ex"><br>
+<label for="searchv">search label with non-empty value</label><input id="searchv" type="search" data-expectedlabel="search label with non-empty value" data-testname="html: label[for] input[type=search][value='test']" class="ex" value="test"><br>
<!-- input[type=submit] above -->
<label for="tel">tel label</label><input id="tel" type="tel" data-expectedlabel="tel label" data-testname="html: label[for] input[type=tel]" class="ex"><br>
+<label for="telv">tel label with non-empty value</label><input id="telv" type="tel" data-expectedlabel="tel label with non-empty value" data-testname="html: label[for] input[type=tel][value='123-45-678']" class="ex" value="123-45-678"><br>
<label for="t">textfield label</label><input id="t" type="text" data-expectedlabel="textfield label" data-testname="html: label[for] input[type=text]" class="ex"><br>
+<label for="tv">textfield label with non-empty value</label><input id="tv" type="text" data-expectedlabel="textfield label with non-empty value" data-testname="html: label[for] input[type=text][value='test']" class="ex" value="test"><br>
<label for="time">time label</label><input id="time" type="time" data-expectedlabel="time label" data-testname="html: label[for] input[type=time]" class="ex"><br>
+<label for="timev">time label with non-empty value</label><input id="timev" type="time" data-expectedlabel="time label with non-empty value" data-testname="html: label[for] input[type=time][value='00:01']" class="ex" value="00:01"><br>
<label for="url">url label</label><input id="url" type="url" data-expectedlabel="url label" data-testname="html: label[for] input[type=url]" class="ex"><br>
+<label for="urlv">url label with non-empty value</label><input id="urlv" type="url" data-expectedlabel="url label with non-empty value" data-testname="html: label[for] input[type=url][value='https://www.w3.org']" class="ex" value="https://www.w3.org"><br>
<label for="week">week label</label><input id="week" type="week" data-expectedlabel="week label" data-testname="html: label[for] input[type=week]" class="ex"><br>
+<label for="weekv">week label with non-empty value</label><input id="weekv" type="week" data-expectedlabel="week label with non-empty value" data-testname="html: label[for] input[type=week][value='2025-W01']" class="ex" value="2025-W01"><br>
<h2>HTML input label encapsulation</h2>
<!-- above: input[type=button] -->
<label><input type="checkbox" data-expectedlabel="checkbox label" data-testname="html: label input[type=checkbox] encapsulation" class="ex">checkbox label</label><br>
+<label><input type="checkbox" data-expectedlabel="checkbox label with non-empty value" data-testname="html: label input[type=checkbox][value='test'] encapsulation" class="ex" value="test">checkbox label with non-empty value</label><br>
+<label><input type="checkbox" data-expectedlabel="checkbox label checked" data-testname="html: label input[type=checkbox][checked] encapsulation" class="ex" checked>checkbox label checked</label><br>
+<label><input type="checkbox" data-expectedlabel="checkbox label checked with non-empty value" data-testname="html: label input[type=checkbox][value='test'][checked] encapsulation" class="ex" value="test" checked>checkbox label checked with non-empty value</label><br>
<label><input type="color" data-expectedlabel="color label" data-testname="html: label input[type=color] encapsulation" class="ex">color label</label><br>
+<label><input type="color" data-expectedlabel="color label with non-empty value" data-testname="html: label input[type=color][value='#999999'] encapsulation" class="ex" value="#999999">color label with non-empty value</label><br>
<label><input type="date" data-expectedlabel="date label" data-testname="html: label input[type=date] encapsulation" class="ex">date label</label><br>
+<label><input type="date" data-expectedlabel="date label with non-empty value" data-testname="html: label input[type=date][value='2025-01-01'] encapsulation" class="ex" value="2025-01-01">date label with non-empty value</label><br>
<label><input type="datetime-local" data-expectedlabel="datetime-local label" data-testname="html: label input[type=datetime-local] encapsulation" class="ex">datetime-local label</label><br>
+<label><input type="datetime-local" data-expectedlabel="datetime-local label with non-empty value" data-testname="html: label input[type=datetime-local][value='2025-01-01T00:01'] encapsulation" class="ex" value="2025-01-01T00:01">datetime-local label with non-empty value</label><br>
<label><input type="email" data-expectedlabel="email label" data-testname="html: label input[type=email] encapsulation" class="ex">email label</label><br>
+<label><input type="email" data-expectedlabel="email label with non-empty value" data-testname="html: label input[type=email][value='test@test.com'] encapsulation" class="ex" value="test@test.com">email label with non-empty value</label><br>
<!-- todo: results for input[type=file] currently differ in all engines -->
<!--
@@ -67,18 +92,29 @@
<!-- skipped: input[type=hidden] n/a -->
<!-- above: input[type=image] -->
<label><input type="month" data-expectedlabel="month label" data-testname="html: label input[type=month] encapsulation" class="ex">month label</label><br>
+<label><input type="month" data-expectedlabel="month label with non-empty value" data-testname="html: label input[type=month][value='2025-01'] encapsulation" class="ex" value="2025-01">month label with non-empty value</label><br>
<label><input type="number" data-expectedlabel="number label" data-testname="html: label input[type=number] encapsulation" class="ex">number label</label><br>
+<label><input type="number" data-expectedlabel="number label with non-empty value" data-testname="html: label input[type=number][value=1] encapsulation" class="ex" value="1">number label with non-empty value</label><br>
<label><input type="password" data-expectedlabel="password label" data-testname="html: label input[type=password] encapsulation" class="ex">password label</label><br>
+<label><input type="password" data-expectedlabel="password label with non-empty value" data-testname="html: label input[type=password][value='test'] encapsulation" class="ex" value="test">password label with non-empty value</label><br>
<label><input type="radio" data-expectedlabel="radio label" data-testname="html: label input[type=radio] encapsulation" class="ex">radio label</label><br>
+<label><input type="radio" data-expectedlabel="radio label with non-empty value" data-testname="html: label input[type=radio][value='test'] encapsulation" class="ex" value="test">radio label with non-empty value</label><br>
<label><input type="range" data-expectedlabel="range label" data-testname="html: label input[type=range] encapsulation" class="ex">range label</label><br>
+<label><input type="range" data-expectedlabel="range label with non-empty value" data-testname="html: label input[type=range][value='5'][min='0'][max='10'] encapsulation" class="ex" min="0" max="10" value="5">range label with non-empty value</label><br>
<!-- above: input[type=reset] -->
<label><input type="search" data-expectedlabel="search label" data-testname="html: label input[type=search] encapsulation" class="ex">search label</label><br>
+<label><input type="search" data-expectedlabel="search label with non-empty value" data-testname="html: label input[type=search][value='test'] encapsulation" class="ex" value="test">search label with non-empty value</label><br>
<!-- above: input[type=submit] -->
<label><input type="tel" data-expectedlabel="tel label" data-testname="html: label input[type=tel] encapsulation" class="ex">tel label</label><br>
+<label><input type="tel" data-expectedlabel="tel label with non-empty value" data-testname="html: label input[type=tel][value='123-45-678'] encapsulation" class="ex" value="123-45-678">tel label with non-empty value</label><br>
<label><input type="text" data-expectedlabel="textfield label" data-testname="html: label[for] input[type=text] encapsulation" class="ex">textfield label</label><br>
+<label><input type="text" data-expectedlabel="textfield label with non-empty value" data-testname="html: label[for] input[type=text][value='test'] encapsulation" class="ex" value="test">textfield label with non-empty value</label><br>
<label><input type="time" data-expectedlabel="time label" data-testname="html: label input[type=time] encapsulation" class="ex">time label</label><br>
+<label><input type="time" data-expectedlabel="time label with non-empty value" data-testname="html: label input[type=time][value='00:01'] encapsulation" class="ex" value="00:01">time label with non-empty value</label><br>
<label><input type="url" data-expectedlabel="url label" data-testname="html: label input[type=url] encapsulation" class="ex">url label</label><br>
+<label><input type="url" data-expectedlabel="url label with non-empty value" data-testname="html: label input[type=url][value='https://www.w3.org'] encapsulation" class="ex" value="https://www.w3.org">url label with non-empty value</label><br>
<label><input type="week" data-expectedlabel="week label" data-testname="html: label input[type=week] encapsulation" class="ex">week label</label><br>
+<label><input type="week" data-expectedlabel="week label with non-empty value" data-testname="html: label input[type=week][value='2025-W01'] encapsulation" class="ex" value="2025-W01">week label with non-empty value</label><br>
<!-- skipped: skip textarea for v1 since all engines fail in different ways. need to verify label/textarea is expected. -->
@@ -151,4 +187,4 @@
AriaUtils.verifyLabelsBySelector(".ex");
</script>
</body>
-</html> \ No newline at end of file
+</html>
diff --git a/tests/wpt/tests/bluetooth/resources/bluetooth-test.js b/tests/wpt/tests/bluetooth/resources/bluetooth-test.js
index 7852aadf466..474c9b9bec4 100644
--- a/tests/wpt/tests/bluetooth/resources/bluetooth-test.js
+++ b/tests/wpt/tests/bluetooth/resources/bluetooth-test.js
@@ -191,8 +191,9 @@ function assert_promise_rejects_with_message(promise, expected, description) {
error => {
assert_equals(error.name, expected.name, 'Unexpected Error Name:');
if (expected.message) {
- assert_equals(
- error.message, expected.message, 'Unexpected Error Message:');
+ assert_true(
+ error.message.includes(expected.message),
+ 'Unexpected Error Message:');
}
});
}
diff --git a/tests/wpt/tests/console/console-count-logging-manual.html b/tests/wpt/tests/console/console-count-logging-manual.html
deleted file mode 100644
index 640729f1a21..00000000000
--- a/tests/wpt/tests/console/console-count-logging-manual.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<title>Console Count - Logging Manual Test</title>
-<meta name="author" title="Dominic Farolino" href="mailto:domfarolino@gmail.com">
-<meta name="assert" content="Console count method default parameter should work">
-<link rel="help" href="https://console.spec.whatwg.org/#count">
-</head>
-<body>
-<p>Open the console inside the developer tools. It should contain four entries whose contents are:</p>
-<p><code>default: 1</code></p>
-<p><code>default: 2</code></p>
-<p><code>default: 3</code></p>
-<p><code>default: 4</code></p>
-
-<script>
-console.count();
-console.count(undefined);
-console.count("default");
-console.count({toString() {return "default"}});
-</script>
-</body>
-</html>
diff --git a/tests/wpt/tests/console/console-count-logging.html b/tests/wpt/tests/console/console-count-logging.html
new file mode 100644
index 00000000000..4cdd607b7f2
--- /dev/null
+++ b/tests/wpt/tests/console/console-count-logging.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Test console log are present</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
+<script>
+ promise_test(async () => {
+ await test_driver.bidi.log.entry_added.subscribe();
+
+ // Create a promise that resolves when all the log entries are added.
+ const log_entries_promise = new Promise(resolve => {
+ const log_entries = [];
+ test_driver.bidi.log.entry_added.on(event => {
+ log_entries.push(event.text);
+ if (log_entries.length === 4) {
+ resolve(log_entries);
+ }
+ });
+ });
+
+ console.count();
+ console.count(undefined);
+ console.count("default");
+ console.count({
+ toString() {
+ return "default"
+ }
+ });
+
+ // Wait for the log entries to be added.
+ const log_entries = await log_entries_promise;
+
+ assert_array_equals(log_entries, [
+ "default: 1",
+ "default: 2",
+ "default: 3",
+ "default: 4"]);
+ }, "Console count method default parameter should work");
+</script>
diff --git a/tests/wpt/tests/content-security-policy/img-src/img-src-none-blocks-data-uri.html b/tests/wpt/tests/content-security-policy/img-src/img-src-none-blocks-data-uri.html
new file mode 100644
index 00000000000..8b9032afcef
--- /dev/null
+++ b/tests/wpt/tests/content-security-policy/img-src/img-src-none-blocks-data-uri.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<meta http-equiv="Content-Security-Policy" content="img-src 'none';">
+<html>
+<head>
+ <title>img element src attribute must match src list.</title>
+ <script src='/resources/testharness.js'></script>
+ <script src='/resources/testharnessreport.js'></script>
+</head>
+<body>
+ <div id='log'></div>
+
+ <script>
+ var t1 = async_test("img-src with 'none' source should not match");
+ </script>
+ <img src="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="
+ onload='t1.step(function() { assert_unreached("Image should not have loaded"); t1.done(); });'
+ onerror='t1.done();'>
+
+</body>
+</html>
diff --git a/tests/wpt/tests/content-security-policy/img-src/report-blocked-data-uri.sub.html b/tests/wpt/tests/content-security-policy/img-src/report-blocked-data-uri.sub.html
index d7405cd2557..c12ebbf568a 100644
--- a/tests/wpt/tests/content-security-policy/img-src/report-blocked-data-uri.sub.html
+++ b/tests/wpt/tests/content-security-policy/img-src/report-blocked-data-uri.sub.html
@@ -18,7 +18,7 @@
});
</script>
- <img src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==">
+ <img src="data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==">
<div id="log"></div>
</body>
diff --git a/tests/wpt/tests/content-security-policy/inheritance/history-iframe.sub.html b/tests/wpt/tests/content-security-policy/inheritance/history-iframe.sub.html
index 412b3ac3464..1f6960531eb 100644
--- a/tests/wpt/tests/content-security-policy/inheritance/history-iframe.sub.html
+++ b/tests/wpt/tests/content-security-policy/inheritance/history-iframe.sub.html
@@ -1,4 +1,6 @@
<!DOCTYPE html>
+<meta name="timeout" content="long">
+
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/utils.js"></script>
diff --git a/tests/wpt/tests/content-security-policy/reporting/report-frame-ancestors-no-parent-cookies.sub.html b/tests/wpt/tests/content-security-policy/reporting/report-frame-ancestors-no-parent-cookies.sub.html
new file mode 100644
index 00000000000..b500811c070
--- /dev/null
+++ b/tests/wpt/tests/content-security-policy/reporting/report-frame-ancestors-no-parent-cookies.sub.html
@@ -0,0 +1,33 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>Cookies are not sent on cross origin violation reports for
+ frame-ancestors violations, even if the report-uri is same-origin
+ with the embedder.</title>
+ <meta name="timeout" content="long">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+</head>
+<body>
+<script>
+ fetch(
+ "/cookies/resources/set-cookie.py?name=cspViolationReportCookie1&path=" +
+ encodeURIComponent("/"),
+ {mode: 'no-cors', credentials: 'include'})
+ .then(() => {
+
+ const iframe = document.createElement('iframe');
+ const searchParams = new URLSearchParams();
+ let reportId = "{{$id:uuid()}}";
+ searchParams.set("reportID", reportId);
+ searchParams.set("reportUriBase", "http://{{host}}:{{ports[http][0]}}");
+ iframe.src = "http://{{domains[www1]}}:{{ports[http][0]}}/" +
+ "content-security-policy/reporting/support/not-embeddable-frame.py?" +
+ searchParams.toString();
+ document.body.appendChild(iframe);
+ });
+</script>
+<script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=frame-ancestors%20%27none%27&noCookies=true&reportID={{$id}}'></script>
+
+</body>
+</html>
diff --git a/tests/wpt/tests/content-security-policy/reporting/support/not-embeddable-frame.py b/tests/wpt/tests/content-security-policy/reporting/support/not-embeddable-frame.py
index 9e65b424359..be7e635ac24 100644
--- a/tests/wpt/tests/content-security-policy/reporting/support/not-embeddable-frame.py
+++ b/tests/wpt/tests/content-security-policy/reporting/support/not-embeddable-frame.py
@@ -5,6 +5,7 @@ def main(request, response):
csp_header = b'Content-Security-Policy-Report-Only' \
if request.GET.first(b'reportOnly', None) == b'true' else b'Content-Security-Policy'
- headers.append((csp_header, b"frame-ancestors 'none'; report-uri /reporting/resources/report.py?op=put&reportID=" + request.GET[b'reportID']))
+ report_uri_base = request.GET.first(b'reportUriBase', b'')
+ headers.append((csp_header, b"frame-ancestors 'none'; report-uri " + report_uri_base + b"/reporting/resources/report.py?op=put&reportID=" + request.GET[b'reportID']))
return headers, b'{}'
diff --git a/tests/wpt/tests/content-security-policy/securitypolicyviolation/securitypolicyviolation-block-cross-origin-image-from-script.sub.html b/tests/wpt/tests/content-security-policy/securitypolicyviolation/securitypolicyviolation-block-cross-origin-image-from-script.sub.html
index 37499db4b5c..3c0e34c3422 100644
--- a/tests/wpt/tests/content-security-policy/securitypolicyviolation/securitypolicyviolation-block-cross-origin-image-from-script.sub.html
+++ b/tests/wpt/tests/content-security-policy/securitypolicyviolation/securitypolicyviolation-block-cross-origin-image-from-script.sub.html
@@ -16,8 +16,11 @@
assert_equals(e.originalPolicy, "img-src \'none\'");
assert_equals(e.disposition, "enforce");
assert_equals(new URL(e.sourceFile).pathname, "/content-security-policy/support/inject-image.sub.js");
- assert_equals(e.lineNumber, 2);
- assert_equals(e.columnNumber, 1);
+ // Per https://html.spec.whatwg.org/#relevant-mutations:
+ // The img or source HTML element insertion steps or HTML element removing steps count the mutation as a relevant mutation.
+ // So when the src load is async, line 3 (appendChild, and thus the insertion steps) is what triggers the relevant load, not the src setter.
+ assert_equals(e.lineNumber, 3);
+ assert_equals(e.columnNumber, 15);
assert_equals(e.statusCode, 200);
}));
diff --git a/tests/wpt/tests/content-security-policy/securitypolicyviolation/securitypolicyviolation-block-image-from-script.sub.html b/tests/wpt/tests/content-security-policy/securitypolicyviolation/securitypolicyviolation-block-image-from-script.sub.html
index b75d3804a89..5f4f301322c 100644
--- a/tests/wpt/tests/content-security-policy/securitypolicyviolation/securitypolicyviolation-block-image-from-script.sub.html
+++ b/tests/wpt/tests/content-security-policy/securitypolicyviolation/securitypolicyviolation-block-image-from-script.sub.html
@@ -16,8 +16,11 @@
assert_equals(e.originalPolicy, "img-src \'none\'");
assert_equals(e.disposition, "enforce");
assert_equals(new URL(e.sourceFile).pathname, "/content-security-policy/support/inject-image.sub.js");
- assert_equals(e.lineNumber, 2);
- assert_equals(e.columnNumber, 1);
+ // Per https://html.spec.whatwg.org/#relevant-mutations:
+ // The img or source HTML element insertion steps or HTML element removing steps count the mutation as a relevant mutation.
+ // So when the src load is async, line 3 (appendChild, and thus the insertion steps) is what triggers the relevant load, not the src setter.
+ assert_equals(e.lineNumber, 3);
+ assert_equals(e.columnNumber, 15);
assert_equals(e.statusCode, 200);
}));
diff --git a/tests/wpt/tests/credential-management/credentialscontainer-get-basics.https.html b/tests/wpt/tests/credential-management/credentialscontainer-get-basics.https.html
new file mode 100644
index 00000000000..c1030b48f95
--- /dev/null
+++ b/tests/wpt/tests/credential-management/credentialscontainer-get-basics.https.html
@@ -0,0 +1,57 @@
+<!DOCTYPE html>
+<title>Credential Management API: create() basics.</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+ promise_test(async (t) => {
+ await promise_rejects_dom(
+ t,
+ "NotSupportedError",
+ navigator.credentials.get()
+ );
+
+ await promise_rejects_dom(
+ t,
+ "NotSupportedError",
+ navigator.credentials.get({})
+ );
+
+ await promise_rejects_dom(
+ t,
+ "NotSupportedError",
+ navigator.credentials.get({ x: "y" })
+ );
+
+ await promise_rejects_dom(
+ t,
+ "NotSupportedError",
+ navigator.credentials.get({ x: "y", y: "z" })
+ );
+
+ await promise_rejects_dom(
+ t,
+ "NotSupportedError",
+ navigator.credentials.get({ x: "y" })
+ );
+
+ await promise_rejects_dom(
+ t,
+ "NotSupportedError",
+ navigator.credentials.get({ mediation: "required" })
+ );
+
+ const abortController = new AbortController();
+ const { signal } = abortController;
+ await promise_rejects_dom(
+ t,
+ "NotSupportedError",
+ navigator.credentials.get({ signal })
+ );
+
+ await promise_rejects_dom(
+ t,
+ "NotSupportedError",
+ navigator.credentials.get({ signal, mediation: "required" })
+ );
+ }, "Calling navigator.credentials.get() without a valid matching interface.");
+</script>
diff --git a/tests/wpt/tests/credential-management/non-fully-active.https.html b/tests/wpt/tests/credential-management/non-fully-active.https.html
index 8101599cedb..508b4325d78 100644
--- a/tests/wpt/tests/credential-management/non-fully-active.https.html
+++ b/tests/wpt/tests/credential-management/non-fully-active.https.html
@@ -42,28 +42,28 @@
// Try to get credentials while not fully active...
await promise_rejects_dom(
t,
- "NotAllowedError",
+ "InvalidStateError",
DOMExceptionCtor,
credentials.get({ signal }),
- "Expected NotAllowedError for get() on non-fully-active document"
+ "Expected InvalidStateError for get() on non-fully-active document"
);
// Try to create credentials while not fully active...
await promise_rejects_dom(
t,
- "NotAllowedError",
+ "InvalidStateError",
DOMExceptionCtor,
credentials.create({ signal }),
- "Expected NotAllowedError for create() on non-fully-active document"
+ "Expected InvalidStateError for create() on non-fully-active document"
);
// Try to prevent silent access while not fully active...
await promise_rejects_dom(
t,
- "NotAllowedError",
+ "InvalidStateError",
DOMExceptionCtor,
credentials.preventSilentAccess(),
- "Expected NotAllowedError for preventSilentAccess() on non-fully-active document"
+ "Expected InvalidStateError for preventSilentAccess() on non-fully-active document"
);
}, "non-fully active document behavior for CredentialsContainer");
</script>
diff --git a/tests/wpt/tests/css/css-align/self-alignment/block-justify-self-ref.html b/tests/wpt/tests/css/css-align/self-alignment/block-justify-self-ref.html
new file mode 100644
index 00000000000..86271998696
--- /dev/null
+++ b/tests/wpt/tests/css/css-align/self-alignment/block-justify-self-ref.html
@@ -0,0 +1,82 @@
+<!doctype html>
+<meta charset="UTF-8">
+<title>Self-Alignment: justify-self - block-level elements reference</title>
+<link rel="author" title="David Tran" href="mailto:davidtranhq+wpt@gmail.com" />
+<style>
+.grid-container div {
+ width: 100px;
+ background-color: green;
+}
+
+.stack {
+ display: grid;
+}
+
+.stack > * {
+ grid-row: 1;
+ grid-column: 1;
+}
+
+body {
+ width: 700px;
+}
+
+</style>
+<p>Test passes if <strong>no red</strong> is visible</p>
+
+<div class="stack" style="float: left;">
+ <article class="grid-container" style="display: grid; grid-template-columns: 1fr; width: 300px">
+ <div style="justify-self: auto;">auto</div>
+ <div style="justify-self: normal;">normal</div>
+ <div style="justify-self: stretch; width: auto; margin: 0;">stretch</div>
+ <div style="justify-self: stretch; margin: 0;">stretch</div>
+ <div style="justify-self: stretch; width: auto; margin: auto;">stretch</div>
+ <div style="justify-self: left;">left</div>
+ <div style="justify-self: right;">right</div>
+ <div style="justify-self: start;">start</div>
+ <div style="justify-self: center;">center</div>
+ <div style="justify-self: end;">end</div>
+ <div style="justify-self: self-start;">self-start</div>
+ <div style="justify-self: self-end;">self-end</div>
+ <div style="justify-self: flex-start;">flex-start</div>
+ <div style="justify-self: flex-end;">flex-end</div>
+ <div style="float: left; justify-self: center;">float left</div>
+ <div style="float: right; justify-self: center;">float right</div>
+ <div style="justify-self: self-start; direction: rtl">self-start (rtl)</div>
+ <div style="justify-self: self-end; direction: rtl">self-end (rtl)</div>
+ <div style="justify-self: start; direction: rtl">start (rtl)</div>
+ <div style="justify-self: end; direction: rtl">end (rtl)</div>
+ <div style="justify-self: end">end parent
+ <div style="position: absolute;">absolute child</div>
+ </div>
+ <div style="justify-self: end; position: absolute;">absolute parent</div>
+ </article>
+</div>
+<div class="stack" style="float: right; direction: rtl">
+ <article class="grid-container" style="display: grid; grid-template-columns: 1fr; width: 300px">
+ <div style="justify-self: auto;">auto</div>
+ <div style="justify-self: normal;">normal</div>
+ <div style="justify-self: stretch; width: auto; margin: 0;">stretch</div>
+ <div style="justify-self: stretch; margin: 0;">stretch</div>
+ <div style="justify-self: stretch; width: auto; margin: auto;">stretch</div>
+ <div style="justify-self: left;">left</div>
+ <div style="justify-self: right;">right</div>
+ <div style="justify-self: start;">start</div>
+ <div style="justify-self: center;">center</div>
+ <div style="justify-self: end;">end</div>
+ <div style="justify-self: self-start;">self-start</div>
+ <div style="justify-self: self-end;">self-end</div>
+ <div style="justify-self: flex-start;">flex-start</div>
+ <div style="justify-self: flex-end;">flex-end</div>
+ <div style="float: left; justify-self: center;">float left</div>
+ <div style="float: right; justify-self: center;">float right</div>
+ <div style="justify-self: self-start; direction: ltr">self-start (ltr)</div>
+ <div style="justify-self: self-end; direction: ltr">self-end (ltr)</div>
+ <div style="justify-self: start; direction: ltr">start (ltr)</div>
+ <div style="justify-self: end; direction: ltr">end (ltr)</div>
+ <div style="justify-self: end">end parent
+ <div style="position: absolute;">absolute child</div>
+ </div>
+ <div style="justify-self: end; position: absolute;">absolute parent</div>
+ </article>
+</div>
diff --git a/tests/wpt/tests/css/css-align/self-alignment/block-justify-self.html b/tests/wpt/tests/css/css-align/self-alignment/block-justify-self.html
new file mode 100644
index 00000000000..1235a04a14e
--- /dev/null
+++ b/tests/wpt/tests/css/css-align/self-alignment/block-justify-self.html
@@ -0,0 +1,199 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Self-Alignment: justify-self - block-level elements</title>
+<link rel="author" title="David Tran" href="mailto:davidtranhq+wpt@gmail.com">
+<link rel="match" href="block-justify-self-ref.html">
+<link rel="help" href="https://www.w3.org/TR/css-align-3/#justify-block" />
+<meta name="assert" content="justify-self applies to block-level boxes">
+<style>
+.grid-container div {
+ width: 100px;
+ background-color: green;
+}
+
+.block-container div, .block-container-with-table-items div {
+ width: 100px;
+ background-color: red;
+}
+
+.stack {
+ display: grid;
+}
+
+.stack > * {
+ grid-row: 1;
+ grid-column: 1;
+}
+
+body {
+ width: 700px;
+}
+
+</style>
+<p>Test passes if <strong>no red</strong> is visible</p>
+
+<div class="stack" style="float: left;">
+ <article class="block-container" style="display: block; width: 300px">
+ <div style="justify-self: auto;">auto</div>
+ <div style="justify-self: normal;">normal</div>
+ <div style="justify-self: stretch; width: auto; margin: 0;">stretch</div>
+ <div style="justify-self: stretch; margin: 0;">stretch</div>
+ <div style="justify-self: stretch; width: auto; margin: auto;">stretch</div>
+ <div style="justify-self: left;">left</div>
+ <div style="justify-self: right;">right</div>
+ <div style="justify-self: start;">start</div>
+ <div style="justify-self: center;">center</div>
+ <div style="justify-self: end;">end</div>
+ <div style="justify-self: self-start;">self-start</div>
+ <div style="justify-self: self-end;">self-end</div>
+ <div style="justify-self: flex-start;">flex-start</div>
+ <div style="justify-self: flex-end;">flex-end</div>
+ <div style="float: left; justify-self: center;">float left</div>
+ <div style="float: right; justify-self: center;">float right</div>
+ <div style="justify-self: self-start; direction: rtl">self-start (rtl)</div>
+ <div style="justify-self: self-end; direction: rtl">self-end (rtl)</div>
+ <div style="justify-self: start; direction: rtl">start (rtl)</div>
+ <div style="justify-self: end; direction: rtl">end (rtl)</div>
+ <div style="justify-self: end">end parent
+ <div style="position: absolute;">absolute child</div>
+ </div>
+ <div style="justify-self: end; position: absolute;">absolute parent</div>
+ </article>
+
+ <article class="block-container-with-table-items" style="display: block; width: 300px">
+ <div style="justify-self: auto;">auto</div>
+ <div style="justify-self: normal;">normal</div>
+ <div style="justify-self: stretch; width: auto; margin: 0;">stretch</div>
+ <div style="justify-self: stretch; margin: 0;">stretch</div>
+ <div style="justify-self: stretch; width: auto; margin: auto;">stretch</div>
+ <div style="justify-self: left;">left</div>
+ <div style="justify-self: right;">right</div>
+ <div style="justify-self: start;">start</div>
+ <div style="justify-self: center;">center</div>
+ <div style="justify-self: end;">end</div>
+ <div style="justify-self: self-start;">self-start</div>
+ <div style="justify-self: self-end;">self-end</div>
+ <div style="justify-self: flex-start;">flex-start</div>
+ <div style="justify-self: flex-end;">flex-end</div>
+ <div style="float: left; justify-self: center;">float left</div>
+ <div style="float: right; justify-self: center;">float right</div>
+ <div style="justify-self: self-start; direction: rtl">self-start (rtl)</div>
+ <div style="justify-self: self-end; direction: rtl">self-end (rtl)</div>
+ <div style="justify-self: start; direction: rtl">start (rtl)</div>
+ <div style="justify-self: end; direction: rtl">end (rtl)</div>
+ <div style="justify-self: end">end parent
+ <div style="position: absolute;">absolute child</div>
+ </div>
+ <div style="justify-self: end; position: absolute;">absolute parent</div>
+ </article>
+
+ <article class="grid-container" style="display: grid; grid-template-columns: 1fr; width: 300px">
+ <div style="justify-self: auto;">auto</div>
+ <div style="justify-self: normal;">normal</div>
+ <div style="justify-self: stretch; width: auto; margin: 0;">stretch</div>
+ <div style="justify-self: stretch; margin: 0;">stretch</div>
+ <div style="justify-self: stretch; width: auto; margin: auto;">stretch</div>
+ <div style="justify-self: left;">left</div>
+ <div style="justify-self: right;">right</div>
+ <div style="justify-self: start;">start</div>
+ <div style="justify-self: center;">center</div>
+ <div style="justify-self: end;">end</div>
+ <div style="justify-self: self-start;">self-start</div>
+ <div style="justify-self: self-end;">self-end</div>
+ <div style="justify-self: flex-start;">flex-start</div>
+ <div style="justify-self: flex-end;">flex-end</div>
+ <div style="float: left; justify-self: center;">float left</div>
+ <div style="float: right; justify-self: center;">float right</div>
+ <div style="justify-self: self-start; direction: rtl">self-start (rtl)</div>
+ <div style="justify-self: self-end; direction: rtl">self-end (rtl)</div>
+ <div style="justify-self: start; direction: rtl">start (rtl)</div>
+ <div style="justify-self: end; direction: rtl">end (rtl)</div>
+ <div style="justify-self: end">end parent
+ <div style="position: absolute;">absolute child</div>
+ </div>
+ <div style="justify-self: end; position: absolute;">absolute parent</div>
+ </article>
+</div>
+
+<div class="stack" style="direction: rtl; float: right;">
+ <article class="block-container" style="display: block; width: 300px">
+ <div style="justify-self: auto;">auto</div>
+ <div style="justify-self: normal;">normal</div>
+ <div style="justify-self: stretch; width: auto; margin: 0;">stretch</div>
+ <div style="justify-self: stretch; margin: 0;">stretch</div>
+ <div style="justify-self: stretch; width: auto; margin: auto;">stretch</div>
+ <div style="justify-self: left;">left</div>
+ <div style="justify-self: right;">right</div>
+ <div style="justify-self: start;">start</div>
+ <div style="justify-self: center;">center</div>
+ <div style="justify-self: end;">end</div>
+ <div style="justify-self: self-start;">self-start</div>
+ <div style="justify-self: self-end;">self-end</div>
+ <div style="justify-self: flex-start;">flex-start</div>
+ <div style="justify-self: flex-end;">flex-end</div>
+ <div style="float: left; justify-self: center;">float left</div>
+ <div style="float: right; justify-self: center;">float right</div>
+ <div style="justify-self: self-start; direction: ltr">self-start (ltr)</div>
+ <div style="justify-self: self-end; direction: ltr">self-end (ltr)</div>
+ <div style="justify-self: start; direction: ltr">start (ltr)</div>
+ <div style="justify-self: end; direction: ltr">end (ltr)</div>
+ <div style="justify-self: end">end parent
+ <div style="position: absolute;">absolute child</div>
+ </div>
+ <div style="justify-self: end; position: absolute;">absolute parent</div>
+ </article>
+
+ <article class="block-container-with-table-items" style="display: block; width: 300px">
+ <div style="justify-self: auto;">auto</div>
+ <div style="justify-self: normal;">normal</div>
+ <div style="justify-self: stretch; width: auto; margin: 0;">stretch</div>
+ <div style="justify-self: stretch; margin: 0;">stretch</div>
+ <div style="justify-self: stretch; width: auto; margin: auto;">stretch</div>
+ <div style="justify-self: left;">left</div>
+ <div style="justify-self: right;">right</div>
+ <div style="justify-self: start;">start</div>
+ <div style="justify-self: center;">center</div>
+ <div style="justify-self: end;">end</div>
+ <div style="justify-self: self-start;">self-start</div>
+ <div style="justify-self: self-end;">self-end</div>
+ <div style="justify-self: flex-start;">flex-start</div>
+ <div style="justify-self: flex-end;">flex-end</div>
+ <div style="float: left; justify-self: center;">float left</div>
+ <div style="float: right; justify-self: center;">float right</div>
+ <div style="justify-self: self-start; direction: ltr">self-start (ltr)</div>
+ <div style="justify-self: self-end; direction: ltr">self-end (ltr)</div>
+ <div style="justify-self: start; direction: ltr">start (ltr)</div>
+ <div style="justify-self: end; direction: ltr">end (ltr)</div>
+ <div style="justify-self: end">end parent
+ <div style="position: absolute;">absolute child</div>
+ </div>
+ <div style="justify-self: end; position: absolute;">absolute parent</div>
+ </article>
+
+ <article class="grid-container" style="display: grid; grid-template-columns: 1fr; width: 300px">
+ <div style="justify-self: auto;">auto</div>
+ <div style="justify-self: normal;">normal</div>
+ <div style="justify-self: stretch; width: auto; margin: 0;">stretch</div>
+ <div style="justify-self: stretch; margin: 0;">stretch</div>
+ <div style="justify-self: stretch; width: auto; margin: auto;">stretch</div>
+ <div style="justify-self: left;">left</div>
+ <div style="justify-self: right;">right</div>
+ <div style="justify-self: start;">start</div>
+ <div style="justify-self: center;">center</div>
+ <div style="justify-self: end;">end</div>
+ <div style="justify-self: self-start;">self-start</div>
+ <div style="justify-self: self-end;">self-end</div>
+ <div style="justify-self: flex-start;">flex-start</div>
+ <div style="justify-self: flex-end;">flex-end</div>
+ <div style="float: left; justify-self: center;">float left</div>
+ <div style="float: right; justify-self: center;">float right</div>
+ <div style="justify-self: self-start; direction: ltr">self-start (ltr)</div>
+ <div style="justify-self: self-end; direction: ltr">self-end (ltr)</div>
+ <div style="justify-self: start; direction: ltr">start (ltr)</div>
+ <div style="justify-self: end; direction: ltr">end (ltr)</div>
+ <div style="justify-self: end">end parent
+ <div style="position: absolute;">absolute child</div>
+ </div>
+ <div style="justify-self: end; position: absolute;">absolute parent</div>
+ </article>
+</div>
diff --git a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-position-try-013.html b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-position-try-013.html
index 0d115c26fc4..2edad12be72 100644
--- a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-position-try-013.html
+++ b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-position-try-013.html
@@ -24,7 +24,7 @@
width: 50px;
height: 50px;
- inset-area: bottom;
+ position-area: bottom;
position-try-fallbacks: flip-block;
position-anchor: --a;
}
diff --git a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-position-try-014.html b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-position-try-014.html
index 3e964e4dbd6..6d1019ee4ae 100644
--- a/tests/wpt/tests/css/css-anchor-position/anchor-scroll-position-try-014.html
+++ b/tests/wpt/tests/css/css-anchor-position/anchor-scroll-position-try-014.html
@@ -26,7 +26,7 @@
width: 50px;
height: 50px;
- inset-area: top;
+ position-area: top;
position-try-fallbacks: flip-block;
position-anchor: --a;
}
diff --git a/tests/wpt/tests/css/css-anchor-position/at-position-try-allowed-declarations.html b/tests/wpt/tests/css/css-anchor-position/at-position-try-allowed-declarations.html
index f6dac753d2b..3d2a70390a4 100644
--- a/tests/wpt/tests/css/css-anchor-position/at-position-try-allowed-declarations.html
+++ b/tests/wpt/tests/css/css-anchor-position/at-position-try-allowed-declarations.html
@@ -44,7 +44,7 @@ test_allowed_declaration('inset-inline-end');
test_allowed_declaration('inset-block');
test_allowed_declaration('inset-inline');
test_allowed_declaration('inset');
-test_allowed_declaration('inset-area', 'span-all');
+test_allowed_declaration('position-area', 'span-all');
// Margin properties are allowed
test_allowed_declaration('margin-top');
diff --git a/tests/wpt/tests/css/css-anchor-position/at-position-try-cssom.html b/tests/wpt/tests/css/css-anchor-position/at-position-try-cssom.html
index 46ca8f73e92..126b9fa81a7 100644
--- a/tests/wpt/tests/css/css-anchor-position/at-position-try-cssom.html
+++ b/tests/wpt/tests/css/css-anchor-position/at-position-try-cssom.html
@@ -125,7 +125,7 @@ let supported_properties = [
'align-self',
'justify-self',
'position-anchor',
- 'inset-area',
+ 'position-area',
];
// A selection of unsupported properties.
diff --git a/tests/wpt/tests/css/css-anchor-position/inset-area-abs-inline-container.html b/tests/wpt/tests/css/css-anchor-position/inset-area-abs-inline-container.html
deleted file mode 100644
index 7bc59356e95..00000000000
--- a/tests/wpt/tests/css/css-anchor-position/inset-area-abs-inline-container.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<title>CSS Anchor Positioning: inset-area positioning with absolute inline container</title>
-<link rel="help" href="https://drafts.csswg.org/css-anchor-position/#inset-area">
-<link rel="match" href="inset-area-inline-container-ref.html">
-<link rel="stylesheet" type="text/css" href="/fonts/ahem.css">
-<style>
- #in-flow {
- font-family: Ahem;
- font-size: 100px;
- color: orange;
- }
- #inline-container {
- position: absolute;
- }
- #anchor {
- position: absolute;
- top: 25px;
- left: 100px;
- width: 200px;
- height: 50px;
- anchor-name: --anchor;
- background-color: cyan;
- }
- .anchored {
- position: absolute;
- align-self: stretch;
- justify-self: stretch;
- position-anchor: --anchor;
- background-color: blue;
- }
- #top-left { inset-area: top left; }
- #top-right { inset-area: top right; }
- #bottom-left { inset-area: bottom left; }
- #bottom-right { inset-area: bottom right; }
-</style>
-<div id="in-flow">
- <br>
- <br>
- &nbsp;&nbsp;<span id="inline-container">XXXX<span id="anchor"></span><div id="top-left" class="anchored"></div><div id="top-right" class="anchored"></div><div id="bottom-left" class="anchored"></div><div id="bottom-right" class="anchored"></div></span>
-</div>
diff --git a/tests/wpt/tests/css/css-anchor-position/inset-area-align-justify-wm-dir.html b/tests/wpt/tests/css/css-anchor-position/inset-area-align-justify-wm-dir.html
deleted file mode 100644
index 3e42913ffc4..00000000000
--- a/tests/wpt/tests/css/css-anchor-position/inset-area-align-justify-wm-dir.html
+++ /dev/null
@@ -1,155 +0,0 @@
-<!DOCTYPE html>
-<title>CSS Anchor Positioning: inset-area positioning - alignment with writing-mode and direction</title>
-<link rel="help" href="https://drafts.csswg.org/css-anchor-position/#inset-area">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<style>
- /* A 300x300 container with a 100x100 centered anchor */
- #container {
- position: relative;
- width: 300px;
- height: 300px;
- }
- #anchor {
- position: absolute;
- top: 100px;
- left: 100px;
- width: 100px;
- height: 100px;
- anchor-name: --anchor;
- }
- #anchored {
- position: absolute;
- width: 10px;
- height: 10px;
- inset: 10px;
- position-anchor: --anchor;
- }
-</style>
-<div id="container">
- <div id="anchor"></div>
- <div id="anchored"></div>
-</div>
-<script>
- function test_inset_area(writing_direction, inset_area, expected_offsets) {
- anchored.style.insetArea = inset_area;
- test(() => {
- assert_equals(anchored.offsetLeft, expected_offsets.left, "Checking offsetLeft");
- assert_equals(anchored.offsetTop, expected_offsets.top, "Checking offsetTop");
- assert_equals(anchored.offsetWidth, expected_offsets.width, "Checking offsetWidth");
- assert_equals(anchored.offsetHeight, expected_offsets.height, "Checking offsetHeight");
- }, "Offsets for: " + inset_area + " with writing-mode / direction: " + writing_direction);
- }
-
- const top_left = {left:80, top:80, width:10, height:10};
- const top_right = {left:210, top:80, width:10, height:10};
- const bottom_left = {left:80, top:210, width:10, height:10};
- const bottom_right = {left:210, top:210, width:10, height:10};
-
- anchored.style.writingMode = "horizontal-tb";
- anchored.style.direction = "ltr";
-
- // Writing-mode and direction on container
- let writing_direction = "containing-block: horizontal-tb / rtl";
- container.style.writingMode = "horizontal-tb";
- container.style.direction = "rtl";
- test_inset_area(writing_direction, "start start", top_right);
- test_inset_area(writing_direction, "self-start self-start", top_left);
- test_inset_area(writing_direction, "x-start y-start", top_right);
- test_inset_area(writing_direction, "x-self-start y-self-start", top_left);
-
- // containing-block: vertical-lr / ltr
- // self: horizontal-tb / ltr
- writing_direction = "containing-block: vertical-lr / ltr";
- container.style.writingMode = "vertical-lr";
- container.style.direction = "ltr";
- test_inset_area(writing_direction, "start start", top_left);
- test_inset_area(writing_direction, "self-start self-start", top_left);
- test_inset_area(writing_direction, "x-start y-start", top_left);
- test_inset_area(writing_direction, "x-self-start y-self-start", top_left);
-
- // containing-block: vertical-lr / rtl
- // self: horizontal-tb / ltr
- writing_direction = "containing-block: vertical-lr / rtl";
- container.style.writingMode = "vertical-lr";
- container.style.direction = "rtl";
- test_inset_area(writing_direction, "start start", bottom_left);
- test_inset_area(writing_direction, "self-start self-start", top_left);
- test_inset_area(writing_direction, "x-start y-start", bottom_left);
- test_inset_area(writing_direction, "x-self-start y-self-start", top_left);
-
- // containing-block: vertical-rl / ltr
- // self: horizontal-tb / ltr
- writing_direction = "containing-block: vertical-rl / ltr";
- container.style.writingMode = "vertical-rl";
- container.style.direction = "ltr";
- test_inset_area(writing_direction, "start start", top_right);
- test_inset_area(writing_direction, "self-start self-start", top_left);
- test_inset_area(writing_direction, "x-start y-start", top_right);
- test_inset_area(writing_direction, "x-self-start y-self-start", top_left);
-
- // containing-block: vertical-rl / rtl
- // self: horizontal-tb / ltr
- writing_direction = "containing-block: vertical-rl / rtl";
- container.style.writingMode = "vertical-rl";
- container.style.direction = "rtl";
- test_inset_area(writing_direction, "start start", bottom_right);
- test_inset_area(writing_direction, "self-start self-start", top_left);
- test_inset_area(writing_direction, "x-start y-start", bottom_right);
- test_inset_area(writing_direction, "x-self-start y-self-start", top_left);
-
- // Writing-mode and direction on self
- container.style.writingMode = "horizontal-tb";
- container.style.direction = "ltr";
-
- // containing-block: horizontal-tb / ltr
- // self: horizontal-tb / rtl
- writing_direction = "self: horizontal-tb / rtl";
- anchored.style.writingMode = "horizontal-tb";
- anchored.style.direction = "rtl";
- test_inset_area(writing_direction, "start start", top_left);
- test_inset_area(writing_direction, "self-start self-start", top_right);
- test_inset_area(writing_direction, "x-start y-start", top_left);
- test_inset_area(writing_direction, "x-self-start y-self-start", top_right);
-
- // containing-block: horizontal-tb / ltr
- // self: vertical-lr / ltr
- writing_direction = "self: vertical-lr / ltr";
- anchored.style.writingMode = "vertical-lr";
- anchored.style.direction = "ltr";
- test_inset_area(writing_direction, "start start", top_left);
- test_inset_area(writing_direction, "self-start self-start", top_left);
- test_inset_area(writing_direction, "x-start y-start", top_left);
- test_inset_area(writing_direction, "x-self-start y-self-start", top_left);
-
- // containing-block: horizontal-tb / ltr
- // self: vertical-lr / rtl
- writing_direction = "self: vertical-lr / rtl";
- anchored.style.writingMode = "vertical-lr";
- anchored.style.direction = "rtl";
- test_inset_area(writing_direction, "start start", top_left);
- test_inset_area(writing_direction, "self-start self-start", bottom_left);
- test_inset_area(writing_direction, "x-start y-start", top_left);
- test_inset_area(writing_direction, "x-self-start y-self-start", bottom_left);
-
- // containing-block: horizontal-tb / ltr
- // self: vertical-rl / ltr
- writing_direction = "self: vertical-rl / ltr";
- anchored.style.writingMode = "vertical-rl";
- anchored.style.direction = "ltr";
- test_inset_area(writing_direction, "start start", top_left);
- test_inset_area(writing_direction, "self-start self-start", top_right);
- test_inset_area(writing_direction, "x-start y-start", top_left);
- test_inset_area(writing_direction, "x-self-start y-self-start", top_right);
-
- // containing-block: horizontal-tb / ltr
- // self: vertical-rl / rtl
- writing_direction = "self: vertical-rl / rtl";
- anchored.style.writingMode = "vertical-rl";
- anchored.style.direction = "rtl";
- test_inset_area(writing_direction, "start start", top_left);
- test_inset_area(writing_direction, "self-start self-start", bottom_right);
- test_inset_area(writing_direction, "x-start y-start", top_left);
- test_inset_area(writing_direction, "x-self-start y-self-start", bottom_right);
-
-</script>
diff --git a/tests/wpt/tests/css/css-anchor-position/inset-area-align-justify.html b/tests/wpt/tests/css/css-anchor-position/inset-area-align-justify.html
deleted file mode 100644
index 7f7f05ccf3a..00000000000
--- a/tests/wpt/tests/css/css-anchor-position/inset-area-align-justify.html
+++ /dev/null
@@ -1,65 +0,0 @@
-<!DOCTYPE html>
-<title>CSS Anchor Positioning: inset-area positioning - alignment</title>
-<link rel="help" href="https://drafts.csswg.org/css-anchor-position/#inset-area">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<style>
- /* A 300x300 container with a 100x100 centered anchor */
- #container {
- position: relative;
- width: 300px;
- height: 300px;
- }
- #anchor {
- position: absolute;
- top: 100px;
- left: 100px;
- width: 100px;
- height: 100px;
- anchor-name: --anchor;
- }
- #anchored {
- position: absolute;
- width: 10px;
- height: 10px;
- inset: 10px;
- position-anchor: --anchor;
- }
-</style>
-<div id="container">
- <div id="anchor"></div>
- <div id="anchored"></div>
-</div>
-<script>
- function test_inset_area(inset_area, expected_offsets) {
- anchored.style.insetArea = inset_area;
-
- test(() => {
- assert_equals(anchored.offsetLeft, expected_offsets.left, "Check expected offsetLeft");
- assert_equals(anchored.offsetTop, expected_offsets.top, "Check expected offsetTop");
- assert_equals(anchored.offsetWidth, expected_offsets.width, "Check expected offsetWidth");
- assert_equals(anchored.offsetHeight, expected_offsets.height, "Check expected offsetHeight");
- }, "Offsets for inset-area: " + inset_area);
- }
-
- // anchor-center in both directions
- test_inset_area("span-all", {left:145, top:145, width:10, height:10});
-
- // Single region spans
- test_inset_area("top left", {left:80, top:80, width:10, height:10});
- test_inset_area("top center", {left:145, top:80, width:10, height:10});
- test_inset_area("top right", {left:210, top:80, width:10, height:10});
- test_inset_area("center left", {left:80, top:145, width:10, height:10});
- test_inset_area("center center", {left:145, top:145, width:10, height:10});
- test_inset_area("center right", {left:210, top:145, width:10, height:10});
- test_inset_area("bottom left", {left:80, top:210, width:10, height:10});
- test_inset_area("bottom center", {left:145, top:210, width:10, height:10});
- test_inset_area("bottom right", {left:210, top:210, width:10, height:10});
-
- // Multi-region spans
- test_inset_area("top span-left", {left:180, top:80, width:10, height:10});
- test_inset_area("top span-right", {left:110, top:80, width:10, height:10});
- test_inset_area("span-top left", {left:80, top:180, width:10, height:10});
- test_inset_area("span-bottom left", {left:80, top:110, width:10, height:10});
-
-</script>
diff --git a/tests/wpt/tests/css/css-anchor-position/inset-area-anchor-outside.html b/tests/wpt/tests/css/css-anchor-position/inset-area-anchor-outside.html
deleted file mode 100644
index ac7e85bafb1..00000000000
--- a/tests/wpt/tests/css/css-anchor-position/inset-area-anchor-outside.html
+++ /dev/null
@@ -1,56 +0,0 @@
-<!DOCTYPE html>
-<title>CSS Anchor Positioning: inset-area positioning - anchor outside containing block</title>
-<link rel="help" href="https://drafts.csswg.org/css-anchor-position/#inset-area">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<style>
- #container {
- position: relative;
- width: 400px;
- height: 400px;
- }
- #anchor {
- position: absolute;
- left: -200px;
- top: 500px;
- width: 100px;
- height: 100px;
- anchor-name: --anchor;
- }
- #anchored {
- position: absolute;
- align-self: stretch;
- justify-self: stretch;
- position-anchor: --anchor;
- }
-</style>
-<div id="container">
- <div id="anchor"></div>
- <div id="anchored"></div>
-</div>
-<script>
- function test_inset_area(inset_area, expected_offsets) {
- anchored.style.insetArea = inset_area;
-
- test(() => {
- assert_equals(anchored.offsetLeft, expected_offsets.left, "Check expected offsetLeft");
- assert_equals(anchored.offsetTop, expected_offsets.top, "Check expected offsetTop");
- assert_equals(anchored.offsetWidth, expected_offsets.width, "Check expected offsetWidth");
- assert_equals(anchored.offsetHeight, expected_offsets.height, "Check expected offsetHeight");
- }, "Offsets for inset-area: " + inset_area);
- }
-
- test_inset_area("span-all", {left:0, top:0, width:400, height:400});
-
- test_inset_area("left span-all", {left:-200, top:0, width:0, height:400});
- test_inset_area("span-left span-all", {left:-100, top:0, width:0, height:400});
- test_inset_area("span-all center", {left:-200, top:0, width:100, height:400});
- test_inset_area("span-right span-all", {left:-200, top:0, width:600, height:400});
- test_inset_area("right span-all", {left:-100, top:0, width:500, height:400});
-
- test_inset_area("top span-all", {left:0, top:0, width:400, height:500});
- test_inset_area("span-top span-all", {left:0, top:0, width:400, height:600});
- test_inset_area("center span-all", {left:0, top:500, width:400, height:100});
- test_inset_area("span-bottom span-all", {left:0, top:500, width:400, height:0});
- test_inset_area("bottom span-all", {left:0, top:600, width:400, height:0});
-</script>
diff --git a/tests/wpt/tests/css/css-anchor-position/inset-area-anchor-partially-outside.html b/tests/wpt/tests/css/css-anchor-position/inset-area-anchor-partially-outside.html
deleted file mode 100644
index 9d7f5b5f6ba..00000000000
--- a/tests/wpt/tests/css/css-anchor-position/inset-area-anchor-partially-outside.html
+++ /dev/null
@@ -1,56 +0,0 @@
-<!DOCTYPE html>
-<title>CSS Anchor Positioning: inset-area positioning - anchor partially outside containing block</title>
-<link rel="help" href="https://drafts.csswg.org/css-anchor-position/#inset-area">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<style>
- #container {
- position: relative;
- width: 400px;
- height: 400px;
- }
- #anchor {
- position: absolute;
- right: -50px;
- top: -50px;
- width: 100px;
- height: 100px;
- anchor-name: --anchor;
- }
- #anchored {
- position: absolute;
- align-self: stretch;
- justify-self: stretch;
- position-anchor: --anchor;
- }
-</style>
-<div id="container">
- <div id="anchor"></div>
- <div id="anchored"></div>
-</div>
-<script>
- function test_inset_area(inset_area, expected_offsets) {
- anchored.style.insetArea = inset_area;
-
- test(() => {
- assert_equals(anchored.offsetLeft, expected_offsets.left, "Check expected offsetLeft");
- assert_equals(anchored.offsetTop, expected_offsets.top, "Check expected offsetTop");
- assert_equals(anchored.offsetWidth, expected_offsets.width, "Check expected offsetWidth");
- assert_equals(anchored.offsetHeight, expected_offsets.height, "Check expected offsetHeight");
- }, "Offsets for inset-area: " + inset_area);
- }
-
- test_inset_area("span-all", {left:0, top:0, width:400, height:400});
-
- test_inset_area("left span-all", {left:0, top:0, width:350, height:400});
- test_inset_area("span-left span-all", {left:0, top:0, width:450, height:400});
- test_inset_area("span-all center", {left:350, top:0, width:100, height:400});
- test_inset_area("span-right span-all", {left:350, top:0, width:50, height:400});
- test_inset_area("right span-all", {left:450, top:0, width:0, height:400});
-
- test_inset_area("top span-all", {left:0, top:-50, width:400, height:0});
- test_inset_area("span-top span-all", {left:0, top:0, width:400, height:50});
- test_inset_area("center span-all", {left:0, top:-50, width:400, height:100});
- test_inset_area("span-bottom span-all", {left:0, top:-50, width:400, height:450});
- test_inset_area("bottom span-all", {left:0, top:50, width:400, height:350});
-</script>
diff --git a/tests/wpt/tests/css/css-anchor-position/inset-area-basic.html b/tests/wpt/tests/css/css-anchor-position/inset-area-basic.html
deleted file mode 100644
index 3ede9dcd925..00000000000
--- a/tests/wpt/tests/css/css-anchor-position/inset-area-basic.html
+++ /dev/null
@@ -1,117 +0,0 @@
-<!DOCTYPE html>
-<title>CSS Anchor Positioning: basic inset-area positioning</title>
-<link rel="help" href="https://drafts.csswg.org/css-anchor-position/#inset-area">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<!-- The grid:
-
- 100 150 150
- +--------+--------+--------+
- | | | |
- 150 | | | |
- | | | |
- +--------+--------+--------+
- | | | |
- 75 | | | |
- | | | |
- +--------+--------+--------+
- | | | |
- 175 | | | |
- | | | |
- +--------+--------+--------+
-
- -->
-<style>
- #container {
- position: absolute;
- width: 400px;
- height: 400px;
- }
- #anchored {
- position: absolute;
- align-self: stretch;
- justify-self: stretch;
- position-anchor: --anchor;
- }
- #anchor {
- margin-top: 150px;
- margin-left: 100px;
- width: 150px;
- height: 75px;
- anchor-name: --anchor;
- }
-</style>
-<div id="container">
- <div id="anchored"></div>
- <div id="anchor"></div>
-</div>
-<script>
- function test_inset_area(inset_area, expected_offsets) {
- anchored.style.insetArea = inset_area;
- test(() => {
- assert_equals(anchored.offsetLeft, expected_offsets.left, "Check expected offsetLeft");
- assert_equals(anchored.offsetTop, expected_offsets.top, "Check expected offsetTop");
- assert_equals(anchored.offsetWidth, expected_offsets.width, "Check expected offsetWidth");
- assert_equals(anchored.offsetHeight, expected_offsets.height, "Check expected offsetHeight");
- }, "Offsets for: " + inset_area);
- }
-
- test_inset_area("none", {left:0, top:0, width:0, height:0});
- test_inset_area("span-all", {left:0, top:0, width:400, height:400});
- test_inset_area("span-all span-all", {left:0, top:0, width:400, height:400});
-
- // Single region spans
- test_inset_area("top left", {left:0, top:0, width:100, height:150});
- test_inset_area("top center", {left:100, top:0, width:150, height:150});
- test_inset_area("top right", {left:250, top:0, width:150, height:150});
- test_inset_area("center left", {left:0, top:150, width:100, height:75});
- test_inset_area("center center", {left:100, top:150, width:150, height:75});
- test_inset_area("center right", {left:250, top:150, width:150, height:75});
- test_inset_area("bottom left", {left:0, top:225, width:100, height:175});
- test_inset_area("bottom center", {left:100, top:225, width:150, height:175});
- test_inset_area("bottom right", {left:250, top:225, width:150, height:175});
-
- test_inset_area("start start", {left:0, top:0, width:100, height:150});
- test_inset_area("start center", {left:100, top:0, width:150, height:150});
- test_inset_area("start end", {left:250, top:0, width:150, height:150});
- test_inset_area("center start", {left:0, top:150, width:100, height:75});
- test_inset_area("center end", {left:250, top:150, width:150, height:75});
- test_inset_area("end start", {left:0, top:225, width:100, height:175});
- test_inset_area("end center", {left:100, top:225, width:150, height:175});
- test_inset_area("end end", {left:250, top:225, width:150, height:175});
-
- test_inset_area("self-start self-start", {left:0, top:0, width:100, height:150});
- test_inset_area("self-start center", {left:100, top:0, width:150, height:150});
- test_inset_area("self-start self-end", {left:250, top:0, width:150, height:150});
- test_inset_area("center self-start", {left:0, top:150, width:100, height:75});
- test_inset_area("center self-end", {left:250, top:150, width:150, height:75});
- test_inset_area("self-end self-start", {left:0, top:225, width:100, height:175});
- test_inset_area("self-end center", {left:100, top:225, width:150, height:175});
- test_inset_area("self-end self-end", {left:250, top:225, width:150, height:175});
-
- test_inset_area("y-start x-start", {left:0, top:0, width:100, height:150});
- test_inset_area("y-start center", {left:100, top:0, width:150, height:150});
- test_inset_area("y-start x-end", {left:250, top:0, width:150, height:150});
- test_inset_area("center x-start", {left:0, top:150, width:100, height:75});
- test_inset_area("center x-end", {left:250, top:150, width:150, height:75});
- test_inset_area("y-end x-start", {left:0, top:225, width:100, height:175});
- test_inset_area("y-end center", {left:100, top:225, width:150, height:175});
- test_inset_area("y-end x-end", {left:250, top:225, width:150, height:175});
-
- test_inset_area("y-self-start x-self-start", {left:0, top:0, width:100, height:150});
- test_inset_area("y-self-start center", {left:100, top:0, width:150, height:150});
- test_inset_area("y-self-start x-self-end", {left:250, top:0, width:150, height:150});
- test_inset_area("center x-self-start", {left:0, top:150, width:100, height:75});
- test_inset_area("center x-self-end", {left:250, top:150, width:150, height:75});
- test_inset_area("y-self-end x-self-start", {left:0, top:225, width:100, height:175});
- test_inset_area("y-self-end center", {left:100, top:225, width:150, height:175});
- test_inset_area("y-self-end x-self-end", {left:250, top:225, width:150, height:175});
-
- // Multi-region spans
- test_inset_area("span-y-self-start span-x-self-end", {left:100, top:0, width:300, height:225});
- test_inset_area("span-bottom span-all", {left:0, top:150, width:400, height:250});
-
- // No implicit anchor means the inset-area should not apply.
- anchored.style.positionAnchor = "auto";
- test_inset_area("span-all top", {left:0, top:0, width:0, height:0});
-</script>
diff --git a/tests/wpt/tests/css/css-anchor-position/inset-area-computed-insets.html b/tests/wpt/tests/css/css-anchor-position/inset-area-computed-insets.html
deleted file mode 100644
index b06714b8a78..00000000000
--- a/tests/wpt/tests/css/css-anchor-position/inset-area-computed-insets.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE html>
-<title>CSS Anchor Positioning: inset-area should not affect computed inset values</title>
-<link rel="help" href="https://drafts.csswg.org/css-anchor-position/#inset-area">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/css/css-typed-om/resources/testhelper.js"></script>
-<style>
- #abs {
- position: absolute;
- inset-area: span-all;
- }
-</style>
-<div id="abs"></div>
-<script>
- test(() => {
- let style = abs.computedStyleMap();
- assert_equals(style.get("inset-area").toString(), "span-all", "inset-area is supported");
- assert_style_value_equals(style.get("left"), new CSSKeywordValue("auto"));
- assert_style_value_equals(style.get("right"), new CSSKeywordValue("auto"));
- assert_style_value_equals(style.get("top"), new CSSKeywordValue("auto"));
- assert_style_value_equals(style.get("bottom"), new CSSKeywordValue("auto"));
- }, "inset-area does not affect insets at computed value time");
-</script>
diff --git a/tests/wpt/tests/css/css-anchor-position/inset-area-computed.html b/tests/wpt/tests/css/css-anchor-position/inset-area-computed.html
deleted file mode 100644
index a49ff2a4522..00000000000
--- a/tests/wpt/tests/css/css-anchor-position/inset-area-computed.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!DOCTYPE html>
-<title>CSS Anchor Positioning: inset-area getComputedStyle()</title>
-<link rel="help" href="https://drafts.csswg.org/css-anchor-position/#inset-area">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/css/support/computed-testcommon.js"></script>
-<script src="/css/support/inheritance-testcommon.js"></script>
-<div id="container">
- <div id="target"></div>
-</div>
-<script>
- test_computed_value("inset-area", "none");
- test_computed_value("inset-area", "span-all");
- test_computed_value("inset-area", "x-start");
- test_computed_value("inset-area", "center");
- test_computed_value("inset-area", "span-all span-all", "span-all");
- test_computed_value("inset-area", "center center", "center");
- test_computed_value("inset-area", "top center", "center top");
- test_computed_value("inset-area", "span-bottom span-all", "span-bottom");
-
- assert_not_inherited("inset-area", "none", "span-all");
-</script>
diff --git a/tests/wpt/tests/css/css-anchor-position/inset-area-in-grid.html b/tests/wpt/tests/css/css-anchor-position/inset-area-in-grid.html
deleted file mode 100644
index bbf92e8d1c6..00000000000
--- a/tests/wpt/tests/css/css-anchor-position/inset-area-in-grid.html
+++ /dev/null
@@ -1,106 +0,0 @@
-<!DOCTYPE html>
-<title>CSS Anchor Positioning: inset-area positioning inside grid</title>
-<link rel="help" href="https://drafts.csswg.org/css-anchor-position/#inset-area">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<!--
- Grid:
-
- 100 100 100 100
- +--------+--------+--------+--------+
- | | | | |
- 100 | | | | |
- | | | | |
- +--------+--------+--------+--------+
- | | |XXXXXXXX|XXXXXXXX|
- 100 | | |XXXXXXXX|XXXXXXXX|
- | | |XXXXXXXX|XXXXXXXX|
- +--------+--------+--------+--------+
- | | |XXXXXXXX|XXXXXXXX|
- 100 | | |XXXXXXXX|XXXXXXXX|
- | | |XXXXXXXX|XXXXXXXX|
- +--------+--------+--------+--------+
- | | | | |
- 100 | | | | |
- | | | | |
- +--------+--------+--------+--------+
-
-
- Inset regions:
-
- 100 150 150
- +--------+-------------+------------+
- | | | |
- | | | |
- 150 | | | |
- | | | |
- | | | |
- +--------+-------------+------------+
- | | | |
- 75 | | | |
- | | | |
- +--------+-------------+------------+
- | | | |
- | | | |
- 175 | | | |
- | | | |
- | | | |
- +--------+-------------+------------+
-
- -->
-
-<style>
- #container {
- display: grid;
- grid: 1fr 1fr 1fr 1fr / 1fr 1fr 1fr 1fr;
- position: relative;
- width: 400px;
- height: 400px;
- }
-
- #anchor {
- position: absolute;
- left: 100px;
- top: 150px;
- width: 150px;
- height: 75px;
- anchor-name: --anchor;
- }
-
- #anchored {
- grid-row-start: 2;
- grid-row-end: span 2;
- grid-column-start: 3;
- grid-column-end: auto;
- position: absolute;
- align-self: stretch;
- justify-self: stretch;
- position-anchor: --anchor;
- }
-</style>
-
-<div id="container">
- <div id="anchor"></div>
- <div id="anchored"></div>
-</div>
-<script>
- function test_inset_area(inset_area, insets, expected_offsets) {
- anchored.style.insetArea = inset_area;
- for (const [prop, value] of Object.entries(insets)) {
- anchored.style[prop] = value;
- }
-
- test(() => {
- assert_equals(anchored.offsetLeft, expected_offsets.left, "Check expected offsetLeft");
- assert_equals(anchored.offsetTop, expected_offsets.top, "Check expected offsetTop");
- assert_equals(anchored.offsetWidth, expected_offsets.width, "Check expected offsetWidth");
- assert_equals(anchored.offsetHeight, expected_offsets.height, "Check expected offsetHeight");
- }, "Offsets for inset-area: " + inset_area + " and insets: " + JSON.stringify(insets));
- }
-
- test_inset_area("span-bottom span-left", {left:"auto", right:"auto", top:"auto", bottom:"auto"},
- {left:200, top:150, width:50, height:150});
-
- test_inset_area("span-bottom span-left", {left:"10px", right:"10px", top:"10px", bottom:"10px"},
- {left:210, top:160, width:30, height:130});
-</script>
diff --git a/tests/wpt/tests/css/css-anchor-position/inset-area-in-position-try.html b/tests/wpt/tests/css/css-anchor-position/inset-area-in-position-try.html
deleted file mode 100644
index 3affc1b30b7..00000000000
--- a/tests/wpt/tests/css/css-anchor-position/inset-area-in-position-try.html
+++ /dev/null
@@ -1,188 +0,0 @@
-<!DOCTYPE html>
-<title>CSS Anchor Positioning: inset-area in @position-try</title>
-<link rel="help" href='https://drafts.csswg.org/css-anchor-position-1/#position-try-fallbacks'>
-<script src='/resources/testharness.js'></script>
-<script src='/resources/testharnessreport.js'></script>
-<style>
- #cb {
- position: relative;
- width: 200px;
- height: 200px;
- border: 1px solid black;
- }
- #anchor {
- position: absolute;
- left: 100px;
- top: 100px;
- width: 50px;
- height: 50px;
- background-color: tomato;
- anchor-name: --a;
- }
- #target {
- left: 200px; /* force fallback */
- }
- #target, #ref {
- position: absolute;
- width: 40px;
- height: 40px;
- background-color: skyblue;
- inset-area: bottom right;
- position-anchor: --a;
- }
- #ref {
- background-color: seagreen;
- }
-</style>
-<style id=style>
-</style>
-<div id=cb>
- <div id=anchor></div>
- <div id=target></div>
- <div id=ref></div>
-</div>
-<script>
-
-// Test that inside-area, when used inside @position-try, works the same
-// as when it's specified in the base style.
-function test_inset_area_ref(inset_area) {
- test((t) => {
- t.add_cleanup(() => {
- style.textContent = '';
- });
- style.textContent = `
- @position-try --pt {
- inset: unset; /* Undo force fallback */
- inset-area: ${inset_area};
- }
- #target {
- position-try-fallbacks: --pt;
- }
- #ref {
- inset-area: ${inset_area};
- }
- `;
- assert_true(CSS.supports('inset-area', 'top left'));
- assert_true(CSS.supports('position-try-fallbacks', '--x'));
- assert_equals(target.offsetLeft, ref.offsetLeft, 'offsetLeft');
- assert_equals(target.offsetTop, ref.offsetTop, 'offsetTop');
- }, `${inset_area}`);
-}
-
-test_inset_area_ref('none');
-test_inset_area_ref('span-all');
-test_inset_area_ref('span-all span-all');
-test_inset_area_ref('top left');
-test_inset_area_ref('top center');
-test_inset_area_ref('top right');
-test_inset_area_ref('center left');
-test_inset_area_ref('center center');
-test_inset_area_ref('center right');
-test_inset_area_ref('bottom left');
-test_inset_area_ref('bottom center');
-test_inset_area_ref('bottom right');
-test_inset_area_ref('start start');
-test_inset_area_ref('start center');
-test_inset_area_ref('start end');
-test_inset_area_ref('center start');
-test_inset_area_ref('center end');
-test_inset_area_ref('end start');
-test_inset_area_ref('end center');
-test_inset_area_ref('end end');
-test_inset_area_ref('self-start self-start');
-test_inset_area_ref('self-start center');
-test_inset_area_ref('self-start self-end');
-test_inset_area_ref('center self-start');
-test_inset_area_ref('center self-end');
-test_inset_area_ref('self-end self-start');
-test_inset_area_ref('self-end center');
-test_inset_area_ref('self-end self-end');
-test_inset_area_ref('y-start x-start');
-test_inset_area_ref('y-start center');
-test_inset_area_ref('y-start x-end');
-test_inset_area_ref('center x-start');
-test_inset_area_ref('center x-end');
-test_inset_area_ref('y-end x-start');
-test_inset_area_ref('y-end center');
-test_inset_area_ref('y-end x-end');
-test_inset_area_ref('y-self-start x-self-start');
-test_inset_area_ref('y-self-start center');
-test_inset_area_ref('y-self-start x-self-end');
-test_inset_area_ref('center x-self-start');
-test_inset_area_ref('center x-self-end');
-test_inset_area_ref('y-self-end x-self-start');
-test_inset_area_ref('y-self-end center');
-test_inset_area_ref('y-self-end x-self-end');
-test_inset_area_ref('span-y-self-start span-x-self-end');
-test_inset_area_ref('span-bottom span-all');
-
-</script>
-
-<style>
- @position-try --top {
- inset: unset; /* Undo force fallback */
- inset-area: top;
- }
- @position-try --right {
- inset: unset; /* Undo force fallback */
- inset-area: right;
- }
- @position-try --bottom {
- inset: unset; /* Undo force fallback */
- inset-area: bottom;
- }
- @position-try --left {
- inset: unset; /* Undo force fallback */
- inset-area: left;
- }
-</style>
-<script>
-
-// Test that an element with the specified position-try-fallbacks is placed
-// at the same position as a reference element with inset-area:`expected`.
-// This test uses #target/#ref size of 60x60px, which causes overflow if
-// if we attempt the --right and --bottom positions.
-function test_inset_area_placement(position_try_fallbacks, expected) {
- test((t) => {
- style.textContent = `
- #target, #ref {
- width: 60px;
- height: 60px;
- }
- #target {
- position-try-fallbacks: ${position_try_fallbacks};
- }
- #ref {
- inset-area: ${expected};
- }
- `;
- assert_true(CSS.supports('inset-area', 'top left'));
- assert_true(CSS.supports('position-try-fallbacks', '--x'));
- assert_equals(target.offsetLeft, ref.offsetLeft, 'offsetLeft');
- assert_equals(target.offsetTop, ref.offsetTop, 'offsetTop');
- }, `Placement: ${position_try_fallbacks}`);
-}
-
-test_inset_area_placement('--top', 'top');
-test_inset_area_placement('--left', 'left');
-
-// No space to to the right/bottom:
-test_inset_area_placement('--right, --top', 'top');
-test_inset_area_placement('--bottom, --top', 'top');
-test_inset_area_placement('--bottom, --right, --top', 'top');
-test_inset_area_placement('--bottom, --right, --left, --top', 'left');
-test_inset_area_placement('--bottom, --left, --top, --right', 'left');
-
-// Flipping:
-test_inset_area_placement('--right flip-inline', 'left');
-test_inset_area_placement('--bottom flip-block', 'top');
-test_inset_area_placement('--left flip-start', 'top');
-
-// left + flip-inline => right (no space).
-test_inset_area_placement('--left flip-inline, --top', 'top');
-// top + flip-block => bottom (no space).
-test_inset_area_placement('--top flip-block, --left', 'left');
-// left + flip-start flip-block => bottom (no space).
-test_inset_area_placement('--left flip-start flip-block, --left', 'left');
-
-</script>
diff --git a/tests/wpt/tests/css/css-anchor-position/inset-area-inline-container.html b/tests/wpt/tests/css/css-anchor-position/inset-area-inline-container.html
deleted file mode 100644
index b25a928b1fe..00000000000
--- a/tests/wpt/tests/css/css-anchor-position/inset-area-inline-container.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<title>CSS Anchor Positioning: inset-area positioning with inline container</title>
-<link rel="help" href="https://drafts.csswg.org/css-anchor-position/#inset-area">
-<link rel="match" href="inset-area-inline-container-ref.html">
-<link rel="stylesheet" type="text/css" href="/fonts/ahem.css">
-<style>
- #in-flow {
- font-family: Ahem;
- font-size: 100px;
- color: orange;
- }
- #inline-container {
- position: relative;
- }
- #anchor {
- position: absolute;
- top: 25px;
- left: 100px;
- width: 200px;
- height: 50px;
- anchor-name: --anchor;
- background-color: cyan;
- }
- .anchored {
- position: absolute;
- align-self: stretch;
- justify-self: stretch;
- position-anchor: --anchor;
- background-color: blue;
- }
- #top-left { inset-area: top left; }
- #top-right { inset-area: top right; }
- #bottom-left { inset-area: bottom left; }
- #bottom-right { inset-area: bottom right; }
-</style>
-<div id="in-flow">
- <br>
- <br>
- &nbsp;&nbsp;<span id="inline-container">XXXX<span id="anchor"></span><div id="top-left" class="anchored"></div><div id="top-right" class="anchored"></div><div id="bottom-left" class="anchored"></div><div id="bottom-right" class="anchored"></div></span>
-</div>
diff --git a/tests/wpt/tests/css/css-anchor-position/inset-area-interpolation.html b/tests/wpt/tests/css/css-anchor-position/inset-area-interpolation.html
deleted file mode 100644
index b09b3913531..00000000000
--- a/tests/wpt/tests/css/css-anchor-position/inset-area-interpolation.html
+++ /dev/null
@@ -1,14 +0,0 @@
-<!DOCTYPE html>
-<title>CSS Anchor Positioning: inset-area interpolation</title>
-<link rel="help" href="https://drafts.csswg.org/css-anchor-position/#inset-area">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/css/support/interpolation-testcommon.js"></script>
-<body>
-<script>
- test_no_interpolation({
- property: "inset-area",
- from: "none",
- to: "span-all left"
- });
-</script>
diff --git a/tests/wpt/tests/css/css-anchor-position/inset-area-parsing.html b/tests/wpt/tests/css/css-anchor-position/inset-area-parsing.html
deleted file mode 100644
index 7c7fc824917..00000000000
--- a/tests/wpt/tests/css/css-anchor-position/inset-area-parsing.html
+++ /dev/null
@@ -1,162 +0,0 @@
-<!DOCTYPE html>
-<title>CSS Anchor Positioning: inset-area parsing</title>
-<link rel="help" href="https://drafts.csswg.org/css-anchor-position/#inset-area">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/css/support/parsing-testcommon.js"></script>
-<body>
-<script>
- function test_valid_single_inset_area_values(valid_keywords) {
- for (const keyword of valid_keywords) {
- test_valid_value("inset-area", keyword);
- }
- };
-
- function test_valid_inset_area_value_pairs(valid_keywords1,
- valid_keywords2,
- flip_order) {
- for (const keyword1 of valid_keywords1) {
- for (const keyword2 of valid_keywords2) {
- if (keyword1 === keyword2) {
- test_valid_value("inset-area", keyword1 + " " + keyword2, keyword1);
- } else {
- test_valid_value("inset-area", keyword1 + " " + keyword2,
- flip_order ? keyword2 + " " + keyword1 : keyword1 + " " + keyword2);
- }
- }
- }
- };
-
- function test_valid_inset_area_value_pairs_with_span_all_center(
- valid_keywords, flip_order) {
- for (const keyword of valid_keywords) {
- test_valid_value("inset-area", keyword + " center",
- flip_order ? "center " + keyword : keyword + " center");
- test_valid_value("inset-area", "center " + keyword,
- flip_order ? "center " + keyword : keyword + " center");
- test_valid_value("inset-area", keyword + " span-all", keyword);
- test_valid_value("inset-area", "span-all " + keyword, keyword);
- }
- };
-
- function test_valid_inset_area_value_start_end_pairs_with_span_all_center(
- valid_keywords) {
- for (const keyword of valid_keywords) {
- test_valid_value("inset-area", keyword + " center");
- test_valid_value("inset-area", "center " + keyword);
- test_valid_value("inset-area", keyword + " span-all");
- test_valid_value("inset-area", "span-all " + keyword);
- }
- }
-
- function test_invalid_inset_area_value_pairs(valid_keywords1,
- valid_keywords2) {
- for (const keyword1 of valid_keywords1) {
- for (const keyword2 of valid_keywords2) {
- test_invalid_value("inset-area", keyword1 + " " + keyword2);
- test_invalid_value("inset-area", keyword2 + " " + keyword1);
- }
- }
- };
-
- function test_invalid_inset_area_value_equal_pairs(valid_keywords) {
- for (const keyword of valid_keywords) {
- test_invalid_value("inset-area", keyword + " " + keyword);
- }
- };
-
- const horizontal = [ "left", "right", "span-left", "span-right", "x-start",
- "x-end", "span-x-start", "span-x-end", "x-self-start",
- "x-self-end", "span-x-self-start", "span-x-self-end" ];
- const vertical = [ "top", "bottom", "span-top", "span-bottom", "y-start",
- "y-end", "span-y-start", "span-y-end", "y-self-start",
- "y-self-end", "span-y-self-start", "span-y-self-end" ];
- const inline = [ "inline-start", "inline-end", "span-inline-start",
- "span-inline-end" ];
- const block = [ "block-start", "block-end", "span-block-start",
- "span-block-end" ];
- const self_inline = [ "self-inline-start", "self-inline-end",
- "span-self-inline-start", "span-self-inline-end" ];
- const self_block = [ "self-block-start", "self-block-end",
- "span-self-block-start", "span-self-block-end" ];
- const start_end = [ "start", "end", "span-start", "span-end" ];
- const self_start_end = [ "self-start", "self-end", "span-self-start",
- "span-self-end" ];
-
- // Test initial value 'none'
- test_valid_value("inset-area", "none");
- test_invalid_value("inset-area", "none none");
- test_invalid_value("inset-area", "start none");
- test_invalid_value("inset-area", "none start");
- test_invalid_value("inset-area", "top left top");
-
- // Test keywords allowed in all axes
- test_valid_value("inset-area", "center");
- test_valid_value("inset-area", "center center", "center")
- test_valid_value("inset-area", "span-all");
- test_valid_value("inset-area", "span-all span-all", "span-all");
- test_valid_value("inset-area", "center span-all");
- test_valid_value("inset-area", "span-all center");
-
- test_valid_single_inset_area_values(horizontal);
- test_valid_single_inset_area_values(vertical);
- test_valid_single_inset_area_values(inline);
- test_valid_single_inset_area_values(block);
- test_valid_single_inset_area_values(start_end);
- test_valid_single_inset_area_values(self_start_end);
-
- // Used if the sets of valid keywords are serialized in a different order than
- // the argument order
- const flip_order = true;
-
- // Test all valid combinations in both orders
- test_valid_inset_area_value_pairs(horizontal, vertical);
- test_valid_inset_area_value_pairs(vertical, horizontal, flip_order);
- test_valid_inset_area_value_pairs(block, inline);
- test_valid_inset_area_value_pairs(inline, block, flip_order);
- test_valid_inset_area_value_pairs(self_block, self_inline);
- test_valid_inset_area_value_pairs(self_inline, self_block, flip_order);
- test_valid_inset_area_value_pairs(start_end, start_end);
- test_valid_inset_area_value_pairs(self_start_end, self_start_end);
-
- // Test all valid combinations with 'span-all' and 'center' in both orders
- test_valid_inset_area_value_pairs_with_span_all_center(horizontal);
- test_valid_inset_area_value_pairs_with_span_all_center(vertical, flip_order);
- test_valid_inset_area_value_pairs_with_span_all_center(block);
- test_valid_inset_area_value_pairs_with_span_all_center(inline, flip_order);
- test_valid_inset_area_value_pairs_with_span_all_center(self_block);
- test_valid_inset_area_value_pairs_with_span_all_center(self_inline, flip_order);
- test_valid_inset_area_value_start_end_pairs_with_span_all_center(start_end);
- test_valid_inset_area_value_start_end_pairs_with_span_all_center(self_start_end);
-
- // Test all invalid combinations with incompatible axes in both orders
- test_invalid_inset_area_value_pairs(horizontal, inline);
- test_invalid_inset_area_value_pairs(horizontal, block);
- test_invalid_inset_area_value_pairs(horizontal, self_inline);
- test_invalid_inset_area_value_pairs(horizontal, self_block);
- test_invalid_inset_area_value_pairs(horizontal, start_end);
- test_invalid_inset_area_value_pairs(horizontal, self_start_end);
- test_invalid_inset_area_value_pairs(vertical, inline);
- test_invalid_inset_area_value_pairs(vertical, block);
- test_invalid_inset_area_value_pairs(vertical, self_inline);
- test_invalid_inset_area_value_pairs(vertical, self_block);
- test_invalid_inset_area_value_pairs(vertical, start_end);
- test_invalid_inset_area_value_pairs(vertical, self_start_end);
- test_invalid_inset_area_value_pairs(inline, self_inline);
- test_invalid_inset_area_value_pairs(inline, self_block);
- test_invalid_inset_area_value_pairs(inline, start_end);
- test_invalid_inset_area_value_pairs(inline, self_start_end);
- test_invalid_inset_area_value_pairs(block, self_inline);
- test_invalid_inset_area_value_pairs(block, self_block);
- test_invalid_inset_area_value_pairs(block, start_end);
- test_invalid_inset_area_value_pairs(block, self_start_end);
- test_invalid_inset_area_value_pairs(start_end, self_start_end);
-
- // Test all invalid combinations of same axis
- test_invalid_inset_area_value_equal_pairs(horizontal);
- test_invalid_inset_area_value_equal_pairs(vertical);
- test_invalid_inset_area_value_equal_pairs(inline);
- test_invalid_inset_area_value_equal_pairs(block);
- test_invalid_inset_area_value_equal_pairs(self_inline);
- test_invalid_inset_area_value_equal_pairs(self_block);
-</script>
diff --git a/tests/wpt/tests/css/css-anchor-position/inset-area-scroll-adjust.html b/tests/wpt/tests/css/css-anchor-position/inset-area-scroll-adjust.html
deleted file mode 100644
index 0d3cef4fc96..00000000000
--- a/tests/wpt/tests/css/css-anchor-position/inset-area-scroll-adjust.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE html>
-<title>CSS Anchor Positioning: inset-area anchored against scrolling anchor</title>
-<link rel="help" href="https://drafts.csswg.org/css-anchor-position/#inset-area">
-<link rel="match" href="inset-area-scroll-adjust-ref.html">
-<style>
- #scroller {
- width: 400px;
- height: 200px;
- overflow: auto;
- }
- #anchor {
- background: green;
- width: 200px;
- height: 100px;
- }
- #anchored {
- inset-area: bottom;
- margin: 0;
- padding: 0;
- border: none;
- background: green;
- width: 200px;
- height: 100px;
- }
- .filler { height: 200px; }
-</style>
-<p>You should see a green square below</p>
-<div id="scroller">
- <div class="filler"></div>
- <div id="anchor" popovertarget="anchored"></div>
- <div id="anchored" anchor="anchor" popover></div>
- <div class="filler"></div>
- <div class="filler"></div>
-</div>
-<script>
- anchored.showPopover();
- scroller.scrollTop = 200;
-</script>
diff --git a/tests/wpt/tests/css/css-anchor-position/inset-area-value.html b/tests/wpt/tests/css/css-anchor-position/inset-area-value.html
deleted file mode 100644
index 27c5882fc6e..00000000000
--- a/tests/wpt/tests/css/css-anchor-position/inset-area-value.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<!DOCTYPE html>
-<title>CSS Anchor Positioning: <'inset-area'> value</title>
-<link rel="help" href="https://drafts.csswg.org/css-anchor-position-1/#position-try-fallbacks">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<style>
- #cb {
- position: relative;
- width: 200px;
- height: 200px;
- border: 1px solid black;
- }
- #anchor {
- position: absolute;
- left: 100px;
- top: 100px;
- width: 80px;
- height: 80px;
- background-color: tomato;
- anchor-name: --a;
- }
- #target, #ref {
- position: absolute;
- width: 40px;
- height: 40px;
- background-color: skyblue;
- inset-area: bottom right;
- position-anchor: --a;
- }
- #ref {
- background-color: seagreen;
- }
-</style>
-<style id=style>
-</style>
-<div id=cb>
- <div id=anchor></div>
- <div id=target></div>
- <div id=ref></div>
-</div>
-<script>
-
-// Test that a given <'inset-area'> produces the same result as a reference
-// element that is styled with an inset-area declaration directly.
-function test_inset_area_fn(inset_area) {
- test((t) => {
- t.add_cleanup(() => {
- style.textContent = '';
- });
- style.textContent = `
- #target {
- position-try-fallbacks: ${inset_area};
- }
- #ref {
- inset-area: ${inset_area};
- }
- `;
- assert_equals(target.offsetLeft, ref.offsetLeft, 'offsetLeft');
- assert_equals(target.offsetTop, ref.offsetTop, 'offsetTop');
- }, `${inset_area}`);
-}
-
-test_inset_area_fn('top left');
-test_inset_area_fn('span-top left');
-test_inset_area_fn('top span-left');
-test_inset_area_fn('top center');
-test_inset_area_fn('left center');
-test_inset_area_fn('start center');
-test_inset_area_fn('center start');
-
-</script>
diff --git a/tests/wpt/tests/css/css-anchor-position/inset-area-with-insets.html b/tests/wpt/tests/css/css-anchor-position/inset-area-with-insets.html
deleted file mode 100644
index f6a4cd36652..00000000000
--- a/tests/wpt/tests/css/css-anchor-position/inset-area-with-insets.html
+++ /dev/null
@@ -1,79 +0,0 @@
-<!DOCTYPE html>
-<title>CSS Anchor Positioning: inset-area positioning with additional insets</title>
-<link rel="help" href="https://drafts.csswg.org/css-anchor-position/#inset-area">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<!-- The grid:
-
- 100 150 150
- +--------+--------+--------+
- | | | |
- 150 | | | |
- | | | |
- +--------+--------+--------+
- | | | |
- 75 | | | |
- | | | |
- +--------+--------+--------+
- | | | |
- 175 | | | |
- | | | |
- +--------+--------+--------+
-
- -->
-<style>
- #container {
- position: absolute;
- width: 400px;
- height: 400px;
- }
- #anchored {
- position: absolute;
- align-self: stretch;
- justify-self: stretch;
- position-anchor: --anchor;
- }
- #anchor {
- margin-top: 150px;
- margin-left: 100px;
- width: 150px;
- height: 75px;
- anchor-name: --anchor;
- }
-</style>
-<div id="container">
- <div id="anchored"></div>
- <div id="anchor"></div>
-</div>
-<script>
- function test_inset_area(inset_area, insets, expected_offsets) {
- anchored.style.insetArea = inset_area;
- for (const [prop, value] of Object.entries(insets)) {
- anchored.style[prop] = value;
- }
-
- test(() => {
- assert_equals(anchored.offsetLeft, expected_offsets.left, "Check expected offsetLeft");
- assert_equals(anchored.offsetTop, expected_offsets.top, "Check expected offsetTop");
- assert_equals(anchored.offsetWidth, expected_offsets.width, "Check expected offsetWidth");
- assert_equals(anchored.offsetHeight, expected_offsets.height, "Check expected offsetHeight");
- }, "Offsets for inset-area: " + inset_area + " and insets: " + JSON.stringify(insets));
- }
-
- test_inset_area("span-all", {top:"5px", bottom:"5px", left:"5px", right:"5px"},
- {left:5, top:5, width:390, height:390});
-
- test_inset_area("center center", {top:"10px", bottom:"40px", left:"5px", right:"15px"},
- {left:105, top:160, width:130, height:25});
-
- test_inset_area("left bottom", {top:"10px", bottom:"40px", left:"5px", right:"15px"},
- {left:5, top:235, width:80, height:125});
-
- test_inset_area("span-right center", {top:"20%", bottom:"auto", left:"auto", right:"25%"},
- {left:100, top:165, width:225, height:60});
-
- // No implicit anchor means the inset-area should not apply, but the insets still should.
- anchored.style.positionAnchor = "auto";
- test_inset_area("bottom right", {left:"50px", right:"100px", top:"30px" , bottom:"10px"},
- {left:50, top:30, width:250, height:360});
-</script>
diff --git a/tests/wpt/tests/css/css-anchor-position/inset-area-wm-dir.html b/tests/wpt/tests/css/css-anchor-position/inset-area-wm-dir.html
deleted file mode 100644
index 7e740b4aceb..00000000000
--- a/tests/wpt/tests/css/css-anchor-position/inset-area-wm-dir.html
+++ /dev/null
@@ -1,176 +0,0 @@
-<!DOCTYPE html>
-<title>CSS Anchor Positioning: inset-area with writing-mode and direction</title>
-<link rel="help" href="https://drafts.csswg.org/css-anchor-position/#inset-area">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<!-- The grid:
-
- 100 150 150
- +--------+--------+--------+
- | | | |
- 150 | | | |
- | | | |
- +--------+--------+--------+
- | | | |
- 75 | | | |
- | | | |
- +--------+--------+--------+
- | | | |
- 175 | | | |
- | | | |
- +--------+--------+--------+
-
- -->
-<style>
- #container {
- position: absolute;
- width: 400px;
- height: 400px;
- }
- #anchored {
- position: absolute;
- align-self: stretch;
- justify-self: stretch;
- position-anchor: --anchor;
- }
- #anchor {
- margin-top: 150px;
- margin-bottom: 175px;
- margin-left: 100px;
- margin-right: 150px;
- width: 150px;
- height: 75px;
- anchor-name: --anchor;
- }
-</style>
-<div id="container">
- <div id="anchored"></div>
- <div id="anchor"></div>
-</div>
-<script>
- function test_inset_area(writing_direction, inset_area, expected_offsets) {
- anchored.style.insetArea = inset_area;
- test(() => {
- assert_equals(anchored.offsetLeft, expected_offsets.left, "Checking offsetLeft");
- assert_equals(anchored.offsetTop, expected_offsets.top, "Checking offsetTop");
- assert_equals(anchored.offsetWidth, expected_offsets.width, "Checking offsetWidth");
- assert_equals(anchored.offsetHeight, expected_offsets.height, "Checking offsetHeight");
- }, "Offsets for: " + inset_area + " with writing-mode / direction: " + writing_direction);
- }
-
- const top_left = {left:0, top:0, width:100, height:150};
- const top_right = {left:250, top:0, width:150, height:150};
- const bottom_left = {left:0, top:225, width:100, height:175};
- const bottom_right = {left:250, top:225, width:150, height:175};
-
- anchored.style.writingMode = "horizontal-tb";
- anchored.style.direction = "ltr";
-
- // Writing-mode and direction on container
- let writing_direction = "containing-block: horizontal-tb / rtl";
- container.style.writingMode = "horizontal-tb";
- container.style.direction = "rtl";
- test_inset_area(writing_direction, "start start", top_right);
- test_inset_area(writing_direction, "self-start self-start", top_left);
- test_inset_area(writing_direction, "x-start y-start", top_right);
- test_inset_area(writing_direction, "x-self-start y-self-start", top_left);
- test_inset_area(writing_direction, "inline-start block-end", bottom_right);
- test_inset_area(writing_direction, "self-inline-start self-block-end", bottom_left);
-
- // containing-block: vertical-lr / ltr
- // self: horizontal-tb / ltr
- writing_direction = "containing-block: vertical-lr / ltr";
- container.style.writingMode = "vertical-lr";
- container.style.direction = "ltr";
- test_inset_area(writing_direction, "start start", top_left);
- test_inset_area(writing_direction, "self-start self-start", top_left);
- test_inset_area(writing_direction, "x-start y-start", top_left);
- test_inset_area(writing_direction, "x-self-start y-self-start", top_left);
- test_inset_area(writing_direction, "inline-start block-end", top_right);
- test_inset_area(writing_direction, "self-inline-start self-block-end", bottom_left);
-
- // containing-block: vertical-lr / rtl
- // self: horizontal-tb / ltr
- writing_direction = "containing-block: vertical-lr / rtl";
- container.style.writingMode = "vertical-lr";
- container.style.direction = "rtl";
- test_inset_area(writing_direction, "start start", bottom_left);
- test_inset_area(writing_direction, "self-start self-start", top_left);
- test_inset_area(writing_direction, "x-start y-start", bottom_left);
- test_inset_area(writing_direction, "x-self-start y-self-start", top_left);
-
- // containing-block: vertical-rl / ltr
- // self: horizontal-tb / ltr
- writing_direction = "containing-block: vertical-rl / ltr";
- container.style.writingMode = "vertical-rl";
- container.style.direction = "ltr";
- test_inset_area(writing_direction, "start start", top_right);
- test_inset_area(writing_direction, "self-start self-start", top_left);
- test_inset_area(writing_direction, "x-start y-start", top_right);
- test_inset_area(writing_direction, "x-self-start y-self-start", top_left);
-
- // containing-block: vertical-rl / rtl
- // self: horizontal-tb / ltr
- writing_direction = "containing-block: vertical-rl / rtl";
- container.style.writingMode = "vertical-rl";
- container.style.direction = "rtl";
- test_inset_area(writing_direction, "start start", bottom_right);
- test_inset_area(writing_direction, "self-start self-start", top_left);
- test_inset_area(writing_direction, "x-start y-start", bottom_right);
- test_inset_area(writing_direction, "x-self-start y-self-start", top_left);
-
- // Writing-mode and direction on self
- container.style.writingMode = "horizontal-tb";
- container.style.direction = "ltr";
-
- // containing-block: horizontal-tb / ltr
- // self: horizontal-tb / rtl
- writing_direction = "self: horizontal-tb / rtl";
- anchored.style.writingMode = "horizontal-tb";
- anchored.style.direction = "rtl";
- test_inset_area(writing_direction, "start start", top_left);
- test_inset_area(writing_direction, "self-start self-start", top_right);
- test_inset_area(writing_direction, "x-start y-start", top_left);
- test_inset_area(writing_direction, "x-self-start y-self-start", top_right);
-
- // containing-block: horizontal-tb / ltr
- // self: vertical-lr / ltr
- writing_direction = "self: vertical-lr / ltr";
- anchored.style.writingMode = "vertical-lr";
- anchored.style.direction = "ltr";
- test_inset_area(writing_direction, "start start", top_left);
- test_inset_area(writing_direction, "self-start self-start", top_left);
- test_inset_area(writing_direction, "x-start y-start", top_left);
- test_inset_area(writing_direction, "x-self-start y-self-start", top_left);
-
- // containing-block: horizontal-tb / ltr
- // self: vertical-lr / rtl
- writing_direction = "self: vertical-lr / rtl";
- anchored.style.writingMode = "vertical-lr";
- anchored.style.direction = "rtl";
- test_inset_area(writing_direction, "start start", top_left);
- test_inset_area(writing_direction, "self-start self-start", bottom_left);
- test_inset_area(writing_direction, "x-start y-start", top_left);
- test_inset_area(writing_direction, "x-self-start y-self-start", bottom_left);
-
- // containing-block: horizontal-tb / ltr
- // self: vertical-rl / ltr
- writing_direction = "self: vertical-rl / ltr";
- anchored.style.writingMode = "vertical-rl";
- anchored.style.direction = "ltr";
- test_inset_area(writing_direction, "start start", top_left);
- test_inset_area(writing_direction, "self-start self-start", top_right);
- test_inset_area(writing_direction, "x-start y-start", top_left);
- test_inset_area(writing_direction, "x-self-start y-self-start", top_right);
-
- // containing-block: horizontal-tb / ltr
- // self: vertical-rl / rtl
- writing_direction = "self: vertical-rl / rtl";
- anchored.style.writingMode = "vertical-rl";
- anchored.style.direction = "rtl";
- test_inset_area(writing_direction, "start start", top_left);
- test_inset_area(writing_direction, "self-start self-start", bottom_right);
- test_inset_area(writing_direction, "x-start y-start", top_left);
- test_inset_area(writing_direction, "x-self-start y-self-start", bottom_right);
-
-</script>
diff --git a/tests/wpt/tests/css/css-anchor-position/last-successful-basic.html b/tests/wpt/tests/css/css-anchor-position/last-successful-basic.html
index cda0eed6fba..953ad80fcfc 100644
--- a/tests/wpt/tests/css/css-anchor-position/last-successful-basic.html
+++ b/tests/wpt/tests/css/css-anchor-position/last-successful-basic.html
@@ -26,7 +26,7 @@
position: absolute;
width: 100px;
height: 200px;
- inset-area: top center;
+ position-area: top center;
background: lime;
}
</style>
diff --git a/tests/wpt/tests/css/css-anchor-position/last-successful-change-fallbacks.html b/tests/wpt/tests/css/css-anchor-position/last-successful-change-fallbacks.html
index ed4f8a43626..d9aed01a90b 100644
--- a/tests/wpt/tests/css/css-anchor-position/last-successful-change-fallbacks.html
+++ b/tests/wpt/tests/css/css-anchor-position/last-successful-change-fallbacks.html
@@ -26,7 +26,7 @@
position: absolute;
width: 100px;
height: 200px;
- inset-area: top center;
+ position-area: top center;
background: lime;
}
</style>
diff --git a/tests/wpt/tests/css/css-anchor-position/last-successful-change-try-rule.html b/tests/wpt/tests/css/css-anchor-position/last-successful-change-try-rule.html
index 205aba014c3..f7caf2f08ee 100644
--- a/tests/wpt/tests/css/css-anchor-position/last-successful-change-try-rule.html
+++ b/tests/wpt/tests/css/css-anchor-position/last-successful-change-try-rule.html
@@ -26,11 +26,11 @@
position: absolute;
width: 100px;
height: 200px;
- inset-area: top center;
+ position-area: top center;
background: lime;
}
@position-try --try {
- inset-area: bottom center;
+ position-area: bottom center;
}
</style>
<div id="container">
@@ -53,7 +53,7 @@
promise_test(async () => {
// Changing @position-try --try {}
- anchor_sheet.sheet.cssRules[3].style.insetArea = "bottom";
+ anchor_sheet.sheet.cssRules[3].style.positionArea = "bottom";
await waitUntilNextAnimationFrame();
await waitUntilNextAnimationFrame();
assert_equals(anchored.offsetTop, -50);
diff --git a/tests/wpt/tests/css/css-anchor-position/last-successful-intermediate-ignored.html b/tests/wpt/tests/css/css-anchor-position/last-successful-intermediate-ignored.html
index 82bf1e8aca9..33f42e7be8f 100644
--- a/tests/wpt/tests/css/css-anchor-position/last-successful-intermediate-ignored.html
+++ b/tests/wpt/tests/css/css-anchor-position/last-successful-intermediate-ignored.html
@@ -26,7 +26,7 @@
position: absolute;
width: 100px;
height: 200px;
- inset-area: top center;
+ position-area: top center;
background: lime;
}
</style>
diff --git a/tests/wpt/tests/css/css-anchor-position/popover-anchor-backdrop-transition.html b/tests/wpt/tests/css/css-anchor-position/popover-anchor-backdrop-transition.html
new file mode 100644
index 00000000000..60c222363de
--- /dev/null
+++ b/tests/wpt/tests/css/css-anchor-position/popover-anchor-backdrop-transition.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<title>CSS Anchor Positioning Test: popover with anchor functions transition ::backdrop</title>
+<link rel="help" href="https://drafts.csswg.org/css-anchor-position-1/">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<div id="anchor"></div>
+<div id="popover" popover></div>
+<style>
+ #anchor {
+ anchor-name: --anchor;
+ }
+ #popover {
+ top: anchor(--anchor bottom);
+ }
+ ::backdrop {
+ transition: opacity 1s step-end;
+ opacity: 1;
+ }
+ @starting-style {
+ ::backdrop {
+ opacity: 0;
+ }
+ }
+</style>
+<script>
+ test(() => {
+ popover.showPopover();
+ assert_equals(getComputedStyle(popover, "::backdrop").opacity, "0");
+ }, "Anchored popover ::backdrop transitioning opacity with @starting-style");
+</script>
diff --git a/tests/wpt/tests/css/css-anchor-position/position-area-abs-inline-container.html b/tests/wpt/tests/css/css-anchor-position/position-area-abs-inline-container.html
new file mode 100644
index 00000000000..deaf60647d4
--- /dev/null
+++ b/tests/wpt/tests/css/css-anchor-position/position-area-abs-inline-container.html
@@ -0,0 +1,40 @@
+<!DOCTYPE html>
+<title>CSS Anchor Positioning: position-area positioning with absolute inline container</title>
+<link rel="help" href="https://drafts.csswg.org/css-anchor-position/#position-area">
+<link rel="match" href="position-area-inline-container-ref.html">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css">
+<style>
+ #in-flow {
+ font-family: Ahem;
+ font-size: 100px;
+ color: orange;
+ }
+ #inline-container {
+ position: absolute;
+ }
+ #anchor {
+ position: absolute;
+ top: 25px;
+ left: 100px;
+ width: 200px;
+ height: 50px;
+ anchor-name: --anchor;
+ background-color: cyan;
+ }
+ .anchored {
+ position: absolute;
+ align-self: stretch;
+ justify-self: stretch;
+ position-anchor: --anchor;
+ background-color: blue;
+ }
+ #top-left { position-area: top left; }
+ #top-right { position-area: top right; }
+ #bottom-left { position-area: bottom left; }
+ #bottom-right { position-area: bottom right; }
+</style>
+<div id="in-flow">
+ <br>
+ <br>
+ &nbsp;&nbsp;<span id="inline-container">XXXX<span id="anchor"></span><div id="top-left" class="anchored"></div><div id="top-right" class="anchored"></div><div id="bottom-left" class="anchored"></div><div id="bottom-right" class="anchored"></div></span>
+</div>
diff --git a/tests/wpt/tests/css/css-anchor-position/position-area-align-justify-wm-dir.html b/tests/wpt/tests/css/css-anchor-position/position-area-align-justify-wm-dir.html
new file mode 100644
index 00000000000..25b53d44f78
--- /dev/null
+++ b/tests/wpt/tests/css/css-anchor-position/position-area-align-justify-wm-dir.html
@@ -0,0 +1,155 @@
+<!DOCTYPE html>
+<title>CSS Anchor Positioning: position-area positioning - alignment with writing-mode and direction</title>
+<link rel="help" href="https://drafts.csswg.org/css-anchor-position/#position-area">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+ /* A 300x300 container with a 100x100 centered anchor */
+ #container {
+ position: relative;
+ width: 300px;
+ height: 300px;
+ }
+ #anchor {
+ position: absolute;
+ top: 100px;
+ left: 100px;
+ width: 100px;
+ height: 100px;
+ anchor-name: --anchor;
+ }
+ #anchored {
+ position: absolute;
+ width: 10px;
+ height: 10px;
+ inset: 10px;
+ position-anchor: --anchor;
+ }
+</style>
+<div id="container">
+ <div id="anchor"></div>
+ <div id="anchored"></div>
+</div>
+<script>
+ function test_position_area(writing_direction, position_area, expected_offsets) {
+ anchored.style.positionArea = position_area;
+ test(() => {
+ assert_equals(anchored.offsetLeft, expected_offsets.left, "Checking offsetLeft");
+ assert_equals(anchored.offsetTop, expected_offsets.top, "Checking offsetTop");
+ assert_equals(anchored.offsetWidth, expected_offsets.width, "Checking offsetWidth");
+ assert_equals(anchored.offsetHeight, expected_offsets.height, "Checking offsetHeight");
+ }, "Offsets for: " + position_area + " with writing-mode / direction: " + writing_direction);
+ }
+
+ const top_left = {left:80, top:80, width:10, height:10};
+ const top_right = {left:210, top:80, width:10, height:10};
+ const bottom_left = {left:80, top:210, width:10, height:10};
+ const bottom_right = {left:210, top:210, width:10, height:10};
+
+ anchored.style.writingMode = "horizontal-tb";
+ anchored.style.direction = "ltr";
+
+ // Writing-mode and direction on container
+ let writing_direction = "containing-block: horizontal-tb / rtl";
+ container.style.writingMode = "horizontal-tb";
+ container.style.direction = "rtl";
+ test_position_area(writing_direction, "start start", top_right);
+ test_position_area(writing_direction, "self-start self-start", top_left);
+ test_position_area(writing_direction, "x-start y-start", top_right);
+ test_position_area(writing_direction, "x-self-start y-self-start", top_left);
+
+ // containing-block: vertical-lr / ltr
+ // self: horizontal-tb / ltr
+ writing_direction = "containing-block: vertical-lr / ltr";
+ container.style.writingMode = "vertical-lr";
+ container.style.direction = "ltr";
+ test_position_area(writing_direction, "start start", top_left);
+ test_position_area(writing_direction, "self-start self-start", top_left);
+ test_position_area(writing_direction, "x-start y-start", top_left);
+ test_position_area(writing_direction, "x-self-start y-self-start", top_left);
+
+ // containing-block: vertical-lr / rtl
+ // self: horizontal-tb / ltr
+ writing_direction = "containing-block: vertical-lr / rtl";
+ container.style.writingMode = "vertical-lr";
+ container.style.direction = "rtl";
+ test_position_area(writing_direction, "start start", bottom_left);
+ test_position_area(writing_direction, "self-start self-start", top_left);
+ test_position_area(writing_direction, "x-start y-start", bottom_left);
+ test_position_area(writing_direction, "x-self-start y-self-start", top_left);
+
+ // containing-block: vertical-rl / ltr
+ // self: horizontal-tb / ltr
+ writing_direction = "containing-block: vertical-rl / ltr";
+ container.style.writingMode = "vertical-rl";
+ container.style.direction = "ltr";
+ test_position_area(writing_direction, "start start", top_right);
+ test_position_area(writing_direction, "self-start self-start", top_left);
+ test_position_area(writing_direction, "x-start y-start", top_right);
+ test_position_area(writing_direction, "x-self-start y-self-start", top_left);
+
+ // containing-block: vertical-rl / rtl
+ // self: horizontal-tb / ltr
+ writing_direction = "containing-block: vertical-rl / rtl";
+ container.style.writingMode = "vertical-rl";
+ container.style.direction = "rtl";
+ test_position_area(writing_direction, "start start", bottom_right);
+ test_position_area(writing_direction, "self-start self-start", top_left);
+ test_position_area(writing_direction, "x-start y-start", bottom_right);
+ test_position_area(writing_direction, "x-self-start y-self-start", top_left);
+
+ // Writing-mode and direction on self
+ container.style.writingMode = "horizontal-tb";
+ container.style.direction = "ltr";
+
+ // containing-block: horizontal-tb / ltr
+ // self: horizontal-tb / rtl
+ writing_direction = "self: horizontal-tb / rtl";
+ anchored.style.writingMode = "horizontal-tb";
+ anchored.style.direction = "rtl";
+ test_position_area(writing_direction, "start start", top_left);
+ test_position_area(writing_direction, "self-start self-start", top_right);
+ test_position_area(writing_direction, "x-start y-start", top_left);
+ test_position_area(writing_direction, "x-self-start y-self-start", top_right);
+
+ // containing-block: horizontal-tb / ltr
+ // self: vertical-lr / ltr
+ writing_direction = "self: vertical-lr / ltr";
+ anchored.style.writingMode = "vertical-lr";
+ anchored.style.direction = "ltr";
+ test_position_area(writing_direction, "start start", top_left);
+ test_position_area(writing_direction, "self-start self-start", top_left);
+ test_position_area(writing_direction, "x-start y-start", top_left);
+ test_position_area(writing_direction, "x-self-start y-self-start", top_left);
+
+ // containing-block: horizontal-tb / ltr
+ // self: vertical-lr / rtl
+ writing_direction = "self: vertical-lr / rtl";
+ anchored.style.writingMode = "vertical-lr";
+ anchored.style.direction = "rtl";
+ test_position_area(writing_direction, "start start", top_left);
+ test_position_area(writing_direction, "self-start self-start", bottom_left);
+ test_position_area(writing_direction, "x-start y-start", top_left);
+ test_position_area(writing_direction, "x-self-start y-self-start", bottom_left);
+
+ // containing-block: horizontal-tb / ltr
+ // self: vertical-rl / ltr
+ writing_direction = "self: vertical-rl / ltr";
+ anchored.style.writingMode = "vertical-rl";
+ anchored.style.direction = "ltr";
+ test_position_area(writing_direction, "start start", top_left);
+ test_position_area(writing_direction, "self-start self-start", top_right);
+ test_position_area(writing_direction, "x-start y-start", top_left);
+ test_position_area(writing_direction, "x-self-start y-self-start", top_right);
+
+ // containing-block: horizontal-tb / ltr
+ // self: vertical-rl / rtl
+ writing_direction = "self: vertical-rl / rtl";
+ anchored.style.writingMode = "vertical-rl";
+ anchored.style.direction = "rtl";
+ test_position_area(writing_direction, "start start", top_left);
+ test_position_area(writing_direction, "self-start self-start", bottom_right);
+ test_position_area(writing_direction, "x-start y-start", top_left);
+ test_position_area(writing_direction, "x-self-start y-self-start", bottom_right);
+
+</script>
diff --git a/tests/wpt/tests/css/css-anchor-position/position-area-align-justify.html b/tests/wpt/tests/css/css-anchor-position/position-area-align-justify.html
new file mode 100644
index 00000000000..e0bce2c8268
--- /dev/null
+++ b/tests/wpt/tests/css/css-anchor-position/position-area-align-justify.html
@@ -0,0 +1,65 @@
+<!DOCTYPE html>
+<title>CSS Anchor Positioning: position-area positioning - alignment</title>
+<link rel="help" href="https://drafts.csswg.org/css-anchor-position/#position-area">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+ /* A 300x300 container with a 100x100 centered anchor */
+ #container {
+ position: relative;
+ width: 300px;
+ height: 300px;
+ }
+ #anchor {
+ position: absolute;
+ top: 100px;
+ left: 100px;
+ width: 100px;
+ height: 100px;
+ anchor-name: --anchor;
+ }
+ #anchored {
+ position: absolute;
+ width: 10px;
+ height: 10px;
+ inset: 10px;
+ position-anchor: --anchor;
+ }
+</style>
+<div id="container">
+ <div id="anchor"></div>
+ <div id="anchored"></div>
+</div>
+<script>
+ function test_position_area(position_area, expected_offsets) {
+ anchored.style.positionArea = position_area;
+
+ test(() => {
+ assert_equals(anchored.offsetLeft, expected_offsets.left, "Check expected offsetLeft");
+ assert_equals(anchored.offsetTop, expected_offsets.top, "Check expected offsetTop");
+ assert_equals(anchored.offsetWidth, expected_offsets.width, "Check expected offsetWidth");
+ assert_equals(anchored.offsetHeight, expected_offsets.height, "Check expected offsetHeight");
+ }, "Offsets for position-area: " + position_area);
+ }
+
+ // anchor-center in both directions
+ test_position_area("span-all", {left:145, top:145, width:10, height:10});
+
+ // Single region spans
+ test_position_area("top left", {left:80, top:80, width:10, height:10});
+ test_position_area("top center", {left:145, top:80, width:10, height:10});
+ test_position_area("top right", {left:210, top:80, width:10, height:10});
+ test_position_area("center left", {left:80, top:145, width:10, height:10});
+ test_position_area("center center", {left:145, top:145, width:10, height:10});
+ test_position_area("center right", {left:210, top:145, width:10, height:10});
+ test_position_area("bottom left", {left:80, top:210, width:10, height:10});
+ test_position_area("bottom center", {left:145, top:210, width:10, height:10});
+ test_position_area("bottom right", {left:210, top:210, width:10, height:10});
+
+ // Multi-region spans
+ test_position_area("top span-left", {left:180, top:80, width:10, height:10});
+ test_position_area("top span-right", {left:110, top:80, width:10, height:10});
+ test_position_area("span-top left", {left:80, top:180, width:10, height:10});
+ test_position_area("span-bottom left", {left:80, top:110, width:10, height:10});
+
+</script>
diff --git a/tests/wpt/tests/css/css-anchor-position/position-area-anchor-outside.html b/tests/wpt/tests/css/css-anchor-position/position-area-anchor-outside.html
new file mode 100644
index 00000000000..d8fb5dbc98f
--- /dev/null
+++ b/tests/wpt/tests/css/css-anchor-position/position-area-anchor-outside.html
@@ -0,0 +1,56 @@
+<!DOCTYPE html>
+<title>CSS Anchor Positioning: position-area positioning - anchor outside containing block</title>
+<link rel="help" href="https://drafts.csswg.org/css-anchor-position/#position-area">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+ #container {
+ position: relative;
+ width: 400px;
+ height: 400px;
+ }
+ #anchor {
+ position: absolute;
+ left: -200px;
+ top: 500px;
+ width: 100px;
+ height: 100px;
+ anchor-name: --anchor;
+ }
+ #anchored {
+ position: absolute;
+ align-self: stretch;
+ justify-self: stretch;
+ position-anchor: --anchor;
+ }
+</style>
+<div id="container">
+ <div id="anchor"></div>
+ <div id="anchored"></div>
+</div>
+<script>
+ function test_position_area(position_area, expected_offsets) {
+ anchored.style.positionArea = position_area;
+
+ test(() => {
+ assert_equals(anchored.offsetLeft, expected_offsets.left, "Check expected offsetLeft");
+ assert_equals(anchored.offsetTop, expected_offsets.top, "Check expected offsetTop");
+ assert_equals(anchored.offsetWidth, expected_offsets.width, "Check expected offsetWidth");
+ assert_equals(anchored.offsetHeight, expected_offsets.height, "Check expected offsetHeight");
+ }, "Offsets for position-area: " + position_area);
+ }
+
+ test_position_area("span-all", {left:0, top:0, width:400, height:400});
+
+ test_position_area("left span-all", {left:-200, top:0, width:0, height:400});
+ test_position_area("span-left span-all", {left:-100, top:0, width:0, height:400});
+ test_position_area("span-all center", {left:-200, top:0, width:100, height:400});
+ test_position_area("span-right span-all", {left:-200, top:0, width:600, height:400});
+ test_position_area("right span-all", {left:-100, top:0, width:500, height:400});
+
+ test_position_area("top span-all", {left:0, top:0, width:400, height:500});
+ test_position_area("span-top span-all", {left:0, top:0, width:400, height:600});
+ test_position_area("center span-all", {left:0, top:500, width:400, height:100});
+ test_position_area("span-bottom span-all", {left:0, top:500, width:400, height:0});
+ test_position_area("bottom span-all", {left:0, top:600, width:400, height:0});
+</script>
diff --git a/tests/wpt/tests/css/css-anchor-position/position-area-anchor-partially-outside.html b/tests/wpt/tests/css/css-anchor-position/position-area-anchor-partially-outside.html
new file mode 100644
index 00000000000..e23cea47478
--- /dev/null
+++ b/tests/wpt/tests/css/css-anchor-position/position-area-anchor-partially-outside.html
@@ -0,0 +1,56 @@
+<!DOCTYPE html>
+<title>CSS Anchor Positioning: position-area positioning - anchor partially outside containing block</title>
+<link rel="help" href="https://drafts.csswg.org/css-anchor-position/#position-area">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+ #container {
+ position: relative;
+ width: 400px;
+ height: 400px;
+ }
+ #anchor {
+ position: absolute;
+ right: -50px;
+ top: -50px;
+ width: 100px;
+ height: 100px;
+ anchor-name: --anchor;
+ }
+ #anchored {
+ position: absolute;
+ align-self: stretch;
+ justify-self: stretch;
+ position-anchor: --anchor;
+ }
+</style>
+<div id="container">
+ <div id="anchor"></div>
+ <div id="anchored"></div>
+</div>
+<script>
+ function test_position_area(position_area, expected_offsets) {
+ anchored.style.positionArea = position_area;
+
+ test(() => {
+ assert_equals(anchored.offsetLeft, expected_offsets.left, "Check expected offsetLeft");
+ assert_equals(anchored.offsetTop, expected_offsets.top, "Check expected offsetTop");
+ assert_equals(anchored.offsetWidth, expected_offsets.width, "Check expected offsetWidth");
+ assert_equals(anchored.offsetHeight, expected_offsets.height, "Check expected offsetHeight");
+ }, "Offsets for position-area: " + position_area);
+ }
+
+ test_position_area("span-all", {left:0, top:0, width:400, height:400});
+
+ test_position_area("left span-all", {left:0, top:0, width:350, height:400});
+ test_position_area("span-left span-all", {left:0, top:0, width:450, height:400});
+ test_position_area("span-all center", {left:350, top:0, width:100, height:400});
+ test_position_area("span-right span-all", {left:350, top:0, width:50, height:400});
+ test_position_area("right span-all", {left:450, top:0, width:0, height:400});
+
+ test_position_area("top span-all", {left:0, top:-50, width:400, height:0});
+ test_position_area("span-top span-all", {left:0, top:0, width:400, height:50});
+ test_position_area("center span-all", {left:0, top:-50, width:400, height:100});
+ test_position_area("span-bottom span-all", {left:0, top:-50, width:400, height:450});
+ test_position_area("bottom span-all", {left:0, top:50, width:400, height:350});
+</script>
diff --git a/tests/wpt/tests/css/css-anchor-position/position-area-basic.html b/tests/wpt/tests/css/css-anchor-position/position-area-basic.html
new file mode 100644
index 00000000000..6cbaf8e5014
--- /dev/null
+++ b/tests/wpt/tests/css/css-anchor-position/position-area-basic.html
@@ -0,0 +1,117 @@
+<!DOCTYPE html>
+<title>CSS Anchor Positioning: basic position-area positioning</title>
+<link rel="help" href="https://drafts.csswg.org/css-anchor-position/#position-area">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<!-- The grid:
+
+ 100 150 150
+ +--------+--------+--------+
+ | | | |
+ 150 | | | |
+ | | | |
+ +--------+--------+--------+
+ | | | |
+ 75 | | | |
+ | | | |
+ +--------+--------+--------+
+ | | | |
+ 175 | | | |
+ | | | |
+ +--------+--------+--------+
+
+ -->
+<style>
+ #container {
+ position: absolute;
+ width: 400px;
+ height: 400px;
+ }
+ #anchored {
+ position: absolute;
+ align-self: stretch;
+ justify-self: stretch;
+ position-anchor: --anchor;
+ }
+ #anchor {
+ margin-top: 150px;
+ margin-left: 100px;
+ width: 150px;
+ height: 75px;
+ anchor-name: --anchor;
+ }
+</style>
+<div id="container">
+ <div id="anchored"></div>
+ <div id="anchor"></div>
+</div>
+<script>
+ function test_position_area(position_area, expected_offsets) {
+ anchored.style.positionArea = position_area;
+ test(() => {
+ assert_equals(anchored.offsetLeft, expected_offsets.left, "Check expected offsetLeft");
+ assert_equals(anchored.offsetTop, expected_offsets.top, "Check expected offsetTop");
+ assert_equals(anchored.offsetWidth, expected_offsets.width, "Check expected offsetWidth");
+ assert_equals(anchored.offsetHeight, expected_offsets.height, "Check expected offsetHeight");
+ }, "Offsets for: " + position_area);
+ }
+
+ test_position_area("none", {left:0, top:0, width:0, height:0});
+ test_position_area("span-all", {left:0, top:0, width:400, height:400});
+ test_position_area("span-all span-all", {left:0, top:0, width:400, height:400});
+
+ // Single region spans
+ test_position_area("top left", {left:0, top:0, width:100, height:150});
+ test_position_area("top center", {left:100, top:0, width:150, height:150});
+ test_position_area("top right", {left:250, top:0, width:150, height:150});
+ test_position_area("center left", {left:0, top:150, width:100, height:75});
+ test_position_area("center center", {left:100, top:150, width:150, height:75});
+ test_position_area("center right", {left:250, top:150, width:150, height:75});
+ test_position_area("bottom left", {left:0, top:225, width:100, height:175});
+ test_position_area("bottom center", {left:100, top:225, width:150, height:175});
+ test_position_area("bottom right", {left:250, top:225, width:150, height:175});
+
+ test_position_area("start start", {left:0, top:0, width:100, height:150});
+ test_position_area("start center", {left:100, top:0, width:150, height:150});
+ test_position_area("start end", {left:250, top:0, width:150, height:150});
+ test_position_area("center start", {left:0, top:150, width:100, height:75});
+ test_position_area("center end", {left:250, top:150, width:150, height:75});
+ test_position_area("end start", {left:0, top:225, width:100, height:175});
+ test_position_area("end center", {left:100, top:225, width:150, height:175});
+ test_position_area("end end", {left:250, top:225, width:150, height:175});
+
+ test_position_area("self-start self-start", {left:0, top:0, width:100, height:150});
+ test_position_area("self-start center", {left:100, top:0, width:150, height:150});
+ test_position_area("self-start self-end", {left:250, top:0, width:150, height:150});
+ test_position_area("center self-start", {left:0, top:150, width:100, height:75});
+ test_position_area("center self-end", {left:250, top:150, width:150, height:75});
+ test_position_area("self-end self-start", {left:0, top:225, width:100, height:175});
+ test_position_area("self-end center", {left:100, top:225, width:150, height:175});
+ test_position_area("self-end self-end", {left:250, top:225, width:150, height:175});
+
+ test_position_area("y-start x-start", {left:0, top:0, width:100, height:150});
+ test_position_area("y-start center", {left:100, top:0, width:150, height:150});
+ test_position_area("y-start x-end", {left:250, top:0, width:150, height:150});
+ test_position_area("center x-start", {left:0, top:150, width:100, height:75});
+ test_position_area("center x-end", {left:250, top:150, width:150, height:75});
+ test_position_area("y-end x-start", {left:0, top:225, width:100, height:175});
+ test_position_area("y-end center", {left:100, top:225, width:150, height:175});
+ test_position_area("y-end x-end", {left:250, top:225, width:150, height:175});
+
+ test_position_area("y-self-start x-self-start", {left:0, top:0, width:100, height:150});
+ test_position_area("y-self-start center", {left:100, top:0, width:150, height:150});
+ test_position_area("y-self-start x-self-end", {left:250, top:0, width:150, height:150});
+ test_position_area("center x-self-start", {left:0, top:150, width:100, height:75});
+ test_position_area("center x-self-end", {left:250, top:150, width:150, height:75});
+ test_position_area("y-self-end x-self-start", {left:0, top:225, width:100, height:175});
+ test_position_area("y-self-end center", {left:100, top:225, width:150, height:175});
+ test_position_area("y-self-end x-self-end", {left:250, top:225, width:150, height:175});
+
+ // Multi-region spans
+ test_position_area("span-y-self-start span-x-self-end", {left:100, top:0, width:300, height:225});
+ test_position_area("span-bottom span-all", {left:0, top:150, width:400, height:250});
+
+ // No implicit anchor means the position-area should not apply.
+ anchored.style.positionAnchor = "auto";
+ test_position_area("span-all top", {left:0, top:0, width:0, height:0});
+</script>
diff --git a/tests/wpt/tests/css/css-anchor-position/position-area-computed-insets.html b/tests/wpt/tests/css/css-anchor-position/position-area-computed-insets.html
new file mode 100644
index 00000000000..2d7907fd92d
--- /dev/null
+++ b/tests/wpt/tests/css/css-anchor-position/position-area-computed-insets.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<title>CSS Anchor Positioning: position-area should not affect computed inset values</title>
+<link rel="help" href="https://drafts.csswg.org/css-anchor-position/#position-area">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/css-typed-om/resources/testhelper.js"></script>
+<style>
+ #abs {
+ position: absolute;
+ position-area: span-all;
+ }
+</style>
+<div id="abs"></div>
+<script>
+ test(() => {
+ let style = abs.computedStyleMap();
+ assert_equals(style.get("position-area").toString(), "span-all", "position-area is supported");
+ assert_style_value_equals(style.get("left"), new CSSKeywordValue("auto"));
+ assert_style_value_equals(style.get("right"), new CSSKeywordValue("auto"));
+ assert_style_value_equals(style.get("top"), new CSSKeywordValue("auto"));
+ assert_style_value_equals(style.get("bottom"), new CSSKeywordValue("auto"));
+ }, "position-area does not affect insets at computed value time");
+</script>
diff --git a/tests/wpt/tests/css/css-anchor-position/position-area-computed.html b/tests/wpt/tests/css/css-anchor-position/position-area-computed.html
new file mode 100644
index 00000000000..0acc853eb90
--- /dev/null
+++ b/tests/wpt/tests/css/css-anchor-position/position-area-computed.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<title>CSS Anchor Positioning: position-area getComputedStyle()</title>
+<link rel="help" href="https://drafts.csswg.org/css-anchor-position/#position-area">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/computed-testcommon.js"></script>
+<script src="/css/support/inheritance-testcommon.js"></script>
+<div id="container">
+ <div id="target"></div>
+</div>
+<script>
+ test_computed_value("position-area", "none");
+ test_computed_value("position-area", "span-all");
+ test_computed_value("position-area", "x-start");
+ test_computed_value("position-area", "center");
+ test_computed_value("position-area", "span-all span-all", "span-all");
+ test_computed_value("position-area", "center center", "center");
+ test_computed_value("position-area", "top center", "center top");
+ test_computed_value("position-area", "span-bottom span-all", "span-bottom");
+
+ assert_not_inherited("position-area", "none", "span-all");
+</script>
diff --git a/tests/wpt/tests/css/css-anchor-position/position-area-in-grid.html b/tests/wpt/tests/css/css-anchor-position/position-area-in-grid.html
new file mode 100644
index 00000000000..85dd4f48306
--- /dev/null
+++ b/tests/wpt/tests/css/css-anchor-position/position-area-in-grid.html
@@ -0,0 +1,106 @@
+<!DOCTYPE html>
+<title>CSS Anchor Positioning: position-area positioning inside grid</title>
+<link rel="help" href="https://drafts.csswg.org/css-anchor-position/#position-area">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<!--
+ Grid:
+
+ 100 100 100 100
+ +--------+--------+--------+--------+
+ | | | | |
+ 100 | | | | |
+ | | | | |
+ +--------+--------+--------+--------+
+ | | |XXXXXXXX|XXXXXXXX|
+ 100 | | |XXXXXXXX|XXXXXXXX|
+ | | |XXXXXXXX|XXXXXXXX|
+ +--------+--------+--------+--------+
+ | | |XXXXXXXX|XXXXXXXX|
+ 100 | | |XXXXXXXX|XXXXXXXX|
+ | | |XXXXXXXX|XXXXXXXX|
+ +--------+--------+--------+--------+
+ | | | | |
+ 100 | | | | |
+ | | | | |
+ +--------+--------+--------+--------+
+
+
+ Inset regions:
+
+ 100 150 150
+ +--------+-------------+------------+
+ | | | |
+ | | | |
+ 150 | | | |
+ | | | |
+ | | | |
+ +--------+-------------+------------+
+ | | | |
+ 75 | | | |
+ | | | |
+ +--------+-------------+------------+
+ | | | |
+ | | | |
+ 175 | | | |
+ | | | |
+ | | | |
+ +--------+-------------+------------+
+
+ -->
+
+<style>
+ #container {
+ display: grid;
+ grid: 1fr 1fr 1fr 1fr / 1fr 1fr 1fr 1fr;
+ position: relative;
+ width: 400px;
+ height: 400px;
+ }
+
+ #anchor {
+ position: absolute;
+ left: 100px;
+ top: 150px;
+ width: 150px;
+ height: 75px;
+ anchor-name: --anchor;
+ }
+
+ #anchored {
+ grid-row-start: 2;
+ grid-row-end: span 2;
+ grid-column-start: 3;
+ grid-column-end: auto;
+ position: absolute;
+ align-self: stretch;
+ justify-self: stretch;
+ position-anchor: --anchor;
+ }
+</style>
+
+<div id="container">
+ <div id="anchor"></div>
+ <div id="anchored"></div>
+</div>
+<script>
+ function test_position_area(position_area, insets, expected_offsets) {
+ anchored.style.positionArea = position_area;
+ for (const [prop, value] of Object.entries(insets)) {
+ anchored.style[prop] = value;
+ }
+
+ test(() => {
+ assert_equals(anchored.offsetLeft, expected_offsets.left, "Check expected offsetLeft");
+ assert_equals(anchored.offsetTop, expected_offsets.top, "Check expected offsetTop");
+ assert_equals(anchored.offsetWidth, expected_offsets.width, "Check expected offsetWidth");
+ assert_equals(anchored.offsetHeight, expected_offsets.height, "Check expected offsetHeight");
+ }, "Offsets for position-area: " + position_area + " and insets: " + JSON.stringify(insets));
+ }
+
+ test_position_area("span-bottom span-left", {left:"auto", right:"auto", top:"auto", bottom:"auto"},
+ {left:200, top:150, width:50, height:150});
+
+ test_position_area("span-bottom span-left", {left:"10px", right:"10px", top:"10px", bottom:"10px"},
+ {left:210, top:160, width:30, height:130});
+</script>
diff --git a/tests/wpt/tests/css/css-anchor-position/position-area-in-position-try.html b/tests/wpt/tests/css/css-anchor-position/position-area-in-position-try.html
new file mode 100644
index 00000000000..1812c3892ea
--- /dev/null
+++ b/tests/wpt/tests/css/css-anchor-position/position-area-in-position-try.html
@@ -0,0 +1,188 @@
+<!DOCTYPE html>
+<title>CSS Anchor Positioning: position-area in @position-try</title>
+<link rel="help" href='https://drafts.csswg.org/css-anchor-position-1/#position-try-fallbacks'>
+<script src='/resources/testharness.js'></script>
+<script src='/resources/testharnessreport.js'></script>
+<style>
+ #cb {
+ position: relative;
+ width: 200px;
+ height: 200px;
+ border: 1px solid black;
+ }
+ #anchor {
+ position: absolute;
+ left: 100px;
+ top: 100px;
+ width: 50px;
+ height: 50px;
+ background-color: tomato;
+ anchor-name: --a;
+ }
+ #target {
+ left: 200px; /* force fallback */
+ }
+ #target, #ref {
+ position: absolute;
+ width: 40px;
+ height: 40px;
+ background-color: skyblue;
+ position-area: bottom right;
+ position-anchor: --a;
+ }
+ #ref {
+ background-color: seagreen;
+ }
+</style>
+<style id=style>
+</style>
+<div id=cb>
+ <div id=anchor></div>
+ <div id=target></div>
+ <div id=ref></div>
+</div>
+<script>
+
+// Test that inside-area, when used inside @position-try, works the same
+// as when it's specified in the base style.
+function test_position_area_ref(position_area) {
+ test((t) => {
+ t.add_cleanup(() => {
+ style.textContent = '';
+ });
+ style.textContent = `
+ @position-try --pt {
+ inset: unset; /* Undo force fallback */
+ position-area: ${position_area};
+ }
+ #target {
+ position-try-fallbacks: --pt;
+ }
+ #ref {
+ position-area: ${position_area};
+ }
+ `;
+ assert_true(CSS.supports('position-area', 'top left'));
+ assert_true(CSS.supports('position-try-fallbacks', '--x'));
+ assert_equals(target.offsetLeft, ref.offsetLeft, 'offsetLeft');
+ assert_equals(target.offsetTop, ref.offsetTop, 'offsetTop');
+ }, `${position_area}`);
+}
+
+test_position_area_ref('none');
+test_position_area_ref('span-all');
+test_position_area_ref('span-all span-all');
+test_position_area_ref('top left');
+test_position_area_ref('top center');
+test_position_area_ref('top right');
+test_position_area_ref('center left');
+test_position_area_ref('center center');
+test_position_area_ref('center right');
+test_position_area_ref('bottom left');
+test_position_area_ref('bottom center');
+test_position_area_ref('bottom right');
+test_position_area_ref('start start');
+test_position_area_ref('start center');
+test_position_area_ref('start end');
+test_position_area_ref('center start');
+test_position_area_ref('center end');
+test_position_area_ref('end start');
+test_position_area_ref('end center');
+test_position_area_ref('end end');
+test_position_area_ref('self-start self-start');
+test_position_area_ref('self-start center');
+test_position_area_ref('self-start self-end');
+test_position_area_ref('center self-start');
+test_position_area_ref('center self-end');
+test_position_area_ref('self-end self-start');
+test_position_area_ref('self-end center');
+test_position_area_ref('self-end self-end');
+test_position_area_ref('y-start x-start');
+test_position_area_ref('y-start center');
+test_position_area_ref('y-start x-end');
+test_position_area_ref('center x-start');
+test_position_area_ref('center x-end');
+test_position_area_ref('y-end x-start');
+test_position_area_ref('y-end center');
+test_position_area_ref('y-end x-end');
+test_position_area_ref('y-self-start x-self-start');
+test_position_area_ref('y-self-start center');
+test_position_area_ref('y-self-start x-self-end');
+test_position_area_ref('center x-self-start');
+test_position_area_ref('center x-self-end');
+test_position_area_ref('y-self-end x-self-start');
+test_position_area_ref('y-self-end center');
+test_position_area_ref('y-self-end x-self-end');
+test_position_area_ref('span-y-self-start span-x-self-end');
+test_position_area_ref('span-bottom span-all');
+
+</script>
+
+<style>
+ @position-try --top {
+ inset: unset; /* Undo force fallback */
+ position-area: top;
+ }
+ @position-try --right {
+ inset: unset; /* Undo force fallback */
+ position-area: right;
+ }
+ @position-try --bottom {
+ inset: unset; /* Undo force fallback */
+ position-area: bottom;
+ }
+ @position-try --left {
+ inset: unset; /* Undo force fallback */
+ position-area: left;
+ }
+</style>
+<script>
+
+// Test that an element with the specified position-try-fallbacks is placed
+// at the same position as a reference element with position-area:`expected`.
+// This test uses #target/#ref size of 60x60px, which causes overflow if
+// if we attempt the --right and --bottom positions.
+function test_position_area_placement(position_try_fallbacks, expected) {
+ test((t) => {
+ style.textContent = `
+ #target, #ref {
+ width: 60px;
+ height: 60px;
+ }
+ #target {
+ position-try-fallbacks: ${position_try_fallbacks};
+ }
+ #ref {
+ position-area: ${expected};
+ }
+ `;
+ assert_true(CSS.supports('position-area', 'top left'));
+ assert_true(CSS.supports('position-try-fallbacks', '--x'));
+ assert_equals(target.offsetLeft, ref.offsetLeft, 'offsetLeft');
+ assert_equals(target.offsetTop, ref.offsetTop, 'offsetTop');
+ }, `Placement: ${position_try_fallbacks}`);
+}
+
+test_position_area_placement('--top', 'top');
+test_position_area_placement('--left', 'left');
+
+// No space to to the right/bottom:
+test_position_area_placement('--right, --top', 'top');
+test_position_area_placement('--bottom, --top', 'top');
+test_position_area_placement('--bottom, --right, --top', 'top');
+test_position_area_placement('--bottom, --right, --left, --top', 'left');
+test_position_area_placement('--bottom, --left, --top, --right', 'left');
+
+// Flipping:
+test_position_area_placement('--right flip-inline', 'left');
+test_position_area_placement('--bottom flip-block', 'top');
+test_position_area_placement('--left flip-start', 'top');
+
+// left + flip-inline => right (no space).
+test_position_area_placement('--left flip-inline, --top', 'top');
+// top + flip-block => bottom (no space).
+test_position_area_placement('--top flip-block, --left', 'left');
+// left + flip-start flip-block => bottom (no space).
+test_position_area_placement('--left flip-start flip-block, --left', 'left');
+
+</script>
diff --git a/tests/wpt/tests/css/css-anchor-position/inset-area-inline-container-ref.html b/tests/wpt/tests/css/css-anchor-position/position-area-inline-container-ref.html
index ecf54f1a9ac..ecf54f1a9ac 100644
--- a/tests/wpt/tests/css/css-anchor-position/inset-area-inline-container-ref.html
+++ b/tests/wpt/tests/css/css-anchor-position/position-area-inline-container-ref.html
diff --git a/tests/wpt/tests/css/css-anchor-position/position-area-inline-container.html b/tests/wpt/tests/css/css-anchor-position/position-area-inline-container.html
new file mode 100644
index 00000000000..b6661ce5baa
--- /dev/null
+++ b/tests/wpt/tests/css/css-anchor-position/position-area-inline-container.html
@@ -0,0 +1,40 @@
+<!DOCTYPE html>
+<title>CSS Anchor Positioning: position-area positioning with inline container</title>
+<link rel="help" href="https://drafts.csswg.org/css-anchor-position/#position-area">
+<link rel="match" href="position-area-inline-container-ref.html">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css">
+<style>
+ #in-flow {
+ font-family: Ahem;
+ font-size: 100px;
+ color: orange;
+ }
+ #inline-container {
+ position: relative;
+ }
+ #anchor {
+ position: absolute;
+ top: 25px;
+ left: 100px;
+ width: 200px;
+ height: 50px;
+ anchor-name: --anchor;
+ background-color: cyan;
+ }
+ .anchored {
+ position: absolute;
+ align-self: stretch;
+ justify-self: stretch;
+ position-anchor: --anchor;
+ background-color: blue;
+ }
+ #top-left { position-area: top left; }
+ #top-right { position-area: top right; }
+ #bottom-left { position-area: bottom left; }
+ #bottom-right { position-area: bottom right; }
+</style>
+<div id="in-flow">
+ <br>
+ <br>
+ &nbsp;&nbsp;<span id="inline-container">XXXX<span id="anchor"></span><div id="top-left" class="anchored"></div><div id="top-right" class="anchored"></div><div id="bottom-left" class="anchored"></div><div id="bottom-right" class="anchored"></div></span>
+</div>
diff --git a/tests/wpt/tests/css/css-anchor-position/position-area-interpolation.html b/tests/wpt/tests/css/css-anchor-position/position-area-interpolation.html
new file mode 100644
index 00000000000..b0e696ec255
--- /dev/null
+++ b/tests/wpt/tests/css/css-anchor-position/position-area-interpolation.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<title>CSS Anchor Positioning: position-area interpolation</title>
+<link rel="help" href="https://drafts.csswg.org/css-anchor-position/#position-area">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/interpolation-testcommon.js"></script>
+<body>
+<script>
+ test_no_interpolation({
+ property: "position-area",
+ from: "none",
+ to: "span-all left"
+ });
+</script>
diff --git a/tests/wpt/tests/css/css-anchor-position/position-area-parsing.html b/tests/wpt/tests/css/css-anchor-position/position-area-parsing.html
new file mode 100644
index 00000000000..9eefd256f41
--- /dev/null
+++ b/tests/wpt/tests/css/css-anchor-position/position-area-parsing.html
@@ -0,0 +1,162 @@
+<!DOCTYPE html>
+<title>CSS Anchor Positioning: position-area parsing</title>
+<link rel="help" href="https://drafts.csswg.org/css-anchor-position/#position-area">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+<body>
+<script>
+ function test_valid_single_position_area_values(valid_keywords) {
+ for (const keyword of valid_keywords) {
+ test_valid_value("position-area", keyword);
+ }
+ };
+
+ function test_valid_position_area_value_pairs(valid_keywords1,
+ valid_keywords2,
+ flip_order) {
+ for (const keyword1 of valid_keywords1) {
+ for (const keyword2 of valid_keywords2) {
+ if (keyword1 === keyword2) {
+ test_valid_value("position-area", keyword1 + " " + keyword2, keyword1);
+ } else {
+ test_valid_value("position-area", keyword1 + " " + keyword2,
+ flip_order ? keyword2 + " " + keyword1 : keyword1 + " " + keyword2);
+ }
+ }
+ }
+ };
+
+ function test_valid_position_area_value_pairs_with_span_all_center(
+ valid_keywords, flip_order) {
+ for (const keyword of valid_keywords) {
+ test_valid_value("position-area", keyword + " center",
+ flip_order ? "center " + keyword : keyword + " center");
+ test_valid_value("position-area", "center " + keyword,
+ flip_order ? "center " + keyword : keyword + " center");
+ test_valid_value("position-area", keyword + " span-all", keyword);
+ test_valid_value("position-area", "span-all " + keyword, keyword);
+ }
+ };
+
+ function test_valid_position_area_value_start_end_pairs_with_span_all_center(
+ valid_keywords) {
+ for (const keyword of valid_keywords) {
+ test_valid_value("position-area", keyword + " center");
+ test_valid_value("position-area", "center " + keyword);
+ test_valid_value("position-area", keyword + " span-all");
+ test_valid_value("position-area", "span-all " + keyword);
+ }
+ }
+
+ function test_invalid_position_area_value_pairs(valid_keywords1,
+ valid_keywords2) {
+ for (const keyword1 of valid_keywords1) {
+ for (const keyword2 of valid_keywords2) {
+ test_invalid_value("position-area", keyword1 + " " + keyword2);
+ test_invalid_value("position-area", keyword2 + " " + keyword1);
+ }
+ }
+ };
+
+ function test_invalid_position_area_value_equal_pairs(valid_keywords) {
+ for (const keyword of valid_keywords) {
+ test_invalid_value("position-area", keyword + " " + keyword);
+ }
+ };
+
+ const horizontal = [ "left", "right", "span-left", "span-right", "x-start",
+ "x-end", "span-x-start", "span-x-end", "x-self-start",
+ "x-self-end", "span-x-self-start", "span-x-self-end" ];
+ const vertical = [ "top", "bottom", "span-top", "span-bottom", "y-start",
+ "y-end", "span-y-start", "span-y-end", "y-self-start",
+ "y-self-end", "span-y-self-start", "span-y-self-end" ];
+ const inline = [ "inline-start", "inline-end", "span-inline-start",
+ "span-inline-end" ];
+ const block = [ "block-start", "block-end", "span-block-start",
+ "span-block-end" ];
+ const self_inline = [ "self-inline-start", "self-inline-end",
+ "span-self-inline-start", "span-self-inline-end" ];
+ const self_block = [ "self-block-start", "self-block-end",
+ "span-self-block-start", "span-self-block-end" ];
+ const start_end = [ "start", "end", "span-start", "span-end" ];
+ const self_start_end = [ "self-start", "self-end", "span-self-start",
+ "span-self-end" ];
+
+ // Test initial value 'none'
+ test_valid_value("position-area", "none");
+ test_invalid_value("position-area", "none none");
+ test_invalid_value("position-area", "start none");
+ test_invalid_value("position-area", "none start");
+ test_invalid_value("position-area", "top left top");
+
+ // Test keywords allowed in all axes
+ test_valid_value("position-area", "center");
+ test_valid_value("position-area", "center center", "center")
+ test_valid_value("position-area", "span-all");
+ test_valid_value("position-area", "span-all span-all", "span-all");
+ test_valid_value("position-area", "center span-all");
+ test_valid_value("position-area", "span-all center");
+
+ test_valid_single_position_area_values(horizontal);
+ test_valid_single_position_area_values(vertical);
+ test_valid_single_position_area_values(inline);
+ test_valid_single_position_area_values(block);
+ test_valid_single_position_area_values(start_end);
+ test_valid_single_position_area_values(self_start_end);
+
+ // Used if the sets of valid keywords are serialized in a different order than
+ // the argument order
+ const flip_order = true;
+
+ // Test all valid combinations in both orders
+ test_valid_position_area_value_pairs(horizontal, vertical);
+ test_valid_position_area_value_pairs(vertical, horizontal, flip_order);
+ test_valid_position_area_value_pairs(block, inline);
+ test_valid_position_area_value_pairs(inline, block, flip_order);
+ test_valid_position_area_value_pairs(self_block, self_inline);
+ test_valid_position_area_value_pairs(self_inline, self_block, flip_order);
+ test_valid_position_area_value_pairs(start_end, start_end);
+ test_valid_position_area_value_pairs(self_start_end, self_start_end);
+
+ // Test all valid combinations with 'span-all' and 'center' in both orders
+ test_valid_position_area_value_pairs_with_span_all_center(horizontal);
+ test_valid_position_area_value_pairs_with_span_all_center(vertical, flip_order);
+ test_valid_position_area_value_pairs_with_span_all_center(block);
+ test_valid_position_area_value_pairs_with_span_all_center(inline, flip_order);
+ test_valid_position_area_value_pairs_with_span_all_center(self_block);
+ test_valid_position_area_value_pairs_with_span_all_center(self_inline, flip_order);
+ test_valid_position_area_value_start_end_pairs_with_span_all_center(start_end);
+ test_valid_position_area_value_start_end_pairs_with_span_all_center(self_start_end);
+
+ // Test all invalid combinations with incompatible axes in both orders
+ test_invalid_position_area_value_pairs(horizontal, inline);
+ test_invalid_position_area_value_pairs(horizontal, block);
+ test_invalid_position_area_value_pairs(horizontal, self_inline);
+ test_invalid_position_area_value_pairs(horizontal, self_block);
+ test_invalid_position_area_value_pairs(horizontal, start_end);
+ test_invalid_position_area_value_pairs(horizontal, self_start_end);
+ test_invalid_position_area_value_pairs(vertical, inline);
+ test_invalid_position_area_value_pairs(vertical, block);
+ test_invalid_position_area_value_pairs(vertical, self_inline);
+ test_invalid_position_area_value_pairs(vertical, self_block);
+ test_invalid_position_area_value_pairs(vertical, start_end);
+ test_invalid_position_area_value_pairs(vertical, self_start_end);
+ test_invalid_position_area_value_pairs(inline, self_inline);
+ test_invalid_position_area_value_pairs(inline, self_block);
+ test_invalid_position_area_value_pairs(inline, start_end);
+ test_invalid_position_area_value_pairs(inline, self_start_end);
+ test_invalid_position_area_value_pairs(block, self_inline);
+ test_invalid_position_area_value_pairs(block, self_block);
+ test_invalid_position_area_value_pairs(block, start_end);
+ test_invalid_position_area_value_pairs(block, self_start_end);
+ test_invalid_position_area_value_pairs(start_end, self_start_end);
+
+ // Test all invalid combinations of same axis
+ test_invalid_position_area_value_equal_pairs(horizontal);
+ test_invalid_position_area_value_equal_pairs(vertical);
+ test_invalid_position_area_value_equal_pairs(inline);
+ test_invalid_position_area_value_equal_pairs(block);
+ test_invalid_position_area_value_equal_pairs(self_inline);
+ test_invalid_position_area_value_equal_pairs(self_block);
+</script>
diff --git a/tests/wpt/tests/css/css-anchor-position/inset-area-scroll-adjust-ref.html b/tests/wpt/tests/css/css-anchor-position/position-area-scroll-adjust-ref.html
index 5cd863500a7..5cd863500a7 100644
--- a/tests/wpt/tests/css/css-anchor-position/inset-area-scroll-adjust-ref.html
+++ b/tests/wpt/tests/css/css-anchor-position/position-area-scroll-adjust-ref.html
diff --git a/tests/wpt/tests/css/css-anchor-position/position-area-scroll-adjust.html b/tests/wpt/tests/css/css-anchor-position/position-area-scroll-adjust.html
new file mode 100644
index 00000000000..497b526fb62
--- /dev/null
+++ b/tests/wpt/tests/css/css-anchor-position/position-area-scroll-adjust.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html>
+<title>CSS Anchor Positioning: position-area anchored against scrolling anchor</title>
+<link rel="help" href="https://drafts.csswg.org/css-anchor-position/#position-area">
+<link rel="match" href="position-area-scroll-adjust-ref.html">
+<style>
+ #scroller {
+ width: 400px;
+ height: 200px;
+ overflow: auto;
+ }
+ #anchor {
+ background: green;
+ width: 200px;
+ height: 100px;
+ }
+ #anchored {
+ position-area: bottom;
+ margin: 0;
+ padding: 0;
+ border: none;
+ background: green;
+ width: 200px;
+ height: 100px;
+ }
+ .filler { height: 200px; }
+</style>
+<p>You should see a green square below</p>
+<div id="scroller">
+ <div class="filler"></div>
+ <div id="anchor" popovertarget="anchored"></div>
+ <div id="anchored" anchor="anchor" popover></div>
+ <div class="filler"></div>
+ <div class="filler"></div>
+</div>
+<script>
+ anchored.showPopover();
+ scroller.scrollTop = 200;
+</script>
diff --git a/tests/wpt/tests/css/css-anchor-position/position-area-value.html b/tests/wpt/tests/css/css-anchor-position/position-area-value.html
new file mode 100644
index 00000000000..dfe753427e6
--- /dev/null
+++ b/tests/wpt/tests/css/css-anchor-position/position-area-value.html
@@ -0,0 +1,71 @@
+<!DOCTYPE html>
+<title>CSS Anchor Positioning: <'position-area'> value</title>
+<link rel="help" href="https://drafts.csswg.org/css-anchor-position-1/#position-try-fallbacks">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+ #cb {
+ position: relative;
+ width: 200px;
+ height: 200px;
+ border: 1px solid black;
+ }
+ #anchor {
+ position: absolute;
+ left: 100px;
+ top: 100px;
+ width: 80px;
+ height: 80px;
+ background-color: tomato;
+ anchor-name: --a;
+ }
+ #target, #ref {
+ position: absolute;
+ width: 40px;
+ height: 40px;
+ background-color: skyblue;
+ position-area: bottom right;
+ position-anchor: --a;
+ }
+ #ref {
+ background-color: seagreen;
+ }
+</style>
+<style id=style>
+</style>
+<div id=cb>
+ <div id=anchor></div>
+ <div id=target></div>
+ <div id=ref></div>
+</div>
+<script>
+
+// Test that a given <'position-area'> produces the same result as a reference
+// element that is styled with an position-area declaration directly.
+function test_position_area_fn(position_area) {
+ test((t) => {
+ t.add_cleanup(() => {
+ style.textContent = '';
+ });
+ style.textContent = `
+ #target {
+ position-try-fallbacks: ${position_area};
+ }
+ #ref {
+ position-area: ${position_area};
+ }
+ `;
+ assert_equals(target.offsetLeft, ref.offsetLeft, 'offsetLeft');
+ assert_equals(target.offsetTop, ref.offsetTop, 'offsetTop');
+ }, `${position_area}`);
+}
+
+test_position_area_fn('top left');
+test_position_area_fn('span-top left');
+test_position_area_fn('top span-left');
+test_position_area_fn('top center');
+test_position_area_fn('left center');
+test_position_area_fn('start center');
+test_position_area_fn('center start');
+
+</script>
diff --git a/tests/wpt/tests/css/css-anchor-position/position-area-with-insets.html b/tests/wpt/tests/css/css-anchor-position/position-area-with-insets.html
new file mode 100644
index 00000000000..6f6cf438ac1
--- /dev/null
+++ b/tests/wpt/tests/css/css-anchor-position/position-area-with-insets.html
@@ -0,0 +1,79 @@
+<!DOCTYPE html>
+<title>CSS Anchor Positioning: position-area positioning with additional insets</title>
+<link rel="help" href="https://drafts.csswg.org/css-anchor-position/#position-area">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<!-- The grid:
+
+ 100 150 150
+ +--------+--------+--------+
+ | | | |
+ 150 | | | |
+ | | | |
+ +--------+--------+--------+
+ | | | |
+ 75 | | | |
+ | | | |
+ +--------+--------+--------+
+ | | | |
+ 175 | | | |
+ | | | |
+ +--------+--------+--------+
+
+ -->
+<style>
+ #container {
+ position: absolute;
+ width: 400px;
+ height: 400px;
+ }
+ #anchored {
+ position: absolute;
+ align-self: stretch;
+ justify-self: stretch;
+ position-anchor: --anchor;
+ }
+ #anchor {
+ margin-top: 150px;
+ margin-left: 100px;
+ width: 150px;
+ height: 75px;
+ anchor-name: --anchor;
+ }
+</style>
+<div id="container">
+ <div id="anchored"></div>
+ <div id="anchor"></div>
+</div>
+<script>
+ function test_position_area(position_area, insets, expected_offsets) {
+ anchored.style.positionArea = position_area;
+ for (const [prop, value] of Object.entries(insets)) {
+ anchored.style[prop] = value;
+ }
+
+ test(() => {
+ assert_equals(anchored.offsetLeft, expected_offsets.left, "Check expected offsetLeft");
+ assert_equals(anchored.offsetTop, expected_offsets.top, "Check expected offsetTop");
+ assert_equals(anchored.offsetWidth, expected_offsets.width, "Check expected offsetWidth");
+ assert_equals(anchored.offsetHeight, expected_offsets.height, "Check expected offsetHeight");
+ }, "Offsets for position-area: " + position_area + " and insets: " + JSON.stringify(insets));
+ }
+
+ test_position_area("span-all", {top:"5px", bottom:"5px", left:"5px", right:"5px"},
+ {left:5, top:5, width:390, height:390});
+
+ test_position_area("center center", {top:"10px", bottom:"40px", left:"5px", right:"15px"},
+ {left:105, top:160, width:130, height:25});
+
+ test_position_area("left bottom", {top:"10px", bottom:"40px", left:"5px", right:"15px"},
+ {left:5, top:235, width:80, height:125});
+
+ test_position_area("span-right center", {top:"20%", bottom:"auto", left:"auto", right:"25%"},
+ {left:100, top:165, width:225, height:60});
+
+ // No implicit anchor means the position-area should not apply, but the insets still should.
+ anchored.style.positionAnchor = "auto";
+ test_position_area("bottom right", {left:"50px", right:"100px", top:"30px" , bottom:"10px"},
+ {left:50, top:30, width:250, height:360});
+</script>
diff --git a/tests/wpt/tests/css/css-anchor-position/position-area-wm-dir.html b/tests/wpt/tests/css/css-anchor-position/position-area-wm-dir.html
new file mode 100644
index 00000000000..1ca0668067c
--- /dev/null
+++ b/tests/wpt/tests/css/css-anchor-position/position-area-wm-dir.html
@@ -0,0 +1,176 @@
+<!DOCTYPE html>
+<title>CSS Anchor Positioning: position-area with writing-mode and direction</title>
+<link rel="help" href="https://drafts.csswg.org/css-anchor-position/#position-area">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<!-- The grid:
+
+ 100 150 150
+ +--------+--------+--------+
+ | | | |
+ 150 | | | |
+ | | | |
+ +--------+--------+--------+
+ | | | |
+ 75 | | | |
+ | | | |
+ +--------+--------+--------+
+ | | | |
+ 175 | | | |
+ | | | |
+ +--------+--------+--------+
+
+ -->
+<style>
+ #container {
+ position: absolute;
+ width: 400px;
+ height: 400px;
+ }
+ #anchored {
+ position: absolute;
+ align-self: stretch;
+ justify-self: stretch;
+ position-anchor: --anchor;
+ }
+ #anchor {
+ margin-top: 150px;
+ margin-bottom: 175px;
+ margin-left: 100px;
+ margin-right: 150px;
+ width: 150px;
+ height: 75px;
+ anchor-name: --anchor;
+ }
+</style>
+<div id="container">
+ <div id="anchored"></div>
+ <div id="anchor"></div>
+</div>
+<script>
+ function test_position_area(writing_direction, position_area, expected_offsets) {
+ anchored.style.positionArea = position_area;
+ test(() => {
+ assert_equals(anchored.offsetLeft, expected_offsets.left, "Checking offsetLeft");
+ assert_equals(anchored.offsetTop, expected_offsets.top, "Checking offsetTop");
+ assert_equals(anchored.offsetWidth, expected_offsets.width, "Checking offsetWidth");
+ assert_equals(anchored.offsetHeight, expected_offsets.height, "Checking offsetHeight");
+ }, "Offsets for: " + position_area + " with writing-mode / direction: " + writing_direction);
+ }
+
+ const top_left = {left:0, top:0, width:100, height:150};
+ const top_right = {left:250, top:0, width:150, height:150};
+ const bottom_left = {left:0, top:225, width:100, height:175};
+ const bottom_right = {left:250, top:225, width:150, height:175};
+
+ anchored.style.writingMode = "horizontal-tb";
+ anchored.style.direction = "ltr";
+
+ // Writing-mode and direction on container
+ let writing_direction = "containing-block: horizontal-tb / rtl";
+ container.style.writingMode = "horizontal-tb";
+ container.style.direction = "rtl";
+ test_position_area(writing_direction, "start start", top_right);
+ test_position_area(writing_direction, "self-start self-start", top_left);
+ test_position_area(writing_direction, "x-start y-start", top_right);
+ test_position_area(writing_direction, "x-self-start y-self-start", top_left);
+ test_position_area(writing_direction, "inline-start block-end", bottom_right);
+ test_position_area(writing_direction, "self-inline-start self-block-end", bottom_left);
+
+ // containing-block: vertical-lr / ltr
+ // self: horizontal-tb / ltr
+ writing_direction = "containing-block: vertical-lr / ltr";
+ container.style.writingMode = "vertical-lr";
+ container.style.direction = "ltr";
+ test_position_area(writing_direction, "start start", top_left);
+ test_position_area(writing_direction, "self-start self-start", top_left);
+ test_position_area(writing_direction, "x-start y-start", top_left);
+ test_position_area(writing_direction, "x-self-start y-self-start", top_left);
+ test_position_area(writing_direction, "inline-start block-end", top_right);
+ test_position_area(writing_direction, "self-inline-start self-block-end", bottom_left);
+
+ // containing-block: vertical-lr / rtl
+ // self: horizontal-tb / ltr
+ writing_direction = "containing-block: vertical-lr / rtl";
+ container.style.writingMode = "vertical-lr";
+ container.style.direction = "rtl";
+ test_position_area(writing_direction, "start start", bottom_left);
+ test_position_area(writing_direction, "self-start self-start", top_left);
+ test_position_area(writing_direction, "x-start y-start", bottom_left);
+ test_position_area(writing_direction, "x-self-start y-self-start", top_left);
+
+ // containing-block: vertical-rl / ltr
+ // self: horizontal-tb / ltr
+ writing_direction = "containing-block: vertical-rl / ltr";
+ container.style.writingMode = "vertical-rl";
+ container.style.direction = "ltr";
+ test_position_area(writing_direction, "start start", top_right);
+ test_position_area(writing_direction, "self-start self-start", top_left);
+ test_position_area(writing_direction, "x-start y-start", top_right);
+ test_position_area(writing_direction, "x-self-start y-self-start", top_left);
+
+ // containing-block: vertical-rl / rtl
+ // self: horizontal-tb / ltr
+ writing_direction = "containing-block: vertical-rl / rtl";
+ container.style.writingMode = "vertical-rl";
+ container.style.direction = "rtl";
+ test_position_area(writing_direction, "start start", bottom_right);
+ test_position_area(writing_direction, "self-start self-start", top_left);
+ test_position_area(writing_direction, "x-start y-start", bottom_right);
+ test_position_area(writing_direction, "x-self-start y-self-start", top_left);
+
+ // Writing-mode and direction on self
+ container.style.writingMode = "horizontal-tb";
+ container.style.direction = "ltr";
+
+ // containing-block: horizontal-tb / ltr
+ // self: horizontal-tb / rtl
+ writing_direction = "self: horizontal-tb / rtl";
+ anchored.style.writingMode = "horizontal-tb";
+ anchored.style.direction = "rtl";
+ test_position_area(writing_direction, "start start", top_left);
+ test_position_area(writing_direction, "self-start self-start", top_right);
+ test_position_area(writing_direction, "x-start y-start", top_left);
+ test_position_area(writing_direction, "x-self-start y-self-start", top_right);
+
+ // containing-block: horizontal-tb / ltr
+ // self: vertical-lr / ltr
+ writing_direction = "self: vertical-lr / ltr";
+ anchored.style.writingMode = "vertical-lr";
+ anchored.style.direction = "ltr";
+ test_position_area(writing_direction, "start start", top_left);
+ test_position_area(writing_direction, "self-start self-start", top_left);
+ test_position_area(writing_direction, "x-start y-start", top_left);
+ test_position_area(writing_direction, "x-self-start y-self-start", top_left);
+
+ // containing-block: horizontal-tb / ltr
+ // self: vertical-lr / rtl
+ writing_direction = "self: vertical-lr / rtl";
+ anchored.style.writingMode = "vertical-lr";
+ anchored.style.direction = "rtl";
+ test_position_area(writing_direction, "start start", top_left);
+ test_position_area(writing_direction, "self-start self-start", bottom_left);
+ test_position_area(writing_direction, "x-start y-start", top_left);
+ test_position_area(writing_direction, "x-self-start y-self-start", bottom_left);
+
+ // containing-block: horizontal-tb / ltr
+ // self: vertical-rl / ltr
+ writing_direction = "self: vertical-rl / ltr";
+ anchored.style.writingMode = "vertical-rl";
+ anchored.style.direction = "ltr";
+ test_position_area(writing_direction, "start start", top_left);
+ test_position_area(writing_direction, "self-start self-start", top_right);
+ test_position_area(writing_direction, "x-start y-start", top_left);
+ test_position_area(writing_direction, "x-self-start y-self-start", top_right);
+
+ // containing-block: horizontal-tb / ltr
+ // self: vertical-rl / rtl
+ writing_direction = "self: vertical-rl / rtl";
+ anchored.style.writingMode = "vertical-rl";
+ anchored.style.direction = "rtl";
+ test_position_area(writing_direction, "start start", top_left);
+ test_position_area(writing_direction, "self-start self-start", bottom_right);
+ test_position_area(writing_direction, "x-start y-start", top_left);
+ test_position_area(writing_direction, "x-self-start y-self-start", bottom_right);
+
+</script>
diff --git a/tests/wpt/tests/css/css-anchor-position/position-try-order-inset-area.html b/tests/wpt/tests/css/css-anchor-position/position-try-order-inset-area.html
deleted file mode 100644
index 71ae5d78deb..00000000000
--- a/tests/wpt/tests/css/css-anchor-position/position-try-order-inset-area.html
+++ /dev/null
@@ -1,196 +0,0 @@
-<!DOCTYPE html>
-<title>CSS Anchor Positioning: position-try-order behavior with inset-area</title>
-<link rel="help" href="https://drafts.csswg.org/css-anchor-position-1/#position-try-order-property">
-<link rel="help" href="https://drafts.csswg.org/css-anchor-position-1/#inset-area">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<!--
- Note: This test is the inset-area version of position-try-order-basic.html.
--->
-<style>
- #cb {
- position: absolute;
- width: 400px;
- height: 400px;
- border: 1px solid black;
- }
- #anchor {
- position: absolute;
- left: 150px;
- top: 200px;
- width: 150px;
- height: 150px;
- background-color: coral;
- anchor-name: --a;
- }
- #target, #ref {
- position: absolute;
- left: 450px; /* force fallback */
- width: 40px;
- height: 40px;
- background-color: skyblue;
- position-anchor: --a;
- /* Note: align/justify is for cosmetic/debugging reasons only,
- it should not have any effect on the result. */
- align-self: start;
- justify-self: start;
- }
- #ref {
- background-color: seagreen;
- }
-
-/*
-
-The IMCB for --right is the whole area to the right of the anchor, and similarly
-for --left, etc.
-
- ┌──────────────┐
- │ xxxx│
- │ xxxx│
- │ ┌────┐xxxx│
- │ │ │xxxx│
- │ └────┘xxxx│
- │ xxxx│
- │ xxxx│
- └──────────────┘
-
-**/
-
- @position-try --right {
- inset: unset;
- inset-area: right;
- }
- @position-try --left {
- inset: unset;
- inset-area: left;
- }
- @position-try --top {
- inset: unset;
- inset-area: top;
- }
- @position-try --bottom {
- inset: unset;
- inset-area: bottom;
- }
-
-/*
-
-The IMCB for --right-sweep is the area that would be "swept" by the anchor if it
-moved right, and similarly for --left-sweep, etc.
-
- ┌──────────────┐
- │ │
- │ │
- │ ┌────┐xxxx│
- │ │ │xxxx│
- │ └────┘xxxx│
- │ │
- │ │
- └──────────────┘
-
-*/
-
- @position-try --right-sweep {
- inset: unset;
- inset-area: right center;
- }
-
- @position-try --left-sweep {
- inset: unset;
- inset-area: left center;
- }
-
- @position-try --bottom-sweep {
- inset: unset;
- inset-area: bottom center;
- }
-
- @position-try --top-sweep {
- inset: unset;
- inset-area: top center;
- }
-
-</style>
-<style id=style>
-</style>
-<div id=cb>
- <div id=anchor></div>
- <div id=target></div>
- <div id=ref></div>
-</div>
-<script>
-
-// Test that an element with the specified `position_try` gets the same
-// position as a reference element with `position_try_expected`.
-function test_inset_area_order(position_try, position_try_expected) {
- test((t) => {
- style.textContent = `
- #target {
- position-try: ${position_try};
- }
- #ref {
- position-try: ${position_try_expected};
- }
- `;
- assert_true(CSS.supports('position-try', 'normal --x'));
- assert_equals(target.offsetLeft, ref.offsetLeft, 'offsetLeft');
- assert_equals(target.offsetTop, ref.offsetTop, 'offsetTop');
- }, `${position_try} | ${position_try_expected}`);
-}
-
-// Note: --right, --left, --top, and --bottom all fit, but have different
-// inset-modifed containing blocks.
-
-test_inset_area_order('--right', '--right');
-test_inset_area_order('--left', '--left');
-test_inset_area_order('--top', '--top');
-test_inset_area_order('--bottom', '--bottom');
-
-// position-try-order:normal just picks the first fallback.
-test_inset_area_order('--right, --left, --bottom, --top', '--right');
-test_inset_area_order('normal --right, --left, --bottom, --top', '--right');
-test_inset_area_order('normal --top, --left, --bottom, --right', '--top');
-
-// --right and --left have the same IMCB block-size.
-test_inset_area_order('most-block-size --right, --left', '--right');
-test_inset_area_order('most-height --right, --left', '--right');
-// --left has more inline-size than --right.
-test_inset_area_order('most-inline-size --right, --left', '--left');
-test_inset_area_order('most-width --right, --left', '--left');
-
-// --bottom and --top have the same IMCB inline-size.
-test_inset_area_order('most-inline-size --bottom, --top', '--bottom');
-test_inset_area_order('most-width --bottom, --top', '--bottom');
-// --top has more block-size than --bottom.
-test_inset_area_order('most-block-size --bottom, --top', '--top');
-test_inset_area_order('most-height --bottom, --top', '--top');
-
-// --bottom/--top has more IMBC inline-size than --right/--left.
-test_inset_area_order('most-inline-size --right, --left, --bottom, --top', '--bottom');
-test_inset_area_order('most-inline-size --right, --left, --top, --bottom', '--top');
-
-// --right/--left has more IMBC block-size than --bottom/--top.
-test_inset_area_order('most-block-size --bottom, --top, --right, --left', '--right');
-test_inset_area_order('most-block-size --bottom, --top, --left, --right', '--left');
-
-// --left-sweep and --bottom-sweep has the same IMBC inline-size ...
-test_inset_area_order('most-inline-size --left-sweep, --bottom-sweep', '--left-sweep');
-test_inset_area_order('most-inline-size --bottom-sweep, --left-sweep', '--bottom-sweep');
-// ... but not the same block-size.
-test_inset_area_order('most-block-size --left-sweep, --bottom-sweep', '--left-sweep');
-test_inset_area_order('most-block-size --bottom-sweep, --left-sweep', '--left-sweep');
-
-test_inset_area_order('most-inline-size --right-sweep, --left-sweep, --bottom-sweep, --top-sweep', '--left-sweep');
-test_inset_area_order('most-block-size --right-sweep, --left-sweep, --bottom-sweep, --top-sweep', '--top-sweep');
-
-test_inset_area_order(`most-inline-size
- --right-sweep, --left-sweep, --bottom-sweep, --top-sweep,
- --right, --left, --bottom, --top
- `, '--left-sweep');
-
-test_inset_area_order(`most-block-size
- --right-sweep, --left-sweep, --bottom-sweep, --top-sweep,
- --right, --left, --bottom, --top
- `, '--right');
-
-</script>
diff --git a/tests/wpt/tests/css/css-anchor-position/position-try-order-position-area.html b/tests/wpt/tests/css/css-anchor-position/position-try-order-position-area.html
new file mode 100644
index 00000000000..3b7a3475c75
--- /dev/null
+++ b/tests/wpt/tests/css/css-anchor-position/position-try-order-position-area.html
@@ -0,0 +1,196 @@
+<!DOCTYPE html>
+<title>CSS Anchor Positioning: position-try-order behavior with position-area</title>
+<link rel="help" href="https://drafts.csswg.org/css-anchor-position-1/#position-try-order-property">
+<link rel="help" href="https://drafts.csswg.org/css-anchor-position-1/#position-area">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<!--
+ Note: This test is the position-area version of position-try-order-basic.html.
+-->
+<style>
+ #cb {
+ position: absolute;
+ width: 400px;
+ height: 400px;
+ border: 1px solid black;
+ }
+ #anchor {
+ position: absolute;
+ left: 150px;
+ top: 200px;
+ width: 150px;
+ height: 150px;
+ background-color: coral;
+ anchor-name: --a;
+ }
+ #target, #ref {
+ position: absolute;
+ left: 450px; /* force fallback */
+ width: 40px;
+ height: 40px;
+ background-color: skyblue;
+ position-anchor: --a;
+ /* Note: align/justify is for cosmetic/debugging reasons only,
+ it should not have any effect on the result. */
+ align-self: start;
+ justify-self: start;
+ }
+ #ref {
+ background-color: seagreen;
+ }
+
+/*
+
+The IMCB for --right is the whole area to the right of the anchor, and similarly
+for --left, etc.
+
+ ┌──────────────┐
+ │ xxxx│
+ │ xxxx│
+ │ ┌────┐xxxx│
+ │ │ │xxxx│
+ │ └────┘xxxx│
+ │ xxxx│
+ │ xxxx│
+ └──────────────┘
+
+**/
+
+ @position-try --right {
+ inset: unset;
+ position-area: right;
+ }
+ @position-try --left {
+ inset: unset;
+ position-area: left;
+ }
+ @position-try --top {
+ inset: unset;
+ position-area: top;
+ }
+ @position-try --bottom {
+ inset: unset;
+ position-area: bottom;
+ }
+
+/*
+
+The IMCB for --right-sweep is the area that would be "swept" by the anchor if it
+moved right, and similarly for --left-sweep, etc.
+
+ ┌──────────────┐
+ │ │
+ │ │
+ │ ┌────┐xxxx│
+ │ │ │xxxx│
+ │ └────┘xxxx│
+ │ │
+ │ │
+ └──────────────┘
+
+*/
+
+ @position-try --right-sweep {
+ inset: unset;
+ position-area: right center;
+ }
+
+ @position-try --left-sweep {
+ inset: unset;
+ position-area: left center;
+ }
+
+ @position-try --bottom-sweep {
+ inset: unset;
+ position-area: bottom center;
+ }
+
+ @position-try --top-sweep {
+ inset: unset;
+ position-area: top center;
+ }
+
+</style>
+<style id=style>
+</style>
+<div id=cb>
+ <div id=anchor></div>
+ <div id=target></div>
+ <div id=ref></div>
+</div>
+<script>
+
+// Test that an element with the specified `position_try` gets the same
+// position as a reference element with `position_try_expected`.
+function test_position_area_order(position_try, position_try_expected) {
+ test((t) => {
+ style.textContent = `
+ #target {
+ position-try: ${position_try};
+ }
+ #ref {
+ position-try: ${position_try_expected};
+ }
+ `;
+ assert_true(CSS.supports('position-try', 'normal --x'));
+ assert_equals(target.offsetLeft, ref.offsetLeft, 'offsetLeft');
+ assert_equals(target.offsetTop, ref.offsetTop, 'offsetTop');
+ }, `${position_try} | ${position_try_expected}`);
+}
+
+// Note: --right, --left, --top, and --bottom all fit, but have different
+// inset-modifed containing blocks.
+
+test_position_area_order('--right', '--right');
+test_position_area_order('--left', '--left');
+test_position_area_order('--top', '--top');
+test_position_area_order('--bottom', '--bottom');
+
+// position-try-order:normal just picks the first fallback.
+test_position_area_order('--right, --left, --bottom, --top', '--right');
+test_position_area_order('normal --right, --left, --bottom, --top', '--right');
+test_position_area_order('normal --top, --left, --bottom, --right', '--top');
+
+// --right and --left have the same IMCB block-size.
+test_position_area_order('most-block-size --right, --left', '--right');
+test_position_area_order('most-height --right, --left', '--right');
+// --left has more inline-size than --right.
+test_position_area_order('most-inline-size --right, --left', '--left');
+test_position_area_order('most-width --right, --left', '--left');
+
+// --bottom and --top have the same IMCB inline-size.
+test_position_area_order('most-inline-size --bottom, --top', '--bottom');
+test_position_area_order('most-width --bottom, --top', '--bottom');
+// --top has more block-size than --bottom.
+test_position_area_order('most-block-size --bottom, --top', '--top');
+test_position_area_order('most-height --bottom, --top', '--top');
+
+// --bottom/--top has more IMBC inline-size than --right/--left.
+test_position_area_order('most-inline-size --right, --left, --bottom, --top', '--bottom');
+test_position_area_order('most-inline-size --right, --left, --top, --bottom', '--top');
+
+// --right/--left has more IMBC block-size than --bottom/--top.
+test_position_area_order('most-block-size --bottom, --top, --right, --left', '--right');
+test_position_area_order('most-block-size --bottom, --top, --left, --right', '--left');
+
+// --left-sweep and --bottom-sweep has the same IMBC inline-size ...
+test_position_area_order('most-inline-size --left-sweep, --bottom-sweep', '--left-sweep');
+test_position_area_order('most-inline-size --bottom-sweep, --left-sweep', '--bottom-sweep');
+// ... but not the same block-size.
+test_position_area_order('most-block-size --left-sweep, --bottom-sweep', '--left-sweep');
+test_position_area_order('most-block-size --bottom-sweep, --left-sweep', '--left-sweep');
+
+test_position_area_order('most-inline-size --right-sweep, --left-sweep, --bottom-sweep, --top-sweep', '--left-sweep');
+test_position_area_order('most-block-size --right-sweep, --left-sweep, --bottom-sweep, --top-sweep', '--top-sweep');
+
+test_position_area_order(`most-inline-size
+ --right-sweep, --left-sweep, --bottom-sweep, --top-sweep,
+ --right, --left, --bottom, --top
+ `, '--left-sweep');
+
+test_position_area_order(`most-block-size
+ --right-sweep, --left-sweep, --bottom-sweep, --top-sweep,
+ --right, --left, --bottom, --top
+ `, '--right');
+
+</script>
diff --git a/tests/wpt/tests/css/css-anchor-position/position-try-switch-from-fixed-anchor.html b/tests/wpt/tests/css/css-anchor-position/position-try-switch-from-fixed-anchor.html
index df398e0090d..4c62dc99332 100644
--- a/tests/wpt/tests/css/css-anchor-position/position-try-switch-from-fixed-anchor.html
+++ b/tests/wpt/tests/css/css-anchor-position/position-try-switch-from-fixed-anchor.html
@@ -31,7 +31,7 @@ body {
}
#anchored {
position-anchor: --anchor1;
- inset-area: top;
+ position-area: top;
position-try-fallbacks: --fixed;
position: fixed;
width: 50px;
@@ -39,7 +39,7 @@ body {
background: blue;
}
@position-try --fixed {
- inset-area: top left;
+ position-area: top left;
position-anchor: --anchor2;
}
</style>
diff --git a/tests/wpt/tests/css/css-anchor-position/position-try-switch-to-fixed-anchor.html b/tests/wpt/tests/css/css-anchor-position/position-try-switch-to-fixed-anchor.html
index 469064e7e28..5024f5bd48d 100644
--- a/tests/wpt/tests/css/css-anchor-position/position-try-switch-to-fixed-anchor.html
+++ b/tests/wpt/tests/css/css-anchor-position/position-try-switch-to-fixed-anchor.html
@@ -30,7 +30,7 @@ body {
}
#anchored {
position-anchor: --anchor1;
- inset-area: top;
+ position-area: top;
position-try-fallbacks: --fixed;
position: fixed;
width: 50px;
@@ -38,7 +38,7 @@ body {
background: blue;
}
@position-try --fixed {
- inset-area: top left;
+ position-area: top left;
position-anchor: --anchor2;
}
</style>
diff --git a/tests/wpt/tests/css/css-anchor-position/position-visibility-add-no-overflow.html b/tests/wpt/tests/css/css-anchor-position/position-visibility-add-no-overflow.html
index de0647f88be..a71327ba4ca 100644
--- a/tests/wpt/tests/css/css-anchor-position/position-visibility-add-no-overflow.html
+++ b/tests/wpt/tests/css/css-anchor-position/position-visibility-add-no-overflow.html
@@ -21,7 +21,7 @@
.target {
position: absolute;
- inset-area: block-end;
+ position-area: block-end;
width: 100px;
height: 100px;
background: red;
diff --git a/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-valid.tentative.html b/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-valid.tentative.html
index 4b069c253b8..d04bc7c4974 100644
--- a/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-valid.tentative.html
+++ b/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-valid.tentative.html
@@ -14,7 +14,7 @@
.target {
position: absolute;
position-visibility: anchors-valid;
- inset-area: block-end;
+ position-area: block-end;
width: 100px;
height: 100px;
background: red;
diff --git a/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-after-scroll-in.html b/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-after-scroll-in.html
index f13c5009150..4a038f8de3e 100644
--- a/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-after-scroll-in.html
+++ b/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-after-scroll-in.html
@@ -28,7 +28,7 @@
#target {
position-anchor: --a1;
position-visibility: anchors-visible;
- inset-area: block-end;
+ position-area: block-end;
width: 100px;
height: 100px;
background: green;
diff --git a/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-after-scroll-out.html b/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-after-scroll-out.html
index 4294091b899..2cf2fb3e225 100644
--- a/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-after-scroll-out.html
+++ b/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-after-scroll-out.html
@@ -28,7 +28,7 @@
#target {
position-anchor: --a1;
position-visibility: anchors-visible;
- inset-area: bottom;
+ position-area: bottom;
width: 100px;
height: 100px;
background: red;
diff --git a/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-both-position-fixed.tentative.html b/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-both-position-fixed.tentative.html
index 3ea26c896e9..c603288f0a7 100644
--- a/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-both-position-fixed.tentative.html
+++ b/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-both-position-fixed.tentative.html
@@ -18,7 +18,7 @@
#target {
position-anchor: --a1;
position-visibility: anchors-visible;
- inset-area: bottom right;
+ position-area: bottom right;
width: 100px;
height: 100px;
background: red;
diff --git a/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-chained-001.html b/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-chained-001.html
index 3f515a56868..cdceba665ee 100644
--- a/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-chained-001.html
+++ b/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-chained-001.html
@@ -33,7 +33,7 @@
.anchored {
position-visibility: anchors-visible;
- inset-area: bottom;
+ position-area: bottom;
width: 100px;
height: 50px;
background: red;
diff --git a/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-chained-002.html b/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-chained-002.html
index aa1dcd0eb96..cd34d07acc3 100644
--- a/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-chained-002.html
+++ b/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-chained-002.html
@@ -32,7 +32,7 @@
.anchored {
position-visibility: anchors-visible;
- inset-area: bottom;
+ position-area: bottom;
width: 100px;
height: 50px;
background: red;
diff --git a/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-chained-003.html b/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-chained-003.html
index 9a1e077de08..7b2766d2e5c 100644
--- a/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-chained-003.html
+++ b/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-chained-003.html
@@ -41,7 +41,7 @@
.anchored {
position-visibility: anchors-visible;
- inset-area: bottom;
+ position-area: bottom;
width: 100px;
height: 50px;
background: red;
diff --git a/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-chained-004.html b/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-chained-004.html
index 62ab7578a34..e76e4ff1600 100644
--- a/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-chained-004.html
+++ b/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-chained-004.html
@@ -33,7 +33,7 @@
.anchored {
position-visibility: anchors-visible;
- inset-area: bottom;
+ position-area: bottom;
width: 100px;
height: 50px;
background: green;
diff --git a/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-change-anchor.html b/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-change-anchor.html
index 117628e7dca..3fda2fa4371 100644
--- a/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-change-anchor.html
+++ b/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-change-anchor.html
@@ -33,7 +33,7 @@
#target {
position-anchor: --a2;
position-visibility: anchors-visible;
- inset-area: bottom;
+ position-area: bottom;
width: 100px;
height: 100px;
background: green;
diff --git a/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-change-css-visibility.html b/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-change-css-visibility.html
index f9c598374c1..290de127a23 100644
--- a/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-change-css-visibility.html
+++ b/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-change-css-visibility.html
@@ -22,7 +22,7 @@
#target {
position-anchor: --a1;
position-visibility: anchors-visible;
- inset-area: bottom;
+ position-area: bottom;
width: 100px;
height: 100px;
background: green;
diff --git a/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-css-visibility.html b/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-css-visibility.html
index a6990253251..8ef4762818b 100644
--- a/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-css-visibility.html
+++ b/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-css-visibility.html
@@ -19,7 +19,7 @@
#target {
position-anchor: --a1;
position-visibility: anchors-visible;
- inset-area: bottom right;
+ position-area: bottom right;
width: 100px;
height: 100px;
background: red;
diff --git a/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-non-intervening-container.html b/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-non-intervening-container.html
index 9c4d085b7ea..42597c4ccc2 100644
--- a/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-non-intervening-container.html
+++ b/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-non-intervening-container.html
@@ -36,7 +36,7 @@
#target {
position-anchor: --a1;
position-visibility: anchors-visible;
- inset-area: right;
+ position-area: right;
width: 100px;
height: 100px;
background: green;
diff --git a/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-position-fixed.tentative.html b/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-position-fixed.tentative.html
index 25665ae4668..9c3495a635d 100644
--- a/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-position-fixed.tentative.html
+++ b/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-position-fixed.tentative.html
@@ -18,7 +18,7 @@
#target {
position-anchor: --a1;
position-visibility: anchors-visible;
- inset-area: bottom right;
+ position-area: bottom right;
width: 100px;
height: 100px;
background: red;
diff --git a/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-stacked-child.html b/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-stacked-child.html
index e563fecfed1..84b5feb02fc 100644
--- a/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-stacked-child.html
+++ b/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-stacked-child.html
@@ -25,7 +25,7 @@
#target {
position-anchor: --a1;
position-visibility: anchors-visible;
- inset-area: bottom right;
+ position-area: bottom right;
width: 100px;
height: 100px;
background: red;
diff --git a/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-stacked-child.tentative.html b/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-stacked-child.tentative.html
index 7c0d5dc6aad..4a9fcc0ae50 100644
--- a/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-stacked-child.tentative.html
+++ b/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-stacked-child.tentative.html
@@ -25,7 +25,7 @@
#target {
position-anchor: --a1;
position-visibility: anchors-visible;
- inset-area: bottom right;
+ position-area: bottom right;
width: 100px;
height: 100px;
background: red;
diff --git a/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-with-position.html b/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-with-position.html
index 43dd2cc7821..8ad3eb7e310 100644
--- a/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-with-position.html
+++ b/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible-with-position.html
@@ -27,7 +27,7 @@
#target {
position-anchor: --a1;
position-visibility: anchors-visible;
- inset-area: bottom right;
+ position-area: bottom right;
width: 100px;
height: 100px;
background: red;
diff --git a/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible.html b/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible.html
index 78daffb11bb..db246311f94 100644
--- a/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible.html
+++ b/tests/wpt/tests/css/css-anchor-position/position-visibility-anchors-visible.html
@@ -25,7 +25,7 @@
#target {
position-anchor: --a1;
position-visibility: anchors-visible;
- inset-area: bottom right;
+ position-area: bottom right;
width: 100px;
height: 100px;
background: red;
diff --git a/tests/wpt/tests/css/css-anchor-position/position-visibility-no-overflow-stacked-child.html b/tests/wpt/tests/css/css-anchor-position/position-visibility-no-overflow-stacked-child.html
index 1ea5ff9a1ee..78a7b3e6202 100644
--- a/tests/wpt/tests/css/css-anchor-position/position-visibility-no-overflow-stacked-child.html
+++ b/tests/wpt/tests/css/css-anchor-position/position-visibility-no-overflow-stacked-child.html
@@ -21,7 +21,7 @@
.target {
position: absolute;
position-visibility: no-overflow;
- inset-area: block-end;
+ position-area: block-end;
width: 100px;
height: 100px;
background: red;
diff --git a/tests/wpt/tests/css/css-anchor-position/position-visibility-no-overflow.html b/tests/wpt/tests/css/css-anchor-position/position-visibility-no-overflow.html
index ea3b2d08026..0569a9d179c 100644
--- a/tests/wpt/tests/css/css-anchor-position/position-visibility-no-overflow.html
+++ b/tests/wpt/tests/css/css-anchor-position/position-visibility-no-overflow.html
@@ -21,7 +21,7 @@
.target {
position: absolute;
position-visibility: no-overflow;
- inset-area: block-end;
+ position-area: block-end;
width: 100px;
height: 100px;
background: red;
diff --git a/tests/wpt/tests/css/css-anchor-position/position-visibility-remove-anchors-visible.html b/tests/wpt/tests/css/css-anchor-position/position-visibility-remove-anchors-visible.html
index 95be15ca55b..3408642ad2b 100644
--- a/tests/wpt/tests/css/css-anchor-position/position-visibility-remove-anchors-visible.html
+++ b/tests/wpt/tests/css/css-anchor-position/position-visibility-remove-anchors-visible.html
@@ -28,7 +28,7 @@
#target {
position-anchor: --a1;
position-visibility: anchors-visible;
- inset-area: bottom;
+ position-area: bottom;
width: 100px;
height: 100px;
background: green;
diff --git a/tests/wpt/tests/css/css-anchor-position/position-visibility-remove-no-overflow.html b/tests/wpt/tests/css/css-anchor-position/position-visibility-remove-no-overflow.html
index 2cd2ed9fa30..1761bbea0bf 100644
--- a/tests/wpt/tests/css/css-anchor-position/position-visibility-remove-no-overflow.html
+++ b/tests/wpt/tests/css/css-anchor-position/position-visibility-remove-no-overflow.html
@@ -22,7 +22,7 @@
.target {
position: absolute;
position-visibility: no-overflow;
- inset-area: block-end;
+ position-area: block-end;
width: 100px;
height: 100px;
background: green;
diff --git a/tests/wpt/tests/css/css-anchor-position/property-interpolations.html b/tests/wpt/tests/css/css-anchor-position/property-interpolations.html
index 5687e34cfd6..4dc6c71ab2c 100644
--- a/tests/wpt/tests/css/css-anchor-position/property-interpolations.html
+++ b/tests/wpt/tests/css/css-anchor-position/property-interpolations.html
@@ -30,12 +30,12 @@
});
test_no_interpolation({
- property: 'inset-area',
+ property: 'position-area',
from: 'none',
to: 'center',
});
test_no_interpolation({
- property: 'inset-area',
+ property: 'position-area',
from: 'left',
to: 'right',
});
diff --git a/tests/wpt/tests/css/css-anchor-position/try-tactic-inset-area.html b/tests/wpt/tests/css/css-anchor-position/try-tactic-inset-area.html
deleted file mode 100644
index 9e53fab91fc..00000000000
--- a/tests/wpt/tests/css/css-anchor-position/try-tactic-inset-area.html
+++ /dev/null
@@ -1,251 +0,0 @@
-<!DOCTYPE html>
-<title>CSS Anchor Positioning: try-tactic, inset-area</title>
-<link rel="help" href="https://drafts.csswg.org/css-anchor-position-1/#typedef-position-try-fallbacks-try-tactic">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<style>
- #cb {
- position: absolute;
- width: 400px;
- height: 400px;
- border: 1px solid black;
- }
- #anchor {
- position: absolute;
- left: 150px;
- top: 150px;
- width: 100px;
- height: 50px;
- background-color: coral;
- }
- #target {
- position: absolute;
- left: 450px; /* force fallback */
- width: 40px;
- height: 40px;
- background-color: skyblue;
- }
-</style>
-<style id=style>
-</style>
-<div id=cb>
- <div id=target></div>
-</div>
-<script>
-
-function test_computed_value(try_tactic, property, value, expected, direction, writing_mode) {
- if (direction==undefined) {
- direction = 'ltr';
- }
- if (writing_mode==undefined) {
- writing_mode = 'horizontal-tb';
- }
- test((t) => {
- t.add_cleanup(() => {
- style.textContent = '';
- document.documentElement.style = '';
- });
- document.documentElement.style.direction = direction;
- document.documentElement.style.writingMode = writing_mode;
- style.textContent = `
- @position-try --pf {
- inset: initial;
- ${property}:${value};
- }
- #target {
- position-try-fallbacks: --pf ${try_tactic};
- }
- `;
- assert_equals(getComputedStyle(target).getPropertyValue(property), expected);
- }, `${try_tactic}, ${property}:${value}, ${direction} ${writing_mode}`);
-}
-
-
-// Physical:
-
-test_computed_value('flip-inline', 'inset-area', 'left top', 'right top');
-test_computed_value('flip-inline', 'inset-area', 'left bottom', 'right bottom');
-test_computed_value('flip-inline', 'inset-area', 'right bottom', 'left bottom');
-test_computed_value('flip-inline', 'inset-area', 'right top', 'left top');
-
-test_computed_value('flip-block', 'inset-area', 'left top', 'left bottom');
-test_computed_value('flip-block', 'inset-area', 'left bottom', 'left top');
-test_computed_value('flip-block', 'inset-area', 'right bottom', 'right top');
-test_computed_value('flip-block', 'inset-area', 'right top', 'right bottom');
-
-test_computed_value('flip-block flip-inline', 'inset-area', 'left top', 'right bottom');
-test_computed_value('flip-block flip-inline', 'inset-area', 'left bottom', 'right top');
-test_computed_value('flip-block flip-inline', 'inset-area', 'right bottom', 'left top');
-test_computed_value('flip-block flip-inline', 'inset-area', 'right top', 'left bottom');
-
-test_computed_value('flip-start', 'inset-area', 'left top', 'left top');
-test_computed_value('flip-start', 'inset-area', 'left bottom', 'right top');
-test_computed_value('flip-start', 'inset-area', 'right bottom', 'right bottom');
-test_computed_value('flip-start', 'inset-area', 'right top', 'left bottom');
-
-test_computed_value('flip-block flip-start', 'inset-area', 'left top', 'right top');
-test_computed_value('flip-block flip-start', 'inset-area', 'left bottom', 'left top');
-test_computed_value('flip-block flip-start', 'inset-area', 'right bottom', 'left bottom');
-test_computed_value('flip-block flip-start', 'inset-area', 'right top', 'right bottom');
-
-test_computed_value('flip-inline flip-start', 'inset-area', 'left top', 'left bottom');
-test_computed_value('flip-inline flip-start', 'inset-area', 'left bottom', 'right bottom');
-test_computed_value('flip-inline flip-start', 'inset-area', 'right bottom', 'right top');
-test_computed_value('flip-inline flip-start', 'inset-area', 'right top', 'left top');
-
-test_computed_value('flip-block flip-inline flip-start', 'inset-area', 'left top', 'right bottom');
-test_computed_value('flip-block flip-inline flip-start', 'inset-area', 'left bottom', 'left bottom');
-test_computed_value('flip-block flip-inline flip-start', 'inset-area', 'right bottom', 'left top');
-test_computed_value('flip-block flip-inline flip-start', 'inset-area', 'right top', 'right top');
-
-// Variations:
-test_computed_value('flip-block flip-inline', 'inset-area', 'span-left span-top', 'span-right span-bottom');
-
-// XY:
-
-test_computed_value('flip-inline', 'inset-area', 'x-start y-start', 'x-end y-start');
-test_computed_value('flip-inline', 'inset-area', 'x-start y-end', 'x-end y-end');
-test_computed_value('flip-inline', 'inset-area', 'x-end y-end', 'x-start y-end');
-test_computed_value('flip-inline', 'inset-area', 'x-end y-start', 'x-start y-start');
-
-test_computed_value('flip-block', 'inset-area', 'x-start y-start', 'x-start y-end');
-test_computed_value('flip-block', 'inset-area', 'x-start y-end', 'x-start y-start');
-test_computed_value('flip-block', 'inset-area', 'x-end y-end', 'x-end y-start');
-test_computed_value('flip-block', 'inset-area', 'x-end y-start', 'x-end y-end');
-
-test_computed_value('flip-block flip-inline', 'inset-area', 'x-start y-start', 'x-end y-end');
-test_computed_value('flip-block flip-inline', 'inset-area', 'x-start y-end', 'x-end y-start');
-test_computed_value('flip-block flip-inline', 'inset-area', 'x-end y-end', 'x-start y-start');
-test_computed_value('flip-block flip-inline', 'inset-area', 'x-end y-start', 'x-start y-end');
-
-test_computed_value('flip-start', 'inset-area', 'x-start y-start', 'x-start y-start');
-test_computed_value('flip-start', 'inset-area', 'x-start y-end', 'x-end y-start');
-test_computed_value('flip-start', 'inset-area', 'x-end y-end', 'x-end y-end');
-test_computed_value('flip-start', 'inset-area', 'x-end y-start', 'x-start y-end');
-
-test_computed_value('flip-block flip-start', 'inset-area', 'x-start y-start', 'x-end y-start');
-test_computed_value('flip-block flip-start', 'inset-area', 'x-start y-end', 'x-start y-start');
-test_computed_value('flip-block flip-start', 'inset-area', 'x-end y-end', 'x-start y-end');
-test_computed_value('flip-block flip-start', 'inset-area', 'x-end y-start', 'x-end y-end');
-
-test_computed_value('flip-inline flip-start', 'inset-area', 'x-start y-start', 'x-start y-end');
-test_computed_value('flip-inline flip-start', 'inset-area', 'x-start y-end', 'x-end y-end');
-test_computed_value('flip-inline flip-start', 'inset-area', 'x-end y-end', 'x-end y-start');
-test_computed_value('flip-inline flip-start', 'inset-area', 'x-end y-start', 'x-start y-start');
-
-test_computed_value('flip-block flip-inline flip-start', 'inset-area', 'x-start y-start', 'x-end y-end');
-test_computed_value('flip-block flip-inline flip-start', 'inset-area', 'x-start y-end', 'x-start y-end');
-test_computed_value('flip-block flip-inline flip-start', 'inset-area', 'x-end y-end', 'x-start y-start');
-test_computed_value('flip-block flip-inline flip-start', 'inset-area', 'x-end y-start', 'x-end y-start');
-
-// Variations:
-test_computed_value('flip-block flip-inline', 'inset-area', 'span-x-start span-y-start', 'span-x-end span-y-end');
-test_computed_value('flip-block flip-inline', 'inset-area', 'x-self-start y-self-start', 'x-self-end y-self-end');
-test_computed_value('flip-block flip-inline', 'inset-area', 'span-x-self-start span-y-self-start', 'span-x-self-end span-y-self-end');
-
-// Logical:
-
-test_computed_value('flip-inline', 'inset-area', 'block-start inline-start', 'block-start inline-end');
-test_computed_value('flip-inline', 'inset-area', 'block-end inline-start', 'block-end inline-end');
-test_computed_value('flip-inline', 'inset-area', 'block-end inline-end', 'block-end inline-start');
-test_computed_value('flip-inline', 'inset-area', 'block-start inline-end', 'block-start inline-start');
-
-test_computed_value('flip-block', 'inset-area', 'block-start inline-start', 'block-end inline-start');
-test_computed_value('flip-block', 'inset-area', 'block-end inline-start', 'block-start inline-start');
-test_computed_value('flip-block', 'inset-area', 'block-end inline-end', 'block-start inline-end');
-test_computed_value('flip-block', 'inset-area', 'block-start inline-end', 'block-end inline-end');
-
-test_computed_value('flip-block flip-inline', 'inset-area', 'block-start inline-start', 'block-end inline-end');
-test_computed_value('flip-block flip-inline', 'inset-area', 'block-end inline-start', 'block-start inline-end');
-test_computed_value('flip-block flip-inline', 'inset-area', 'block-end inline-end', 'block-start inline-start');
-test_computed_value('flip-block flip-inline', 'inset-area', 'block-start inline-end', 'block-end inline-start');
-
-test_computed_value('flip-start', 'inset-area', 'block-start inline-start', 'block-start inline-start');
-test_computed_value('flip-start', 'inset-area', 'block-end inline-start', 'block-start inline-end');
-test_computed_value('flip-start', 'inset-area', 'block-end inline-end', 'block-end inline-end');
-test_computed_value('flip-start', 'inset-area', 'block-start inline-end', 'block-end inline-start');
-
-test_computed_value('flip-block flip-start', 'inset-area', 'block-start inline-start', 'block-start inline-end');
-test_computed_value('flip-block flip-start', 'inset-area', 'block-end inline-start', 'block-start inline-start');
-test_computed_value('flip-block flip-start', 'inset-area', 'block-end inline-end', 'block-end inline-start');
-test_computed_value('flip-block flip-start', 'inset-area', 'block-start inline-end', 'block-end inline-end');
-
-test_computed_value('flip-inline flip-start', 'inset-area', 'block-start inline-start', 'block-end inline-start');
-test_computed_value('flip-inline flip-start', 'inset-area', 'block-end inline-start', 'block-end inline-end');
-test_computed_value('flip-inline flip-start', 'inset-area', 'block-end inline-end', 'block-start inline-end');
-test_computed_value('flip-inline flip-start', 'inset-area', 'block-start inline-end', 'block-start inline-start');
-
-test_computed_value('flip-block flip-inline flip-start', 'inset-area', 'block-start inline-start', 'block-end inline-end');
-test_computed_value('flip-block flip-inline flip-start', 'inset-area', 'block-end inline-start', 'block-end inline-start');
-test_computed_value('flip-block flip-inline flip-start', 'inset-area', 'block-end inline-end', 'block-start inline-start');
-test_computed_value('flip-block flip-inline flip-start', 'inset-area', 'block-start inline-end', 'block-start inline-end');
-
-// Variations:
-test_computed_value('flip-block flip-inline', 'inset-area', 'span-block-start span-inline-start', 'span-block-end span-inline-end');
-test_computed_value('flip-block flip-inline', 'inset-area', 'self-block-start self-inline-start', 'self-block-end self-inline-end');
-test_computed_value('flip-block flip-inline', 'inset-area', 'span-self-block-start span-self-inline-start', 'span-self-block-end span-self-inline-end');
-
-// start/end
-
-test_computed_value('', 'inset-area', 'start end', 'start end');
-
-test_computed_value('flip-block', 'inset-area', 'start end', 'end');
-
-test_computed_value('flip-inline', 'inset-area', 'start end', 'start');
-
-test_computed_value('flip-block flip-inline', 'inset-area', 'start end', 'end start');
-
-test_computed_value('flip-start', 'inset-area', 'start', 'start');
-test_computed_value('flip-start', 'inset-area', 'end', 'end');
-test_computed_value('flip-start', 'inset-area', 'start end', 'end start');
-
-test_computed_value('flip-block flip-start', 'inset-area', 'start end', 'end');
-
-test_computed_value('flip-inline flip-start', 'inset-area', 'start end', 'start');
-
-test_computed_value('flip-block flip-inline flip-start', 'inset-area', 'start end', 'start end');
-
-// Variations:
-
-test_computed_value('flip-block flip-inline', 'inset-area', 'span-start span-end', 'span-end span-start');
-test_computed_value('flip-block flip-inline', 'inset-area', 'self-start self-end', 'self-end self-start');
-test_computed_value('flip-block flip-inline', 'inset-area', 'span-self-start span-self-end', 'span-self-end span-self-start');
-
-// center
-test_computed_value('flip-block', 'inset-area', 'left center', 'left center');
-test_computed_value('flip-block', 'inset-area', 'center top', 'center bottom');
-test_computed_value('flip-block', 'inset-area', 'center', 'center');
-test_computed_value('flip-block', 'inset-area', 'start center', 'end center');
-test_computed_value('flip-block', 'inset-area', 'center start', 'center start');
-test_computed_value('flip-inline', 'inset-area', 'center start', 'center end');
-test_computed_value('flip-start', 'inset-area', 'center start', 'start center');
-
-// span-all
-test_computed_value('flip-block', 'inset-area', 'left span-all', 'left');
-test_computed_value('flip-block', 'inset-area', 'span-all top', 'bottom');
-test_computed_value('flip-block', 'inset-area', 'span-all', 'span-all');
-test_computed_value('flip-block', 'inset-area', 'start span-all', 'end span-all');
-test_computed_value('flip-block', 'inset-area', 'span-all start', 'span-all start');
-test_computed_value('flip-inline', 'inset-area', 'span-all start', 'span-all end');
-test_computed_value('flip-start', 'inset-area', 'span-all start', 'start span-all');
-
-// Span mix:
-test_computed_value('flip-block', 'inset-area', 'left span-top', 'left span-bottom');
-test_computed_value('flip-inline', 'inset-area', 'left span-top', 'right span-top');
-test_computed_value('flip-start', 'inset-area', 'span-block-start inline-end', 'block-end span-inline-start');
-
-// Writing modes:
-test_computed_value('flip-block', 'inset-area', 'left top', 'right top', 'ltr', 'vertical-rl');
-
-test_computed_value('', 'inset-area', 'x-start y-start', 'x-start y-start', 'rtl');
-test_computed_value('flip-block', 'inset-area', 'x-start y-start', 'x-start y-end', 'rtl');
-test_computed_value('flip-inline', 'inset-area', 'x-start y-start', 'x-end y-start', 'rtl');
-test_computed_value('flip-block', 'inset-area', 'x-end y-start', 'x-start y-start', 'ltr', 'vertical-rl');
-test_computed_value('flip-inline', 'inset-area', 'x-end y-start', 'x-end y-end', 'ltr', 'vertical-rl');
-
-test_computed_value('flip-inline', 'inset-area', 'start end', 'start', 'rtl');
-test_computed_value('flip-inline', 'inset-area', 'start end', 'start', 'ltr', 'vertical-rl');
-test_computed_value('flip-block', 'inset-area', 'start end', 'end', 'rtl');
-test_computed_value('flip-block', 'inset-area', 'start end', 'end', 'ltr', 'vertical-rl');
-
-</script>
diff --git a/tests/wpt/tests/css/css-anchor-position/try-tactic-position-area.html b/tests/wpt/tests/css/css-anchor-position/try-tactic-position-area.html
new file mode 100644
index 00000000000..e050dbccef2
--- /dev/null
+++ b/tests/wpt/tests/css/css-anchor-position/try-tactic-position-area.html
@@ -0,0 +1,251 @@
+<!DOCTYPE html>
+<title>CSS Anchor Positioning: try-tactic, position-area</title>
+<link rel="help" href="https://drafts.csswg.org/css-anchor-position-1/#typedef-position-try-fallbacks-try-tactic">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+ #cb {
+ position: absolute;
+ width: 400px;
+ height: 400px;
+ border: 1px solid black;
+ }
+ #anchor {
+ position: absolute;
+ left: 150px;
+ top: 150px;
+ width: 100px;
+ height: 50px;
+ background-color: coral;
+ }
+ #target {
+ position: absolute;
+ left: 450px; /* force fallback */
+ width: 40px;
+ height: 40px;
+ background-color: skyblue;
+ }
+</style>
+<style id=style>
+</style>
+<div id=cb>
+ <div id=target></div>
+</div>
+<script>
+
+function test_computed_value(try_tactic, property, value, expected, direction, writing_mode) {
+ if (direction==undefined) {
+ direction = 'ltr';
+ }
+ if (writing_mode==undefined) {
+ writing_mode = 'horizontal-tb';
+ }
+ test((t) => {
+ t.add_cleanup(() => {
+ style.textContent = '';
+ document.documentElement.style = '';
+ });
+ document.documentElement.style.direction = direction;
+ document.documentElement.style.writingMode = writing_mode;
+ style.textContent = `
+ @position-try --pf {
+ inset: initial;
+ ${property}:${value};
+ }
+ #target {
+ position-try-fallbacks: --pf ${try_tactic};
+ }
+ `;
+ assert_equals(getComputedStyle(target).getPropertyValue(property), expected);
+ }, `${try_tactic}, ${property}:${value}, ${direction} ${writing_mode}`);
+}
+
+
+// Physical:
+
+test_computed_value('flip-inline', 'position-area', 'left top', 'right top');
+test_computed_value('flip-inline', 'position-area', 'left bottom', 'right bottom');
+test_computed_value('flip-inline', 'position-area', 'right bottom', 'left bottom');
+test_computed_value('flip-inline', 'position-area', 'right top', 'left top');
+
+test_computed_value('flip-block', 'position-area', 'left top', 'left bottom');
+test_computed_value('flip-block', 'position-area', 'left bottom', 'left top');
+test_computed_value('flip-block', 'position-area', 'right bottom', 'right top');
+test_computed_value('flip-block', 'position-area', 'right top', 'right bottom');
+
+test_computed_value('flip-block flip-inline', 'position-area', 'left top', 'right bottom');
+test_computed_value('flip-block flip-inline', 'position-area', 'left bottom', 'right top');
+test_computed_value('flip-block flip-inline', 'position-area', 'right bottom', 'left top');
+test_computed_value('flip-block flip-inline', 'position-area', 'right top', 'left bottom');
+
+test_computed_value('flip-start', 'position-area', 'left top', 'left top');
+test_computed_value('flip-start', 'position-area', 'left bottom', 'right top');
+test_computed_value('flip-start', 'position-area', 'right bottom', 'right bottom');
+test_computed_value('flip-start', 'position-area', 'right top', 'left bottom');
+
+test_computed_value('flip-block flip-start', 'position-area', 'left top', 'right top');
+test_computed_value('flip-block flip-start', 'position-area', 'left bottom', 'left top');
+test_computed_value('flip-block flip-start', 'position-area', 'right bottom', 'left bottom');
+test_computed_value('flip-block flip-start', 'position-area', 'right top', 'right bottom');
+
+test_computed_value('flip-inline flip-start', 'position-area', 'left top', 'left bottom');
+test_computed_value('flip-inline flip-start', 'position-area', 'left bottom', 'right bottom');
+test_computed_value('flip-inline flip-start', 'position-area', 'right bottom', 'right top');
+test_computed_value('flip-inline flip-start', 'position-area', 'right top', 'left top');
+
+test_computed_value('flip-block flip-inline flip-start', 'position-area', 'left top', 'right bottom');
+test_computed_value('flip-block flip-inline flip-start', 'position-area', 'left bottom', 'left bottom');
+test_computed_value('flip-block flip-inline flip-start', 'position-area', 'right bottom', 'left top');
+test_computed_value('flip-block flip-inline flip-start', 'position-area', 'right top', 'right top');
+
+// Variations:
+test_computed_value('flip-block flip-inline', 'position-area', 'span-left span-top', 'span-right span-bottom');
+
+// XY:
+
+test_computed_value('flip-inline', 'position-area', 'x-start y-start', 'x-end y-start');
+test_computed_value('flip-inline', 'position-area', 'x-start y-end', 'x-end y-end');
+test_computed_value('flip-inline', 'position-area', 'x-end y-end', 'x-start y-end');
+test_computed_value('flip-inline', 'position-area', 'x-end y-start', 'x-start y-start');
+
+test_computed_value('flip-block', 'position-area', 'x-start y-start', 'x-start y-end');
+test_computed_value('flip-block', 'position-area', 'x-start y-end', 'x-start y-start');
+test_computed_value('flip-block', 'position-area', 'x-end y-end', 'x-end y-start');
+test_computed_value('flip-block', 'position-area', 'x-end y-start', 'x-end y-end');
+
+test_computed_value('flip-block flip-inline', 'position-area', 'x-start y-start', 'x-end y-end');
+test_computed_value('flip-block flip-inline', 'position-area', 'x-start y-end', 'x-end y-start');
+test_computed_value('flip-block flip-inline', 'position-area', 'x-end y-end', 'x-start y-start');
+test_computed_value('flip-block flip-inline', 'position-area', 'x-end y-start', 'x-start y-end');
+
+test_computed_value('flip-start', 'position-area', 'x-start y-start', 'x-start y-start');
+test_computed_value('flip-start', 'position-area', 'x-start y-end', 'x-end y-start');
+test_computed_value('flip-start', 'position-area', 'x-end y-end', 'x-end y-end');
+test_computed_value('flip-start', 'position-area', 'x-end y-start', 'x-start y-end');
+
+test_computed_value('flip-block flip-start', 'position-area', 'x-start y-start', 'x-end y-start');
+test_computed_value('flip-block flip-start', 'position-area', 'x-start y-end', 'x-start y-start');
+test_computed_value('flip-block flip-start', 'position-area', 'x-end y-end', 'x-start y-end');
+test_computed_value('flip-block flip-start', 'position-area', 'x-end y-start', 'x-end y-end');
+
+test_computed_value('flip-inline flip-start', 'position-area', 'x-start y-start', 'x-start y-end');
+test_computed_value('flip-inline flip-start', 'position-area', 'x-start y-end', 'x-end y-end');
+test_computed_value('flip-inline flip-start', 'position-area', 'x-end y-end', 'x-end y-start');
+test_computed_value('flip-inline flip-start', 'position-area', 'x-end y-start', 'x-start y-start');
+
+test_computed_value('flip-block flip-inline flip-start', 'position-area', 'x-start y-start', 'x-end y-end');
+test_computed_value('flip-block flip-inline flip-start', 'position-area', 'x-start y-end', 'x-start y-end');
+test_computed_value('flip-block flip-inline flip-start', 'position-area', 'x-end y-end', 'x-start y-start');
+test_computed_value('flip-block flip-inline flip-start', 'position-area', 'x-end y-start', 'x-end y-start');
+
+// Variations:
+test_computed_value('flip-block flip-inline', 'position-area', 'span-x-start span-y-start', 'span-x-end span-y-end');
+test_computed_value('flip-block flip-inline', 'position-area', 'x-self-start y-self-start', 'x-self-end y-self-end');
+test_computed_value('flip-block flip-inline', 'position-area', 'span-x-self-start span-y-self-start', 'span-x-self-end span-y-self-end');
+
+// Logical:
+
+test_computed_value('flip-inline', 'position-area', 'block-start inline-start', 'block-start inline-end');
+test_computed_value('flip-inline', 'position-area', 'block-end inline-start', 'block-end inline-end');
+test_computed_value('flip-inline', 'position-area', 'block-end inline-end', 'block-end inline-start');
+test_computed_value('flip-inline', 'position-area', 'block-start inline-end', 'block-start inline-start');
+
+test_computed_value('flip-block', 'position-area', 'block-start inline-start', 'block-end inline-start');
+test_computed_value('flip-block', 'position-area', 'block-end inline-start', 'block-start inline-start');
+test_computed_value('flip-block', 'position-area', 'block-end inline-end', 'block-start inline-end');
+test_computed_value('flip-block', 'position-area', 'block-start inline-end', 'block-end inline-end');
+
+test_computed_value('flip-block flip-inline', 'position-area', 'block-start inline-start', 'block-end inline-end');
+test_computed_value('flip-block flip-inline', 'position-area', 'block-end inline-start', 'block-start inline-end');
+test_computed_value('flip-block flip-inline', 'position-area', 'block-end inline-end', 'block-start inline-start');
+test_computed_value('flip-block flip-inline', 'position-area', 'block-start inline-end', 'block-end inline-start');
+
+test_computed_value('flip-start', 'position-area', 'block-start inline-start', 'block-start inline-start');
+test_computed_value('flip-start', 'position-area', 'block-end inline-start', 'block-start inline-end');
+test_computed_value('flip-start', 'position-area', 'block-end inline-end', 'block-end inline-end');
+test_computed_value('flip-start', 'position-area', 'block-start inline-end', 'block-end inline-start');
+
+test_computed_value('flip-block flip-start', 'position-area', 'block-start inline-start', 'block-start inline-end');
+test_computed_value('flip-block flip-start', 'position-area', 'block-end inline-start', 'block-start inline-start');
+test_computed_value('flip-block flip-start', 'position-area', 'block-end inline-end', 'block-end inline-start');
+test_computed_value('flip-block flip-start', 'position-area', 'block-start inline-end', 'block-end inline-end');
+
+test_computed_value('flip-inline flip-start', 'position-area', 'block-start inline-start', 'block-end inline-start');
+test_computed_value('flip-inline flip-start', 'position-area', 'block-end inline-start', 'block-end inline-end');
+test_computed_value('flip-inline flip-start', 'position-area', 'block-end inline-end', 'block-start inline-end');
+test_computed_value('flip-inline flip-start', 'position-area', 'block-start inline-end', 'block-start inline-start');
+
+test_computed_value('flip-block flip-inline flip-start', 'position-area', 'block-start inline-start', 'block-end inline-end');
+test_computed_value('flip-block flip-inline flip-start', 'position-area', 'block-end inline-start', 'block-end inline-start');
+test_computed_value('flip-block flip-inline flip-start', 'position-area', 'block-end inline-end', 'block-start inline-start');
+test_computed_value('flip-block flip-inline flip-start', 'position-area', 'block-start inline-end', 'block-start inline-end');
+
+// Variations:
+test_computed_value('flip-block flip-inline', 'position-area', 'span-block-start span-inline-start', 'span-block-end span-inline-end');
+test_computed_value('flip-block flip-inline', 'position-area', 'self-block-start self-inline-start', 'self-block-end self-inline-end');
+test_computed_value('flip-block flip-inline', 'position-area', 'span-self-block-start span-self-inline-start', 'span-self-block-end span-self-inline-end');
+
+// start/end
+
+test_computed_value('', 'position-area', 'start end', 'start end');
+
+test_computed_value('flip-block', 'position-area', 'start end', 'end');
+
+test_computed_value('flip-inline', 'position-area', 'start end', 'start');
+
+test_computed_value('flip-block flip-inline', 'position-area', 'start end', 'end start');
+
+test_computed_value('flip-start', 'position-area', 'start', 'start');
+test_computed_value('flip-start', 'position-area', 'end', 'end');
+test_computed_value('flip-start', 'position-area', 'start end', 'end start');
+
+test_computed_value('flip-block flip-start', 'position-area', 'start end', 'end');
+
+test_computed_value('flip-inline flip-start', 'position-area', 'start end', 'start');
+
+test_computed_value('flip-block flip-inline flip-start', 'position-area', 'start end', 'start end');
+
+// Variations:
+
+test_computed_value('flip-block flip-inline', 'position-area', 'span-start span-end', 'span-end span-start');
+test_computed_value('flip-block flip-inline', 'position-area', 'self-start self-end', 'self-end self-start');
+test_computed_value('flip-block flip-inline', 'position-area', 'span-self-start span-self-end', 'span-self-end span-self-start');
+
+// center
+test_computed_value('flip-block', 'position-area', 'left center', 'left center');
+test_computed_value('flip-block', 'position-area', 'center top', 'center bottom');
+test_computed_value('flip-block', 'position-area', 'center', 'center');
+test_computed_value('flip-block', 'position-area', 'start center', 'end center');
+test_computed_value('flip-block', 'position-area', 'center start', 'center start');
+test_computed_value('flip-inline', 'position-area', 'center start', 'center end');
+test_computed_value('flip-start', 'position-area', 'center start', 'start center');
+
+// span-all
+test_computed_value('flip-block', 'position-area', 'left span-all', 'left');
+test_computed_value('flip-block', 'position-area', 'span-all top', 'bottom');
+test_computed_value('flip-block', 'position-area', 'span-all', 'span-all');
+test_computed_value('flip-block', 'position-area', 'start span-all', 'end span-all');
+test_computed_value('flip-block', 'position-area', 'span-all start', 'span-all start');
+test_computed_value('flip-inline', 'position-area', 'span-all start', 'span-all end');
+test_computed_value('flip-start', 'position-area', 'span-all start', 'start span-all');
+
+// Span mix:
+test_computed_value('flip-block', 'position-area', 'left span-top', 'left span-bottom');
+test_computed_value('flip-inline', 'position-area', 'left span-top', 'right span-top');
+test_computed_value('flip-start', 'position-area', 'span-block-start inline-end', 'block-end span-inline-start');
+
+// Writing modes:
+test_computed_value('flip-block', 'position-area', 'left top', 'right top', 'ltr', 'vertical-rl');
+
+test_computed_value('', 'position-area', 'x-start y-start', 'x-start y-start', 'rtl');
+test_computed_value('flip-block', 'position-area', 'x-start y-start', 'x-start y-end', 'rtl');
+test_computed_value('flip-inline', 'position-area', 'x-start y-start', 'x-end y-start', 'rtl');
+test_computed_value('flip-block', 'position-area', 'x-end y-start', 'x-start y-start', 'ltr', 'vertical-rl');
+test_computed_value('flip-inline', 'position-area', 'x-end y-start', 'x-end y-end', 'ltr', 'vertical-rl');
+
+test_computed_value('flip-inline', 'position-area', 'start end', 'start', 'rtl');
+test_computed_value('flip-inline', 'position-area', 'start end', 'start', 'ltr', 'vertical-rl');
+test_computed_value('flip-block', 'position-area', 'start end', 'end', 'rtl');
+test_computed_value('flip-block', 'position-area', 'start end', 'end', 'ltr', 'vertical-rl');
+
+</script>
diff --git a/tests/wpt/tests/css/css-animations/animation-canceled-by-parent-details-element-being-closed.html b/tests/wpt/tests/css/css-animations/animation-canceled-by-parent-details-element-being-closed.html
deleted file mode 100644
index 3f6521fccfd..00000000000
--- a/tests/wpt/tests/css/css-animations/animation-canceled-by-parent-details-element-being-closed.html
+++ /dev/null
@@ -1,35 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8">
-<title>CSS Animations: animation should be canceled when a parent details element is closed</title>
-<link rel="help" href="https://drafts.csswg.org/css-animations/">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="support/testcommon.js"></script>
-<style>
-
-@keyframes anim {
- to { margin-left: 100px }
-}
-
-</style>
-<div id="log"></div>
-<script>
-
-promise_test(async t => {
- // create a <div> contained within a <details> element
- const details = addElement(t, "details", { "open": "open" });
- const div = addDiv(t);
- details.appendChild(div);
-
- // start an animation on the <div>
- div.style.animation = 'anim 1s';
- const animation = div.getAnimations()[0];
- await animation.ready;
-
- // ensure the animation running on the <div> is canceled as a result of closing the <details>
- const canceled = new Promise(resolve => animation.addEventListener("cancel", resolve));
- details.removeAttribute("open");
- await canceled;
-}, 'A CSS Animation running on an element within a <details> element is canceled after the <details> element is closed.');
-
-</script>
diff --git a/tests/wpt/tests/css/css-animations/display-none-dont-cancel.tentative.html b/tests/wpt/tests/css/css-animations/display-none-dont-cancel.tentative.html
index 6ae115803b8..12394ffb599 100644
--- a/tests/wpt/tests/css/css-animations/display-none-dont-cancel.tentative.html
+++ b/tests/wpt/tests/css/css-animations/display-none-dont-cancel.tentative.html
@@ -17,7 +17,9 @@
}
</style>
<script>
-promise_test(async () => {
+promise_test(async (t) => {
+ t.add_cleanup(() => target1.classList.remove('animate1'));
+
let numAnimationstartFired = 0;
target1.addEventListener('animationstart', () => numAnimationstartFired++);
@@ -46,7 +48,9 @@ promise_test(async () => {
}
</style>
<script>
-promise_test(async () => {
+promise_test(async (t) => {
+ t.add_cleanup(() => target2.classList.remove('animate2'));
+
let numAnimationstartFired = 0;
target2.addEventListener('animationstart', () => numAnimationstartFired++);
@@ -72,7 +76,9 @@ promise_test(async () => {
}
</style>
<script>
-promise_test(async () => {
+promise_test(async (t) => {
+ t.add_cleanup(() => target3.classList.remove('animate3'));
+
let numAnimationstartFired = 0;
target3.addEventListener('animationstart', () => numAnimationstartFired++);
@@ -101,7 +107,9 @@ promise_test(async () => {
}
</style>
<script>
-promise_test(async () => {
+promise_test(async (t) => {
+ t.add_cleanup(() => target4.classList.remove('animate4'));
+
let numAnimationstartFired = 0;
target4.addEventListener('animationstart', () => numAnimationstartFired++);
@@ -130,7 +138,9 @@ promise_test(async () => {
}
</style>
<script>
-promise_test(async () => {
+promise_test(async (t) => {
+ t.add_cleanup(() => target5.classList.remove('animate5'));
+
let numAnimationstartFired = 0;
target5.addEventListener('animationstart', () => numAnimationstartFired++);
diff --git a/tests/wpt/tests/css/css-animations/display-none-to-display-block-dont-cancel.tentative.html b/tests/wpt/tests/css/css-animations/display-none-to-display-block-dont-cancel.tentative.html
new file mode 100644
index 00000000000..45958a1ee24
--- /dev/null
+++ b/tests/wpt/tests/css/css-animations/display-none-to-display-block-dont-cancel.tentative.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<link rel="author" title="Tim Nguyen" href="https://github.com/nt1m">
+<link rel="help" href="https://drafts.csswg.org/css-display-4/#display-animation">
+<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/6429">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/css-animations/support/testcommon.js"></script>
+
+<div id="target">hello</div>
+<style>
+@keyframes display-animation {
+ 0% { display: none; }
+ 100% { display: block; }
+}
+#target {
+ display: none;
+}
+#target.animate {
+ animation: display-animation 1s;
+ display: block;
+}
+</style>
+<script>
+promise_test(async (t) => {
+ t.add_cleanup(() => target.classList.remove('animate'));
+ let numAnimationstartFired = 0;
+ target.addEventListener('animationstart', () => numAnimationstartFired++);
+
+ assert_equals(getComputedStyle(target).display, 'none',
+ 'The display should be none before the animation.');
+
+ await waitForAnimationFrames(1);
+ target.classList.add('animate');
+ await waitForAnimationFrames(2);
+
+ assert_equals(getComputedStyle(target).display, 'block',
+ 'The display should be block during the animation.');
+ assert_equals(numAnimationstartFired, 1,
+ 'Only one animation should start.');
+}, 'display:none animating to display:block should be block for the whole animation.');
+</script>
diff --git a/tests/wpt/tests/css/css-animations/display-none-to-display-block.html b/tests/wpt/tests/css/css-animations/display-none-to-display-block.html
new file mode 100644
index 00000000000..9e8cb032d38
--- /dev/null
+++ b/tests/wpt/tests/css/css-animations/display-none-to-display-block.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<link rel="author" title="Tim Nguyen" href="https://github.com/nt1m">
+<link rel="help" href="https://drafts.csswg.org/css-display-4/#display-animation">
+<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/6429">
+<link rel="match" href="/css/reference/ref-filled-green-100px-square.xht">
+<style>
+@keyframes display-animation {
+ 0% { display: none; }
+ 100% { display: block; }
+}
+#target {
+ display: none;
+ width: 100px;
+ height: 100px;
+ background-color: green;
+}
+#target.animate {
+ animation: display-animation 1s;
+ display: block;
+}
+</style>
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div id="target"></div>
+<script src="/css/css-animations/support/testcommon.js"></script>
+<script>
+onload = async () => {
+ await waitForAnimationFrames(1);
+ target.classList.add("animate");
+ await waitForAnimationFrames(2);
+ document.documentElement.classList.remove("reftest-wait");
+};
+</script>
+</html>
diff --git a/tests/wpt/tests/css/css-animations/stability/animation-event-destroy-renderer.html b/tests/wpt/tests/css/css-animations/stability/animation-event-destroy-renderer.html
index 0a1e1d50853..3540d5c5ecb 100644
--- a/tests/wpt/tests/css/css-animations/stability/animation-event-destroy-renderer.html
+++ b/tests/wpt/tests/css/css-animations/stability/animation-event-destroy-renderer.html
@@ -1,7 +1,7 @@
<!DOCTYPE html>
<html>
<head>
- <title>Destroy and Hide Element in Animation Iteration Event</title>
+ <title>Destroy and Hide Element in Animation Event</title>
<!-- Note: this is effectively a crashtest, but as crashtests do not
support variants, authoring as a promise test -->
<meta name="variant" content="?animationstart">
@@ -13,7 +13,15 @@
width: 100px;
margin: 10px;
background-color: blue;
- animation-duration: 0.2s;
+ /* Use a long duration and delay for precise control over when animation
+ events are triggered. With short animations, the animation-iteration
+ event could be dropped if the animation finishes too son. An
+ animation-iteration event does not fire when completing the last
+ iteration.
+ */
+ animation-name: move;
+ animation-duration: 10000s;
+ animation-delay: 5000s;
animation-iteration-count: 2;
}
@@ -43,6 +51,10 @@
});
}
+ function setAnimationTime(time) {
+ document.getAnimations().forEach(a => a.currentTime = time);
+ }
+
promise_test(async t => {
const eventType = location.search.substring(1);
var box1 = document.getElementById('box1');
@@ -52,11 +64,24 @@
promises.push(eventPromise(box1, eventType, () => {
box1.parentNode.removeChild(box1);
}));
- box1.style.animationName = 'move';
promises.push(eventPromise(box2, eventType, () => {
box2.style.display = 'none';
}));
- box2.style.animationName = 'move';
+
+ await Promise.all(document.getAnimations().map(a => a.ready));
+
+ promises.push(new Promise(resolve => {
+ requestAnimationFrame(() => {
+ // trip animationstart.
+ setAnimationTime(6000000);
+ requestAnimationFrame(() => {
+ // trip animationiteration on any animations that are still running.
+ setAnimationTime(16000000);
+ resolve();
+ });
+ });
+ }));
+
await Promise.all(promises);
// Garbage collection is best effort.
diff --git a/tests/wpt/tests/css/css-backgrounds/background-clip/clip-text-animated-text-ref.html b/tests/wpt/tests/css/css-backgrounds/background-clip/clip-text-animated-text-ref.html
new file mode 100644
index 00000000000..10ffd244209
--- /dev/null
+++ b/tests/wpt/tests/css/css-backgrounds/background-clip/clip-text-animated-text-ref.html
@@ -0,0 +1,15 @@
+<!doctype html>
+<title>CSS Test Reference</title>
+<style>
+ .text {
+ background-color: DeepPink;
+ background-clip: text;
+ font-size: 50px;
+ font-family: sans-serif;
+ font-weight: 600;
+ color: transparent;
+ }
+</style>
+<div class="text">
+ <p>Text</p>
+</div>
diff --git a/tests/wpt/tests/css/css-backgrounds/background-clip/clip-text-animated-text.html b/tests/wpt/tests/css/css-backgrounds/background-clip/clip-text-animated-text.html
new file mode 100644
index 00000000000..4bf6e783a4c
--- /dev/null
+++ b/tests/wpt/tests/css/css-backgrounds/background-clip/clip-text-animated-text.html
@@ -0,0 +1,33 @@
+<!doctype html>
+<html class="reftest-wait">
+<title>CSS Test: background-clip: text animated text</title>
+<link rel="help" href="https://drafts.csswg.org/css-backgrounds-4/#valdef-background-clip-text">
+<link rel="author" href="mailto:nathan@knowler.dev" title="Nathan Knowler">
+<link rel="match" href="clip-text-animated-text-ref.html">
+<style>
+ .text {
+ background-color: DeepPink;
+ background-clip: text;
+ font-size: 50px;
+ font-family: sans-serif;
+ font-weight: 600;
+ color: transparent;
+ }
+
+ .text p {
+ animation: fade-in 0.1s both;
+ }
+
+ @keyframes fade-in {
+ from { opacity: 0; }
+ }
+</style>
+<div class="text">
+ <p>Text</p>
+</div>
+<script>
+ const [animation] = document.querySelector(".text p").getAnimations();
+ animation.finished.then(() => {
+ document.documentElement.classList.remove("reftest-wait");
+ });
+</script>
diff --git a/tests/wpt/tests/css/css-backgrounds/background-gradient-interpolation-001-notref.html b/tests/wpt/tests/css/css-backgrounds/background-gradient-interpolation-001-notref.html
new file mode 100644
index 00000000000..7820bb0c410
--- /dev/null
+++ b/tests/wpt/tests/css/css-backgrounds/background-gradient-interpolation-001-notref.html
@@ -0,0 +1,33 @@
+<!doctype html>
+<html>
+<head>
+<meta charset='utf-8'>
+<style>
+div {
+ height: 50px;
+ width: 200px;
+}
+
+.has-gradient {
+ background-image: linear-gradient(
+ 90deg,
+ yellow 30%,
+ purple 95%
+ );
+}
+</style>
+</head>
+
+<body>
+ <h4>These three gradients should NOT look the same</h4>
+
+ <p>Interpolating in sRGB (default)</p>
+ <div class="has-gradient"></div>
+
+ <p>Interpolating in HSL</p>
+ <div class="has-gradient"></div>
+
+ <p>Interpolating in Oklch</p>
+ <div class="has-gradient"></div>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-backgrounds/background-gradient-interpolation-001.html b/tests/wpt/tests/css/css-backgrounds/background-gradient-interpolation-001.html
new file mode 100644
index 00000000000..f239b1b68d0
--- /dev/null
+++ b/tests/wpt/tests/css/css-backgrounds/background-gradient-interpolation-001.html
@@ -0,0 +1,51 @@
+<!doctype html>
+<html>
+<head>
+<meta charset='utf-8'>
+<meta name="assert" content="Use the indicated color space when interpolating colors on the gradient line.">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
+<link rel="help" href="https://drafts.csswg.org/css-images-4/#linear-gradients">
+<link rel="help" href="https://drafts.csswg.org/css-color/#interpolation-space">
+<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1910153">
+<link rel="mismatch" href="background-gradient-interpolation-001-notref.html">
+<style>
+:root {
+ --space: ;
+}
+
+div {
+ height: 50px;
+ width: 200px;
+}
+
+.has-gradient {
+ background-image: linear-gradient(
+ 90deg var(--space),
+ yellow 30%,
+ purple 95%
+ );
+}
+
+.hsl {
+ --space: in hsl;
+}
+
+.oklch {
+ --space: in oklch;
+}
+</style>
+</head>
+
+<body>
+ <h4>These three gradients should NOT look the same</h4>
+
+ <p>Interpolating in sRGB (default)</p>
+ <div class="has-gradient"></div>
+
+ <p>Interpolating in HSL</p>
+ <div class="has-gradient hsl"></div>
+
+ <p>Interpolating in Oklch</p>
+ <div class="has-gradient oklch"></div>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-backgrounds/background-gradient-interpolation-002-notref.html b/tests/wpt/tests/css/css-backgrounds/background-gradient-interpolation-002-notref.html
new file mode 100644
index 00000000000..672dd42e8cc
--- /dev/null
+++ b/tests/wpt/tests/css/css-backgrounds/background-gradient-interpolation-002-notref.html
@@ -0,0 +1,39 @@
+<!doctype html>
+<html>
+<head>
+<meta charset='utf-8'>
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
+<style>
+.has-gradient {
+ background-image: linear-gradient(
+ 90deg,
+ yellow 30%,
+ purple 95%
+ );
+}
+
+.text {
+ font: 50px/1 Ahem;
+ -webkit-background-clip: text;
+ background-clip: text;
+ -webkit-text-fill-color: transparent;
+ text-fill-color: transparent;
+ width: fit-content;
+ margin: 0;
+}
+</style>
+</head>
+
+<body>
+ <h4>These three gradients should NOT look the same</h4>
+
+ <p>Interpolating in sRGB (default)</p>
+ <p class="text has-gradient">ABCD</p>
+
+ <p>Interpolating in HSL</p>
+ <p class="text has-gradient">ABCD</p>
+
+ <p>Interpolating in Oklch</p>
+ <p class="text has-gradient">ABCD</p>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-backgrounds/background-gradient-interpolation-002.html b/tests/wpt/tests/css/css-backgrounds/background-gradient-interpolation-002.html
new file mode 100644
index 00000000000..44d1a5a5a1d
--- /dev/null
+++ b/tests/wpt/tests/css/css-backgrounds/background-gradient-interpolation-002.html
@@ -0,0 +1,56 @@
+<!doctype html>
+<html>
+<head>
+<meta charset='utf-8'>
+<meta name="assert" content="Use the indicated color space when interpolating colors on the gradient line.">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
+<link rel="help" href="https://drafts.csswg.org/css-images-4/#linear-gradients">
+<link rel="help" href="https://drafts.csswg.org/css-color/#interpolation-space">
+<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1910153">
+<link rel="mismatch" href="background-gradient-interpolation-002-notref.html">
+<style>
+:root {
+ --space: ;
+}
+
+.has-gradient {
+ background-image: linear-gradient(
+ 90deg var(--space),
+ yellow 30%,
+ purple 95%
+ );
+}
+
+.hsl {
+ --space: in hsl;
+}
+
+.oklch {
+ --space: in oklch;
+}
+
+.text {
+ font: 50px/1 Ahem;
+ -webkit-background-clip: text;
+ background-clip: text;
+ -webkit-text-fill-color: transparent;
+ text-fill-color: transparent;
+ width: fit-content;
+ margin: 0;
+}
+</style>
+</head>
+
+<body>
+ <h4>These three gradients should NOT look the same</h4>
+
+ <p>Interpolating in sRGB (default)</p>
+ <p class="text has-gradient">ABCD</p>
+
+ <p>Interpolating in HSL</p>
+ <p class="text has-gradient hsl">ABCD</p>
+
+ <p>Interpolating in Oklch</p>
+ <p class="text has-gradient oklch">ABCD</p>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-backgrounds/background-gradient-interpolation-003.html b/tests/wpt/tests/css/css-backgrounds/background-gradient-interpolation-003.html
new file mode 100644
index 00000000000..0b605493554
--- /dev/null
+++ b/tests/wpt/tests/css/css-backgrounds/background-gradient-interpolation-003.html
@@ -0,0 +1,59 @@
+<!doctype html>
+<html>
+<head>
+<meta charset='utf-8'>
+<meta name="assert" content="Use the indicated color space when interpolating colors on the gradient line.">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
+<link rel="help" href="https://drafts.csswg.org/css-images-4/#linear-gradients">
+<link rel="help" href="https://drafts.csswg.org/css-color/#interpolation-space">
+<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1910153">
+<!-- The background-clip:text and simple block examples should theoretically render the same,
+ but we allow a slight difference because of different painting codepaths. -->
+<meta name="fuzzy" content="maxDifference=0-2; totalPixels=0-6500">
+<link rel="match" href="background-gradient-interpolation-001.html">
+<style>
+:root {
+ --space: ;
+}
+
+.has-gradient {
+ background-image: linear-gradient(
+ 90deg var(--space),
+ yellow 30%,
+ purple 95%
+ );
+}
+
+.hsl {
+ --space: in hsl;
+}
+
+.oklch {
+ --space: in oklch;
+}
+
+.text {
+ font: 50px/1 Ahem;
+ -webkit-background-clip: text;
+ background-clip: text;
+ -webkit-text-fill-color: transparent;
+ text-fill-color: transparent;
+ width: fit-content;
+ margin: 0;
+}
+</style>
+</head>
+
+<body>
+ <h4>These three gradients should NOT look the same</h4>
+
+ <p>Interpolating in sRGB (default)</p>
+ <p class="text has-gradient">ABCD</p>
+
+ <p>Interpolating in HSL</p>
+ <p class="text has-gradient hsl">ABCD</p>
+
+ <p>Interpolating in Oklch</p>
+ <p class="text has-gradient oklch">ABCD</p>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-backgrounds/color-mix-currentcolor-background-repaint-expected.xht b/tests/wpt/tests/css/css-backgrounds/color-mix-currentcolor-background-repaint-expected.xht
deleted file mode 100644
index 05a13794482..00000000000
--- a/tests/wpt/tests/css/css-backgrounds/color-mix-currentcolor-background-repaint-expected.xht
+++ /dev/null
@@ -1,19 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <title>CSS Reftest Reference</title>
- <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" />
- <style type="text/css"><![CDATA[
- div
- {
- background-color: green;
- height: 100px;
- width: 100px;
- }
- ]]></style>
- </head>
- <body>
- <p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
- <div></div>
- </body>
-</html>
diff --git a/tests/wpt/tests/css/css-backgrounds/color-mix-currentcolor-background-repaint-parent-expected.xht b/tests/wpt/tests/css/css-backgrounds/color-mix-currentcolor-background-repaint-parent-expected.xht
deleted file mode 100644
index 05a13794482..00000000000
--- a/tests/wpt/tests/css/css-backgrounds/color-mix-currentcolor-background-repaint-parent-expected.xht
+++ /dev/null
@@ -1,19 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <title>CSS Reftest Reference</title>
- <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" />
- <style type="text/css"><![CDATA[
- div
- {
- background-color: green;
- height: 100px;
- width: 100px;
- }
- ]]></style>
- </head>
- <body>
- <p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
- <div></div>
- </body>
-</html>
diff --git a/tests/wpt/tests/css/css-backgrounds/color-mix-currentcolor-background-repaint-parent.html b/tests/wpt/tests/css/css-backgrounds/color-mix-currentcolor-background-repaint-parent.html
index af894546942..ba80a7b063c 100644
--- a/tests/wpt/tests/css/css-backgrounds/color-mix-currentcolor-background-repaint-parent.html
+++ b/tests/wpt/tests/css/css-backgrounds/color-mix-currentcolor-background-repaint-parent.html
@@ -34,9 +34,11 @@
// before starting the test.
await waitForCompositorReady();
requestAnimationFrame(() => {
- container.classList.add("green");
requestAnimationFrame(() => {
- document.documentElement.classList.remove("reftest-wait");
+ container.classList.add("green");
+ requestAnimationFrame(() => {
+ document.documentElement.classList.remove("reftest-wait");
+ });
});
});
});
diff --git a/tests/wpt/tests/css/css-backgrounds/color-mix-currentcolor-background-repaint.html b/tests/wpt/tests/css/css-backgrounds/color-mix-currentcolor-background-repaint.html
index e584c4f9a83..19ed949334b 100644
--- a/tests/wpt/tests/css/css-backgrounds/color-mix-currentcolor-background-repaint.html
+++ b/tests/wpt/tests/css/css-backgrounds/color-mix-currentcolor-background-repaint.html
@@ -29,11 +29,13 @@
// before starting the test.
await waitForCompositorReady();
requestAnimationFrame(() => {
- target.classList.add("green");
requestAnimationFrame(() => {
- document.documentElement.classList.remove("reftest-wait");
- });
- });
+ target.classList.add("green");
+ requestAnimationFrame(() => {
+ document.documentElement.classList.remove("reftest-wait");
+ });
+ });
+ });
});
</script>
</html>
diff --git a/tests/wpt/tests/css/css-backgrounds/color-mix-currentcolor-border-repaint-parent.html b/tests/wpt/tests/css/css-backgrounds/color-mix-currentcolor-border-repaint-parent.html
index a8d55ace8fc..058292efadf 100644
--- a/tests/wpt/tests/css/css-backgrounds/color-mix-currentcolor-border-repaint-parent.html
+++ b/tests/wpt/tests/css/css-backgrounds/color-mix-currentcolor-border-repaint-parent.html
@@ -33,9 +33,11 @@
// before starting the test.
await waitForCompositorReady();
requestAnimationFrame(() => {
- container.classList.add("green");
requestAnimationFrame(() => {
- document.documentElement.classList.remove("reftest-wait");
+ container.classList.add("green");
+ requestAnimationFrame(() => {
+ document.documentElement.classList.remove("reftest-wait");
+ });
});
});
});
diff --git a/tests/wpt/tests/css/css-backgrounds/color-mix-currentcolor-border-repaint.html b/tests/wpt/tests/css/css-backgrounds/color-mix-currentcolor-border-repaint.html
index aeacd72d3d2..24407bbcf30 100644
--- a/tests/wpt/tests/css/css-backgrounds/color-mix-currentcolor-border-repaint.html
+++ b/tests/wpt/tests/css/css-backgrounds/color-mix-currentcolor-border-repaint.html
@@ -29,9 +29,11 @@
// before starting the test.
await waitForCompositorReady();
requestAnimationFrame(() => {
- target.classList.add("green");
requestAnimationFrame(() => {
- document.documentElement.classList.remove("reftest-wait");
+ target.classList.add("green");
+ requestAnimationFrame(() => {
+ document.documentElement.classList.remove("reftest-wait");
+ });
});
});
});
diff --git a/tests/wpt/tests/css/css-backgrounds/color-mix-currentcolor-outline-repaint-expected.xht b/tests/wpt/tests/css/css-backgrounds/color-mix-currentcolor-outline-repaint-expected.xht
deleted file mode 100644
index 05a13794482..00000000000
--- a/tests/wpt/tests/css/css-backgrounds/color-mix-currentcolor-outline-repaint-expected.xht
+++ /dev/null
@@ -1,19 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <title>CSS Reftest Reference</title>
- <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" />
- <style type="text/css"><![CDATA[
- div
- {
- background-color: green;
- height: 100px;
- width: 100px;
- }
- ]]></style>
- </head>
- <body>
- <p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
- <div></div>
- </body>
-</html>
diff --git a/tests/wpt/tests/css/css-backgrounds/color-mix-currentcolor-outline-repaint-parent-expected.xht b/tests/wpt/tests/css/css-backgrounds/color-mix-currentcolor-outline-repaint-parent-expected.xht
deleted file mode 100644
index 05a13794482..00000000000
--- a/tests/wpt/tests/css/css-backgrounds/color-mix-currentcolor-outline-repaint-parent-expected.xht
+++ /dev/null
@@ -1,19 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <title>CSS Reftest Reference</title>
- <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" />
- <style type="text/css"><![CDATA[
- div
- {
- background-color: green;
- height: 100px;
- width: 100px;
- }
- ]]></style>
- </head>
- <body>
- <p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
- <div></div>
- </body>
-</html>
diff --git a/tests/wpt/tests/css/css-backgrounds/color-mix-currentcolor-outline-repaint-parent.html b/tests/wpt/tests/css/css-backgrounds/color-mix-currentcolor-outline-repaint-parent.html
index e1388056063..bdfa0897e95 100644
--- a/tests/wpt/tests/css/css-backgrounds/color-mix-currentcolor-outline-repaint-parent.html
+++ b/tests/wpt/tests/css/css-backgrounds/color-mix-currentcolor-outline-repaint-parent.html
@@ -35,9 +35,11 @@
// before starting the test.
await waitForCompositorReady();
requestAnimationFrame(() => {
- container.classList.add("green");
requestAnimationFrame(() => {
- document.documentElement.classList.remove("reftest-wait");
+ container.classList.add("green");
+ requestAnimationFrame(() => {
+ document.documentElement.classList.remove("reftest-wait");
+ });
});
});
});
diff --git a/tests/wpt/tests/css/css-backgrounds/color-mix-currentcolor-outline-repaint.html b/tests/wpt/tests/css/css-backgrounds/color-mix-currentcolor-outline-repaint.html
index 87f87b0edb7..b796adaf009 100644
--- a/tests/wpt/tests/css/css-backgrounds/color-mix-currentcolor-outline-repaint.html
+++ b/tests/wpt/tests/css/css-backgrounds/color-mix-currentcolor-outline-repaint.html
@@ -30,9 +30,11 @@
// before starting the test.
await waitForCompositorReady();
requestAnimationFrame(() => {
- target.classList.add("green");
requestAnimationFrame(() => {
- document.documentElement.classList.remove("reftest-wait");
+ target.classList.add("green");
+ requestAnimationFrame(() => {
+ document.documentElement.classList.remove("reftest-wait");
+ });
});
});
});
diff --git a/tests/wpt/tests/css/css-backgrounds/parsing/background-image-computed.sub.html b/tests/wpt/tests/css/css-backgrounds/parsing/background-image-computed.sub.html
index cf3c065d495..707cf33061b 100644
--- a/tests/wpt/tests/css/css-backgrounds/parsing/background-image-computed.sub.html
+++ b/tests/wpt/tests/css/css-backgrounds/parsing/background-image-computed.sub.html
@@ -43,14 +43,23 @@ test_computed_value('background-image', 'radial-gradient(ellipse calc(-0.5em + 1
test_computed_value('background-image', 'radial-gradient(ellipse calc(0.5em + 10px) calc(-0.5em + 10px) at 20px 30px, red, blue)', 'radial-gradient(30px 0px at 20px 30px, rgb(255, 0, 0), rgb(0, 0, 255))');
test_computed_value('background-image', 'conic-gradient(rgb(255, 0, 0), rgb(0, 0, 255))');
+test_computed_value('background-image', 'conic-gradient(red, gold)', 'conic-gradient(rgb(255, 0, 0), rgb(255, 215, 0))');
+test_computed_value('background-image', 'conic-gradient(red 0%, gold 100%)', 'conic-gradient(rgb(255, 0, 0) 0%, rgb(255, 215, 0) 100%)')
+test_computed_value('background-image', 'conic-gradient(red 0deg, gold 1turn)', 'conic-gradient(rgb(255, 0, 0) 0deg, rgb(255, 215, 0) 1turn)');
+test_computed_value('background-image', 'conic-gradient(white -50%, black 150%)', 'conic-gradient(rgb(255, 255, 255) -50%, rgb(0, 0, 0) 150%)');
+test_computed_value('background-image', 'conic-gradient(white -180deg, black 540deg)', 'conic-gradient(rgb(255, 255, 255) -180deg, rgb(0, 0, 0) 540deg)');
+test_computed_value('background-image', 'conic-gradient(hsl(0,0%,75%), hsl(0,0%,25%))', 'conic-gradient(rgb(191, 191, 191), rgb(64, 64, 64))');
test_computed_value('background-image', 'conic-gradient(at center, red, blue)', 'conic-gradient(rgb(255, 0, 0), rgb(0, 0, 255))');
test_computed_value('background-image', 'conic-gradient(at 50%, red, blue)', 'conic-gradient(rgb(255, 0, 0), rgb(0, 0, 255))');
+test_computed_value('background-image', 'conic-gradient(at 25% 75%, red, gold)', 'conic-gradient(at 25% 75%, rgb(255, 0, 0), rgb(255, 215, 0))');
test_computed_value('background-image', 'conic-gradient(at 10px 10px, rgb(255, 0, 0), rgb(0, 0, 255))');
test_computed_value('background-image', 'conic-gradient(from 0deg, red, blue)', 'conic-gradient(rgb(255, 0, 0), rgb(0, 0, 255))');
test_computed_value('background-image', 'conic-gradient(from 0deg at center, red, blue)', 'conic-gradient(rgb(255, 0, 0), rgb(0, 0, 255))');
test_computed_value('background-image', 'conic-gradient(from 0deg at 50%, red, blue)', 'conic-gradient(rgb(255, 0, 0), rgb(0, 0, 255))');
+test_computed_value('background-image', 'conic-gradient(from 0deg at 50% 50%, red, gold)', 'conic-gradient(rgb(255, 0, 0), rgb(255, 215, 0))');
test_computed_value('background-image', 'conic-gradient(from 0deg at 10px 10px, red, blue)', 'conic-gradient(at 10px 10px, rgb(255, 0, 0), rgb(0, 0, 255))');
test_computed_value('background-image', 'conic-gradient(from 45deg, rgb(255, 0, 0), rgb(0, 0, 255))');
+test_computed_value('background-image', 'conic-gradient(from 45deg, white, black, white)', 'conic-gradient(from 45deg, rgb(255, 255, 255), rgb(0, 0, 0), rgb(255, 255, 255))');
test_computed_value('background-image', 'conic-gradient(from 45deg at center, red, blue)', 'conic-gradient(from 45deg, rgb(255, 0, 0), rgb(0, 0, 255))');
test_computed_value('background-image', 'conic-gradient(from 45deg at 50%, red, blue)', 'conic-gradient(from 45deg, rgb(255, 0, 0), rgb(0, 0, 255))');
test_computed_value('background-image', 'conic-gradient(from 45deg at 10px 10px, red, blue)', 'conic-gradient(from 45deg at 10px 10px, rgb(255, 0, 0), rgb(0, 0, 255))');
@@ -58,6 +67,9 @@ test_computed_value('background-image', 'conic-gradient(from -45deg, rgb(255, 0,
test_computed_value('background-image', 'conic-gradient(from -45deg at center, red, blue)', 'conic-gradient(from -45deg, rgb(255, 0, 0), rgb(0, 0, 255))');
test_computed_value('background-image', 'conic-gradient(from -45deg at 50%, red, blue)', 'conic-gradient(from -45deg, rgb(255, 0, 0), rgb(0, 0, 255))');
test_computed_value('background-image', 'conic-gradient(from -45deg at 10px 10px, red, blue)', 'conic-gradient(from -45deg at 10px 10px, rgb(255, 0, 0), rgb(0, 0, 255))');
+
+test_computed_value('background-image', 'repeating-conic-gradient(red, gold)', 'repeating-conic-gradient(rgb(255, 0, 0), rgb(255, 215, 0))');
+test_computed_value('background-image', 'repeating-conic-gradient(from 0deg at center, red, gold)', 'repeating-conic-gradient(rgb(255, 0, 0), rgb(255, 215, 0))');
</script>
</body>
</html>
diff --git a/tests/wpt/tests/css/css-box/margin-trim/block-container-block-end-collapsed-margins-ref.html b/tests/wpt/tests/css/css-box/margin-trim/block-container-block-end-collapsed-margins-ref.html
new file mode 100644
index 00000000000..1d2f7ff98b2
--- /dev/null
+++ b/tests/wpt/tests/css/css-box/margin-trim/block-container-block-end-collapsed-margins-ref.html
@@ -0,0 +1,33 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>margin-trim: block-container-block-end-collapsed-margins</title>
+<link rel="author" title="Sammy Gill" href="mailto:sammy.gill@apple.com">
+<link rel="help" href="https://drafts.csswg.org/css-box-4/#margin-trim-block">
+<meta name="assert" content="collapsed block-end margins should be trimmed but not affect container margins">
+<style>
+container {
+ display: block;
+ margin-trim: block;
+ margin-block-end: 10px;
+}
+item {
+ display: block;
+ width: 50px;
+ height: 50px;
+ background-color: green;
+}
+.collapsed {
+ margin-block-end: 0px;
+ height: 0px;
+}
+</style>
+</head>
+<body>
+<container>
+ <item></item>
+ <item class="collapsed"></item>
+</container>
+<item></item>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-box/margin-trim/block-container-block-end-collapsed-margins.html b/tests/wpt/tests/css/css-box/margin-trim/block-container-block-end-collapsed-margins.html
new file mode 100644
index 00000000000..81ac9e141e3
--- /dev/null
+++ b/tests/wpt/tests/css/css-box/margin-trim/block-container-block-end-collapsed-margins.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>margin-trim: block-container-block-end-collapsed-margins</title>
+<link rel="author" title="Sammy Gill" href="mailto:sammy.gill@apple.com">
+<link rel="help" href="https://drafts.csswg.org/css-box-4/#margin-trim-block">
+<link rel="match" href="block-container-block-end-collapsed-margins-ref.html">
+<meta name="assert" content="collapsed block-end margins should be trimmed but not affect container margins">
+<style>
+container {
+ display: block;
+ margin-trim: block;
+ margin-block-end: 10px;
+}
+item {
+ display: block;
+ margin-block-end: 40px;
+ width: 50px;
+ height: 50px;
+ background-color: green;
+}
+.collapsed {
+ margin-block-end: 0px;
+ height: 0px;
+}
+</style>
+</head>
+<body>
+<container>
+ <item></item>
+ <item class="collapsed"></item>
+</container>
+<item></item>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-box/margin-trim/block-container-block-end-last-child-with-border.html b/tests/wpt/tests/css/css-box/margin-trim/block-container-block-end-last-child-with-border.html
new file mode 100644
index 00000000000..42893cdc01b
--- /dev/null
+++ b/tests/wpt/tests/css/css-box/margin-trim/block-container-block-end-last-child-with-border.html
@@ -0,0 +1,50 @@
+<!DOCTYPE html>
+<html>
+<head>
+<link rel="author" title="Sammy Gill" href="mailto:sammy.gill@apple.com">
+<link rel="help" href="https://drafts.csswg.org/css-box-4/#margin-trim-block">
+<meta name="assert" content="border should protect the margins inside a nested block from trimming">
+<style>
+.trim {
+ margin-trim: block;
+}
+container {
+ display: block;
+ width: min-content;
+ outline: 1px solid blue;
+}
+item {
+ display: block;
+ inline-size: 50px;
+ block-size: 25px;
+}
+.collapsed {
+ block-size: 0px;
+ margin-block: 14px;
+}
+.border {
+ block-size: auto;
+ border: 1px solid black;
+ background-color: green;
+ margin-block-end: 20px;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+</head>
+<body onload="checkLayout('.collapsed')">
+ <div id="target">
+ <container class="trim">
+ <!-- Since this item has a border, the margins inside cannot collapse through
+ and should not be trimmed. However, its block-end border that was set
+ from the style should be trimmed. -->
+ <item class="border">
+ <item style="margin-block: 10px;"></item>
+ <item data-offset-y="58" class="collapsed"></item>
+ </item>
+ <item data-offset-y="59" class="collapsed" style="margin-block: 5px 8px;"></item>
+ </container>
+ </div>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-box/margin-trim/block-container-block-end-nested-last-child-with-border.html b/tests/wpt/tests/css/css-box/margin-trim/block-container-block-end-nested-last-child-with-border.html
new file mode 100644
index 00000000000..3bff1829b16
--- /dev/null
+++ b/tests/wpt/tests/css/css-box/margin-trim/block-container-block-end-nested-last-child-with-border.html
@@ -0,0 +1,58 @@
+<!DOCTYPE html>
+<html>
+<head>
+<link rel="author" title="Sammy Gill" href="mailto:sammy.gill@apple.com">
+<link rel="help" href="https://drafts.csswg.org/css-box-4/#margin-trim-block">
+<meta name="assert" content="border should protect the margins inside a nested block from trimming">
+<style>
+.trim {
+ margin-trim: block;
+ outline: 1px solid blue;
+}
+container {
+ display: block;
+ width: min-content;
+}
+item {
+ display: block;
+ inline-size: 50px;
+ block-size: 10px;
+ background-color: green;
+}
+.collapsed {
+ block-size: 0px;
+ margin-block: 10px;
+}
+.border {
+ block-size: auto;
+ border: 10px solid black;
+ margin-block-end: 25px;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+</head>
+<body onload="checkLayout('.collapsed')">
+ <div id="target">
+ <container class="trim">
+ <container>
+ <item></item>
+
+ <!-- This item's block-end margin should be trimmed
+ since it will collapse through to the outer container-->
+ <container style="margin-block-end: 300px;">
+ <!-- However the margins inside this item cannot collapse through due to
+ the border and should not be trimmed -->
+ <container class="border">
+ <item style="margin-block-end: 20px;"></item>
+ <item data-offset-y="58" class="collapsed"></item>
+ </container>
+ <item data-offset-y="68" class="collapsed"></item>
+ </container>
+ </container>
+ <item data-offset-y="68" class="collapsed"></item>
+ </container>
+ </div>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-box/margin-trim/block-container-block-end-self-collapsing-children-nested-at-bottom.html b/tests/wpt/tests/css/css-box/margin-trim/block-container-block-end-self-collapsing-children-nested-at-bottom.html
new file mode 100644
index 00000000000..1cb9995e948
--- /dev/null
+++ b/tests/wpt/tests/css/css-box/margin-trim/block-container-block-end-self-collapsing-children-nested-at-bottom.html
@@ -0,0 +1,47 @@
+<!DOCTYPE html>
+<html>
+<head>
+<link rel="author" title="Sammy Gill" href="mailto:sammy.gill@apple.com">
+<link rel="help" href="https://drafts.csswg.org/css-box-4/#margin-trim-block">
+<meta name="assert" content="all of the self-collapsing children at the bottom of the block should be positioned at the bottom of the block">
+<style>
+.trim {
+ margin-trim: block;
+}
+container {
+ display: block;
+}
+item {
+ display: block;
+ inline-size: 50px;
+ block-size: 50px;
+ background-color: green;
+}
+.collapsed {
+ block-size: 0px;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+</head>
+<body onload="checkLayout('.collapsed')">
+ <div id="target">
+ <container class="trim">
+ <container>
+ <item></item>
+ <item data-offset-y="58" class="collapsed" style="margin-block: 10px 20px;">
+ <item data-offset-y="58" class="collapsed" style="margin-block: -40px 50px;"></item>
+ <item data-offset-y="58" class="collapsed" style="margin-block: 35px 5px;">
+ <item data-offset-y="58" class="collapsed" style="margin-block: 300px 100px"></item>
+ </item>
+ </item>
+ </container>
+ <item data-offset-y="58" class="collapsed" style="margin-block: 40px 23px;"></item>
+ <item data-offset-y="58" class="collapsed" style="margin-block: 100px 200px">
+ <item data-offset-y="58" class="collapsed" style="margin-block: -100px -200px;"></item>
+ </item>
+ </container>
+ </div>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-box/margin-trim/block-container-block-end-self-collapsing-children-nested-margin-trim.html b/tests/wpt/tests/css/css-box/margin-trim/block-container-block-end-self-collapsing-children-nested-margin-trim.html
new file mode 100644
index 00000000000..997e20350d3
--- /dev/null
+++ b/tests/wpt/tests/css/css-box/margin-trim/block-container-block-end-self-collapsing-children-nested-margin-trim.html
@@ -0,0 +1,51 @@
+<!DOCTYPE html>
+<html>
+<head>
+<link rel="author" title="Sammy Gill" href="mailto:sammy.gill@apple.com">
+<link rel="help" href="https://drafts.csswg.org/css-box-4/#margin-trim-block">
+<meta name="assert" content="block-end margins in nested content should be trimmed when they collapse through to the outer block container">
+<style>
+.trim {
+ margin-trim: block;
+}
+container {
+ display: block;
+}
+item {
+ display: block;
+ inline-size: 50px;
+ block-size: 10px;
+ background-color: green;
+}
+.collapsed {
+ margin-block: 50px 100px;
+ block-size: 0px;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+</head>
+<body onload="checkLayout('.collapsed')">
+ <div id="target">
+ <container class="trim">
+ <container>
+ <item data-offset-y="8"></item>
+ <container>
+ <item></item>
+ <container>
+ <item></item>
+ <container class="trim">
+ <item></item>
+ <container>
+ <item></item>
+ <item data-offset-y="58" class="collapsed"></item>
+ </container>
+ </container>
+ </container>
+ </container>
+ </container>
+ </container>
+ </div>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-box/margin-trim/block-container-block-end-self-collapsing-children-offsets-nested-multiple-times.html b/tests/wpt/tests/css/css-box/margin-trim/block-container-block-end-self-collapsing-children-offsets-nested-multiple-times.html
new file mode 100644
index 00000000000..9ca3c3b28af
--- /dev/null
+++ b/tests/wpt/tests/css/css-box/margin-trim/block-container-block-end-self-collapsing-children-offsets-nested-multiple-times.html
@@ -0,0 +1,51 @@
+<!DOCTYPE html>
+<html>
+<head>
+<link rel="author" title="Sammy Gill" href="mailto:sammy.gill@apple.com">
+<link rel="help" href="https://drafts.csswg.org/css-box-4/#margin-trim-block">
+<meta name="assert" content="block-end margins in nested content should be trimmed when they collapse through to the outer block container">
+<style>
+.trim {
+ margin-trim: block;
+}
+container {
+ display: block;
+}
+item {
+ display: block;
+ inline-size: 50px;
+ block-size: 10px;
+ background-color: green;
+}
+.collapsed {
+ margin-block: 50px 100px;
+ block-size: 0px;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+</head>
+<body onload="checkLayout('.collapsed')">
+ <div id="target">
+ <container class="trim">
+ <container>
+ <item data-offset-y="8"></item>
+ <container>
+ <item></item>
+ <container>
+ <item></item>
+ <container>
+ <item></item>
+ <container>
+ <item></item>
+ <item data-offset-y="58" class="collapsed"></item>
+ </container>
+ </container>
+ </container>
+ </container>
+ </container>
+ </container>
+ </div>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-box/margin-trim/block-container-block-end-self-collapsing-children-offsets-nested-once.html b/tests/wpt/tests/css/css-box/margin-trim/block-container-block-end-self-collapsing-children-offsets-nested-once.html
new file mode 100644
index 00000000000..97a15b3a841
--- /dev/null
+++ b/tests/wpt/tests/css/css-box/margin-trim/block-container-block-end-self-collapsing-children-offsets-nested-once.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<html>
+<head>
+<link rel="author" title="Sammy Gill" href="mailto:sammy.gill@apple.com">
+<link rel="help" href="https://drafts.csswg.org/css-box-4/#margin-trim-block">
+<meta name="assert" content="block-end margins in nested content should be trimmed when they collapse through to the outer block container">
+<style>
+.outer {
+ margin-trim: block;
+}
+container {
+ display: block;
+}
+item {
+ display: block;
+ margin-block-end: 40px;
+ inline-size: 50px;
+ block-size: 50px;
+ background-color: green;
+}
+.collapsed {
+ margin-block-start: 50px;
+ block-size: 0px;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+</head>
+<body onload="checkLayout('container > item')">
+ <div id="target">
+ <container class="outer">
+ <container>
+ <item data-offset-y="8"></item>
+ <item data-offset-y="58" class="collapsed"></item>
+ <item data-offset-y="58" class="collapsed"></item>
+ </container>
+ </container>
+ </div>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-box/margin-trim/block-container-block-end-self-collapsing-children-offsets-vert-lr.html b/tests/wpt/tests/css/css-box/margin-trim/block-container-block-end-self-collapsing-children-offsets-vert-lr.html
new file mode 100644
index 00000000000..0b378b39eec
--- /dev/null
+++ b/tests/wpt/tests/css/css-box/margin-trim/block-container-block-end-self-collapsing-children-offsets-vert-lr.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<html>
+<head>
+<link rel="author" title="Sammy Gill" href="mailto:sammy.gill@apple.com">
+<link rel="help" href="https://drafts.csswg.org/css-box-4/#margin-trim-block">
+<meta name="assert" content="self-collapsing children at end of block with margin-trim block-end should be positioned at the bottom of the block container">
+<style>
+body {
+ writing-mode: vertical-lr;
+}
+container {
+ display: block;
+ margin-trim: block;
+ margin-block-end: 10px;
+}
+item {
+ display: block;
+ margin-block-end: 40px;
+ inline-size: 50px;
+ block-size: 50px;
+ background-color: green;
+}
+.collapsed {
+ margin-block-start: 50px;
+ block-size: 0px;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+</head>
+<body onload="checkLayout('container > item')">
+ <div id="target">
+ <container>
+ <item data-offset-x="8"></item>
+ <item data-offset-x="58" class="collapsed"></item>
+ <item data-offset-x="58" class="collapsed"></item>
+ </container>
+ </div>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-box/margin-trim/block-container-block-end-self-collapsing-children-offsets.html b/tests/wpt/tests/css/css-box/margin-trim/block-container-block-end-self-collapsing-children-offsets.html
new file mode 100644
index 00000000000..67c0a3e2283
--- /dev/null
+++ b/tests/wpt/tests/css/css-box/margin-trim/block-container-block-end-self-collapsing-children-offsets.html
@@ -0,0 +1,38 @@
+<!DOCTYPE html>
+<html>
+<head>
+<link rel="author" title="Sammy Gill" href="mailto:sammy.gill@apple.com">
+<link rel="help" href="https://drafts.csswg.org/css-box-4/#margin-trim-block">
+<meta name="assert" content="self-collapsing children at end of block with margin-trim block-end should be positioned at the bottom of the block container">
+<style>
+container {
+ display: block;
+ margin-trim: block;
+ margin-block-end: 10px;
+}
+item {
+ display: block;
+ margin-block-end: 40px;
+ inline-size: 50px;
+ block-size: 50px;
+ background-color: green;
+}
+.collapsed {
+ margin-block-start: 50px;
+ block-size: 0px;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+</head>
+<body onload="checkLayout('container > item')">
+ <div id="target">
+ <container>
+ <item data-offset-y="8"></item>
+ <item data-offset-y="58" class="collapsed"></item>
+ <item data-offset-y="58" class="collapsed"></item>
+ </container>
+ </div>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-box/margin-trim/block-container-block-end-self-collapsing-item-has-larger-block-end-ref.html b/tests/wpt/tests/css/css-box/margin-trim/block-container-block-end-self-collapsing-item-has-larger-block-end-ref.html
new file mode 100644
index 00000000000..9633928fd4d
--- /dev/null
+++ b/tests/wpt/tests/css/css-box/margin-trim/block-container-block-end-self-collapsing-item-has-larger-block-end-ref.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html>
+<head>
+<link rel="author" title="Sammy Gill" href="mailto:sammy.gill@apple.com">
+<link rel="help" href="https://drafts.csswg.org/css-box-4/#margin-trim-block">
+<title>margin-trim: block-container-block-end-self-collapsing-item-has-larger-block-end</title>
+<meta name="assert" content="self-collapsing margin at block-end has its block-end margin trimmed which would normally be used in collapsing with container">
+<style>
+container {
+ display: block;
+ margin-trim: block;
+ margin-block-end: 10px;
+}
+item {
+ display: block;
+ width: 50px;
+ height: 50px;
+ background-color: green;
+}
+.collapsed {
+ margin-block-end: 0px;
+ height: 0px;
+}
+</style>
+</head>
+<body>
+<container>
+ <item></item>
+ <item class="collapsed"></item>
+</container>
+<item></item>
+</body>
+</html>
+
diff --git a/tests/wpt/tests/css/css-box/margin-trim/block-container-block-end-self-collapsing-item-has-larger-block-end.html b/tests/wpt/tests/css/css-box/margin-trim/block-container-block-end-self-collapsing-item-has-larger-block-end.html
new file mode 100644
index 00000000000..f5c6f167970
--- /dev/null
+++ b/tests/wpt/tests/css/css-box/margin-trim/block-container-block-end-self-collapsing-item-has-larger-block-end.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>margin-trim: block-container-block-end-self-collapsing-item-has-larger-block-end</title>
+<link rel="author" title="Sammy Gill" href="mailto:sammy.gill@apple.com">
+<link rel="help" href="https://drafts.csswg.org/css-box-4/#margin-trim-block">
+<link rel="match" href="block-container-block-end-self-collapsing-item-has-larger-block-end-ref.html">
+<meta name="assert" content="self-collapsing margin at block-end has its block-end margin trimmed which would normally be used in collapsing with container">
+<style>
+container {
+ display: block;
+ margin-trim: block;
+ margin-block-end: 10px;
+}
+item {
+ display: block;
+ margin-block-end: 40px;
+ width: 50px;
+ height: 50px;
+ background-color: green;
+}
+.collapsed {
+ margin-block-end: 100px;
+ height: 0px;
+}
+</style>
+</head>
+<body>
+<container>
+ <item></item>
+ <item class="collapsed"></item>
+</container>
+<item></item>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-box/margin-trim/block-container-block-end-self-collapsing-item-has-larger-block-start-ref.html b/tests/wpt/tests/css/css-box/margin-trim/block-container-block-end-self-collapsing-item-has-larger-block-start-ref.html
new file mode 100644
index 00000000000..0b2b5662d10
--- /dev/null
+++ b/tests/wpt/tests/css/css-box/margin-trim/block-container-block-end-self-collapsing-item-has-larger-block-start-ref.html
@@ -0,0 +1,33 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>margin-trim: block-container-block-end-self-collapsing-item-has-larger-block-start</title>
+<link rel="author" title="Sammy Gill" href="mailto:sammy.gill@apple.com">
+<link rel="help" href="https://drafts.csswg.org/css-box-4/#margin-trim-block">
+<meta name="assert" content="self-collapsing margin at block-end has its block-start margin trimmed which would normally be used in collapsing with container">
+<style>
+container {
+ display: block;
+ margin-trim: block;
+ margin-block-end: 10px;
+}
+item {
+ display: block;
+ width: 50px;
+ height: 50px;
+ background-color: green;
+}
+.collapsed {
+ margin-block-end: 0px;
+ height: 0px;
+}
+</style>
+</head>
+<body>
+<container>
+ <item></item>
+ <item class="collapsed"></item>
+</container>
+<item></item>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-box/margin-trim/block-container-block-end-self-collapsing-item-has-larger-block-start.html b/tests/wpt/tests/css/css-box/margin-trim/block-container-block-end-self-collapsing-item-has-larger-block-start.html
new file mode 100644
index 00000000000..b5f7bf048db
--- /dev/null
+++ b/tests/wpt/tests/css/css-box/margin-trim/block-container-block-end-self-collapsing-item-has-larger-block-start.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>margin-trim: block-container-block-end-self-collapsing-item-has-larger-block-start</title>
+<link rel="author" title="Sammy Gill" href="mailto:sammy.gill@apple.com">
+<link rel="help" href="https://drafts.csswg.org/css-box-4/#margin-trim-block">
+<link rel="match" href="block-container-block-end-self-collapsing-item-has-larger-block-start-ref.html">
+<meta name="assert" content="self-collapsing margin at block-end has its block-end margin trimmed which would normally be used in collapsing with container">
+<style>
+container {
+ display: block;
+ margin-trim: block;
+ margin-block-end: 10px;
+}
+item {
+ display: block;
+ margin-block-end: 40px;
+ width: 50px;
+ height: 50px;
+ background-color: green;
+}
+.collapsed {
+ margin-block-start: 100px;
+ height: 0px;
+}
+</style>
+</head>
+<body>
+<container>
+ <item></item>
+ <item class="collapsed"></item>
+</container>
+<item></item>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-box/margin-trim/block-container-block-start-collapsed-margins-ref.html b/tests/wpt/tests/css/css-box/margin-trim/block-container-block-start-collapsed-margins-ref.html
new file mode 100644
index 00000000000..c90bc2bf3a9
--- /dev/null
+++ b/tests/wpt/tests/css/css-box/margin-trim/block-container-block-start-collapsed-margins-ref.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>margin-trim: block-container-block-start-collapsed-margins</title>
+<link rel="author" title="Sammy Gill" href="mailto:sammy.gill@apple.com">
+<link rel="help" href="https://drafts.csswg.org/css-box-4/#margin-trim-block">
+<meta name="assert" content="collapsed block-start margins should be trimmed but not affect container margins">
+<style>
+container {
+ display: block;
+ margin-trim: block;
+ margin-block-start: 10px;
+}
+item {
+ display: block;
+ width: 50px;
+ height: 50px;
+ background-color: green;
+}
+</style>
+</head>
+<body>
+<item style="margin-block-start: 0px;"></item>
+<container>
+ <item></item>
+</container>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-box/margin-trim/block-container-block-start-collapsed-margins.html b/tests/wpt/tests/css/css-box/margin-trim/block-container-block-start-collapsed-margins.html
new file mode 100644
index 00000000000..35c5df82116
--- /dev/null
+++ b/tests/wpt/tests/css/css-box/margin-trim/block-container-block-start-collapsed-margins.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>margin-trim: block-container-block-start-collapsed-margins</title>
+<link rel="author" title="Sammy Gill" href="mailto:sammy.gill@apple.com">
+<link rel="help" href="https://drafts.csswg.org/css-box-4/#margin-trim-block">
+<link rel="match" href="block-container-block-start-collapsed-margins-ref.html">
+<meta name="assert" content="second item propagates block-start margin through self collapsing item and gets trimmed">
+<style>
+container {
+ display: block;
+ margin-trim: block;
+ margin-block-start: 10px;
+}
+item {
+ display: block;
+ margin-block-start: 40px;
+ width: 50px;
+ height: 50px;
+ background-color: green;
+}
+.collapsed {
+ margin-block-start: 0px;
+ height: 0px;
+}
+</style>
+</head>
+<body>
+<item style="margin-block-start: 0px;"></item>
+<container>
+ <item class="collapsed"></item>
+ <item></item>
+</container>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-box/margin-trim/block-container-block-start-self-collapsing-item-has-larger-block-end-ref.html b/tests/wpt/tests/css/css-box/margin-trim/block-container-block-start-self-collapsing-item-has-larger-block-end-ref.html
new file mode 100644
index 00000000000..f851fe437a1
--- /dev/null
+++ b/tests/wpt/tests/css/css-box/margin-trim/block-container-block-start-self-collapsing-item-has-larger-block-end-ref.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>margin-trim: block-container-block-start-self-collapsing-item-has-larger-block-end</title>
+<link rel="author" title="Sammy Gill" href="mailto:sammy.gill@apple.com">
+<link rel="help" href="https://drafts.csswg.org/css-box-4/#margin-trim-block">
+<meta name="assert" content="self-collapsing margin at block-start has its block-end margin trimmed which would normally be used in collapsing with container">
+<style>
+container {
+ display: block;
+ margin-trim: block;
+ margin-block-end: 10px;
+}
+item {
+ display: block;
+ width: 50px;
+ height: 50px;
+ background-color: green;
+}
+.collapsed {
+ margin-block-end: 0px;
+ height: 0px;
+}
+</style>
+</head>
+<body>
+
+</body>
+</html>
+<container>
+ <item></item>
+ <item class="collapsed"></item>
+</container>
+<item></item>
diff --git a/tests/wpt/tests/css/css-box/margin-trim/block-container-block-start-self-collapsing-item-has-larger-block-end.html b/tests/wpt/tests/css/css-box/margin-trim/block-container-block-start-self-collapsing-item-has-larger-block-end.html
new file mode 100644
index 00000000000..6fab6732a87
--- /dev/null
+++ b/tests/wpt/tests/css/css-box/margin-trim/block-container-block-start-self-collapsing-item-has-larger-block-end.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>margin-trim: block-container-block-start-self-collapsing-item-has-larger-block-end</title>
+<link rel="author" title="Sammy Gill" href="mailto:sammy.gill@apple.com">
+<link rel="help" href="https://drafts.csswg.org/css-box-4/#margin-trim-block">
+<link rel="match" href="block-container-block-start-self-collapsing-item-has-larger-block-end-ref.html">
+<meta name="assert" content="self-collapsing margin at block-start has its block-end margin trimmed which would normally be used in collapsing with container">
+<style>
+container {
+ display: block;
+ margin-trim: block;
+ margin-block-start: 10px;
+}
+item {
+ display: block;
+ margin-block-start: 40px;
+ width: 50px;
+ height: 50px;
+ background-color: green;
+}
+.collapsed {
+ margin-block-end: 100px;
+ height: 0px;
+}
+</style>
+</head>
+<body>
+<item style="margin-block-start: 0px;"></item>
+<container>
+ <item class="collapsed"></item>
+ <item></item>
+</container>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-box/margin-trim/block-container-block-start-self-collapsing-item-larger-block-start-ref.html b/tests/wpt/tests/css/css-box/margin-trim/block-container-block-start-self-collapsing-item-larger-block-start-ref.html
new file mode 100644
index 00000000000..3e7de7eb972
--- /dev/null
+++ b/tests/wpt/tests/css/css-box/margin-trim/block-container-block-start-self-collapsing-item-larger-block-start-ref.html
@@ -0,0 +1,33 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>margin-trim: block-container-block-start-self-collapsing-item-has-larger-block-start</title>
+<link rel="author" title="Sammy Gill" href="mailto:sammy.gill@apple.com">
+<link rel="help" href="https://drafts.csswg.org/css-box-4/#margin-trim-block">
+<meta name="assert" content="collapsed block-end margins should be trimmed but not affect container margins">
+<style>
+container {
+ display: block;
+ margin-trim: block;
+ margin-block-end: 10px;
+}
+item {
+ display: block;
+ width: 50px;
+ height: 50px;
+ background-color: green;
+}
+.collapsed {
+ margin-block-end: 0px;
+ height: 0px;
+}
+</style>
+</head>
+<body>
+<container>
+ <item></item>
+ <item class="collapsed"></item>
+</container>
+<item></item>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-box/margin-trim/block-container-block-start-self-collapsing-item-larger-block-start.html b/tests/wpt/tests/css/css-box/margin-trim/block-container-block-start-self-collapsing-item-larger-block-start.html
new file mode 100644
index 00000000000..91919e22e07
--- /dev/null
+++ b/tests/wpt/tests/css/css-box/margin-trim/block-container-block-start-self-collapsing-item-larger-block-start.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>margin-trim: block-container-block-start-self-collapsing-item-has-larger-block-start</title>
+<link rel="author" title="Sammy Gill" href="mailto:sammy.gill@apple.com">
+<link rel="help" href="https://drafts.csswg.org/css-box-4/#margin-trim-block">
+<link rel="match" href="block-container-block-start-self-collapsing-item-larger-block-start-ref.html">
+<meta name="assert" content="self-collapsing margin at block-start has its block-start margin trimmed which would normally be used in collapsing with container"">
+<style>
+container {
+ display: block;
+ margin-trim: block;
+ margin-block-start: 10px;
+}
+item {
+ display: block;
+ margin-block-start: 40px;
+ width: 50px;
+ height: 50px;
+ background-color: green;
+}
+.collapsed {
+ margin-block-start: 100px;
+ height: 0px;
+}
+</style>
+</head>
+<body>
+<item style="margin-block-start: 0px;"></item>
+<container>
+ <item class="collapsed"></item>
+ <item></item>
+</container>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-box/margin-trim/computed-margin-values/grid-block-start.html b/tests/wpt/tests/css/css-box/margin-trim/computed-margin-values/grid-block-start.html
new file mode 100644
index 00000000000..c08d905ca29
--- /dev/null
+++ b/tests/wpt/tests/css/css-box/margin-trim/computed-margin-values/grid-block-start.html
@@ -0,0 +1,52 @@
+<!DOCTYPE html>
+<html>
+<head>
+<link rel="author" title="Sammy Gill" href="mailto:sammy.gill@apple.com">
+<link rel="help" href="https://drafts.csswg.org/css-box-4/#margin-trim-grid">
+<meta name="assert" content="Grid items with trimmed block start margins should be reflected in computed style">
+<style>
+grid {
+ display: grid;
+ width: min-content;
+ border: 1px solid black;
+ grid-template-columns: auto auto;
+ margin-trim: block-start;
+}
+item {
+ display: block;
+ width: 50px;
+ height: 50px;
+ background-color: green;
+}
+.locked-location {
+ grid-row: 1;
+ grid-column: 2;
+}
+item:nth-child(1) {
+ margin-block-start: 50%;
+}
+item:nth-child(2) {
+ margin-block-start: -30px;
+}
+item:nth-child(3) {
+ margin-block-start: 10px;
+}
+item:nth-child(4) {
+ margin-block-start: 10px;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+</head>
+<body onload="checkLayout('grid > item')">
+ <div id="target">
+ <grid>
+ <item class="locked-location" data-expected-margin-top="0"></item>
+ <item data-expected-margin-top="0"></item>
+ <item data-expected-margin-top="10"></item>
+ <item data-expected-margin-top="10"></item>
+ </grid>
+ </div>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-box/margin-trim/computed-margin-values/grid-inline-end-items-in-last-column-trimmed.html b/tests/wpt/tests/css/css-box/margin-trim/computed-margin-values/grid-inline-end-items-in-last-column-trimmed.html
new file mode 100644
index 00000000000..58c05216ae0
--- /dev/null
+++ b/tests/wpt/tests/css/css-box/margin-trim/computed-margin-values/grid-inline-end-items-in-last-column-trimmed.html
@@ -0,0 +1,54 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title></title>
+<link rel="author" href="mailto:sammy.gill@apple.com">
+<link rel="help" href="https://drafts.csswg.org/css-box-4/#margin-trim-grid">
+<meta name="assert" content="trimmed inline-end margins for grid items should be reflected in computed style">
+<style>
+grid {
+ display: grid;
+ grid-template-columns: repeat(2, auto);
+ outline: 1px solid black;
+ margin-trim: inline-end;
+}
+item {
+ display: block;
+ height: 50px;
+}
+.locked-position {
+ grid-row: 2;
+ grid-column: 2;
+}
+item:nth-child(1) {
+ background-color: aqua;
+ margin-inline-end: 10px;
+}
+item:nth-child(2) {
+ background-color: blueviolet;
+ margin-inline-end: 30%;
+}
+item:nth-child(3) {
+ background-color: blue;
+ margin-inline-end: -30px;
+}
+item:nth-child(4) {
+ background-color: coral;
+ margin-inline-end: 10px;
+}
+</style>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+</head>
+<body onload="checkLayout('grid > item')">
+ <div id="target">
+ <grid>
+ <item data-expected-margin-right="10"></item>
+ <item data-expected-margin-right="0"></item>
+ <item class="locked-position" data-expected-margin-right="0"></item>
+ <item data-expected-margin-right="10"></item>
+ </grid>
+ </div>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-cascade/scope-part-ref.html b/tests/wpt/tests/css/css-cascade/scope-part-ref.html
new file mode 100644
index 00000000000..d0824e73572
--- /dev/null
+++ b/tests/wpt/tests/css/css-cascade/scope-part-ref.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<style>
+div {
+ padding: 5px;
+}
+
+.b {
+ background: blue;
+}
+
+.r {
+ background: red;
+}
+</style>
+<div class="r"></div>
+<div class="r"></div>
+<div class="b"></div>
+<div class="b"></div>
+<div class="b"></div>
+<div class="b"></div>
+<div class="r"></div>
+<div class="r"></div>
+<div class="b"></div>
diff --git a/tests/wpt/tests/css/css-cascade/scope-part.html b/tests/wpt/tests/css/css-cascade/scope-part.html
new file mode 100644
index 00000000000..6583db20c07
--- /dev/null
+++ b/tests/wpt/tests/css/css-cascade/scope-part.html
@@ -0,0 +1,107 @@
+<!DOCTYPE html>
+<link rel="author" title="David Shin" href="mailto:dshin@mozilla.com">
+<link rel="help" href="drafts.csswg.org/css-cascade-6/#scoped-styles">
+<link rel="help" href="https://drafts.csswg.org/css-shadow-parts/#part">
+<link rel="match" href="scope-part-ref.html">
+<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1908279">
+<meta name="assert" content="Implicit @scope rule lets ::part selector to match inside the shadow tree">
+<template id="custom-element">
+ <style>
+ :host {
+ display: block;
+ }
+ div {
+ padding: 5px;
+ }
+ </style>
+ <slot></slot>
+ <div part="a"></div>
+ <div part="b"></div>
+</template>
+<template id="custom-element-wrapper">
+ <style>
+ :host {
+ display: block;
+ }
+ div {
+ padding: 5px;
+ }
+ </style>
+ <custom-element exportparts="a"></custom-element>
+</template>
+<custom-element>
+ <style>
+ @scope {
+ :scope {
+ background: red;
+ }
+ }
+ </style>
+</custom-element>
+<custom-element>
+ <style>
+ @scope {
+ :scope::part(a), :scope::part(b) {
+ background: blue;
+ }
+ }
+ </style>
+</custom-element>
+<custom-element>
+ <style>
+ @scope {
+ :scope::part(a), :scope::part(b) {
+ background: red;
+ }
+ }
+ </style>
+ <custom-element>
+ <style>
+ @scope {
+ :scope::part(a), :scope::part(b) {
+ background: blue;
+ }
+ }
+ </style>
+ </custom-element>
+</custom-element>
+<custom-element-wrapper>
+ <style slot="s">
+ @scope {
+ :scope::part(a) {
+ background: blue;
+ }
+ :scope::part(b) {
+ background: red;
+ }
+ }
+ </style>
+</custom-element-wrapper>
+<script>
+customElements.define(
+ "custom-element",
+ class extends HTMLElement {
+ constructor() {
+ super();
+ let template = document.getElementById("custom-element");
+ let templateContent = template.content;
+
+ const shadowRoot = this.attachShadow({ mode: "open" });
+ shadowRoot.appendChild(templateContent.cloneNode(true));
+ }
+ },
+);
+customElements.define(
+ "custom-element-wrapper",
+ class extends HTMLElement {
+ constructor() {
+ super();
+ let template = document.getElementById("custom-element-wrapper");
+ let templateContent = template.content;
+
+ const shadowRoot = this.attachShadow({ mode: "open" });
+ shadowRoot.appendChild(templateContent.cloneNode(true));
+ }
+ },
+);
+</script>
diff --git a/tests/wpt/tests/css/css-color/parsing/color-computed-relative-color.html b/tests/wpt/tests/css/css-color/parsing/color-computed-relative-color.html
index 765485fd135..4997d6585d8 100644
--- a/tests/wpt/tests/css/css-color/parsing/color-computed-relative-color.html
+++ b/tests/wpt/tests/css/css-color/parsing/color-computed-relative-color.html
@@ -24,8 +24,16 @@
<body>
<div id="target"></div>
<script>
- // rgb(from ...)
+ const target = document.getElementById('target');
+
+ function fuzzy_test_computed_color_using_currentcolor(specified, expected, current) {
+ if (!current)
+ current = expected;
+ target.style["color"] = current;
+ fuzzy_test_computed_color_property(`background-color`, specified, expected);
+ }
+ // rgb(from ...)
// Testing no modifications.
fuzzy_test_computed_color(`rgb(from rebeccapurple r g b)`, `color(srgb 0.4 0.2 0.6)`);
fuzzy_test_computed_color(`rgb(from rebeccapurple r g b / alpha)`, `color(srgb 0.4 0.2 0.6)`);
@@ -125,6 +133,9 @@
fuzzy_test_computed_color(`rgb(from rgb(20% 40% 60% / none) r g b / alpha)`, `color(srgb 0.2 0.4 0.6 / 0)`);
fuzzy_test_computed_color(`color-mix(in srgb, rgb(from rebeccapurple none g b), rebeccapurple)`, `color(srgb 0.4 0.2 0.6)`);
+ // Testing with 'currentColor'
+ fuzzy_test_computed_color_using_currentcolor(`rgb(from currentColor r g b)`, `color(srgb 0.4 0.2 0.6)`)
+
// color-mix
fuzzy_test_computed_color(`rgb(from color-mix(in srgb, red, red) r g b / alpha)`, `color(srgb 1 0 0)`);
@@ -206,6 +217,9 @@
fuzzy_test_computed_color(`hsl(from hsl(none 20% 50% / .5) h s l / alpha)`, `color(srgb 0.6 0.4 0.4 / 0.5)`);
fuzzy_test_computed_color(`color-mix(in hsl, hsl(from rebeccapurple none s l), rebeccapurple)`, `color(srgb 0.4 0.2 0.6)`);
+ // Testing with 'currentColor'
+ fuzzy_test_computed_color_using_currentcolor(`hsl(from currentColor h s l)`, `color(srgb 0.4 0.2 0.6)`);
+
// color-mix
fuzzy_test_computed_color(`hsl(from color-mix(in srgb, red, red) h s l / alpha)`, `color(srgb 1 0 0)`);
@@ -286,6 +300,9 @@
fuzzy_test_computed_color(`hwb(from hwb(none 20% 50% / .5) h w b / alpha)`, `color(srgb 0.5 0.2 0.2 / 0.5)`);
fuzzy_test_computed_color(`color-mix(in hwb, hwb(from rebeccapurple none w b), rebeccapurple)`, `color(srgb 0.4 0.2 0.6)`);
+ // Testing with 'currentColor'
+ fuzzy_test_computed_color_using_currentcolor(`hwb(from currentColor h w b)`, `color(srgb 0.4 0.2 0.6)`);
+
// color-mix
fuzzy_test_computed_color(`hwb(from color-mix(in srgb, red, red) h w b / alpha)`, `color(srgb 1 0 0)`);
@@ -359,6 +376,9 @@
fuzzy_test_computed_color(`lab(from lab(25 20 50 / none) l a b / alpha)`, `lab(25 20 50 / 0)`);
fuzzy_test_computed_color(`color-mix(in lab, lab(from lab(25 20 50) none a b), lab(25 20 50))`, `lab(25 20 50)`);
+ // Testing with 'currentColor'
+ fuzzy_test_computed_color_using_currentcolor(`lab(from currentColor l a b)`, `lab(25 20 50)`);
+
// color-mix
fuzzy_test_computed_color(`lab(from color-mix(in lab, lab(25 20 50), lab(25 20 50)) l a b / alpha)`, `lab(25 20 50)`);
@@ -432,6 +452,9 @@
fuzzy_test_computed_color(`oklab(from oklab(0.25 0.2 0.5 / none) l a b / alpha)`, `oklab(0.25 0.2 0.5 / 0)`);
fuzzy_test_computed_color(`color-mix(in oklab, oklab(from oklab(0.25 0.2 0.5) none a b), oklab(0.25 0.2 0.5))`, `oklab(0.25 0.2 0.5)`);
+ // Testing with 'currentColor'
+ fuzzy_test_computed_color_using_currentcolor(`oklab(from currentColor l a b)`, `oklab(0.25 0.2 0.5)`);
+
// color-mix
fuzzy_test_computed_color(`oklab(from color-mix(in oklab, oklab(0.25 0.2 0.5), oklab(0.25 0.2 0.5)) l a b / alpha)`, `oklab(0.25 0.2 0.5)`);
@@ -513,6 +536,9 @@
fuzzy_test_computed_color(`lch(from lch(0.7 45 30 / none) l c h / alpha)`, `lch(0.7 45 30 / 0)`);
fuzzy_test_computed_color(`color-mix(in lch, lch(from lch(0.7 45 30) l c none), lch(0.7 45 30))`, `lch(0.7 45 30)`);
+ // Testing with 'currentColor'
+ fuzzy_test_computed_color_using_currentcolor(`lch(from currentColor l c h)`, `lch(0.7 45 30)`);
+
// color-mix
fuzzy_test_computed_color(`lch(from color-mix(in lch, lch(70 45 30), lch(70 45 30)) l c h / alpha)`, `lch(70 45 30)`);
@@ -593,9 +619,12 @@
fuzzy_test_computed_color(`oklch(from oklch(none none none / none) l c h / alpha)`, `oklch(0 0 0 / 0)`);
fuzzy_test_computed_color(`oklch(from oklch(0.7 none 30) l c h)`, `oklch(0.7 0 30)`);
fuzzy_test_computed_color(`oklch(from oklch(0.7 0.45 30 / none) l c h / alpha)`, `oklch(0.7 0.45 30 / 0)`);
- fuzzy_test_computed_color(`color-mix(in oklch, oklch(from oklch(0.7 0.45 30) l c none), oklch(0.7 0.45 30))`, `oklch(0.7 0.45 30)`);
+
+ // Testing with 'currentColor'
+ fuzzy_test_computed_color_using_currentcolor(`oklch(from currentColor l c h)`, `oklch(0.7 0.45 30)`);
// color-mix
+ fuzzy_test_computed_color(`color-mix(in oklch, oklch(from oklch(0.7 0.45 30) l c none), oklch(0.7 0.45 30))`, `oklch(0.7 0.45 30)`);
fuzzy_test_computed_color(`oklch(from color-mix(in oklch, oklch(0.7 0.45 30), oklch(0.7 0.45 30)) l c h / alpha)`, `oklch(0.7 0.45 30)`);
for (const colorSpace of [ "srgb", "srgb-linear", "a98-rgb", "rec2020", "prophoto-rgb", "display-p3" ]) {
@@ -690,6 +719,9 @@
fuzzy_test_computed_color(`color(from color(${colorSpace} 0.7 none 0.3) ${colorSpace} r g b)`, `color(${colorSpace} 0.7 0 0.3)`);
fuzzy_test_computed_color(`color(from color(${colorSpace} 0.7 0.5 0.3 / none) ${colorSpace} r g b / alpha)`, `color(${colorSpace} 0.7 0.5 0.3 / 0)`);
+ // Testing with 'currentColor'
+ fuzzy_test_computed_color_using_currentcolor(`color(from currentColor ${colorSpace} r g b)`, `color(${colorSpace} 0.7 0.5 0.3)`);
+
// color-mix
fuzzy_test_computed_color(`color(from color-mix(in xyz, color(${colorSpace} 0.7 0.5 0.3), color(${colorSpace} 0.7 0.5 0.3)) ${colorSpace} r g b / alpha)`, `color(${colorSpace} 0.7 0.5 0.3)`);
}
@@ -759,6 +791,9 @@
fuzzy_test_computed_color(`color(from color(${colorSpace} 7 none 100) ${colorSpace} x y z)`, `color(${resultColorSpace} 7 0 100)`);
fuzzy_test_computed_color(`color(from color(${colorSpace} 7 -20.5 100 / none) ${colorSpace} x y z / alpha)`, `color(${resultColorSpace} 7 -20.5 100 / 0)`);
+ // Testing with 'currentColor'
+ fuzzy_test_computed_color_using_currentcolor(`color(from currentColor ${colorSpace} x y z)`, `color(${resultColorSpace} 7 -20.5 100)`);
+
// color-mix
fuzzy_test_computed_color(`color(from color-mix(in xyz, color(${colorSpace} 0.7 0.5 0.3), color(${colorSpace} 0.7 0.5 0.3)) ${colorSpace} x y z / alpha)`, `color(${resultColorSpace} 0.7 0.5 0.3)`);
}
diff --git a/tests/wpt/tests/css/css-color/parsing/color-valid-relative-color.html b/tests/wpt/tests/css/css-color/parsing/color-valid-relative-color.html
index 7b44b4f0bfc..f7ee41410ea 100644
--- a/tests/wpt/tests/css/css-color/parsing/color-valid-relative-color.html
+++ b/tests/wpt/tests/css/css-color/parsing/color-valid-relative-color.html
@@ -27,723 +27,717 @@
for (const rgbFunction of ["rgb", "rgba"]) {
// Testing no modifications.
- fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple r g b)`, `color(srgb 0.4 0.2 0.6)`);
- fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple r g b / alpha)`, `color(srgb 0.4 0.2 0.6)`);
- fuzzy_test_valid_color(`${rgbFunction}(from rgb(20%, 40%, 60%, 80%) r g b / alpha)`, `color(srgb 0.2 0.4 0.6 / 0.8)`);
- fuzzy_test_valid_color(`${rgbFunction}(from hsl(120deg 20% 50% / .5) r g b / alpha)`, `color(srgb 0.4 0.6 0.4 / 0.5)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple r g b)`, `rgb(from rebeccapurple r g b)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple r g b / alpha)`, `rgb(from rebeccapurple r g b / alpha)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rgb(20%, 40%, 60%, 80%) r g b / alpha)`, `rgb(from rgba(51, 102, 153, 0.8) r g b / alpha)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from hsl(120deg 20% 50% / .5) r g b / alpha)`, `rgb(from rgba(102, 153, 102, 0.5) r g b / alpha)`);
// Test nesting relative colors.
- fuzzy_test_valid_color(`${rgbFunction}(from rgb(from rebeccapurple r g b) r g b)`, `color(srgb 0.4 0.2 0.6)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rgb(from rebeccapurple r g b) r g b)`, `rgb(from rgb(from rebeccapurple r g b) r g b)`);
// Testing replacement with 0.
- fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple 0 0 0)`, `color(srgb 0 0 0)`);
- fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple 0 0 0 / 0)`, `color(srgb 0 0 0 / 0)`);
- fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple 0 g b / alpha)`, `color(srgb 0 0.2 0.6)`);
- fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple r 0 b / alpha)`, `color(srgb 0.4 0 0.6)`);
- fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple r g 0 / alpha)`, `color(srgb 0.4 0.2 0)`);
- fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple r g b / 0)`, `color(srgb 0.4 0.2 0.6 / 0)`);
- fuzzy_test_valid_color(`${rgbFunction}(from rgb(20%, 40%, 60%, 80%) 0 g b / alpha)`, `color(srgb 0 0.4 0.6 / 0.8)`);
- fuzzy_test_valid_color(`${rgbFunction}(from rgb(20%, 40%, 60%, 80%) r 0 b / alpha)`, `color(srgb 0.2 0 0.6 / 0.8)`);
- fuzzy_test_valid_color(`${rgbFunction}(from rgb(20%, 40%, 60%, 80%) r g 0 / alpha)`, `color(srgb 0.2 0.4 0 / 0.8)`);
- fuzzy_test_valid_color(`${rgbFunction}(from rgb(20%, 40%, 60%, 80%) r g b / 0)`, `color(srgb 0.2 0.4 0.6 / 0)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple 0 0 0)`, `rgb(from rebeccapurple 0 0 0)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple 0 0 0 / 0)`, `rgb(from rebeccapurple 0 0 0 / 0)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple 0 g b / alpha)`, `rgb(from rebeccapurple 0 g b / alpha)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple r 0 b / alpha)`, `rgb(from rebeccapurple r 0 b / alpha)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple r g 0 / alpha)`, `rgb(from rebeccapurple r g 0 / alpha)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple r g b / 0)`, `rgb(from rebeccapurple r g b / 0)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rgb(20%, 40%, 60%, 80%) 0 g b / alpha)`, `rgb(from rgba(51, 102, 153, 0.8) 0 g b / alpha)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rgb(20%, 40%, 60%, 80%) r 0 b / alpha)`, `rgb(from rgba(51, 102, 153, 0.8) r 0 b / alpha)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rgb(20%, 40%, 60%, 80%) r g 0 / alpha)`, `rgb(from rgba(51, 102, 153, 0.8) r g 0 / alpha)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rgb(20%, 40%, 60%, 80%) r g b / 0)`, `rgb(from rgba(51, 102, 153, 0.8) r g b / 0)`);
// Testing replacement with a number.
- fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple 25 g b / alpha)`, `color(srgb 0.098 0.2 0.6)`);
- fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple r 25 b / alpha)`, `color(srgb 0.4 0.098 0.6)`);
- fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple r g 25 / alpha)`, `color(srgb 0.4 0.2 0.098)`);
- fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple r g b / .25)`, `color(srgb 0.4 0.2 0.6 / 0.25)`);
- fuzzy_test_valid_color(`${rgbFunction}(from rgb(20%, 40%, 60%, 80%) 25 g b / alpha)`, `color(srgb 0.098 0.4 0.6 / 0.8)`);
- fuzzy_test_valid_color(`${rgbFunction}(from rgb(20%, 40%, 60%, 80%) r 25 b / alpha)`, `color(srgb 0.2 0.098 0.6 / 0.8)`);
- fuzzy_test_valid_color(`${rgbFunction}(from rgb(20%, 40%, 60%, 80%) r g 25 / alpha)`, `color(srgb 0.2 0.4 0.098 / 0.8)`);
- fuzzy_test_valid_color(`${rgbFunction}(from rgb(20%, 40%, 60%, 80%) r g b / .20)`, `color(srgb 0.2 0.4 0.6 / 0.2)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple 25 g b / alpha)`, `rgb(from rebeccapurple 25 g b / alpha)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple r 25 b / alpha)`, `rgb(from rebeccapurple r 25 b / alpha)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple r g 25 / alpha)`, `rgb(from rebeccapurple r g 25 / alpha)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple r g b / .25)`, `rgb(from rebeccapurple r g b / 0.25)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rgb(20%, 40%, 60%, 80%) 25 g b / alpha)`, `rgb(from rgba(51, 102, 153, 0.8) 25 g b / alpha)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rgb(20%, 40%, 60%, 80%) r 25 b / alpha)`, `rgb(from rgba(51, 102, 153, 0.8) r 25 b / alpha)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rgb(20%, 40%, 60%, 80%) r g 25 / alpha)`, `rgb(from rgba(51, 102, 153, 0.8) r g 25 / alpha)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rgb(20%, 40%, 60%, 80%) r g b / .20)`, `rgb(from rgba(51, 102, 153, 0.8) r g b / 0.20)`);
// Testing replacement with a percentage.
- fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple 20% g b / alpha)`, `color(srgb 0.2 0.2 0.6)`);
- fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple r 20% b / alpha)`, `color(srgb 0.4 0.2 0.6)`);
- fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple r g 20% / alpha)`, `color(srgb 0.4 0.2 0.2)`);
- fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple r g b / 20%)`, `color(srgb 0.4 0.2 0.6 / 0.2)`);
- fuzzy_test_valid_color(`${rgbFunction}(from rgb(20%, 40%, 60%, 80%) 20% g b / alpha)`, `color(srgb 0.2 0.4 0.6 / 0.8)`);
- fuzzy_test_valid_color(`${rgbFunction}(from rgb(20%, 40%, 60%, 80%) r 20% b / alpha)`, `color(srgb 0.2 0.2 0.6 / 0.8)`);
- fuzzy_test_valid_color(`${rgbFunction}(from rgb(20%, 40%, 60%, 80%) r g 20% / alpha)`, `color(srgb 0.2 0.4 0.2 / 0.8)`);
- fuzzy_test_valid_color(`${rgbFunction}(from rgb(20%, 40%, 60%, 80%) r g b / 20%)`, `color(srgb 0.2 0.4 0.6 / 0.2)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple 20% g b / alpha)`, `rgb(from rebeccapurple 20% g b / alpha)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple r 20% b / alpha)`, `rgb(from rebeccapurple r 20% b / alpha)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple r g 20% / alpha)`, `rgb(from rebeccapurple r g 20% / alpha)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple r g b / 20%)`, `rgb(from rebeccapurple r g b / 20%)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rgb(20%, 40%, 60%, 80%) 20% g b / alpha)`, `rgb(from rgba(51, 102, 153, 0.8) 20% g b / alpha)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rgb(20%, 40%, 60%, 80%) r 20% b / alpha)`, `rgb(from rgba(51, 102, 153, 0.8) r 20% b / alpha)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rgb(20%, 40%, 60%, 80%) r g 20% / alpha)`, `rgb(from rgba(51, 102, 153, 0.8) r g 20% / alpha)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rgb(20%, 40%, 60%, 80%) r g b / 20%)`, `rgb(from rgba(51, 102, 153, 0.8) r g b / 20%)`);
// Testing replacement with a number for r, g, b but percent for alpha.
- fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple 25 g b / 25%)`, `color(srgb 0.098 0.2 0.6 / 0.25)`);
- fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple r 25 b / 25%)`, `color(srgb 0.4 0.098 0.6 / 0.25)`);
- fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple r g 25 / 25%)`, `color(srgb 0.4 0.2 0.098 / 0.25)`);
- fuzzy_test_valid_color(`${rgbFunction}(from rgb(20%, 40%, 60%, 80%) 25 g b / 25%)`, `color(srgb 0.098 0.4 0.6 / 0.25)`);
- fuzzy_test_valid_color(`${rgbFunction}(from rgb(20%, 40%, 60%, 80%) r 25 b / 25%)`, `color(srgb 0.2 0.098 0.6 / 0.25)`);
- fuzzy_test_valid_color(`${rgbFunction}(from rgb(20%, 40%, 60%, 80%) r g 25 / 25%)`, `color(srgb 0.2 0.4 0.098 / 0.25)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple 25 g b / 25%)`, `rgb(from rebeccapurple 25 g b / 25%)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple r 25 b / 25%)`, `rgb(from rebeccapurple r 25 b / 25%)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple r g 25 / 25%)`, `rgb(from rebeccapurple r g 25 / 25%)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rgb(20%, 40%, 60%, 80%) 25 g b / 25%)`, `rgb(from rgba(51, 102, 153, 0.8) 25 g b / 25%)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rgb(20%, 40%, 60%, 80%) r 25 b / 25%)`, `rgb(from rgba(51, 102, 153, 0.8) r 25 b / 25%)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rgb(20%, 40%, 60%, 80%) r g 25 / 25%)`, `rgb(from rgba(51, 102, 153, 0.8) r g 25 / 25%)`);
// Testing permutation.
- fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple g b r)`, `color(srgb 0.2 0.6 0.4)`);
- fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple b alpha r / g)`, `color(srgb 0.6 0.004 0.4)`);
- fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple r r r / r)`, `color(srgb 0.4 0.4 0.4)`);
- fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple alpha alpha alpha / alpha)`, `color(srgb 0.004 0.004 0.004)`);
- fuzzy_test_valid_color(`${rgbFunction}(from rgb(20%, 40%, 60%, 80%) g b r)`, `color(srgb 0.4 0.6 0.2 / 0.8)`);
- fuzzy_test_valid_color(`${rgbFunction}(from rgb(20%, 40%, 60%, 80%) b alpha r / g)`, `color(srgb 0.6 0.003 0.2)`);
- fuzzy_test_valid_color(`${rgbFunction}(from rgb(20%, 40%, 60%, 80%) r r r / r)`, `color(srgb 0.2 0.2 0.2)`);
- fuzzy_test_valid_color(`${rgbFunction}(from rgb(20%, 40%, 60%, 80%) alpha alpha alpha / alpha)`, `color(srgb 0.003 0.003 0.003 / 0.8)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple g b r)`, `rgb(from rebeccapurple g b r)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple b alpha r / g)`, `rgb(from rebeccapurple b alpha r / g)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple r r r / r)`, `rgb(from rebeccapurple r r r / r)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple alpha alpha alpha / alpha)`, `rgb(from rebeccapurple alpha alpha alpha / alpha)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rgb(20%, 40%, 60%, 80%) g b r)`, `rgb(from rgba(51, 102, 153, 0.8) g b r)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rgb(20%, 40%, 60%, 80%) b alpha r / g)`, `rgb(from rgba(51, 102, 153, 0.8) b alpha r / g)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rgb(20%, 40%, 60%, 80%) r r r / r)`, `rgb(from rgba(51, 102, 153, 0.8) r r r / r)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rgb(20%, 40%, 60%, 80%) alpha alpha alpha / alpha)`, `rgb(from rgba(51, 102, 153, 0.8) alpha alpha alpha / alpha)`);
// Testing mixes of number and percentage. (These would not be allowed in the non-relative syntax).
- fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple r 20% 10)`, `color(srgb 0.4 0.2 0.0392)`);
- fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple r 10 20%)`, `color(srgb 0.4 0.0392 0.2)`);
- fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple 0% 10 10)`, `color(srgb 0 0.0392 0.0392)`);
- fuzzy_test_valid_color(`${rgbFunction}(from rgb(20%, 40%, 60%, 80%) r 20% 10)`, `color(srgb 0.2 0.2 0.0392 / 0.8)`);
- fuzzy_test_valid_color(`${rgbFunction}(from rgb(20%, 40%, 60%, 80%) r 10 20%)`, `color(srgb 0.2 0.0392 0.2 / 0.8)`);
- fuzzy_test_valid_color(`${rgbFunction}(from rgb(20%, 40%, 60%, 80%) 0% 10 10)`, `color(srgb 0 0.0392 0.0392 / 0.8)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple r 20% 10)`, `rgb(from rebeccapurple r 20% 10)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple r 10 20%)`, `rgb(from rebeccapurple r 10 20%)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple 0% 10 10)`, `rgb(from rebeccapurple 0% 10 10)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rgb(20%, 40%, 60%, 80%) r 20% 10)`, `rgb(from rgba(51, 102, 153, 0.8) r 20% 10)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rgb(20%, 40%, 60%, 80%) r 10 20%)`, `rgb(from rgba(51, 102, 153, 0.8) r 10 20%)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rgb(20%, 40%, 60%, 80%) 0% 10 10)`, `rgb(from rgba(51, 102, 153, 0.8) 0% 10 10)`);
// r g b
// 102 51 153
// 40% 20% 60%
// Testing with calc().
- fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple calc(r) calc(g) calc(b))`, `color(srgb 0.4 0.2 0.6)`);
- fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple r calc(g * 2) 10)`, `color(srgb 0.4 0.4 0.0392)`);
- fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple b calc(r * .5) 10)`, `color(srgb 0.6 0.2 0.0392)`);
- fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple r calc(g * .5 + g * .5) 10)`, `color(srgb 0.4 0.2 0.0392)`);
- fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple r calc(b * .5 - g * .5) 10)`, `color(srgb 0.4 0.2 0.0392)`);
- fuzzy_test_valid_color(`${rgbFunction}(from rgb(20%, 40%, 60%, 80%) calc(r) calc(g) calc(b) / calc(alpha))`, `color(srgb 0.2 0.4 0.6 / 0.8)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple calc(r) calc(g) calc(b))`, `rgb(from rebeccapurple calc(r) calc(g) calc(b))`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple r calc(g * 2) 10)`, `rgb(from rebeccapurple r calc(2 * g) 10)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple b calc(r * .5) 10)`, `rgb(from rebeccapurple b calc(0.5 * r) 10)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple r calc(g * .5 + g * .5) 10)`, `rgb(from rebeccapurple r calc((0.5 * g) + (0.5 * g)) 10)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple r calc(b * .5 - g * .5) 10)`, `rgb(from rebeccapurple r calc((0.5 * b) - (0.5 * g)) 10)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rgb(20%, 40%, 60%, 80%) calc(r) calc(g) calc(b) / calc(alpha))`, `rgb(from rgba(51, 102, 153, 0.8) calc(r) calc(g) calc(b) / calc(alpha))`);
// Testing with 'none'.
- fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple none none none)`, `color(srgb none none none)`);
- fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple none none none / none)`, `color(srgb none none none / none)`);
- fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple r g none)`, `color(srgb 0.4 0.2 none)`);
- fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple r g none / alpha)`, `color(srgb 0.4 0.2 none)`);
- fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple r g b / none)`, `color(srgb 0.4 0.2 0.6 / none)`);
- fuzzy_test_valid_color(`${rgbFunction}(from rgb(20% 40% 60% / 80%) r g none / alpha)`, `color(srgb 0.2 0.4 none / 0.8)`);
- fuzzy_test_valid_color(`${rgbFunction}(from rgb(20% 40% 60% / 80%) r g b / none)`, `color(srgb 0.2 0.4 0.6 / none)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple none none none)`, `rgb(from rebeccapurple none none none)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple none none none / none)`, `rgb(from rebeccapurple none none none / none)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple r g none)`, `rgb(from rebeccapurple r g none)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple r g none / alpha)`, `rgb(from rebeccapurple r g none / alpha)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rebeccapurple r g b / none)`, `rgb(from rebeccapurple r g b / none)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rgb(20% 40% 60% / 80%) r g none / alpha)`, `rgb(from rgba(51, 102, 153, 0.8) r g none / alpha)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rgb(20% 40% 60% / 80%) r g b / none)`, `rgb(from rgba(51, 102, 153, 0.8) r g b / none)`);
// FIXME: Clarify with spec editors if 'none' should pass through to the constants.
- fuzzy_test_valid_color(`${rgbFunction}(from rgb(none none none) r g b)`, `color(srgb 0 0 0)`);
- fuzzy_test_valid_color(`${rgbFunction}(from rgb(none none none / none) r g b / alpha)`, `color(srgb 0 0 0 / 0)`);
- fuzzy_test_valid_color(`${rgbFunction}(from rgb(20% none 60%) r g b)`, `color(srgb 0.2 0 0.6)`);
- fuzzy_test_valid_color(`${rgbFunction}(from rgb(20% 40% 60% / none) r g b / alpha)`, `color(srgb 0.2 0.4 0.6 / 0)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rgb(none none none) r g b)`, `rgb(from rgb(0, 0, 0) r g b)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rgb(none none none / none) r g b / alpha)`, `rgb(from rgba(0, 0, 0, 0) r g b / alpha)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rgb(20% none 60%) r g b)`, `rgb(from rgb(51, 0, 153) r g b)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from rgb(20% 40% 60% / none) r g b / alpha)`, `rgb(from rgba(51, 102, 153, 0) r g b / alpha)`);
// Testing with 'currentColor'
fuzzy_test_valid_color(`${rgbFunction}(from currentColor r g b)`, `rgb(from currentcolor r g b)`);
// color-mix
- fuzzy_test_valid_color(`${rgbFunction}(from color-mix(in srgb, red, red) r g b / alpha)`, `color(srgb 1 0 0)`);
+ fuzzy_test_valid_color(`${rgbFunction}(from color-mix(in srgb, red, red) r g b / alpha)`, `rgb(from color-mix(in srgb, red, red) r g b / alpha)`);
}
// hsl(from ...)
for (const hslFunction of ["hsl", "hsla"]) {
// Testing no modifications.
- fuzzy_test_valid_color(`${hslFunction}(from rebeccapurple h s l)`, `color(srgb 0.4 0.2 0.6)`);
- fuzzy_test_valid_color(`${hslFunction}(from rebeccapurple h s l / alpha)`, `color(srgb 0.4 0.2 0.6)`);
- fuzzy_test_valid_color(`${hslFunction}(from rgb(20%, 40%, 60%, 80%) h s l / alpha)`, `color(srgb 0.2 0.4 0.6 / 0.8)`);
- fuzzy_test_valid_color(`${hslFunction}(from hsl(120deg 20% 50% / .5) h s l / alpha)`, `color(srgb 0.4 0.6 0.4 / 0.5)`);
+ fuzzy_test_valid_color(`${hslFunction}(from rebeccapurple h s l)`, `hsl(from rebeccapurple h s l)`);
+ fuzzy_test_valid_color(`${hslFunction}(from rebeccapurple h s l / alpha)`, `hsl(from rebeccapurple h s l / alpha)`);
+ fuzzy_test_valid_color(`${hslFunction}(from rgb(20%, 40%, 60%, 80%) h s l / alpha)`, `hsl(from rgba(51, 102, 153, 0.8) h s l / alpha)`);
+ fuzzy_test_valid_color(`${hslFunction}(from hsl(120deg 20% 50% / .5) h s l / alpha)`, `hsl(from rgba(102, 153, 102, 0.5) h s l / alpha)`);
// Test nesting relative colors.
- fuzzy_test_valid_color(`${hslFunction}(from hsl(from rebeccapurple h s l) h s l)`, `color(srgb 0.4 0.2 0.6)`);
+ fuzzy_test_valid_color(`${hslFunction}(from hsl(from rebeccapurple h s l) h s l)`, `hsl(from hsl(from rebeccapurple h s l) h s l)`);
// Testing replacement with 0.
- fuzzy_test_valid_color(`${hslFunction}(from rebeccapurple 0 0% 0%)`, `color(srgb 0 0 0)`);
- fuzzy_test_valid_color(`${hslFunction}(from rebeccapurple 0deg 0% 0%)`, `color(srgb 0 0 0)`);
- fuzzy_test_valid_color(`${hslFunction}(from rebeccapurple 0 0% 0% / 0)`, `color(srgb 0 0 0 / 0)`);
- fuzzy_test_valid_color(`${hslFunction}(from rebeccapurple 0deg 0% 0% / 0)`, `color(srgb 0 0 0 / 0)`);
- fuzzy_test_valid_color(`${hslFunction}(from rebeccapurple 0 s l / alpha)`, `color(srgb 0.6 0.2 0.2)`);
- fuzzy_test_valid_color(`${hslFunction}(from rebeccapurple 0deg s l / alpha)`, `color(srgb 0.6 0.2 0.2)`);
- fuzzy_test_valid_color(`${hslFunction}(from rebeccapurple h 0% l / alpha)`, `color(srgb 0.4 0.4 0.4)`);
- fuzzy_test_valid_color(`${hslFunction}(from rebeccapurple h s 0% / alpha)`, `color(srgb 0 0 0)`);
- fuzzy_test_valid_color(`${hslFunction}(from rebeccapurple h s l / 0)`, `color(srgb 0.4 0.2 0.6 / 0)`);
- fuzzy_test_valid_color(`${hslFunction}(from rgb(20%, 40%, 60%, 80%) 0 s l / alpha)`, `color(srgb 0.6 0.2 0.2 / 0.8)`);
- fuzzy_test_valid_color(`${hslFunction}(from rgb(20%, 40%, 60%, 80%) 0deg s l / alpha)`, `color(srgb 0.6 0.2 0.2 / 0.8)`);
- fuzzy_test_valid_color(`${hslFunction}(from rgb(20%, 40%, 60%, 80%) h 0% l / alpha)`, `color(srgb 0.4 0.4 0.4 / 0.8)`);
- fuzzy_test_valid_color(`${hslFunction}(from rgb(20%, 40%, 60%, 80%) h s 0% / alpha)`, `color(srgb 0 0 0 / 0.8)`);
- fuzzy_test_valid_color(`${hslFunction}(from rgb(20%, 40%, 60%, 80%) h s l / 0)`, `color(srgb 0.2 0.4 0.6 / 0)`);
-
- fuzzy_test_valid_color(`${hslFunction}(from rebeccapurple 25 s l / alpha)`, `color(srgb 0.6 0.3667 0.2)`);
- fuzzy_test_valid_color(`${hslFunction}(from rebeccapurple 25deg s l / alpha)`, `color(srgb 0.6 0.3667 0.2)`);
- fuzzy_test_valid_color(`${hslFunction}(from rebeccapurple h 20% l / alpha)`, `color(srgb 0.4 0.32 0.48)`);
- // hsl(from rebeccapurple h s 20% / alpha) is equivalent to color(srgb 0.2 0.1 0.3).
- // For the green channel: 0.1 * 255 = 25.5. This should get rounded towards infinity to 26.
- // https://www.w3.org/TR/css-color-4/#rgb-functions
- fuzzy_test_valid_color(`${hslFunction}(from rebeccapurple h s 20% / alpha)`, `color(srgb 0.2 0.1 0.3)`);
- fuzzy_test_valid_color(`${hslFunction}(from rebeccapurple h s l / .25)`, `color(srgb 0.4 0.2 0.6 / 0.25)`);
- fuzzy_test_valid_color(`${hslFunction}(from rgb(20%, 40%, 60%, 80%) 25 s l / alpha)`, `color(srgb 0.6 0.3667 0.2 / 0.8)`);
- fuzzy_test_valid_color(`${hslFunction}(from rgb(20%, 40%, 60%, 80%) 25deg s l / alpha)`, `color(srgb 0.6 0.3667 0.2 / 0.8)`);
- fuzzy_test_valid_color(`${hslFunction}(from rgb(20%, 40%, 60%, 80%) h 20% l / alpha)`, `color(srgb 0.32 0.4 0.48 / 0.8)`);
- // hsl(from rgb(20%, 40%, 60%, 80%) h s 20% / alpha) is equivalent to color(srgb 0.1 0.2 0.3).
- // For the red channel: 0.1 * 255 = 25.5. This should get rounded towards infinity to 26.
- // https://www.w3.org/TR/css-color-4/#rgb-functions
- fuzzy_test_valid_color(`${hslFunction}(from rgb(20%, 40%, 60%, 80%) h s 20% / alpha)`, `color(srgb 0.1 0.2 0.3 / 0.8)`);
- fuzzy_test_valid_color(`${hslFunction}(from rgb(20%, 40%, 60%, 80%) h s l / .2)`, `color(srgb 0.2 0.4 0.6 / 0.2)`);
+ fuzzy_test_valid_color(`${hslFunction}(from rebeccapurple 0 0% 0%)`, `hsl(from rebeccapurple 0 0% 0%)`);
+ fuzzy_test_valid_color(`${hslFunction}(from rebeccapurple 0deg 0% 0%)`, `hsl(from rebeccapurple 0deg 0% 0%)`);
+ fuzzy_test_valid_color(`${hslFunction}(from rebeccapurple 0 0% 0% / 0)`, `hsl(from rebeccapurple 0 0% 0% / 0)`);
+ fuzzy_test_valid_color(`${hslFunction}(from rebeccapurple 0deg 0% 0% / 0)`, `hsl(from rebeccapurple 0deg 0% 0% / 0)`);
+ fuzzy_test_valid_color(`${hslFunction}(from rebeccapurple 0 s l / alpha)`, `hsl(from rebeccapurple 0 s l / alpha)`);
+ fuzzy_test_valid_color(`${hslFunction}(from rebeccapurple 0deg s l / alpha)`, `hsl(from rebeccapurple 0deg s l / alpha)`);
+ fuzzy_test_valid_color(`${hslFunction}(from rebeccapurple h 0% l / alpha)`, `hsl(from rebeccapurple h 0% l / alpha)`);
+ fuzzy_test_valid_color(`${hslFunction}(from rebeccapurple h s 0% / alpha)`, `hsl(from rebeccapurple h s 0% / alpha)`);
+ fuzzy_test_valid_color(`${hslFunction}(from rebeccapurple h s l / 0)`, `hsl(from rebeccapurple h s l / 0)`);
+ fuzzy_test_valid_color(`${hslFunction}(from rgb(20%, 40%, 60%, 80%) 0 s l / alpha)`, `hsl(from rgba(51, 102, 153, 0.8) 0 s l / alpha)`);
+ fuzzy_test_valid_color(`${hslFunction}(from rgb(20%, 40%, 60%, 80%) 0deg s l / alpha)`, `hsl(from rgba(51, 102, 153, 0.8) 0deg s l / alpha)`);
+ fuzzy_test_valid_color(`${hslFunction}(from rgb(20%, 40%, 60%, 80%) h 0% l / alpha)`, `hsl(from rgba(51, 102, 153, 0.8) h 0% l / alpha)`);
+ fuzzy_test_valid_color(`${hslFunction}(from rgb(20%, 40%, 60%, 80%) h s 0% / alpha)`, `hsl(from rgba(51, 102, 153, 0.8) h s 0% / alpha)`);
+ fuzzy_test_valid_color(`${hslFunction}(from rgb(20%, 40%, 60%, 80%) h s l / 0)`, `hsl(from rgba(51, 102, 153, 0.8) h s l / 0)`);
+
+ fuzzy_test_valid_color(`${hslFunction}(from rebeccapurple 25 s l / alpha)`, `hsl(from rebeccapurple 25 s l / alpha)`);
+ fuzzy_test_valid_color(`${hslFunction}(from rebeccapurple 25deg s l / alpha)`, `hsl(from rebeccapurple 25deg s l / alpha)`);
+ fuzzy_test_valid_color(`${hslFunction}(from rebeccapurple h 20% l / alpha)`, `hsl(from rebeccapurple h 20% l / alpha)`);
+ fuzzy_test_valid_color(`${hslFunction}(from rebeccapurple h s 20% / alpha)`, `hsl(from rebeccapurple h s 20% / alpha)`);
+ fuzzy_test_valid_color(`${hslFunction}(from rebeccapurple h s l / .25)`, `hsl(from rebeccapurple h s l / .25)`);
+ fuzzy_test_valid_color(`${hslFunction}(from rgb(20%, 40%, 60%, 80%) 25 s l / alpha)`, `hsl(from rgba(51, 102, 153, 0.8) 25 s l / alpha)`);
+ fuzzy_test_valid_color(`${hslFunction}(from rgb(20%, 40%, 60%, 80%) 25deg s l / alpha)`, `hsl(from rgba(51, 102, 153, 0.8) 25deg s l / alpha)`);
+ fuzzy_test_valid_color(`${hslFunction}(from rgb(20%, 40%, 60%, 80%) h 20% l / alpha)`, `hsl(from rgba(51, 102, 153, 0.8) h 20% l / alpha)`);
+ fuzzy_test_valid_color(`${hslFunction}(from rgb(20%, 40%, 60%, 80%) h s 20% / alpha)`, `hsl(from rgba(51, 102, 153, 0.8) h s 20% / alpha)`);
+ fuzzy_test_valid_color(`${hslFunction}(from rgb(20%, 40%, 60%, 80%) h s l / .2)`, `hsl(from rgba(51, 102, 153, 0.8) h s l / .2)`);
// Testing valid permutation (types match).
- fuzzy_test_valid_color(`${hslFunction}(from rebeccapurple h l s)`, `color(srgb 0.5 0.3 0.7)`);
- fuzzy_test_valid_color(`${hslFunction}(from rebeccapurple h alpha l / s)`, `color(srgb 0.4 0.396 0.404)`);
- fuzzy_test_valid_color(`${hslFunction}(from rebeccapurple h l l / l)`, `color(srgb 0.4 0.24 0.56)`);
- fuzzy_test_valid_color(`${hslFunction}(from rebeccapurple h alpha alpha / alpha)`, `color(srgb 0.01 0.01 0.01)`);
- fuzzy_test_valid_color(`${hslFunction}(from rgb(20%, 40%, 60%, 80%) h l s)`, `color(srgb 0.3 0.5 0.7 / 0.8)`);
- fuzzy_test_valid_color(`${hslFunction}(from rgb(20%, 40%, 60%, 80%) h alpha l / s)`, `color(srgb 0.4 0.4 0.4)`);
- fuzzy_test_valid_color(`${hslFunction}(from rgb(20%, 40%, 60%, 80%) h l l / l)`, `color(srgb 0.24 0.4 0.56)`);
- fuzzy_test_valid_color(`${hslFunction}(from rgb(20%, 40%, 60%, 80%) h alpha alpha / alpha)`, `color(srgb 0.01 0.01 0.01 / 0.8)`);
+ fuzzy_test_valid_color(`${hslFunction}(from rebeccapurple h l s)`, `hsl(from rebeccapurple h l s)`);
+ fuzzy_test_valid_color(`${hslFunction}(from rebeccapurple h alpha l / s)`, `hsl(from rebeccapurple h alpha l / s)`);
+ fuzzy_test_valid_color(`${hslFunction}(from rebeccapurple h l l / l)`, `hsl(from rebeccapurple h l l / l)`);
+ fuzzy_test_valid_color(`${hslFunction}(from rebeccapurple h alpha alpha / alpha)`, `hsl(from rebeccapurple h alpha alpha / alpha)`);
+ fuzzy_test_valid_color(`${hslFunction}(from rgb(20%, 40%, 60%, 80%) h l s)`, `hsl(from rgba(51, 102, 153, 0.8) h l s)`);
+ fuzzy_test_valid_color(`${hslFunction}(from rgb(20%, 40%, 60%, 80%) h alpha l / s)`, `hsl(from rgba(51, 102, 153, 0.8) h alpha l / s)`);
+ fuzzy_test_valid_color(`${hslFunction}(from rgb(20%, 40%, 60%, 80%) h l l / l)`, `hsl(from rgba(51, 102, 153, 0.8) h l l / l)`);
+ fuzzy_test_valid_color(`${hslFunction}(from rgb(20%, 40%, 60%, 80%) h alpha alpha / alpha)`, `hsl(from rgba(51, 102, 153, 0.8) h alpha alpha / alpha)`);
// Testing with calc().
- fuzzy_test_valid_color(`${hslFunction}(from rebeccapurple calc(h) calc(s) calc(l))`, `color(srgb 0.4 0.2 0.6)`);
- fuzzy_test_valid_color(`${hslFunction}(from rgb(20%, 40%, 60%, 80%) calc(h) calc(s) calc(l) / calc(alpha))`, `color(srgb 0.2 0.4 0.6 / 0.8)`);
+ fuzzy_test_valid_color(`${hslFunction}(from rebeccapurple calc(h) calc(s) calc(l))`, `hsl(from rebeccapurple calc(h) calc(s) calc(l))`);
+ fuzzy_test_valid_color(`${hslFunction}(from rgb(20%, 40%, 60%, 80%) calc(h) calc(s) calc(l) / calc(alpha))`, `hsl(from rgba(51, 102, 153, 0.8) calc(h) calc(s) calc(l) / calc(alpha))`);
// Testing with 'none'.
- fuzzy_test_valid_color(`${hslFunction}(from rebeccapurple none none none)`, `color(srgb 0 0 0)`);
- fuzzy_test_valid_color(`${hslFunction}(from rebeccapurple none none none / none)`, `color(srgb 0 0 0 / 0)`);
- fuzzy_test_valid_color(`${hslFunction}(from rebeccapurple h s none)`, `color(srgb 0 0 0)`);
- fuzzy_test_valid_color(`${hslFunction}(from rebeccapurple h s none / alpha)`, `color(srgb 0 0 0)`);
- fuzzy_test_valid_color(`${hslFunction}(from rebeccapurple h s l / none)`, `color(srgb 0.4 0.2 0.6 / none)`);
- fuzzy_test_valid_color(`${hslFunction}(from rebeccapurple none s l / alpha)`, `color(srgb 0.6 0.2 0.2)`);
- fuzzy_test_valid_color(`${hslFunction}(from hsl(120deg 20% 50% / .5) h s none / alpha)`, `color(srgb 0 0 0 / 0.5)`);
- fuzzy_test_valid_color(`${hslFunction}(from hsl(120deg 20% 50% / .5) h s l / none)`, `color(srgb 0.4 0.6 0.4 / none)`);
- fuzzy_test_valid_color(`${hslFunction}(from hsl(120deg 20% 50% / .5) none s l / alpha)`, `color(srgb 0.6 0.4 0.4 / 0.5)`);
+ fuzzy_test_valid_color(`${hslFunction}(from rebeccapurple none none none)`, `hsl(from rebeccapurple none none none)`);
+ fuzzy_test_valid_color(`${hslFunction}(from rebeccapurple none none none / none)`, `hsl(from rebeccapurple none none none / none)`);
+ fuzzy_test_valid_color(`${hslFunction}(from rebeccapurple h s none)`, `hsl(from rebeccapurple h s none)`);
+ fuzzy_test_valid_color(`${hslFunction}(from rebeccapurple h s none / alpha)`, `hsl(from rebeccapurple h s none / alpha)`);
+ fuzzy_test_valid_color(`${hslFunction}(from rebeccapurple h s l / none)`, `hsl(from rebeccapurple h s l / none)`);
+ fuzzy_test_valid_color(`${hslFunction}(from rebeccapurple none s l / alpha)`, `hsl(from rebeccapurple none s l / alpha)`);
+ fuzzy_test_valid_color(`${hslFunction}(from hsl(120deg 20% 50% / .5) h s none / alpha)`, `hsl(from rgba(102, 153, 102, 0.5) h s none / alpha)`);
+ fuzzy_test_valid_color(`${hslFunction}(from hsl(120deg 20% 50% / .5) h s l / none)`, `hsl(from rgba(102, 153, 102, 0.5) h s l / none)`);
+ fuzzy_test_valid_color(`${hslFunction}(from hsl(120deg 20% 50% / .5) none s l / alpha)`, `hsl(from rgba(102, 153, 102, 0.5) none s l / alpha)`);
// FIXME: Clarify with spec editors if 'none' should pass through to the constants.
- fuzzy_test_valid_color(`${hslFunction}(from hsl(none none none) h s l)`, `color(srgb 0 0 0)`);
- fuzzy_test_valid_color(`${hslFunction}(from hsl(none none none / none) h s l / alpha)`, `color(srgb 0 0 0 / 0)`);
- fuzzy_test_valid_color(`${hslFunction}(from hsl(120deg none 50% / .5) h s l)`, `color(srgb 0.5 0.5 0.5 / 0.5)`);
- fuzzy_test_valid_color(`${hslFunction}(from hsl(120deg 20% 50% / none) h s l / alpha)`, `color(srgb 0.4 0.6 0.4 / 0)`);
- fuzzy_test_valid_color(`${hslFunction}(from hsl(none 20% 50% / .5) h s l / alpha)`, `color(srgb 0.6 0.4 0.4 / 0.5)`);
+ fuzzy_test_valid_color(`${hslFunction}(from hsl(none none none) h s l)`, `hsl(from rgb(0, 0, 0) h s l)`);
+ fuzzy_test_valid_color(`${hslFunction}(from hsl(none none none / none) h s l / alpha)`, `hsl(from rgba(0, 0, 0, 0) h s l / alpha)`);
+ fuzzy_test_valid_color(`${hslFunction}(from hsl(120deg none 50% / .5) h s l)`, `hsl(from rgba(128, 128, 128, 0.5) h s l)`);
+ fuzzy_test_valid_color(`${hslFunction}(from hsl(120deg 20% 50% / none) h s l / alpha)`, `hsl(from rgba(102, 153, 102, 0) h s l / alpha)`);
+ fuzzy_test_valid_color(`${hslFunction}(from hsl(none 20% 50% / .5) h s l / alpha)`, `hsl(from rgba(153, 102, 102, 0.5) h s l / alpha)`);
// Testing with 'currentColor'
fuzzy_test_valid_color(`${hslFunction}(from currentColor h s l)`, `hsl(from currentcolor h s l)`);
// color-mix
- fuzzy_test_valid_color(`${hslFunction}(from color-mix(in srgb, red, red) h s l / alpha)`, `color(srgb 1 0 0)`);
+ fuzzy_test_valid_color(`${hslFunction}(from color-mix(in srgb, red, red) h s l / alpha)`, `hsl(from color-mix(in srgb, red, red) h s l / alpha)`);
}
// hwb(from ...)
// Testing no modifications.
- fuzzy_test_valid_color(`hwb(from rebeccapurple h w b)`, `color(srgb 0.4 0.2 0.6)`);
- fuzzy_test_valid_color(`hwb(from rebeccapurple h w b / alpha)`, `color(srgb 0.4 0.2 0.6)`);
- fuzzy_test_valid_color(`hwb(from rgb(20%, 40%, 60%, 80%) h w b / alpha)`, `color(srgb 0.2 0.4 0.6 / 0.8)`);
- fuzzy_test_valid_color(`hwb(from hsl(120deg 20% 50% / .5) h w b / alpha)`, `color(srgb 0.4 0.6 0.4 / 0.5)`);
+ fuzzy_test_valid_color(`hwb(from rebeccapurple h w b)`);
+ fuzzy_test_valid_color(`hwb(from rebeccapurple h w b / alpha)`);
+ fuzzy_test_valid_color(`hwb(from rgb(20%, 40%, 60%, 80%) h w b / alpha)`, `hwb(from rgba(51, 102, 153, 0.8) h w b / alpha)`);
+ fuzzy_test_valid_color(`hwb(from hsl(120deg 20% 50% / .5) h w b / alpha)`, `hwb(from rgba(102, 153, 102, 0.5) h w b / alpha)`);
// Test nesting relative colors.
- fuzzy_test_valid_color(`hwb(from hwb(from rebeccapurple h w b) h w b)`, `color(srgb 0.4 0.2 0.6)`);
+ fuzzy_test_valid_color(`hwb(from hwb(from rebeccapurple h w b) h w b)`);
// Testing replacement with 0.
- fuzzy_test_valid_color(`hwb(from rebeccapurple 0 0% 0%)`, `color(srgb 1 0 0)`);
- fuzzy_test_valid_color(`hwb(from rebeccapurple 0deg 0% 0%)`, `color(srgb 1 0 0)`);
- fuzzy_test_valid_color(`hwb(from rebeccapurple 0 0% 0% / 0)`, `color(srgb 1 0 0 / 0)`);
- fuzzy_test_valid_color(`hwb(from rebeccapurple 0deg 0% 0% / 0)`, `color(srgb 1 0 0 / 0)`);
- fuzzy_test_valid_color(`hwb(from rebeccapurple 0 w b / alpha)`, `color(srgb 0.6 0.2 0.2)`);
- fuzzy_test_valid_color(`hwb(from rebeccapurple 0deg w b / alpha)`, `color(srgb 0.6 0.2 0.2)`);
- fuzzy_test_valid_color(`hwb(from rebeccapurple h 0% b / alpha)`, `color(srgb 0.3 0 0.6)`);
- fuzzy_test_valid_color(`hwb(from rebeccapurple h w 0% / alpha)`, `color(srgb 0.6 0.2 1)`);
- fuzzy_test_valid_color(`hwb(from rebeccapurple h w b / 0)`, `color(srgb 0.4 0.2 0.6 / 0)`);
- fuzzy_test_valid_color(`hwb(from rgb(20%, 40%, 60%, 80%) 0 w b / alpha)`, `color(srgb 0.6 0.2 0.2 / 0.8)`);
- fuzzy_test_valid_color(`hwb(from rgb(20%, 40%, 60%, 80%) 0deg w b / alpha)`, `color(srgb 0.6 0.2 0.2 / 0.8)`);
- fuzzy_test_valid_color(`hwb(from rgb(20%, 40%, 60%, 80%) h 0% b / alpha)`, `color(srgb 0 0.3 0.6 / 0.8)`);
- fuzzy_test_valid_color(`hwb(from rgb(20%, 40%, 60%, 80%) h w 0% / alpha)`, `color(srgb 0.2 0.6 1 / 0.8)`);
- fuzzy_test_valid_color(`hwb(from rgb(20%, 40%, 60%, 80%) h w b / 0)`, `color(srgb 0.2 0.4 0.6 / 0)`);
+ fuzzy_test_valid_color(`hwb(from rebeccapurple 0 0% 0%)`);
+ fuzzy_test_valid_color(`hwb(from rebeccapurple 0deg 0% 0%)`);
+ fuzzy_test_valid_color(`hwb(from rebeccapurple 0 0% 0% / 0)`);
+ fuzzy_test_valid_color(`hwb(from rebeccapurple 0deg 0% 0% / 0)`);
+ fuzzy_test_valid_color(`hwb(from rebeccapurple 0 w b / alpha)`);
+ fuzzy_test_valid_color(`hwb(from rebeccapurple 0deg w b / alpha)`);
+ fuzzy_test_valid_color(`hwb(from rebeccapurple h 0% b / alpha)`);
+ fuzzy_test_valid_color(`hwb(from rebeccapurple h w 0% / alpha)`);
+ fuzzy_test_valid_color(`hwb(from rebeccapurple h w b / 0)`);
+ fuzzy_test_valid_color(`hwb(from rgb(20%, 40%, 60%, 80%) 0 w b / alpha)`, `hwb(from rgba(51, 102, 153, 0.8) 0 w b / alpha)`);
+ fuzzy_test_valid_color(`hwb(from rgb(20%, 40%, 60%, 80%) 0deg w b / alpha)`, `hwb(from rgba(51, 102, 153, 0.8) 0deg w b / alpha)`);
+ fuzzy_test_valid_color(`hwb(from rgb(20%, 40%, 60%, 80%) h 0% b / alpha)`, `hwb(from rgba(51, 102, 153, 0.8) h 0% b / alpha)`);
+ fuzzy_test_valid_color(`hwb(from rgb(20%, 40%, 60%, 80%) h w 0% / alpha)`, `hwb(from rgba(51, 102, 153, 0.8) h w 0% / alpha)`);
+ fuzzy_test_valid_color(`hwb(from rgb(20%, 40%, 60%, 80%) h w b / 0)`, `hwb(from rgba(51, 102, 153, 0.8) h w b / 0)`);
// Testing replacement with a constant.
- fuzzy_test_valid_color(`hwb(from rebeccapurple 25 w b / alpha)`, `color(srgb 0.6 0.3667 0.2)`);
- fuzzy_test_valid_color(`hwb(from rebeccapurple 25deg w b / alpha)`, `color(srgb 0.6 0.3667 0.2)`);
- fuzzy_test_valid_color(`hwb(from rebeccapurple h 20% b / alpha)`, `color(srgb 0.4 0.2 0.6)`);
- fuzzy_test_valid_color(`hwb(from rebeccapurple h w 20% / alpha)`, `color(srgb 0.5 0.2 0.8)`);
- fuzzy_test_valid_color(`hwb(from rebeccapurple h w b / .2)`, `color(srgb 0.4 0.2 0.6 / 0.2)`);
- fuzzy_test_valid_color(`hwb(from rgb(20%, 40%, 60%, 80%) 25 w b / alpha)`, `color(srgb 0.6 0.3667 0.2 / 0.8)`);
- fuzzy_test_valid_color(`hwb(from rgb(20%, 40%, 60%, 80%) 25deg w b / alpha)`, `color(srgb 0.6 0.3667 0.2 / 0.8)`);
- fuzzy_test_valid_color(`hwb(from rgb(20%, 40%, 60%, 80%) h 20% b / alpha)`, `color(srgb 0.2 0.4 0.6 / 0.8)`);
- fuzzy_test_valid_color(`hwb(from rgb(20%, 40%, 60%, 80%) h w 20% / alpha)`, `color(srgb 0.2 0.5 0.8 / 0.8)`);
- fuzzy_test_valid_color(`hwb(from rgb(20%, 40%, 60%, 80%) h w b / .2)`, `color(srgb 0.2 0.4 0.6 / 0.2)`);
+ fuzzy_test_valid_color(`hwb(from rebeccapurple 25 w b / alpha)`);
+ fuzzy_test_valid_color(`hwb(from rebeccapurple 25deg w b / alpha)`);
+ fuzzy_test_valid_color(`hwb(from rebeccapurple h 20% b / alpha)`);
+ fuzzy_test_valid_color(`hwb(from rebeccapurple h w 20% / alpha)`);
+ fuzzy_test_valid_color(`hwb(from rebeccapurple h w b / .2)`, `hwb(from rebeccapurple h w b / 0.2)`);
+ fuzzy_test_valid_color(`hwb(from rgb(20%, 40%, 60%, 80%) 25 w b / alpha)`, `hwb(from rgba(51, 102, 153, 0.8) 25 w b / alpha)`);
+ fuzzy_test_valid_color(`hwb(from rgb(20%, 40%, 60%, 80%) 25deg w b / alpha)`, `hwb(from rgba(51, 102, 153, 0.8) 25deg w b / alpha)`);
+ fuzzy_test_valid_color(`hwb(from rgb(20%, 40%, 60%, 80%) h 20% b / alpha)`, `hwb(from rgba(51, 102, 153, 0.8) h 20% b / alpha)`);
+ fuzzy_test_valid_color(`hwb(from rgb(20%, 40%, 60%, 80%) h w 20% / alpha)`, `hwb(from rgba(51, 102, 153, 0.8) h w 20% / alpha)`);
+ fuzzy_test_valid_color(`hwb(from rgb(20%, 40%, 60%, 80%) h w b / .2)`, `hwb(from rgba(51, 102, 153, 0.8) h w b / .2)`);
// Testing valid permutation (types match).
- fuzzy_test_valid_color(`hwb(from rebeccapurple h b w)`, `color(srgb 0.6 0.4 0.8)`);
- fuzzy_test_valid_color(`hwb(from rebeccapurple h alpha w / b)`, `color(srgb 0.405 0.01 0.8)`);
- fuzzy_test_valid_color(`hwb(from rebeccapurple h w w / w)`, `color(srgb 0.5 0.2 0.8)`);
- fuzzy_test_valid_color(`hwb(from rebeccapurple h alpha alpha / alpha)`, `color(srgb 0.5 0.01 0.99)`);
- fuzzy_test_valid_color(`hwb(from rgb(20%, 40%, 60%, 80%) h b w)`, `color(srgb 0.4 0.6 0.8 / 0.8)`);
- fuzzy_test_valid_color(`hwb(from rgb(20%, 40%, 60%, 80%) h alpha w / b)`, `color(srgb 0.01 0.404 0.8)`);
- fuzzy_test_valid_color(`hwb(from rgb(20%, 40%, 60%, 80%) h w w / w)`, `color(srgb 0.2 0.5 0.8)`);
- fuzzy_test_valid_color(`hwb(from rgb(20%, 40%, 60%, 80%) h alpha alpha / alpha)`, `color(srgb 0.01 0.5 0.99 / 0.8)`);
+ fuzzy_test_valid_color(`hwb(from rebeccapurple h b w)`);
+ fuzzy_test_valid_color(`hwb(from rebeccapurple h alpha w / b)`);
+ fuzzy_test_valid_color(`hwb(from rebeccapurple h w w / w)`);
+ fuzzy_test_valid_color(`hwb(from rebeccapurple h alpha alpha / alpha)`);
+ fuzzy_test_valid_color(`hwb(from rgb(20%, 40%, 60%, 80%) h b w)`, `hwb(from rgba(51, 102, 153, 0.8) h b w)`);
+ fuzzy_test_valid_color(`hwb(from rgb(20%, 40%, 60%, 80%) h alpha w / b)`, `hwb(from rgba(51, 102, 153, 0.8) h alpha w / b)`);
+ fuzzy_test_valid_color(`hwb(from rgb(20%, 40%, 60%, 80%) h w w / w)`, `hwb(from rgba(51, 102, 153, 0.8) h w w / w)`);
+ fuzzy_test_valid_color(`hwb(from rgb(20%, 40%, 60%, 80%) h alpha alpha / alpha)`, `hwb(from rgba(51, 102, 153, 0.8) h alpha alpha / alpha)`);
// Testing with calc().
- fuzzy_test_valid_color(`hwb(from rebeccapurple calc(h) calc(w) calc(b))`, `color(srgb 0.4 0.2 0.6)`);
- fuzzy_test_valid_color(`hwb(from rgb(20%, 40%, 60%, 80%) calc(h) calc(w) calc(b) / calc(alpha))`, `color(srgb 0.2 0.4 0.6 / 0.8)`);
+ fuzzy_test_valid_color(`hwb(from rebeccapurple calc(h) calc(w) calc(b))`);
+ fuzzy_test_valid_color(`hwb(from rgb(20%, 40%, 60%, 80%) calc(h) calc(w) calc(b) / calc(alpha))`, `hwb(from rgba(51, 102, 153, 0.8) calc(h) calc(w) calc(b) / calc(alpha))`);
// Testing with 'none'.
- fuzzy_test_valid_color(`hwb(from rebeccapurple none none none)`, `color(srgb 1 0 0)`);
- fuzzy_test_valid_color(`hwb(from rebeccapurple none none none / none)`, `color(srgb 1 0 0 / none)`);
- fuzzy_test_valid_color(`hwb(from rebeccapurple h w none)`, `color(srgb 0.6 0.2 1)`);
- fuzzy_test_valid_color(`hwb(from rebeccapurple h w none / alpha)`, `color(srgb 0.6 0.2 1)`);
- fuzzy_test_valid_color(`hwb(from rebeccapurple h w b / none)`, `color(srgb 0.4 0.2 0.6 / none)`);
- fuzzy_test_valid_color(`hwb(from rebeccapurple none w b / alpha)`, `color(srgb 0.6 0.2 0.2)`);
- fuzzy_test_valid_color(`hwb(from hwb(120deg 20% 50% / .5) h w none / alpha)`, `color(srgb 0.2 1 0.2 / 0.5)`);
- fuzzy_test_valid_color(`hwb(from hwb(120deg 20% 50% / .5) h w b / none)`, `color(srgb 0.2 0.5 0.2 / none)`);
- fuzzy_test_valid_color(`hwb(from hwb(120deg 20% 50% / .5) none w b / alpha)`, `color(srgb 0.5 0.2 0.2 / 0.5)`);
+ fuzzy_test_valid_color(`hwb(from rebeccapurple none none none)`);
+ fuzzy_test_valid_color(`hwb(from rebeccapurple none none none / none)`);
+ fuzzy_test_valid_color(`hwb(from rebeccapurple h w none)`);
+ fuzzy_test_valid_color(`hwb(from rebeccapurple h w none / alpha)`);
+ fuzzy_test_valid_color(`hwb(from rebeccapurple h w b / none)`);
+ fuzzy_test_valid_color(`hwb(from rebeccapurple none w b / alpha)`);
+ fuzzy_test_valid_color(`hwb(from hwb(120deg 20% 50% / .5) h w none / alpha)`, `hwb(from rgba(51, 128, 51, 0.5) h w none / alpha)`);
+ fuzzy_test_valid_color(`hwb(from hwb(120deg 20% 50% / .5) h w b / none)`, `hwb(from rgba(51, 128, 51, 0.5) h w b / none)`);
+ fuzzy_test_valid_color(`hwb(from hwb(120deg 20% 50% / .5) none w b / alpha)`, `hwb(from rgba(51, 128, 51, 0.5) none w b / alpha)`);
// FIXME: Clarify with spec editors if 'none' should pass through to the constants.
- fuzzy_test_valid_color(`hwb(from hwb(none none none) h w b)`, `color(srgb 1 0 0)`);
- fuzzy_test_valid_color(`hwb(from hwb(none none none / none) h w b / alpha)`, `color(srgb 1 0 0 / 0)`);
- fuzzy_test_valid_color(`hwb(from hwb(120deg none 50% / .5) h w b)`, `color(srgb 0 0.5 0 / 0.5)`);
- fuzzy_test_valid_color(`hwb(from hwb(120deg 20% 50% / none) h w b / alpha)`, `color(srgb 0.2 0.5 0.2 / 0)`);
- fuzzy_test_valid_color(`hwb(from hwb(none 20% 50% / .5) h w b / alpha)`, `color(srgb 0.5 0.2 0.2 / 0.5)`);
+ fuzzy_test_valid_color(`hwb(from hwb(none none none) h w b)`, `hwb(from rgb(255, 0, 0) h w b)`);
+ fuzzy_test_valid_color(`hwb(from hwb(none none none / none) h w b / alpha)`, `hwb(from rgba(255, 0, 0, 0) h w b / alpha)`);
+ fuzzy_test_valid_color(`hwb(from hwb(120deg none 50% / .5) h w b)`, `hwb(from rgba(0, 128, 0, 0.5) h w b)`);
+ fuzzy_test_valid_color(`hwb(from hwb(120deg 20% 50% / none) h w b / alpha)`, `hwb(from rgba(51, 128, 51, 0) h w b / alpha)`);
+ fuzzy_test_valid_color(`hwb(from hwb(none 20% 50% / .5) h w b / alpha)`, `hwb(from rgba(128, 51, 51, 0.5) h w b / alpha)`);
// Testing with 'currentColor'
fuzzy_test_valid_color(`hwb(from currentColor h w b)`, `hwb(from currentcolor h w b)`);
// color-mix
- fuzzy_test_valid_color(`hwb(from color-mix(in srgb, red, red) h w b / alpha)`, `color(srgb 1 0 0)`);
+ fuzzy_test_valid_color(`hwb(from color-mix(in srgb, red, red) h w b / alpha)`);
// lab()
-
// Testing no modifications.
- fuzzy_test_valid_color(`lab(from lab(25 20 50) l a b)`, `lab(25 20 50)`);
- fuzzy_test_valid_color(`lab(from lab(25 20 50) l a b / alpha)`, `lab(25 20 50)`);
- fuzzy_test_valid_color(`lab(from lab(25 20 50 / 40%) l a b / alpha)`, `lab(25 20 50 / 0.4)`);
- fuzzy_test_valid_color(`lab(from lab(200 300 400 / 500%) l a b / alpha)`, `lab(100 300 400)`);
- fuzzy_test_valid_color(`lab(from lab(-200 -300 -400 / -500%) l a b / alpha)`, `lab(0 -300 -400 / 0)`);
+ fuzzy_test_valid_color(`lab(from lab(25 20 50) l a b)`);
+ fuzzy_test_valid_color(`lab(from lab(25 20 50) l a b / alpha)`);
+ fuzzy_test_valid_color(`lab(from lab(25 20 50 / 40%) l a b / alpha)`, `lab(from lab(25 20 50 / 0.4) l a b / alpha)`);
+ fuzzy_test_valid_color(`lab(from lab(200 300 400 / 500%) l a b / alpha)`, `lab(from lab(100 300 400) l a b / alpha)`);
+ fuzzy_test_valid_color(`lab(from lab(-200 -300 -400 / -500%) l a b / alpha)`, `lab(from lab(0 -300 -400 / 0) l a b / alpha)`);
// Test nesting relative colors.
- fuzzy_test_valid_color(`lab(from lab(from lab(25 20 50) l a b) l a b)`, `lab(25 20 50)`);
+ fuzzy_test_valid_color(`lab(from lab(from lab(25 20 50) l a b) l a b)`);
// Testing non-lab origin to see conversion.
- fuzzy_test_valid_color(`lab(from color(display-p3 0 0 0) l a b / alpha)`, `lab(0 0 0)`);
+ fuzzy_test_valid_color(`lab(from color(display-p3 0 0 0) l a b / alpha)`);
// Testing replacement with 0.
- fuzzy_test_valid_color(`lab(from lab(25 20 50) 0 0 0)`, `lab(0 0 0)`);
- fuzzy_test_valid_color(`lab(from lab(25 20 50) 0 0 0 / 0)`, `lab(0 0 0 / 0)`);
- fuzzy_test_valid_color(`lab(from lab(25 20 50) 0 a b / alpha)`, `lab(0 20 50)`);
- fuzzy_test_valid_color(`lab(from lab(25 20 50) l 0 b / alpha)`, `lab(25 0 50)`);
- fuzzy_test_valid_color(`lab(from lab(25 20 50) l a 0 / alpha)`, `lab(25 20 0)`);
- fuzzy_test_valid_color(`lab(from lab(25 20 50) l a b / 0)`, `lab(25 20 50 / 0)`);
- fuzzy_test_valid_color(`lab(from lab(25 20 50 / 40%) 0 a b / alpha)`, `lab(0 20 50 / 0.4)`);
- fuzzy_test_valid_color(`lab(from lab(25 20 50 / 40%) l 0 b / alpha)`, `lab(25 0 50 / 0.4)`);
- fuzzy_test_valid_color(`lab(from lab(25 20 50 / 40%) l a 0 / alpha)`, `lab(25 20 0 / 0.4)`);
- fuzzy_test_valid_color(`lab(from lab(25 20 50 / 40%) l a b / 0)`, `lab(25 20 50 / 0)`);
+ fuzzy_test_valid_color(`lab(from lab(25 20 50) 0 0 0)`);
+ fuzzy_test_valid_color(`lab(from lab(25 20 50) 0 0 0 / 0)`);
+ fuzzy_test_valid_color(`lab(from lab(25 20 50) 0 a b / alpha)`);
+ fuzzy_test_valid_color(`lab(from lab(25 20 50) l 0 b / alpha)`);
+ fuzzy_test_valid_color(`lab(from lab(25 20 50) l a 0 / alpha)`);
+ fuzzy_test_valid_color(`lab(from lab(25 20 50) l a b / 0)`);
+ fuzzy_test_valid_color(`lab(from lab(25 20 50 / 40%) 0 a b / alpha)`, `lab(from lab(25 20 50 / 0.4) 0 a b / alpha)`);
+ fuzzy_test_valid_color(`lab(from lab(25 20 50 / 40%) l 0 b / alpha)`, `lab(from lab(25 20 50 / 0.4) l 0 b / alpha)`);
+ fuzzy_test_valid_color(`lab(from lab(25 20 50 / 40%) l a 0 / alpha)`, `lab(from lab(25 20 50 / 0.4) l a 0 / alpha)`);
+ fuzzy_test_valid_color(`lab(from lab(25 20 50 / 40%) l a b / 0)`, `lab(from lab(25 20 50 / 0.4) l a b / 0)`);
// Testing replacement with a constant.
- fuzzy_test_valid_color(`lab(from lab(25 20 50) 35 a b / alpha)`, `lab(35 20 50)`);
- fuzzy_test_valid_color(`lab(from lab(25 20 50) l 35 b / alpha)`, `lab(25 35 50)`);
- fuzzy_test_valid_color(`lab(from lab(25 20 50) l a 35 / alpha)`, `lab(25 20 35)`);
- fuzzy_test_valid_color(`lab(from lab(25 20 50) l a b / .35)`, `lab(25 20 50 / 0.35)`);
- fuzzy_test_valid_color(`lab(from lab(25 20 50 / 40%) 35 a b / alpha)`, `lab(35 20 50 / 0.4)`);
- fuzzy_test_valid_color(`lab(from lab(25 20 50 / 40%) l 35 b / alpha)`, `lab(25 35 50 / 0.4)`);
- fuzzy_test_valid_color(`lab(from lab(25 20 50 / 40%) l a 35 / alpha)`, `lab(25 20 35 / 0.4)`);
- fuzzy_test_valid_color(`lab(from lab(25 20 50 / 40%) l a b / .35)`, `lab(25 20 50 / 0.35)`);
- fuzzy_test_valid_color(`lab(from lab(0.7 45 30 / 40%) 200 300 400 / 500)`, `lab(100 300 400)`);
- fuzzy_test_valid_color(`lab(from lab(0.7 45 30 / 40%) -200 -300 -400 / -500)`, `lab(0 -300 -400 / 0)`);
+ fuzzy_test_valid_color(`lab(from lab(25 20 50) 35 a b / alpha)`);
+ fuzzy_test_valid_color(`lab(from lab(25 20 50) l 35 b / alpha)`);
+ fuzzy_test_valid_color(`lab(from lab(25 20 50) l a 35 / alpha)`);
+ fuzzy_test_valid_color(`lab(from lab(25 20 50) l a b / .35)`, `lab(from lab(25 20 50) l a b / 0.35)`);
+ fuzzy_test_valid_color(`lab(from lab(25 20 50 / 40%) 35 a b / alpha)`, `lab(from lab(25 20 50 / 0.4) 35 a b / alpha)`);
+ fuzzy_test_valid_color(`lab(from lab(25 20 50 / 40%) l 35 b / alpha)`, `lab(from lab(25 20 50 / 0.4) l 35 b / alpha)`);
+ fuzzy_test_valid_color(`lab(from lab(25 20 50 / 40%) l a 35 / alpha)`, `lab(from lab(25 20 50 / 0.4) l a 35 / alpha)`);
+ fuzzy_test_valid_color(`lab(from lab(25 20 50 / 40%) l a b / .35)`, `lab(from lab(25 20 50 / 0.4) l a b / .35)`);
+ fuzzy_test_valid_color(`lab(from lab(0.7 45 30 / 40%) 200 300 400 / 500)`, `lab(from lab(0.7 45 30 / 0.4) 200 300 400 / 500)`);
+ fuzzy_test_valid_color(`lab(from lab(0.7 45 30 / 40%) -200 -300 -400 / -500)`, `lab(from lab(0.7 45 30 / 0.4) -200 -300 -400 / -500)`);
// Testing valid permutation (types match).
- fuzzy_test_valid_color(`lab(from lab(25 20 50) l b a)`, `lab(25 50 20)`);
- fuzzy_test_valid_color(`lab(from lab(25 20 50) l a a / a)`, `lab(25 20 20)`);
- fuzzy_test_valid_color(`lab(from lab(25 20 50 / 40%) l b a)`, `lab(25 50 20 / 0.4)`);
- fuzzy_test_valid_color(`lab(from lab(25 20 50 / 40%) l a a / a)`, `lab(25 20 20)`);
+ fuzzy_test_valid_color(`lab(from lab(25 20 50) l b a)`);
+ fuzzy_test_valid_color(`lab(from lab(25 20 50) l a a / a)`);
+ fuzzy_test_valid_color(`lab(from lab(25 20 50 / 40%) l b a)`, `lab(from lab(25 20 50 / 0.4) l b a)`);
+ fuzzy_test_valid_color(`lab(from lab(25 20 50 / 40%) l a a / a)`, `lab(from lab(25 20 50 / 0.4) l a a / a)`);
// Testing with calc().
- fuzzy_test_valid_color(`lab(from lab(25 20 50) calc(l) calc(a) calc(b))`, `lab(25 20 50)`);
- fuzzy_test_valid_color(`lab(from lab(25 20 50 / 40%) calc(l) calc(a) calc(b) / calc(alpha))`, `lab(25 20 50 / 0.4)`);
- fuzzy_test_valid_color(`lab(from lab(50 -30 40) calc(l - 20) a b)`, `lab(30 -30 40)`);
- fuzzy_test_valid_color(`lab(from lab(50 -30 40) l calc(a / 3) calc(b / 2))`, `lab(50 -10 20)`);
+ fuzzy_test_valid_color(`lab(from lab(25 20 50) calc(l) calc(a) calc(b))`);
+ fuzzy_test_valid_color(`lab(from lab(25 20 50 / 40%) calc(l) calc(a) calc(b) / calc(alpha))`, `lab(from lab(25 20 50 / 0.4) calc(l) calc(a) calc(b) / calc(alpha))`);
+ fuzzy_test_valid_color(`lab(from lab(50 -30 40) calc(l - 20) a b)`, `lab(from lab(50 -30 40) calc(-20 + l) a b)`);
+ fuzzy_test_valid_color(`lab(from lab(50 -30 40) l calc(a / 3) calc(b / 2))`, `lab(from lab(50 -30 40) l calc(0.333333 * a) calc(0.5 * b))`);
// Testing with 'none'.
- fuzzy_test_valid_color(`lab(from lab(25 20 50) none none none)`, `lab(none none none)`);
- fuzzy_test_valid_color(`lab(from lab(25 20 50) none none none / none)`, `lab(none none none / none)`);
- fuzzy_test_valid_color(`lab(from lab(25 20 50) l a none)`, `lab(25 20 none)`);
- fuzzy_test_valid_color(`lab(from lab(25 20 50) l a none / alpha)`, `lab(25 20 none)`);
- fuzzy_test_valid_color(`lab(from lab(25 20 50) l a b / none)`, `lab(25 20 50 / none)`);
- fuzzy_test_valid_color(`lab(from lab(25 20 50 / 40%) l a none / alpha)`, `lab(25 20 none / 0.4)`);
- fuzzy_test_valid_color(`lab(from lab(25 20 50 / 40%) l a b / none)`, `lab(25 20 50 / none)`);
+ fuzzy_test_valid_color(`lab(from lab(25 20 50) none none none)`);
+ fuzzy_test_valid_color(`lab(from lab(25 20 50) none none none / none)`);
+ fuzzy_test_valid_color(`lab(from lab(25 20 50) l a none)`);
+ fuzzy_test_valid_color(`lab(from lab(25 20 50) l a none / alpha)`);
+ fuzzy_test_valid_color(`lab(from lab(25 20 50) l a b / none)`);
+ fuzzy_test_valid_color(`lab(from lab(25 20 50 / 40%) l a none / alpha)`, `lab(from lab(25 20 50 / 0.4) l a none / alpha)`);
+ fuzzy_test_valid_color(`lab(from lab(25 20 50 / 40%) l a b / none)`, `lab(from lab(25 20 50 / 0.4) l a b / none)`);
// FIXME: Clarify with spec editors if 'none' should pass through to the constants.
- fuzzy_test_valid_color(`lab(from lab(none none none) l a b)`, `lab(0 0 0)`);
- fuzzy_test_valid_color(`lab(from lab(none none none / none) l a b / alpha)`, `lab(0 0 0 / 0)`);
- fuzzy_test_valid_color(`lab(from lab(25 none 50) l a b)`, `lab(25 0 50)`);
- fuzzy_test_valid_color(`lab(from lab(25 20 50 / none) l a b / alpha)`, `lab(25 20 50 / 0)`);
+ fuzzy_test_valid_color(`lab(from lab(none none none) l a b)`);
+ fuzzy_test_valid_color(`lab(from lab(none none none / none) l a b / alpha)`);
+ fuzzy_test_valid_color(`lab(from lab(25 none 50) l a b)`);
+ fuzzy_test_valid_color(`lab(from lab(25 20 50 / none) l a b / alpha)`);
// Testing with 'currentColor'
fuzzy_test_valid_color(`lab(from currentColor l a b)`, `lab(from currentcolor l a b)`);
- // color-mix
- fuzzy_test_valid_color(`lab(from color-mix(in lab, lab(25 20 50), lab(25 20 50)) l a b / alpha)`, `lab(25 20 50)`);
+ // color-mix
+ fuzzy_test_valid_color(`lab(from color-mix(in lab, lab(25 20 50), lab(25 20 50)) l a b / alpha)`);
// oklab()
// Testing no modifications.
- fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5) l a b)`, `oklab(0.25 0.2 0.5)`);
- fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5) l a b / alpha)`, `oklab(0.25 0.2 0.5)`);
- fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5 / 40%) l a b / alpha)`, `oklab(0.25 0.2 0.5 / 0.4)`);
- fuzzy_test_valid_color(`oklab(from oklab(2 3 4 / 500%) l a b / alpha)`, `oklab(1 3 4)`);
- fuzzy_test_valid_color(`oklab(from oklab(-2 -3 -4 / -500%) l a b / alpha)`, `oklab(0 -3 -4 / 0)`);
+ fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5) l a b)`);
+ fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5) l a b / alpha)`);
+ fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5 / 40%) l a b / alpha)`, `oklab(from oklab(0.25 0.2 0.5 / 0.4) l a b / alpha)`);
+ fuzzy_test_valid_color(`oklab(from oklab(2 3 4 / 500%) l a b / alpha)`, `oklab(from oklab(1 3 4) l a b / alpha)`); // clamps lightness of inner oklab to 1.0
+ fuzzy_test_valid_color(`oklab(from oklab(-2 -3 -4 / -500%) l a b / alpha)`, `oklab(from oklab(0 -3 -4 / 0) l a b / alpha)`); // clamps lightness of inner oklab to 0.0
// Test nesting relative colors.
- fuzzy_test_valid_color(`oklab(from oklab(from oklab(0.25 0.2 0.5) l a b) l a b)`, `oklab(0.25 0.2 0.5)`);
+ fuzzy_test_valid_color(`oklab(from oklab(from oklab(0.25 0.2 0.5) l a b) l a b)`);
// Testing non-oklab origin to see conversion.
- fuzzy_test_valid_color(`oklab(from color(display-p3 0 0 0) l a b / alpha)`, `oklab(0 0 0)`);
+ fuzzy_test_valid_color(`oklab(from color(display-p3 0 0 0) l a b / alpha)`);
// Testing replacement with 0.
- fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5) 0 0 0)`, `oklab(0 0 0)`);
- fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5) 0 0 0 / 0)`, `oklab(0 0 0 / 0)`);
- fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5) 0 a b / alpha)`, `oklab(0 0.2 0.5)`);
- fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5) l 0 b / alpha)`, `oklab(0.25 0 0.5)`);
- fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5) l a 0 / alpha)`, `oklab(0.25 0.2 0)`);
- fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5) l a b / 0)`, `oklab(0.25 0.2 0.5 / 0)`);
- fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5 / 40%) 0 a b / alpha)`, `oklab(0 0.2 0.5 / 0.4)`);
- fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5 / 40%) l 0 b / alpha)`, `oklab(0.25 0 0.5 / 0.4)`);
- fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5 / 40%) l a 0 / alpha)`, `oklab(0.25 0.2 0 / 0.4)`);
- fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5 / 40%) l a b / 0)`, `oklab(0.25 0.2 0.5 / 0)`);
+ fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5) 0 0 0)`);
+ fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5) 0 0 0 / 0)`);
+ fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5) 0 a b / alpha)`);
+ fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5) l 0 b / alpha)`);
+ fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5) l a 0 / alpha)`);
+ fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5) l a b / 0)`);
+ fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5 / 40%) 0 a b / alpha)`, `oklab(from oklab(0.25 0.2 0.5 / 0.4) 0 a b / alpha)`);
+ fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5 / 40%) l 0 b / alpha)`, `oklab(from oklab(0.25 0.2 0.5 / 0.4) l 0 b / alpha)`);
+ fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5 / 40%) l a 0 / alpha)`, `oklab(from oklab(0.25 0.2 0.5 / 0.4) l a 0 / alpha)`);
+ fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5 / 40%) l a b / 0)`, `oklab(from oklab(0.25 0.2 0.5 / 0.4) l a b / 0)`);
// Testing replacement with a constant.
- fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5) 0.35 a b / alpha)`, `oklab(0.35 0.2 0.5)`);
- fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5) l 0.35 b / alpha)`, `oklab(0.25 0.35 0.5)`);
- fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5) l a 0.35 / alpha)`, `oklab(0.25 0.2 0.35)`);
- fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5) l a b / .35)`, `oklab(0.25 0.2 0.5 / 0.35)`);
- fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5 / 40%) 0.35 a b / alpha)`, `oklab(0.35 0.2 0.5 / 0.4)`);
- fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5 / 40%) l 0.35 b / alpha)`, `oklab(0.25 0.35 0.5 / 0.4)`);
- fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5 / 40%) l a 0.35 / alpha)`, `oklab(0.25 0.2 0.35 / 0.4)`);
- fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5 / 40%) l a b / .35)`, `oklab(0.25 0.2 0.5 / 0.35)`);
- fuzzy_test_valid_color(`oklab(from oklab(0.7 0.45 0.3 / 40%) 2 3 4 / 500)`, `oklab(1 3 4)`);
- fuzzy_test_valid_color(`oklab(from oklab(0.7 0.45 0.3 / 40%) -2 -3 -4 / -500)`, `oklab(0 -3 -4 / 0)`);
+ fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5) 0.35 a b / alpha)`);
+ fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5) l 0.35 b / alpha)`);
+ fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5) l a 0.35 / alpha)`);
+ fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5) l a b / 0.35)`);
+ fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5 / 40%) 0.35 a b / alpha)`, `oklab(from oklab(0.25 0.2 0.5 / 0.4) 0.35 a b / alpha)`);
+ fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5 / 40%) l 0.35 b / alpha)`, `oklab(from oklab(0.25 0.2 0.5 / 0.4) l 0.35 b / alpha)`);
+ fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5 / 40%) l a 0.35 / alpha)`, `oklab(from oklab(0.25 0.2 0.5 / 0.4) l a 0.35 / alpha)`);
+ fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5 / 40%) l a b / .35)`, `oklab(from oklab(0.25 0.2 0.5 / 0.4) l a b / .35)`);
+ fuzzy_test_valid_color(`oklab(from oklab(0.7 0.45 0.3 / 40%) 2 3 4 / 500)`, `oklab(from oklab(0.7 0.45 0.3 / 0.4) 2 3 4 / 500)`);
+ fuzzy_test_valid_color(`oklab(from oklab(0.7 0.45 0.3 / 40%) -2 -3 -4 / -500)`, `oklab(from oklab(0.7 0.45 0.3 / 0.4) -2 -3 -4 / -500)`);
// Testing valid permutation (types match).
- fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5) l b a)`, `oklab(0.25 0.5 0.2)`);
- fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5) l a a / a)`, `oklab(0.25 0.2 0.2 / 0.2)`);
- fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5 / 40%) l b a)`, `oklab(0.25 0.5 0.2 / 0.4)`);
- fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5 / 40%) l a a / a)`, `oklab(0.25 0.2 0.2 / 0.2)`);
+ fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5) l b a)`);
+ fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5) l a a / a)`);
+ fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5 / 40%) l b a)`, `oklab(from oklab(0.25 0.2 0.5 / 0.4) l b a)`);
+ fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5 / 40%) l a a / a)`, `oklab(from oklab(0.25 0.2 0.5 / 0.4) l a a / a)`);
// Testing with calc().
- fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5) calc(l) calc(a) calc(b))`, `oklab(0.25 0.2 0.5)`);
- fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5 / 40%) calc(l) calc(a) calc(b) / calc(alpha))`, `oklab(0.25 0.2 0.5 / 0.4)`);
- fuzzy_test_valid_color(`oklab(from oklab(0.7 0.25 -0.15) calc(l - 0.2) a b)`, `oklab(0.5 0.25 -0.15)`);
- fuzzy_test_valid_color(`oklab(from oklab(0.7 0.25 -0.15) l calc(a / 2) calc(b / 3))`, `oklab(0.7 0.125 -0.05)`);
+ fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5) calc(l) calc(a) calc(b))`);
+ fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5 / 40%) calc(l) calc(a) calc(b) / calc(alpha))`, `oklab(from oklab(0.25 0.2 0.5 / 0.4) calc(l) calc(a) calc(b) / calc(alpha))`);
+ fuzzy_test_valid_color(`oklab(from oklab(0.7 0.25 -0.15) calc(l - 0.2) a b)`, `oklab(from oklab(0.7 0.25 -0.15) calc(-0.2 + l) a b)`);
+ fuzzy_test_valid_color(`oklab(from oklab(0.7 0.25 -0.15) l calc(a / 2) calc(b / 3))`, `oklab(from oklab(0.7 0.25 -0.15) l calc(0.5 * a) calc(0.333333 * b))`);
// Testing with 'none'.
- fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5) none none none)`, `oklab(none none none)`);
- fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5) none none none / none)`, `oklab(none none none / none)`);
- fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5) l a none)`, `oklab(0.25 0.2 none)`);
- fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5) l a none / alpha)`, `oklab(0.25 0.2 none)`);
- fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5) l a b / none)`, `oklab(0.25 0.2 0.5 / none)`);
- fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5 / 40%) l a none / alpha)`, `oklab(0.25 0.2 none / 0.4)`);
- fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5 / 40%) l a b / none)`, `oklab(0.25 0.2 0.5 / none)`);
+ fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5) none none none)`);
+ fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5) none none none / none)`);
+ fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5) l a none)`);
+ fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5) l a none / alpha)`);
+ fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5) l a b / none)`);
+ fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5 / 40%) l a none / alpha)`, `oklab(from oklab(0.25 0.2 0.5 / 0.4) l a none / alpha)`);
+ fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5 / 40%) l a b / none)`, `oklab(from oklab(0.25 0.2 0.5 / 0.4) l a b / none)`);
// FIXME: Clarify with spec editors if 'none' should pass through to the constants.
- fuzzy_test_valid_color(`oklab(from oklab(none none none) l a b)`, `oklab(0 0 0)`);
- fuzzy_test_valid_color(`oklab(from oklab(none none none / none) l a b / alpha)`, `oklab(0 0 0 / 0)`);
- fuzzy_test_valid_color(`oklab(from oklab(0.25 none 0.5) l a b)`, `oklab(0.25 0 0.5)`);
- fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5 / none) l a b / alpha)`, `oklab(0.25 0.2 0.5 / 0)`);
+ fuzzy_test_valid_color(`oklab(from oklab(none none none) l a b)`);
+ fuzzy_test_valid_color(`oklab(from oklab(none none none / none) l a b / alpha)`);
+ fuzzy_test_valid_color(`oklab(from oklab(0.25 none 0.5) l a b)`);
+ fuzzy_test_valid_color(`oklab(from oklab(0.25 0.2 0.5 / none) l a b / alpha)`);
// Testing with 'currentColor'
fuzzy_test_valid_color(`oklab(from currentColor l a b)`, `oklab(from currentcolor l a b)`);
// color-mix
- fuzzy_test_valid_color(`oklab(from color-mix(in oklab, oklab(0.25 0.2 0.5), oklab(0.25 0.2 0.5)) l a b / alpha)`, `oklab(0.25 0.2 0.5)`);
+ fuzzy_test_valid_color(`oklab(from color-mix(in oklab, oklab(0.25 0.2 0.5), oklab(0.25 0.2 0.5)) l a b / alpha)`);
// lch()
// Testing no modifications.
- fuzzy_test_valid_color(`lch(from lch(0.7 45 30) l c h)`, `lch(0.7 45 30)`);
- fuzzy_test_valid_color(`lch(from lch(0.7 45 30) l c h / alpha)`, `lch(0.7 45 30)`);
- fuzzy_test_valid_color(`lch(from lch(0.7 45 30 / 40%) l c h / alpha)`, `lch(0.7 45 30 / 0.4)`);
- fuzzy_test_valid_color(`lch(from lch(200 300 400 / 500%) l c h / alpha)`, `lch(100 300 40)`);
- fuzzy_test_valid_color(`lch(from lch(-200 -300 -400 / -500%) l c h / alpha)`, `lch(0 0 320 / 0)`);
+ fuzzy_test_valid_color(`lch(from lch(0.7 45 30) l c h)`);
+ fuzzy_test_valid_color(`lch(from lch(0.7 45 30) l c h / alpha)`);
+ fuzzy_test_valid_color(`lch(from lch(0.7 45 30 / 40%) l c h / alpha)`, `lch(from lch(0.7 45 30 / 0.4) l c h / alpha)`);
+ fuzzy_test_valid_color(`lch(from lch(200 300 400 / 500%) l c h / alpha)`, `lch(from lch(100 300 40) l c h / alpha)`); // clamps lightness of inner lch to 100.0, normalizes hue of inner lch to 40degs (400 % 360)
+ fuzzy_test_valid_color(`lch(from lch(-200 -300 -400 / -500%) l c h / alpha)`, `lch(from lch(0 0 320 / 0) l c h / alpha)`); // clamps lightness and chroma of inner lch to 0.0, normalizes hue of inner lch to 320degs (-400 % 360)
// Test nesting relative colors.
- fuzzy_test_valid_color(`lch(from lch(from lch(0.7 45 30) l c h) l c h)`, `lch(0.7 45 30)`);
+ fuzzy_test_valid_color(`lch(from lch(from lch(0.7 45 30) l c h) l c h)`);
// Testing non-sRGB origin colors (no gamut mapping will happen since the destination is not a bounded RGB color space).
- fuzzy_test_valid_color(`lch(from color(display-p3 0 0 0) l c h / alpha)`, `lch(0 0 0)`);
- fuzzy_test_valid_color(`lch(from lab(0.7 45 30) l c h / alpha)`, `lch(0.7 54.08327 33.690067)`);
+ fuzzy_test_valid_color(`lch(from color(display-p3 0 0 0) l c h / alpha)`);
+ fuzzy_test_valid_color(`lch(from lab(0.7 45 30) l c h / alpha)`);
// Testing replacement with 0.
- fuzzy_test_valid_color(`lch(from lch(0.7 45 30) 0 0 0)`, `lch(0 0 0)`);
- fuzzy_test_valid_color(`lch(from lch(0.7 45 30) 0 0 0deg)`, `lch(0 0 0)`);
- fuzzy_test_valid_color(`lch(from lch(0.7 45 30) 0 0 0 / 0)`, `lch(0 0 0 / 0)`);
- fuzzy_test_valid_color(`lch(from lch(0.7 45 30) 0 0 0deg / 0)`, `lch(0 0 0 / 0)`);
- fuzzy_test_valid_color(`lch(from lch(0.7 45 30) 0 c h / alpha)`, `lch(0 45 30)`);
- fuzzy_test_valid_color(`lch(from lch(0.7 45 30) l 0 h / alpha)`, `lch(0.7 0 30)`);
- fuzzy_test_valid_color(`lch(from lch(0.7 45 30) l c 0 / alpha)`, `lch(0.7 45 0)`);
- fuzzy_test_valid_color(`lch(from lch(0.7 45 30) l c 0deg / alpha)`, `lch(0.7 45 0)`);
- fuzzy_test_valid_color(`lch(from lch(0.7 45 30) l c h / 0)`, `lch(0.7 45 30 / 0)`);
- fuzzy_test_valid_color(`lch(from lch(0.7 45 30 / 40%) 0 c h / alpha)`, `lch(0 45 30 / 0.4)`);
- fuzzy_test_valid_color(`lch(from lch(0.7 45 30 / 40%) l 0 h / alpha)`, `lch(0.7 0 30 / 0.4)`);
- fuzzy_test_valid_color(`lch(from lch(0.7 45 30 / 40%) l c 0 / alpha)`, `lch(0.7 45 0 / 0.4)`);
- fuzzy_test_valid_color(`lch(from lch(0.7 45 30 / 40%) l c 0deg / alpha)`, `lch(0.7 45 0 / 0.4)`);
- fuzzy_test_valid_color(`lch(from lch(0.7 45 30 / 40%) l c h / 0)`, `lch(0.7 45 30 / 0)`);
+ fuzzy_test_valid_color(`lch(from lch(0.7 45 30) 0 0 0)`);
+ fuzzy_test_valid_color(`lch(from lch(0.7 45 30) 0 0 0deg)`);
+ fuzzy_test_valid_color(`lch(from lch(0.7 45 30) 0 0 0 / 0)`);
+ fuzzy_test_valid_color(`lch(from lch(0.7 45 30) 0 0 0deg / 0)`);
+ fuzzy_test_valid_color(`lch(from lch(0.7 45 30) 0 c h / alpha)`);
+ fuzzy_test_valid_color(`lch(from lch(0.7 45 30) l 0 h / alpha)`);
+ fuzzy_test_valid_color(`lch(from lch(0.7 45 30) l c 0 / alpha)`);
+ fuzzy_test_valid_color(`lch(from lch(0.7 45 30) l c 0deg / alpha)`);
+ fuzzy_test_valid_color(`lch(from lch(0.7 45 30) l c h / 0)`);
+ fuzzy_test_valid_color(`lch(from lch(0.7 45 30 / 40%) 0 c h / alpha)`, `lch(from lch(0.7 45 30 / 0.4) 0 c h / alpha)`);
+ fuzzy_test_valid_color(`lch(from lch(0.7 45 30 / 40%) l 0 h / alpha)`, `lch(from lch(0.7 45 30 / 0.4) l 0 h / alpha)`);
+ fuzzy_test_valid_color(`lch(from lch(0.7 45 30 / 40%) l c 0 / alpha)`, `lch(from lch(0.7 45 30 / 0.4) l c 0 / alpha)`);
+ fuzzy_test_valid_color(`lch(from lch(0.7 45 30 / 40%) l c 0deg / alpha)`, `lch(from lch(0.7 45 30 / 0.4) l c 0deg / alpha)`);
+ fuzzy_test_valid_color(`lch(from lch(0.7 45 30 / 40%) l c h / 0)`, `lch(from lch(0.7 45 30 / 0.4) l c h / 0)`);
// Testing replacement with a constant.
- fuzzy_test_valid_color(`lch(from lch(0.7 45 30) 25 c h / alpha)`, `lch(25 45 30)`);
- fuzzy_test_valid_color(`lch(from lch(0.7 45 30) l 25 h / alpha)`, `lch(0.7 25 30)`);
- fuzzy_test_valid_color(`lch(from lch(0.7 45 30) l c 25 / alpha)`, `lch(0.7 45 25)`);
- fuzzy_test_valid_color(`lch(from lch(0.7 45 30) l c 25deg / alpha)`, `lch(0.7 45 25)`);
- fuzzy_test_valid_color(`lch(from lch(0.7 45 30) l c h / .25)`, `lch(0.7 45 30 / 0.25)`);
- fuzzy_test_valid_color(`lch(from lch(0.7 45 30 / 40%) 25 c h / alpha)`, `lch(25 45 30 / 0.4)`);
- fuzzy_test_valid_color(`lch(from lch(0.7 45 30 / 40%) l 25 h / alpha)`, `lch(0.7 25 30 / 0.4)`);
- fuzzy_test_valid_color(`lch(from lch(0.7 45 30 / 40%) l c 25 / alpha)`, `lch(0.7 45 25 / 0.4)`);
- fuzzy_test_valid_color(`lch(from lch(0.7 45 30 / 40%) l c 25deg / alpha)`, `lch(0.7 45 25 / 0.4)`);
- fuzzy_test_valid_color(`lch(from lch(0.7 45 30 / 40%) l c h / .25)`, `lch(0.7 45 30 / 0.25)`);
- fuzzy_test_valid_color(`lch(from lch(0.7 45 30 / 40%) 200 300 400 / 500)`, `lch(100 300 40)`);
- fuzzy_test_valid_color(`lch(from lch(0.7 45 30 / 40%) -200 -300 -400 / -500)`, `lch(0 0 320 / 0)`);
- fuzzy_test_valid_color(`lch(from lch(0.7 45 30 / 40%) 50 120 400deg / 500)`, `lch(50 120 40)`);
- fuzzy_test_valid_color(`lch(from lch(0.7 45 30 / 40%) 50 120 -400deg / -500)`, `lch(50 120 320 / 0)`);
+ fuzzy_test_valid_color(`lch(from lch(0.7 45 30) 25 c h / alpha)`);
+ fuzzy_test_valid_color(`lch(from lch(0.7 45 30) l 25 h / alpha)`);
+ fuzzy_test_valid_color(`lch(from lch(0.7 45 30) l c 25 / alpha)`);
+ fuzzy_test_valid_color(`lch(from lch(0.7 45 30) l c 25deg / alpha)`);
+ fuzzy_test_valid_color(`lch(from lch(0.7 45 30) l c h / 0.25)`);
+ fuzzy_test_valid_color(`lch(from lch(0.7 45 30 / 40%) 25 c h / alpha)`, `lch(from lch(0.7 45 30 / 0.4) 25 c h / alpha)`);
+ fuzzy_test_valid_color(`lch(from lch(0.7 45 30 / 40%) l 25 h / alpha)`, `lch(from lch(0.7 45 30 / 0.4) l 25 h / alpha)`);
+ fuzzy_test_valid_color(`lch(from lch(0.7 45 30 / 40%) l c 25 / alpha)`, `lch(from lch(0.7 45 30 / 0.4) l c 25 / alpha)`);
+ fuzzy_test_valid_color(`lch(from lch(0.7 45 30 / 40%) l c 25deg / alpha)`, `lch(from lch(0.7 45 30 / 0.4) l c 25deg / alpha)`);
+ fuzzy_test_valid_color(`lch(from lch(0.7 45 30 / 40%) l c h / .25)`, `lch(from lch(0.7 45 30 / 0.4) l c h / .25)`);
+ fuzzy_test_valid_color(`lch(from lch(0.7 45 30 / 40%) 200 300 400 / 500)`, `lch(from lch(0.7 45 30 / 0.4) 200 300 400 / 500)`);
+ fuzzy_test_valid_color(`lch(from lch(0.7 45 30 / 40%) -200 -300 -400 / -500)`, `lch(from lch(0.7 45 30 / 0.4) -200 -300 -400 / -500)`);
+ fuzzy_test_valid_color(`lch(from lch(0.7 45 30 / 40%) 50 120 400deg / 500)`, `lch(from lch(0.7 45 30 / 0.4) 50 120 400deg / 500)`);
+ fuzzy_test_valid_color(`lch(from lch(0.7 45 30 / 40%) 50 120 -400deg / -500)`, `lch(from lch(0.7 45 30 / 0.4) 50 120 -400deg / -500)`);
// Testing valid permutation (types match).
// NOTE: 'c' is a vaild hue, as hue is <angle>|<number>.
- fuzzy_test_valid_color(`lch(from lch(.7 45 30) l c c / alpha)`, `lch(0.7 45 45)`);
- fuzzy_test_valid_color(`lch(from lch(.7 45 30 / 40%) l c c / alpha)`, `lch(0.7 45 45 / 0.4)`);
+ fuzzy_test_valid_color(`lch(from lch(0.7 45 30) l c c / alpha)`);
+ fuzzy_test_valid_color(`lch(from lch(0.7 45 30 / 40%) l c c / alpha)`, `lch(from lch(0.7 45 30 / 0.4) l c c / alpha)`);
// Testing with calc().
- fuzzy_test_valid_color(`lch(from lch(0.7 45 30) calc(l) calc(c) calc(h))`, `lch(0.7 45 30)`);
- fuzzy_test_valid_color(`lch(from lch(0.7 45 30 / 40%) calc(l) calc(c) calc(h) / calc(alpha))`, `lch(0.7 45 30 / 0.4)`);
- fuzzy_test_valid_color(`lch(from lch(50 100 300) calc(l - 20) c h)`, `lch(30 100 300)`);
- fuzzy_test_valid_color(`lch(from lch(50 100 300) l calc(c / 2) h)`, `lch(50 50 300)`);
- fuzzy_test_valid_color(`lch(from lch(50 100 300) l c calc(h * 2.5))`, `lch(50 100 30)`);
+ fuzzy_test_valid_color(`lch(from lch(0.7 45 30) calc(l) calc(c) calc(h))`);
+ fuzzy_test_valid_color(`lch(from lch(0.7 45 30 / 40%) calc(l) calc(c) calc(h) / calc(alpha))`, `lch(from lch(0.7 45 30 / 0.4) calc(l) calc(c) calc(h) / calc(alpha))`);
+ fuzzy_test_valid_color(`lch(from lch(50 100 300) calc(l - 20) c h)`, `lch(from lch(50 100 300) calc(-20 + l) c h)`);
+ fuzzy_test_valid_color(`lch(from lch(50 100 300) l calc(c / 2) h)`, `lch(from lch(50 100 300) l calc(0.5 * c) h)`);
+ fuzzy_test_valid_color(`lch(from lch(50 100 300) l c calc(h * 2.5))`, `lch(from lch(50 100 300) l c calc(2.5 * h))`);
// Testing with 'none'.
- fuzzy_test_valid_color(`lch(from lch(0.7 45 30) none none none)`, `lch(none none none)`);
- fuzzy_test_valid_color(`lch(from lch(0.7 45 30) none none none / none)`, `lch(none none none / none)`);
- fuzzy_test_valid_color(`lch(from lch(0.7 45 30) l c none)`, `lch(0.7 45 none)`);
- fuzzy_test_valid_color(`lch(from lch(0.7 45 30) l c none / alpha)`, `lch(0.7 45 none)`);
- fuzzy_test_valid_color(`lch(from lch(0.7 45 30) l c h / none)`, `lch(0.7 45 30 / none)`);
- fuzzy_test_valid_color(`lch(from lch(0.7 45 30 / 40%) l c none / alpha)`, `lch(0.7 45 none / 0.4)`);
- fuzzy_test_valid_color(`lch(from lch(0.7 45 30 / 40%) l c h / none)`, `lch(0.7 45 30 / none)`);
+ fuzzy_test_valid_color(`lch(from lch(0.7 45 30) none none none)`);
+ fuzzy_test_valid_color(`lch(from lch(0.7 45 30) none none none / none)`);
+ fuzzy_test_valid_color(`lch(from lch(0.7 45 30) l c none)`);
+ fuzzy_test_valid_color(`lch(from lch(0.7 45 30) l c none / alpha)`);
+ fuzzy_test_valid_color(`lch(from lch(0.7 45 30) l c h / none)`);
+ fuzzy_test_valid_color(`lch(from lch(0.7 45 30 / 40%) l c none / alpha)`, `lch(from lch(0.7 45 30 / 0.4) l c none / alpha)`);
+ fuzzy_test_valid_color(`lch(from lch(0.7 45 30 / 40%) l c h / none)`, `lch(from lch(0.7 45 30 / 0.4) l c h / none)`);
// FIXME: Clarify with spec editors if 'none' should pass through to the constants.
- fuzzy_test_valid_color(`lch(from lch(none none none) l c h)`, `lch(0 0 0)`);
- fuzzy_test_valid_color(`lch(from lch(none none none / none) l c h / alpha)`, `lch(0 0 0 / 0)`);
- fuzzy_test_valid_color(`lch(from lch(0.7 none 30) l c h)`, `lch(0.7 0 30)`);
- fuzzy_test_valid_color(`lch(from lch(0.7 45 30 / none) l c h / alpha)`, `lch(0.7 45 30 / 0)`);
+ fuzzy_test_valid_color(`lch(from lch(none none none) l c h)`);
+ fuzzy_test_valid_color(`lch(from lch(none none none / none) l c h / alpha)`);
+ fuzzy_test_valid_color(`lch(from lch(0.7 none 30) l c h)`);
+ fuzzy_test_valid_color(`lch(from lch(0.7 45 30 / none) l c h / alpha)`);
// Testing with 'currentColor'
fuzzy_test_valid_color(`lch(from currentColor l c h)`, `lch(from currentcolor l c h)`);
// color-mix
- fuzzy_test_valid_color(`lch(from color-mix(in lch, lch(70 45 30), lch(70 45 30)) l c h / alpha)`, `lch(70 45 30)`);
+ fuzzy_test_valid_color(`lch(from color-mix(in lch, lch(70 45 30), lch(70 45 30)) l c h / alpha)`);
// oklch()
// Testing no modifications.
- fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30) l c h)`, `oklch(0.7 0.45 30)`);
- fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30) l c h / alpha)`, `oklch(0.7 0.45 30)`);
- fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30 / 40%) l c h / alpha)`, `oklch(0.7 0.45 30 / 0.4)`);
- fuzzy_test_valid_color(`oklch(from oklch(2 3 400 / 500%) l c h / alpha)`, `oklch(1 3 40)`);
- fuzzy_test_valid_color(`oklch(from oklch(-2 -3 -400 / -500%) l c h / alpha)`, `oklch(0 0 320 / 0)`);
+ fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30) l c h)`);
+ fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30) l c h / alpha)`);
+ fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30 / 40%) l c h / alpha)`, `oklch(from oklch(0.7 0.45 30 / 0.4) l c h / alpha)`);
+ fuzzy_test_valid_color(`oklch(from oklch(2 3 400 / 500%) l c h / alpha)`, `oklch(from oklch(1 3 40) l c h / alpha)`);// clamps lightness of inner oklch to 1.0, normalizes hue of inner oklch to 40degs (400 % 360)
+ fuzzy_test_valid_color(`oklch(from oklch(-2 -3 -400 / -500%) l c h / alpha)`, `oklch(from oklch(0 0 320 / 0) l c h / alpha)`); // clamps lightness and chroma of inner oklch to 0.0, normalizes hue of inner oklch to 320degs (-400 % 360)
+
// Test nesting relative colors.
- fuzzy_test_valid_color(`oklch(from oklch(from oklch(0.7 0.45 30) l c h) l c h)`, `oklch(0.7 0.45 30)`);
+ fuzzy_test_valid_color(`oklch(from oklch(from oklch(0.7 0.45 30) l c h) l c h)`);
// Testing non-sRGB origin colors (no gamut mapping will happen since the destination is not a bounded RGB color space).
- fuzzy_test_valid_color(`oklch(from color(display-p3 0 0 0) l c h / alpha)`, `oklch(0 0 0)`);
+ fuzzy_test_valid_color(`oklch(from color(display-p3 0 0 0) l c h / alpha)`);
// TODO: redo conversion with oklab(0.7 0.45 0.3)
- fuzzy_test_valid_color(`oklch(from oklab(0.7 45 30) l c h / alpha)`, `oklch(0.7 54.08327 33.690067)`);
+ fuzzy_test_valid_color(`oklch(from oklab(0.7 45 30) l c h / alpha)`);
// Testing replacement with 0.
- fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30) 0 0 0)`, `oklch(0 0 0)`);
- fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30) 0 0 0deg)`, `oklch(0 0 0)`);
- fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30) 0 0 0 / 0)`, `oklch(0 0 0 / 0)`);
- fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30) 0 0 0deg / 0)`, `oklch(0 0 0 / 0)`);
- fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30) 0 c h / alpha)`, `oklch(0 0.45 30)`);
- fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30) l 0 h / alpha)`, `oklch(0.7 0 30)`);
- fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30) l c 0 / alpha)`, `oklch(0.7 0.45 0)`);
- fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30) l c 0deg / alpha)`, `oklch(0.7 0.45 0)`);
- fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30) l c h / 0)`, `oklch(0.7 0.45 30 / 0)`);
- fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30 / 40%) 0 c h / alpha)`, `oklch(0 0.45 30 / 0.4)`);
- fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30 / 40%) l 0 h / alpha)`, `oklch(0.7 0 30 / 0.4)`);
- fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30 / 40%) l c 0 / alpha)`, `oklch(0.7 0.45 0 / 0.4)`);
- fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30 / 40%) l c 0deg / alpha)`, `oklch(0.7 0.45 0 / 0.4)`);
- fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30 / 40%) l c h / 0)`, `oklch(0.7 0.45 30 / 0)`);
+ fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30) 0 0 0)`);
+ fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30) 0 0 0deg)`);
+ fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30) 0 0 0 / 0)`);
+ fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30) 0 0 0deg / 0)`);
+ fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30) 0 c h / alpha)`);
+ fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30) l 0 h / alpha)`);
+ fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30) l c 0 / alpha)`);
+ fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30) l c 0deg / alpha)`);
+ fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30) l c h / 0)`);
+ fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30 / 40%) 0 c h / alpha)`, `oklch(from oklch(0.7 0.45 30 / 0.4) 0 c h / alpha)`);
+ fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30 / 40%) l 0 h / alpha)`, `oklch(from oklch(0.7 0.45 30 / 0.4) l 0 h / alpha)`);
+ fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30 / 40%) l c 0 / alpha)`, `oklch(from oklch(0.7 0.45 30 / 0.4) l c 0 / alpha)`);
+ fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30 / 40%) l c 0deg / alpha)`, `oklch(from oklch(0.7 0.45 30 / 0.4) l c 0deg / alpha)`);
+ fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30 / 40%) l c h / 0)`, `oklch(from oklch(0.7 0.45 30 / 0.4) l c h / 0)`);
// Testing replacement with a constant.
- fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30) 0.25 c h / alpha)`, `oklch(0.25 0.45 30)`);
- fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30) l 0.25 h / alpha)`, `oklch(0.7 0.25 30)`);
- fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30) l c 0.25 / alpha)`, `oklch(0.7 0.45 0.25)`);
- fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30) l c 25deg / alpha)`, `oklch(0.7 0.45 25)`);
- fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30) l c h / .25)`, `oklch(0.7 0.45 30 / 0.25)`);
- fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30 / 40%) 0.25 c h / alpha)`, `oklch(0.25 0.45 30 / 0.4)`);
- fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30 / 40%) l 0.25 h / alpha)`, `oklch(0.7 0.25 30 / 0.4)`);
- fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30 / 40%) l c 0.25 / alpha)`, `oklch(0.7 0.45 0.25 / 0.4)`);
- fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30 / 40%) l c 25deg / alpha)`, `oklch(0.7 0.45 25 / 0.4)`);
- fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30 / 40%) l c h / .25)`, `oklch(0.7 0.45 30 / 0.25)`);
- fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30 / 40%) 2 3 400 / 500)`, `oklch(1 3 40)`);
- fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30 / 40%) -2 -3 -400 / -500)`, `oklch(0 0 320 / 0)`);
- fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30 / 40%) 0.5 1.2 400deg / 500)`, `oklch(0.5 1.2 40)`);
- fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30 / 40%) 0.5 1.2 -400deg / -500)`, `oklch(0.5 1.2 320 / 0)`);
+ fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30) 0.25 c h / alpha)`);
+ fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30) l 0.25 h / alpha)`);
+ fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30) l c 0.25 / alpha)`);
+ fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30) l c 25deg / alpha)`);
+ fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30) l c h / 0.25)`);
+ fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30 / 40%) 0.25 c h / alpha)`, `oklch(from oklch(0.7 0.45 30 / 0.4) 0.25 c h / alpha)`);
+ fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30 / 40%) l 0.25 h / alpha)`, `oklch(from oklch(0.7 0.45 30 / 0.4) l 0.25 h / alpha)`);
+ fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30 / 40%) l c 0.25 / alpha)`, `oklch(from oklch(0.7 0.45 30 / 0.4) l c 0.25 / alpha)`);
+ fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30 / 40%) l c 25deg / alpha)`, `oklch(from oklch(0.7 0.45 30 / 0.4) l c 25deg / alpha)`);
+ fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30 / 40%) l c h / 0.25)`, `oklch(from oklch(0.7 0.45 30 / 0.4) l c h / 0.25)`);
+ fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30 / 40%) 2 3 400 / 500)`, `oklch(from oklch(0.7 0.45 30 / 0.4) 2 3 400 / 500)`);
+ fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30 / 40%) -2 -3 -400 / -500)`, `oklch(from oklch(0.7 0.45 30 / 0.4) -2 -3 -400 / -500)`);
+ fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30 / 40%) 0.5 1.2 400deg / 500)`, `oklch(from oklch(0.7 0.45 30 / 0.4) 0.5 1.2 400deg / 500)`);
+ fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30 / 40%) 0.5 1.2 -400deg / -500)`, `oklch(from oklch(0.7 0.45 30 / 0.4) 0.5 1.2 -400deg / -500)`);
// Testing valid permutation (types match).
// NOTE: 'c' is a vaild hue, as hue is <angle>|<number>.
- fuzzy_test_valid_color(`oklch(from oklch(.7 0.45 30) l c c / alpha)`, `oklch(0.7 0.45 0.45)`);
- fuzzy_test_valid_color(`oklch(from oklch(.7 0.45 30 / 40%) l c c / alpha)`, `oklch(0.7 0.45 0.45 / 0.4)`);
+ fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30) l c c / alpha)`);
+ fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30 / 40%) l c c / alpha)`, `oklch(from oklch(0.7 0.45 30 / 0.4) l c c / alpha)`);
// Testing with calc().
- fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30) calc(l) calc(c) calc(h))`, `oklch(0.7 0.45 30)`);
- fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30 / 40%) calc(l) calc(c) calc(h) / calc(alpha))`, `oklch(0.7 0.45 30 / 0.4)`);
- fuzzy_test_valid_color(`oklch(from oklch(0.7 0.2 300) calc(l - 0.2) c h)`, `oklch(0.5 0.2 300)`);
- fuzzy_test_valid_color(`oklch(from oklch(0.7 0.2 300) l calc(c / 2) h)`, `oklch(0.7 0.1 300)`);
- fuzzy_test_valid_color(`oklch(from oklch(0.7 0.2 300) l c calc(h * 2.5))`, `oklch(0.7 0.2 30)`);
+ fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30) calc(l) calc(c) calc(h))`);
+ fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30 / 40%) calc(l) calc(c) calc(h) / calc(alpha))`, `oklch(from oklch(0.7 0.45 30 / 0.4) calc(l) calc(c) calc(h) / calc(alpha))`);
+ fuzzy_test_valid_color(`oklch(from oklch(0.7 0.2 300) calc(l - 0.2) c h)`, `oklch(from oklch(0.7 0.2 300) calc(-0.2 + l) c h)`);
+ fuzzy_test_valid_color(`oklch(from oklch(0.7 0.2 300) l calc(c / 2) h)`, `oklch(from oklch(0.7 0.2 300) l calc(0.5 * c) h)`);
+ fuzzy_test_valid_color(`oklch(from oklch(0.7 0.2 300) l c calc(h * 2.5))`, `oklch(from oklch(0.7 0.2 300) l c calc(2.5 * h))`);
// Testing with 'none'.
- fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30) none none none)`, `oklch(none none none)`);
- fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30) none none none / none)`, `oklch(none none none / none)`);
- fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30) l c none)`, `oklch(0.7 0.45 none)`);
- fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30) l c none / alpha)`, `oklch(0.7 0.45 none)`);
- fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30) l c h / none)`, `oklch(0.7 0.45 30 / none)`);
- fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30 / 40%) l c none / alpha)`, `oklch(0.7 0.45 none / 0.4)`);
- fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30 / 40%) l c h / none)`, `oklch(0.7 0.45 30 / none)`);
+ fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30) none none none)`);
+ fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30) none none none / none)`);
+ fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30) l c none)`);
+ fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30) l c none / alpha)`);
+ fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30) l c h / none)`);
+ fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30 / 40%) l c none / alpha)`, `oklch(from oklch(0.7 0.45 30 / 0.4) l c none / alpha)`);
+ fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30 / 40%) l c h / none)`, `oklch(from oklch(0.7 0.45 30 / 0.4) l c h / none)`);
// FIXME: Clarify with spec editors if 'none' should pass through to the constants.
- fuzzy_test_valid_color(`oklch(from oklch(none none none) l c h)`, `oklch(0 0 0)`);
- fuzzy_test_valid_color(`oklch(from oklch(none none none / none) l c h / alpha)`, `oklch(0 0 0 / 0)`);
- fuzzy_test_valid_color(`oklch(from oklch(0.7 none 30) l c h)`, `oklch(0.7 0 30)`);
- fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30 / none) l c h / alpha)`, `oklch(0.7 0.45 30 / 0)`);
-
- // color-mix
- fuzzy_test_valid_color(`oklch(from color-mix(in oklch, oklch(0.7 0.45 30), oklch(0.7 0.45 30)) l c h / alpha)`, `oklch(0.7 0.45 30)`);
+ fuzzy_test_valid_color(`oklch(from oklch(none none none) l c h)`);
+ fuzzy_test_valid_color(`oklch(from oklch(none none none / none) l c h / alpha)`);
+ fuzzy_test_valid_color(`oklch(from oklch(0.7 none 30) l c h)`);
+ fuzzy_test_valid_color(`oklch(from oklch(0.7 0.45 30 / none) l c h / alpha)`);
// Testing with 'currentColor'
fuzzy_test_valid_color(`oklch(from currentColor l c h)`, `oklch(from currentcolor l c h)`);
+ // color-mix
+ fuzzy_test_valid_color(`oklch(from color-mix(in oklch, oklch(0.7 0.45 30), oklch(0.7 0.45 30)) l c h / alpha)`);
+
for (const colorSpace of [ "srgb", "srgb-linear", "a98-rgb", "rec2020", "prophoto-rgb", "display-p3" ]) {
// Testing no modifications.
- fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} r g b)`, `color(${colorSpace} 0.7 0.5 0.3)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} r g b / alpha)`, `color(${colorSpace} 0.7 0.5 0.3)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3 / 40%) ${colorSpace} r g b)`, `color(${colorSpace} 0.7 0.5 0.3 / 0.4)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3 / 40%) ${colorSpace} r g b / alpha)`, `color(${colorSpace} 0.7 0.5 0.3 / 0.4)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} r g b)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} r g b / alpha)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3 / 40%) ${colorSpace} r g b)`, `color(from color(${colorSpace} 0.7 0.5 0.3 / 0.4) ${colorSpace} r g b)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3 / 40%) ${colorSpace} r g b / alpha)`, `color(from color(${colorSpace} 0.7 0.5 0.3 / 0.4) ${colorSpace} r g b / alpha)`);
// Test nesting relative colors.
- fuzzy_test_valid_color(`color(from color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} r g b) ${colorSpace} r g b)`, `color(${colorSpace} 0.7 0.5 0.3)`);
+ fuzzy_test_valid_color(`color(from color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} r g b) ${colorSpace} r g b)`);
// Testing replacement with 0.
- fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} 0 0 0)`, `color(${colorSpace} 0 0 0)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} 0 0 0 / 0)`, `color(${colorSpace} 0 0 0 / 0)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} 0 g b / alpha)`, `color(${colorSpace} 0 0.5 0.3)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} r 0 b / alpha)`, `color(${colorSpace} 0.7 0 0.3)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} r g 0 / alpha)`, `color(${colorSpace} 0.7 0.5 0)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} r g b / 0)`, `color(${colorSpace} 0.7 0.5 0.3 / 0)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3 / 40%) ${colorSpace} 0 g b / alpha)`, `color(${colorSpace} 0 0.5 0.3 / 0.4)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3 / 40%) ${colorSpace} r 0 b / alpha)`, `color(${colorSpace} 0.7 0 0.3 / 0.4)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3 / 40%) ${colorSpace} r g 0 / alpha)`, `color(${colorSpace} 0.7 0.5 0 / 0.4)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3 / 40%) ${colorSpace} r g b / 0)`, `color(${colorSpace} 0.7 0.5 0.3 / 0)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} 0 0 0)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} 0 0 0 / 0)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} 0 g b / alpha)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} r 0 b / alpha)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} r g 0 / alpha)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} r g b / 0)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3 / 40%) ${colorSpace} 0 g b / alpha)`, `color(from color(${colorSpace} 0.7 0.5 0.3 / 0.4) ${colorSpace} 0 g b / alpha)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3 / 40%) ${colorSpace} r 0 b / alpha)`, `color(from color(${colorSpace} 0.7 0.5 0.3 / 0.4) ${colorSpace} r 0 b / alpha)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3 / 40%) ${colorSpace} r g 0 / alpha)`, `color(from color(${colorSpace} 0.7 0.5 0.3 / 0.4) ${colorSpace} r g 0 / alpha)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3 / 40%) ${colorSpace} r g b / 0)`, `color(from color(${colorSpace} 0.7 0.5 0.3 / 0.4) ${colorSpace} r g b / 0)`);
// Testing replacement with a constant.
- fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} 0.2 g b / alpha)`, `color(${colorSpace} 0.2 0.5 0.3)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} 20% g b / alpha)`, `color(${colorSpace} 0.2 0.5 0.3)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} r 0.2 b / alpha)`, `color(${colorSpace} 0.7 0.2 0.3)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} r 20% b / alpha)`, `color(${colorSpace} 0.7 0.2 0.3)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} r g 0.2 / alpha)`, `color(${colorSpace} 0.7 0.5 0.2)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} r g 20% / alpha)`, `color(${colorSpace} 0.7 0.5 0.2)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} r g b / 0.2)`, `color(${colorSpace} 0.7 0.5 0.3 / 0.2)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} r g b / 20%)`, `color(${colorSpace} 0.7 0.5 0.3 / 0.2)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3 / 40%) ${colorSpace} 0.2 g b / alpha)`, `color(${colorSpace} 0.2 0.5 0.3 / 0.4)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3 / 40%) ${colorSpace} 20% g b / alpha)`, `color(${colorSpace} 0.2 0.5 0.3 / 0.4)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3 / 40%) ${colorSpace} r 0.2 b / alpha)`, `color(${colorSpace} 0.7 0.2 0.3 / 0.4)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3 / 40%) ${colorSpace} r 20% b / alpha)`, `color(${colorSpace} 0.7 0.2 0.3 / 0.4)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3 / 40%) ${colorSpace} r g 0.2 / alpha)`, `color(${colorSpace} 0.7 0.5 0.2 / 0.4)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3 / 40%) ${colorSpace} r g 20% / alpha)`, `color(${colorSpace} 0.7 0.5 0.2 / 0.4)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3 / 40%) ${colorSpace} r g b / 0.2)`, `color(${colorSpace} 0.7 0.5 0.3 / 0.2)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3 / 40%) ${colorSpace} r g b / 20%)`, `color(${colorSpace} 0.7 0.5 0.3 / 0.2)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} 2 3 4)`, `color(${colorSpace} 2 3 4)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} 2 3 4 / 5)`, `color(${colorSpace} 2 3 4)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} -2 -3 -4)`, `color(${colorSpace} -2 -3 -4)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} -2 -3 -4 / -5)`, `color(${colorSpace} -2 -3 -4 / 0)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} 200% 300% 400%)`, `color(${colorSpace} 2 3 4)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} 200% 300% 400% / 500%)`, `color(${colorSpace} 2 3 4)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} -200% -300% -400%)`, `color(${colorSpace} -2 -3 -4)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} -200% -300% -400% / -500%)`, `color(${colorSpace} -2 -3 -4 / 0)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} 0.2 g b / alpha)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} 20% g b / alpha)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} r 0.2 b / alpha)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} r 20% b / alpha)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} r g 0.2 / alpha)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} r g 20% / alpha)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} r g b / 0.2)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} r g b / 20%)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3 / 40%) ${colorSpace} 0.2 g b / alpha)`, `color(from color(${colorSpace} 0.7 0.5 0.3 / 0.4) ${colorSpace} 0.2 g b / alpha)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3 / 40%) ${colorSpace} 20% g b / alpha)`, `color(from color(${colorSpace} 0.7 0.5 0.3 / 0.4) ${colorSpace} 20% g b / alpha)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3 / 40%) ${colorSpace} r 0.2 b / alpha)`, `color(from color(${colorSpace} 0.7 0.5 0.3 / 0.4) ${colorSpace} r 0.2 b / alpha)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3 / 40%) ${colorSpace} r 20% b / alpha)`, `color(from color(${colorSpace} 0.7 0.5 0.3 / 0.4) ${colorSpace} r 20% b / alpha)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3 / 40%) ${colorSpace} r g 0.2 / alpha)`, `color(from color(${colorSpace} 0.7 0.5 0.3 / 0.4) ${colorSpace} r g 0.2 / alpha)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3 / 40%) ${colorSpace} r g 20% / alpha)`, `color(from color(${colorSpace} 0.7 0.5 0.3 / 0.4) ${colorSpace} r g 20% / alpha)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3 / 40%) ${colorSpace} r g b / 0.2)`, `color(from color(${colorSpace} 0.7 0.5 0.3 / 0.4) ${colorSpace} r g b / 0.2)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3 / 40%) ${colorSpace} r g b / 20%)`, `color(from color(${colorSpace} 0.7 0.5 0.3 / 0.4) ${colorSpace} r g b / 20%)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} 2 3 4)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} 2 3 4 / 5)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} -2 -3 -4)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} -2 -3 -4 / -5)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} 200% 300% 400%)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} 200% 300% 400% / 500%)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} -200% -300% -400%)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} -200% -300% -400% / -500%)`);
// Testing valid permutation (types match).
- fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} g b r)`, `color(${colorSpace} 0.5 0.3 0.7)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} b alpha r / g)`, `color(${colorSpace} 0.3 1 0.7 / 0.5)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} r r r / r)`, `color(${colorSpace} 0.7 0.7 0.7 / 0.7)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} alpha alpha alpha / alpha)`, `color(${colorSpace} 1 1 1)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3 / 40%) ${colorSpace} g b r)`, `color(${colorSpace} 0.5 0.3 0.7 / 0.4)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3 / 40%) ${colorSpace} b alpha r / g)`, `color(${colorSpace} 0.3 0.4 0.7 / 0.5)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3 / 40%) ${colorSpace} r r r / r)`, `color(${colorSpace} 0.7 0.7 0.7 / 0.7)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3 / 40%) ${colorSpace} alpha alpha alpha / alpha)`, `color(${colorSpace} 0.4 0.4 0.4 / 0.4)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} g b r)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} b alpha r / g)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} r r r / r)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} alpha alpha alpha / alpha)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3 / 40%) ${colorSpace} g b r)`, `color(from color(${colorSpace} 0.7 0.5 0.3 / 0.4) ${colorSpace} g b r)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3 / 40%) ${colorSpace} b alpha r / g)`, `color(from color(${colorSpace} 0.7 0.5 0.3 / 0.4) ${colorSpace} b alpha r / g)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3 / 40%) ${colorSpace} r r r / r)`, `color(from color(${colorSpace} 0.7 0.5 0.3 / 0.4) ${colorSpace} r r r / r)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3 / 40%) ${colorSpace} alpha alpha alpha / alpha)`, `color(from color(${colorSpace} 0.7 0.5 0.3 / 0.4) ${colorSpace} alpha alpha alpha / alpha)`);
// Testing out of gamut components.
- fuzzy_test_valid_color(`color(from color(${colorSpace} 1.7 1.5 1.3) ${colorSpace} r g b)`, `color(${colorSpace} 1.7 1.5 1.3)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 1.7 1.5 1.3) ${colorSpace} r g b / alpha)`, `color(${colorSpace} 1.7 1.5 1.3)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 1.7 1.5 1.3 / 140%) ${colorSpace} r g b)`, `color(${colorSpace} 1.7 1.5 1.3)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 1.7 1.5 1.3 / 140%) ${colorSpace} r g b / alpha)`, `color(${colorSpace} 1.7 1.5 1.3)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} -0.7 -0.5 -0.3) ${colorSpace} r g b)`, `color(${colorSpace} -0.7 -0.5 -0.3)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} -0.7 -0.5 -0.3) ${colorSpace} r g b / alpha)`, `color(${colorSpace} -0.7 -0.5 -0.3)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} -0.7 -0.5 -0.3 / -40%) ${colorSpace} r g b)`, `color(${colorSpace} -0.7 -0.5 -0.3 / 0)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} -0.7 -0.5 -0.3 / -40%) ${colorSpace} r g b / alpha)`, `color(${colorSpace} -0.7 -0.5 -0.3 / 0)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 1.7 1.5 1.3) ${colorSpace} r g b)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 1.7 1.5 1.3) ${colorSpace} r g b / alpha)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 1.7 1.5 1.3 / 140%) ${colorSpace} r g b)`, `color(from color(${colorSpace} 1.7 1.5 1.3) ${colorSpace} r g b)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 1.7 1.5 1.3 / 140%) ${colorSpace} r g b / alpha)`, `color(from color(${colorSpace} 1.7 1.5 1.3) ${colorSpace} r g b / alpha)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} -0.7 -0.5 -0.3) ${colorSpace} r g b)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} -0.7 -0.5 -0.3) ${colorSpace} r g b / alpha)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} -0.7 -0.5 -0.3 / -40%) ${colorSpace} r g b)`, `color(from color(${colorSpace} -0.7 -0.5 -0.3 / 0) ${colorSpace} r g b)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} -0.7 -0.5 -0.3 / -40%) ${colorSpace} r g b / alpha)`, `color(from color(${colorSpace} -0.7 -0.5 -0.3 / 0) ${colorSpace} r g b / alpha)`);
// Testing with calc().
- fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} calc(r) calc(g) calc(b))`, `color(${colorSpace} 0.7 0.5 0.3)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3 / 40%) ${colorSpace} calc(r) calc(g) calc(b) / calc(alpha))`, `color(${colorSpace} 0.7 0.5 0.3 / 0.4)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} calc(r) calc(g) calc(b))`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3 / 40%) ${colorSpace} calc(r) calc(g) calc(b) / calc(alpha))`, `color(from color(${colorSpace} 0.7 0.5 0.3 / 0.4) ${colorSpace} calc(r) calc(g) calc(b) / calc(alpha))`);
// Testing with 'none'.
- fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} none none none)`, `color(${colorSpace} none none none)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} none none none / none)`, `color(${colorSpace} none none none / none)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} r g none)`, `color(${colorSpace} 0.7 0.5 none)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} r g none / alpha)`, `color(${colorSpace} 0.7 0.5 none)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} r g b / none)`, `color(${colorSpace} 0.7 0.5 0.3 / none)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3 / 40%) ${colorSpace} r g none / alpha)`, `color(${colorSpace} 0.7 0.5 none / 0.4)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3 / 40%) ${colorSpace} r g b / none)`, `color(${colorSpace} 0.7 0.5 0.3 / none)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} none none none)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} none none none / none)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} r g none)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} r g none / alpha)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3) ${colorSpace} r g b / none)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3 / 40%) ${colorSpace} r g none / alpha)`, `color(from color(${colorSpace} 0.7 0.5 0.3 / 0.4) ${colorSpace} r g none / alpha)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3 / 40%) ${colorSpace} r g b / none)`, `color(from color(${colorSpace} 0.7 0.5 0.3 / 0.4) ${colorSpace} r g b / none)`);
// FIXME: Clarify with spec editors if 'none' should pass through to the constants.
- fuzzy_test_valid_color(`color(from color(${colorSpace} none none none) ${colorSpace} r g b)`, `color(${colorSpace} 0 0 0)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} none none none / none) ${colorSpace} r g b / alpha)`, `color(${colorSpace} 0 0 0 / 0)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 none 0.3) ${colorSpace} r g b)`, `color(${colorSpace} 0.7 0 0.3)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3 / none) ${colorSpace} r g b / alpha)`, `color(${colorSpace} 0.7 0.5 0.3 / 0)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} none none none) ${colorSpace} r g b)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} none none none / none) ${colorSpace} r g b / alpha)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 none 0.3) ${colorSpace} r g b)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 0.7 0.5 0.3 / none) ${colorSpace} r g b / alpha)`);
// Testing with 'currentColor'
- fuzzy_test_valid_color(`color(from currentColor ${colorSpace} r g b)`, `color(from currentcolor ${colorSpace} r g b)`);
+ fuzzy_test_valid_color(`color(from currentColor ${colorSpace} r g b)`, `color(from currentcolor ${colorSpace} r g b)`);
// color-mix
- fuzzy_test_valid_color(`color(from color-mix(in xyz, color(${colorSpace} 0.7 0.5 0.3), color(${colorSpace} 0.7 0.5 0.3)) ${colorSpace} r g b / alpha)`, `color(${colorSpace} 0.7 0.5 0.3)`);
+ fuzzy_test_valid_color(`color(from color-mix(in ${colorSpace}, color(${colorSpace} 0.7 0.5 0.3), color(${colorSpace} 0.7 0.5 0.3)) ${colorSpace} r g b / alpha)`);
}
for (const colorSpace of [ "xyz", "xyz-d50", "xyz-d65" ]) {
const resultColorSpace = colorSpace == "xyz" ? "xyz-d65" : colorSpace;
// Testing no modifications.
- fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100) ${colorSpace} x y z)`, `color(${resultColorSpace} 7 -20.5 100)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100) ${colorSpace} x y z / alpha)`, `color(${resultColorSpace} 7 -20.5 100)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100 / 40%) ${colorSpace} x y z)`, `color(${resultColorSpace} 7 -20.5 100 / 0.4)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100 / 40%) ${colorSpace} x y z / alpha)`, `color(${resultColorSpace} 7 -20.5 100 / 0.4)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100) ${colorSpace} x y z)`, `color(from color(${resultColorSpace} 7 -20.5 100) ${resultColorSpace} x y z)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100) ${colorSpace} x y z / alpha)`, `color(from color(${resultColorSpace} 7 -20.5 100) ${resultColorSpace} x y z / alpha)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100 / 40%) ${colorSpace} x y z)`, `color(from color(${resultColorSpace} 7 -20.5 100 / 0.4) ${resultColorSpace} x y z)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100 / 40%) ${colorSpace} x y z / alpha)`, `color(from color(${resultColorSpace} 7 -20.5 100 / 0.4) ${resultColorSpace} x y z / alpha)`);
// Test nesting relative colors.
- fuzzy_test_valid_color(`color(from color(from color(${colorSpace} 7 -20.5 100) ${colorSpace} x y z) ${colorSpace} x y z)`, `color(${resultColorSpace} 7 -20.5 100)`);
+ fuzzy_test_valid_color(`color(from color(from color(${colorSpace} 7 -20.5 100) ${colorSpace} x y z) ${colorSpace} x y z)`, `color(from color(from color(${resultColorSpace} 7 -20.5 100) ${resultColorSpace} x y z) ${resultColorSpace} x y z)`);
// Testing replacement with 0.
- fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100) ${colorSpace} 0 0 0)`, `color(${resultColorSpace} 0 0 0)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100) ${colorSpace} 0 0 0 / 0)`, `color(${resultColorSpace} 0 0 0 / 0)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100) ${colorSpace} 0 y z / alpha)`, `color(${resultColorSpace} 0 -20.5 100)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100) ${colorSpace} x 0 z / alpha)`, `color(${resultColorSpace} 7 0 100)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100) ${colorSpace} x y 0 / alpha)`, `color(${resultColorSpace} 7 -20.5 0)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100) ${colorSpace} x y z / 0)`, `color(${resultColorSpace} 7 -20.5 100 / 0)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100 / 40%) ${colorSpace} 0 y z / alpha)`, `color(${resultColorSpace} 0 -20.5 100 / 0.4)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100 / 40%) ${colorSpace} x 0 z / alpha)`, `color(${resultColorSpace} 7 0 100 / 0.4)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100 / 40%) ${colorSpace} x y 0 / alpha)`, `color(${resultColorSpace} 7 -20.5 0 / 0.4)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100 / 40%) ${colorSpace} x y z / 0)`, `color(${resultColorSpace} 7 -20.5 100 / 0)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100) ${colorSpace} 0 0 0)`, `color(from color(${resultColorSpace} 7 -20.5 100) ${resultColorSpace} 0 0 0)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100) ${colorSpace} 0 0 0 / 0)`, `color(from color(${resultColorSpace} 7 -20.5 100) ${resultColorSpace} 0 0 0 / 0)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100) ${colorSpace} 0 y z / alpha)`, `color(from color(${resultColorSpace} 7 -20.5 100) ${resultColorSpace} 0 y z / alpha)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100) ${colorSpace} x 0 z / alpha)`, `color(from color(${resultColorSpace} 7 -20.5 100) ${resultColorSpace} x 0 z / alpha)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100) ${colorSpace} x y 0 / alpha)`, `color(from color(${resultColorSpace} 7 -20.5 100) ${resultColorSpace} x y 0 / alpha)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100) ${colorSpace} x y z / 0)`, `color(from color(${resultColorSpace} 7 -20.5 100) ${resultColorSpace} x y z / 0)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100 / 40%) ${colorSpace} 0 y z / alpha)`, `color(from color(${resultColorSpace} 7 -20.5 100 / 0.4) ${resultColorSpace} 0 y z / alpha)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100 / 40%) ${colorSpace} x 0 z / alpha)`, `color(from color(${resultColorSpace} 7 -20.5 100 / 0.4) ${resultColorSpace} x 0 z / alpha)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100 / 40%) ${colorSpace} x y 0 / alpha)`, `color(from color(${resultColorSpace} 7 -20.5 100 / 0.4) ${resultColorSpace} x y 0 / alpha)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100 / 40%) ${colorSpace} x y z / 0)`, `color(from color(${resultColorSpace} 7 -20.5 100 / 0.4) ${resultColorSpace} x y z / 0)`);
// Testing replacement with a constant.
- fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100) ${colorSpace} 0.2 y z / alpha)`, `color(${resultColorSpace} 0.2 -20.5 100)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100) ${colorSpace} x 0.2 z / alpha)`, `color(${resultColorSpace} 7 0.2 100)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100) ${colorSpace} x y 0.2 / alpha)`, `color(${resultColorSpace} 7 -20.5 0.2)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100) ${colorSpace} x y z / 0.2)`, `color(${resultColorSpace} 7 -20.5 100 / 0.2)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100) ${colorSpace} x y z / 20%)`, `color(${resultColorSpace} 7 -20.5 100 / 0.2)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100 / 40%) ${colorSpace} 0.2 y z / alpha)`, `color(${resultColorSpace} 0.2 -20.5 100 / 0.4)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100 / 40%) ${colorSpace} x 0.2 z / alpha)`, `color(${resultColorSpace} 7 0.2 100 / 0.4)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100 / 40%) ${colorSpace} x y 0.2 / alpha)`, `color(${resultColorSpace} 7 -20.5 0.2 / 0.4)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100 / 40%) ${colorSpace} x y z / 0.2)`, `color(${resultColorSpace} 7 -20.5 100 / 0.2)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100) ${colorSpace} 0.2 y z / alpha)`, `color(from color(${resultColorSpace} 7 -20.5 100) ${resultColorSpace} 0.2 y z / alpha)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100) ${colorSpace} x 0.2 z / alpha)`, `color(from color(${resultColorSpace} 7 -20.5 100) ${resultColorSpace} x 0.2 z / alpha)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100) ${colorSpace} x y 0.2 / alpha)`, `color(from color(${resultColorSpace} 7 -20.5 100) ${resultColorSpace} x y 0.2 / alpha)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100) ${colorSpace} x y z / 0.2)`, `color(from color(${resultColorSpace} 7 -20.5 100) ${resultColorSpace} x y z / 0.2)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100) ${colorSpace} x y z / 20%)`, `color(from color(${resultColorSpace} 7 -20.5 100) ${resultColorSpace} x y z / 20%)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100 / 40%) ${colorSpace} 0.2 y z / alpha)`, `color(from color(${resultColorSpace} 7 -20.5 100 / 0.4) ${resultColorSpace} 0.2 y z / alpha)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100 / 40%) ${colorSpace} x 0.2 z / alpha)`, `color(from color(${resultColorSpace} 7 -20.5 100 / 0.4) ${resultColorSpace} x 0.2 z / alpha)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100 / 40%) ${colorSpace} x y 0.2 / alpha)`, `color(from color(${resultColorSpace} 7 -20.5 100 / 0.4) ${resultColorSpace} x y 0.2 / alpha)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100 / 40%) ${colorSpace} x y z / 0.2)`, `color(from color(${resultColorSpace} 7 -20.5 100 / 0.4) ${resultColorSpace} x y z / 0.2)`);
// Testing valid permutation (types match).
- fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100) ${colorSpace} y z x)`, `color(${resultColorSpace} -20.5 100 7)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100) ${colorSpace} x x x / x)`, `color(${resultColorSpace} 7 7 7)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100 / 40%) ${colorSpace} y z x)`, `color(${resultColorSpace} -20.5 100 7 / 0.4)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100 / 40%) ${colorSpace} x x x / x)`, `color(${resultColorSpace} 7 7 7)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100) ${colorSpace} y z x)`, `color(from color(${resultColorSpace} 7 -20.5 100) ${resultColorSpace} y z x)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100) ${colorSpace} x x x / x)`, `color(from color(${resultColorSpace} 7 -20.5 100) ${resultColorSpace} x x x / x)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100 / 40%) ${colorSpace} y z x)`, `color(from color(${resultColorSpace} 7 -20.5 100 / 0.4) ${resultColorSpace} y z x)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100 / 40%) ${colorSpace} x x x / x)`, `color(from color(${resultColorSpace} 7 -20.5 100 / 0.4) ${resultColorSpace} x x x / x)`);
// Testing with calc().
- fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100) ${colorSpace} calc(x) calc(y) calc(z))`, `color(${resultColorSpace} 7 -20.5 100)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100 / 40%) ${colorSpace} calc(x) calc(y) calc(z) / calc(alpha))`, `color(${resultColorSpace} 7 -20.5 100 / 0.4)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100) ${colorSpace} calc(x) calc(y) calc(z))`, `color(from color(${resultColorSpace} 7 -20.5 100) ${resultColorSpace} calc(x) calc(y) calc(z))`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100 / 40%) ${colorSpace} calc(x) calc(y) calc(z) / calc(alpha))`, `color(from color(${resultColorSpace} 7 -20.5 100 / 0.4) ${resultColorSpace} calc(x) calc(y) calc(z) / calc(alpha))`);
// Testing with 'none'.
- fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100) ${colorSpace} none none none)`, `color(${resultColorSpace} none none none)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100) ${colorSpace} none none none / none)`, `color(${resultColorSpace} none none none / none)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100) ${colorSpace} x y none)`, `color(${resultColorSpace} 7 -20.5 none)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100) ${colorSpace} x y none / alpha)`, `color(${resultColorSpace} 7 -20.5 none)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100) ${colorSpace} x y z / none)`, `color(${resultColorSpace} 7 -20.5 100 / none)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100 / 40%) ${colorSpace} x y none / alpha)`, `color(${resultColorSpace} 7 -20.5 none / 0.4)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100 / 40%) ${colorSpace} x y z / none)`, `color(${resultColorSpace} 7 -20.5 100 / none)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100) ${colorSpace} none none none)`, `color(from color(${resultColorSpace} 7 -20.5 100) ${resultColorSpace} none none none)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100) ${colorSpace} none none none / none)`, `color(from color(${resultColorSpace} 7 -20.5 100) ${resultColorSpace} none none none / none)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100) ${colorSpace} x y none)`, `color(from color(${resultColorSpace} 7 -20.5 100) ${resultColorSpace} x y none)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100) ${colorSpace} x y none / alpha)`, `color(from color(${resultColorSpace} 7 -20.5 100) ${resultColorSpace} x y none / alpha)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100) ${colorSpace} x y z / none)`, `color(from color(${resultColorSpace} 7 -20.5 100) ${resultColorSpace} x y z / none)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100 / 40%) ${colorSpace} x y none / alpha)`, `color(from color(${resultColorSpace} 7 -20.5 100 / 0.4) ${resultColorSpace} x y none / alpha)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100 / 40%) ${colorSpace} x y z / none)`, `color(from color(${resultColorSpace} 7 -20.5 100 / 0.4) ${resultColorSpace} x y z / none)`);
// FIXME: Clarify with spec editors if 'none' should pass through to the constants.
- fuzzy_test_valid_color(`color(from color(${colorSpace} none none none) ${colorSpace} x y z)`, `color(${resultColorSpace} 0 0 0)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} none none none / none) ${colorSpace} x y z / alpha)`, `color(${resultColorSpace} 0 0 0 / 0)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 7 none 100) ${colorSpace} x y z)`, `color(${resultColorSpace} 7 0 100)`);
- fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100 / none) ${colorSpace} x y z / alpha)`, `color(${resultColorSpace} 7 -20.5 100 / 0)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} none none none) ${colorSpace} x y z)`, `color(from color(${resultColorSpace} none none none) ${resultColorSpace} x y z)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} none none none / none) ${colorSpace} x y z / alpha)`, `color(from color(${resultColorSpace} none none none / none) ${resultColorSpace} x y z / alpha)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 7 none 100) ${colorSpace} x y z)`, `color(from color(${resultColorSpace} 7 none 100) ${resultColorSpace} x y z)`);
+ fuzzy_test_valid_color(`color(from color(${colorSpace} 7 -20.5 100 / none) ${colorSpace} x y z / alpha)`, `color(from color(${resultColorSpace} 7 -20.5 100 / none) ${resultColorSpace} x y z / alpha)`);
// Testing with 'currentColor'
- fuzzy_test_valid_color(`color(from currentColor ${colorSpace} x y z)`, `color(from currentcolor ${resultColorSpace} x y z)`);
+ fuzzy_test_valid_color(`color(from currentColor ${colorSpace} x y z)`, `color(from currentcolor ${resultColorSpace} x y z)`);
// color-mix
- fuzzy_test_valid_color(`color(from color-mix(in xyz, color(${colorSpace} 0.7 0.5 0.3), color(${colorSpace} 0.7 0.5 0.3)) ${colorSpace} x y z / alpha)`, `color(${resultColorSpace} 0.7 0.5 0.3)`);
+ fuzzy_test_valid_color(`color(from color-mix(in ${colorSpace}, color(${colorSpace} 0.7 0.5 0.3), color(${colorSpace} 0.7 0.5 0.3)) ${colorSpace} x y z / alpha)`, `color(from color-mix(in ${resultColorSpace}, color(${resultColorSpace} 0.7 0.5 0.3), color(${resultColorSpace} 0.7 0.5 0.3)) ${resultColorSpace} x y z / alpha)`);
}
// Spec Examples: https://www.w3.org/TR/css-color-5/#relative-colors
@@ -751,14 +745,12 @@
fuzzy_test_valid_color(`lch(from var(--color) calc(l / 2) c h)`);
fuzzy_test_valid_color(`rgb(from var(--color) calc(r * .3 + g * .59 + b * .11) calc(r * .3 + g * .59 + b * .11) calc(r * .3 + g * .59 + b * .11))`);
fuzzy_test_valid_color(`lch(from var(--color) l 0 h)`);
- // This particular test does a lot of math so a wider epsilon is needed.
- fuzzy_test_valid_color(`rgb(from indianred 255 g b)`, `color(srgb 1 0.36 0.36)`, 0.02 /* epsilon */);
+ fuzzy_test_valid_color(`rgb(from indianred 255 g b)`);
fuzzy_test_valid_color(`hsl(from var(--accent) calc(h + 180) s l)`);
fuzzy_test_valid_color(`lab(from var(--mycolor) l a b / 100%)`);
fuzzy_test_valid_color(`lab(from var(--mycolor) l a b / calc(alpha * 0.8))`);
fuzzy_test_valid_color(`lab(from var(--mycolor) l 0 0)`);
- // This particular test does a lot of math so a wider epsilon is needed.
- fuzzy_test_valid_color(`lch(from peru calc(l * 0.8) c h)`, `lch(49.80 54 63.68)`, 0.02 /* epsilon */);
+ fuzzy_test_valid_color(`lch(from peru calc(l * 0.8) c h)`, `lch(from peru calc(0.8 * l) c h)`);
fuzzy_test_valid_color(`LCH(from var(--accent) l c calc(h + 180))`);
fuzzy_test_valid_color(`lch(from var(--mycolor) l 0 h)`);
fuzzy_test_valid_color(`var(--mygray)`);
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/no-layout-containment-abspos-dynamic.html b/tests/wpt/tests/css/css-conditional/container-queries/no-layout-containment-abspos-dynamic.html
new file mode 100644
index 00000000000..773476101f6
--- /dev/null
+++ b/tests/wpt/tests/css/css-conditional/container-queries/no-layout-containment-abspos-dynamic.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<title>Position absolute elements should propagate from a container-type subtree.</title>
+<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/10544#issuecomment-2248438355">
+<link rel="match" href="/css/reference/ref-filled-green-100px-square-only.html">
+<style>
+@container (width = 100px) {
+ #test {
+ position: absolute;
+ inset: 0;
+ background: green;
+ }
+}
+</style>
+<p>Test passes if there is a filled green square.</p>
+<div id="target" style="position: relative; width: 200px; height: 100px; background: red;">
+ <div style="container-type: inline-size; height: 0;">
+ <div id="test"></div>
+ </div>
+</div>
+<script>
+document.body.offsetTop;
+document.getElementById('target').style.width = '100px';
+</script>
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/no-layout-containment-abspos.html b/tests/wpt/tests/css/css-conditional/container-queries/no-layout-containment-abspos.html
new file mode 100644
index 00000000000..f456d71044a
--- /dev/null
+++ b/tests/wpt/tests/css/css-conditional/container-queries/no-layout-containment-abspos.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<title>Position absolute elements should propagate from a container-type subtree.</title>
+<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/10544#issuecomment-2248438355">
+<link rel="match" href="/css/reference/ref-filled-green-100px-square-only.html">
+<p>Test passes if there is a filled green square.</p>
+<div style="position: relative; width: 100px; height: 100px; background: red;">
+ <div style="container-type: inline-size; height: 0;">
+ <div style="position: absolute; inset: 0; background: green;"></div>
+ </div>
+</div>
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/no-layout-containment-baseline-ref.html b/tests/wpt/tests/css/css-conditional/container-queries/no-layout-containment-baseline-ref.html
new file mode 100644
index 00000000000..295dc88c1bd
--- /dev/null
+++ b/tests/wpt/tests/css/css-conditional/container-queries/no-layout-containment-baseline-ref.html
@@ -0,0 +1,4 @@
+<!DOCTYPE html>
+<div>
+ baseline <div style="display: inline-block; width: 100px; height: 100px;">aligned</div>
+</div>
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/no-layout-containment-baseline.html b/tests/wpt/tests/css/css-conditional/container-queries/no-layout-containment-baseline.html
new file mode 100644
index 00000000000..1f8161e2185
--- /dev/null
+++ b/tests/wpt/tests/css/css-conditional/container-queries/no-layout-containment-baseline.html
@@ -0,0 +1,7 @@
+<!DOCTYPE html>
+<title>Baseline alignment should work from a container-type subtree.</title>
+<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/10544#issuecomment-2248438355">
+<link rel="match" href="no-layout-containment-baseline-ref.html">
+<div>
+ baseline <div style="display: inline-block; width: 100px; height: 100px; container-type: inline-size;">aligned</div>
+</div>
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/no-layout-containment-fixedpos-dynamic.html b/tests/wpt/tests/css/css-conditional/container-queries/no-layout-containment-fixedpos-dynamic.html
new file mode 100644
index 00000000000..d73a31c0034
--- /dev/null
+++ b/tests/wpt/tests/css/css-conditional/container-queries/no-layout-containment-fixedpos-dynamic.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<title>Position fixed elements should propagate from a container-type subtree.</title>
+<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/10544#issuecomment-2248438355">
+<link rel="match" href="/css/reference/ref-filled-green-100px-square-only.html">
+<style>
+@container (width = 100px) {
+ #test {
+ position: fixed;
+ inset: 0;
+ background: green;
+ }
+}
+</style>
+<p>Test passes if there is a filled green square.</p>
+<div id="target" style="contain: layout; width: 200px; height: 100px; background: red;">
+ <div style="container-type: inline-size; height: 0;">
+ <div id="test"></div>
+ </div>
+</div>
+<script>
+document.body.offsetTop;
+document.getElementById('target').style.width = '100px';
+</script>
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/no-layout-containment-fixedpos.html b/tests/wpt/tests/css/css-conditional/container-queries/no-layout-containment-fixedpos.html
new file mode 100644
index 00000000000..0730763a553
--- /dev/null
+++ b/tests/wpt/tests/css/css-conditional/container-queries/no-layout-containment-fixedpos.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<title>Position fixed elements should propagate from a container-type subtree.</title>
+<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/10544#issuecomment-2248438355">
+<link rel="match" href="/css/reference/ref-filled-green-100px-square-only.html">
+<p>Test passes if there is a filled green square.</p>
+<div style="contain: layout; width: 100px; height: 100px; background: red;">
+ <div style="container-type: inline-size; height: 0;">
+ <div style="position: fixed; inset: 0; background: green;"></div>
+ </div>
+</div>
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/no-layout-containment-scroll.html b/tests/wpt/tests/css/css-conditional/container-queries/no-layout-containment-scroll.html
new file mode 100644
index 00000000000..57a912bcea0
--- /dev/null
+++ b/tests/wpt/tests/css/css-conditional/container-queries/no-layout-containment-scroll.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<title>Scrollable overflow should propagate from a container-type subtree.</title>
+<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/10544#issuecomment-2248438355">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/check-layout-th.js"></script>
+<body onload="checkLayout('#test')">
+ <div id=log></div>
+ <div id="test" data-expected-scroll-height="200">
+ <div style="container-type: inline-size; height: 100px;">
+ <div style="height: 200px;"></div>
+ </div>
+ </div>
+</body>
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/query-content-box.html b/tests/wpt/tests/css/css-conditional/container-queries/query-content-box.html
index b689acdb095..5b83944d2f8 100644
--- a/tests/wpt/tests/css/css-conditional/container-queries/query-content-box.html
+++ b/tests/wpt/tests/css/css-conditional/container-queries/query-content-box.html
@@ -38,13 +38,38 @@
overflow: scroll;
}
+ #container5 {
+ box-sizing: content-box;
+ width: 100px;
+ height: 100px;
+ overflow-x: scroll;
+ overflow-y: auto;
+ scrollbar-gutter: stable;
+ }
+
+ #container6 {
+ box-sizing: border-box;
+ width: 200px;
+ height: 200px;
+ overflow-x: scroll;
+ overflow-y: auto;
+ scrollbar-gutter: stable;
+ }
+
@container ((width = 100px) and (height = 100px)) {
.target {
background-color: green;
height: 100%;
}
}
+ @container ((width < 100px) and (height < 100px)) {
+ .target {
+ background-color: blue;
+ height: 100%;
+ }
+ }
</style>
+<div id="sentinel" style="overflow: scroll; width: min-content;"></div>
<div id="container1" class="container">
<div class="target"></div>
</div>
@@ -57,10 +82,19 @@
<div id="container4" class="container">
<div class="target"></div>
</div>
+<div id="container5" class="container">
+ <div class="target"></div>
+</div>
+<div id="container6" class="container">
+ <div class="target"></div>
+</div>
<script>
setup(() => assert_implements_container_queries());
const green = "rgb(0, 128, 0)";
+ const blue = "rgb(0, 0, 255)";
+ const has_non_overlay_scrollbars = document.getElementById('sentinel') != 0;
+ const scroll_color = has_non_overlay_scrollbars ? blue : green;
test(() => {
assert_equals(getComputedStyle(document.querySelector("#container1 > .target")).backgroundColor, green);
@@ -71,10 +105,18 @@
}, "Size queries with border-box sizing");
test(() => {
- assert_equals(getComputedStyle(document.querySelector("#container3 > .target")).backgroundColor, green);
+ assert_equals(getComputedStyle(document.querySelector("#container3 > .target")).backgroundColor, scroll_color);
}, "Size queries with content-box sizing and overflow:scroll");
test(() => {
- assert_equals(getComputedStyle(document.querySelector("#container4 > .target")).backgroundColor, green);
+ assert_equals(getComputedStyle(document.querySelector("#container4 > .target")).backgroundColor, scroll_color);
}, "Size queries with border-box sizing and overflow:scroll");
+
+ test(() => {
+ assert_equals(getComputedStyle(document.querySelector("#container5 > .target")).backgroundColor, scroll_color);
+ }, "Size queries with content-box sizing and scrollbar-gutter:stable");
+
+ test(() => {
+ assert_equals(getComputedStyle(document.querySelector("#container6 > .target")).backgroundColor, scroll_color);
+ }, "Size queries with border-box sizing and scrollbar-gutter:stable");
</script>
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/scrollbar-container-units-block-ref.html b/tests/wpt/tests/css/css-conditional/container-queries/scrollbar-container-units-block-ref.html
new file mode 100644
index 00000000000..0d64f07f4a5
--- /dev/null
+++ b/tests/wpt/tests/css/css-conditional/container-queries/scrollbar-container-units-block-ref.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<style>
+.container {
+ display: inline-block;
+ border: solid 3px cornflowerblue;
+ width: 100px;
+ height: 100px;
+ container-type: size;
+}
+div > div {
+ box-sizing: border-box;
+ width: 200px;
+ height: 100%;
+ border: solid 10px orange;
+}
+</style>
+<div class="container" style="overflow-x: scroll;">
+ <div></div>
+</div>
+<div class="container" style="overflow-x: auto;">
+ <div style="height: 100px;"></div>
+</div>
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/scrollbar-container-units-block.html b/tests/wpt/tests/css/css-conditional/container-queries/scrollbar-container-units-block.html
new file mode 100644
index 00000000000..aabc8063573
--- /dev/null
+++ b/tests/wpt/tests/css/css-conditional/container-queries/scrollbar-container-units-block.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/10043#issuecomment-2165291421">
+<link rel="match" href="scrollbar-container-units-block-ref.html">
+<style>
+.container {
+ display: inline-block;
+ border: solid 3px cornflowerblue;
+ width: 100px;
+ height: 100px;
+ container-type: size;
+}
+div > div {
+ box-sizing: border-box;
+ width: 200px;
+ height: 100cqh;
+ border: solid 10px orange;
+}
+</style>
+<div class="container" style="overflow-x: scroll;">
+ <div></div>
+</div>
+<div class="container" style="overflow-x: auto;">
+ <div></div>
+</div>
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/scrollbar-container-units-inline-ref.html b/tests/wpt/tests/css/css-conditional/container-queries/scrollbar-container-units-inline-ref.html
new file mode 100644
index 00000000000..bd9c0966856
--- /dev/null
+++ b/tests/wpt/tests/css/css-conditional/container-queries/scrollbar-container-units-inline-ref.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+<style>
+.container {
+ display: inline-block;
+ border: solid 3px cornflowerblue;
+ width: 100px;
+ height: 100px;
+ container-type: inline-size;
+}
+div > div {
+ box-sizing: border-box;
+ width: 100%;
+ height: 200px;
+ border: solid 10px orange;
+}
+</style>
+<div class="container" style="overflow-y: scroll;">
+ <div></div>
+</div>
+<div class="container" style="overflow-y: auto;">
+ <div style="width: 100px;"></div>
+</div>
+<div class="container" style="overflow-y: auto; scrollbar-gutter: stable;">
+ <div></div>
+</div>
+<div class="container" style="overflow-y: auto; scrollbar-gutter: stable;">
+ <div style="height: 50px;"></div>
+</div>
diff --git a/tests/wpt/tests/css/css-conditional/container-queries/scrollbar-container-units-inline.html b/tests/wpt/tests/css/css-conditional/container-queries/scrollbar-container-units-inline.html
new file mode 100644
index 00000000000..794ae9441c0
--- /dev/null
+++ b/tests/wpt/tests/css/css-conditional/container-queries/scrollbar-container-units-inline.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/10043#issuecomment-2165291421">
+<link rel="match" href="scrollbar-container-units-inline-ref.html">
+<style>
+.container {
+ display: inline-block;
+ border: solid 3px cornflowerblue;
+ width: 100px;
+ height: 100px;
+ container-type: inline-size;
+}
+div > div {
+ box-sizing: border-box;
+ width: 100cqw;
+ height: 200px;
+ border: solid 10px orange;
+}
+</style>
+<div class="container" style="overflow-y: scroll;">
+ <div></div>
+</div>
+<div class="container" style="overflow-y: auto;">
+ <div></div>
+</div>
+<div class="container" style="overflow-y: auto; scrollbar-gutter: stable;">
+ <div></div>
+</div>
+<div class="container" style="overflow-y: auto; scrollbar-gutter: stable;">
+ <div style="height: 50px;"></div>
+</div>
diff --git a/tests/wpt/tests/css/css-contain/contain-chrome-thcrash-001.html b/tests/wpt/tests/css/css-contain/contain-chrome-thcrash-001.html
index c7c03bca106..586c89428a1 100644
--- a/tests/wpt/tests/css/css-contain/contain-chrome-thcrash-001.html
+++ b/tests/wpt/tests/css/css-contain/contain-chrome-thcrash-001.html
@@ -14,7 +14,7 @@
margin-bottom: 39%;
}
#target {
- -webkit-appearance: push-button;
+ -webkit-appearance: button;
}
</style>
<output id="target">text</output>
diff --git a/tests/wpt/tests/css/css-contain/content-visibility/content-visibility-anchor-positioning-007.html b/tests/wpt/tests/css/css-contain/content-visibility/content-visibility-anchor-positioning-007.html
index 988caad79a6..69e7f6f53e6 100644
--- a/tests/wpt/tests/css/css-contain/content-visibility/content-visibility-anchor-positioning-007.html
+++ b/tests/wpt/tests/css/css-contain/content-visibility/content-visibility-anchor-positioning-007.html
@@ -40,7 +40,7 @@
#positioned {
position: absolute;
right: anchor(--a1 left);
- position-try-options: --foo;
+ position-try: --foo;
}
</style>
diff --git a/tests/wpt/tests/css/css-contain/content-visibility/content-visibility-auto-state-changed.html b/tests/wpt/tests/css/css-contain/content-visibility/content-visibility-auto-state-changed.html
index 0333c052e4a..6a14470c0f4 100644
--- a/tests/wpt/tests/css/css-contain/content-visibility/content-visibility-auto-state-changed.html
+++ b/tests/wpt/tests/css/css-contain/content-visibility/content-visibility-auto-state-changed.html
@@ -24,16 +24,22 @@
<script>
let contentattrfired = false;
+let contentattrfiredonsvg = false;
function contentattrDidFire() {
contentattrfired = true;
}
+function contentattrDidFireOnSvg() {
+ contentattrfiredonsvg = true;
+}
+
</script>
<div id=upper></div>
<div id=attrtest></div>
<div id=contentattrtest oncontentvisibilityautostatechange="contentattrDidFire()" class=auto></div>
+<svg id="svgcontentattrtest" oncontentvisibilityautostatechange="contentattrDidFireOnSvg()" class="auto"></svg>
<div class=spacer></div>
<div id=middle></div>
<div class=spacer></div>
@@ -83,6 +89,12 @@ promise_test(async t => {
assert_true(contentattrfired, "contentattrfired");
}, "ContentVisibilityAutoStateChange content attribute test");
+
+promise_test(async t => {
+ await waitForAtLeastOneFrame();
+ assert_true(contentattrfiredonsvg, "contentattrfiredonsvg");
+}, "ContentVisibilityAutoStateChange content attribute test on svg");
+
promise_test(t => new Promise(async (resolve, reject) => {
await new Promise((waited, _) => {
requestAnimationFrame(() => requestAnimationFrame(waited));
diff --git a/tests/wpt/tests/css/css-contain/content-visibility/crashtests/fieldset.html b/tests/wpt/tests/css/css-contain/content-visibility/crashtests/fieldset.html
new file mode 100644
index 00000000000..3d7b2486e2e
--- /dev/null
+++ b/tests/wpt/tests/css/css-contain/content-visibility/crashtests/fieldset.html
@@ -0,0 +1,6 @@
+<!DOCTYPE html>
+<span></span>
+<fieldset style="content-visibility: auto;">
+ <marquee style="content-visibility: auto;"></marquee>
+</fieldset>
+text
diff --git a/tests/wpt/tests/css/css-display/parsing/tentative/display-computed.html b/tests/wpt/tests/css/css-display/parsing/tentative/display-computed.html
new file mode 100644
index 00000000000..50c8f0a5388
--- /dev/null
+++ b/tests/wpt/tests/css/css-display/parsing/tentative/display-computed.html
@@ -0,0 +1,42 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Display: getComputedStyle().display</title>
+<link rel="author" title="Ethan Jimenez" href="mailto:ethavar@microsoft.com">
+<link rel="help" href="https://tabatkins.github.io/specs/css-masonry/#masonry-containers">
+<meta name="assert" content="position and float can change display computed value.">
+<meta name="assert" content="display computed value is otherwise as specified.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/computed-testcommon.js"></script>
+</head>
+<body>
+<div id="target"></div>
+<script>
+'use strict';
+
+// https://tabatkins.github.io/specs/css-masonry/#masonry-containers
+test_computed_value("display", "masonry");
+test_computed_value("display", "inline-masonry");
+
+// https://www.w3.org/TR/CSS2/visuren.html#dis-pos-flo
+function test_display_affected(property, value) {
+ const target = document.getElementById('target');
+ test(() => {
+ target.style[property] = value;
+ target.style.display = 'inline-masonry';
+ assert_equals(getComputedStyle(target).display, 'masonry', 'inline-masonry -> masonry');
+
+ target.style[property] = '';
+ target.style.display = '';
+ }, property + ' ' + value + ' affects computed display');
+}
+
+test_display_affected("position", "absolute");
+test_display_affected("position", "fixed");
+test_display_affected("float", "left");
+test_display_affected("float", "right");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-display/parsing/tentative/display-valid.html b/tests/wpt/tests/css/css-display/parsing/tentative/display-valid.html
new file mode 100644
index 00000000000..0bfdbc671d2
--- /dev/null
+++ b/tests/wpt/tests/css/css-display/parsing/tentative/display-valid.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Display: Parsing display with valid values</title>
+<link rel="author" title="Ethan Jimenez" href="mailto:ethavar@microsoft.com">
+<link rel="help" href="https://tabatkins.github.io/specs/css-masonry/#masonry-containers">
+<meta name="assert" content="display supports the new values 'masonry | inline-masonry'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+// https://tabatkins.github.io/specs/css-masonry/#masonry-containers
+test_valid_value("display", "masonry");
+test_valid_value("display", "inline-masonry");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-flexbox/animation/flex-basis-content-crash.html b/tests/wpt/tests/css/css-flexbox/animation/flex-basis-content-crash.html
new file mode 100644
index 00000000000..6c691b987f9
--- /dev/null
+++ b/tests/wpt/tests/css/css-flexbox/animation/flex-basis-content-crash.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html class="test-wait">
+<body>
+<textarea id="target"></textarea>
+<!-- crbug.com/ 356194015 -->
+<script>
+ const target = document.getElementById('target');
+ const anim = target.animate({ flexBasis: ['content', 'content'] },
+ { duration: 1000 });
+ anim.ready.then(() => {
+ document.documentElement.classList.remove('test-wait');
+ });
+</script>
+</body>
diff --git a/tests/wpt/tests/css/css-flexbox/flex-item-max-height-min-content.html b/tests/wpt/tests/css/css-flexbox/flex-item-max-height-min-content.html
new file mode 100644
index 00000000000..bf2bc67453d
--- /dev/null
+++ b/tests/wpt/tests/css/css-flexbox/flex-item-max-height-min-content.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<link rel="match" href="../reference/ref-filled-green-100px-square-only.html">
+<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/3973">
+<p>Test passes if there is a filled green square.</p>
+<div style="display: flex; flex-direction: column; width: 100px; height: 200px;">
+ <div style="max-height: min-content; flex-basis: 200px; background: green;">
+ <div style="height: 100px;"></div>
+ </div>
+</div>
diff --git a/tests/wpt/tests/css/css-flexbox/flex-item-max-width-min-content.html b/tests/wpt/tests/css/css-flexbox/flex-item-max-width-min-content.html
new file mode 100644
index 00000000000..dc5ce0523a6
--- /dev/null
+++ b/tests/wpt/tests/css/css-flexbox/flex-item-max-width-min-content.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<link rel="match" href="../reference/ref-filled-green-100px-square-only.html">
+<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/3973">
+<p>Test passes if there is a filled green square.</p>
+<div style="display: flex; height: 100px; width: 200px;">
+ <div style="max-width: min-content; flex-basis: 200px; background: green; writing-mode: vertical-rl;">
+ <div style="width: 100px;"></div>
+ </div>
+</div>
diff --git a/tests/wpt/tests/css/css-flexbox/flex-item-min-height-min-content.html b/tests/wpt/tests/css/css-flexbox/flex-item-min-height-min-content.html
new file mode 100644
index 00000000000..7bb06a8ef7b
--- /dev/null
+++ b/tests/wpt/tests/css/css-flexbox/flex-item-min-height-min-content.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<link rel="match" href="../reference/ref-filled-green-100px-square-only.html">
+<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/3973">
+<p>Test passes if there is a filled green square.</p>
+<div style="display: flex; flex-direction: column; width: 100px; height: 0px;">
+ <div style="min-height: min-content; flex-basis: 0; background: green;">
+ <div style="height: 100px;"></div>
+ </div>
+</div>
diff --git a/tests/wpt/tests/css/css-flexbox/flex-item-min-width-min-content.html b/tests/wpt/tests/css/css-flexbox/flex-item-min-width-min-content.html
new file mode 100644
index 00000000000..ee232956f27
--- /dev/null
+++ b/tests/wpt/tests/css/css-flexbox/flex-item-min-width-min-content.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<link rel="match" href="../reference/ref-filled-green-100px-square-only.html">
+<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/3973">
+<p>Test passes if there is a filled green square.</p>
+<div style="display: flex; height: 100px; width: 0px;">
+ <div style="min-width: min-content; flex-basis: 0; background: green; writing-mode: vertical-rl;">
+ <div style="width: 100px;"></div>
+ </div>
+</div>
diff --git a/tests/wpt/tests/css/css-flexbox/flexbox-writing-mode-slr-ref.html b/tests/wpt/tests/css/css-flexbox/flexbox-writing-mode-slr-ref.html
new file mode 100644
index 00000000000..2ca10b3e0ee
--- /dev/null
+++ b/tests/wpt/tests/css/css-flexbox/flexbox-writing-mode-slr-ref.html
@@ -0,0 +1,76 @@
+<!DOCTYPE html>
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html>
+<head>
+ <title>CSS Test: Try various flex-flow values, with 'direction: ltr' and 'writing-mode: sideways-lr'</title>
+ <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com">
+ <link rel="help" href="http://www.w3.org/TR/css-flexbox-1/#propdef-flex-direction">
+ <meta charset="utf-8">
+ <style>
+ .flexContainer {
+ display: flex;
+ width: 40px;
+ height: 30px;
+ border: 1px solid gray;
+ margin-bottom: 5px;
+ flex-flow: row wrap;
+ }
+ .flexContainer > * {
+ width: 20px;
+ height: 15px;
+ }
+ .item1 {
+ /* Note: flex items are ordered as "CMYK": cyan, magenta, yellow, black */
+ background: cyan;
+ }
+ .item2 {
+ background: magenta;
+ }
+ .item3 {
+ background: yellow;
+ }
+ .item4 {
+ background: black;
+ }
+ </style>
+</head>
+<body>
+ <div class="flexContainer">
+ <div class="item2"></div><div class="item4"></div>
+ <div class="item1"></div><div class="item3"></div>
+ </div>
+ <div class="flexContainer">
+ <div class="item4"></div><div class="item2"></div>
+ <div class="item3"></div><div class="item1"></div>
+ </div>
+ <div class="flexContainer">
+ <div class="item1"></div><div class="item3"></div>
+ <div class="item2"></div><div class="item4"></div>
+ </div>
+ <div class="flexContainer">
+ <div class="item3"></div><div class="item1"></div>
+ <div class="item4"></div><div class="item2"></div>
+ </div>
+
+ <div class="flexContainer">
+ <div class="item3"></div><div class="item4"></div>
+ <div class="item1"></div><div class="item2"></div>
+ </div>
+ <div class="flexContainer">
+ <div class="item1"></div><div class="item2"></div>
+ <div class="item3"></div><div class="item4"></div>
+ </div>
+ <div class="flexContainer">
+ <div class="item4"></div><div class="item3"></div>
+ <div class="item2"></div><div class="item1"></div>
+ </div>
+ <div class="flexContainer">
+ <div class="item2"></div><div class="item1"></div>
+ <div class="item4"></div><div class="item3"></div>
+ </div>
+
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-flexbox/flexbox-writing-mode-slr-row-mix-ref.html b/tests/wpt/tests/css/css-flexbox/flexbox-writing-mode-slr-row-mix-ref.html
new file mode 100644
index 00000000000..6f4c1df339c
--- /dev/null
+++ b/tests/wpt/tests/css/css-flexbox/flexbox-writing-mode-slr-row-mix-ref.html
@@ -0,0 +1,79 @@
+<!DOCTYPE html>
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html>
+<head>
+ <title>CSS Reftest Reference</title>
+ <meta charset="utf-8">
+ <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com">
+ <link rel="stylesheet" type="text/css" href="/fonts/ahem.css">
+ <style>
+ .container {
+ display: flex;
+ align-items: start;
+ float: left;
+ border: 2px solid purple;
+ padding: 2px;
+ margin-bottom: 2em;
+ height: 500px;
+ width: 150px;
+ }
+
+ span {
+ display: block;
+ background: lightgrey;
+ border: 2px solid black;
+ margin: 11px 13px 17px 7px;
+ inline-size: 6px;
+ }
+
+ .small { font: 12px Ahem; }
+ .big { font: 20px Ahem; }
+
+ .hl { writing-mode: horizontal-tb; direction: ltr; }
+ .hr { writing-mode: horizontal-tb; direction: rtl; }
+ .sl { writing-mode: sideways-lr; direction: ltr; }
+ .sr { writing-mode: sideways-rl; direction: ltr; }
+ .sl_rtl { writing-mode: sideways-lr; direction: rtl; }
+ .sr_rtl { writing-mode: sideways-rl; direction: rtl; }
+ </style>
+</head>
+<body>
+
+<div class="container" style="flex-flow: column-reverse">
+ <span class="hl small">p b c</span>
+ <span class="hl big">p e</span>
+ <span class="hr small">p b c</span>
+ <span class="hr big">p e</span>
+ <span class="sl small">p b c</span>
+ <span class="sl big">p e</span>
+</div>
+<div class="container" style="flex-flow: column-reverse">
+ <span class="sr small">p b c</span>
+ <span class="sr big">p e</span>
+ <span class="sl_rtl small">p b c</span>
+ <span class="sl_rtl big">p e</span>
+ <span class="sr_rtl small">p b c</span>
+ <span class="sr_rtl big">p e</span>
+</div>
+
+<div class="container" style="flex-flow: column">
+ <span class="hl small">p b c</span>
+ <span class="hl big">p e</span>
+ <span class="hr small">p b c</span>
+ <span class="hr big">p e</span>
+ <span class="sl small">p b c</span>
+ <span class="sl big">p e</span>
+</div>
+<div class="container" style="flex-flow: column">
+ <span class="sr small">p b c</span>
+ <span class="sr big">p e</span>
+ <span class="sl_rtl small">p b c</span>
+ <span class="sl_rtl big">p e</span>
+ <span class="sr_rtl small">p b c</span>
+ <span class="sr_rtl big">p e</span>
+</div>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-flexbox/flexbox-writing-mode-slr-row-mix.html b/tests/wpt/tests/css/css-flexbox/flexbox-writing-mode-slr-row-mix.html
new file mode 100644
index 00000000000..a4d841f3b31
--- /dev/null
+++ b/tests/wpt/tests/css/css-flexbox/flexbox-writing-mode-slr-row-mix.html
@@ -0,0 +1,87 @@
+<!DOCTYPE html>
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html>
+<head>
+ <title>
+ CSS Test: Testing a mix of flex items with various values for
+ 'writing-mode' / 'direction' in a vertical row-oriented flex container.
+ </title>
+ <meta charset="utf-8">
+ <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com">
+ <link rel="help" href="https://www.w3.org/TR/css-flexbox-1/#flex-direction-property">
+ <link rel="help" href="https://www.w3.org/TR/css-writing-modes-3/#propdef-writing-mode">
+ <link rel="match" href="flexbox-writing-mode-slr-row-mix-ref.html">
+ <link rel="stylesheet" type="text/css" href="/fonts/ahem.css">
+ <style>
+ .container {
+ display: flex;
+ flex-direction: row;
+ align-items: start;
+ float: left;
+ border: 2px solid purple;
+ padding: 2px;
+ margin-bottom: 2em;
+ height: 500px;
+ width: 150px;
+ }
+
+ span {
+ display: block;
+ background: lightgrey;
+ border: 2px solid black;
+ margin: 11px 13px 17px 7px;
+ inline-size: 6px;
+ }
+
+ .small { font: 12px Ahem; }
+ .big { font: 20px Ahem; }
+
+ .hl { writing-mode: horizontal-tb; direction: ltr; }
+ .hr { writing-mode: horizontal-tb; direction: rtl; }
+ .sl { writing-mode: sideways-lr; direction: ltr; }
+ .sr { writing-mode: sideways-rl; direction: ltr; }
+ .sl_rtl { writing-mode: sideways-lr; direction: rtl; }
+ .sr_rtl { writing-mode: sideways-rl; direction: rtl; }
+ </style>
+</head>
+<body>
+
+<div class="container sl">
+ <span class="hl small">p b c</span>
+ <span class="hl big">p e</span>
+ <span class="hr small">p b c</span>
+ <span class="hr big">p e</span>
+ <span class="sl small">p b c</span>
+ <span class="sl big">p e</span>
+</div>
+<div class="container sl">
+ <span class="sr small">p b c</span>
+ <span class="sr big">p e</span>
+ <span class="sl_rtl small">p b c</span>
+ <span class="sl_rtl big">p e</span>
+ <span class="sr_rtl small">p b c</span>
+ <span class="sr_rtl big">p e</span>
+</div>
+
+<div class="container sl_rtl">
+ <span class="hl small">p b c</span>
+ <span class="hl big">p e</span>
+ <span class="hr small">p b c</span>
+ <span class="hr big">p e</span>
+ <span class="sl small">p b c</span>
+ <span class="sl big">p e</span>
+</div>
+<div class="container sl_rtl">
+ <span class="sr small">p b c</span>
+ <span class="sr big">p e</span>
+ <span class="sl_rtl small">p b c</span>
+ <span class="sl_rtl big">p e</span>
+ <span class="sr_rtl small">p b c</span>
+ <span class="sr_rtl big">p e</span>
+</div>
+
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-flexbox/flexbox-writing-mode-slr-rtl.html b/tests/wpt/tests/css/css-flexbox/flexbox-writing-mode-slr-rtl.html
new file mode 100644
index 00000000000..8bc0f54819b
--- /dev/null
+++ b/tests/wpt/tests/css/css-flexbox/flexbox-writing-mode-slr-rtl.html
@@ -0,0 +1,78 @@
+<!DOCTYPE html>
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html>
+<head>
+ <title>CSS Test: Try various flex-flow values, with 'direction: rtl' and 'writing-mode: sideways-lr'</title>
+ <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com">
+ <link rel="help" href="http://www.w3.org/TR/css-flexbox-1/#propdef-flex-direction">
+ <link rel="match" href="flexbox-writing-mode-003-ref.html">
+ <meta charset="utf-8">
+ <style>
+ .flexContainer {
+ display: flex;
+ width: 40px;
+ height: 30px;
+ border: 1px solid gray;
+ margin-bottom: 5px;
+ direction: rtl;
+ writing-mode: sideways-lr;
+ }
+ .flexContainer > * {
+ width: 20px;
+ height: 15px;
+ }
+ .item1 {
+ /* Note: flex items are ordered as "CMYK": cyan, magenta, yellow, black */
+ background: cyan;
+ }
+ .item2 {
+ background: magenta;
+ }
+ .item3 {
+ background: yellow;
+ }
+ .item4 {
+ background: black;
+ }
+ </style>
+</head>
+<body>
+ <div class="flexContainer" style="flex-flow: row wrap">
+ <div class="item1"></div><div class="item2"></div>
+ <div class="item3"></div><div class="item4"></div>
+ </div>
+ <div class="flexContainer" style="flex-flow: row wrap-reverse">
+ <div class="item1"></div><div class="item2"></div>
+ <div class="item3"></div><div class="item4"></div>
+ </div>
+ <div class="flexContainer" style="flex-flow: row-reverse wrap">
+ <div class="item1"></div><div class="item2"></div>
+ <div class="item3"></div><div class="item4"></div>
+ </div>
+ <div class="flexContainer" style="flex-flow: row-reverse wrap-reverse">
+ <div class="item1"></div><div class="item2"></div>
+ <div class="item3"></div><div class="item4"></div>
+ </div>
+
+ <div class="flexContainer" style="flex-flow: column wrap">
+ <div class="item1"></div><div class="item2"></div>
+ <div class="item3"></div><div class="item4"></div>
+ </div>
+ <div class="flexContainer" style="flex-flow: column wrap-reverse">
+ <div class="item1"></div><div class="item2"></div>
+ <div class="item3"></div><div class="item4"></div>
+ </div>
+ <div class="flexContainer" style="flex-flow: column-reverse wrap">
+ <div class="item1"></div><div class="item2"></div>
+ <div class="item3"></div><div class="item4"></div>
+ </div>
+ <div class="flexContainer" style="flex-flow: column-reverse wrap-reverse">
+ <div class="item1"></div><div class="item2"></div>
+ <div class="item3"></div><div class="item4"></div>
+ </div>
+
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-flexbox/flexbox-writing-mode-slr.html b/tests/wpt/tests/css/css-flexbox/flexbox-writing-mode-slr.html
new file mode 100644
index 00000000000..4eb27c4e457
--- /dev/null
+++ b/tests/wpt/tests/css/css-flexbox/flexbox-writing-mode-slr.html
@@ -0,0 +1,78 @@
+<!DOCTYPE html>
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html>
+<head>
+ <title>CSS Test: Try various flex-flow values, with 'direction: ltr' and 'writing-mode: sideways-lr'</title>
+ <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com">
+ <link rel="help" href="http://www.w3.org/TR/css-flexbox-1/#propdef-flex-direction">
+ <link rel="match" href="flexbox-writing-mode-slr-ref.html">
+ <meta charset="utf-8">
+ <style>
+ .flexContainer {
+ display: flex;
+ width: 40px;
+ height: 30px;
+ border: 1px solid gray;
+ margin-bottom: 5px;
+ direction: ltr;
+ writing-mode: sideways-lr;
+ }
+ .flexContainer > * {
+ width: 20px;
+ height: 15px;
+ }
+ .item1 {
+ /* Note: flex items are ordered as "CMYK": cyan, magenta, yellow, black */
+ background: cyan;
+ }
+ .item2 {
+ background: magenta;
+ }
+ .item3 {
+ background: yellow;
+ }
+ .item4 {
+ background: black;
+ }
+ </style>
+</head>
+<body>
+ <div class="flexContainer" style="flex-flow: row wrap">
+ <div class="item1"></div><div class="item2"></div>
+ <div class="item3"></div><div class="item4"></div>
+ </div>
+ <div class="flexContainer" style="flex-flow: row wrap-reverse">
+ <div class="item1"></div><div class="item2"></div>
+ <div class="item3"></div><div class="item4"></div>
+ </div>
+ <div class="flexContainer" style="flex-flow: row-reverse wrap">
+ <div class="item1"></div><div class="item2"></div>
+ <div class="item3"></div><div class="item4"></div>
+ </div>
+ <div class="flexContainer" style="flex-flow: row-reverse wrap-reverse">
+ <div class="item1"></div><div class="item2"></div>
+ <div class="item3"></div><div class="item4"></div>
+ </div>
+
+ <div class="flexContainer" style="flex-flow: column wrap">
+ <div class="item1"></div><div class="item2"></div>
+ <div class="item3"></div><div class="item4"></div>
+ </div>
+ <div class="flexContainer" style="flex-flow: column wrap-reverse">
+ <div class="item1"></div><div class="item2"></div>
+ <div class="item3"></div><div class="item4"></div>
+ </div>
+ <div class="flexContainer" style="flex-flow: column-reverse wrap">
+ <div class="item1"></div><div class="item2"></div>
+ <div class="item3"></div><div class="item4"></div>
+ </div>
+ <div class="flexContainer" style="flex-flow: column-reverse wrap-reverse">
+ <div class="item1"></div><div class="item2"></div>
+ <div class="item3"></div><div class="item4"></div>
+ </div>
+
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-flexbox/flexbox-writing-mode-srl-row-mix-ref.html b/tests/wpt/tests/css/css-flexbox/flexbox-writing-mode-srl-row-mix-ref.html
new file mode 100644
index 00000000000..32eebea0ac4
--- /dev/null
+++ b/tests/wpt/tests/css/css-flexbox/flexbox-writing-mode-srl-row-mix-ref.html
@@ -0,0 +1,79 @@
+<!DOCTYPE html>
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html>
+<head>
+ <title>CSS Reftest Reference</title>
+ <meta charset="utf-8">
+ <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com">
+ <link rel="stylesheet" type="text/css" href="/fonts/ahem.css">
+ <style>
+ .container {
+ display: flex;
+ align-items: end;
+ float: left;
+ border: 2px solid purple;
+ padding: 2px;
+ margin-bottom: 2em;
+ height: 500px;
+ width: 150px;
+ }
+
+ span {
+ display: block;
+ background: lightgrey;
+ border: 2px solid black;
+ margin: 11px 13px 17px 7px;
+ inline-size: 6px;
+ }
+
+ .small { font: 12px Ahem; }
+ .big { font: 20px Ahem; }
+
+ .hl { writing-mode: horizontal-tb; direction: ltr; }
+ .hr { writing-mode: horizontal-tb; direction: rtl; }
+ .sl { writing-mode: sideways-lr; direction: ltr; }
+ .sr { writing-mode: sideways-rl; direction: ltr; }
+ .sl_rtl { writing-mode: sideways-lr; direction: rtl; }
+ .sr_rtl { writing-mode: sideways-rl; direction: rtl; }
+ </style>
+</head>
+<body>
+
+<div class="container" style="flex-flow: column">
+ <span class="hl small">p b c</span>
+ <span class="hl big">p e</span>
+ <span class="hr small">p b c</span>
+ <span class="hr big">p e</span>
+ <span class="sl small">p b c</span>
+ <span class="sl big">p e</span>
+</div>
+<div class="container" style="flex-flow: column">
+ <span class="sr small">p b c</span>
+ <span class="sr big">p e</span>
+ <span class="sl_rtl small">p b c</span>
+ <span class="sl_rtl big">p e</span>
+ <span class="sr_rtl small">p b c</span>
+ <span class="sr_rtl big">p e</span>
+</div>
+
+<div class="container" style="flex-flow: column-reverse">
+ <span class="hl small">p b c</span>
+ <span class="hl big">p e</span>
+ <span class="hr small">p b c</span>
+ <span class="hr big">p e</span>
+ <span class="sl small">p b c</span>
+ <span class="sl big">p e</span>
+</div>
+<div class="container" style="flex-flow: column-reverse">
+ <span class="sr small">p b c</span>
+ <span class="sr big">p e</span>
+ <span class="sl_rtl small">p b c</span>
+ <span class="sl_rtl big">p e</span>
+ <span class="sr_rtl small">p b c</span>
+ <span class="sr_rtl big">p e</span>
+</div>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-flexbox/flexbox-writing-mode-srl-row-mix.html b/tests/wpt/tests/css/css-flexbox/flexbox-writing-mode-srl-row-mix.html
new file mode 100644
index 00000000000..8724d9574d1
--- /dev/null
+++ b/tests/wpt/tests/css/css-flexbox/flexbox-writing-mode-srl-row-mix.html
@@ -0,0 +1,87 @@
+<!DOCTYPE html>
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html>
+<head>
+ <title>
+ CSS Test: Testing a mix of flex items with various values for
+ 'writing-mode' / 'direction' in a vertical row-oriented flex container.
+ </title>
+ <meta charset="utf-8">
+ <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com">
+ <link rel="help" href="https://www.w3.org/TR/css-flexbox-1/#flex-direction-property">
+ <link rel="help" href="https://www.w3.org/TR/css-writing-modes-3/#propdef-writing-mode">
+ <link rel="match" href="flexbox-writing-mode-srl-row-mix-ref.html">
+ <link rel="stylesheet" type="text/css" href="/fonts/ahem.css">
+ <style>
+ .container {
+ display: flex;
+ flex-direction: row;
+ align-items: start;
+ float: left;
+ border: 2px solid purple;
+ padding: 2px;
+ margin-bottom: 2em;
+ height: 500px;
+ width: 150px;
+ }
+
+ span {
+ display: block;
+ background: lightgrey;
+ border: 2px solid black;
+ margin: 11px 13px 17px 7px;
+ inline-size: 6px;
+ }
+
+ .small { font: 12px Ahem; }
+ .big { font: 20px Ahem; }
+
+ .hl { writing-mode: horizontal-tb; direction: ltr; }
+ .hr { writing-mode: horizontal-tb; direction: rtl; }
+ .sl { writing-mode: sideways-lr; direction: ltr; }
+ .sr { writing-mode: sideways-rl; direction: ltr; }
+ .sl_rtl { writing-mode: sideways-lr; direction: rtl; }
+ .sr_rtl { writing-mode: sideways-rl; direction: rtl; }
+ </style>
+</head>
+<body>
+
+<div class="container sr">
+ <span class="hl small">p b c</span>
+ <span class="hl big">p e</span>
+ <span class="hr small">p b c</span>
+ <span class="hr big">p e</span>
+ <span class="sl small">p b c</span>
+ <span class="sl big">p e</span>
+</div>
+<div class="container sr">
+ <span class="sr small">p b c</span>
+ <span class="sr big">p e</span>
+ <span class="sl_rtl small">p b c</span>
+ <span class="sl_rtl big">p e</span>
+ <span class="sr_rtl small">p b c</span>
+ <span class="sr_rtl big">p e</span>
+</div>
+
+<div class="container sr_rtl">
+ <span class="hl small">p b c</span>
+ <span class="hl big">p e</span>
+ <span class="hr small">p b c</span>
+ <span class="hr big">p e</span>
+ <span class="sl small">p b c</span>
+ <span class="sl big">p e</span>
+</div>
+<div class="container sr_rtl">
+ <span class="sr small">p b c</span>
+ <span class="sr big">p e</span>
+ <span class="sl_rtl small">p b c</span>
+ <span class="sl_rtl big">p e</span>
+ <span class="sr_rtl small">p b c</span>
+ <span class="sr_rtl big">p e</span>
+</div>
+
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-flexbox/flexbox-writing-mode-srl-rtl.html b/tests/wpt/tests/css/css-flexbox/flexbox-writing-mode-srl-rtl.html
new file mode 100644
index 00000000000..bf9936d1957
--- /dev/null
+++ b/tests/wpt/tests/css/css-flexbox/flexbox-writing-mode-srl-rtl.html
@@ -0,0 +1,78 @@
+<!DOCTYPE html>
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html>
+<head>
+ <title>CSS Test: Try various flex-flow values, with 'direction: rtl' and 'writing-mode: sideways-rl'</title>
+ <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com">
+ <link rel="help" href="http://www.w3.org/TR/css-flexbox-1/#propdef-flex-direction">
+ <link rel="match" href="flexbox-writing-mode-005-ref.html">
+ <meta charset="utf-8">
+ <style>
+ .flexContainer {
+ display: flex;
+ width: 40px;
+ height: 30px;
+ border: 1px solid gray;
+ margin-bottom: 5px;
+ direction: rtl;
+ writing-mode: sideways-rl;
+ }
+ .flexContainer > * {
+ width: 20px;
+ height: 15px;
+ }
+ .item1 {
+ /* Note: flex items are ordered as "CMYK": cyan, magenta, yellow, black */
+ background: cyan;
+ }
+ .item2 {
+ background: magenta;
+ }
+ .item3 {
+ background: yellow;
+ }
+ .item4 {
+ background: black;
+ }
+ </style>
+</head>
+<body>
+ <div class="flexContainer" style="flex-flow: row wrap">
+ <div class="item1"></div><div class="item2"></div>
+ <div class="item3"></div><div class="item4"></div>
+ </div>
+ <div class="flexContainer" style="flex-flow: row wrap-reverse">
+ <div class="item1"></div><div class="item2"></div>
+ <div class="item3"></div><div class="item4"></div>
+ </div>
+ <div class="flexContainer" style="flex-flow: row-reverse wrap">
+ <div class="item1"></div><div class="item2"></div>
+ <div class="item3"></div><div class="item4"></div>
+ </div>
+ <div class="flexContainer" style="flex-flow: row-reverse wrap-reverse">
+ <div class="item1"></div><div class="item2"></div>
+ <div class="item3"></div><div class="item4"></div>
+ </div>
+
+ <div class="flexContainer" style="flex-flow: column wrap">
+ <div class="item1"></div><div class="item2"></div>
+ <div class="item3"></div><div class="item4"></div>
+ </div>
+ <div class="flexContainer" style="flex-flow: column wrap-reverse">
+ <div class="item1"></div><div class="item2"></div>
+ <div class="item3"></div><div class="item4"></div>
+ </div>
+ <div class="flexContainer" style="flex-flow: column-reverse wrap">
+ <div class="item1"></div><div class="item2"></div>
+ <div class="item3"></div><div class="item4"></div>
+ </div>
+ <div class="flexContainer" style="flex-flow: column-reverse wrap-reverse">
+ <div class="item1"></div><div class="item2"></div>
+ <div class="item3"></div><div class="item4"></div>
+ </div>
+
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-flexbox/flexbox-writing-mode-srl.html b/tests/wpt/tests/css/css-flexbox/flexbox-writing-mode-srl.html
new file mode 100644
index 00000000000..cc2b5136df9
--- /dev/null
+++ b/tests/wpt/tests/css/css-flexbox/flexbox-writing-mode-srl.html
@@ -0,0 +1,78 @@
+<!DOCTYPE html>
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html>
+<head>
+ <title>CSS Test: Try various flex-flow values, with 'direction: ltr' and 'writing-mode: sideways-rl'</title>
+ <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com">
+ <link rel="help" href="http://www.w3.org/TR/css-flexbox-1/#propdef-flex-direction">
+ <link rel="match" href="flexbox-writing-mode-002-ref.html">
+ <meta charset="utf-8">
+ <style>
+ .flexContainer {
+ display: flex;
+ width: 40px;
+ height: 30px;
+ border: 1px solid gray;
+ margin-bottom: 5px;
+ direction: ltr;
+ writing-mode: sideways-rl;
+ }
+ .flexContainer > * {
+ width: 20px;
+ height: 15px;
+ }
+ .item1 {
+ /* Note: flex items are ordered as "CMYK": cyan, magenta, yellow, black */
+ background: cyan;
+ }
+ .item2 {
+ background: magenta;
+ }
+ .item3 {
+ background: yellow;
+ }
+ .item4 {
+ background: black;
+ }
+ </style>
+</head>
+<body>
+ <div class="flexContainer" style="flex-flow: row wrap">
+ <div class="item1"></div><div class="item2"></div>
+ <div class="item3"></div><div class="item4"></div>
+ </div>
+ <div class="flexContainer" style="flex-flow: row wrap-reverse">
+ <div class="item1"></div><div class="item2"></div>
+ <div class="item3"></div><div class="item4"></div>
+ </div>
+ <div class="flexContainer" style="flex-flow: row-reverse wrap">
+ <div class="item1"></div><div class="item2"></div>
+ <div class="item3"></div><div class="item4"></div>
+ </div>
+ <div class="flexContainer" style="flex-flow: row-reverse wrap-reverse">
+ <div class="item1"></div><div class="item2"></div>
+ <div class="item3"></div><div class="item4"></div>
+ </div>
+
+ <div class="flexContainer" style="flex-flow: column wrap">
+ <div class="item1"></div><div class="item2"></div>
+ <div class="item3"></div><div class="item4"></div>
+ </div>
+ <div class="flexContainer" style="flex-flow: column wrap-reverse">
+ <div class="item1"></div><div class="item2"></div>
+ <div class="item3"></div><div class="item4"></div>
+ </div>
+ <div class="flexContainer" style="flex-flow: column-reverse wrap">
+ <div class="item1"></div><div class="item2"></div>
+ <div class="item3"></div><div class="item4"></div>
+ </div>
+ <div class="flexContainer" style="flex-flow: column-reverse wrap-reverse">
+ <div class="item1"></div><div class="item2"></div>
+ <div class="item3"></div><div class="item4"></div>
+ </div>
+
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-fonts/font-size-adjust-012.html b/tests/wpt/tests/css/css-fonts/font-size-adjust-012.html
index 197a1809a89..8052ac64008 100644
--- a/tests/wpt/tests/css/css-fonts/font-size-adjust-012.html
+++ b/tests/wpt/tests/css/css-fonts/font-size-adjust-012.html
@@ -5,7 +5,7 @@
<title>CSS Test: font-size-adjust property</title>
<link rel="match" href="font-size-adjust-012-ref.html">
<link rel="help" href="https://www.w3.org/TR/css-fonts-4/#font-size-adjust-prop">
- <meta name="fuzzy" content="maxDifference=0-120;totalPixels=0-160">
+ <meta name="fuzzy" content="maxDifference=0-130;totalPixels=0-350">
<style>
@font-face {
font-family: 'ahem-ex-500';
diff --git a/tests/wpt/tests/css/css-fonts/font-size-adjust-013.html b/tests/wpt/tests/css/css-fonts/font-size-adjust-013.html
index bd594564627..5fab02732eb 100644
--- a/tests/wpt/tests/css/css-fonts/font-size-adjust-013.html
+++ b/tests/wpt/tests/css/css-fonts/font-size-adjust-013.html
@@ -6,7 +6,7 @@
<link rel="match" href="font-size-adjust-013-ref.html">
<link rel="help" href="https://www.w3.org/TR/css-fonts-5/#font-size-adjust-prop">
<meta name="assert" content="Test whether from-font automatically determines a font-size-adjust value based on the primary font.">
- <meta name="fuzzy" content="maxDifference=0-120;totalPixels=0-160">
+ <meta name="fuzzy" content="maxDifference=0-130;totalPixels=0-350">
<style>
@font-face {
font-family: 'primary-font-ahem-ex-500';
diff --git a/tests/wpt/tests/css/css-fonts/parsing/font-face-size-adjust.html b/tests/wpt/tests/css/css-fonts/parsing/font-face-size-adjust.html
new file mode 100644
index 00000000000..01a551d350d
--- /dev/null
+++ b/tests/wpt/tests/css/css-fonts/parsing/font-face-size-adjust.html
@@ -0,0 +1,31 @@
+<!DOCTYPE html>
+<title>CSS Fonts 5 test: parsing the size-adjust descriptor</title>
+<link rel="help" href="https://www.w3.org/TR/css-fonts-5/#size-adjust-desc">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style id="testStyle">
+</style>
+<script>
+ const sheet = testStyle.sheet;
+ // size-adjust grammar : <percentage [0,∞]>
+ tests = [
+ { sizeAdjust: '100%', valid: true },
+ { sizeAdjust: '0%', valid: true },
+ { sizeAdjust: '110%', valid: true },
+ { sizeAdjust: '100000000000%', valid: true },
+ { sizeAdjust: '-100%', valid: false },
+ { sizeAdjust: '-1%', valid: false },
+ ];
+
+ for (let t of tests) {
+ test(() => {
+ assert_equals(sheet.cssRules.length, 0, "testSheet should initially be empty");
+ sheet.insertRule("@font-face { size-adjust: " + t.sizeAdjust + "}");
+ try {
+ assert_equals(sheet.cssRules[0].style.getPropertyValue("size-adjust") != "", t.valid);
+ } finally {
+ sheet.deleteRule(0);
+ }
+ }, "Check that size-adjust: " + t.sizeAdjust + " is " + (t.valid ? "valid" : "invalid"));
+ }
+</script>
diff --git a/tests/wpt/tests/css/css-fonts/synthetic-bold-space-width-ref.html b/tests/wpt/tests/css/css-fonts/synthetic-bold-space-width-ref.html
new file mode 100644
index 00000000000..6345defe681
--- /dev/null
+++ b/tests/wpt/tests/css/css-fonts/synthetic-bold-space-width-ref.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html lang="en">
+<meta charset="utf-8">
+<link rel="author" title="Myles C. Maxfield" href="mmaxfield@apple.com">
+<style>
+pre {
+ font: bold 12px 'Monaco';
+}
+</style>
+<body>
+<p>This test passes if space characters' advances are expanded by the synthetic bold offset.</p>
+<pre style="font-feature-settings: 'ABCD';"><strong>hi asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf</strong></pre>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-fonts/synthetic-bold-space-width.html b/tests/wpt/tests/css/css-fonts/synthetic-bold-space-width.html
new file mode 100644
index 00000000000..ecb0dd1c912
--- /dev/null
+++ b/tests/wpt/tests/css/css-fonts/synthetic-bold-space-width.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html lang="en">
+<meta charset="utf-8">
+<link rel="author" title="Myles C. Maxfield" href="mmaxfield@apple.com">
+<link rel="help" href="https://drafts.csswg.org/css-fonts/#missing-weights">
+<link rel="match" href="synthetic-bold-space-width-ref.html">
+<style>
+pre {
+ font: bold 12px 'Monaco';
+}
+</style>
+<body>
+<p>This test passes if space characters' advances are expanded by the synthetic bold offset.</p>
+<pre><strong>hi asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf asdf</strong></pre>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-001.html b/tests/wpt/tests/css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-001.html
index 0d3a556f40c..e378b36d388 100644
--- a/tests/wpt/tests/css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-001.html
+++ b/tests/wpt/tests/css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-001.html
@@ -19,6 +19,7 @@
text-orientation: sideways;
grid: 200px 100px / 100px 200px;
font-family: Ahem;
+ line-height: 1;
}
.bigFont { font-size: 50px; }
.height25 { height: 25px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-002.html b/tests/wpt/tests/css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-002.html
index c20489e9a8b..49f983bb011 100644
--- a/tests/wpt/tests/css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-002.html
+++ b/tests/wpt/tests/css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-002.html
@@ -18,6 +18,7 @@
text-orientation: sideways;
grid: 200px 100px / 100px 200px;
font-family: Ahem;
+ line-height: 1;
}
.bigFont { font-size: 50px; }
.height25 { height: 25px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-003.html b/tests/wpt/tests/css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-003.html
index 10a9adb9ff2..de17f70feb8 100644
--- a/tests/wpt/tests/css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-003.html
+++ b/tests/wpt/tests/css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-003.html
@@ -18,6 +18,7 @@
text-orientation: sideways;
grid: 200px 100px / 100px 200px;
font-family: Ahem;
+ line-height: 1;
}
.bigFont { font-size: 50px; }
.height25 { height: 25px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-004.html b/tests/wpt/tests/css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-004.html
index 8c6d7abe4ed..b48e112fa6a 100644
--- a/tests/wpt/tests/css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-004.html
+++ b/tests/wpt/tests/css/css-grid/alignment/grid-column-axis-self-baseline-synthesized-004.html
@@ -19,6 +19,7 @@
text-orientation: sideways;
grid: auto auto / 100px 200px;
font-family: Ahem;
+ line-height: 1;
}
.bigFont { font-size: 50px; }
.height25 { height: 25px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-001.html b/tests/wpt/tests/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-001.html
index c9e630cbac4..43a57a20069 100644
--- a/tests/wpt/tests/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-001.html
+++ b/tests/wpt/tests/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-001.html
@@ -19,6 +19,7 @@
text-orientation: sideways;
grid: 100px 200px / 200px 100px;
font-family: Ahem;
+ line-height: 1;
}
.bigFont { font-size: 50px; }
.height25 { height: 25px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-002.html b/tests/wpt/tests/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-002.html
index e96f8da6e72..b1058a2aea2 100644
--- a/tests/wpt/tests/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-002.html
+++ b/tests/wpt/tests/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-002.html
@@ -19,6 +19,7 @@
text-orientation: sideways;
grid: 100px 200px / 200px 100px;
font-family: Ahem;
+ line-height: 1;
}
.bigFont { font-size: 50px; }
.height25 { height: 25px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-003.html b/tests/wpt/tests/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-003.html
index 19a4f5193bf..79c056f46fc 100644
--- a/tests/wpt/tests/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-003.html
+++ b/tests/wpt/tests/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-003.html
@@ -19,6 +19,7 @@
text-orientation: sideways;
grid: 100px 200px / 200px 100px;
font-family: Ahem;
+ line-height: 1;
}
.bigFont { font-size: 50px; }
.height25 { height: 25px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-004.html b/tests/wpt/tests/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-004.html
index f3f70790c98..87803776055 100644
--- a/tests/wpt/tests/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-004.html
+++ b/tests/wpt/tests/css/css-grid/alignment/grid-row-axis-self-baseline-synthesized-004.html
@@ -19,6 +19,7 @@
text-orientation: sideways;
grid: 100px 200px / auto auto;
font-family: Ahem;
+ line-height: 1;
}
.bigFont { font-size: 50px; }
.height25 { height: 25px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-001-ref.html b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-001-ref.html
index c85fd77ef91..2253b24ac07 100644
--- a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-001-ref.html
+++ b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-001-ref.html
@@ -11,6 +11,7 @@ body { margin: 0; }
margin: 5px;
text-orientation: sideways;
font-family: Ahem;
+ line-height: 1;
}
.block > :nth-child(1) { font-size:24px; }
.block > :nth-child(2) { font-size:32px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-001.html b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-001.html
index 2473bb5d4fc..61621ab0d6b 100644
--- a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-001.html
+++ b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-001.html
@@ -22,6 +22,7 @@ body { margin: 0; }
margin: 5px;
text-orientation: sideways;
font-family: Ahem;
+ line-height: 1;
}
.block > :nth-child(1) { font-size:24px; }
.block > :nth-child(2) { font-size:32px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-002-b-ref.html b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-002-b-ref.html
index 1b563f1f42a..800578e31d7 100644
--- a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-002-b-ref.html
+++ b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-002-b-ref.html
@@ -13,6 +13,7 @@ body { margin: 0; }
width: 175px;
height: 300px;
font-family: Ahem;
+ line-height: 1;
}
.block1 > :nth-child(1) { font-size:24px; }
.block1 > :nth-child(2) { font-size:32px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-002-b.html b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-002-b.html
index 7d9ebecb8ca..9d3b5579351 100644
--- a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-002-b.html
+++ b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-002-b.html
@@ -24,6 +24,7 @@ body { margin: 0; }
width: 175px;
height: 300px;
font-family: Ahem;
+ line-height: 1;
}
.block > :nth-child(1) { font-size:24px; }
.block > :nth-child(2) { font-size:32px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-002-ref.html b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-002-ref.html
index 8593ea1abce..a959d659d35 100644
--- a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-002-ref.html
+++ b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-002-ref.html
@@ -12,6 +12,7 @@ body { margin: 0; }
text-orientation: sideways;
width: 175px;
font-family: Ahem;
+ line-height: 1;
}
.block1 > :nth-child(1) { font-size:24px; }
.block1 > :nth-child(2) { font-size:32px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-002.html b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-002.html
index 700fd26097e..d563dd9a2c4 100644
--- a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-002.html
+++ b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-002.html
@@ -22,6 +22,7 @@ body { margin: 0; }
margin: 5px;
text-orientation: sideways;
font-family: Ahem;
+ line-height: 1;
}
.block > :nth-child(1) { font-size:24px; }
.block > :nth-child(2) { font-size:32px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-003-ref.html b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-003-ref.html
index cd097c1d48a..c701e97fb85 100644
--- a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-003-ref.html
+++ b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-003-ref.html
@@ -11,6 +11,7 @@ body { margin: 0; }
margin: 5px;
text-orientation: sideways;
font-family: Ahem;
+ line-height: 1;
}
.block > :nth-child(1) { font-size:24px; }
.block > :nth-child(2) { font-size:32px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-003.html b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-003.html
index 2372ac19318..746fb1a0b02 100644
--- a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-003.html
+++ b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-003.html
@@ -22,6 +22,7 @@ body { margin: 0; }
margin: 5px;
text-orientation: sideways;
font-family: Ahem;
+ line-height: 1;
}
.block > :nth-child(1) { font-size:24px; }
.block > :nth-child(2) { font-size:32px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-004-ref.html b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-004-ref.html
index d589acb3742..57b44e6d769 100644
--- a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-004-ref.html
+++ b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-004-ref.html
@@ -11,6 +11,7 @@ body { margin: 0; }
margin: 5px;
text-orientation: sideways;
font-family: Ahem;
+ line-height: 1;
}
.block > :nth-child(1) { font-size:24px; }
.block > :nth-child(2) { font-size:32px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-004.html b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-004.html
index c7f49bf24af..9b08598cefb 100644
--- a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-004.html
+++ b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-004.html
@@ -22,6 +22,7 @@ body { margin: 0; }
margin: 5px;
text-orientation: sideways;
font-family: Ahem;
+ line-height: 1;
}
.block > :nth-child(1) { font-size:24px; }
.block > :nth-child(2) { font-size:32px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-005-ref.html b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-005-ref.html
index 75a366fc409..52390473f21 100644
--- a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-005-ref.html
+++ b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-005-ref.html
@@ -11,6 +11,7 @@ body { margin: 0; }
margin: 5px;
text-orientation: sideways;
font-family: Ahem;
+ line-height: 1;
}
.block > :nth-child(1) { font-size:24px; }
.block > :nth-child(2) { font-size:32px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-005.html b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-005.html
index 3bfa2d20799..0e2e0c51aad 100644
--- a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-005.html
+++ b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-005.html
@@ -22,6 +22,7 @@ body { margin: 0; }
margin: 5px;
text-orientation: sideways;
font-family: Ahem;
+ line-height: 1;
}
.block > :nth-child(1) { font-size:24px; }
.block > :nth-child(2) { font-size:32px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-006-ref.html b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-006-ref.html
index 610b2ad0a11..a8129d0bec4 100644
--- a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-006-ref.html
+++ b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-006-ref.html
@@ -11,6 +11,7 @@ body { margin: 0; }
margin: 5px;
text-orientation: sideways;
font-family: Ahem;
+ line-height: 1;
}
.block > :nth-child(1) { font-size:24px; }
.block > :nth-child(2) { font-size:32px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-006.html b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-006.html
index 34edced2b43..bbadf59158b 100644
--- a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-006.html
+++ b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-006.html
@@ -22,6 +22,7 @@ body { margin: 0; }
margin: 5px;
text-orientation: sideways;
font-family: Ahem;
+ line-height: 1;
}
.block > :nth-child(1) { font-size:24px; }
.block > :nth-child(2) { font-size:32px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-007-ref.html b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-007-ref.html
index 59a0e339598..aa79b3eda74 100644
--- a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-007-ref.html
+++ b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-007-ref.html
@@ -11,6 +11,7 @@ body { margin: 0; }
margin: 5px;
text-orientation: sideways;
font-family: Ahem;
+ line-height: 1;
}
.block > :nth-child(1) { font-size:24px; }
.block > :nth-child(2) { font-size:32px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-007.html b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-007.html
index e0966bb6e64..5a6488f08ed 100644
--- a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-007.html
+++ b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-007.html
@@ -22,6 +22,7 @@ body { margin: 0; }
margin: 5px;
text-orientation: sideways;
font-family: Ahem;
+ line-height: 1;
}
.block > :nth-child(1) { font-size:24px; }
.block > :nth-child(2) { font-size:32px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-001-ref.html b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-001-ref.html
index 1b8130d7b89..e8c6bb3b09c 100644
--- a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-001-ref.html
+++ b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-001-ref.html
@@ -11,6 +11,7 @@ body { margin: 0; }
margin: 5px;
text-orientation: sideways;
font-family: Ahem;
+ line-height: 1;
}
.block > :nth-child(1) { font-size:24px; }
.block > :nth-child(2) { font-size:32px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-001.html b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-001.html
index 556009dfde7..c70926b9a51 100644
--- a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-001.html
+++ b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-001.html
@@ -22,6 +22,7 @@ body { margin: 0; }
margin: 5px;
text-orientation: sideways;
font-family: Ahem;
+ line-height: 1;
}
.block > :nth-child(1) { font-size:24px; }
.block > :nth-child(2) { font-size:32px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-002-ref.html b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-002-ref.html
index 735ea557868..35068082ba5 100644
--- a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-002-ref.html
+++ b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-002-ref.html
@@ -12,6 +12,7 @@ body { margin: 0; }
text-orientation: sideways;
width: 350px;
font-family: Ahem;
+ line-height: 1;
}
.block > :nth-child(1) { font-size:24px; }
.block > :nth-child(2) { font-size:32px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-002.html b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-002.html
index c196cd35c51..8b7d080669f 100644
--- a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-002.html
+++ b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-002.html
@@ -23,6 +23,7 @@ body { margin: 0; }
text-orientation: sideways;
width: 350px;
font-family: Ahem;
+ line-height: 1;
}
.block > :nth-child(1) { font-size:24px; }
.block > :nth-child(2) { font-size:32px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-003-ref.html b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-003-ref.html
index fd966d16a15..26ab87872c3 100644
--- a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-003-ref.html
+++ b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-003-ref.html
@@ -13,6 +13,7 @@ body { margin: 0; }
width: 375px;
height: 100px;
font-family: Ahem;
+ line-height: 1;
}
.block > :nth-child(1) { font-size:24px; }
.block > :nth-child(2) { font-size:32px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-003.html b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-003.html
index 287cb80fd58..f97ffc7d281 100644
--- a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-003.html
+++ b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-003.html
@@ -24,6 +24,7 @@ body { margin: 0; }
width: 375px;
height: 100px;
font-family: Ahem;
+ line-height: 1;
}
.block > :nth-child(1) { font-size:24px; }
.block > :nth-child(2) { font-size:32px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-004-ref.html b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-004-ref.html
index be610d4f7f2..3851c45ff45 100644
--- a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-004-ref.html
+++ b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-004-ref.html
@@ -13,6 +13,7 @@ body { margin: 0; }
width: 150px;
height: 350px;
font-family: Ahem;
+ line-height: 1;
}
.block > :nth-child(1) { font-size:24px; }
.block > :nth-child(2) { font-size:32px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-004.html b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-004.html
index 673c9ff2082..472e0c1db9e 100644
--- a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-004.html
+++ b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-004.html
@@ -24,6 +24,7 @@ body { margin: 0; }
width: 150px;
height: 350px;
font-family: Ahem;
+ line-height: 1;
}
.block > :nth-child(1) { font-size:24px; }
.block > :nth-child(2) { font-size:32px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-005-ref.html b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-005-ref.html
index c38b6c76115..7851a214eec 100644
--- a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-005-ref.html
+++ b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-005-ref.html
@@ -13,6 +13,7 @@ body { margin: 0; }
height: 350px;
position: relative;
font-family: Ahem;
+ line-height: 1;
}
.block > :nth-child(1) { font-size:24px; }
.block > :nth-child(2) { font-size:32px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-005.html b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-005.html
index f816e893ca2..d482d7fbff7 100644
--- a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-005.html
+++ b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-005.html
@@ -23,6 +23,7 @@ body { margin: 0; }
text-orientation: sideways;
height: 350px;
font-family: Ahem;
+ line-height: 1;
}
.block > :nth-child(1) { font-size:24px; }
.block > :nth-child(2) { font-size:32px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-006-ref.html b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-006-ref.html
index 6053b38a6fd..a92602fb3db 100644
--- a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-006-ref.html
+++ b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-006-ref.html
@@ -12,6 +12,7 @@ body { margin: 0; }
text-orientation: sideways;
height: 350px;
font-family: Ahem;
+ line-height: 1;
}
.block > :nth-child(1) { font-size:24px; }
.block > :nth-child(2) { font-size:32px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-006.html b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-006.html
index c034040b5fd..f06a24723f0 100644
--- a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-006.html
+++ b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-006.html
@@ -23,6 +23,7 @@ body { margin: 0; }
text-orientation: sideways;
height: 350px;
font-family: Ahem;
+ line-height: 1;
}
.block > :nth-child(1) { font-size:24px; }
.block > :nth-child(2) { font-size:32px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-007-ref.html b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-007-ref.html
index cba725f4256..ef5e5dac154 100644
--- a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-007-ref.html
+++ b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-007-ref.html
@@ -13,6 +13,7 @@ body { margin: 0; }
width: 200px;
height: 300px;
font-family: Ahem;
+ line-height: 1;
}
.block1 > :nth-child(1) { font-size:24px; }
.block1 > :nth-child(2) { font-size:32px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-007.html b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-007.html
index 60185142427..1b9178b16b0 100644
--- a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-007.html
+++ b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-horiz-007.html
@@ -24,6 +24,7 @@ body { margin: 0; }
width: 200px;
height: 300px;
font-family: Ahem;
+ line-height: 1;
}
.block > :nth-child(1) { font-size:24px; }
.block > :nth-child(2) { font-size:32px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-001-ref.html b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-001-ref.html
index cf19544be84..ecb3c7c5014 100644
--- a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-001-ref.html
+++ b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-001-ref.html
@@ -11,6 +11,7 @@ body { margin: 0; }
margin: 5px;
text-orientation: sideways;
font-family: Ahem;
+ line-height: 1;
}
.block > :nth-child(1) { font-size:24px; }
.block > :nth-child(2) { font-size:32px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-001.html b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-001.html
index 801474df57c..e4023de1a26 100644
--- a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-001.html
+++ b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-001.html
@@ -22,6 +22,7 @@ body { margin: 0; }
margin: 5px;
text-orientation: sideways;
font-family: Ahem;
+ line-height: 1;
}
.block > :nth-child(1) { font-size:24px; }
.block > :nth-child(2) { font-size:32px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-002-ref.html b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-002-ref.html
index 9a7a53969d3..0e32b854180 100644
--- a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-002-ref.html
+++ b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-002-ref.html
@@ -12,6 +12,7 @@ body { margin: 0; }
text-orientation: sideways;
height: 350px;
font-family: Ahem;
+ line-height: 1;
}
.block > :nth-child(1) { font-size:24px; }
.block > :nth-child(2) { font-size:32px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-002.html b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-002.html
index 6dd235a7b6f..a6d73382161 100644
--- a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-002.html
+++ b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-002.html
@@ -23,6 +23,7 @@ body { margin: 0; }
text-orientation: sideways;
height: 350px;
font-family: Ahem;
+ line-height: 1;
}
.block > :nth-child(1) { font-size:24px; }
.block > :nth-child(2) { font-size:32px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-003-ref.html b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-003-ref.html
index 795926615fa..ce7bbb722ec 100644
--- a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-003-ref.html
+++ b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-003-ref.html
@@ -13,6 +13,7 @@ body { margin: 0; }
width: 150px;
height: 350px;
font-family: Ahem;
+ line-height: 1;
}
.block > :nth-child(1) { font-size:24px; }
.block > :nth-child(2) { font-size:32px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-003.html b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-003.html
index 18f581620d6..d100bfb9138 100644
--- a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-003.html
+++ b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-003.html
@@ -24,6 +24,7 @@ body { margin: 0; }
width: 150px;
height: 350px;
font-family: Ahem;
+ line-height: 1;
}
.block > :nth-child(1) { font-size:24px; }
.block > :nth-child(2) { font-size:32px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-004-ref.html b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-004-ref.html
index 1ce8267ee7d..17f0bbf7506 100644
--- a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-004-ref.html
+++ b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-004-ref.html
@@ -13,6 +13,7 @@ body { margin: 0; }
width: 350px;
height: 100px;
font-family: Ahem;
+ line-height: 1;
}
.block > :nth-child(1) { font-size:24px; }
.block > :nth-child(2) { font-size:32px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-004.html b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-004.html
index 1f2e3860b06..4e57fdba679 100644
--- a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-004.html
+++ b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-004.html
@@ -24,6 +24,7 @@ body { margin: 0; }
width: 350px;
height: 100px;
font-family: Ahem;
+ line-height: 1;
}
.block > :nth-child(1) { font-size:24px; }
.block > :nth-child(2) { font-size:32px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-005-ref.html b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-005-ref.html
index fb68579d9ae..4409a98b778 100644
--- a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-005-ref.html
+++ b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-005-ref.html
@@ -12,6 +12,7 @@ body { margin: 0; }
text-orientation: sideways;
width: 350px;
font-family: Ahem;
+ line-height: 1;
}
.block > :nth-child(1) { font-size:24px; }
.block > :nth-child(2) { font-size:32px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-005.html b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-005.html
index a27cb67898e..f3d9b2368d1 100644
--- a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-005.html
+++ b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-005.html
@@ -23,6 +23,7 @@ body { margin: 0; }
text-orientation: sideways;
width: 350px;
font-family: Ahem;
+ line-height: 1;
}
.block > :nth-child(1) { font-size:24px; }
.block > :nth-child(2) { font-size:32px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-006-ref.html b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-006-ref.html
index 51c5f77da35..46fbf2ebbc8 100644
--- a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-006-ref.html
+++ b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-006-ref.html
@@ -12,6 +12,7 @@ body { margin: 0; }
text-orientation: sideways;
width: 350px;
font-family: Ahem;
+ line-height: 1;
}
.block > :nth-child(1) { font-size:24px; }
.block > :nth-child(2) { font-size:32px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-006.html b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-006.html
index 654c17cd9e8..7a4a8118f5a 100644
--- a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-006.html
+++ b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-006.html
@@ -23,6 +23,7 @@ body { margin: 0; }
text-orientation: sideways;
width: 350px;
font-family: Ahem;
+ line-height: 1;
}
.block > :nth-child(1) { font-size:24px; }
.block > :nth-child(2) { font-size:32px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-007-ref.html b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-007-ref.html
index 6f5641448d5..d216a18a9e9 100644
--- a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-007-ref.html
+++ b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-007-ref.html
@@ -12,6 +12,7 @@ body { margin: 0; }
text-orientation: sideways;
width: 200px;
font-family: Ahem;
+ line-height: 1;
}
.block1 > :nth-child(1) { font-size:24px; }
.block1 > :nth-child(2) { font-size:32px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-007.html b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-007.html
index ae7b6bf36ea..8e2422403a6 100644
--- a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-007.html
+++ b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-lr-007.html
@@ -23,6 +23,7 @@ body { margin: 0; }
text-orientation: sideways;
width: 200px;
font-family: Ahem;
+ line-height: 1;
}
.block > :nth-child(1) { font-size:24px; }
.block > :nth-child(2) { font-size:32px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-001-ref.html b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-001-ref.html
index 02d3feb1267..e759c48e636 100644
--- a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-001-ref.html
+++ b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-001-ref.html
@@ -11,6 +11,7 @@ body { margin: 0; }
margin: 5px;
text-orientation: sideways;
font-family: Ahem;
+ line-height: 1;
}
.block > :nth-child(1) { font-size:24px; }
.block > :nth-child(2) { font-size:32px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-001.html b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-001.html
index af7ca16d634..890cde5a00c 100644
--- a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-001.html
+++ b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-001.html
@@ -22,6 +22,7 @@ body { margin: 0; }
margin: 5px;
text-orientation: sideways;
font-family: Ahem;
+ line-height: 1;
}
.block > :nth-child(1) { font-size:24px; }
.block > :nth-child(2) { font-size:32px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-002-ref.html b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-002-ref.html
index ef6b45c9c97..03faebeeceb 100644
--- a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-002-ref.html
+++ b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-002-ref.html
@@ -12,6 +12,7 @@ body { margin: 0; }
text-orientation: sideways;
height: 350px;
font-family: Ahem;
+ line-height: 1;
}
.block > :nth-child(1) { font-size:24px; }
.block > :nth-child(2) { font-size:32px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-002.html b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-002.html
index 9aa00a71147..345d71d0af2 100644
--- a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-002.html
+++ b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-002.html
@@ -23,6 +23,7 @@ body { margin: 0; }
text-orientation: sideways;
height: 350px;
font-family: Ahem;
+ line-height: 1;
}
.block > :nth-child(1) { font-size:24px; }
.block > :nth-child(2) { font-size:32px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-003-ref.html b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-003-ref.html
index b72fc8817a4..40f6ac86da3 100644
--- a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-003-ref.html
+++ b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-003-ref.html
@@ -13,6 +13,7 @@ body { margin: 0; }
width: 150px;
height: 350px;
font-family: Ahem;
+ line-height: 1;
}
.block > :nth-child(1) { font-size:24px; }
.block > :nth-child(2) { font-size:32px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-003.html b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-003.html
index 2ae2f4fba65..9567b08c693 100644
--- a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-003.html
+++ b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-003.html
@@ -24,6 +24,7 @@ body { margin: 0; }
width: 150px;
height: 350px;
font-family: Ahem;
+ line-height: 1;
}
.block > :nth-child(1) { font-size:24px; }
.block > :nth-child(2) { font-size:32px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-004-ref.html b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-004-ref.html
index bab35922666..33958bcf937 100644
--- a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-004-ref.html
+++ b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-004-ref.html
@@ -13,6 +13,7 @@ body { margin: 0; }
width: 350px;
height: 100px;
font-family: Ahem;
+ line-height: 1;
}
.block > :nth-child(1) { font-size:24px; }
.block > :nth-child(2) { font-size:32px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-004.html b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-004.html
index d2f08642fcd..35c3fa49bea 100644
--- a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-004.html
+++ b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-004.html
@@ -24,6 +24,7 @@ body { margin: 0; }
width: 350px;
height: 100px;
font-family: Ahem;
+ line-height: 1;
}
.block > :nth-child(1) { font-size:24px; }
.block > :nth-child(2) { font-size:32px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-005-ref.html b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-005-ref.html
index da72a5f0179..0a0a935e296 100644
--- a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-005-ref.html
+++ b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-005-ref.html
@@ -12,6 +12,7 @@ body { margin: 0; }
text-orientation: sideways;
width: 350px;
font-family: Ahem;
+ line-height: 1;
}
.block > :nth-child(1) { font-size:24px; }
.block > :nth-child(2) { font-size:32px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-005.html b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-005.html
index 0d40ce288d7..639a76fe146 100644
--- a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-005.html
+++ b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-005.html
@@ -23,6 +23,7 @@ body { margin: 0; }
text-orientation: sideways;
width: 350px;
font-family: Ahem;
+ line-height: 1;
}
.block > :nth-child(1) { font-size:24px; }
.block > :nth-child(2) { font-size:32px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-006-ref.html b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-006-ref.html
index 4011c691427..e345ca9d761 100644
--- a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-006-ref.html
+++ b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-006-ref.html
@@ -12,6 +12,7 @@ body { margin: 0; }
text-orientation: sideways;
width: 350px;
font-family: Ahem;
+ line-height: 1;
}
.block > :nth-child(1) { font-size:24px; }
.block > :nth-child(2) { font-size:32px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-006.html b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-006.html
index 40f1e0796ea..4ace6d03439 100644
--- a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-006.html
+++ b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-006.html
@@ -23,6 +23,7 @@ body { margin: 0; }
text-orientation: sideways;
width: 350px;
font-family: Ahem;
+ line-height: 1;
}
.block > :nth-child(1) { font-size:24px; }
.block > :nth-child(2) { font-size:32px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-007-ref.html b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-007-ref.html
index 30658b8cc73..6c702dfbf5d 100644
--- a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-007-ref.html
+++ b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-007-ref.html
@@ -12,6 +12,7 @@ body { margin: 0; }
text-orientation: sideways;
width: 200px;
font-family: Ahem;
+ line-height: 1;
}
.block1 > :nth-child(1) { font-size:24px; }
.block1 > :nth-child(2) { font-size:32px; }
diff --git a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-007.html b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-007.html
index 49bab61ca09..dd06aae4c50 100644
--- a/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-007.html
+++ b/tests/wpt/tests/css/css-grid/alignment/self-baseline/grid-self-baseline-vertical-rl-007.html
@@ -23,6 +23,7 @@ body { margin: 0; }
text-orientation: sideways;
width: 200px;
font-family: Ahem;
+ line-height: 1;
}
.block > :nth-child(1) { font-size:24px; }
.block > :nth-child(2) { font-size:32px; }
diff --git a/tests/wpt/tests/css/css-grid/grid-in-table-cell-with-img.html b/tests/wpt/tests/css/css-grid/grid-in-table-cell-with-img.html
new file mode 100644
index 00000000000..492a5866b71
--- /dev/null
+++ b/tests/wpt/tests/css/css-grid/grid-in-table-cell-with-img.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<html>
+<link rel="author" title="Sammy Gill" href="mailto:sammy.gill@apple.com">
+<link rel="help" href="https://drafts.csswg.org/css-grid-2/#grid-item-sizing">
+<link rel="match" href="../reference/ref-filled-green-100px-square-only.html">
+<meta name="assert" content="Percent height image resolves against grid area size">
+<style>
+.cell {
+ display: table-cell;
+}
+.grid {
+ display: grid;
+ grid-template: 100px / 100px;
+}
+img {
+ height: 100%;
+}
+</style>
+<body>
+<p>Test passes if there is a filled green square.</p>
+<div class="cell">
+ <div class="grid">
+ <img src="grid-items/support/200x200-green.png">
+ </div>
+</div>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-grid/grid-relayout-with-nested-grid-ref.html b/tests/wpt/tests/css/css-grid/grid-relayout-with-nested-grid-ref.html
new file mode 100644
index 00000000000..5cace4099c4
--- /dev/null
+++ b/tests/wpt/tests/css/css-grid/grid-relayout-with-nested-grid-ref.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<link rel="author" title="Brandon Stewart" href="mailto:brandonstewart@apple.com">
+<link rel="help" href="https://drafts.csswg.org/css-grid-1">
+<meta name="assert" content="Ensure text does not overflow upon re-layout of grid">
+</head>
+<style>
+.grid {
+ display: grid;
+ grid-template-columns: minmax(min-content, 100px) auto;
+}
+.nested_grid {
+ border: 5px solid;
+ display: grid;
+ justify-items: baseline;
+ overflow-wrap: break-word;
+}
+</style>
+<body>
+<div class=grid>
+ <div class=nested_grid><p>This content will overflow.</p></div>
+</div>
+</body>
+</html>
+
diff --git a/tests/wpt/tests/css/css-grid/grid-relayout-with-nested-grid.html b/tests/wpt/tests/css/css-grid/grid-relayout-with-nested-grid.html
new file mode 100644
index 00000000000..a898affa3a2
--- /dev/null
+++ b/tests/wpt/tests/css/css-grid/grid-relayout-with-nested-grid.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<head>
+<meta charset="utf-8">
+<link rel="author" title="Brandon Stewart" href="mailto:brandonstewart@apple.com">
+<link rel="help" href="https://drafts.csswg.org/css-grid-1">
+<link rel="match" href="grid-relayout-with-nested-grid-ref.html">
+<meta name="assert" content="Ensure text does not overflow upon re-layout of grid">
+</head>
+<style>
+.grid {
+ display: grid;
+ grid-template-columns: minmax(min-content, 100px) auto;
+}
+.nested_grid {
+ border: 5px solid;
+ display: grid;
+ justify-items: baseline;
+ overflow-wrap: break-word;
+}
+</style>
+<body>
+<div class=grid>
+ <div id="extra_div1">
+ <div>
+ <div class=nested_grid><p>This content will overflow.</p></div>
+ </div>
+ </div>
+</div>
+</body>
+<script>
+/* Force a re-layout */
+document.body.offsetHeight;
+document.getElementById("extra_div1").appendChild(document.createElement("p"));
+document.documentElement.classList.remove("reftest-wait");
+forceLayout();
+</script>
+</html>
+
diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-001-ref.html b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-001-ref.html
deleted file mode 100644
index 1a9f65aaf69..00000000000
--- a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-001-ref.html
+++ /dev/null
@@ -1,278 +0,0 @@
-<!DOCTYPE HTML>
-<!--
- Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/
--->
-<html>
- <meta charset="utf-8">
- <title>Reference: Masonry layout intrinsic sizing</title>
- <link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
- <link rel="stylesheet" type="text/css" href="/fonts/ahem.css">
- <style>
-
-@import "support/masonry-intrinsic-sizing-visual.css";
-
-grid {
- display: inline-grid;
- gap: 1px 2px;
- grid-auto-rows: auto;
- border: 1px solid;
- padding: 0 1px 0 2px;
- vertical-align: top;
-}
-.auto grid {
- grid-template-columns: repeat(4,auto);
-}
-.fr grid {
- grid-template-columns: 1fr 2fr 1fr 1fr;
-}
-.mixed grid {
- grid-template-columns: 1fr 2fr min-content max-content;
-}
-</style>
-
-<body>
-
-<section class="auto">
-<grid style="grid-template-columns: repeat(4, 2ch)">
- <item style="width:2ch">1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item>5</item>
-</grid>
-
-<grid style="grid-template-columns: repeat(4, 2ch)">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:2ch">5</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:2ch; grid-area:1/2">5</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="visibility: hidden">4</item>
- <item style="width:4ch; grid-area:1/2/2/4">5</item>
-</grid>
-
-<grid>
- <item style="grid-column: 4">1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="visibility: hidden">4</item>
- <item style="grid-area: 1/2/2/span 2">5</item>
- <item style="width:5ch; grid-area: 2/1/3/4">6</item>
-</grid>
-
-<grid>
- <item style="grid-column: 4">1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="visibility: hidden">4</item>
- <item style="width:3ch; grid-area:1/2/2/4">5</item>
- <item style="width:5ch; grid-area:2/1/3/4">6</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="grid-column:span 4">5</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:6ch; grid-column:span 4">5</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:6ch; grid-area: 2/1/3/4">5</item>
- <item style="width:6ch; grid-area: 2/2/3/5; visibility: hidden">5</item>
-</grid>
-</section>
-
-<!-- ditto with 'fr' sizing -->
-
-<section class="fr">
-<grid>
- <item style="width:2ch">1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item>5</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:2ch">5</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:2ch; grid-area: 1/2">5</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:4ch; grid-area: 1/2/2/4">5</item>
-</grid>
-
-<grid>
- <item style="grid-column: 4">1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="visibility: hidden">4</item>
- <item style="grid-area: 1/2/2/span 2">5</item>
- <item style="width:5ch; grid-area: 2/1/3/4">6</item>
-</grid>
-
-<grid>
- <item style="grid-column: 4">1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="visibility: hidden">4</item>
- <item style="width:3ch; grid-area:1/2/2/4">5</item>
- <item style="width:5ch; grid-area:2/1/3/4">6</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="grid-column:span 4">5</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:6ch; grid-column:span 4">5</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:6ch; grid-area: 2/1/3/4">5</item>
- <item style="width:6ch; grid-area: 2/2/3/5; visibility: hidden">5</item>
-</grid>
-</section>
-
-<!-- ditto with mixed sizing -->
-
-<section class="mixed">
-<grid style="grid-template-columns: 2ch 4ch 2ch 2ch">
- <item style="width:2ch">1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item>5</item>
-</grid>
-
-<grid style="grid-template-columns: 2ch 4ch 2ch 2ch">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:2ch">5</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:2ch; grid-area: 1/2">5</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="visibility: hidden">4</item>
- <item style="width:4ch; grid-area: 1/2/2/4">5</item>
-</grid>
-
-<grid>
- <item style="grid-column: 4">1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="visibility: hidden">4</item>
- <item style="grid-area: 1/2/2/span 2">5</item>
- <item style="width:5ch; grid-area: 2/1/3/4">6</item>
-</grid>
-
-<grid>
- <item style="grid-column: 4">1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="visibility: hidden">4</item>
- <item style="width:3ch; grid-area:1/2/2/4">5</item>
- <item style="width:5ch; grid-area:2/1/3/4">6</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="grid-column:span 4">5</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:6ch; grid-column:span 4">5</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:6ch; grid-area: 2/1/3/4">5</item>
- <item style="width:6ch; grid-area: 2/2/3/5; visibility: hidden">5</item>
-</grid>
-</section>
-
diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-001.html b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-001.html
deleted file mode 100644
index cc0608eafe7..00000000000
--- a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-001.html
+++ /dev/null
@@ -1,270 +0,0 @@
-<!DOCTYPE HTML>
-<!--
- Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/
--->
-<html>
- <meta charset="utf-8">
- <title>CSS Grid Test: Masonry layout column sizing - intrinsic</title>
- <link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
- <link rel="help" href="https://drafts.csswg.org/css-grid-3/#track-sizing">
- <link rel="match" href="masonry-intrinsic-sizing-001-ref.html">
- <link rel="stylesheet" type="text/css" href="/fonts/ahem.css">
- <style>
-
-@import "support/masonry-intrinsic-sizing-visual.css";
-
-grid {
- display: inline-grid;
- gap: 1px 2px;
- grid-template-rows: masonry;
- border: 1px solid;
- padding: 0 1px 0 2px;
- vertical-align: top;
-}
-.auto grid {
- grid-template-columns: repeat(4,auto);
-}
-.fr grid {
- grid-template-columns: 1fr 2fr 1fr 1fr;
-}
-.mixed grid {
- grid-template-columns: 1fr 2fr min-content max-content;
-}
-</style>
-
-<body>
-
-<section class="auto">
-<grid title="Wider 1st item 2ch">
- <item style="width:2ch">1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item>5</item>
-</grid>
-
-<grid title="Wider 5th item 2ch">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:2ch">5</item>
-</grid>
-
-<grid title="Wider 5th item 2ch in col 2">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:2ch; grid-column:2">5</item>
-</grid>
-
-<grid title="Wider 5th item 4ch in col 2-3">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:4ch; grid-column:2/span 2">5</item>
-</grid>
-
-<grid title="5th item in col 2-3, wider 6th item 5ch in col 1-3">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="grid-column:2/span 2">5</item>
- <item style="width:5ch; grid-column:1/span 3">6</item>
-</grid>
-
-<grid title="5th item 3ch in 2-3, 6th item 5ch in 1-3">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:3ch; grid-column:2/span 2">5</item>
- <item style="width:5ch; grid-column:1/span 3">6</item>
-</grid>
-
-<grid title="5th item span 4">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="grid-column:span 4">5</item>
-</grid>
-
-<grid title="5th item 6ch span 4">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:6ch; grid-column:span 4">5</item>
-</grid>
-
-<grid title="5th item 6ch span 3">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:6ch; grid-column:span 3">5</item>
-</grid>
-</section>
-
-<!-- ditto with 'fr' sizing -->
-
-<section class="fr">
-<grid title="Wider 1st item 2ch">
- <item style="width:2ch">1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item>5</item>
-</grid>
-
-<grid title="Wider 5th item 2ch">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:2ch">5</item>
-</grid>
-
-<grid title="Wider 5th item 2ch in col 2">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:2ch; grid-column:2">5</item>
-</grid>
-
-<grid title="Wider 5th item 4ch in col 2-3">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:4ch; grid-column:2/span 2">5</item>
-</grid>
-
-<grid title="5th item in col 2-3, wider 6th item 5ch in col 1-3">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="grid-column:2/span 2">5</item>
- <item style="width:5ch; grid-column:1/span 3">6</item>
-</grid>
-
-<grid title="5th item 3ch in 2-3, 6th item 5ch in 1-3">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:3ch; grid-column:2/span 2">5</item>
- <item style="width:5ch; grid-column:1/span 3">6</item>
-</grid>
-
-<grid title="5th item span 4">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="grid-column:span 4">5</item>
-</grid>
-
-<grid title="5th item 6ch span 4">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:6ch; grid-column:span 4">5</item>
-</grid>
-
-<grid title="5th item 6ch span 3">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:6ch; grid-column:span 3">5</item>
-</grid>
-</section>
-
-<!-- ditto with mixed sizing -->
-
-<section class="mixed">
-<grid title="Wider 1st item 2ch">
- <item style="width:2ch">1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item>5</item>
-</grid>
-
-<grid title="Wider 5th item 2ch">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:2ch">5</item>
-</grid>
-
-<grid title="Wider 5th item 2ch in col 2">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:2ch; grid-column:2">5</item>
-</grid>
-
-<grid title="Wider 5th item 4ch in col 2-3">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:4ch; grid-column:2/span 2">5</item>
-</grid>
-
-<grid title="5th item in col 2-3, wider 6th item 5ch in col 1-3">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="grid-column:2/span 2">5</item>
- <item style="width:5ch; grid-column:1/span 3">6</item>
-</grid>
-
-
-<grid title="5th item 3ch in 2-3, 6th item 5ch in 1-3">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:3ch; grid-column:2/span 2">5</item>
- <item style="width:5ch; grid-column:1/span 3">6</item>
-</grid>
-
-<grid title="5th item span 4">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="grid-column:span 4">5</item>
-</grid>
-
-<grid title="5th item 6ch span 4">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:6ch; grid-column:span 4">5</item>
-</grid>
-
-<grid title="5th item 6ch span 3">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:6ch; grid-column:span 3">5</item>
-</grid>
-</section>
-
diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-002-ref.html b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-002-ref.html
deleted file mode 100644
index ddae8e7fe37..00000000000
--- a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-002-ref.html
+++ /dev/null
@@ -1,280 +0,0 @@
-<!DOCTYPE HTML>
-<!--
- Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/
--->
-<html>
- <meta charset="utf-8">
- <title>Reference: Masonry layout intrinsic sizing</title>
- <link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
- <link rel="stylesheet" type="text/css" href="/fonts/ahem.css">
- <style>
-
-@import "support/masonry-intrinsic-sizing-visual.css";
-
-grid {
- display: inline-grid;
- gap: 1px 2px;
- grid-auto-rows: 1em;
- border: 1px solid;
- padding: 0 1px 0 2px;
- vertical-align: top;
- width: min-content;
-}
-.auto grid {
- grid-template-columns: repeat(4,auto);
-}
-.fr grid {
- grid-template-columns: 1fr 2fr 1fr 1fr;
-}
-.mixed grid {
- grid-template-columns: 1fr 2fr min-content max-content;
-}
-</style>
-
-<body>
-
-<section class="auto">
-<grid style="grid-template-columns: repeat(4, 2ch)">
- <item style="width:2ch">1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item>5</item>
-</grid>
-
-<grid style="grid-template-columns: repeat(4, 2ch)">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:2ch">5</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:2ch; grid-area:1/2">5</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="visibility: hidden">4</item>
- <item style="width:4ch; grid-area:1/2/2/4">5</item>
-</grid>
-
-<grid>
- <item style="grid-column: 4">1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="visibility: hidden">4</item>
- <item style="grid-area: 1/2/2/span 2">5</item>
- <item style="width:5ch; grid-area: 2/1/3/4">6</item>
-</grid>
-
-<grid>
- <item style="grid-column: 4">1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="visibility: hidden">4</item>
- <item style="width:3ch; grid-area:1/2/2/4">5</item>
- <item style="width:5ch; grid-area:2/1/3/4">6</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="grid-column:span 4">5</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:6ch; grid-column:span 4">5</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:6ch; grid-area: 2/1/3/4">5</item>
- <item style="width:6ch; grid-area: 2/2/3/5; visibility: hidden">5</item>
-</grid>
-</section>
-
-<!-- ditto with 'fr' sizing -->
-
-<section class="fr">
-<grid style="grid-template-columns: repeat(4, 2ch)">
- <item style="width:2ch">1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item>5</item>
-</grid>
-
-<grid style="grid-template-columns: repeat(4, 2ch)">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:2ch">5</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:2ch; grid-area: 1/2">5</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:4ch; grid-area: 1/2/2/4">5</item>
-</grid>
-
-<grid>
- <item style="grid-column: 4">1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="visibility: hidden">4</item>
- <item style="grid-area: 1/2/2/span 2">5</item>
- <item style="width:5ch; grid-area: 2/1/3/4">6</item>
-</grid>
-
-<grid>
- <item style="grid-column: 4">1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="visibility: hidden">4</item>
- <item style="width:3ch; grid-area:1/2/2/4">5</item>
- <item style="width:5ch; grid-area:2/1/3/4">6</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="grid-column:span 4">5</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:6ch; grid-column:span 4">5</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:6ch; grid-area: 2/1/3/4">5</item>
- <item style="width:6ch; grid-area: 2/2/3/5; visibility: hidden">5</item>
-</grid>
-</section>
-
-<!-- ditto with mixed sizing -->
-
-<section class="mixed">
-<grid style="grid-template-columns: repeat(4, 2ch)">
- <item style="width:2ch">1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item>5</item>
-</grid>
-
-<grid style="grid-template-columns: repeat(4, 2ch)">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:2ch">5</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:2ch; grid-area: 1/2">5</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="visibility: hidden">4</item>
- <item style="width:4ch; grid-area: 1/2/2/4">5</item>
-</grid>
-
-<grid>
- <item style="grid-column: 4">1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="visibility: hidden">4</item>
- <item style="grid-area: 1/2/2/span 2">5</item>
- <item style="width:5ch; grid-area: 2/1/3/4">6</item>
-</grid>
-
-<grid>
- <item style="grid-column: 4">1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="visibility: hidden">4</item>
- <item style="width:3ch; grid-area:1/2/2/4">5</item>
- <item style="width:5ch; grid-area:2/1/3/4">6</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="grid-column:span 4">5</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:6ch; grid-column:span 4">5</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:6ch; grid-area: 2/1/3/4">5</item>
- <item style="width:6ch; grid-area: 2/2/3/5; visibility: hidden">5</item>
-</grid>
-</section>
-
-
diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-002.html b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-002.html
deleted file mode 100644
index 3867bb13c89..00000000000
--- a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-002.html
+++ /dev/null
@@ -1,271 +0,0 @@
-<!DOCTYPE HTML>
-<!--
- Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/
--->
-<html>
- <meta charset="utf-8">
- <title>CSS Grid Test: Masonry layout column sizing - min-content constraint</title>
- <link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
- <link rel="help" href="https://drafts.csswg.org/css-grid-3/#track-sizing">
- <link rel="match" href="masonry-intrinsic-sizing-002-ref.html">
- <link rel="stylesheet" type="text/css" href="/fonts/ahem.css">
- <style>
-
-@import "support/masonry-intrinsic-sizing-visual.css";
-
-grid {
- display: inline-grid;
- gap: 1px 2px;
- grid-template-rows: masonry;
- border: 1px solid;
- padding: 0 1px 0 2px;
- vertical-align: top;
- width: min-content;
-}
-
-.auto grid {
- grid-template-columns: repeat(4,auto);
-}
-.fr grid {
- grid-template-columns: 1fr 2fr 1fr 1fr;
-}
-.mixed grid {
- grid-template-columns: 1fr 2fr min-content max-content;
-}
-</style>
-
-<body>
-
-<section class="auto">
-<grid title="Wider 1st item 2ch">
- <item style="width:2ch">1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item>5</item>
-</grid>
-
-<grid title="Wider 5th item 2ch">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:2ch">5</item>
-</grid>
-
-<grid title="Wider 5th item 2ch in col 2">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:2ch; grid-column:2">5</item>
-</grid>
-
-<grid title="Wider 5th item 4ch in col 2-3">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:4ch; grid-column:2/span 2">5</item>
-</grid>
-
-<grid title="5th item in col 2-3, wider 6th item 5ch in col 1-3">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="grid-column:2/span 2">5</item>
- <item style="width:5ch; grid-column:1/span 3">6</item>
-</grid>
-
-<grid title="5th item 3ch in 2-3, 6th item 5ch in 1-3">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:3ch; grid-column:2/span 2">5</item>
- <item style="width:5ch; grid-column:1/span 3">6</item>
-</grid>
-
-<grid title="5th item spanning 4">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="grid-column:span 4">5</item>
-</grid>
-
-<grid title="5th item 6ch spanning 4">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:6ch; grid-column:span 4">5</item>
-</grid>
-
-<grid title="5th item 6ch spanning 3">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:6ch; grid-column:span 3">5</item>
-</grid>
-</section>
-
-<!-- ditto with 'fr' sizing -->
-
-<section class="fr">
-<grid title="Wider 1st item 2ch">
- <item style="width:2ch">1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item>5</item>
-</grid>
-
-<grid title="Wider 5th item 2ch">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:2ch">5</item>
-</grid>
-
-<grid title="Wider 5th item 2ch in col 2">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:2ch; grid-column:2">5</item>
-</grid>
-
-<grid title="Wider 5th item 4ch in col 2-3">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:4ch; grid-column:2/span 2">5</item>
-</grid>
-
-<grid title="5th item in col 2-3, wider 6th item 5ch in col 1-3">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="grid-column:2/span 2">5</item>
- <item style="width:5ch; grid-column:1/span 3">6</item>
-</grid>
-
-<grid title="5th item 3ch in 2-3, 6th item 5ch in 1-3">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:3ch; grid-column:2/span 2">5</item>
- <item style="width:5ch; grid-column:1/span 3">6</item>
-</grid>
-
-<grid title="5th item span 4">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="grid-column:span 4">5</item>
-</grid>
-
-<grid title="5th item 6ch span 4">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:6ch; grid-column:span 4">5</item>
-</grid>
-
-<grid title="5th item 6ch span 3">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:6ch; grid-column:span 3">5</item>
-</grid>
-</section>
-
-<!-- ditto with mixed sizing -->
-
-<section class="mixed">
-<grid title="Wider 1st item 2ch">
- <item style="width:2ch">1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item>5</item>
-</grid>
-
-<grid title="Wider 5th item 2ch">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:2ch">5</item>
-</grid>
-
-<grid title="Wider 5th item 2ch in col 2">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:2ch; grid-column:2">5</item>
-</grid>
-
-<grid title="Wider 5th item 4ch in col 2-3">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:4ch; grid-column:2/span 2">5</item>
-</grid>
-
-<grid title="5th item in col 2-3, wider 6th item 5ch in col 1-3">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="grid-column:2/span 2">5</item>
- <item style="width:5ch; grid-column:1/span 3">6</item>
-</grid>
-
-<grid title="5th item 3ch in 2-3, 6th item 5ch in 1-3">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:3ch; grid-column:2/span 2">5</item>
- <item style="width:5ch; grid-column:1/span 3">6</item>
-</grid>
-
-<grid title="5th item spanning 4">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="grid-column:span 4">5</item>
-</grid>
-
-<grid title="5th item 6ch spanning 4">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:6ch; grid-column:span 4">5</item>
-</grid>
-
-<grid title="5th item 6ch spanning 3">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="width:6ch; grid-column:span 3">5</item>
-</grid>
-</section>
-
diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-003-ref.html b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-003-ref.html
deleted file mode 100644
index 044750dc451..00000000000
--- a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-003-ref.html
+++ /dev/null
@@ -1,333 +0,0 @@
-<!DOCTYPE HTML>
-<!--
- Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/
--->
-<html>
- <meta charset="utf-8">
- <title>Reference: Masonry layout min-content sizing</title>
- <link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
- <link rel="stylesheet" type="text/css" href="/fonts/ahem.css">
- <style>
-
-@import "support/masonry-intrinsic-sizing-visual.css";
-
-grid {
- display: inline-grid;
- gap: 1px 2px;
- border: 1px solid;
- padding: 0 1px 0 2px;
- vertical-align: top;
- width: min-content;
-}
-.auto grid {
- grid-template-columns: repeat(4,auto);
-}
-.fr grid {
- grid-template-columns: 1fr 2fr 1fr 1fr;
-}
-.mixed grid {
- grid-template-columns: 1fr 2fr min-content max-content;
-}
-
-item {
- align-self: start;
-}
-.hidden {
- visibility: hidden;
- height: 0;
-}
-</style>
-
-<body>
-
-<section class="auto">
-<grid style="grid-template-columns: repeat(4, 2ch)">
- <item style="width:2ch">1</item>
- <item style="grid-row: span 2">2 2</item>
- <item style="grid-row: span 2">3 3</item>
- <item>4</item>
- <item style="grid-row: span 2">5 5</item>
-</grid>
-
-<grid style="grid-template-columns: repeat(4, 2ch)">
- <item>1</item>
- <item style="grid-row: span 2">2 2</item>
- <item style="grid-row: span 2">3 3</item>
- <item>4</item>
- <item style="grid-row: span 2">5 5</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item style="grid-row: span 2">2 2</item>
- <item style="grid-row: span 2">3 3</item>
- <item>4</item>
- <item style="width:2ch; grid-area: 1/2/3">5 5</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item style="grid-row: span 2">2 2</item>
- <item style="grid-row: span 2">3 3</item>
- <item>4</item>
- <item style="width:4ch; grid-area: 1/2/auto/4">5 5</item>
-
- <item class="hidden">0</item>
-</grid>
-
-<grid>
- <item style="grid-column: 4">1</item>
- <item style="grid-row: span 2">2 2</item>
- <item style="grid-row: span 2">3 3</item>
- <item>4</item>
- <item style="grid-area: 1/2/2/4">5 5</item>
- <item style="width:5ch; grid-area: 2/1/3/4">6</item>
-
- <item class="hidden">0</item>
- <item class="hidden">0 0</item>
- <item class="hidden">0 0</item>
-</grid>
-
-<grid>
- <item style="grid-column: 4">1</item>
- <item style="grid-row: span 2">2 2</item>
- <item style="grid-row: span 2">3 3</item>
- <item>4</item>
- <item style="width:3ch; grid-area: 1/2/2/4">5 5</item>
- <item style="width:5ch; grid-area: 2/1/3/4">6</item>
-
- <item class="hidden">0</item>
- <item class="hidden">0 0</item>
- <item class="hidden">0 0</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item style="grid-row: span 2">2 2</item>
- <item style="grid-row: span 2">3 3</item>
- <item>4</item>
- <item style="grid-area: 3/1/4/5">5 5</item>
-
- <item class="hidden">0 0</item>
- <item class="hidden">0 0</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item style="grid-row: span 2">2 2</item>
- <item style="grid-row: span 2">3 3</item>
- <item>4</item>
- <item style="width:6ch; grid-area: 3/1/4/5">5 5</item>
-
- <item class="hidden">0 0</item>
- <item class="hidden">0 0</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item style="grid-row: span 2">2 2</item>
- <item style="grid-row: span 2">3 3</item>
- <item>4</item>
- <item style="width:6ch; grid-area: 3/1/4/4">5 5</item>
-
- <item class="hidden">0 0</item>
- <item class="hidden">0 0</item>
- <item class="hidden" style="width:6ch; grid-area: 3/2/4/5">0 0</item>
-</grid>
-</section>
-
-<!-- ditto with 'fr' sizing -->
-
-<section class="fr">
-<grid style="grid-template-columns: repeat(4, 2ch)">
- <item style="width:2ch">1</item>
- <item style="grid-row: span 2">2 2</item>
- <item style="grid-row: span 2">3 3</item>
- <item>4</item>
- <item style="grid-row: span 2">5 5</item>
-</grid>
-
-<grid style="grid-template-columns: repeat(4, 2ch)">
- <item>1</item>
- <item style="grid-row: span 2">2 2</item>
- <item style="grid-row: span 2">3 3</item>
- <item>4</item>
- <item style="grid-row: span 2">5 5</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item style="grid-row: span 2">2 2</item>
- <item style="grid-row: span 2">3 3</item>
- <item>4</item>
- <item style="width:2ch; grid-area: 1/2/3">5 5</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item style="grid-row: span 2">2 2</item>
- <item style="grid-row: span 2">3 3</item>
- <item>4</item>
- <item style="width:4ch; grid-area: 1/2/auto/4">5 5</item>
- <item class="hidden">0</item>
-</grid>
-
-<grid>
- <item style="grid-column: 4">1</item>
- <item style="grid-row: span 2">2 2</item>
- <item style="grid-row: span 2">3 3</item>
- <item>4</item>
- <item style="grid-area: 1/2/2/4">5 5</item>
- <item style="width:5ch; grid-area: 2/1/3/4">6</item>
- <item class="hidden">0</item>
- <item class="hidden">0 0</item>
- <item class="hidden">0 0</item>
-</grid>
-
-<grid>
- <item style="grid-column: 4">1</item>
- <item style="grid-row: span 2">2 2</item>
- <item style="grid-row: span 2">3 3</item>
- <item>4</item>
- <item style="width:3ch; grid-area: 1/2/2/4">5 5</item>
- <item style="width:5ch; grid-area: 2/1/3/4">6</item>
-
- <item class="hidden">0</item>
- <item class="hidden">0 0</item>
- <item class="hidden">0 0</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item style="grid-row: span 2">2 2</item>
- <item style="grid-row: span 2">3 3</item>
- <item>4</item>
- <item style="grid-area: 3/1/4/5">5 5</item>
-
- <item class="hidden">0 0</item>
- <item class="hidden">0 0</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item style="grid-row: span 2">2 2</item>
- <item style="grid-row: span 2">3 3</item>
- <item>4</item>
- <item style="width:6ch; grid-area: 3/1/4/5">5 5</item>
-
- <item class="hidden">0 0</item>
- <item class="hidden">0 0</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item style="grid-row: span 2">2 2</item>
- <item style="grid-row: span 2">3 3</item>
- <item>4</item>
- <item style="width:6ch; grid-area: 3/1/4/4">5 5</item>
-
- <item class="hidden">0 0</item>
- <item class="hidden">0 0</item>
- <item class="hidden" style="width:6ch; grid-area: 3/2/4/5">0 0</item>
-</grid>
-</section>
-
-<!-- ditto with mixed sizing -->
-
-<section class="mixed">
-<grid style="grid-template-columns: repeat(3, 2ch) max-content">
- <item style="width:2ch">1</item>
- <item style="grid-row: span 2">2 2</item>
- <item style="grid-row: span 2">3 3</item>
- <item>4</item>
- <item style="grid-row: span 2">5 5</item>
- <item class="hidden" style="grid-area: 2/4/4">0 0</item>
-</grid>
-
-<grid style="grid-template-columns: repeat(3, 2ch) max-content">
- <item>1</item>
- <item style="grid-row: span 2">2 2</item>
- <item style="grid-row: span 2">3 3</item>
- <item>4</item>
- <item style="grid-row: span 2">5 5</item>
- <item class="hidden" style="grid-area: 2/4/4">0 0</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item style="grid-row: span 2">2 2</item>
- <item style="grid-row: span 2">3 3</item>
- <item>4</item>
- <item style="width:2ch; grid-area: 1/2/3">5 5</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item style="grid-row: span 2">2 2</item>
- <item style="grid-row: span 2">3 3</item>
- <item>4</item>
- <item style="width:4ch; grid-area: 1/2/auto/4">5 5</item>
- <item class="hidden">0</item>
-</grid>
-
-<grid>
- <item style="grid-column: 4">1</item>
- <item style="grid-row: span 2">2 2</item>
- <item style="grid-row: span 2">3 3</item>
- <item>4</item>
- <item style="grid-area: 1/2/2/4">5 5</item>
- <item style="width:5ch; grid-area: 2/1/3/4">6</item>
- <item class="hidden">0</item>
- <item class="hidden">0 0</item>
- <item class="hidden">0 0</item>
-</grid>
-
-<grid>
- <item style="grid-column: 4">1</item>
- <item style="grid-row: span 2">2 2</item>
- <item style="grid-row: span 2">3 3</item>
- <item>4</item>
- <item style="width:3ch; grid-area: 1/2/2/4">5 5</item>
- <item style="width:5ch; grid-area: 2/1/3/4">6</item>
-
- <item class="hidden">0</item>
- <item class="hidden">0 0</item>
- <item class="hidden">0 0</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item style="grid-row: span 2">2 2</item>
- <item style="grid-row: span 2">3 3</item>
- <item>4</item>
- <item style="grid-area: 3/1/4/5">5 5</item>
-
- <item class="hidden">0 0</item>
- <item class="hidden">0 0</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item style="grid-row: span 2">2 2</item>
- <item style="grid-row: span 2">3 3</item>
- <item>4</item>
- <item style="width:6ch; grid-area: 3/1/4/5">5 5</item>
-
- <item class="hidden">0 0</item>
- <item class="hidden">0 0</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item style="grid-row: span 2">2 2</item>
- <item style="grid-row: span 2">3 3</item>
- <item>4</item>
- <item style="width:6ch; grid-area: 3/1/4/4">5 5</item>
-
- <item class="hidden">0 0</item>
- <item class="hidden">0 0</item>
- <item class="hidden" style="width:6ch; grid-area: 3/2/4/5">0 0</item>
-</grid>
-</section>
-
diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-003.html b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-003.html
deleted file mode 100644
index 48489d3c869..00000000000
--- a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-003.html
+++ /dev/null
@@ -1,270 +0,0 @@
-<!DOCTYPE HTML>
-<!--
- Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/
--->
-<html>
- <meta charset="utf-8">
- <title>CSS Grid Test: Masonry layout column sizing - min-content</title>
- <link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
- <link rel="help" href="https://drafts.csswg.org/css-grid-3/#track-sizing">
- <link rel="match" href="masonry-intrinsic-sizing-003-ref.html">
- <link rel="stylesheet" type="text/css" href="/fonts/ahem.css">
- <style>
-
-@import "support/masonry-intrinsic-sizing-visual.css";
-
-grid {
- display: inline-grid;
- gap: 1px 2px;
- grid-template-rows: masonry;
- border: 1px solid;
- padding: 0 1px 0 2px;
- vertical-align: top;
- width: min-content;
-}
-.auto grid {
- grid-template-columns: repeat(4,auto);
-}
-.fr grid {
- grid-template-columns: 1fr 2fr 1fr 1fr;
-}
-.mixed grid {
- grid-template-columns: 1fr 2fr min-content max-content;
-}
-</style>
-
-<body>
-
-<section class="auto">
-<grid title="Wider 1st item 2ch">
- <item style="width:2ch">1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item>5 5</item>
-</grid>
-
-<grid title="Wrapped 5th item 2ch">
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="width:2ch">5 5</item>
-</grid>
-
-<grid title="Wrapped 5th item 2ch col 2">
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="width:2ch; grid-column:2">5 5</item>
-</grid>
-
-<grid title="5th item 4ch in col 2-3">
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="width:4ch; grid-column:2/span 2">5 5</item>
-</grid>
-
-<grid title="5th item in col 2-3, 6th item 5ch in col 1-3">
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="grid-column:2/span 2">5 5</item>
- <item style="width:5ch; grid-column:1/span 3">6</item>
-</grid>
-
-<grid title="5th item 3ch in col 2-3, 6th item 5ch in col 1-3">
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="width:3ch; grid-column:2/span 2">5 5</item>
- <item style="width:5ch; grid-column:1/span 3">6</item>
-</grid>
-
-<grid title="5th item span 4">
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="grid-column:span 4">5 5</item>
-</grid>
-
-<grid title="5th item 6ch span 4">
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="width:6ch; grid-column:span 4">5 5</item>
-</grid>
-
-<grid title="5th item 6ch span 3">
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="width:6ch; grid-column:span 3">5 5</item>
-</grid>
-</section>
-
-<!-- ditto with 'fr' sizing -->
-
-<section class="fr">
-<grid title="Wider first item 2ch">
- <item style="width:2ch">1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item>5 5</item>
-</grid>
-
-<grid title="Wrapped last item 2ch">
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="width:2ch">5 5</item>
-</grid>
-
-<grid title="Wrapped last item 2ch col 2">
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="width:2ch; grid-column:2">5 5</item>
-</grid>
-
-<grid title="Last item 4ch col 2-3">
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="width:4ch; grid-column:2/span 2">5 5</item>
-</grid>
-
-<grid title="Item col 2-3 + Item 5ch col 1-3">
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="grid-column:2/span 2">5 5</item>
- <item style="width:5ch; grid-column:1/span 3">6</item>
-</grid>
-
-<grid title="Item 3ch col 2-3 + Item 5ch col 1-3">
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="width:3ch; grid-column:2/span 2">5 5</item>
- <item style="width:5ch; grid-column:1/span 3">6</item>
-</grid>
-
-<grid title="Last item span 4">
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="grid-column:span 4">5 5</item>
-</grid>
-
-<grid title="Last item 6ch span 4">
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="width:6ch; grid-column:span 4">5 5</item>
-</grid>
-
-<grid title="Last item 6ch span 3">
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="width:6ch; grid-column:span 3">5 5</item>
-</grid>
-</section>
-
-<!-- ditto with mixed sizing -->
-
-<section class="mixed">
-<grid title="Wider first item 2ch">
- <item style="width:2ch">1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item>5 5</item>
-</grid>
-
-<grid title="Wrapped last item 2ch">
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="width:2ch">5 5</item>
-</grid>
-
-<grid title="Wrapped last item 2ch col 2">
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="width:2ch; grid-column:2">5 5</item>
-</grid>
-
-<grid title="Last item 4ch col 2-3">
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="width:4ch; grid-column:2/span 2">5 5</item>
-</grid>
-
-<grid title="Item col 2-3 + Item 5ch col 1-3">
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="grid-column:2/span 2">5 5</item>
- <item style="width:5ch; grid-column:1/span 3">6</item>
-</grid>
-
-<grid title="Item 3ch col 2-3 + Item 5ch col 1-3">
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="width:3ch; grid-column:2/span 2">5 5</item>
- <item style="width:5ch; grid-column:1/span 3">6</item>
-</grid>
-
-<grid title="Last item span 4">
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="grid-column:span 4">5 5</item>
-</grid>
-
-<grid title="Last item 6ch span 4">
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="width:6ch; grid-column:span 4">5 5</item>
-</grid>
-
-<grid title="Last item 6ch span 3">
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="width:6ch; grid-column:span 3">5 5</item>
-</grid>
-</section>
-
diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-004-ref.html b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-004-ref.html
deleted file mode 100644
index 302dcad1169..00000000000
--- a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-004-ref.html
+++ /dev/null
@@ -1,357 +0,0 @@
-<!DOCTYPE HTML>
-<!--
- Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/
--->
-<html>
- <meta charset="utf-8">
- <title>Reference: Masonry layout max-content sizing</title>
- <link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
- <link rel="stylesheet" type="text/css" href="/fonts/ahem.css">
- <style>
-
-@import "support/masonry-intrinsic-sizing-visual.css";
-
-grid {
- display: inline-grid;
- gap: 1px 2px;
- border: 1px solid;
- padding: 0 1px 0 2px;
- vertical-align: top;
- align-items: start;
- width: max-content;
-}
-.auto grid {
- grid-template-columns: repeat(4, auto);
-}
-.fr grid {
- grid-template-columns: 1fr 2fr 1fr 1fr;
-}
-.mixed grid {
- grid-template-columns: 1fr 2fr min-content max-content;
-}
-
-item {
- align-self: start;
-}
-.hidden {
- visibility: hidden;
- height: 0;
-}
-</style>
-
-<body>
-
-<section class="auto">
-<grid>
- <item style="width:2ch">1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item>5 5</item>
-
- <item class="hidden" style="grid-column: 4">0 0</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="width: 2ch; grid-area: 2/1">5 5</item>
-
- <item class="hidden" style="grid-area: 2/1">0 0</item>
- <item class="hidden" style="grid-area: 2/4">0 0</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item style="grid-area: 2/1">4</item>
- <item style="width:2ch; grid-area: 1/2/3">5 5</item>
-
- <item class="hidden" style="grid-area: 2/1">0 0</item>
- <item class="hidden" style="grid-area: 2/2">0 0</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item style="grid-area: 2/2">4</item>
- <item style="width:4ch; grid-area: 1/2/auto/4">5 5</item>
-
- <item class="hidden" style="grid-area: 2/2">0 0</item>
- <item class="hidden" style="grid-area: 2/3">0 0</item>
-</grid>
-
-<grid>
- <item style="grid-area: 1/4">1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="grid-area: 1/2/2/4">5 5</item>
- <item style="width:5ch; grid-area: 2/1/3/4">6</item>
-
- <item class="hidden" style="grid-area: 1/1">0</item>
- <item class="hidden" style="grid-area: 2/2">0 0</item>
- <item class="hidden" style="grid-area: 2/3">0 0</item>
- <item class="hidden" style="grid-area: 1/4">0 0</item>
-</grid>
-
-<grid>
- <item style="grid-area: 1/4">1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="width:3ch; grid-area: 1/2/2/4">5 5</item>
- <item style="width:5ch; grid-area: 2/1/3/4">6</item>
-
- <item class="hidden" style="grid-area: 1/1">0</item>
- <item class="hidden" style="grid-area: 2/2">0 0</item>
- <item class="hidden" style="grid-area: 2/3">0 0</item>
- <item class="hidden" style="grid-area: 1/4">0 0</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="grid-area: 2/1/3/5">5 5</item>
-
- <item class="hidden" style="grid-area: 2/1">0 0</item>
- <item class="hidden" style="grid-area: 2/4">0 0</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="width:6ch; grid-area: 2/1/3/5">5 5</item>
-
- <item class="hidden" style="grid-area: 2/1">0 0</item>
- <item class="hidden" style="grid-area: 2/4">0 0</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="width:6ch; grid-area: 2/1/3/4">5 5</item>
-
- <item class="hidden" style="grid-area: 2/1">0 0</item>
- <item class="hidden" style="grid-area: 2/4">0 0</item>
- <item class="hidden" style="width:6ch; grid-area: 2/2/3/5">0 0</item>
-</grid>
-</section>
-
-<!-- ditto with 'fr' sizing -->
-
-<section class="fr">
-<grid>
- <item style="width:2ch">1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item>5 5</item>
- <item class="hidden" style="grid-area: 2/4/4">0 0</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="width: 2ch">5 5</item>
- <item class="hidden" style="grid-area: 2/4">0 0</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="width:2ch; grid-area: 1/2/3">5 5</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="width:4ch; grid-area: 1/2/auto/4">5 5</item>
- <item class="hidden">0</item>
-</grid>
-
-<grid>
- <item style="grid-area: 1/4">1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="grid-area: 1/2/2/4">5 5</item>
- <item style="width:5ch; grid-area: 2/1/3/4">6</item>
-
- <item class="hidden" style="grid-area: 1/1">0</item>
- <item class="hidden" style="grid-area: 2/2">0 0</item>
- <item class="hidden" style="grid-area: 2/3">0 0</item>
- <item class="hidden" style="grid-area: 1/4">0 0</item>
-</grid>
-
-<grid>
- <item style="grid-area: 1/4">1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="width:3ch; grid-area: 1/2/2/4">5 5</item>
- <item style="width:5ch; grid-area: 2/1/3/4">6</item>
-
- <item class="hidden" style="grid-area: 1/1">0</item>
- <item class="hidden" style="grid-area: 2/2">0 0</item>
- <item class="hidden" style="grid-area: 2/3">0 0</item>
- <item class="hidden" style="grid-area: 1/4">0 0</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="grid-area: 2/1/3/5">5 5</item>
-
- <item class="hidden" style="grid-area: 2/1">0 0</item>
- <item class="hidden" style="grid-area: 2/4">0 0</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="width:6ch; grid-area: 2/1/3/5">5 5</item>
-
- <item class="hidden" style="grid-area: 2/1">0 0</item>
- <item class="hidden" style="grid-area: 2/4">0 0</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="width:6ch; grid-area: 2/1/3/4">5 5</item>
-
- <item class="hidden" style="grid-area: 2/1">0 0</item>
- <item class="hidden" style="grid-area: 2/4">0 0</item>
- <item class="hidden" style="width:6ch; grid-area: 2/2/3/5">0 0</item>
-</grid>
-</section>
-
-<!-- ditto with mixed sizing -->
-
-<section class="mixed">
-<grid>
- <item style="width:2ch">1</item>
- <item>2 2</item>
- <item style="grid-area: 1/3/3">3 3</item>
- <item>4</item>
- <item style="grid-area: 2/1">5 5</item>
-
- <item class="hidden" style="grid-area: 2/3; width: 2ch">0</item>
- <item class="hidden" style="grid-area: 2/4">0 0</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item>2 2</item>
- <item style="grid-area: 1/3/3">3 3</item>
- <item>4</item>
- <item style="width: 2ch; grid-area: 2/1">5 5</item>
-
- <item class="hidden" style="grid-area: 2/3; width: 2ch">0</item>
- <item class="hidden" style="grid-area: 2/4">0 0</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item style="grid-row: span 2">2 2</item>
- <item style="grid-row: span 2">3 3</item>
- <item style="grid-area: 2/1">4</item>
- <item style="width:2ch; grid-area: 1/2/3">5 5</item>
-
- <item class="hidden" style="grid-area: 2/1">0 0</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="width:4ch; grid-area: 1/2/auto/4">5 5</item>
-
- <item class="hidden">0</item>
-</grid>
-
-<grid>
- <item style="grid-column: 4">1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="grid-area: 1/2/2/4">5 5</item>
- <item style="width:5ch; grid-area: 2/1/3/4">6</item>
-
- <item class="hidden">0 0</item>
- <item class="hidden" style="grid-area: 2/2">0 0</item>
-</grid>
-
-<grid>
- <item style="grid-column: 4">1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="width:3ch; grid-area: 1/2/2/4">5 5</item>
- <item style="width:5ch; grid-area: 2/1/3/4">6</item>
-
- <item class="hidden" style="grid-area: 2/3">0 0</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item>2 2</item>
- <item style="grid-row: span 2">3 3</item>
- <item>4</item>
- <item style="grid-area: 3/1/4/5">5 5</item>
-
- <item class="hidden">0 0</item>
- <item class="hidden">0 0</item>
- <item class="hidden">0 0</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item>2 2</item>
- <item style="grid-row: span 2">3 3</item>
- <item>4</item>
- <item style="width:6ch; grid-area: 3/1/4/5">5 5</item>
-
- <item class="hidden">0 0</item>
- <item class="hidden">0 0</item>
- <item class="hidden">0 0</item>
-</grid>
-
-<grid>
- <item>1</item>
- <item>2 2</item>
- <item style="grid-row: span 2">3 3</item>
- <item>4</item>
- <item style="width:6ch; grid-area: 3/1/4/4">5 5</item>
-
- <item class="hidden">0 0</item>
- <item class="hidden">0 0</item>
- <item class="hidden" style="width:6ch; grid-area: 3/2/4/5">0 0</item>
-</grid>
-</section>
-
diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-004.html b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-004.html
deleted file mode 100644
index c8bc671bb3b..00000000000
--- a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-004.html
+++ /dev/null
@@ -1,270 +0,0 @@
-<!DOCTYPE HTML>
-<!--
- Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/
--->
-<html>
- <meta charset="utf-8">
- <title>CSS Grid Test: Masonry layout column sizing - max-content</title>
- <link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
- <link rel="help" href="https://drafts.csswg.org/css-grid-3">
- <link rel="match" href="masonry-intrinsic-sizing-004-ref.html">
- <link rel="stylesheet" type="text/css" href="/fonts/ahem.css">
- <style>
-
-@import "support/masonry-intrinsic-sizing-visual.css";
-
-grid {
- display: inline-grid;
- gap: 1px 2px;
- grid-template-rows: masonry;
- border: 1px solid;
- padding: 0 1px 0 2px;
- vertical-align: top;
- width: max-content;
-}
-.auto grid {
- grid-template-columns: repeat(4,auto);
-}
-.fr grid {
- grid-template-columns: 1fr 2fr 1fr 1fr;
-}
-.mixed grid {
- grid-template-columns: 1fr 2fr min-content max-content;
-}
-</style>
-
-<body>
-
-<section class="auto">
-<grid title="Wider 1st item 2ch">
- <item style="width:2ch">1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item>5 5</item>
-</grid>
-
-<grid title="Wrapped 5th item 2ch">
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="width:2ch">5 5</item>
-</grid>
-
-<grid title="Wrapped 5th item 2ch in col 2">
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="width:2ch; grid-column:2">5 5</item>
-</grid>
-
-<grid title="5th item 4ch in col 2-3">
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="width:4ch; grid-column:2/span 2">5 5</item>
-</grid>
-
-<grid title="4th item in col 2-3, 5th item 5ch in col 1-3">
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="grid-column:2/span 2">5 5</item>
- <item style="width:5ch; grid-column:1/span 3">6</item>
-</grid>
-
-<grid title="5th item 3ch in col 2-3, 6th item 5ch in col 1-3">
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="width:3ch; grid-column:2/span 2">5 5</item>
- <item style="width:5ch; grid-column:1/span 3">6</item>
-</grid>
-
-<grid title="5th item span 4">
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="grid-column:span 4">5 5</item>
-</grid>
-
-<grid title="5th item 6ch span 4">
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="width:6ch; grid-column:span 4">5 5</item>
-</grid>
-
-<grid title="5th item 6ch span 3">
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="width:6ch; grid-column:span 3">5 5</item>
-</grid>
-</section>
-
-<!-- ditto with 'fr' sizing -->
-
-<section class="fr">
-<grid title="Wider 1st item 2ch">
- <item style="width:2ch">1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item>5 5</item>
-</grid>
-
-<grid title="Wrapped 5th item 2ch">
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="width:2ch">5 5</item>
-</grid>
-
-<grid title="Wrapped 5th item 2ch in col 2">
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="width:2ch; grid-column:2">5 5</item>
-</grid>
-
-<grid title="5th item 4ch in col 2-3">
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="width:4ch; grid-column:2/span 2">5 5</item>
-</grid>
-
-<grid title="4th item in col 2-3, 5th item 5ch in col 1-3">
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="grid-column:2/span 2">5 5</item>
- <item style="width:5ch; grid-column:1/span 3">6</item>
-</grid>
-
-<grid title="5th item 3ch in col 2-3, 6th item 5ch in col 1-3">
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="width:3ch; grid-column:2/span 2">5 5</item>
- <item style="width:5ch; grid-column:1/span 3">6</item>
-</grid>
-
-<grid title="5th item span 4">
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="grid-column:span 4">5 5</item>
-</grid>
-
-<grid title="5th item 6ch span 4">
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="width:6ch; grid-column:span 4">5 5</item>
-</grid>
-
-<grid title="5th item 6ch span 3">
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="width:6ch; grid-column:span 3">5 5</item>
-</grid>
-</section>
-
-<!-- ditto with mixed sizing -->
-
-<section class="mixed">
-<grid title="Wider 1st item 2ch">
- <item style="width:2ch">1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item>5 5</item>
-</grid>
-
-<grid title="Wrapped 5th item 2ch">
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="width:2ch">5 5</item>
-</grid>
-
-<grid title="Wrapped 5th item 2ch in col 2">
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="width:2ch; grid-column:2">5 5</item>
-</grid>
-
-<grid title="5th item 4ch in col 2-3">
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="width:4ch; grid-column:2/span 2">5 5</item>
-</grid>
-
-<grid title="4th item in col 2-3, 5th item 5ch in col 1-3">
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="grid-column:2/span 2">5 5</item>
- <item style="width:5ch; grid-column:1/span 3">6</item>
-</grid>
-
-<grid title="5th item 3ch in col 2-3, 6th item 5ch in col 1-3">
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="width:3ch; grid-column:2/span 2">5 5</item>
- <item style="width:5ch; grid-column:1/span 3">6</item>
-</grid>
-
-<grid title="5th item span 4">
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="grid-column:span 4">5 5</item>
-</grid>
-
-<grid title="5th item 6ch span 4">
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="width:6ch; grid-column:span 4">5 5</item>
-</grid>
-
-<grid title="5th item 6ch span 3">
- <item>1</item>
- <item>2 2</item>
- <item>3 3</item>
- <item>4</item>
- <item style="width:6ch; grid-column:span 3">5 5</item>
-</grid>
-</section>
-
diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-005-ref.html b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-005-ref.html
deleted file mode 100644
index 725f646ebd9..00000000000
--- a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-005-ref.html
+++ /dev/null
@@ -1,78 +0,0 @@
-<!DOCTYPE HTML>
-<!--
- Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/
--->
-<html>
- <meta charset="utf-8">
- <title>Reference: Masonry layout row sizing (vertical writing mode)</title>
- <link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
- <link rel="stylesheet" type="text/css" href="/fonts/ahem.css">
- <style>
-
-@import "support/masonry-intrinsic-sizing-visual.css";
-
-grid {
- display: inline-grid;
- gap: 1px 2px;
- grid-template-rows: repeat(4,auto);
- grid-auto-flow: column;
- border: 1px solid;
- padding: 0 1px 0 2px;
- vertical-align: top;
-}
-item {
- writing-mode: vertical-lr;
-}
-</style>
-
-<body>
-
-<grid style="grid-template-rows: repeat(4, 3ch)">
- <item style="height:3ch">1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item>5 5</item>
- <item>6</item>
- <item>7</item>
- <item>8</item>
- <item>9 9</item>
-</grid>
-
-<grid style="grid-template-rows: repeat(4,3ch)">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="height:3ch">5 5</item>
- <item>6</item>
- <item>7</item>
- <item>8</item>
- <item>9 9</item>
-</grid>
-
-<grid style="grid-template-rows: 3ch repeat(3,1ch)">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="height:3ch; grid-row:1">5 5</item>
- <item>6</item>
- <item>7</item>
- <item>8</item>
- <item>9 9</item>
-</grid>
-
-<grid style="grid-template-rows: 3ch repeat(3,1ch)">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="height:3ch; grid-column:1">5 5</item>
- <item>6</item>
- <item>7</item>
- <item>8</item>
- <item>9 9</item>
-</grid>
-
diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-005.html b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-005.html
deleted file mode 100644
index 83afd5bafa0..00000000000
--- a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-005.html
+++ /dev/null
@@ -1,81 +0,0 @@
-<!DOCTYPE HTML>
-<!--
- Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/
--->
-<html>
- <meta charset="utf-8">
- <title>CSS Grid Test: Masonry layout row sizing (vertical writing mode)</title>
- <link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
- <link rel="help" href="https://drafts.csswg.org/css-grid-3/#track-sizing">
- <link rel="match" href="masonry-intrinsic-sizing-005-ref.html">
- <link rel="stylesheet" type="text/css" href="/fonts/ahem.css">
- <style>
-
-@import "support/masonry-intrinsic-sizing-visual.css";
-
-grid {
- display: inline-grid;
- gap: 1px 2px;
- grid-template-columns: masonry;
- grid-template-rows: repeat(4,auto);
- border: 1px solid;
- padding: 0 1px 0 2px;
- vertical-align: top;
-}
-
-item {
- writing-mode: vertical-lr;
-}
-</style>
-
-<body>
-
-<grid title="First item 3ch">
- <item style="height:3ch">1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item>5 5</item>
- <item>6</item>
- <item>7</item>
- <item>8</item>
- <item>9 9</item>
-</grid>
-
-<grid title="Fifth item 3ch">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="height:3ch">5 5</item>
- <item>6</item>
- <item>7</item>
- <item>8</item>
- <item>9 9</item>
-</grid>
-
-<grid title="Fifth item 3ch row 1">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="height:3ch; grid-row:1">5 5</item>
- <item>6</item>
- <item>7</item>
- <item>8</item>
- <item>9 9</item>
-</grid>
-
-<grid title="Fifth item 3ch col 1 (ignored)">
- <item>1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="height:3ch; grid-column:1">5 5</item>
- <item>6</item>
- <item>7</item>
- <item>8</item>
- <item>9 9</item>
-</grid>
-
diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-006-ref.html b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-006-ref.html
deleted file mode 100644
index 1a88c2b4cb6..00000000000
--- a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-006-ref.html
+++ /dev/null
@@ -1,51 +0,0 @@
-<!DOCTYPE HTML>
-<!--
- Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/
--->
-<html>
- <meta charset="utf-8">
- <title>Reference: Masonry layout row auto-fill sizing</title>
- <link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
- <link rel="stylesheet" type="text/css" href="/fonts/ahem.css">
- <style>
-
-@import "support/masonry-intrinsic-sizing-visual.css";
-
-grid {
- display: inline-grid;
- gap: 1px 2px;
- grid-auto-flow: column;
- grid-template-rows: repeat(4,1em);
- border: 1px solid;
- padding: 0 1px 0 2px;
- vertical-align: top;
-}
-</style>
-
-<body>
-
-<grid>
- <item style="width:3ch; grid-column: span 2">1 1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="grid-column: span 2">5 5</item>
-</grid>
-
-<grid>
- <item style="width:3ch; grid-column: span 2">1 1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="grid-column: span 2">5 5</item>
-</grid>
-
-<grid style="height:5em">
- <item style="width:3ch; grid-column: span 2">1 1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item style="grid-column: span 2">5 5</item>
-</grid>
-
diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-006.html b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-006.html
deleted file mode 100644
index ad548009216..00000000000
--- a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-006.html
+++ /dev/null
@@ -1,56 +0,0 @@
-<!DOCTYPE HTML>
-<!--
- Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/
--->
-<html>
- <meta charset="utf-8">
- <title>CSS Grid Test: Masonry layout row auto-fill sizing</title>
- <link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
- <link rel="help" href="https://drafts.csswg.org/css-grid-3/#track-sizing">
- <link rel="match" href="masonry-intrinsic-sizing-006-ref.html">
- <link rel="stylesheet" type="text/css" href="/fonts/ahem.css">
- <style>
-
-@import "support/masonry-intrinsic-sizing-visual.css";
-
-grid {
- display: inline-grid;
- gap: 1px 2px;
- grid-template-columns: masonry;
- grid-template-rows: repeat(4,auto);
- border: 1px solid;
- padding: 0 1px 0 2px;
- vertical-align: top;
-}
-</style>
-
-<body>
-
-<grid title="max-height 5em"
- style="max-height:5em; grid-template-rows: repeat(auto-fill,1em);">
- <item>1 1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item>5 5</item>
-</grid>
-
-<grid title="min-height 4em"
- style="min-height:4em; grid-template-rows: repeat(auto-fill,1em);">
- <item>1 1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item>5 5</item>
-</grid>
-
-<grid title="height 5em"
- style="height:5em; grid-template-rows: repeat(auto-fill,1em);">
- <item>1 1</item>
- <item>2</item>
- <item>3</item>
- <item>4</item>
- <item>5 5</item>
-</grid>
-
diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-001-ref.html b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-001-ref.html
new file mode 100644
index 00000000000..eddbb9cbe19
--- /dev/null
+++ b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-001-ref.html
@@ -0,0 +1,360 @@
+<!DOCTYPE HTML>
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html>
+ <meta charset="utf-8">
+ <title>Reference: Masonry layout intrinsic sizing</title>
+ <link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
+ <style>
+
+@import "support/masonry-intrinsic-sizing-visual.css";
+
+grid {
+ display: inline-grid;
+ gap: 1px 2px;
+ grid-auto-rows: auto;
+ border: 1px solid;
+ padding: 0 1px 0 2px;
+ vertical-align: top;
+}
+.auto grid {
+ grid-template-columns: repeat(4,auto);
+}
+.fr grid {
+ grid-template-columns: 1fr 2fr 1fr 1fr;
+}
+.mix1 grid {
+ grid-template-columns: 1fr 2fr min-content max-content;
+}
+.mix2 grid {
+ grid-template-columns: 1.1ch auto 1.4ch 1fr;
+ /* keep fixed values small enough for spanners to have an effect */
+}
+</style>
+
+<body>
+
+<section class="auto">
+<grid style="grid-template-columns: repeat(4, 2ch)">
+ <item style="width:2ch">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item>5</item>
+</grid>
+
+<grid style="grid-template-columns: repeat(4, 2ch)">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:2ch">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:2ch; grid-area:1/2">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="visibility: hidden">4</item>
+ <item style="width:4ch; grid-area:1/2/2/4">5</item>
+</grid>
+
+<grid>
+ <item style="grid-column: 4">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="visibility: hidden">4</item>
+ <item style="grid-area: 1/2/2/span 2">5</item>
+ <item style="width:5ch; grid-area: 2/1/3/4">6</item>
+</grid>
+
+<grid>
+ <item style="grid-column: 4">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="visibility: hidden">4</item>
+ <item style="width:3ch; grid-area:1/2/2/4">5</item>
+ <item style="width:5ch; grid-area:2/1/3/4">6</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-column:span 4">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-column:span 4">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-area: 2/1/3/4">5</item>
+ <item style="width:6ch; grid-area: 2/2/3/5; visibility: hidden">5</item>
+</grid>
+</section>
+
+<!-- ditto with 'fr' sizing -->
+
+<section class="fr">
+<grid>
+ <item style="width:2ch">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item>5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:2ch">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:2ch; grid-area: 1/2">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:4ch; grid-area: 1/2/2/4">5</item>
+</grid>
+
+<grid>
+ <item style="grid-column: 4">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="visibility: hidden">4</item>
+ <item style="grid-area: 1/2/2/span 2">5</item>
+ <item style="width:5ch; grid-area: 2/1/3/4">6</item>
+</grid>
+
+<grid>
+ <item style="grid-column: 4">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="visibility: hidden">4</item>
+ <item style="width:3ch; grid-area:1/2/2/4">5</item>
+ <item style="width:5ch; grid-area:2/1/3/4">6</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-column:span 4">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-column:span 4">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-area: 2/1/3/4">5</item>
+ <item style="width:6ch; grid-area: 2/2/3/5; visibility: hidden">5</item>
+</grid>
+</section>
+
+<!-- ditto with mixed sizing: fr + min/max-content -->
+
+<section class="mix1">
+<grid style="grid-template-columns: 2ch 4ch 2ch 2ch">
+ <item style="width:2ch">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item>5</item>
+</grid>
+
+<grid style="grid-template-columns: 2ch 4ch 2ch 2ch">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:2ch">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:2ch; grid-area: 1/2">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="visibility: hidden">4</item>
+ <item style="width:4ch; grid-area: 1/2/2/4">5</item>
+</grid>
+
+<grid>
+ <item style="grid-column: 4">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="visibility: hidden">4</item>
+ <item style="grid-area: 1/2/2/span 2">5</item>
+ <item style="width:5ch; grid-area: 2/1/3/4">6</item>
+</grid>
+
+<grid>
+ <item style="grid-column: 4">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="visibility: hidden">4</item>
+ <item style="width:3ch; grid-area:1/2/2/4">5</item>
+ <item style="width:5ch; grid-area:2/1/3/4">6</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-column:span 4">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-column:span 4">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-area: 2/1/3/4">5</item>
+ <item style="width:6ch; grid-area: 2/2/3/5; visibility: hidden">5</item>
+</grid>
+</section>
+
+<!-- ditto with mixed sizing: fixed + auto + fr -->
+
+<section class="mix2">
+<grid style="grid-template-columns: 1.1ch 2ch 1.4ch 2ch">
+ <item style="width:2ch">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item>5</item>
+</grid>
+
+<grid style="grid-template-columns: 1.1ch 2ch 1.4ch 2ch">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:2ch">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:2ch; grid-area: 1/2">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="visibility: hidden">4</item>
+ <item style="width:4ch; grid-area: 1/2/2/4">5</item>
+</grid>
+
+<grid>
+ <item style="grid-column: 4">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-area: 1/2/2/span 2">5</item>
+ <item style="width:5ch; grid-area: 2/1/3/4">6</item>
+</grid>
+
+<grid>
+ <item style="grid-column: 4">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:3ch; grid-area:1/2/2/4">5</item>
+ <item style="width:5ch; grid-area:2/1/3/4">6</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-column:span 4">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-column:span 4">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-area: 2/1/3/4">5</item>
+ <item style="width:6ch; grid-area: 2/2/3/5; visibility: hidden">5</item>
+</grid>
+</section>
diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-001.html b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-001.html
new file mode 100644
index 00000000000..ead5ad98086
--- /dev/null
+++ b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-001.html
@@ -0,0 +1,349 @@
+<!DOCTYPE HTML>
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html>
+ <meta charset="utf-8">
+ <title>CSS Grid Test: Masonry layout column sizing - intrinsic</title>
+ <link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
+ <link rel="help" href="https://drafts.csswg.org/css-grid-3/#track-sizing">
+ <link rel="match" href="masonry-intrinsic-sizing-cols-001-ref.html">
+ <style>
+
+@import "support/masonry-intrinsic-sizing-visual.css";
+
+grid {
+ display: inline-grid;
+ gap: 1px 2px;
+ grid-template-rows: masonry;
+ border: 1px solid;
+ padding: 0 1px 0 2px;
+ vertical-align: top;
+}
+.auto grid {
+ grid-template-columns: repeat(4,auto);
+}
+.fr grid {
+ grid-template-columns: 1fr 2fr 1fr 1fr;
+}
+.mix1 grid {
+ grid-template-columns: 1fr 2fr min-content max-content;
+}
+.mix2 grid {
+ grid-template-columns: 1.1ch auto 1.4ch 1fr;
+ /* keep fixed values small enough for spanners to have an effect */
+}
+</style>
+
+<body>
+
+<section class="auto">
+<grid title="Wider 1st item 2ch">
+ <item style="width:2ch">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item>5</item>
+</grid>
+
+<grid title="Wider 5th item 2ch">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:2ch">5</item>
+</grid>
+
+<grid title="Wider 5th item 2ch in col 2">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:2ch; grid-column:2">5</item>
+</grid>
+
+<grid title="Wider 5th item 4ch in col 2-3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:4ch; grid-column:2/span 2">5</item>
+</grid>
+
+<grid title="5th item in col 2-3, wider 6th item 5ch in col 1-3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-column:2/span 2">5</item>
+ <item style="width:5ch; grid-column:span 3/4">6</item>
+</grid>
+
+<grid title="5th item 3ch in 2-3, 6th item 5ch in 1-3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:3ch; grid-column:span 2/4">5</item>
+ <item style="width:5ch; grid-column:1/span 3">6</item>
+</grid>
+
+<grid title="5th item span 4">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-column:span 4">5</item>
+</grid>
+
+<grid title="5th item 6ch span 4">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-column:span 4">5</item>
+</grid>
+
+<grid title="5th item 6ch span 3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-column:span 3">5</item>
+</grid>
+</section>
+
+<!-- ditto with 'fr' sizing -->
+
+<section class="fr">
+<grid title="Wider 1st item 2ch">
+ <item style="width:2ch">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item>5</item>
+</grid>
+
+<grid title="Wider 5th item 2ch">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:2ch">5</item>
+</grid>
+
+<grid title="Wider 5th item 2ch in col 2">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:2ch; grid-column:2">5</item>
+</grid>
+
+<grid title="Wider 5th item 4ch in col 2-3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:4ch; grid-column:2/span 2">5</item>
+</grid>
+
+<grid title="5th item in col 2-3, wider 6th item 5ch in col 1-3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-column:2/span 2">5</item>
+ <item style="width:5ch; grid-column:span 3/4">6</item>
+</grid>
+
+<grid title="5th item 3ch in 2-3, 6th item 5ch in 1-3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:3ch; grid-column:span 2/4">5</item>
+ <item style="width:5ch; grid-column:1/span 3">6</item>
+</grid>
+
+<grid title="5th item span 4">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-column:span 4">5</item>
+</grid>
+
+<grid title="5th item 6ch span 4">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-column:span 4">5</item>
+</grid>
+
+<grid title="5th item 6ch span 3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-column:span 3">5</item>
+</grid>
+</section>
+
+<!-- ditto with mixed sizing: fr + min/max-content -->
+
+<section class="mix1">
+<grid title="Wider 1st item 2ch">
+ <item style="width:2ch">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item>5</item>
+</grid>
+
+<grid title="Wider 5th item 2ch">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:2ch">5</item>
+</grid>
+
+<grid title="Wider 5th item 2ch in col 2">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:2ch; grid-column:2">5</item>
+</grid>
+
+<grid title="Wider 5th item 4ch in col 2-3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:4ch; grid-column:2/span 2">5</item>
+</grid>
+
+<grid title="5th item in col 2-3, wider 6th item 5ch in col 1-3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-column:2/span 2">5</item>
+ <item style="width:5ch; grid-column:span 3/4">6</item>
+</grid>
+
+<grid title="5th item 3ch in 2-3, 6th item 5ch in 1-3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:3ch; grid-column:span 2/4">5</item>
+ <item style="width:5ch; grid-column:1/span 3">6</item>
+</grid>
+
+<grid title="5th item span 4">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-column:span 4">5</item>
+</grid>
+
+<grid title="5th item 6ch span 4">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-column:span 4">5</item>
+</grid>
+
+<grid title="5th item 6ch span 3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-column:span 3">5</item>
+</grid>
+</section>
+
+<!-- ditto with mixed sizing: fixed + auto + fr -->
+
+<section class="mix2">
+<grid title="Wider 1st item 2ch">
+ <item style="width:2ch">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item>5</item>
+</grid>
+
+<grid title="Wider 5th item 2ch">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:2ch">5</item>
+</grid>
+
+<grid title="Wider 5th item 2ch in col 2">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:2ch; grid-column:2">5</item>
+</grid>
+
+<grid title="Wider 5th item 4ch in col 2-3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:4ch; grid-column:2/span 2">5</item>
+</grid>
+
+<grid title="5th item in col 2-3, wider 6th item 5ch in col 1-3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-column:2/span 2">5</item>
+ <item style="width:5ch; grid-column:span 3/4">6</item>
+</grid>
+
+<grid title="5th item 3ch in 2-3, 6th item 5ch in 1-3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:3ch; grid-column:span 2/4">5</item>
+ <item style="width:5ch; grid-column:1/span 3">6</item>
+</grid>
+
+<grid title="5th item span 4">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-column:span 4">5</item>
+</grid>
+
+<grid title="5th item 6ch span 4">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-column:span 4">5</item>
+</grid>
+
+<grid title="5th item 6ch span 3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-column:span 3">5</item>
+</grid>
+</section>
diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-002-ref.html b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-002-ref.html
new file mode 100644
index 00000000000..54f29233252
--- /dev/null
+++ b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-002-ref.html
@@ -0,0 +1,362 @@
+<!DOCTYPE HTML>
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html>
+ <meta charset="utf-8">
+ <title>Reference: Masonry layout intrinsic sizing</title>
+ <link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
+ <style>
+
+@import "support/masonry-intrinsic-sizing-visual.css";
+
+grid {
+ display: inline-grid;
+ gap: 1px 2px;
+ grid-auto-rows: 1em;
+ border: 1px solid;
+ padding: 0 1px 0 2px;
+ vertical-align: top;
+ width: min-content;
+}
+.auto grid {
+ grid-template-columns: repeat(4,auto);
+}
+.fr grid {
+ grid-template-columns: 1fr 2fr 1fr 1fr;
+}
+.mix1 grid {
+ grid-template-columns: 1fr 2fr min-content max-content;
+}
+.mix2 grid {
+ grid-template-columns: 1.1ch auto 1.4ch 1fr;
+ /* keep fixed values small enough for spanners to have an effect */
+}
+</style>
+
+<body>
+
+<section class="auto">
+<grid style="grid-template-columns: repeat(4, 2ch)">
+ <item style="width:2ch">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item>5</item>
+</grid>
+
+<grid style="grid-template-columns: repeat(4, 2ch)">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:2ch">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:2ch; grid-area:1/2">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="visibility: hidden">4</item>
+ <item style="width:4ch; grid-area:1/2/2/4">5</item>
+</grid>
+
+<grid>
+ <item style="grid-column: 4">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="visibility: hidden">4</item>
+ <item style="grid-area: 1/2/2/span 2">5</item>
+ <item style="width:5ch; grid-area: 2/1/3/4">6</item>
+</grid>
+
+<grid>
+ <item style="grid-column: 4">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="visibility: hidden">4</item>
+ <item style="width:3ch; grid-area:1/2/2/4">5</item>
+ <item style="width:5ch; grid-area:2/1/3/4">6</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-column:span 4">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-column:span 4">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-area: 2/1/3/4">5</item>
+ <item style="width:6ch; grid-area: 2/2/3/5; visibility: hidden">5</item>
+</grid>
+</section>
+
+<!-- ditto with 'fr' sizing -->
+
+<section class="fr">
+<grid style="grid-template-columns: repeat(4, 2ch)">
+ <item style="width:2ch">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item>5</item>
+</grid>
+
+<grid style="grid-template-columns: repeat(4, 2ch)">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:2ch">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:2ch; grid-area: 1/2">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:4ch; grid-area: 1/2/2/4">5</item>
+</grid>
+
+<grid>
+ <item style="grid-column: 4">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="visibility: hidden">4</item>
+ <item style="grid-area: 1/2/2/span 2">5</item>
+ <item style="width:5ch; grid-area: 2/1/3/4">6</item>
+</grid>
+
+<grid>
+ <item style="grid-column: 4">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="visibility: hidden">4</item>
+ <item style="width:3ch; grid-area:1/2/2/4">5</item>
+ <item style="width:5ch; grid-area:2/1/3/4">6</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-column:span 4">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-column:span 4">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-area: 2/1/3/4">5</item>
+ <item style="width:6ch; grid-area: 2/2/3/5; visibility: hidden">5</item>
+</grid>
+</section>
+
+<!-- ditto with mixed sizing: fr + min/max-content -->
+
+<section class="mix1">
+<grid style="grid-template-columns: repeat(4, 2ch)">
+ <item style="width:2ch">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item>5</item>
+</grid>
+
+<grid style="grid-template-columns: repeat(4, 2ch)">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:2ch">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:2ch; grid-area: 1/2">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="visibility: hidden">4</item>
+ <item style="width:4ch; grid-area: 1/2/2/4">5</item>
+</grid>
+
+<grid>
+ <item style="grid-column: 4">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="visibility: hidden">4</item>
+ <item style="grid-area: 1/2/2/span 2">5</item>
+ <item style="width:5ch; grid-area: 2/1/3/4">6</item>
+</grid>
+
+<grid>
+ <item style="grid-column: 4">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="visibility: hidden">4</item>
+ <item style="width:3ch; grid-area:1/2/2/4">5</item>
+ <item style="width:5ch; grid-area:2/1/3/4">6</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-column:span 4">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-column:span 4">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-area: 2/1/3/4">5</item>
+ <item style="width:6ch; grid-area: 2/2/3/5; visibility: hidden">5</item>
+</grid>
+</section>
+
+<!-- ditto with mixed sizing: fixed + auto + fr -->
+
+<section class="mix2">
+<grid>
+ <item style="width:2ch">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item>5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:2ch">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:2ch; grid-area: 1/2">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="visibility: hidden">4</item>
+ <item style="width:4ch; grid-area: 1/2/2/4">5</item>
+</grid>
+
+<grid>
+ <item style="grid-column: 4">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-area: 1/2/2/span 2">5</item>
+ <item style="width:5ch; grid-area: 2/1/3/4">6</item>
+</grid>
+
+<grid>
+ <item style="grid-column: 4">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:3ch; grid-area:1/2/2/4">5</item>
+ <item style="width:5ch; grid-area:2/1/3/4">6</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-column:span 4">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-column:span 4">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-area: 2/1/3/4">5</item>
+ <item style="width:6ch; grid-area: 2/2/3/5; visibility: hidden">5</item>
+</grid>
+</section>
+
diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-002.html b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-002.html
new file mode 100644
index 00000000000..03e8617f248
--- /dev/null
+++ b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-002.html
@@ -0,0 +1,351 @@
+<!DOCTYPE HTML>
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html>
+ <meta charset="utf-8">
+ <title>CSS Grid Test: Masonry layout column sizing - min-content constraint</title>
+ <link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
+ <link rel="help" href="https://drafts.csswg.org/css-grid-3/#track-sizing">
+ <link rel="match" href="masonry-intrinsic-sizing-cols-002-ref.html">
+ <style>
+
+@import "support/masonry-intrinsic-sizing-visual.css";
+
+grid {
+ display: inline-grid;
+ gap: 1px 2px;
+ grid-template-rows: masonry;
+ border: 1px solid;
+ padding: 0 1px 0 2px;
+ vertical-align: top;
+ width: min-content;
+}
+
+.auto grid {
+ grid-template-columns: repeat(4,auto);
+}
+.fr grid {
+ grid-template-columns: 1fr 2fr 1fr 1fr;
+}
+.mix1 grid {
+ grid-template-columns: 1fr 2fr min-content max-content;
+}
+.mix2 grid {
+ grid-template-columns: 1.1ch auto 1.4ch 1fr;
+ /* keep fixed values small enough for spanners to have an effect */
+}
+</style>
+
+<body>
+
+<section class="auto">
+<grid title="Wider 1st item 2ch">
+ <item style="width:2ch">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item>5</item>
+</grid>
+
+<grid title="Wider 5th item 2ch">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:2ch">5</item>
+</grid>
+
+<grid title="Wider 5th item 2ch in col 2">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:2ch; grid-column:2">5</item>
+</grid>
+
+<grid title="Wider 5th item 4ch in col 2-3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:4ch; grid-column:2/span 2">5</item>
+</grid>
+
+<grid title="5th item in col 2-3, wider 6th item 5ch in col 1-3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-column:2/span 2">5</item>
+ <item style="width:5ch; grid-column:span 3/4">6</item>
+</grid>
+
+<grid title="5th item 3ch in 2-3, 6th item 5ch in 1-3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:3ch; grid-column:span 2/4">5</item>
+ <item style="width:5ch; grid-column:1/span 3">6</item>
+</grid>
+
+<grid title="5th item spanning 4">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-column:span 4">5</item>
+</grid>
+
+<grid title="5th item 6ch spanning 4">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-column:span 4">5</item>
+</grid>
+
+<grid title="5th item 6ch spanning 3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-column:span 3">5</item>
+</grid>
+</section>
+
+<!-- ditto with 'fr' sizing -->
+
+<section class="fr">
+<grid title="Wider 1st item 2ch">
+ <item style="width:2ch">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item>5</item>
+</grid>
+
+<grid title="Wider 5th item 2ch">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:2ch">5</item>
+</grid>
+
+<grid title="Wider 5th item 2ch in col 2">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:2ch; grid-column:2">5</item>
+</grid>
+
+<grid title="Wider 5th item 4ch in col 2-3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:4ch; grid-column:2/span 2">5</item>
+</grid>
+
+<grid title="5th item in col 2-3, wider 6th item 5ch in col 1-3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-column:2/span 2">5</item>
+ <item style="width:5ch; grid-column:span 3/4">6</item>
+</grid>
+
+<grid title="5th item 3ch in 2-3, 6th item 5ch in 1-3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:3ch; grid-column:span 2/4">5</item>
+ <item style="width:5ch; grid-column:1/span 3">6</item>
+</grid>
+
+<grid title="5th item span 4">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-column:span 4">5</item>
+</grid>
+
+<grid title="5th item 6ch span 4">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-column:span 4">5</item>
+</grid>
+
+<grid title="5th item 6ch span 3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-column:span 3">5</item>
+</grid>
+</section>
+
+<!-- ditto with mixed sizing: fr + min/max-content -->
+
+<section class="mix1">
+<grid title="Wider 1st item 2ch">
+ <item style="width:2ch">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item>5</item>
+</grid>
+
+<grid title="Wider 5th item 2ch">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:2ch">5</item>
+</grid>
+
+<grid title="Wider 5th item 2ch in col 2">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:2ch; grid-column:2">5</item>
+</grid>
+
+<grid title="Wider 5th item 4ch in col 2-3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:4ch; grid-column:2/span 2">5</item>
+</grid>
+
+<grid title="5th item in col 2-3, wider 6th item 5ch in col 1-3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-column:2/span 2">5</item>
+ <item style="width:5ch; grid-column:span 3/4">6</item>
+</grid>
+
+<grid title="5th item 3ch in 2-3, 6th item 5ch in 1-3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:3ch; grid-column:span 2/4">5</item>
+ <item style="width:5ch; grid-column:1/span 3">6</item>
+</grid>
+
+<grid title="5th item span 4">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-column:span 4">5</item>
+</grid>
+
+<grid title="5th item 6ch span 4">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-column:span 4">5</item>
+</grid>
+
+<grid title="5th item 6ch span 3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-column:span 3">5</item>
+</grid>
+</section>
+
+<!-- ditto with mixed sizing: fixed + auto + fr -->
+
+<section class="mix2">
+<grid title="Wider 1st item 2ch">
+ <item style="width:2ch">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item>5</item>
+</grid>
+
+<grid title="Wider 5th item 2ch">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:2ch">5</item>
+</grid>
+
+<grid title="Wider 5th item 2ch in col 2">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:2ch; grid-column:2">5</item>
+</grid>
+
+<grid title="Wider 5th item 4ch in col 2-3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:4ch; grid-column:2/span 2">5</item>
+</grid>
+
+<grid title="5th item in col 2-3, wider 6th item 5ch in col 1-3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-column:2/span 2">5</item>
+ <item style="width:5ch; grid-column:span 3/4">6</item>
+</grid>
+
+<grid title="5th item 3ch in 2-3, 6th item 5ch in 1-3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:3ch; grid-column:span 2/4">5</item>
+ <item style="width:5ch; grid-column:1/span 3">6</item>
+</grid>
+
+<grid title="5th item span 4">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-column:span 4">5</item>
+</grid>
+
+<grid title="5th item 6ch span 4">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-column:span 4">5</item>
+</grid>
+
+<grid title="5th item 6ch span 3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-column:span 3">5</item>
+</grid>
+</section>
diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-003-ref.html b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-003-ref.html
new file mode 100644
index 00000000000..d088b132c29
--- /dev/null
+++ b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-003-ref.html
@@ -0,0 +1,433 @@
+<!DOCTYPE HTML>
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html>
+ <meta charset="utf-8">
+ <title>Reference: Masonry layout min-content sizing</title>
+ <link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
+ <style>
+
+@import "support/masonry-intrinsic-sizing-visual.css";
+
+grid {
+ display: inline-grid;
+ gap: 1px 2px;
+ border: 1px solid;
+ padding: 0 1px 0 2px;
+ vertical-align: top;
+ width: min-content;
+}
+.auto grid {
+ grid-template-columns: repeat(4,auto);
+}
+.fr grid {
+ grid-template-columns: 1fr 2fr 1fr 1fr;
+}
+.mix1 grid {
+ grid-template-columns: 1fr 2fr min-content max-content;
+}
+.mix2 grid {
+ grid-template-columns: 1.1ch auto 1.4ch 1fr;
+ /* keep fixed values small enough for spanners to have an effect */
+}
+
+item {
+ align-self: start;
+}
+.hidden {
+ visibility: hidden;
+ height: 0;
+}
+</style>
+
+<body>
+
+<section class="auto">
+<grid style="grid-template-columns: repeat(4, 2ch)">
+ <item style="width:2ch">1</item>
+ <item style="grid-row: span 2">2 2</item>
+ <item style="grid-row: span 2">3 3</item>
+ <item>4</item>
+ <item style="grid-row: span 2">5 5</item>
+</grid>
+
+<grid style="grid-template-columns: repeat(4, 2ch)">
+ <item>1</item>
+ <item style="grid-row: span 2">2 2</item>
+ <item style="grid-row: span 2">3 3</item>
+ <item>4</item>
+ <item style="grid-row: span 2">5 5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item style="grid-row: span 2">2 2</item>
+ <item style="grid-row: span 2">3 3</item>
+ <item>4</item>
+ <item style="width:2ch; grid-area: 1/2/3">5 5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item style="grid-row: span 2">2 2</item>
+ <item style="grid-row: span 2">3 3</item>
+ <item>4</item>
+ <item style="width:4ch; grid-area: 1/2/auto/4">5 5</item>
+
+ <item class="hidden">0</item>
+</grid>
+
+<grid>
+ <item style="grid-column: 4">1</item>
+ <item style="grid-row: span 2">2 2</item>
+ <item style="grid-row: span 2">3 3</item>
+ <item>4</item>
+ <item style="grid-area: 1/2/2/4">5 5</item>
+ <item style="width:5ch; grid-area: 2/1/3/4">6</item>
+
+ <item class="hidden">0</item>
+ <item class="hidden">0 0</item>
+ <item class="hidden">0 0</item>
+</grid>
+
+<grid>
+ <item style="grid-column: 4">1</item>
+ <item style="grid-row: span 2">2 2</item>
+ <item style="grid-row: span 2">3 3</item>
+ <item>4</item>
+ <item style="width:3ch; grid-area: 1/2/2/4">5 5</item>
+ <item style="width:5ch; grid-area: 2/1/3/4">6</item>
+
+ <item class="hidden">0</item>
+ <item class="hidden">0 0</item>
+ <item class="hidden">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item style="grid-row: span 2">2 2</item>
+ <item style="grid-row: span 2">3 3</item>
+ <item>4</item>
+ <item style="grid-area: 3/1/4/5">5 5</item>
+
+ <item class="hidden">0 0</item>
+ <item class="hidden">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item style="grid-row: span 2">2 2</item>
+ <item style="grid-row: span 2">3 3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-area: 3/1/4/5">5 5</item>
+
+ <item class="hidden">0 0</item>
+ <item class="hidden">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item style="grid-row: span 2">2 2</item>
+ <item style="grid-row: span 2">3 3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-area: 3/1/4/4">5 5</item>
+
+ <item class="hidden">0 0</item>
+ <item class="hidden">0 0</item>
+ <item class="hidden" style="width:6ch; grid-area: 3/2/4/5">0 0</item>
+</grid>
+</section>
+
+<!-- ditto with 'fr' sizing -->
+
+<section class="fr">
+<grid style="grid-template-columns: repeat(4, 2ch)">
+ <item style="width:2ch">1</item>
+ <item style="grid-row: span 2">2 2</item>
+ <item style="grid-row: span 2">3 3</item>
+ <item>4</item>
+ <item style="grid-row: span 2">5 5</item>
+</grid>
+
+<grid style="grid-template-columns: repeat(4, 2ch)">
+ <item>1</item>
+ <item style="grid-row: span 2">2 2</item>
+ <item style="grid-row: span 2">3 3</item>
+ <item>4</item>
+ <item style="grid-row: span 2">5 5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item style="grid-row: span 2">2 2</item>
+ <item style="grid-row: span 2">3 3</item>
+ <item>4</item>
+ <item style="width:2ch; grid-area: 1/2/3">5 5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item style="grid-row: span 2">2 2</item>
+ <item style="grid-row: span 2">3 3</item>
+ <item>4</item>
+ <item style="width:4ch; grid-area: 1/2/auto/4">5 5</item>
+ <item class="hidden">0</item>
+</grid>
+
+<grid>
+ <item style="grid-column: 4">1</item>
+ <item style="grid-row: span 2">2 2</item>
+ <item style="grid-row: span 2">3 3</item>
+ <item>4</item>
+ <item style="grid-area: 1/2/2/4">5 5</item>
+ <item style="width:5ch; grid-area: 2/1/3/4">6</item>
+ <item class="hidden">0</item>
+ <item class="hidden">0 0</item>
+ <item class="hidden">0 0</item>
+</grid>
+
+<grid>
+ <item style="grid-column: 4">1</item>
+ <item style="grid-row: span 2">2 2</item>
+ <item style="grid-row: span 2">3 3</item>
+ <item>4</item>
+ <item style="width:3ch; grid-area: 1/2/2/4">5 5</item>
+ <item style="width:5ch; grid-area: 2/1/3/4">6</item>
+
+ <item class="hidden">0</item>
+ <item class="hidden">0 0</item>
+ <item class="hidden">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item style="grid-row: span 2">2 2</item>
+ <item style="grid-row: span 2">3 3</item>
+ <item>4</item>
+ <item style="grid-area: 3/1/4/5">5 5</item>
+
+ <item class="hidden">0 0</item>
+ <item class="hidden">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item style="grid-row: span 2">2 2</item>
+ <item style="grid-row: span 2">3 3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-area: 3/1/4/5">5 5</item>
+
+ <item class="hidden">0 0</item>
+ <item class="hidden">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item style="grid-row: span 2">2 2</item>
+ <item style="grid-row: span 2">3 3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-area: 3/1/4/4">5 5</item>
+
+ <item class="hidden">0 0</item>
+ <item class="hidden">0 0</item>
+ <item class="hidden" style="width:6ch; grid-area: 3/2/4/5">0 0</item>
+</grid>
+</section>
+
+<!-- ditto with mixed sizing: fr + min/max-content -->
+
+<section class="mix1">
+<grid style="grid-template-columns: repeat(3, 2ch) max-content">
+ <item style="width:2ch">1</item>
+ <item style="grid-row: span 2">2 2</item>
+ <item style="grid-row: span 2">3 3</item>
+ <item>4</item>
+ <item style="grid-row: span 2">5 5</item>
+ <item class="hidden" style="grid-area: 2/4/4">0 0</item>
+</grid>
+
+<grid style="grid-template-columns: repeat(3, 2ch) max-content">
+ <item>1</item>
+ <item style="grid-row: span 2">2 2</item>
+ <item style="grid-row: span 2">3 3</item>
+ <item>4</item>
+ <item style="grid-row: span 2">5 5</item>
+ <item class="hidden" style="grid-area: 2/4/4">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item style="grid-row: span 2">2 2</item>
+ <item style="grid-row: span 2">3 3</item>
+ <item>4</item>
+ <item style="width:2ch; grid-area: 1/2/3">5 5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item style="grid-row: span 2">2 2</item>
+ <item style="grid-row: span 2">3 3</item>
+ <item>4</item>
+ <item style="width:4ch; grid-area: 1/2/auto/4">5 5</item>
+ <item class="hidden">0</item>
+</grid>
+
+<grid>
+ <item style="grid-column: 4">1</item>
+ <item style="grid-row: span 2">2 2</item>
+ <item style="grid-row: span 2">3 3</item>
+ <item>4</item>
+ <item style="grid-area: 1/2/2/4">5 5</item>
+ <item style="width:5ch; grid-area: 2/1/3/4">6</item>
+ <item class="hidden">0</item>
+ <item class="hidden">0 0</item>
+ <item class="hidden">0 0</item>
+</grid>
+
+<grid>
+ <item style="grid-column: 4">1</item>
+ <item style="grid-row: span 2">2 2</item>
+ <item style="grid-row: span 2">3 3</item>
+ <item>4</item>
+ <item style="width:3ch; grid-area: 1/2/2/4">5 5</item>
+ <item style="width:5ch; grid-area: 2/1/3/4">6</item>
+
+ <item class="hidden">0</item>
+ <item class="hidden">0 0</item>
+ <item class="hidden">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item style="grid-row: span 2">2 2</item>
+ <item style="grid-row: span 2">3 3</item>
+ <item>4</item>
+ <item style="grid-area: 3/1/4/5">5 5</item>
+
+ <item class="hidden">0 0</item>
+ <item class="hidden">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item style="grid-row: span 2">2 2</item>
+ <item style="grid-row: span 2">3 3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-area: 3/1/4/5">5 5</item>
+
+ <item class="hidden">0 0</item>
+ <item class="hidden">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item style="grid-row: span 2">2 2</item>
+ <item style="grid-row: span 2">3 3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-area: 3/1/4/4">5 5</item>
+
+ <item class="hidden">0 0</item>
+ <item class="hidden">0 0</item>
+ <item class="hidden" style="width:6ch; grid-area: 3/2/4/5">0 0</item>
+</grid>
+</section>
+
+<!-- ditto with mixed sizing: fixed + auto + fr -->
+
+<section class="mix2">
+<grid style="grid-template-columns: 1.1ch 2ch 1.4ch 2ch">
+ <item style="width:2ch">1</item>
+ <item style="grid-row: span 2">2 2</item>
+ <item style="grid-row: span 2">3 3</item>
+ <item>4</item>
+ <item style="grid-row: span 2">5 5</item>
+ <item class="hidden" style="grid-area: 2/4/4">0 0</item>
+</grid>
+
+<grid style="grid-template-columns: 1.1ch 2ch 1.4ch 2ch">
+ <item>1</item>
+ <item style="grid-row: span 2">2 2</item>
+ <item style="grid-row: span 2">3 3</item>
+ <item>4</item>
+ <item style="grid-row: span 2">5 5</item>
+ <item class="hidden" style="grid-area: 2/4/4">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item style="grid-row: span 2">2 2</item>
+ <item style="grid-row: span 2">3 3</item>
+ <item>4</item>
+ <item style="width:2ch; grid-area: 1/2/3">5 5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item style="grid-row: span 2">2 2</item>
+ <item style="grid-row: span 2">3 3</item>
+ <item>4</item>
+ <item style="width:4ch; grid-area: 1/2/auto/4">5 5</item>
+ <item class="hidden">0</item>
+</grid>
+
+<grid>
+ <item style="grid-column: 4">1</item>
+ <item style="grid-row: span 2">2 2</item>
+ <item style="grid-row: span 2">3 3</item>
+ <item>4</item>
+ <item style="grid-area: 1/2/2/4">5 5</item>
+ <item style="width:5ch; grid-area: 2/1/3/4">6</item>
+ <item class="hidden">0</item>
+ <item class="hidden">0 0</item>
+ <item class="hidden">0 0</item>
+</grid>
+
+<grid>
+ <item style="grid-column: 4">1</item>
+ <item style="grid-row: span 2">2 2</item>
+ <item style="grid-row: span 2">3 3</item>
+ <item>4</item>
+ <item style="width:3ch; grid-area: 1/2/2/4">5 5</item>
+ <item style="width:5ch; grid-area: 2/1/3/4">6</item>
+
+ <item class="hidden">0</item>
+ <item class="hidden">0 0</item>
+ <item class="hidden">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item style="grid-row: span 2">2 2</item>
+ <item style="grid-row: span 2">3 3</item>
+ <item>4</item>
+ <item style="grid-area: 3/1/4/5">5 5</item>
+
+ <item class="hidden">0 0</item>
+ <item class="hidden">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item style="grid-row: span 2">2 2</item>
+ <item style="grid-row: span 2">3 3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-area: 3/1/4/5">5 5</item>
+
+ <item class="hidden">0 0</item>
+ <item class="hidden">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item style="grid-row: span 2">2 2</item>
+ <item style="grid-row: span 2">3 3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-area: 3/1/4/4">5 5</item>
+
+ <item class="hidden">0 0</item>
+ <item class="hidden">0 0</item>
+ <item class="hidden" style="width:6ch; grid-area: 3/2/4/5">0 0</item>
+</grid>
+</section>
diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-003.html b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-003.html
new file mode 100644
index 00000000000..9b03ee44ab1
--- /dev/null
+++ b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-003.html
@@ -0,0 +1,350 @@
+<!DOCTYPE HTML>
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html>
+ <meta charset="utf-8">
+ <title>CSS Grid Test: Masonry layout column sizing - min-content</title>
+ <link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
+ <link rel="help" href="https://drafts.csswg.org/css-grid-3/#track-sizing">
+ <link rel="match" href="masonry-intrinsic-sizing-cols-003-ref.html">
+ <style>
+
+@import "support/masonry-intrinsic-sizing-visual.css";
+
+grid {
+ display: inline-grid;
+ gap: 1px 2px;
+ grid-template-rows: masonry;
+ border: 1px solid;
+ padding: 0 1px 0 2px;
+ vertical-align: top;
+ width: min-content;
+}
+.auto grid {
+ grid-template-columns: repeat(4,auto);
+}
+.fr grid {
+ grid-template-columns: 1fr 2fr 1fr 1fr;
+}
+.mix1 grid {
+ grid-template-columns: 1fr 2fr min-content max-content;
+}
+.mix2 grid {
+ grid-template-columns: 1.1ch auto 1.4ch 1fr;
+ /* keep fixed values small enough for spanners to have an effect */
+}
+</style>
+
+<body>
+
+<section class="auto">
+<grid title="Wider 1st item 2ch">
+ <item style="width:2ch">1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item>5 5</item>
+</grid>
+
+<grid title="Wrapped 5th item 2ch">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:2ch">5 5</item>
+</grid>
+
+<grid title="Wrapped 5th item 2ch in col 2">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:2ch; grid-column:2">5 5</item>
+</grid>
+
+<grid title="5th item 4ch in col 2-3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:4ch; grid-column:2/span 2">5 5</item>
+</grid>
+
+<grid title="5th item in col 2-3, 6th item 5ch in col 1-3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="grid-column:2/span 2">5 5</item>
+ <item style="width:5ch; grid-column:span 3/4">6</item>
+</grid>
+
+<grid title="5th item 3ch in col 2-3, 6th item 5ch in col 1-3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:3ch; grid-column:span 2/4">5</item>
+ <item style="width:5ch; grid-column:1/span 3">6</item>
+</grid>
+
+<grid title="5th item span 4">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="grid-column:span 4">5 5</item>
+</grid>
+
+<grid title="5th item 6ch span 4">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-column:span 4">5 5</item>
+</grid>
+
+<grid title="5th item 6ch span 3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-column:span 3">5 5</item>
+</grid>
+</section>
+
+<!-- ditto with 'fr' sizing -->
+
+<section class="fr">
+<grid title="Wider 1st item 2ch">
+ <item style="width:2ch">1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item>5 5</item>
+</grid>
+
+<grid title="Wrapped 5th item 2ch">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:2ch">5 5</item>
+</grid>
+
+<grid title="Wrapped 5th item 2ch in col 2">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:2ch; grid-column:2">5 5</item>
+</grid>
+
+<grid title="5th item 4ch in col 2-3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:4ch; grid-column:2/span 2">5 5</item>
+</grid>
+
+<grid title="5th item in col 2-3, 6th item 5ch in col 1-3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="grid-column:2/span 2">5 5</item>
+ <item style="width:5ch; grid-column:span 3/4">6</item>
+</grid>
+
+<grid title="5th item 3ch in col 2-3, 6th item 5ch in col 1-3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:3ch; grid-column:span 2/4">5</item>
+ <item style="width:5ch; grid-column:1/span 3">6</item>
+</grid>
+
+<grid title="5th item span 4">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="grid-column:span 4">5 5</item>
+</grid>
+
+<grid title="5th item 6ch span 4">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-column:span 4">5 5</item>
+</grid>
+
+<grid title="5th item 6ch span 3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-column:span 3">5 5</item>
+</grid>
+</section>
+
+<!-- ditto with mixed sizing: fr + min/max-content -->
+
+<section class="mix1">
+<grid title="Wider 1st item 2ch">
+ <item style="width:2ch">1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item>5 5</item>
+</grid>
+
+<grid title="Wrapped 5th item 2ch">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:2ch">5 5</item>
+</grid>
+
+<grid title="Wrapped 5th item 2ch in col 2">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:2ch; grid-column:2">5 5</item>
+</grid>
+
+<grid title="5th item 4ch in col 2-3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:4ch; grid-column:2/span 2">5 5</item>
+</grid>
+
+<grid title="5th item in col 2-3, 6th item 5ch in col 1-3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="grid-column:2/span 2">5 5</item>
+ <item style="width:5ch; grid-column:span 3/4">6</item>
+</grid>
+
+<grid title="5th item 3ch in col 2-3, 6th item 5ch in col 1-3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:3ch; grid-column:span 2/4">5</item>
+ <item style="width:5ch; grid-column:1/span 3">6</item>
+</grid>
+
+<grid title="5th item span 4">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="grid-column:span 4">5 5</item>
+</grid>
+
+<grid title="5th item 6ch span 4">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-column:span 4">5 5</item>
+</grid>
+
+<grid title="5th item 6ch span 3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-column:span 3">5 5</item>
+</grid>
+</section>
+
+<!-- ditto with mixed sizing: fixed + auto + fr -->
+
+<section class="mix2">
+<grid title="Wider first item 2ch">
+ <item style="width:2ch">1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item>5 5</item>
+</grid>
+
+<grid title="Wrapped last item 2ch">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:2ch">5 5</item>
+</grid>
+
+<grid title="Wrapped last item 2ch col 2">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:2ch; grid-column:2">5 5</item>
+</grid>
+
+<grid title="Last item 4ch col 2-3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:4ch; grid-column:2/span 2">5 5</item>
+</grid>
+
+<grid title="Item col 2-3 + Item 5ch col 1-3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="grid-column:2/span 2">5 5</item>
+ <item style="width:5ch; grid-column:1/span 3">6</item>
+</grid>
+
+<grid title="Item 3ch col 2-3 + Item 5ch col 1-3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:3ch; grid-column:2/span 2">5 5</item>
+ <item style="width:5ch; grid-column:1/span 3">6</item>
+</grid>
+
+<grid title="Last item span 4">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="grid-column:span 4">5 5</item>
+</grid>
+
+<grid title="Last item 6ch span 4">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-column:span 4">5 5</item>
+</grid>
+
+<grid title="Last item 6ch span 3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-column:span 3">5 5</item>
+</grid>
+</section>
diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-004-ref.html b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-004-ref.html
new file mode 100644
index 00000000000..282dd280213
--- /dev/null
+++ b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-004-ref.html
@@ -0,0 +1,460 @@
+<!DOCTYPE HTML>
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html>
+ <meta charset="utf-8">
+ <title>Reference: Masonry layout max-content sizing</title>
+ <link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
+ <style>
+
+@import "support/masonry-intrinsic-sizing-visual.css";
+
+grid {
+ display: inline-grid;
+ gap: 1px 2px;
+ border: 1px solid;
+ padding: 0 1px 0 2px;
+ vertical-align: top;
+ align-items: start;
+ width: max-content;
+}
+.auto grid {
+ grid-template-columns: repeat(4, auto);
+}
+.fr grid {
+ grid-template-columns: 1fr 2fr 1fr 1fr;
+}
+.mix1 grid {
+ grid-template-columns: 1fr 2fr min-content max-content;
+}
+.mix2 grid {
+ grid-template-columns: 1.1ch auto 1.4ch 1fr;
+ /* keep fixed values small enough for spanners to have an effect */
+}
+
+item {
+ align-self: start;
+}
+.hidden {
+ visibility: hidden;
+ height: 0;
+}
+</style>
+
+<body>
+
+<section class="auto">
+<grid>
+ <item style="width:2ch">1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item>5 5</item>
+
+ <item class="hidden" style="grid-column: 4">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width: 2ch; grid-area: 2/1">5 5</item>
+
+ <item class="hidden" style="grid-area: 2/1">0 0</item>
+ <item class="hidden" style="grid-area: 2/4">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item style="grid-area: 2/1">4</item>
+ <item style="width:2ch; grid-area: 1/2/3">5 5</item>
+
+ <item class="hidden" style="grid-area: 2/1">0 0</item>
+ <item class="hidden" style="grid-area: 2/2">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item style="grid-area: 2/2">4</item>
+ <item style="width:4ch; grid-area: 1/2/auto/4">5 5</item>
+
+ <item class="hidden" style="grid-area: 2/2">0 0</item>
+ <item class="hidden" style="grid-area: 2/3">0 0</item>
+</grid>
+
+<grid>
+ <item style="grid-area: 1/4">1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="grid-area: 1/2/2/4">5 5</item>
+ <item style="width:5ch; grid-area: 2/1/3/4">6</item>
+
+ <item class="hidden" style="grid-area: 1/1">0</item>
+ <item class="hidden" style="grid-area: 2/2">0 0</item>
+ <item class="hidden" style="grid-area: 2/3">0 0</item>
+ <item class="hidden" style="grid-area: 1/4">0 0</item>
+</grid>
+
+<grid>
+ <item style="grid-area: 1/4">1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:3ch; grid-area: 1/2/2/4">5 5</item>
+ <item style="width:5ch; grid-area: 2/1/3/4">6</item>
+
+ <item class="hidden" style="grid-area: 1/1">0</item>
+ <item class="hidden" style="grid-area: 2/2">0 0</item>
+ <item class="hidden" style="grid-area: 2/3">0 0</item>
+ <item class="hidden" style="grid-area: 1/4">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="grid-area: 2/1/3/5">5 5</item>
+
+ <item class="hidden" style="grid-area: 2/1">0 0</item>
+ <item class="hidden" style="grid-area: 2/4">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-area: 2/1/3/5">5 5</item>
+
+ <item class="hidden" style="grid-area: 2/1">0 0</item>
+ <item class="hidden" style="grid-area: 2/4">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-area: 2/1/3/4">5 5</item>
+
+ <item class="hidden" style="grid-area: 2/1">0 0</item>
+ <item class="hidden" style="grid-area: 2/4">0 0</item>
+ <item class="hidden" style="width:6ch; grid-area: 2/2/3/5">0 0</item>
+</grid>
+</section>
+
+<!-- ditto with 'fr' sizing -->
+
+<section class="fr">
+<grid>
+ <item style="width:2ch">1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item>5 5</item>
+ <item class="hidden" style="grid-area: 2/4/4">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width: 2ch">5 5</item>
+ <item class="hidden" style="grid-area: 2/4">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:2ch; grid-area: 1/2/3">5 5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:4ch; grid-area: 1/2/auto/4">5 5</item>
+ <item class="hidden">0</item>
+</grid>
+
+<grid>
+ <item style="grid-area: 1/4">1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="grid-area: 1/2/2/4">5 5</item>
+ <item style="width:5ch; grid-area: 2/1/3/4">6</item>
+
+ <item class="hidden" style="grid-area: 1/1">0</item>
+ <item class="hidden" style="grid-area: 2/2">0 0</item>
+ <item class="hidden" style="grid-area: 2/3">0 0</item>
+ <item class="hidden" style="grid-area: 1/4">0 0</item>
+</grid>
+
+<grid>
+ <item style="grid-area: 1/4">1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:3ch; grid-area: 1/2/2/4">5 5</item>
+ <item style="width:5ch; grid-area: 2/1/3/4">6</item>
+
+ <item class="hidden" style="grid-area: 1/1">0</item>
+ <item class="hidden" style="grid-area: 2/2">0 0</item>
+ <item class="hidden" style="grid-area: 2/3">0 0</item>
+ <item class="hidden" style="grid-area: 1/4">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="grid-area: 2/1/3/5">5 5</item>
+
+ <item class="hidden" style="grid-area: 2/1">0 0</item>
+ <item class="hidden" style="grid-area: 2/4">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-area: 2/1/3/5">5 5</item>
+
+ <item class="hidden" style="grid-area: 2/1">0 0</item>
+ <item class="hidden" style="grid-area: 2/4">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-area: 2/1/3/4">5 5</item>
+
+ <item class="hidden" style="grid-area: 2/1">0 0</item>
+ <item class="hidden" style="grid-area: 2/4">0 0</item>
+ <item class="hidden" style="width:6ch; grid-area: 2/2/3/5">0 0</item>
+</grid>
+</section>
+
+<!-- ditto with mixed sizing: fr + min/max-content -->
+
+<section class="mix1">
+<grid>
+ <item style="width:2ch">1</item>
+ <item>2 2</item>
+ <item style="grid-area: 1/3/3">3 3</item>
+ <item>4</item>
+ <item style="grid-area: 2/1">5 5</item>
+
+ <item class="hidden" style="grid-area: 2/3; width: 2ch">0</item>
+ <item class="hidden" style="grid-area: 2/4">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2 2</item>
+ <item style="grid-area: 1/3/3">3 3</item>
+ <item>4</item>
+ <item style="width: 2ch; grid-area: 2/1">5 5</item>
+
+ <item class="hidden" style="grid-area: 2/3; width: 2ch">0</item>
+ <item class="hidden" style="grid-area: 2/4">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item style="grid-row: span 2">2 2</item>
+ <item style="grid-row: span 2">3 3</item>
+ <item style="grid-area: 2/1">4</item>
+ <item style="width:2ch; grid-area: 1/2/3">5 5</item>
+
+ <item class="hidden" style="grid-area: 2/1">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:4ch; grid-area: 1/2/auto/4">5 5</item>
+
+ <item class="hidden">0</item>
+</grid>
+
+<grid>
+ <item style="grid-column: 4">1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="grid-area: 1/2/2/4">5 5</item>
+ <item style="width:5ch; grid-area: 2/1/3/4">6</item>
+
+ <item class="hidden">0 0</item>
+ <item class="hidden" style="grid-area: 2/2">0 0</item>
+</grid>
+
+<grid>
+ <item style="grid-column: 4">1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:3ch; grid-area: 1/2/2/4">5 5</item>
+ <item style="width:5ch; grid-area: 2/1/3/4">6</item>
+
+ <item class="hidden" style="grid-area: 2/3">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2 2</item>
+ <item style="grid-row: span 2">3 3</item>
+ <item>4</item>
+ <item style="grid-area: 3/1/4/5">5 5</item>
+
+ <item class="hidden">0 0</item>
+ <item class="hidden">0 0</item>
+ <item class="hidden">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2 2</item>
+ <item style="grid-row: span 2">3 3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-area: 3/1/4/5">5 5</item>
+
+ <item class="hidden">0 0</item>
+ <item class="hidden">0 0</item>
+ <item class="hidden">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2 2</item>
+ <item style="grid-row: span 2">3 3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-area: 3/1/4/4">5 5</item>
+
+ <item class="hidden">0 0</item>
+ <item class="hidden">0 0</item>
+ <item class="hidden" style="width:6ch; grid-area: 3/2/4/5">0 0</item>
+</grid>
+</section>
+
+<!-- ditto with mixed sizing: fixed + auto + fr -->
+
+<section class="mix2">
+<grid>
+ <item style="width:2ch">1</item>
+ <item>2 2</item>
+ <item style="grid-area: 1/3/3">3 3</item>
+ <item>4</item>
+ <item style="grid-area: 2/1">5 5</item>
+
+ <item class="hidden" style="grid-area: 2/4; width: 2ch">0</item>
+ <item class="hidden" style="grid-area: 2/4">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2 2</item>
+ <item style="grid-area: 1/3/3">3 3</item>
+ <item>4</item>
+ <item style="width: 2ch; grid-area: 2/1">5 5</item>
+
+ <item class="hidden" style="grid-area: 2/4; width: 2ch">0</item>
+ <item class="hidden" style="grid-area: 2/4">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item style="grid-row: span 2">2 2</item>
+ <item style="grid-row: span 2">3 3</item>
+ <item style="grid-area: 2/1">4</item>
+ <item style="width:2ch; grid-area: 1/2/3">5 5</item>
+
+ <item class="hidden" style="grid-area: 2/2">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:4ch; grid-area: 1/2/auto/4">5 5</item>
+
+ <item class="hidden" style="grid-area: 1/2">0 0</item>
+</grid>
+
+<grid>
+ <item style="grid-column: 4">1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="grid-area: 1/2/2/4">5 5</item>
+ <item style="width:5ch; grid-area: 2/1/3/4">6</item>
+
+ <item class="hidden" style="grid-area: 1/2">0 0</item>
+</grid>
+
+<grid>
+ <item style="grid-column: 4">1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:3ch; grid-area: 1/2/2/4">5 5</item>
+ <item style="width:5ch; grid-area: 2/1/3/4">6</item>
+
+ <item class="hidden" style="grid-area: 1/2">0 0</item>
+ <item class="hidden" style="grid-area: 3/4">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2 2</item>
+ <item style="grid-row: span 2">3 3</item>
+ <item>4</item>
+ <item style="grid-area: 3/1/4/5">5 5</item>
+
+ <item class="hidden" style="grid-area: 3/2">0 0</item>
+ <item class="hidden" style="grid-area: 3/4">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2 2</item>
+ <item style="grid-row: span 2">3 3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-area: 3/1/4/5">5 5</item>
+
+ <item class="hidden" style="grid-area: 3/4">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2 2</item>
+ <item style="grid-row: span 2">3 3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-area: 3/1/4/4">5 5</item>
+
+ <item class="hidden" style="grid-area: 3/4">0 0</item>
+ <item class="hidden" style="width:6ch; grid-area: 3/2/4/5">0 0</item>
+</grid>
+</section>
diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-004.html b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-004.html
new file mode 100644
index 00000000000..3c2f1a20e11
--- /dev/null
+++ b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-004.html
@@ -0,0 +1,350 @@
+<!DOCTYPE HTML>
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html>
+ <meta charset="utf-8">
+ <title>CSS Grid Test: Masonry layout column sizing - max-content</title>
+ <link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
+ <link rel="help" href="https://drafts.csswg.org/css-grid-3">
+ <link rel="match" href="masonry-intrinsic-sizing-cols-004-ref.html">
+ <style>
+
+@import "support/masonry-intrinsic-sizing-visual.css";
+
+grid {
+ display: inline-grid;
+ gap: 1px 2px;
+ grid-template-rows: masonry;
+ border: 1px solid;
+ padding: 0 1px 0 2px;
+ vertical-align: top;
+ width: max-content;
+}
+.auto grid {
+ grid-template-columns: repeat(4,auto);
+}
+.fr grid {
+ grid-template-columns: 1fr 2fr 1fr 1fr;
+}
+.mix1 grid {
+ grid-template-columns: 1fr 2fr min-content max-content;
+}
+.mix2 grid {
+ grid-template-columns: 1.1ch auto 1.4ch 1fr;
+ /* keep fixed values small enough for spanners to have an effect */
+}
+</style>
+
+<body>
+
+<section class="auto">
+<grid title="Wider 1st item 2ch">
+ <item style="width:2ch">1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item>5 5</item>
+</grid>
+
+<grid title="Wrapped 5th item 2ch">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:2ch">5 5</item>
+</grid>
+
+<grid title="Wrapped 5th item 2ch in col 2">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:2ch; grid-column:2">5 5</item>
+</grid>
+
+<grid title="5th item 4ch in col 2-3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:4ch; grid-column:2/span 2">5 5</item>
+</grid>
+
+<grid title="5th item in col 2-3, 6th item 5ch in col 1-3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="grid-column:2/span 2">5 5</item>
+ <item style="width:5ch; grid-column:span 3/4">6</item>
+</grid>
+
+<grid title="5th item 3ch in col 2-3, 6th item 5ch in col 1-3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:3ch; grid-column:span 2/4">5</item>
+ <item style="width:5ch; grid-column:1/span 3">6</item>
+</grid>
+
+<grid title="5th item span 4">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="grid-column:span 4">5 5</item>
+</grid>
+
+<grid title="5th item 6ch span 4">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-column:span 4">5 5</item>
+</grid>
+
+<grid title="5th item 6ch span 3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-column:span 3">5 5</item>
+</grid>
+</section>
+
+<!-- ditto with 'fr' sizing -->
+
+<section class="fr">
+<grid title="Wider 1st item 2ch">
+ <item style="width:2ch">1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item>5 5</item>
+</grid>
+
+<grid title="Wrapped 5th item 2ch">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:2ch">5 5</item>
+</grid>
+
+<grid title="Wrapped 5th item 2ch in col 2">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:2ch; grid-column:2">5 5</item>
+</grid>
+
+<grid title="5th item 4ch in col 2-3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:4ch; grid-column:2/span 2">5 5</item>
+</grid>
+
+<grid title="5th item in col 2-3, 6th item 5ch in col 1-3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="grid-column:2/span 2">5 5</item>
+ <item style="width:5ch; grid-column:span 3/4">6</item>
+</grid>
+
+<grid title="5th item 3ch in col 2-3, 6th item 5ch in col 1-3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:3ch; grid-column:span 2/4">5</item>
+ <item style="width:5ch; grid-column:1/span 3">6</item>
+</grid>
+
+<grid title="5th item span 4">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="grid-column:span 4">5 5</item>
+</grid>
+
+<grid title="5th item 6ch span 4">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-column:span 4">5 5</item>
+</grid>
+
+<grid title="5th item 6ch span 3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-column:span 3">5 5</item>
+</grid>
+</section>
+
+<!-- ditto with mixed sizing: fr + min/max-content -->
+
+<section class="mix1">
+<grid title="Wider 1st item 2ch">
+ <item style="width:2ch">1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item>5 5</item>
+</grid>
+
+<grid title="Wrapped 5th item 2ch">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:2ch">5 5</item>
+</grid>
+
+<grid title="Wrapped 5th item 2ch in col 2">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:2ch; grid-column:2">5 5</item>
+</grid>
+
+<grid title="5th item 4ch in col 2-3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:4ch; grid-column:2/span 2">5 5</item>
+</grid>
+
+<grid title="5th item in col 2-3, 6th item 5ch in col 1-3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="grid-column:2/span 2">5 5</item>
+ <item style="width:5ch; grid-column:span 3/4">6</item>
+</grid>
+
+<grid title="5th item 3ch in col 2-3, 6th item 5ch in col 1-3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:3ch; grid-column:span 2/4">5</item>
+ <item style="width:5ch; grid-column:1/span 3">6</item>
+</grid>
+
+<grid title="5th item span 4">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="grid-column:span 4">5 5</item>
+</grid>
+
+<grid title="5th item 6ch span 4">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-column:span 4">5 5</item>
+</grid>
+
+<grid title="5th item 6ch span 3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-column:span 3">5 5</item>
+</grid>
+</section>
+
+<!-- ditto with mixed sizing: fixed + auto + fr -->
+
+<section class="mix2">
+<grid title="Wider first item 2ch">
+ <item style="width:2ch">1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item>5 5</item>
+</grid>
+
+<grid title="Wrapped last item 2ch">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:2ch">5 5</item>
+</grid>
+
+<grid title="Wrapped last item 2ch col 2">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:2ch; grid-column:2">5 5</item>
+</grid>
+
+<grid title="Last item 4ch col 2-3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:4ch; grid-column:2/span 2">5 5</item>
+</grid>
+
+<grid title="Item col 2-3 + Item 5ch col 1-3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="grid-column:2/span 2">5 5</item>
+ <item style="width:5ch; grid-column:1/span 3">6</item>
+</grid>
+
+<grid title="Item 3ch col 2-3 + Item 5ch col 1-3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:3ch; grid-column:2/span 2">5 5</item>
+ <item style="width:5ch; grid-column:1/span 3">6</item>
+</grid>
+
+<grid title="Last item span 4">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="grid-column:span 4">5 5</item>
+</grid>
+
+<grid title="Last item 6ch span 4">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-column:span 4">5 5</item>
+</grid>
+
+<grid title="Last item 6ch span 3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="width:6ch; grid-column:span 3">5 5</item>
+</grid>
+</section>
diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-005-ref.html b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-005-ref.html
new file mode 100644
index 00000000000..99d5d05dd4e
--- /dev/null
+++ b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-005-ref.html
@@ -0,0 +1,80 @@
+<!DOCTYPE HTML>
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html>
+ <meta charset="utf-8">
+ <title>Reference: Masonry layout row sizing (vertical writing mode)</title>
+ <link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
+ <style>
+
+@import "support/masonry-intrinsic-sizing-visual.css";
+
+grid {
+ display: inline-grid;
+ gap: 1px 2px;
+ grid-template-columns: repeat(4,3ch);
+ grid-auto-rows: max-content;
+ grid-auto-flow: row;
+ border: 1px solid;
+ padding: 0 1px 0 2px;
+ vertical-align: top;
+ align-items: start;
+}
+
+item {
+ writing-mode: vertical-lr;
+}
+</style>
+
+<body>
+
+<grid style="grid-template-columns: repeat(4, 3ch)">
+ <item style="width:3ch">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-row: span 2">5 5</item>
+ <item>6</item>
+ <item>7</item>
+ <item>8</item>
+ <item>9 9</item>
+</grid>
+
+<grid style="grid-template-columns: repeat(4,3ch)">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:3ch; grid-row: span 2">5 5</item>
+ <item>6</item>
+ <item>7</item>
+ <item>8</item>
+ <item>9 9</item>
+</grid>
+
+<grid style="grid-template-columns: 3ch repeat(3,3ch)">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:3ch; grid-column:1; grid-row: span 2">5 5</item>
+ <item>6</item>
+ <item>7</item>
+ <item>8</item>
+ <item>9 9</item>
+</grid>
+
+<grid style="grid-template-columns: 3ch repeat(3,3ch)">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:3ch; grid-row:1; grid-row: span 2">5 5</item>
+ <item>6</item>
+ <item>7</item>
+ <item>8</item>
+ <item>9 9</item>
+</grid>
+
diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-005.html b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-005.html
new file mode 100644
index 00000000000..a4edd6151f6
--- /dev/null
+++ b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-005.html
@@ -0,0 +1,80 @@
+<!DOCTYPE HTML>
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html>
+ <meta charset="utf-8">
+ <title>CSS Grid Test: Masonry layout row sizing (vertical writing mode)</title>
+ <link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
+ <link rel="help" href="https://drafts.csswg.org/css-grid-3/#track-sizing">
+ <link rel="match" href="masonry-intrinsic-sizing-cols-005-ref.html">
+ <style>
+
+@import "support/masonry-intrinsic-sizing-visual.css";
+
+grid {
+ display: inline-grid;
+ gap: 1px 2px;
+ grid-template-columns: repeat(4,auto);
+ grid-template-rows: masonry;
+ border: 1px solid;
+ padding: 0 1px 0 2px;
+ vertical-align: top;
+}
+
+item {
+ writing-mode: vertical-lr;
+}
+</style>
+
+<body>
+
+<grid title="First item 3ch">
+ <item style="width:3ch">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item>5 5</item>
+ <item>6</item>
+ <item>7</item>
+ <item>8</item>
+ <item>9 9</item>
+</grid>
+
+<grid title="Fifth item 3ch">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:3ch">5 5</item>
+ <item>6</item>
+ <item>7</item>
+ <item>8</item>
+ <item>9 9</item>
+</grid>
+
+<grid title="Fifth item 3ch row 1">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:3ch; grid-column:1">5 5</item>
+ <item>6</item>
+ <item>7</item>
+ <item>8</item>
+ <item>9 9</item>
+</grid>
+
+<grid title="Fifth item 3ch col 1 (ignored)">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="width:3ch; grid-row:1">5 5</item>
+ <item>6</item>
+ <item>7</item>
+ <item>8</item>
+ <item>9 9</item>
+</grid>
+
diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-006-ref.html b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-006-ref.html
new file mode 100644
index 00000000000..1a41f071ab4
--- /dev/null
+++ b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-006-ref.html
@@ -0,0 +1,49 @@
+<!DOCTYPE HTML>
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html>
+ <meta charset="utf-8">
+ <title>Reference: Masonry layout row auto-fill sizing</title>
+ <link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
+ <style>
+
+@import "support/masonry-intrinsic-sizing-visual.css";
+
+grid {
+ display: inline-grid;
+ gap: 1px 2px;
+ grid-template-columns: repeat(4,1em);
+ border: 1px solid;
+ padding: 0 1px 0 2px;
+ vertical-align: top;
+}
+</style>
+
+<body>
+
+<grid>
+ <item style="grid-row: span 2">1 1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-row: span 2">5 5</item>
+</grid>
+
+<grid>
+ <item style="grid-row: span 2">1 1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-row: span 2">5 5</item>
+</grid>
+
+<grid style="width: 5em">
+ <item style="grid-row: span 2">1 1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-row: span 2">5 5</item>
+</grid>
+
diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-006.html b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-006.html
new file mode 100644
index 00000000000..e980d84b8e9
--- /dev/null
+++ b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-006.html
@@ -0,0 +1,54 @@
+<!DOCTYPE HTML>
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html>
+ <meta charset="utf-8">
+ <title>CSS Grid Test: Masonry layout row auto-fill sizing</title>
+ <link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
+ <link rel="help" href="https://drafts.csswg.org/css-grid-3/#track-sizing">
+ <link rel="match" href="masonry-intrinsic-sizing-cols-006-ref.html">
+ <style>
+
+@import "support/masonry-intrinsic-sizing-visual.css";
+
+grid {
+ display: inline-grid;
+ gap: 1px 2px;
+ grid-template-rows: masonry;
+ border: 1px solid;
+ padding: 0 1px 0 2px;
+ vertical-align: top;
+}
+</style>
+
+<body>
+
+<grid title="max-width 5em"
+ style="max-width:5em; grid-template-columns: repeat(auto-fill,1em);">
+ <item>1 1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item>5 5</item>
+</grid>
+
+<grid title="min-width 4em"
+ style="min-width:4em; grid-template-columns: repeat(auto-fill,1em);">
+ <item>1 1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item>5 5</item>
+</grid>
+
+<grid title="width 5em"
+ style="width: 5em; grid-template-columns: repeat(auto-fill,1em);">
+ <item>1 1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item>5 5</item>
+</grid>
+
diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-007-ref.html b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-007-ref.html
new file mode 100644
index 00000000000..0c4da43ef50
--- /dev/null
+++ b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-007-ref.html
@@ -0,0 +1,43 @@
+<!DOCTYPE HTML>
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html>
+ <meta charset="utf-8">
+ <title>CSS Grid Test: Masonry layout column sizing - intrinsic</title>
+ <link rel="author" title="Brandon Stewart" href="mailto:brandonstewart@apple.com">
+ <style>
+
+@import "support/masonry-intrinsic-sizing-visual.css";
+
+grid {
+ display: inline-grid;
+ gap: 1px 2px;
+ border: 1px solid;
+ padding: 0 1px 0 2px;
+ vertical-align: top;
+}
+
+.mix grid {
+ grid-template-columns: 1ch auto;
+}
+
+.mix2 grid {
+ grid-template-columns: 1ch auto 1ch;
+}
+</style>
+
+<body>
+
+<section class="mix">
+<grid title="Auto Last Track">
+ <item style="width:5ch; grid-column: span 2;">1</item>
+</grid>
+</section>
+
+<section class="mix2">
+<grid title="Auto Middle Track">
+ <item style="width:5ch; grid-column: span 3;">1</item>
+</grid>
+</section> \ No newline at end of file
diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-007.html b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-007.html
new file mode 100644
index 00000000000..e00273f6ed8
--- /dev/null
+++ b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-cols-007.html
@@ -0,0 +1,46 @@
+<!DOCTYPE HTML>
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html>
+ <meta charset="utf-8">
+ <title>CSS Grid Test: Masonry layout column sizing - intrinsic</title>
+ <link rel="author" title="Brandon Stewart" href="mailto:brandonstewart@apple.com">
+ <link rel="help" href="https://drafts.csswg.org/css-grid-3/#track-sizing">
+ <link rel="match" href="masonry-intrinsic-sizing-cols-007-ref.html">
+ <style>
+
+@import "support/masonry-intrinsic-sizing-visual.css";
+
+grid {
+ display: inline-grid;
+ gap: 1px 2px;
+ grid-template-rows: masonry;
+ border: 1px solid;
+ padding: 0 1px 0 2px;
+ vertical-align: top;
+}
+
+.mix grid {
+ grid-template-columns: 1ch auto;
+}
+
+.mix2 grid {
+ grid-template-columns: 1ch auto 1ch;
+}
+</style>
+
+<body>
+
+<section class="mix">
+<grid title="Auto Last Track">
+ <item style="width:5ch; grid-column: span 2;">1</item>
+</grid>
+</section>
+
+<section class="mix2">
+<grid title="Auto Middle Track">
+ <item style="width:5ch; grid-column: span 3;">1</item>
+</grid>
+</section> \ No newline at end of file
diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-001-ref.html b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-001-ref.html
new file mode 100644
index 00000000000..6214f6723ad
--- /dev/null
+++ b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-001-ref.html
@@ -0,0 +1,366 @@
+<!DOCTYPE HTML>
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html>
+ <meta charset="utf-8">
+ <title>Reference: Masonry layout intrinsic sizing</title>
+ <link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
+ <style>
+
+@import "support/masonry-intrinsic-sizing-visual.css";
+
+grid {
+ display: inline-grid;
+ gap: 1px 2px;
+ grid-auto-flow: column;
+ border: 1px solid;
+ padding: 0 1px 0 2px;
+ vertical-align: top;
+}
+.auto grid {
+ grid-template-rows: repeat(4,auto);
+}
+.fr grid {
+ grid-template-rows: 1fr 2fr 1fr 1fr;
+}
+.mix1 grid {
+ grid-template-rows: 1fr 2fr min-content max-content;
+}
+.mix2 grid {
+ grid-template-rows: 1.1ch auto 1.4ch 1fr;
+ /* keep fixed values small enough for spanners to have an effect */
+}
+
+item {
+ /* smaller heights to fit into 800x600 */
+ writing-mode: vertical-rl;
+ text-orientation: sideways;
+}
+</style>
+
+<body>
+
+<section class="auto">
+<grid style="grid-template-rows: repeat(4, 2ch)">
+ <item style="height:2ch">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item>5</item>
+</grid>
+
+<grid style="grid-template-rows: repeat(4, 2ch)">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:2ch">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:2ch; grid-area: 2/1">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="visibility: hidden">4</item>
+ <item style="height:4ch; grid-area:2/1/4/2">5</item>
+</grid>
+
+<grid>
+ <item style="grid-row: 4">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="visibility: hidden">4</item>
+ <item style="grid-area: 2/1/span 2/2">5</item>
+ <item style="height:5ch; grid-area: 1/2/4/3">6</item>
+</grid>
+
+<grid>
+ <item style="grid-row: 4">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="visibility: hidden">4</item>
+ <item style="height:3ch; grid-area: 2/1/4/2">5</item>
+ <item style="height:5ch; grid-area: 1/2/4/3">6</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-row:span 4">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-row:span 4">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-area: 1/2/4/3">5</item>
+ <item style="height:6ch; grid-area: 2/2/5/3; visibility: hidden">5</item>
+</grid>
+</section>
+
+<!-- ditto with 'fr' sizing -->
+
+<section class="fr">
+<grid>
+ <item style="height:2ch">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item>5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:2ch">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:2ch; grid-area: 2/1">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:4ch; grid-area: 2/1/4/2">5</item>
+</grid>
+
+<grid>
+ <item style="grid-row: 4">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="visibility: hidden">4</item>
+ <item style="grid-area: 2/1/span 2/2">5</item>
+ <item style="height:5ch; grid-area: 1/2/4/3">6</item>
+</grid>
+
+<grid>
+ <item style="grid-row: 4">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="visibility: hidden">4</item>
+ <item style="height:3ch; grid-area: 2/1/4/2">5</item>
+ <item style="height:5ch; grid-area: 1/2/4/3">6</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-row:span 4">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-row:span 4">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-area: 1/2/4/3">5</item>
+ <item style="height:6ch; grid-area: 2/2/5/3; visibility: hidden">5</item>
+</grid>
+</section>
+
+<!-- ditto with mixed sizing: fr + min/max-content -->
+
+<section class="mix1">
+<grid style="grid-template-rows: 2ch 4ch 2ch 2ch">
+ <item style="height:2ch">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item>5</item>
+</grid>
+
+<grid style="grid-template-rows: 2ch 4ch 2ch 2ch">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:2ch">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:2ch; grid-area: 2/1">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="visibility: hidden">4</item>
+ <item style="height:4ch; grid-area: 2/1/4/2">5</item>
+</grid>
+
+<grid>
+ <item style="grid-row: 4">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="visibility: hidden">4</item>
+ <item style="grid-area: 2/1/span 2/2">5</item>
+ <item style="height:5ch; grid-area: 1/2/4/3">6</item>
+</grid>
+
+<grid>
+ <item style="grid-row: 4">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="visibility: hidden">4</item>
+ <item style="height:3ch; grid-area: 2/1/4/2">5</item>
+ <item style="height:5ch; grid-area: 1/2/4/3">6</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-row:span 4">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-row:span 4">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-area: 1/2/4/3">5</item>
+ <item style="height:6ch; grid-area: 2/2/5/3; visibility: hidden">5</item>
+</grid>
+</section>
+
+<!-- ditto with mixed sizing: fixed + auto + fr -->
+
+<section class="mix2">
+<grid style="grid-template-rows: 1.1ch 2ch 1.4ch 2ch">
+ <item style="height:2ch">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item>5</item>
+</grid>
+
+<grid style="grid-template-rows: 1.1ch 2ch 1.4ch 2ch">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:2ch">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:2ch; grid-area: 2/1">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="visibility: hidden">4</item>
+ <item style="height:4ch; grid-area: 2/1/4/2">5</item>
+</grid>
+
+<grid>
+ <item style="grid-row: 4">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-area: 2/1/span 2/2">5</item>
+ <item style="height:5ch; grid-area: 1/2/4/3">6</item>
+</grid>
+
+<grid>
+ <item style="grid-row: 4">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:3ch; grid-area: 2/1/4/2">5</item>
+ <item style="height:5ch; grid-area: 1/2/4/3">6</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-row:span 4">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-row:span 4">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-area: 1/2/4/3">5</item>
+ <item style="height:6ch; grid-area: 2/2/5/3; visibility: hidden">5</item>
+</grid>
+</section>
diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-001.html b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-001.html
new file mode 100644
index 00000000000..45b5de5d0c8
--- /dev/null
+++ b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-001.html
@@ -0,0 +1,355 @@
+<!DOCTYPE HTML>
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html>
+ <meta charset="utf-8">
+ <title>CSS Grid Test: Masonry layout column sizing - intrinsic</title>
+ <link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
+ <link rel="help" href="https://drafts.csswg.org/css-grid-3/#track-sizing">
+ <link rel="match" href="masonry-intrinsic-sizing-rows-001-ref.html">
+ <style>
+
+@import "support/masonry-intrinsic-sizing-visual.css";
+
+grid {
+ display: inline-grid;
+ gap: 1px 2px;
+ grid-template-columns: masonry;
+ border: 1px solid;
+ padding: 0 1px 0 2px;
+ vertical-align: top;
+}
+.auto grid {
+ grid-template-rows: repeat(4,auto);
+}
+.fr grid {
+ grid-template-rows: 1fr 2fr 1fr 1fr;
+}
+.mix1 grid {
+ grid-template-rows: 1fr 2fr min-content max-content;
+}
+.mix2 grid {
+ grid-template-rows: 1.1ch auto 1.4ch 1fr;
+ /* keep fixed values small enough for spanners to have an effect */
+}
+
+item {
+ /* smaller heights to fit into 800x600 */
+ writing-mode: vertical-rl;
+ text-orientation: sideways;
+}
+</style>
+
+<body>
+
+<section class="auto">
+<grid title="Wider 1st item 2ch">
+ <item style="height:2ch">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item>5</item>
+</grid>
+
+<grid title="Wider 5th item 2ch">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:2ch">5</item>
+</grid>
+
+<grid title="Wider 5th item 2ch in col 2">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:2ch; grid-row:2">5</item>
+</grid>
+
+<grid title="Wider 5th item 4ch in col 2-3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:4ch; grid-row:2/span 2">5</item>
+</grid>
+
+<grid title="5th item in col 2-3, wider 6th item 5ch in col 1-3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-row:2/span 2">5</item>
+ <item style="height:5ch; grid-row:span 3/4">6</item>
+</grid>
+
+<grid title="5th item 3ch in 2-3, 6th item 5ch in 1-3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:3ch; grid-row:span 2/4">5</item>
+ <item style="height:5ch; grid-row:1/span 3">6</item>
+</grid>
+
+<grid title="5th item span 4">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-row:span 4">5</item>
+</grid>
+
+<grid title="5th item 6ch span 4">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-row:span 4">5</item>
+</grid>
+
+<grid title="5th item 6ch span 3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-row:span 3">5</item>
+</grid>
+</section>
+
+<!-- ditto with 'fr' sizing -->
+
+<section class="fr">
+<grid title="Wider 1st item 2ch">
+ <item style="height:2ch">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item>5</item>
+</grid>
+
+<grid title="Wider 5th item 2ch">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:2ch">5</item>
+</grid>
+
+<grid title="Wider 5th item 2ch in col 2">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:2ch; grid-row:2">5</item>
+</grid>
+
+<grid title="Wider 5th item 4ch in col 2-3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:4ch; grid-row:2/span 2">5</item>
+</grid>
+
+<grid title="5th item in col 2-3, wider 6th item 5ch in col 1-3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-row:2/span 2">5</item>
+ <item style="height:5ch; grid-row:span 3/4">6</item>
+</grid>
+
+<grid title="5th item 3ch in 2-3, 6th item 5ch in 1-3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:3ch; grid-row:span 2/4">5</item>
+ <item style="height:5ch; grid-row:1/span 3">6</item>
+</grid>
+
+<grid title="5th item span 4">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-row:span 4">5</item>
+</grid>
+
+<grid title="5th item 6ch span 4">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-row:span 4">5</item>
+</grid>
+
+<grid title="5th item 6ch span 3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-row:span 3">5</item>
+</grid>
+</section>
+
+<!-- ditto with mixed sizing: fr + min/max-content -->
+
+<section class="mix1">
+<grid title="Wider 1st item 2ch">
+ <item style="height:2ch">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item>5</item>
+</grid>
+
+<grid title="Wider 5th item 2ch">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:2ch">5</item>
+</grid>
+
+<grid title="Wider 5th item 2ch in col 2">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:2ch; grid-row:2">5</item>
+</grid>
+
+<grid title="Wider 5th item 4ch in col 2-3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:4ch; grid-row:2/span 2">5</item>
+</grid>
+
+<grid title="5th item in col 2-3, wider 6th item 5ch in col 1-3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-row:2/span 2">5</item>
+ <item style="height:5ch; grid-row:span 3/4">6</item>
+</grid>
+
+<grid title="5th item 3ch in 2-3, 6th item 5ch in 1-3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:3ch; grid-row:span 2/4">5</item>
+ <item style="height:5ch; grid-row:1/span 3">6</item>
+</grid>
+
+<grid title="5th item span 4">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-row:span 4">5</item>
+</grid>
+
+<grid title="5th item 6ch span 4">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-row:span 4">5</item>
+</grid>
+
+<grid title="5th item 6ch span 3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-row:span 3">5</item>
+</grid>
+</section>
+
+<!-- ditto with mixed sizing: fixed + auto + fr -->
+
+<section class="mix2">
+<grid title="Wider 1st item 2ch">
+ <item style="height:2ch">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item>5</item>
+</grid>
+
+<grid title="Wider 5th item 2ch">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:2ch">5</item>
+</grid>
+
+<grid title="Wider 5th item 2ch in col 2">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:2ch; grid-row:2">5</item>
+</grid>
+
+<grid title="Wider 5th item 4ch in col 2-3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:4ch; grid-row:2/span 2">5</item>
+</grid>
+
+<grid title="5th item in col 2-3, wider 6th item 5ch in col 1-3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-row:2/span 2">5</item>
+ <item style="height:5ch; grid-row:span 3/4">6</item>
+</grid>
+
+<grid title="5th item 3ch in 2-3, 6th item 5ch in 1-3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:3ch; grid-row:span 2/4">5</item>
+ <item style="height:5ch; grid-row:1/span 3">6</item>
+</grid>
+
+<grid title="5th item span 4">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-row:span 4">5</item>
+</grid>
+
+<grid title="5th item 6ch span 4">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-row:span 4">5</item>
+</grid>
+
+<grid title="5th item 6ch span 3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-row:span 3">5</item>
+</grid>
+</section>
diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-002-ref.html b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-002-ref.html
new file mode 100644
index 00000000000..38ede3202ad
--- /dev/null
+++ b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-002-ref.html
@@ -0,0 +1,368 @@
+<!DOCTYPE HTML>
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html>
+ <meta charset="utf-8">
+ <title>Reference: Masonry layout intrinsic sizing</title>
+ <link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
+ <style>
+
+@import "support/masonry-intrinsic-sizing-visual.css";
+
+grid {
+ display: inline-grid;
+ gap: 1px 2px;
+ grid-auto-flow: column;
+ border: 1px solid;
+ padding: 0 1px 0 2px;
+ vertical-align: top;
+ height: min-content;
+}
+.auto grid {
+ grid-template-rows: repeat(4,auto);
+}
+.fr grid {
+ grid-template-rows: 1fr 2fr 1fr 1fr;
+}
+.mix1 grid {
+ grid-template-rows: 1fr 2fr min-content max-content;
+}
+.mix2 grid {
+ grid-template-rows: 1.1ch auto 1.4ch 1fr;
+ /* keep fixed values small enough for spanners to have an effect */
+}
+
+item {
+ /* smaller heights to fit into 800x600 */
+ writing-mode: vertical-rl;
+ text-orientation: sideways;
+}
+</style>
+
+<body>
+
+<section class="auto">
+<grid style="grid-template-rows: repeat(4, 2ch)">
+ <item style="height:2ch">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item>5</item>
+</grid>
+
+<grid style="grid-template-rows: repeat(4, 2ch)">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:2ch">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:2ch; grid-area:2/1">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="visibility: hidden">4</item>
+ <item style="height:4ch; grid-area:2/1/4/2">5</item>
+</grid>
+
+<grid>
+ <item style="grid-row: 4">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="visibility: hidden">4</item>
+ <item style="grid-area: 2/1/span 2/2">5</item>
+ <item style="height:5ch; grid-area: 1/2/4/3">6</item>
+</grid>
+
+<grid>
+ <item style="grid-row: 4">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="visibility: hidden">4</item>
+ <item style="height:3ch; grid-area: 2/1/4/2">5</item>
+ <item style="height:5ch; grid-area: 1/2/4/3">6</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-row:span 4">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-row:span 4">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-area: 1/2/4/3">5</item>
+ <item style="height:6ch; grid-area: 2/2/5/3; visibility: hidden">5</item>
+</grid>
+</section>
+
+<!-- ditto with 'fr' sizing -->
+
+<section class="fr">
+<grid style="grid-template-rows: repeat(4, 2ch)">
+ <item style="height:2ch">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item>5</item>
+</grid>
+
+<grid style="grid-template-rows: repeat(4, 2ch)">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:2ch">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:2ch; grid-area: 2/1">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:4ch; grid-area: 2/1/4/2">5</item>
+</grid>
+
+<grid>
+ <item style="grid-row: 4">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="visibility: hidden">4</item>
+ <item style="grid-area: 2/1/span 2/2">5</item>
+ <item style="height:5ch; grid-area: 1/2/4/3">6</item>
+</grid>
+
+<grid>
+ <item style="grid-row: 4">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="visibility: hidden">4</item>
+ <item style="height:3ch; grid-area: 2/1/4/2">5</item>
+ <item style="height:5ch; grid-area: 1/2/4/3">6</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-row:span 4">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-row:span 4">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-area: 1/2/4/3">5</item>
+ <item style="height:6ch; grid-area: 2/2/5/3; visibility: hidden">5</item>
+</grid>
+</section>
+
+<!-- ditto with mixed sizing: fr + min/max-content -->
+
+<section class="mix1">
+<grid style="grid-template-rows: repeat(4, 2ch)">
+ <item style="height:2ch">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item>5</item>
+</grid>
+
+<grid style="grid-template-rows: repeat(4, 2ch)">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:2ch">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:2ch; grid-area: 2/1">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="visibility: hidden">4</item>
+ <item style="height:4ch; grid-area: 2/1/4/2">5</item>
+</grid>
+
+<grid>
+ <item style="grid-row: 4">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="visibility: hidden">4</item>
+ <item style="grid-area: 2/1/span 2/2">5</item>
+ <item style="height:5ch; grid-area: 1/2/4/3">6</item>
+</grid>
+
+<grid>
+ <item style="grid-row: 4">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="visibility: hidden">4</item>
+ <item style="height:3ch; grid-area: 2/1/4/2">5</item>
+ <item style="height:5ch; grid-area: 1/2/4/3">6</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-row:span 4">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-row:span 4">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-area: 1/2/4/3">5</item>
+ <item style="height:6ch; grid-area: 2/2/5/3; visibility: hidden">5</item>
+</grid>
+</section>
+
+<!-- ditto with mixed sizing: fixed + auto + fr -->
+
+<section class="mix2">
+<grid>
+ <item style="height:2ch">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item>5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:2ch">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:2ch; grid-area: 2/1">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="visibility: hidden">4</item>
+ <item style="height:4ch; grid-area: 1/2/2/4">5</item>
+</grid>
+
+<grid>
+ <item style="grid-row: 4">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-area: 2/1/span 2/2">5</item>
+ <item style="height:5ch; grid-area: 1/2/4/3">6</item>
+</grid>
+
+<grid>
+ <item style="grid-row: 4">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:3ch; grid-area: 2/1/4/2">5</item>
+ <item style="height:5ch; grid-area: 1/2/4/3">6</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-row:span 4">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-row:span 4">5</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-area: 1/2/4/3">5</item>
+ <item style="height:6ch; grid-area: 2/2/5/3; visibility: hidden">5</item>
+</grid>
+</section>
+
diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-002.html b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-002.html
new file mode 100644
index 00000000000..5faf63c2c24
--- /dev/null
+++ b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-002.html
@@ -0,0 +1,357 @@
+<!DOCTYPE HTML>
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html>
+ <meta charset="utf-8">
+ <title>CSS Grid Test: Masonry layout column sizing - min-content constraint</title>
+ <link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
+ <link rel="help" href="https://drafts.csswg.org/css-grid-3/#track-sizing">
+ <link rel="match" href="masonry-intrinsic-sizing-rows-002-ref.html">
+ <style>
+
+@import "support/masonry-intrinsic-sizing-visual.css";
+
+grid {
+ display: inline-grid;
+ gap: 1px 2px;
+ grid-template-columns: masonry;
+ border: 1px solid;
+ padding: 0 1px 0 2px;
+ vertical-align: top;
+ height: min-content;
+}
+
+.auto grid {
+ grid-template-rows: repeat(4,auto);
+}
+.fr grid {
+ grid-template-rows: 1fr 2fr 1fr 1fr;
+}
+.mix1 grid {
+ grid-template-rows: 1fr 2fr min-content max-content;
+}
+.mix2 grid {
+ grid-template-rows: 1.1ch auto 1.4ch 1fr;
+ /* keep fixed values small enough for spanners to have an effect */
+}
+
+item {
+ /* smaller heights to fit into 800x600 */
+ writing-mode: vertical-rl;
+ text-orientation: sideways;
+}
+</style>
+
+<body>
+
+<section class="auto">
+<grid title="Wider 1st item 2ch">
+ <item style="height:2ch">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item>5</item>
+</grid>
+
+<grid title="Wider 5th item 2ch">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:2ch">5</item>
+</grid>
+
+<grid title="Wider 5th item 2ch in col 2">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:2ch; grid-row:2">5</item>
+</grid>
+
+<grid title="Wider 5th item 4ch in col 2-3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:4ch; grid-row:2/span 2">5</item>
+</grid>
+
+<grid title="5th item in col 2-3, wider 6th item 5ch in col 1-3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-row:2/span 2">5</item>
+ <item style="height:5ch; grid-row:span 3/4">6</item>
+</grid>
+
+<grid title="5th item 3ch in 2-3, 6th item 5ch in 1-3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:3ch; grid-row:span 2/4">5</item>
+ <item style="height:5ch; grid-row:1/span 3">6</item>
+</grid>
+
+<grid title="5th item spanning 4">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-row:span 4">5</item>
+</grid>
+
+<grid title="5th item 6ch spanning 4">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-row:span 4">5</item>
+</grid>
+
+<grid title="5th item 6ch spanning 3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-row:span 3">5</item>
+</grid>
+</section>
+
+<!-- ditto with 'fr' sizing -->
+
+<section class="fr">
+<grid title="Wider 1st item 2ch">
+ <item style="height:2ch">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item>5</item>
+</grid>
+
+<grid title="Wider 5th item 2ch">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:2ch">5</item>
+</grid>
+
+<grid title="Wider 5th item 2ch in col 2">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:2ch; grid-row:2">5</item>
+</grid>
+
+<grid title="Wider 5th item 4ch in col 2-3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:4ch; grid-row:2/span 2">5</item>
+</grid>
+
+<grid title="5th item in col 2-3, wider 6th item 5ch in col 1-3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-row:2/span 2">5</item>
+ <item style="height:5ch; grid-row:span 3/4">6</item>
+</grid>
+
+<grid title="5th item 3ch in 2-3, 6th item 5ch in 1-3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:3ch; grid-row:span 2/4">5</item>
+ <item style="height:5ch; grid-row:1/span 3">6</item>
+</grid>
+
+<grid title="5th item span 4">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-row:span 4">5</item>
+</grid>
+
+<grid title="5th item 6ch span 4">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-row:span 4">5</item>
+</grid>
+
+<grid title="5th item 6ch span 3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-row:span 3">5</item>
+</grid>
+</section>
+
+<!-- ditto with mixed sizing: fr + min/max-content -->
+
+<section class="mix1">
+<grid title="Wider 1st item 2ch">
+ <item style="height:2ch">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item>5</item>
+</grid>
+
+<grid title="Wider 5th item 2ch">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:2ch">5</item>
+</grid>
+
+<grid title="Wider 5th item 2ch in col 2">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:2ch; grid-row:2">5</item>
+</grid>
+
+<grid title="Wider 5th item 4ch in col 2-3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:4ch; grid-row:2/span 2">5</item>
+</grid>
+
+<grid title="5th item in col 2-3, wider 6th item 5ch in col 1-3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-row:2/span 2">5</item>
+ <item style="height:5ch; grid-row:span 3/4">6</item>
+</grid>
+
+<grid title="5th item 3ch in 2-3, 6th item 5ch in 1-3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:3ch; grid-row:span 2/4">5</item>
+ <item style="height:5ch; grid-row:1/span 3">6</item>
+</grid>
+
+<grid title="5th item span 4">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-row:span 4">5</item>
+</grid>
+
+<grid title="5th item 6ch span 4">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-row:span 4">5</item>
+</grid>
+
+<grid title="5th item 6ch span 3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-row:span 3">5</item>
+</grid>
+</section>
+
+<!-- ditto with mixed sizing: fixed + auto + fr -->
+
+<section class="mix2">
+<grid title="Wider 1st item 2ch">
+ <item style="height:2ch">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item>5</item>
+</grid>
+
+<grid title="Wider 5th item 2ch">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:2ch">5</item>
+</grid>
+
+<grid title="Wider 5th item 2ch in col 2">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:2ch; grid-row:2">5</item>
+</grid>
+
+<grid title="Wider 5th item 4ch in col 2-3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:4ch; grid-row:2/span 2">5</item>
+</grid>
+
+<grid title="5th item in col 2-3, wider 6th item 5ch in col 1-3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-row:2/span 2">5</item>
+ <item style="height:5ch; grid-row:span 3/4">6</item>
+</grid>
+
+<grid title="5th item 3ch in 2-3, 6th item 5ch in 1-3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:3ch; grid-row:span 2/4">5</item>
+ <item style="height:5ch; grid-row:1/span 3">6</item>
+</grid>
+
+<grid title="5th item span 4">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-row:span 4">5</item>
+</grid>
+
+<grid title="5th item 6ch span 4">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-row:span 4">5</item>
+</grid>
+
+<grid title="5th item 6ch span 3">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-row:span 3">5</item>
+</grid>
+</section>
diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-003-ref.html b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-003-ref.html
new file mode 100644
index 00000000000..3e2b0a2a3be
--- /dev/null
+++ b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-003-ref.html
@@ -0,0 +1,461 @@
+<!DOCTYPE HTML>
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<!-- WARNING: The interaction of writing-mode and min-content sizing seems to be a bit hazy. It's not clear if this is a correct reference. -->
+<html>
+ <meta charset="utf-8">
+ <title>Reference: Masonry layout min-content sizing</title>
+ <link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
+ <style>
+
+@import "support/masonry-intrinsic-sizing-visual.css";
+
+grid {
+ display: inline-grid;
+ gap: 1px 2px;
+ grid-auto-flow: column;
+ border: 1px solid;
+ padding: 1px 0 2px 0;
+ vertical-align: top;
+ height: min-content;
+}
+.auto grid {
+ grid-template-rows: repeat(4,auto);
+}
+.fr grid {
+ grid-template-rows: 1fr 2fr 1fr 1fr;
+}
+.mix1 grid {
+ grid-template-rows: 1fr 2fr min-content max-content;
+}
+.mix2 grid {
+ grid-template-rows: 1.1ch auto 1.4ch 1fr;
+ /* keep fixed values small enough for spanners to have an effect */
+}
+
+item {
+ justify-self: start;
+ writing-mode: vertical-rl;
+ text-orientation: sideways;
+}
+.hidden {
+ visibility: hidden;
+ width: 0;
+}
+</style>
+
+<body>
+
+<section class="auto">
+<grid>
+ <item style="height:2ch">1</item>
+ <item style="grid-column: span 2">2 2</item>
+ <item style="grid-column: span 2">3 3</item>
+ <item>4</item>
+ <item style="grid-column: span 2">5 5</item>
+
+ <item class="hidden" style="grid-area: 4/2">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item style="grid-column: span 2">2 2</item>
+ <item style="grid-column: span 2">3 3</item>
+ <item>4</item>
+ <item style="grid-column: span 2">5 5</item>
+
+ <item class="hidden" style="grid-area: 4/2">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item style="grid-column: span 2">2 2</item>
+ <item style="grid-column: span 2">3 3</item>
+ <item style="grid-area: 1/2">4</item>
+ <item style="height:2ch; grid-area: 2/1/3/3">5 5</item>
+
+ <item class="hidden" style="grid-area: 1/2">0 0</item>
+ <item class="hidden" style="grid-area: 2/1">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item style="grid-column: span 2">2 2</item>
+ <item style="grid-column: span 2">3 3</item>
+ <item>4</item>
+ <item style="height:4ch; grid-area: 2/1/4/auto">5 5</item>
+
+ <item class="hidden" style="grid-area: 2/1">0 0</item>
+ <item class="hidden" style="grid-area: 3/2">0 0</item>
+</grid>
+
+<grid>
+ <item style="grid-row: 4">1</item>
+ <item style="grid-column: span 2">2 2</item>
+ <item style="grid-column: span 2">3 3</item>
+ <item>4</item>
+ <item style="grid-area: 2/1/4/2">5 5</item>
+ <item style="height:5ch; grid-area: 1/2/4/3">6</item>
+
+ <item class="hidden" style="grid-area: 3/3">0</item>
+ <item class="hidden" style="grid-area: 2/1">0 0</item>
+ <item class="hidden" style="grid-area: 3/1">0 0</item>
+</grid>
+
+<grid>
+ <item style="grid-row: 4">1</item>
+ <item style="grid-column: span 2">2 2</item>
+ <item style="grid-column: span 2">3 3</item>
+ <item>4</item>
+ <item style="height:3ch; grid-area: 2/1/4/2">5 5</item>
+ <item style="height:5ch; grid-area: 1/2/4/3">6</item>
+
+ <item class="hidden" style="grid-area: 2/1">0 0</item>
+ <item class="hidden" style="grid-area: 3/1">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item style="grid-column: span 2">2 2</item>
+ <item style="grid-column: span 2">3 3</item>
+ <item>4</item>
+ <item style="grid-area: 1/3/5/4">5 5</item>
+
+ <item class="hidden" style="grid-area: 1/3">0 0</item>
+ <item class="hidden" style="grid-area: 3/3">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item style="grid-column: span 2">2 2</item>
+ <item style="grid-column: span 2">3 3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-area: 1/3/5/4">5 5</item>
+
+ <item class="hidden" style="grid-area: 1/3">0 0</item>
+ <item class="hidden" style="grid-area: 4/3">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item style="grid-column: span 2">2 2</item>
+ <item style="grid-column: span 2">3 3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-area: 1/3/4/4">5 5</item>
+
+ <item class="hidden" style="grid-area: 1/3">0 0</item>
+ <item class="hidden" style="grid-area: 4/3">0 0</item>
+ <item class="hidden" style="height:6ch; grid-area: 2/3/5/4">0 0</item>
+</grid>
+</section>
+
+<!-- ditto with 'fr' sizing -->
+
+<section class="fr">
+<grid>
+ <item style="height:2ch">1</item>
+ <item style="grid-column: span 2">2 2</item>
+ <item style="grid-column: span 2">3 3</item>
+ <item>4</item>
+ <item style="grid-column: span 2">5 5</item>
+
+ <item class="hidden" style="grid-area: 4/2">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item style="grid-column: span 2">2 2</item>
+ <item style="grid-column: span 2">3 3</item>
+ <item>4</item>
+ <item style="grid-column: span 2">5 5</item>
+
+ <item class="hidden" style="grid-area: 4/2">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item style="grid-column: span 2">2 2</item>
+ <item style="grid-column: span 2">3 3</item>
+ <item style="grid-area: 1/2">4</item>
+ <item style="height:2ch; grid-area: 2/1/3/3">5 5</item>
+
+ <item class="hidden" style="grid-area: 1/2">0 0</item>
+ <item class="hidden" style="grid-area: 2/1">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item style="grid-column: span 2">2 2</item>
+ <item style="grid-column: span 2">3 3</item>
+ <item>4</item>
+ <item style="height:4ch; grid-area: 2/1/4/auto">5 5</item>
+
+ <item class="hidden" style="grid-area: 2/1">0 0</item>
+ <item class="hidden" style="grid-area: 3/2">0 0</item>
+</grid>
+
+<grid>
+ <item style="grid-row: 4">1</item>
+ <item style="grid-column: span 2">2 2</item>
+ <item style="grid-column: span 2">3 3</item>
+ <item>4</item>
+ <item style="grid-area: 2/1/4/2">5 5</item>
+ <item style="height:5ch; grid-area: 1/2/4/3">6</item>
+
+ <item class="hidden" style="grid-area: 3/3">0</item>
+ <item class="hidden" style="grid-area: 2/1">0 0</item>
+ <item class="hidden" style="grid-area: 3/1">0 0</item>
+</grid>
+
+<grid>
+ <item style="grid-row: 4">1</item>
+ <item style="grid-column: span 2">2 2</item>
+ <item style="grid-column: span 2">3 3</item>
+ <item>4</item>
+ <item style="height:3ch; grid-area: 2/1/4/2">5 5</item>
+ <item style="height:5ch; grid-area: 1/2/4/3">6</item>
+
+ <item class="hidden" style="grid-area: 2/1">0 0</item>
+ <item class="hidden" style="grid-area: 3/1">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item style="grid-column: span 2">2 2</item>
+ <item style="grid-column: span 2">3 3</item>
+ <item>4</item>
+ <item style="grid-area: 1/3/5/4">5 5</item>
+
+ <item class="hidden" style="grid-area: 1/3">0 0</item>
+ <item class="hidden" style="grid-area: 3/3">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item style="grid-column: span 2">2 2</item>
+ <item style="grid-column: span 2">3 3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-area: 1/3/5/4">5 5</item>
+
+ <item class="hidden" style="grid-area: 1/3">0 0</item>
+ <item class="hidden" style="grid-area: 4/3">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item style="grid-column: span 2">2 2</item>
+ <item style="grid-column: span 2">3 3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-area: 1/3/4/4">5 5</item>
+
+ <item class="hidden" style="grid-area: 1/3">0 0</item>
+ <item class="hidden" style="grid-area: 4/3">0 0</item>
+ <item class="hidden" style="height:6ch; grid-area: 2/3/5/4">0 0</item>
+</grid>
+</section>
+
+<!-- ditto with mixed sizing: fr + min/max-content -->
+
+<section class="mix1">
+<grid>
+ <item style="height:2ch">1</item>
+ <item style="grid-column: span 2">2 2</item>
+ <item style="grid-column: span 2">3 3</item>
+ <item>4</item>
+ <item style="grid-column: span 2">5 5</item>
+
+ <item class="hidden" style="grid-area: 4/2">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item style="grid-column: span 2">2 2</item>
+ <item style="grid-column: span 2">3 3</item>
+ <item>4</item>
+ <item style="grid-column: span 2">5 5</item>
+
+ <item class="hidden" style="grid-area: 4/2">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item style="grid-column: span 2">2 2</item>
+ <item style="grid-column: span 2">3 3</item>
+ <item style="grid-area: 1/2">4</item>
+ <item style="height:2ch; grid-area: 2/1/3/3">5 5</item>
+
+ <item class="hidden" style="grid-area: 1/2">0 0</item>
+ <item class="hidden" style="grid-area: 2/1">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item style="grid-column: span 2">2 2</item>
+ <item style="grid-column: span 2">3 3</item>
+ <item>4</item>
+ <item style="height:4ch; grid-area: 2/1/4/auto">5 5</item>
+
+ <item class="hidden" style="grid-area: 2/1">0 0</item>
+ <item class="hidden" style="grid-area: 3/2">0 0</item>
+</grid>
+
+<grid>
+ <item style="grid-row: 4">1</item>
+ <item style="grid-column: span 2">2 2</item>
+ <item style="grid-column: span 2">3 3</item>
+ <item>4</item>
+ <item style="grid-area: 2/1/4/2">5 5</item>
+ <item style="height:5ch; grid-area: 1/2/4/3">6</item>
+
+ <item class="hidden" style="grid-area: 2/1">0 0</item>
+ <item class="hidden" style="grid-area: 3/1">0 0</item>
+</grid>
+
+<grid>
+ <item style="grid-row: 4">1</item>
+ <item style="grid-column: span 2">2 2</item>
+ <item style="grid-column: span 2">3 3</item>
+ <item>4</item>
+ <item style="height:3ch; grid-area: 2/1/4/2">5 5</item>
+ <item style="height:5ch; grid-area: 1/2/4/3">6</item>
+
+ <item class="hidden" style="grid-area: 2/1">0 0</item>
+ <item class="hidden" style="grid-area: 3/1">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item style="grid-column: span 2">2 2</item>
+ <item style="grid-column: span 2">3 3</item>
+ <item>4</item>
+ <item style="grid-area: 1/3/5/4">5 5</item>
+
+ <item class="hidden" style="grid-area: 1/3">0 0</item>
+ <item class="hidden" style="grid-area: 3/3">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item style="grid-column: span 2">2 2</item>
+ <item style="grid-column: span 2">3 3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-area: 1/3/5/4">5 5</item>
+
+ <item class="hidden" style="grid-area: 1/3">0 0</item>
+ <item class="hidden" style="grid-area: 4/3">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item style="grid-column: span 2">2 2</item>
+ <item style="grid-column: span 2">3 3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-area: 1/3/4/4">5 5</item>
+
+ <item class="hidden" style="grid-area: 1/3">0 0</item>
+ <item class="hidden" style="grid-area: 4/3">0 0</item>
+ <item class="hidden" style="height:6ch; grid-area: 2/3/5/4">0 0</item>
+</grid>
+</section>
+
+<!-- ditto with mixed sizing: fixed + auto + fr -->
+
+<section class="mix2">
+<grid>
+ <item style="height:2ch">1</item>
+ <item style="grid-column: span 2">2 2</item>
+ <item style="grid-column: span 2">3 3</item>
+ <item>4</item>
+ <item style="grid-column: span 2">5 5</item>
+
+ <item class="hidden" style="grid-area: 4/2">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item style="grid-column: span 2">2 2</item>
+ <item style="grid-column: span 2">3 3</item>
+ <item>4</item>
+ <item style="grid-column: span 2">5 5</item>
+
+ <item class="hidden" style="grid-area: 4/2">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item style="grid-column: span 2">2 2</item>
+ <item style="grid-column: span 2">3 3</item>
+ <item style="grid-area: 1/2">4</item>
+ <item style="height:2ch; grid-area: 2/1/3/3">5 5</item>
+
+ <item class="hidden" style="grid-area: 1/2">0 0</item>
+ <item class="hidden" style="grid-area: 2/1">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item style="grid-column: span 2">2 2</item>
+ <item style="grid-column: span 2">3 3</item>
+ <item>4</item>
+ <item style="height:4ch; grid-area: 2/1/4/auto">5 5</item>
+
+ <item class="hidden" style="grid-area: 2/1">0 0</item>
+ <item class="hidden" style="grid-area: 3/2">0 0</item>
+</grid>
+
+<grid>
+ <item style="grid-row: 4">1</item>
+ <item style="grid-column: span 2">2 2</item>
+ <item style="grid-column: span 2">3 3</item>
+ <item>4</item>
+ <item style="grid-area: 2/1/4/2">5 5</item>
+ <item style="height:5ch; grid-area: 1/2/4/3">6</item>
+
+ <item class="hidden" style="grid-area: 2/1">0 0</item>
+ <item class="hidden" style="grid-area: 3/1">0 0</item>
+</grid>
+
+<grid>
+ <item style="grid-row: 4">1</item>
+ <item style="grid-column: span 2">2 2</item>
+ <item style="grid-column: span 2">3 3</item>
+ <item>4</item>
+ <item style="height:3ch; grid-area: 2/1/4/2">5 5</item>
+ <item style="height:5ch; grid-area: 1/2/4/3">6</item>
+
+ <item class="hidden" style="grid-area: 2/1">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item style="grid-column: span 2">2 2</item>
+ <item style="grid-column: span 2">3 3</item>
+ <item>4</item>
+ <item style="grid-area: 1/3/5/4">5 5</item>
+
+ <item class="hidden" style="grid-area: 4/3">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item style="grid-column: span 2">2 2</item>
+ <item style="grid-column: span 2">3 3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-area: 1/3/5/4">5 5</item>
+
+ <item class="hidden" style="grid-area: 4/3">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item style="grid-column: span 2">2 2</item>
+ <item style="grid-column: span 2">3 3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-area: 1/3/4/4">5 5</item>
+
+ <item class="hidden" style="grid-area: 4/3">0 0</item>
+ <item class="hidden" style="height:6ch; grid-area: 2/3/5/4">0 0</item>
+</grid>
+</section>
diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-003.html b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-003.html
new file mode 100644
index 00000000000..5e0a150ef1f
--- /dev/null
+++ b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-003.html
@@ -0,0 +1,356 @@
+<!DOCTYPE HTML>
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html>
+ <meta charset="utf-8">
+ <title>CSS Grid Test: Masonry layout column sizing - min-content</title>
+ <link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
+ <link rel="help" href="https://drafts.csswg.org/css-grid-3/#track-sizing">
+ <link rel="match" href="masonry-intrinsic-sizing-rows-003-ref.html">
+ <style>
+
+@import "support/masonry-intrinsic-sizing-visual.css";
+
+grid {
+ display: inline-grid;
+ gap: 1px 2px;
+ grid-template-columns: masonry;
+ border: 1px solid;
+ padding: 1px 0 2px 0;
+ vertical-align: top;
+ height: min-content;
+}
+.auto grid {
+ grid-template-rows: repeat(4,auto);
+}
+.fr grid {
+ grid-template-rows: 1fr 2fr 1fr 1fr;
+}
+.mix1 grid {
+ grid-template-rows: 1fr 2fr min-content max-content;
+}
+.mix2 grid {
+ grid-template-rows: 1.1ch auto 1.4ch 1fr;
+ /* keep fixed values small enough for spanners to have an effect */
+}
+
+item {
+ /* allow for differing min-content and max-content sizes */
+ writing-mode: vertical-rl;
+ text-orientation: sideways;
+}
+</style>
+
+<body>
+
+<section class="auto">
+<grid title="Wider 1st item 2ch">
+ <item style="height:2ch">1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item>5 5</item>
+</grid>
+
+<grid title="Wrapped 5th item 2ch">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:2ch">5 5</item>
+</grid>
+
+<grid title="Wrapped 5th item 2ch in col 2">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:2ch; grid-row:2">5 5</item>
+</grid>
+
+<grid title="5th item 4ch in col 2-3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:4ch; grid-row:2/span 2">5 5</item>
+</grid>
+
+<grid title="5th item in col 2-3, 6th item 5ch in col 1-3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="grid-row:2/span 2">5 5</item>
+ <item style="height:5ch; grid-row:span 3/4">6</item>
+</grid>
+
+<grid title="5th item 3ch in col 2-3, 6th item 5ch in col 1-3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:3ch; grid-row:span 2/4">5</item>
+ <item style="height:5ch; grid-row:1/span 3">6</item>
+</grid>
+
+<grid title="5th item span 4">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="grid-row:span 4">5 5</item>
+</grid>
+
+<grid title="5th item 6ch span 4">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-row:span 4">5 5</item>
+</grid>
+
+<grid title="5th item 6ch span 3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-row:span 3">5 5</item>
+</grid>
+</section>
+
+<!-- ditto with 'fr' sizing -->
+
+<section class="fr">
+<grid title="Wider 1st item 2ch">
+ <item style="height:2ch">1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item>5 5</item>
+</grid>
+
+<grid title="Wrapped 5th item 2ch">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:2ch">5 5</item>
+</grid>
+
+<grid title="Wrapped 5th item 2ch in col 2">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:2ch; grid-row:2">5 5</item>
+</grid>
+
+<grid title="5th item 4ch in col 2-3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:4ch; grid-row:2/span 2">5 5</item>
+</grid>
+
+<grid title="5th item in col 2-3, 6th item 5ch in col 1-3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="grid-row:2/span 2">5 5</item>
+ <item style="height:5ch; grid-row:span 3/4">6</item>
+</grid>
+
+<grid title="5th item 3ch in col 2-3, 6th item 5ch in col 1-3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:3ch; grid-row:span 2/4">5</item>
+ <item style="height:5ch; grid-row:1/span 3">6</item>
+</grid>
+
+<grid title="5th item span 4">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="grid-row:span 4">5 5</item>
+</grid>
+
+<grid title="5th item 6ch span 4">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-row:span 4">5 5</item>
+</grid>
+
+<grid title="5th item 6ch span 3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-row:span 3">5 5</item>
+</grid>
+</section>
+
+<!-- ditto with mixed sizing: fr + min/max-content -->
+
+<section class="mix1">
+<grid title="Wider 1st item 2ch">
+ <item style="height:2ch">1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item>5 5</item>
+</grid>
+
+<grid title="Wrapped 5th item 2ch">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:2ch">5 5</item>
+</grid>
+
+<grid title="Wrapped 5th item 2ch in col 2">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:2ch; grid-row:2">5 5</item>
+</grid>
+
+<grid title="5th item 4ch in col 2-3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:4ch; grid-row:2/span 2">5 5</item>
+</grid>
+
+<grid title="5th item in col 2-3, 6th item 5ch in col 1-3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="grid-row:2/span 2">5 5</item>
+ <item style="height:5ch; grid-row:span 3/4">6</item>
+</grid>
+
+<grid title="5th item 3ch in col 2-3, 6th item 5ch in col 1-3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:3ch; grid-row:span 2/4">5</item>
+ <item style="height:5ch; grid-row:1/span 3">6</item>
+</grid>
+
+<grid title="5th item span 4">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="grid-row:span 4">5 5</item>
+</grid>
+
+<grid title="5th item 6ch span 4">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-row:span 4">5 5</item>
+</grid>
+
+<grid title="5th item 6ch span 3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-row:span 3">5 5</item>
+</grid>
+</section>
+
+<!-- ditto with mixed sizing: fixed + auto + fr -->
+
+<section class="mix2">
+<grid title="Wider first item 2ch">
+ <item style="height:2ch">1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item>5 5</item>
+</grid>
+
+<grid title="Wrapped last item 2ch">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:2ch">5 5</item>
+</grid>
+
+<grid title="Wrapped last item 2ch col 2">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:2ch; grid-row:2">5 5</item>
+</grid>
+
+<grid title="Last item 4ch col 2-3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:4ch; grid-row:2/span 2">5 5</item>
+</grid>
+
+<grid title="Item col 2-3 + Item 5ch col 1-3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="grid-row:2/span 2">5 5</item>
+ <item style="height:5ch; grid-row:1/span 3">6</item>
+</grid>
+
+<grid title="Item 3ch col 2-3 + Item 5ch col 1-3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:3ch; grid-row:2/span 2">5 5</item>
+ <item style="height:5ch; grid-row:1/span 3">6</item>
+</grid>
+
+<grid title="Last item span 4">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="grid-row:span 4">5 5</item>
+</grid>
+
+<grid title="Last item 6ch span 4">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-row:span 4">5 5</item>
+</grid>
+
+<grid title="Last item 6ch span 3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-row:span 3">5 5</item>
+</grid>
+</section>
diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-004-ref.html b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-004-ref.html
new file mode 100644
index 00000000000..a79aca3b882
--- /dev/null
+++ b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-004-ref.html
@@ -0,0 +1,461 @@
+<!DOCTYPE HTML>
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html>
+ <meta charset="utf-8">
+ <title>Reference: Masonry layout max-content sizing</title>
+ <link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
+ <style>
+
+@import "support/masonry-intrinsic-sizing-visual.css";
+
+grid {
+ display: inline-grid;
+ gap: 1px 2px;
+ grid-auto-flow: column;
+ border: 1px solid;
+ padding: 1px 0 2px 0;
+ vertical-align: top;
+ align-items: start;
+ height: max-content;
+}
+.auto grid {
+ grid-template-rows: repeat(4, auto);
+}
+.fr grid {
+ grid-template-rows: 1fr 2fr 1fr 1fr;
+}
+.mix1 grid {
+ grid-template-rows: 1fr 2fr min-content max-content;
+}
+.mix2 grid {
+ grid-template-rows: 1.1ch auto 1.4ch 1fr;
+ /* keep fixed values small enough for spanners to have an effect */
+}
+
+item {
+ justify-self: start;
+ writing-mode: vertical-rl;
+ text-orientation: sideways;
+}
+.hidden {
+ xvisibility: hidden;
+ opacity: 0.5;
+ width: 1em;
+}
+</style>
+
+<body>
+
+<section class="auto">
+<grid>
+ <item style="height:2ch">1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item>5 5</item>
+
+ <item class="hidden" style="grid-area: 4/2">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item>5 5</item>
+
+ <item class="hidden" style="grid-area: 4/2">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item style="grid-area: 1/2">4</item>
+ <item style="height:2ch; grid-area: 2/1/3/3">5 5</item>
+
+ <item class="hidden" style="grid-area: 1/2">0 0</item>
+ <item class="hidden" style="grid-area: 2/1">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:4ch; grid-area: 2/1/4/auto">5 5</item>
+
+ <item class="hidden" style="grid-area: 2/1">0 0</item>
+ <item class="hidden" style="grid-area: 3/2">0 0</item>
+</grid>
+
+<grid>
+ <item style="grid-row: 4">1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="grid-area: 2/1/4/2">5 5</item>
+ <item style="height:5ch; grid-area: 1/2/4/3">6</item>
+
+ <item class="hidden" style="grid-area: 3/3">0</item>
+ <item class="hidden" style="grid-area: 2/1">0 0</item>
+ <item class="hidden" style="grid-area: 3/1">0 0</item>
+</grid>
+
+<grid>
+ <item style="grid-row: 4">1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:3ch; grid-area: 2/1/4/2">5 5</item>
+ <item style="height:5ch; grid-area: 1/2/4/3">6</item>
+
+ <item class="hidden" style="grid-area: 2/1">0 0</item>
+ <item class="hidden" style="grid-area: 3/1">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="grid-area: 1/2/5/3">5 5</item>
+
+ <item class="hidden" style="grid-area: 1/2">0 0</item>
+ <item class="hidden" style="grid-area: 3/2">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-area: 1/2/5/3">5 5</item>
+
+ <item class="hidden" style="grid-area: 1/2">0 0</item>
+ <item class="hidden" style="grid-area: 4/2">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-area: 1/2/4/3">5 5</item>
+
+ <item class="hidden" style="grid-area: 1/2">0 0</item>
+ <item class="hidden" style="grid-area: 4/2">0 0</item>
+ <item class="hidden" style="height:6ch; grid-area: 2/2/5/3">0 0</item>
+</grid>
+</section>
+
+<!-- ditto with 'fr' sizing -->
+
+<section class="fr">
+<grid>
+ <item style="height:2ch">1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item>5 5</item>
+
+ <item class="hidden" style="grid-area: 4/2">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item>5 5</item>
+
+ <item class="hidden" style="grid-area: 4/2">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item style="grid-area: 1/2">4</item>
+ <item style="height:2ch; grid-area: 2/1/3/3">5 5</item>
+
+ <item class="hidden" style="grid-area: 1/2">0 0</item>
+ <item class="hidden" style="grid-area: 2/1">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:4ch; grid-area: 2/1/4/auto">5 5</item>
+
+ <item class="hidden" style="grid-area: 2/1">0 0</item>
+ <item class="hidden" style="grid-area: 3/2">0 0</item>
+</grid>
+
+<grid>
+ <item style="grid-row: 4">1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="grid-area: 2/1/4/2">5 5</item>
+ <item style="height:5ch; grid-area: 1/2/4/3">6</item>
+
+ <item class="hidden" style="grid-area: 3/3">0</item>
+ <item class="hidden" style="grid-area: 2/1">0 0</item>
+ <item class="hidden" style="grid-area: 3/1">0 0</item>
+</grid>
+
+<grid>
+ <item style="grid-row: 4">1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:3ch; grid-area: 2/1/4/2">5 5</item>
+ <item style="height:5ch; grid-area: 1/2/4/3">6</item>
+
+ <item class="hidden" style="grid-area: 2/1">0 0</item>
+ <item class="hidden" style="grid-area: 3/1">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="grid-area: 1/2/5/3">5 5</item>
+
+ <item class="hidden" style="grid-area: 1/2">0 0</item>
+ <item class="hidden" style="grid-area: 3/2">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-area: 1/2/5/3">5 5</item>
+
+ <item class="hidden" style="grid-area: 1/2">0 0</item>
+ <item class="hidden" style="grid-area: 4/2">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-area: 1/2/4/3">5 5</item>
+
+ <item class="hidden" style="grid-area: 1/2">0 0</item>
+ <item class="hidden" style="grid-area: 4/2">0 0</item>
+ <item class="hidden" style="height:6ch; grid-area: 2/2/5/3">0 0</item>
+</grid>
+</section>
+
+<!-- ditto with mixed sizing: fr + min/max-content -->
+
+<section class="mix1">
+<grid>
+ <item style="height:2ch">1</item>
+ <item>2 2</item>
+ <item style="grid-column: span 2">3 3</item>
+ <item>4</item>
+ <item>5 5</item>
+
+ <item class="hidden" style="grid-area: 4/2">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2 2</item>
+ <item style="grid-column: span 2">3 3</item>
+ <item>4</item>
+ <item>5 5</item>
+
+ <item class="hidden" style="grid-area: 4/2">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item style="grid-column: span 2">2 2</item>
+ <item>3 3</item>
+ <item style="grid-area: 1/2">4</item>
+ <item style="height:2ch; grid-area: 2/1/3/3">5 5</item>
+
+ <item class="hidden" style="grid-area: 1/2">0 0</item>
+ <item class="hidden" style="grid-area: 2/1">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:4ch; grid-area: 2/1/4/auto">5 5</item>
+
+ <item class="hidden" style="grid-area: 2/1">0 0</item>
+ <item class="hidden" style="grid-area: 3/2">0 0</item>
+</grid>
+
+<grid>
+ <item style="grid-row: 4">1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="grid-area: 2/1/4/2">5 5</item>
+ <item style="height:5ch; grid-area: 1/2/4/3">6</item>
+
+ <item class="hidden" style="grid-area: 2/1">0 0</item>
+ <item class="hidden" style="grid-area: 3/1">0 0</item>
+</grid>
+
+<grid>
+ <item style="grid-row: 4">1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:3ch; grid-area: 2/1/4/2">5 5</item>
+ <item style="height:5ch; grid-area: 1/2/4/3">6</item>
+
+ <item class="hidden" style="grid-area: 2/1">0 0</item>
+ <item class="hidden" style="grid-area: 3/1">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="grid-area: 1/2/5/3">5 5</item>
+
+ <item class="hidden" style="grid-area: 1/2">0 0</item>
+ <item class="hidden" style="grid-area: 3/2">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-area: 1/2/5/3">5 5</item>
+
+ <item class="hidden" style="grid-area: 1/2">0 0</item>
+ <item class="hidden" style="grid-area: 4/2">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-area: 1/2/4/3">5 5</item>
+
+ <item class="hidden" style="grid-area: 1/2">0 0</item>
+ <item class="hidden" style="grid-area: 4/2">0 0</item>
+ <item class="hidden" style="height:6ch; grid-area: 2/2/5/3">0 0</item>
+</grid>
+</section>
+
+<!-- ditto with mixed sizing: fixed + auto + fr -->
+
+<section class="mix2">
+<grid>
+ <item style="height:2ch">1</item>
+ <item>2 2</item>
+ <item style="grid-column: span 2">3 3</item>
+ <item>4</item>
+ <item style="grid-column: span 2">5 5</item>
+
+ <item class="hidden" style="grid-area: 4/2">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2 2</item>
+ <item style="grid-column: span 2">3 3</item>
+ <item>4</item>
+ <item style="grid-column: span 2">5 5</item>
+
+ <item class="hidden" style="grid-area: 4/2">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item style="grid-column: span 2">2 2</item>
+ <item>3 3</item>
+ <item style="grid-area: 1/2">4</item>
+ <item style="height:2ch; grid-area: 2/1/3/3">5 5</item>
+
+ <item class="hidden" style="grid-area: 1/2">0 0</item>
+ <item class="hidden" style="grid-area: 2/1">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item style="grid-column: span 2">2 2</item>
+ <item style="grid-column: span 2">3 3</item>
+ <item>4</item>
+ <item style="height:4ch; grid-area: 2/1/4/auto">5 5</item>
+
+ <item class="hidden" style="grid-area: 2/1">0 0</item>
+ <item class="hidden" style="grid-area: 3/2">0 0</item>
+</grid>
+
+<grid>
+ <item style="grid-row: 4">1</item>
+ <item style="grid-column: span 2">2 2</item>
+ <item style="grid-column: span 2">3 3</item>
+ <item>4</item>
+ <item style="grid-area: 2/1/4/2">5 5</item>
+ <item style="height:5ch; grid-area: 1/2/4/3">6</item>
+
+ <item class="hidden" style="grid-area: 2/1">0 0</item>
+</grid>
+
+<grid>
+ <item style="grid-row: 4">1</item>
+ <item style="grid-column: span 2">2 2</item>
+ <item style="grid-column: span 2">3 3</item>
+ <item>4</item>
+ <item style="height:3ch; grid-area: 2/1/4/2">5 5</item>
+ <item style="height:5ch; grid-area: 1/2/4/3">6</item>
+
+ <item class="hidden" style="grid-area: 2/1">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item style="grid-column: span 2">2 2</item>
+ <item style="grid-column: span 2">3 3</item>
+ <item>4</item>
+ <item style="grid-area: 1/3/5/4">5 5</item>
+
+ <item class="hidden" style="grid-area: 4/3">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2 2</item>
+ <item style="grid-column: span 2">3 3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-area: 1/3/5/4">5 5</item>
+
+ <item class="hidden" style="grid-area: 4/3">0 0</item>
+</grid>
+
+<grid>
+ <item>1</item>
+ <item>2 2</item>
+ <item style="grid-column: span 2">3 3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-area: 1/3/4/4">5 5</item>
+
+ <item class="hidden" style="grid-area: 4/3">0 0</item>
+ <item class="hidden" style="height:6ch; grid-area: 2/3/5/4">0 0</item>
+</grid>
+</section>
diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-004.html b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-004.html
new file mode 100644
index 00000000000..6bacac5255d
--- /dev/null
+++ b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-004.html
@@ -0,0 +1,355 @@
+<!DOCTYPE HTML>
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html>
+ <meta charset="utf-8">
+ <title>CSS Grid Test: Masonry layout column sizing - max-content</title>
+ <link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
+ <link rel="help" href="https://drafts.csswg.org/css-grid-3">
+ <link rel="match" href="masonry-intrinsic-sizing-rows-004-ref.html">
+ <style>
+
+@import "support/masonry-intrinsic-sizing-visual.css";
+
+grid {
+ display: inline-grid;
+ gap: 1px 2px;
+ grid-template-columns: masonry;
+ border: 1px solid;
+ padding: 1px 0 2px 0;
+ vertical-align: top;
+ height: max-content;
+}
+.auto grid {
+ grid-template-rows: repeat(4,auto);
+}
+.fr grid {
+ grid-template-rows: 1fr 2fr 1fr 1fr;
+}
+.mix1 grid {
+ grid-template-rows: 1fr 2fr min-content max-content;
+}
+.mix2 grid {
+ grid-template-rows: 1.1ch auto 1.4ch 1fr;
+ /* keep fixed values small enough for spanners to have an effect */
+}
+item {
+ /* allow for differing min-content and max-content sizes */
+ writing-mode: vertical-rl;
+ text-orientation: sideways;
+}
+</style>
+
+<body>
+
+<section class="auto">
+<grid title="Wider 1st item 2ch">
+ <item style="height:2ch">1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item>5 5</item>
+</grid>
+
+<grid title="Wrapped 5th item 2ch">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:2ch">5 5</item>
+</grid>
+
+<grid title="Wrapped 5th item 2ch in col 2">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:2ch; grid-row:2">5 5</item>
+</grid>
+
+<grid title="5th item 4ch in col 2-3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:4ch; grid-row:2/span 2">5 5</item>
+</grid>
+
+<grid title="5th item in col 2-3, 6th item 5ch in col 1-3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="grid-row:2/span 2">5 5</item>
+ <item style="height:5ch; grid-row:span 3/4">6</item>
+</grid>
+
+<grid title="5th item 3ch in col 2-3, 6th item 5ch in col 1-3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:3ch; grid-row:span 2/4">5</item>
+ <item style="height:5ch; grid-row:1/span 3">6</item>
+</grid>
+
+<grid title="5th item span 4">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="grid-row:span 4">5 5</item>
+</grid>
+
+<grid title="5th item 6ch span 4">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-row:span 4">5 5</item>
+</grid>
+
+<grid title="5th item 6ch span 3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-row:span 3">5 5</item>
+</grid>
+</section>
+
+<!-- ditto with 'fr' sizing -->
+
+<section class="fr">
+<grid title="Wider 1st item 2ch">
+ <item style="height:2ch">1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item>5 5</item>
+</grid>
+
+<grid title="Wrapped 5th item 2ch">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:2ch">5 5</item>
+</grid>
+
+<grid title="Wrapped 5th item 2ch in col 2">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:2ch; grid-row:2">5 5</item>
+</grid>
+
+<grid title="5th item 4ch in col 2-3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:4ch; grid-row:2/span 2">5 5</item>
+</grid>
+
+<grid title="5th item in col 2-3, 6th item 5ch in col 1-3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="grid-row:2/span 2">5 5</item>
+ <item style="height:5ch; grid-row:span 3/4">6</item>
+</grid>
+
+<grid title="5th item 3ch in col 2-3, 6th item 5ch in col 1-3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:3ch; grid-row:span 2/4">5</item>
+ <item style="height:5ch; grid-row:1/span 3">6</item>
+</grid>
+
+<grid title="5th item span 4">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="grid-row:span 4">5 5</item>
+</grid>
+
+<grid title="5th item 6ch span 4">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-row:span 4">5 5</item>
+</grid>
+
+<grid title="5th item 6ch span 3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-row:span 3">5 5</item>
+</grid>
+</section>
+
+<!-- ditto with mixed sizing: fr + min/max-content -->
+
+<section class="mix1">
+<grid title="Wider 1st item 2ch">
+ <item style="height:2ch">1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item>5 5</item>
+</grid>
+
+<grid title="Wrapped 5th item 2ch">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:2ch">5 5</item>
+</grid>
+
+<grid title="Wrapped 5th item 2ch in col 2">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:2ch; grid-row:2">5 5</item>
+</grid>
+
+<grid title="5th item 4ch in col 2-3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:4ch; grid-row:2/span 2">5 5</item>
+</grid>
+
+<grid title="5th item in col 2-3, 6th item 5ch in col 1-3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="grid-row:2/span 2">5 5</item>
+ <item style="height:5ch; grid-row:span 3/4">6</item>
+</grid>
+
+<grid title="5th item 3ch in col 2-3, 6th item 5ch in col 1-3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:3ch; grid-row:span 2/4">5</item>
+ <item style="height:5ch; grid-row:1/span 3">6</item>
+</grid>
+
+<grid title="5th item span 4">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="grid-row:span 4">5 5</item>
+</grid>
+
+<grid title="5th item 6ch span 4">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-row:span 4">5 5</item>
+</grid>
+
+<grid title="5th item 6ch span 3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-row:span 3">5 5</item>
+</grid>
+</section>
+
+<!-- ditto with mixed sizing: fixed + auto + fr -->
+
+<section class="mix2">
+<grid title="Wider first item 2ch">
+ <item style="height:2ch">1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item>5 5</item>
+</grid>
+
+<grid title="Wrapped last item 2ch">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:2ch">5 5</item>
+</grid>
+
+<grid title="Wrapped last item 2ch col 2">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:2ch; grid-row:2">5 5</item>
+</grid>
+
+<grid title="Last item 4ch col 2-3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:4ch; grid-row:2/span 2">5 5</item>
+</grid>
+
+<grid title="Item col 2-3 + Item 5ch col 1-3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="grid-row:2/span 2">5 5</item>
+ <item style="height:5ch; grid-row:1/span 3">6</item>
+</grid>
+
+<grid title="Item 3ch col 2-3 + Item 5ch col 1-3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:3ch; grid-row:2/span 2">5 5</item>
+ <item style="height:5ch; grid-row:1/span 3">6</item>
+</grid>
+
+<grid title="Last item span 4">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="grid-row:span 4">5 5</item>
+</grid>
+
+<grid title="Last item 6ch span 4">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-row:span 4">5 5</item>
+</grid>
+
+<grid title="Last item 6ch span 3">
+ <item>1</item>
+ <item>2 2</item>
+ <item>3 3</item>
+ <item>4</item>
+ <item style="height:6ch; grid-row:span 3">5 5</item>
+</grid>
+</section>
diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-005-ref.html b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-005-ref.html
new file mode 100644
index 00000000000..0c5eae740f6
--- /dev/null
+++ b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-005-ref.html
@@ -0,0 +1,77 @@
+<!DOCTYPE HTML>
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html>
+ <meta charset="utf-8">
+ <title>Reference: Masonry layout row sizing (vertical writing mode)</title>
+ <link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
+ <style>
+
+@import "support/masonry-intrinsic-sizing-visual.css";
+
+grid {
+ display: inline-grid;
+ gap: 1px 2px;
+ grid-template-rows: repeat(4,auto);
+ grid-auto-flow: column;
+ border: 1px solid;
+ padding: 0 1px 0 2px;
+ vertical-align: top;
+}
+item {
+ writing-mode: vertical-lr;
+}
+</style>
+
+<body>
+
+<grid style="grid-template-rows: repeat(4, 3ch)">
+ <item style="height:3ch">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item>5 5</item>
+ <item>6</item>
+ <item>7</item>
+ <item>8</item>
+ <item>9 9</item>
+</grid>
+
+<grid style="grid-template-rows: repeat(4,3ch)">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:3ch">5 5</item>
+ <item>6</item>
+ <item>7</item>
+ <item>8</item>
+ <item>9 9</item>
+</grid>
+
+<grid style="grid-template-rows: 3ch repeat(3,1ch)">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:3ch; grid-row:1">5 5</item>
+ <item>6</item>
+ <item>7</item>
+ <item>8</item>
+ <item>9 9</item>
+</grid>
+
+<grid style="grid-template-rows: 3ch repeat(3,1ch)">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:3ch; grid-column:1">5 5</item>
+ <item>6</item>
+ <item>7</item>
+ <item>8</item>
+ <item>9 9</item>
+</grid>
+
diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-005.html b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-005.html
new file mode 100644
index 00000000000..4c8e4373202
--- /dev/null
+++ b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-005.html
@@ -0,0 +1,80 @@
+<!DOCTYPE HTML>
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html>
+ <meta charset="utf-8">
+ <title>CSS Grid Test: Masonry layout row sizing (vertical writing mode)</title>
+ <link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
+ <link rel="help" href="https://drafts.csswg.org/css-grid-3/#track-sizing">
+ <link rel="match" href="masonry-intrinsic-sizing-rows-005-ref.html">
+ <style>
+
+@import "support/masonry-intrinsic-sizing-visual.css";
+
+grid {
+ display: inline-grid;
+ gap: 1px 2px;
+ grid-template-columns: masonry;
+ grid-template-rows: repeat(4,auto);
+ border: 1px solid;
+ padding: 0 1px 0 2px;
+ vertical-align: top;
+}
+
+item {
+ writing-mode: vertical-lr;
+}
+</style>
+
+<body>
+
+<grid title="First item 3ch">
+ <item style="height:3ch">1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item>5 5</item>
+ <item>6</item>
+ <item>7</item>
+ <item>8</item>
+ <item>9 9</item>
+</grid>
+
+<grid title="Fifth item 3ch">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:3ch">5 5</item>
+ <item>6</item>
+ <item>7</item>
+ <item>8</item>
+ <item>9 9</item>
+</grid>
+
+<grid title="Fifth item 3ch row 1">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:3ch; grid-row:1">5 5</item>
+ <item>6</item>
+ <item>7</item>
+ <item>8</item>
+ <item>9 9</item>
+</grid>
+
+<grid title="Fifth item 3ch col 1 (ignored)">
+ <item>1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="height:3ch; grid-column:1">5 5</item>
+ <item>6</item>
+ <item>7</item>
+ <item>8</item>
+ <item>9 9</item>
+</grid>
+
diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-006-ref.html b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-006-ref.html
new file mode 100644
index 00000000000..f3f67e287d2
--- /dev/null
+++ b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-006-ref.html
@@ -0,0 +1,50 @@
+<!DOCTYPE HTML>
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html>
+ <meta charset="utf-8">
+ <title>Reference: Masonry layout row auto-fill sizing</title>
+ <link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
+ <style>
+
+@import "support/masonry-intrinsic-sizing-visual.css";
+
+grid {
+ display: inline-grid;
+ gap: 1px 2px;
+ grid-auto-flow: column;
+ grid-template-rows: repeat(4,1em);
+ border: 1px solid;
+ padding: 0 1px 0 2px;
+ vertical-align: top;
+}
+</style>
+
+<body>
+
+<grid>
+ <item style="width:3ch; grid-column: span 2">1 1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-column: span 2">5 5</item>
+</grid>
+
+<grid>
+ <item style="width:3ch; grid-column: span 2">1 1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-column: span 2">5 5</item>
+</grid>
+
+<grid style="height:5em">
+ <item style="width:3ch; grid-column: span 2">1 1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item style="grid-column: span 2">5 5</item>
+</grid>
+
diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-006.html b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-006.html
new file mode 100644
index 00000000000..0639e395eae
--- /dev/null
+++ b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/masonry-intrinsic-sizing-rows-006.html
@@ -0,0 +1,55 @@
+<!DOCTYPE HTML>
+<!--
+ Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html>
+ <meta charset="utf-8">
+ <title>CSS Grid Test: Masonry layout row auto-fill sizing</title>
+ <link rel="author" title="Mats Palmgren" href="mailto:mats@mozilla.com">
+ <link rel="help" href="https://drafts.csswg.org/css-grid-3/#track-sizing">
+ <link rel="match" href="masonry-intrinsic-sizing-rows-006-ref.html">
+ <style>
+
+@import "support/masonry-intrinsic-sizing-visual.css";
+
+grid {
+ display: inline-grid;
+ gap: 1px 2px;
+ grid-template-columns: masonry;
+ grid-template-rows: repeat(4,auto);
+ border: 1px solid;
+ padding: 0 1px 0 2px;
+ vertical-align: top;
+}
+</style>
+
+<body>
+
+<grid title="max-height 5em"
+ style="max-height:5em; grid-template-rows: repeat(auto-fill,1em);">
+ <item>1 1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item>5 5</item>
+</grid>
+
+<grid title="min-height 4em"
+ style="min-height:4em; grid-template-rows: repeat(auto-fill,1em);">
+ <item>1 1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item>5 5</item>
+</grid>
+
+<grid title="height 5em"
+ style="height:5em; grid-template-rows: repeat(auto-fill,1em);">
+ <item>1 1</item>
+ <item>2</item>
+ <item>3</item>
+ <item>4</item>
+ <item>5 5</item>
+</grid>
+
diff --git a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/support/masonry-intrinsic-sizing-visual.css b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/support/masonry-intrinsic-sizing-visual.css
index 150f0f2679a..5ac6586904f 100644
--- a/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/support/masonry-intrinsic-sizing-visual.css
+++ b/tests/wpt/tests/css/css-grid/masonry/tentative/intrinsic-sizing/support/masonry-intrinsic-sizing-visual.css
@@ -1,11 +1,14 @@
/* Basic Testing Setup */
html,body {
- color: black; background: white; font: 15px/1 Ahem, monospace;
+ color: black; background: white; font: 15px/1 monospace;
padding: 1em 0; margin: 0;
max-width: 800px; height: calc(600px - 2em);
border-bottom: 1px solid orange; /* Do Not Cross */
}
+section {
+ float: left;
+}
/* Visualization */
grid {
@@ -18,7 +21,8 @@ item {
/* Debugging Aid */
section {
- border-top: 1px solid gray;
+ border: 1px gray;
+ border-style: solid solid none none;
counter-reset: grid;
}
diff --git a/tests/wpt/tests/css/css-highlight-api/highlight-image-notref.html b/tests/wpt/tests/css/css-highlight-api/highlight-image-notref.html
new file mode 100644
index 00000000000..0f4e21fc3d6
--- /dev/null
+++ b/tests/wpt/tests/css/css-highlight-api/highlight-image-notref.html
@@ -0,0 +1,6 @@
+<!DOCTYPE html>
+<html>
+<body>
+ <div id="style1"><img src="../../images/blank-highlight.png"></div>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-highlight-api/highlight-image.html b/tests/wpt/tests/css/css-highlight-api/highlight-image.html
new file mode 100644
index 00000000000..b5d44e06b29
--- /dev/null
+++ b/tests/wpt/tests/css/css-highlight-api/highlight-image.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="utf-8">
+ <title>Custom highlight pseudo elements over images.</title>
+ <link rel="help" href="https://drafts.csswg.org/css-highlight-api-1/#creating-highlights">
+ <link rel="mismatch" href="highlight-image-notref.html">
+ <meta name="assert" content="Highlights should be able to be specified over images.">
+ <style>
+ ::highlight(example-highlight1) {
+ background-color: rgba(200,0,0,.5);
+ color:green;
+ }
+ </style>
+</head>
+<body>
+ <div id="img1"><img src="../../images/blank-highlight.png"></div>
+
+ <script>
+ let imageElement1 = document.getElementById('img1');
+ let highlight1 = new Highlight(new StaticRange({startContainer: imageElement1.childNodes[0], startOffset: 0, endContainer: imageElement1.childNodes[0], endOffset: 1}));
+
+
+ CSS.highlights.set("example-highlight1", highlight1);
+ </script>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-highlight-api/highlight-text-across-elements-ref.html b/tests/wpt/tests/css/css-highlight-api/highlight-text-across-elements-ref.html
new file mode 100644
index 00000000000..1c3e9110fcf
--- /dev/null
+++ b/tests/wpt/tests/css/css-highlight-api/highlight-text-across-elements-ref.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <style>
+ #style1 {
+ background-color: yellow;
+ color:green;
+ }
+ #style2 {
+ background-color: blue;
+ color:red;
+ }
+ #style3 {
+ background-color: purple;
+ color:pink;
+ }
+ </style>
+</head>
+<body>
+ One <span id="style1">two</span> th<span id="style2">ree
+ four</span> five <span id="style2">six
+ seven</span> eigh<span id="style3">t nine
+ ten eleven twelve
+ thirteen fou</span>rteen fifteen
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-highlight-api/highlight-text-across-elements.html b/tests/wpt/tests/css/css-highlight-api/highlight-text-across-elements.html
new file mode 100644
index 00000000000..4ff6cff4b0b
--- /dev/null
+++ b/tests/wpt/tests/css/css-highlight-api/highlight-text-across-elements.html
@@ -0,0 +1,49 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="utf-8">
+ <title>Custom highlight pseudo elements across elements.</title>
+ <link rel="help" href="https://drafts.csswg.org/css-highlight-api-1/#painting">
+ <link rel="match" href="highlight-text-across-elements-ref.html">
+ <meta name="assert" content="Highlights should be able to be specified across elements.">
+ <style>
+ ::highlight(example-highlight1) {
+ background-color: yellow;
+ color:green;
+ }
+ ::highlight(example-highlight2) {
+ background-color: blue;
+ color:red;
+ }
+ ::highlight(example-highlight3) {
+ background-color: purple;
+ color:pink;
+ }
+ </style>
+</head>
+<body>
+ <span id="text1">One two three</span>
+ <span id="text2">four five six</span>
+ <span id="text3">seven eight nine</span>
+ <span id="text4">ten eleven twelve</span>
+ <span id="text5">thirteen fourteen fifteen</span>
+
+ <script>
+ let textElement1 = document.getElementById('text1');
+ let textElement2 = document.getElementById('text2');
+ let textElement3 = document.getElementById('text3');
+ let textElement4 = document.getElementById('text4');
+ let textElement5 = document.getElementById('text5');
+ let highlight1 = new Highlight(new StaticRange({startContainer: textElement1.childNodes[0], startOffset: 4, endContainer: textElement1.childNodes[0], endOffset: 7}));
+
+ let highlight2 = new Highlight(new StaticRange({startContainer: textElement1.childNodes[0], startOffset: 10, endContainer: textElement2.childNodes[0], endOffset: 4}));
+ highlight2.add(new StaticRange({startContainer: textElement2.childNodes[0], startOffset: 10, endContainer: textElement3.childNodes[0], endOffset: 5}));
+
+ let highlight3 = new Highlight(new StaticRange({startContainer: textElement3.childNodes[0], startOffset: 10, endContainer: textElement5.childNodes[0], endOffset: 12}));
+
+ CSS.highlights.set("example-highlight1", highlight1);
+ CSS.highlights.set("example-highlight2", highlight2);
+ CSS.highlights.set("example-highlight3", highlight3);
+ </script>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-highlight-api/highlight-text-cascade-ref.html b/tests/wpt/tests/css/css-highlight-api/highlight-text-cascade-ref.html
new file mode 100644
index 00000000000..ec3a9a5741a
--- /dev/null
+++ b/tests/wpt/tests/css/css-highlight-api/highlight-text-cascade-ref.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <style>
+ #style1 {
+ background-color: yellow;
+ color:green;
+ }
+ #style2 {
+ background-color: blue;
+ color:red;
+ }
+ #style3 {
+ background-color: purple;
+ color:pink;
+ }
+ </style>
+</head>
+<body>
+ <div id="out"><span id="text1"><span id="style1">One</span> two three</span></div>
+ <div id="scoped"><span id="text2">four <span id="style2">five</span> six</span></div>
+ <span id="text3">seven eight nine</span>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-highlight-api/highlight-text-cascade.html b/tests/wpt/tests/css/css-highlight-api/highlight-text-cascade.html
new file mode 100644
index 00000000000..20d5eaf60a0
--- /dev/null
+++ b/tests/wpt/tests/css/css-highlight-api/highlight-text-cascade.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="utf-8">
+ <title>Multiple custom highlight pseudo elements.</title>
+ <link rel="help" href="https://drafts.csswg.org/css-highlight-api-1/#creating-highlights">
+ <link rel="match" href="highlight-text-cascade-ref.html">
+ <meta name="assert" content="Multiple highlights should be able to be specified.">
+ <style>
+ #out::highlight(example-highlight) {
+ background-color: yellow;
+ color:green;
+ }
+ #scoped::highlight(example-highlight) {
+ background-color: blue;
+ color:red;
+ }
+ </style>
+</head>
+<body>
+ <div id="out"><span id="text1">One two three</span></div>
+ <div id="scoped"><span id="text2">four five six</span></div>
+ <span id="text3">seven eight nine</span>
+
+ <script>
+ let textElement1 = document.getElementById('text1');
+ let textElement2 = document.getElementById('text2');
+ let textElement3 = document.getElementById('text3');
+ let highlight = new Highlight(new StaticRange({startContainer: textElement1.childNodes[0], startOffset: 0, endContainer: textElement1.childNodes[0], endOffset: 3}));
+ highlight.add(new StaticRange({startContainer: textElement2.childNodes[0], startOffset: 5, endContainer: textElement2.childNodes[0], endOffset: 9}));
+
+ CSS.highlights.set("example-highlight", highlight);
+ </script>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-highlight-api/highlight-text-decorations-ref.html b/tests/wpt/tests/css/css-highlight-api/highlight-text-decorations-ref.html
new file mode 100644
index 00000000000..8120ae34da2
--- /dev/null
+++ b/tests/wpt/tests/css/css-highlight-api/highlight-text-decorations-ref.html
@@ -0,0 +1,47 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <style>
+ html {
+ font-size: 24pt;
+ }
+ .style1 {
+ text-decoration: underline;
+ text-decoration-color: red;
+ color: blue;
+ }
+ .style2 {
+ text-decoration: line-through;
+ text-decoration-color: violet;
+ text-decoration-style: double;
+ }
+ .style3 {
+ text-decoration: overline;
+ text-decoration-color: orange;
+ text-decoration-style: dotted;
+ }
+ /* FIXME: There is a discrepency for how the underlines are displayed at the end of the line, leading to a pixel different in this text. Find a real fix, but in the meantime, obscure the offending pixel <rdar://problem/59327965> https://bugs.webkit.org/show_bug.cgi?id=207512*/
+ .obscurer1 {
+ position: absolute;
+ top: 25px;
+ left: 95px;
+ width: 10px;
+ height: 10px;
+ background: grey;
+ }
+ .obscurer2 {
+ position: absolute;
+ top: 35px;
+ left: 180px;
+ width: 10px;
+ height: 10px;
+ background: grey;
+ }
+ </style>
+</head>
+<body>
+ O<span class="style1">n</span>e t<span class="style2">w</span>o th<span class="style3">ree</span>
+ <div class='obscurer1'></div>
+ <div class='obscurer2'></div>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-highlight-api/highlight-text-decorations.html b/tests/wpt/tests/css/css-highlight-api/highlight-text-decorations.html
new file mode 100644
index 00000000000..bf8f3f79b0d
--- /dev/null
+++ b/tests/wpt/tests/css/css-highlight-api/highlight-text-decorations.html
@@ -0,0 +1,63 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="utf-8">
+ <title>Text decorations in custom highlight pseudo elements.</title>
+ <link rel="help" href="https://drafts.csswg.org/css-highlight-api-1/#applicable-properties">
+ <link rel="match" href="highlight-text-decorations-ref.html">
+ <meta name="assert" content="Text decorations in highlights should be displayed.">
+ <style>
+ html {
+ font-size: 24pt;
+ }
+ ::highlight(example-highlight1) {
+ text-decoration: underline;
+ text-decoration-color: red;
+ color: blue;
+ }
+ ::highlight(example-highlight2) {
+ text-decoration: line-through;
+ text-decoration-color: violet;
+ text-decoration-style: double;
+ }
+ ::highlight(example-highlight3) {
+ text-decoration: overline;
+ text-decoration-color: orange;
+ text-decoration-style: dotted;
+ }
+ /* FIXME: There is a discrepency for how the underlines are displayed at the end of the line, leading to a pixel different in this text. Find a real fix, but in the meantime, obscure the offending pixel https://bugs.webkit.org/show_bug.cgi?id=207512 <rdar://problem/59327965> */
+ .obscurer1 {
+ position: absolute;
+ top: 25px;
+ left: 95px;
+ width: 10px;
+ height: 10px;
+ background: grey;
+ }
+ .obscurer2 {
+ position: absolute;
+ top: 35px;
+ left: 180px;
+ width: 10px;
+ height: 10px;
+ background: grey;
+ }
+ </style>
+</head>
+<body>
+ <span id="text1">One two three</span>
+ <div class='obscurer1'></div>
+ <div class='obscurer2'></div>
+
+ <script>
+ let textElement = document.getElementById('text1');
+ let highlight1 = new Highlight(new StaticRange({startContainer: textElement.childNodes[0], startOffset: 1, endContainer: textElement.childNodes[0], endOffset: 2}));
+ let highlight2 = new Highlight(new StaticRange({startContainer: textElement.childNodes[0], startOffset: 5, endContainer: textElement.childNodes[0], endOffset: 6}));
+ let highlight3 = new Highlight(new StaticRange({startContainer: textElement.childNodes[0], startOffset: 10, endContainer: textElement.childNodes[0], endOffset: 13}));
+
+ CSS.highlights.set("example-highlight1", highlight1);
+ CSS.highlights.set("example-highlight2", highlight2);
+ CSS.highlights.set("example-highlight3", highlight3);
+ </script>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-highlight-api/highlight-text-dynamic-notref.html b/tests/wpt/tests/css/css-highlight-api/highlight-text-dynamic-notref.html
new file mode 100644
index 00000000000..0489cb6e8c9
--- /dev/null
+++ b/tests/wpt/tests/css/css-highlight-api/highlight-text-dynamic-notref.html
@@ -0,0 +1,6 @@
+<!DOCTYPE html>
+<html>
+<body>
+ <span id="text1">One two three</span>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/wpt/tests/css/css-highlight-api/highlight-text-dynamic.html b/tests/wpt/tests/css/css-highlight-api/highlight-text-dynamic.html
new file mode 100644
index 00000000000..8258c1322a4
--- /dev/null
+++ b/tests/wpt/tests/css/css-highlight-api/highlight-text-dynamic.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="utf-8">
+ <title>Highlights Paint after dynamic creation.</title>
+ <link rel="help" href="https://drafts.csswg.org/css-highlight-api-1/#creating-highlights">
+ <link rel="mismatch" href="highlight-text-dynamic-notref.html">
+ <meta name="assert" content="Highlight should paint after being created after first paint.">
+ <style>
+ ::highlight(example-highlight) {
+ background-color: yellow;
+ color:green;
+ }
+ </style>
+</head>
+<body>
+ <span id="text1">One two three</span>
+
+ <script>
+ function setHighlight(timestamp) {
+ let textElement = document.getElementById('text1');
+ let highlight1 = new Highlight(new StaticRange({startContainer: textElement.childNodes[0], startOffset: 1, endContainer: textElement.childNodes[0], endOffset: 2}));
+ CSS.highlights.set("example-highlight", highlight1);
+ }
+
+ document.body.offsetLeft;
+ window.requestAnimationFrame(setHighlight);
+ </script>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-highlight-api/highlight-text-ref.html b/tests/wpt/tests/css/css-highlight-api/highlight-text-ref.html
new file mode 100644
index 00000000000..227e950c04b
--- /dev/null
+++ b/tests/wpt/tests/css/css-highlight-api/highlight-text-ref.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <style>
+ #style1 {
+ background-color: yellow;
+ color:green;
+ }
+ #style2 {
+ background-color: blue;
+ color:red;
+ }
+ #style3 {
+ background-color: purple;
+ color:pink;
+ }
+ </style>
+</head>
+<body>
+ O<span id="style1">n</span>e<span id="style2"> </span>t<span id="style2">w</span>o<span id="style3"> </span>t<span id="style3">h</span>re<span id="style3">e</span>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-highlight-api/highlight-text-replace-ref.html b/tests/wpt/tests/css/css-highlight-api/highlight-text-replace-ref.html
new file mode 100644
index 00000000000..402f0ee622d
--- /dev/null
+++ b/tests/wpt/tests/css/css-highlight-api/highlight-text-replace-ref.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <style>
+ #highlight {
+ background-color: yellow;
+ color:green;
+ }
+ </style>
+</head>
+<body>
+ One<span id="highlight"> </span>t<span id="highlight">w</span>o three
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-highlight-api/highlight-text-replace.html b/tests/wpt/tests/css/css-highlight-api/highlight-text-replace.html
new file mode 100644
index 00000000000..6a47e06f5ca
--- /dev/null
+++ b/tests/wpt/tests/css/css-highlight-api/highlight-text-replace.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="utf-8">
+ <title>Multiple custom highlight pseudo elements.</title>
+ <link rel="help" href="https://drafts.csswg.org/css-highlight-api-1/#creating-highlights">
+ <link rel="match" href="highlight-text-replace-ref.html">
+ <meta name="assert" content="Multiple highlights should be able to be specified.">
+ <style>
+ ::highlight(example-highlight) {
+ background-color: yellow;
+ color:green;
+ }
+ </style>
+</head>
+<body>
+ <span id="text1">One two three</span>
+
+ <script>
+ let textElement = document.getElementById('text1');
+ let highlight1 = new Highlight(new StaticRange({startContainer: textElement.childNodes[0], startOffset: 1, endContainer: textElement.childNodes[0], endOffset: 2}));
+
+ let highlight2 = new Highlight(new StaticRange({startContainer: textElement.childNodes[0], startOffset: 3, endContainer: textElement.childNodes[0], endOffset: 4}));
+ highlight2.add(new StaticRange({startContainer: textElement.childNodes[0], startOffset: 5, endContainer: textElement.childNodes[0], endOffset: 6}));
+
+ CSS.highlights.set("example-highlight", highlight1);
+ CSS.highlights.set("example-highlight", highlight2);
+ </script>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-highlight-api/highlight-text.html b/tests/wpt/tests/css/css-highlight-api/highlight-text.html
new file mode 100644
index 00000000000..1442d9602d8
--- /dev/null
+++ b/tests/wpt/tests/css/css-highlight-api/highlight-text.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="utf-8">
+ <title>Multiple custom highlight pseudo elements.</title>
+ <link rel="help" href="https://drafts.csswg.org/css-highlight-api-1/#creating-highlights">
+ <link rel="match" href="highlight-text-ref.html">
+ <meta name="assert" content="Multiple highlights should be able to be specified.">
+ <style>
+ ::highlight(example-highlight1) {
+ background-color: yellow;
+ color:green;
+ }
+ ::highlight(example-highlight2) {
+ background-color: blue;
+ color:red;
+ }
+ ::highlight(example-highlight3) {
+ background-color: purple;
+ color:pink;
+ }
+ </style>
+</head>
+<body>
+ <span id="text1">One two three</span>
+
+ <script>
+ let textElement = document.getElementById('text1');
+ let highlight1 = new Highlight(new StaticRange({startContainer: textElement.childNodes[0], startOffset: 1, endContainer: textElement.childNodes[0], endOffset: 2}));
+
+ let highlight2 = new Highlight(new StaticRange({startContainer: textElement.childNodes[0], startOffset: 3, endContainer: textElement.childNodes[0], endOffset: 4}));
+ highlight2.add(new StaticRange({startContainer: textElement.childNodes[0], startOffset: 5, endContainer: textElement.childNodes[0], endOffset: 6}));
+
+ let highlight3 = new Highlight(new StaticRange({startContainer: textElement.childNodes[0], startOffset: 7, endContainer: textElement.childNodes[0], endOffset: 8}));
+ highlight3.add(new StaticRange({startContainer: textElement.childNodes[0], startOffset: 9, endContainer: textElement.childNodes[0], endOffset: 10}));
+ highlight3.add(new StaticRange({startContainer: textElement.childNodes[0], startOffset: 12, endContainer: textElement.childNodes[0], endOffset: 13}));
+
+ CSS.highlights.set("example-highlight1", highlight1);
+ CSS.highlights.set("example-highlight2", highlight2);
+ CSS.highlights.set("example-highlight3", highlight3);
+ </script>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-images/WEB_FEATURES.yml b/tests/wpt/tests/css/css-images/WEB_FEATURES.yml
index 0a1af199830..6f2806d64c0 100644
--- a/tests/wpt/tests/css/css-images/WEB_FEATURES.yml
+++ b/tests/wpt/tests/css/css-images/WEB_FEATURES.yml
@@ -2,3 +2,6 @@ features:
- name: conic-gradients
files:
- "*conic*"
+- name: object-view-box
+ files:
+ - object-view-box-*
diff --git a/tests/wpt/tests/css/css-images/animation/WEB_FEATURES.yml b/tests/wpt/tests/css/css-images/animation/WEB_FEATURES.yml
new file mode 100644
index 00000000000..ce2e2c31f99
--- /dev/null
+++ b/tests/wpt/tests/css/css-images/animation/WEB_FEATURES.yml
@@ -0,0 +1,4 @@
+features:
+- name: object-view-box
+ files:
+ - object-view-box-*
diff --git a/tests/wpt/tests/css/css-images/conic-gradient-angle-negative.html b/tests/wpt/tests/css/css-images/conic-gradient-angle-negative.html
index ff8e20aafed..5a7030d0ff0 100644
--- a/tests/wpt/tests/css/css-images/conic-gradient-angle-negative.html
+++ b/tests/wpt/tests/css/css-images/conic-gradient-angle-negative.html
@@ -3,6 +3,7 @@
<title>Conic gradient with negative angle parameter</title>
<link rel="help" href="https://drafts.csswg.org/css-images-4/#conic-gradients">
<meta name="assert" content="Rendering of conic-gradient with negative center parameter">
+<meta name="fuzzy" content="maxDifference=1;totalPixels=40000">
<link rel="match" href="reference/200x200-blue-black-green-red.html">
<style>
#gradient {
diff --git a/tests/wpt/tests/css/css-images/conic-gradient-angle.html b/tests/wpt/tests/css/css-images/conic-gradient-angle.html
index 0b3404508d0..ba37ec15e1e 100644
--- a/tests/wpt/tests/css/css-images/conic-gradient-angle.html
+++ b/tests/wpt/tests/css/css-images/conic-gradient-angle.html
@@ -3,6 +3,7 @@
<title>Conic gradient with custom angle parameter</title>
<link rel="help" href="https://drafts.csswg.org/css-images-4/#conic-gradients">
<meta name="assert" content="Rendering of conic-gradient with custom center parameter">
+<meta name="fuzzy" content="maxDifference=1;totalPixels=40000">
<link rel="match" href="reference/200x200-blue-black-green-red.html">
<style>
#gradient {
diff --git a/tests/wpt/tests/css/css-images/conic-gradient-center.html b/tests/wpt/tests/css/css-images/conic-gradient-center.html
index ecbc3ffa5c7..7e810270567 100644
--- a/tests/wpt/tests/css/css-images/conic-gradient-center.html
+++ b/tests/wpt/tests/css/css-images/conic-gradient-center.html
@@ -3,6 +3,7 @@
<title>Conic gradient with custom center parameter</title>
<link rel="help" href="https://drafts.csswg.org/css-images-4/#conic-gradients">
<meta name="assert" content="Rendering of conic-gradient with custom center parameter">
+<meta name="fuzzy" content="maxDifference=1;totalPixels=40000">
<link rel="match" href="conic-gradient-center-ref.html">
<style>
#gradient {
diff --git a/tests/wpt/tests/css/css-images/gradient/color-stops-parsing.html b/tests/wpt/tests/css/css-images/gradient/color-stops-parsing.html
index a8baa63a676..1b83ea3b153 100644
--- a/tests/wpt/tests/css/css-images/gradient/color-stops-parsing.html
+++ b/tests/wpt/tests/css/css-images/gradient/color-stops-parsing.html
@@ -46,6 +46,19 @@
// kitchen sink
{ stops: "black 0% calc(100% / 5), 25%, green 30% 60%, calc(100% * 3 / 4), white calc(100% - 20%) 100%", parse: true },
+
+ // lots of stops
+ {
+ stops: (() => {
+ let longGradient = "";
+ for (let x = 0; x < 500; x++) {
+ longGradient += `white ${x/500}%, ${(2 * x + 1) / 1000}%, `;
+ }
+ longGradient += "black";
+ return longGradient;
+ })(),
+ parse: true
+ }
];
function check_gradient(gradient, stops, shouldParse) {
@@ -58,7 +71,6 @@
document.body.appendChild(div);
var computed_style = getComputedStyle(div).getPropertyValue("background-image");
assert_equals(computed_style.startsWith(gradient), shouldParse);
-
div.remove();
}
diff --git a/tests/wpt/tests/css/css-images/multiple-position-color-stop-conic.html b/tests/wpt/tests/css/css-images/multiple-position-color-stop-conic.html
index 8a7331d08ff..41aa505c879 100644
--- a/tests/wpt/tests/css/css-images/multiple-position-color-stop-conic.html
+++ b/tests/wpt/tests/css/css-images/multiple-position-color-stop-conic.html
@@ -2,6 +2,7 @@
<title>Conic gradient with a two position color stop</title>
<link rel="help" href="https://drafts.csswg.org/css-images-4/#color-stop-syntax">
<meta name="assert" content="A color stop with two positions create a hard transition">
+<meta name="fuzzy" content="maxDifference=1;totalPixels=10000">
<link rel="match" href="reference/100x100-blue-green.html">
<style>
#target {
diff --git a/tests/wpt/tests/css/css-images/normalization-conic-2.html b/tests/wpt/tests/css/css-images/normalization-conic-2.html
index 7f5c3954f61..9856f6b8f2c 100644
--- a/tests/wpt/tests/css/css-images/normalization-conic-2.html
+++ b/tests/wpt/tests/css/css-images/normalization-conic-2.html
@@ -3,6 +3,7 @@
<title>Conic gradient stop normalization</title>
<link rel="help" href="https://drafts.csswg.org/css-images-4/#conic-gradients">
<meta name="assert" content="Rendering of conic-gradient with normalized color stops">
+<meta name="fuzzy" content="maxDifference=1;totalPixels=10000">
<link rel="match" href="reference/100x100-blue.html">
<style>
#gradient {
diff --git a/tests/wpt/tests/css/css-images/normalization-conic-degenerate.html b/tests/wpt/tests/css/css-images/normalization-conic-degenerate.html
index 909fd54dcbd..6905c39ef9d 100644
--- a/tests/wpt/tests/css/css-images/normalization-conic-degenerate.html
+++ b/tests/wpt/tests/css/css-images/normalization-conic-degenerate.html
@@ -3,6 +3,7 @@
<title>Conic gradient stop normalization</title>
<link rel="help" href="https://www.w3.org/TR/css-images-3/#repeating-gradients">
<meta name="assert" content="Rendering of repeating-conic-gradient w/ stops at the same place">
+<meta name="fuzzy" content="maxDifference=1;totalPixels=10000">
<link rel="match" href="reference/100x100-blue.html">
<style>
#gradient {
diff --git a/tests/wpt/tests/css/css-images/normalization-conic.html b/tests/wpt/tests/css/css-images/normalization-conic.html
index 9c5e82d71cc..21fb8bae8a6 100644
--- a/tests/wpt/tests/css/css-images/normalization-conic.html
+++ b/tests/wpt/tests/css/css-images/normalization-conic.html
@@ -3,6 +3,7 @@
<title>Conic gradient stop normalization</title>
<link rel="help" href="https://drafts.csswg.org/css-images-4/#conic-gradients">
<meta name="assert" content="Rendering of conic-gradient with normalized color stops">
+<meta name="fuzzy" content="maxDifference=1;totalPixels=10000">
<link rel="match" href="reference/100x100-blue.html">
<style>
#gradient {
diff --git a/tests/wpt/tests/css/css-images/out-of-range-color-stop-conic.html b/tests/wpt/tests/css/css-images/out-of-range-color-stop-conic.html
index be0c73a3bac..1fe59a5a6b9 100644
--- a/tests/wpt/tests/css/css-images/out-of-range-color-stop-conic.html
+++ b/tests/wpt/tests/css/css-images/out-of-range-color-stop-conic.html
@@ -3,6 +3,7 @@
<title>Conic gradient with out-of-range stops</title>
<link rel="help" href="https://drafts.csswg.org/css-images-4/#conic-gradients">
<meta name="assert" content="Rendering of conic-gradient with stops positioned outside of [0, 1]">
+<meta name="fuzzy" content="maxDifference=1;totalPixels=40000">
<link rel="match" href="reference/200x200-blue-black-green-red.html">
<style>
#gradient {
diff --git a/tests/wpt/tests/css/css-images/support/external-images.svg b/tests/wpt/tests/css/css-images/support/external-images.svg
new file mode 100644
index 00000000000..8439561e160
--- /dev/null
+++ b/tests/wpt/tests/css/css-images/support/external-images.svg
@@ -0,0 +1,10 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="500" height="500">
+ <g>
+ <image id="svg-image" x="0" y="0" width="60" height="60" href="60x60-gg-rr.png"></image>
+ <foreignObject x="0" y="60" width="60" height="60">
+ <html xmlns="http://www.w3.org/1999/xhtml">
+ <img id="html-img" src="60x60-gg-rr.png"/>
+ </html>
+ </foreignObject>
+ </g>
+</svg>
diff --git a/tests/wpt/tests/css/css-images/support/scripted.svg b/tests/wpt/tests/css/css-images/support/scripted.svg
new file mode 100644
index 00000000000..6936caad322
--- /dev/null
+++ b/tests/wpt/tests/css/css-images/support/scripted.svg
@@ -0,0 +1,16 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="500" height="500">
+ <g>
+ <rect id="svg-rect" x="0" y="0" width="100" height="100" fill="green"></rect>
+ <foreignObject x="0" y="100" width="100" height="100">
+ <html xmlns="http://www.w3.org/1999/xhtml">
+ <div id="html-rect" style="background-color: green; width: 100px; height: 100px;"/>
+ <script>
+ document.getElementById('html-rect').style.backgroundColor = "red";
+ </script>
+ </html>
+ </foreignObject>
+ </g>
+ <script>
+ document.getElementById('svg-rect').setAttribute('fill', 'red');
+ </script>
+</svg>
diff --git a/tests/wpt/tests/css/css-images/svg-images-are-ignored-ref.html b/tests/wpt/tests/css/css-images/svg-images-are-ignored-ref.html
new file mode 100644
index 00000000000..3c1864fea41
--- /dev/null
+++ b/tests/wpt/tests/css/css-images/svg-images-are-ignored-ref.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="utf-8">
+ <title>CSS Image Test: SVG used as an image does not load images - mismatch reference</title>
+ <link rel="author" title="Stephen Chenney" href="mailto:schenney@chromium.org">
+ <style>
+ * {
+ padding: 0px;
+ margin: 0px;
+ }
+ .top-left {
+ position: absolute;
+ left: 0px;
+ top: 0px;
+ }
+ .bottom-left {
+ position: absolute;
+ left: 0px;
+ top: 60px;
+ }
+ </style>
+ </head>
+ <body>
+ <img class="top-left" src="support/60x60-green.png"/>
+ <img class="bottom-left" src="support/60x60-green.png"/>
+ </body>
+</html>
diff --git a/tests/wpt/tests/css/css-images/svg-images-are-ignored.html b/tests/wpt/tests/css/css-images/svg-images-are-ignored.html
new file mode 100644
index 00000000000..99d86f366ca
--- /dev/null
+++ b/tests/wpt/tests/css/css-images/svg-images-are-ignored.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="utf-8">
+ <title>CSS Image Test: SVG used as an image does not load images</title>
+ <link rel="author" title="Stephen Chenney" href="mailto:schenney@chromium.org">
+ <link rel="help" href="https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element">
+ <link rel="help" href="https://svgwg.org/svg2-draft/single-page.html#conform-referencing-modes">
+ <link rel="match" href="svg-images-are-ignored-ref.html">
+ <style>
+ * {
+ padding: 0px;
+ margin: 0px;
+ }
+ .top-left {
+ position: absolute;
+ left: 0px;
+ top: 0px;
+ }
+ .bottom-left {
+ position: absolute;
+ left: 0px;
+ top: 60px;
+ }
+ </style>
+ </head>
+ <body>
+ <img class="top-left" src="support/60x60-green.png"/>
+ <img class="bottom-left" src="support/60x60-green.png"/>
+ <img class="top-left" src="support/external-images.svg"/>
+ </body>
+</html>
diff --git a/tests/wpt/tests/css/css-images/svg-script-is-ignored-ref.svg b/tests/wpt/tests/css/css-images/svg-script-is-ignored-ref.svg
new file mode 100644
index 00000000000..2230d80393c
--- /dev/null
+++ b/tests/wpt/tests/css/css-images/svg-script-is-ignored-ref.svg
@@ -0,0 +1,10 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="500" height="500">
+ <g>
+ <rect id="svg-rect" x="0" y="0" width="100" height="100" fill="green"></rect>
+ <foreignObject x="0" y="100" width="100" height="100">
+ <html xmlns="http://www.w3.org/1999/xhtml">
+ <div id="html-rect" style="background-color: green; width: 100px; height: 100px;"/>
+ </html>
+ </foreignObject>
+ </g>
+</svg>
diff --git a/tests/wpt/tests/css/css-images/svg-script-is-ignored.html b/tests/wpt/tests/css/css-images/svg-script-is-ignored.html
new file mode 100644
index 00000000000..e57f22d6b8a
--- /dev/null
+++ b/tests/wpt/tests/css/css-images/svg-script-is-ignored.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="utf-8">
+ <title>CSS Image Test: SVG used as an image does not execute any script</title>
+ <link rel="author" title="Stephen Chenney" href="mailto:schenney@chromium.org">
+ <link rel="help" href="https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element">
+ <link rel="help" href="https://svgwg.org/svg2-draft/single-page.html#conform-referencing-modes">
+ <link rel="match" href="svg-script-is-ignored-ref.svg">
+ <style>
+ * {
+ padding: 0px;
+ margin: 0px;
+ }
+ </style>
+ </head>
+ <body>
+ <img src="support/scripted.svg"/>
+ </body>
+</html>
diff --git a/tests/wpt/tests/css/css-images/tiled-conic-gradients.html b/tests/wpt/tests/css/css-images/tiled-conic-gradients.html
index 22f9f4b6ba7..eab48b83e92 100644
--- a/tests/wpt/tests/css/css-images/tiled-conic-gradients.html
+++ b/tests/wpt/tests/css/css-images/tiled-conic-gradients.html
@@ -3,6 +3,7 @@
<title>Checkerboard using conic gradients</title>
<link rel="help" href="https://drafts.csswg.org/css-backgrounds-3/#propdef-background-size">
<meta name="assert" content="Gradients are correctly repeated.">
+<meta name="fuzzy" content="maxDifference=1;totalPixels=40000">
<link rel="match" href="tiled-conic-gradients-ref.html">
<style>
#gradient {
diff --git a/tests/wpt/tests/css/css-lists/pseudo-element-remove-update-ref.html b/tests/wpt/tests/css/css-lists/pseudo-element-remove-update-ref.html
new file mode 100644
index 00000000000..3dc156aa13f
--- /dev/null
+++ b/tests/wpt/tests/css/css-lists/pseudo-element-remove-update-ref.html
@@ -0,0 +1,4 @@
+<!DOCTYPE html>
+<title>CSS Lists: counters updated when element with counter operation on its pseudo element is removed</title>
+<div>1test</div>
+<div>2test</div>
diff --git a/tests/wpt/tests/css/css-lists/pseudo-element-remove-update.html b/tests/wpt/tests/css/css-lists/pseudo-element-remove-update.html
new file mode 100644
index 00000000000..dea7d99662b
--- /dev/null
+++ b/tests/wpt/tests/css/css-lists/pseudo-element-remove-update.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<title>CSS Lists: counters updated when element with counter operation on its pseudo element is removed</title>
+<link rel="help" href="https://drafts.csswg.org/css-lists/#inheriting-counters">
+<link rel="match" href="pseudo-element-remove-update-ref.html">
+<style>
+body {
+ counter-reset: myCounter;
+}
+div::before {
+ content: counter(myCounter);
+ counter-increment: myCounter;
+}
+</style>
+<body>
+<div>test</div>
+<div id="target">test</div>
+<div>test</div>
+<script>
+ document.documentElement.offsetTop;
+ target.remove();
+</script>
+</body>
diff --git a/tests/wpt/tests/css/css-masking/animations/mask-border-outset-composition.html b/tests/wpt/tests/css/css-masking/animations/mask-border-outset-composition.html
new file mode 100644
index 00000000000..ce4b76bd135
--- /dev/null
+++ b/tests/wpt/tests/css/css-masking/animations/mask-border-outset-composition.html
@@ -0,0 +1,134 @@
+<!DOCTYPE html>
+<meta charset="UTF-8">
+<title>mask-border-outset composition</title>
+<link rel="help" href="https://drafts.fxtf.org/css-masking/#propdef-mask-border-outset">
+<link rel="author" title="Tim Nguyen" href="https://github.com/nt1m">
+<meta name="assert" content="mask-border-outset supports animation by computed value">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/interpolation-testcommon.js"></script>
+
+<body>
+<script>
+test_composition({
+ property: 'mask-border-outset',
+ underlying: '1 2 3 4',
+ addFrom: '1 2 3 4',
+ addTo: '101 102 103 104',
+}, [
+ {at: -0.25, expect: '0'}, // Non-negative.
+ {at: 0, expect: '2 4 6 8'},
+ {at: 0.25, expect: '27 29 31 33'},
+ {at: 0.5, expect: '52 54 56 58'},
+ {at: 0.75, expect: '77 79 81 83'},
+ {at: 1, expect: '102 104 106 108'},
+ {at: 1.25, expect: '127 129 131 133'},
+]);
+
+test_composition({
+ property: 'mask-border-outset',
+ underlying: '100 200 300 400',
+ addFrom: '100',
+ addTo: '200 300 500',
+}, [
+ {at: -0.25, expect: '175 250 300 450'},
+ {at: 0, expect: '200 300 400 500'},
+ {at: 0.25, expect: '225 350 500 550'},
+ {at: 0.5, expect: '250 400 600 600'},
+ {at: 0.75, expect: '275 450 700 650'},
+ {at: 1, expect: '300 500 800 700'},
+ {at: 1.25, expect: '325 550 900 750'},
+]);
+
+test_composition({
+ property: 'mask-border-outset',
+ underlying: '1 2 3px 4px',
+ addFrom: '1 2 3px 4px',
+ addTo: '101 102 103px 104px',
+}, [
+ {at: -0.25, expect: '0 0 0px 0px'}, // Non-negative.
+ {at: 0, expect: '2 4 6px 8px'},
+ {at: 0.25, expect: '27 29 31px 33px'},
+ {at: 0.5, expect: '52 54 56px 58px'},
+ {at: 0.75, expect: '77 79 81px 83px'},
+ {at: 1, expect: '102 104 106px 108px'},
+ {at: 1.25, expect: '127 129 131px 133px'},
+]);
+
+test_composition({
+ property: 'mask-border-outset',
+ underlying: '10px 20px',
+ addFrom: '190px 180px 290px 280px',
+ addTo: '90px 80px',
+}, [
+ {at: -0.25, expect: '225px 225px 350px 350px'},
+ {at: 0, expect: '200px 200px 300px 300px'},
+ {at: 0.25, expect: '175px 175px 250px 250px'},
+ {at: 0.5, expect: '150px 150px 200px 200px'},
+ {at: 0.75, expect: '125px 125px 150px 150px'},
+ {at: 1, expect: '100px'},
+ {at: 1.25, expect: '75px 75px 50px 50px'},
+]);
+
+test_composition({
+ property: 'mask-border-outset',
+ underlying: '10 20px',
+ replaceFrom: '100 100px',
+ addTo: '190 180px',
+}, [
+ {at: -0.25, expect: '75 75px'},
+ {at: 0, expect: '100 100px'},
+ {at: 0.25, expect: '125 125px'},
+ {at: 0.5, expect: '150 150px'},
+ {at: 0.75, expect: '175 175px'},
+ {at: 1, expect: '200 200px'},
+ {at: 1.25, expect: '225 225px'},
+]);
+
+test_composition({
+ property: 'mask-border-outset',
+ underlying: '10px 20',
+ addFrom: '90px 80',
+ replaceTo: '0px 0 0px 0',
+}, [
+ {at: -0.25, expect: '125px 125'},
+ {at: 0, expect: '100px 100'},
+ {at: 0.25, expect: '75px 75'},
+ {at: 0.5, expect: '50px 50'},
+ {at: 0.75, expect: '25px 25'},
+ {at: 1, expect: '0px 0'},
+ {at: 1.25, expect: '0px 0'}, // Non-negative.
+]);
+
+test_composition({
+ property: 'mask-border-outset',
+ underlying: '10 20',
+ addFrom: '100px 150px',
+ addTo: '200px 250px',
+}, [
+ {at: -0.25, expect: '75px 125px'},
+ {at: 0, expect: '100px 150px'},
+ {at: 0.25, expect: '125px 175px'},
+ {at: 0.5, expect: '150px 200px'},
+ {at: 0.75, expect: '175px 225px'},
+ {at: 1, expect: '200px 250px'},
+ {at: 1.25, expect: '225px 275px'},
+]);
+
+test_composition({
+ property: 'mask-border-outset',
+ underlying: '10 20',
+ addFrom: '100 150px',
+ addTo: '200px 250',
+}, [
+ {at: -0.25, expect: '100 150px'},
+ {at: 0, expect: '100 150px'},
+ {at: 0.25, expect: '100 150px'},
+ {at: 0.5, expect: '200px 250'},
+ {at: 0.75, expect: '200px 250'},
+ {at: 1, expect: '200px 250'},
+ {at: 1.25, expect: '200px 250'},
+]);
+</script>
+</body>
diff --git a/tests/wpt/tests/css/css-masking/animations/mask-border-outset-interpolation.html b/tests/wpt/tests/css/css-masking/animations/mask-border-outset-interpolation.html
new file mode 100644
index 00000000000..863166e1fb8
--- /dev/null
+++ b/tests/wpt/tests/css/css-masking/animations/mask-border-outset-interpolation.html
@@ -0,0 +1,126 @@
+<!DOCTYPE html>
+<meta charset="UTF-8">
+<title>mask-border-outset interpolation</title>
+<link rel="help" href="https://drafts.fxtf.org/css-masking/#propdef-mask-border-outset">
+<link rel="author" title="Tim Nguyen" href="https://github.com/nt1m">
+<meta name="assert" content="mask-border-outset supports animation by computed value">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/interpolation-testcommon.js"></script>
+
+<style>
+.parent {
+ mask-border-outset: 10px;
+}
+.target {
+ width: 50px;
+ height: 50px;
+ background-color: black;
+ display: inline-block;
+ border: 25px;
+ margin-right: 50px;
+ mask-border-slice: 30%;
+ background-clip: content-box;
+ mask-border-source: linear-gradient(45deg, pink, blue, white, black, green);
+ mask-border-outset: 1px;
+}
+.expected {
+ background-color: green;
+}
+</style>
+
+<body></body>
+
+<script>
+test_interpolation({
+ property: 'mask-border-outset',
+ from: neutralKeyframe,
+ to: '2px',
+}, [
+ {at: -0.3, expect: '0.7px'},
+ {at: 0, expect: '1px'},
+ {at: 0.3, expect: '1.3px'},
+ {at: 0.6, expect: '1.6px'},
+ {at: 1, expect: '2px'},
+ {at: 1.5, expect: '2.5px'},
+]);
+
+test_interpolation({
+ property: 'mask-border-outset',
+ from: 'initial',
+ to: '2',
+}, [
+ {at: -0.3, expect: '0'}, // Non-negative
+ {at: 0, expect: '0'},
+ {at: 0.3, expect: '0.6'},
+ {at: 0.6, expect: '1.2'},
+ {at: 1, expect: '2'},
+ {at: 1.5, expect: '3'},
+]);
+
+test_interpolation({
+ property: 'mask-border-outset',
+ from: 'inherit',
+ to: '2px',
+}, [
+ {at: -0.3, expect: '12.4px'},
+ {at: 0, expect: '10px'},
+ {at: 0.3, expect: '7.6px'},
+ {at: 0.6, expect: '5.2px'},
+ {at: 1, expect: '2px'},
+ {at: 1.5, expect: '0px'},
+]);
+
+test_interpolation({
+ property: 'mask-border-outset',
+ from: 'unset',
+ to: '2',
+}, [
+ {at: -0.3, expect: '0'}, // Non-negative
+ {at: 0, expect: '0'},
+ {at: 0.3, expect: '0.6'},
+ {at: 0.6, expect: '1.2'},
+ {at: 1, expect: '2'},
+ {at: 1.5, expect: '3'},
+]);
+
+test_interpolation({
+ property: 'mask-border-outset',
+ from: '0px',
+ to: '5px',
+}, [
+ {at: -0.3, expect: '0px'}, // Non-negative
+ {at: 0, expect: '0px'},
+ {at: 0.3, expect: '1.5px'},
+ {at: 0.6, expect: '3px'},
+ {at: 1, expect: '5px'},
+ {at: 1.5, expect: '7.5px'},
+]);
+
+test_interpolation({
+ property: 'mask-border-outset',
+ from: '0',
+ to: '1',
+}, [
+ {at: -0.3, expect: '0'}, // Non-negative
+ {at: 0, expect: '0'},
+ {at: 0.3, expect: '0.3'},
+ {at: 0.6, expect: '0.6'},
+ {at: 1, expect: '1'},
+ {at: 1.5, expect: '1.5'},
+]);
+
+test_interpolation({
+ property: 'mask-border-outset',
+ from: '1 2 3px 4px',
+ to: '101 102 103px 104px',
+}, [
+ {at: -0.3, expect: '0 0 0px 0px'}, // Non-negative
+ {at: 0, expect: '1 2 3px 4px'},
+ {at: 0.3, expect: '31 32 33px 34px'},
+ {at: 0.6, expect: '61 62 63px 64px'},
+ {at: 1, expect: '101 102 103px 104px'},
+ {at: 1.5, expect: '151 152 153px 154px'},
+]);
+</script>
diff --git a/tests/wpt/tests/css/css-masking/animations/mask-border-slice-composition.html b/tests/wpt/tests/css/css-masking/animations/mask-border-slice-composition.html
new file mode 100644
index 00000000000..3a195e655d5
--- /dev/null
+++ b/tests/wpt/tests/css/css-masking/animations/mask-border-slice-composition.html
@@ -0,0 +1,134 @@
+<!DOCTYPE html>
+<meta charset="UTF-8">
+<title>mask-border-slice composition</title>
+<link rel="help" href="https://drafts.fxtf.org/css-masking/#propdef-mask-border-slice">
+<link rel="author" title="Tim Nguyen" href="https://github.com/nt1m">
+<meta name="assert" content="mask-border-slice supports animation by computed value">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/interpolation-testcommon.js"></script>
+
+<body>
+<script>
+test_composition({
+ property: 'mask-border-slice',
+ underlying: '1 2 3 4',
+ addFrom: '1 2 3 4',
+ addTo: '101 102 103 104',
+}, [
+ {at: -0.25, expect: '0'}, // Non-negative.
+ {at: 0, expect: '2 4 6 8'},
+ {at: 0.25, expect: '27 29 31 33'},
+ {at: 0.5, expect: '52 54 56 58'},
+ {at: 0.75, expect: '77 79 81 83'},
+ {at: 1, expect: '102 104 106 108'},
+ {at: 1.25, expect: '127 129 131 133'},
+]);
+
+test_composition({
+ property: 'mask-border-slice',
+ underlying: '100 200 300 400 fill',
+ addFrom: '100 fill',
+ addTo: '200 300 500 fill',
+}, [
+ {at: -0.25, expect: '175 250 300 450 fill'},
+ {at: 0, expect: '200 300 400 500 fill'},
+ {at: 0.25, expect: '225 350 500 550 fill'},
+ {at: 0.5, expect: '250 400 600 600 fill'},
+ {at: 0.75, expect: '275 450 700 650 fill'},
+ {at: 1, expect: '300 500 800 700 fill'},
+ {at: 1.25, expect: '325 550 900 750 fill'},
+]);
+
+test_composition({
+ property: 'mask-border-slice',
+ underlying: '1 2 3% 4%',
+ addFrom: '1 2 3% 4%',
+ addTo: '101 102 103% 104%',
+}, [
+ {at: -0.25, expect: '0 0 0% 0%'}, // Non-negative.
+ {at: 0, expect: '2 4 6% 8%'},
+ {at: 0.25, expect: '27 29 31% 33%'},
+ {at: 0.5, expect: '52 54 56% 58%'},
+ {at: 0.75, expect: '77 79 81% 83%'},
+ {at: 1, expect: '102 104 106% 108%'},
+ {at: 1.25, expect: '127 129 131% 133%'},
+]);
+
+test_composition({
+ property: 'mask-border-slice',
+ underlying: '10% 20%',
+ addFrom: '190% 180% 290% 280%',
+ addTo: '90% 80%',
+}, [
+ {at: -0.25, expect: '225% 225% 350% 350%'},
+ {at: 0, expect: '200% 200% 300% 300%'},
+ {at: 0.25, expect: '175% 175% 250% 250%'},
+ {at: 0.5, expect: '150% 150% 200% 200%'},
+ {at: 0.75, expect: '125% 125% 150% 150%'},
+ {at: 1, expect: '100%'},
+ {at: 1.25, expect: '75% 75% 50% 50%'},
+]);
+
+test_composition({
+ property: 'mask-border-slice',
+ underlying: '10 20%',
+ replaceFrom: '100 100%',
+ addTo: '190 180%',
+}, [
+ {at: -0.25, expect: '75 75%'},
+ {at: 0, expect: '100 100%'},
+ {at: 0.25, expect: '125 125%'},
+ {at: 0.5, expect: '150 150%'},
+ {at: 0.75, expect: '175 175%'},
+ {at: 1, expect: '200 200%'},
+ {at: 1.25, expect: '225 225%'},
+]);
+
+test_composition({
+ property: 'mask-border-slice',
+ underlying: '10% 20',
+ addFrom: '90% 80',
+ replaceTo: '0% 0 0% 0',
+}, [
+ {at: -0.25, expect: '125% 125'},
+ {at: 0, expect: '100% 100'},
+ {at: 0.25, expect: '75% 75'},
+ {at: 0.5, expect: '50% 50'},
+ {at: 0.75, expect: '25% 25'},
+ {at: 1, expect: '0% 0'},
+ {at: 1.25, expect: '0% 0'}, // Non-negative.
+]);
+
+test_composition({
+ property: 'mask-border-slice',
+ underlying: '10 20',
+ addFrom: '100% 150%',
+ addTo: '200% 250% fill',
+}, [
+ {at: -0.25, expect: '100% 150%'},
+ {at: 0, expect: '100% 150%'},
+ {at: 0.25, expect: '100% 150%'},
+ {at: 0.5, expect: '200% 250% fill'},
+ {at: 0.75, expect: '200% 250% fill'},
+ {at: 1, expect: '200% 250% fill'},
+ {at: 1.25, expect: '200% 250% fill'},
+]);
+
+test_composition({
+ property: 'mask-border-slice',
+ underlying: '10 20',
+ addFrom: '100 150%',
+ addTo: '200% 250',
+}, [
+ {at: -0.25, expect: '100 150%'},
+ {at: 0, expect: '100 150%'},
+ {at: 0.25, expect: '100 150%'},
+ {at: 0.5, expect: '200% 250'},
+ {at: 0.75, expect: '200% 250'},
+ {at: 1, expect: '200% 250'},
+ {at: 1.25, expect: '200% 250'},
+]);
+</script>
+</body>
diff --git a/tests/wpt/tests/css/css-masking/animations/mask-border-slice-interpolation-stability.html b/tests/wpt/tests/css/css-masking/animations/mask-border-slice-interpolation-stability.html
new file mode 100644
index 00000000000..68cee911ca3
--- /dev/null
+++ b/tests/wpt/tests/css/css-masking/animations/mask-border-slice-interpolation-stability.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<meta charset="UTF-8">
+<title>mask-border-slice interpolation stability</title>
+<link rel="help" href="https://drafts.fxtf.org/css-masking/#propdef-mask-border-slice">
+<link rel="author" title="Tim Nguyen" href="https://github.com/nt1m">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<div id="target"></div>
+<script>
+test(function() {
+ var player = target.animate([
+ {borderImageSlice: '50'},
+ {borderImageSlice: '50'},
+ ], {
+ duration: 1,
+ fill: 'forwards',
+ easing: 'cubic-bezier(0, 1.5, 1, 1.5)',
+ });
+ player.pause();
+ player.currentTime = 0.6345195996109396
+ assert_equals(getComputedStyle(target).borderImageSlice, '50');
+});
+</script>
diff --git a/tests/wpt/tests/css/css-masking/animations/mask-border-slice-interpolation.html b/tests/wpt/tests/css/css-masking/animations/mask-border-slice-interpolation.html
new file mode 100644
index 00000000000..1a3f4a2063d
--- /dev/null
+++ b/tests/wpt/tests/css/css-masking/animations/mask-border-slice-interpolation.html
@@ -0,0 +1,176 @@
+<!DOCTYPE html>
+<meta charset="UTF-8">
+<title>mask-border-slice interpolation</title>
+<link rel="help" href="https://drafts.fxtf.org/css-masking/#propdef-mask-border-slice">
+<link rel="author" title="Tim Nguyen" href="https://github.com/nt1m">
+<meta name="assert" content="mask-border-slice supports animation by computed value">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/interpolation-testcommon.js"></script>
+
+<style>
+.parent {
+ mask-border-slice: 50%;
+}
+.target {
+ width: 50px;
+ height: 50px;
+ background-color: black;
+ display: inline-block;
+ border: 25px;
+ mask-border-source: linear-gradient(45deg, red, blue, green);
+ mask-border-slice: 20%;
+}
+.expected {
+ background-color: green;
+ margin-right: 2px;
+}
+</style>
+
+<body></body>
+
+<script>
+test_interpolation({
+ property: 'mask-border-slice',
+ from: neutralKeyframe,
+ to: '10%',
+}, [
+ {at: -0.3, expect: '23%'},
+ {at: 0, expect: '20%'},
+ {at: 0.3, expect: '17%'},
+ {at: 0.5, expect: '15%'},
+ {at: 0.6, expect: '14%'},
+ {at: 1, expect: '10%'},
+ {at: 1.5, expect: '5%'},
+]);
+
+test_interpolation({
+ property: 'mask-border-slice',
+ from: 'initial',
+ to: '10',
+}, [
+ {at: -0.3, expect: '0'},
+ {at: 0, expect: '0'},
+ {at: 0.3, expect: '3'},
+ {at: 0.5, expect: '5'},
+ {at: 0.6, expect: '6'},
+ {at: 1, expect: '10'},
+ {at: 1.5, expect: '15'},
+]);
+
+test_interpolation({
+ property: 'mask-border-slice',
+ from: 'inherit',
+ to: '10%',
+}, [
+ {at: -0.3, expect: '62%'},
+ {at: 0, expect: '50%'},
+ {at: 0.3, expect: '38%'},
+ {at: 0.5, expect: '30%'},
+ {at: 0.6, expect: '26%'},
+ {at: 1, expect: '10%'},
+ {at: 1.5, expect: '0%'},
+]);
+
+test_interpolation({
+ property: 'mask-border-slice',
+ from: 'unset',
+ to: '10',
+}, [
+ {at: -0.3, expect: '0'},
+ {at: 0, expect: '0'},
+ {at: 0.3, expect: '3'},
+ {at: 0.5, expect: '5'},
+ {at: 0.6, expect: '6'},
+ {at: 1, expect: '10'},
+ {at: 1.5, expect: '15'},
+]);
+
+test_interpolation({
+ property: 'mask-border-slice',
+ from: '0%',
+ to: '50%',
+}, [
+ {at: -0.3, expect: '0%'}, // CSS mask-border-slice can't be negative.
+ {at: 0, expect: '0%'},
+ {at: 0.3, expect: '15%'},
+ {at: 0.5, expect: '25%'},
+ {at: 0.6, expect: '30%'},
+ {at: 1, expect: '50%'},
+ {at: 1.5, expect: '75%'},
+]);
+
+test_interpolation({
+ property: 'mask-border-slice',
+ from: '0% 10% 20% 30%',
+ to: '40% 50% 60% 70%',
+}, [
+ {at: -0.5, expect: '0% 0% 0% 10%'},
+ {at: 0, expect: '0% 10% 20% 30%'},
+ {at: 0.3, expect: '12% 22% 32% 42%'},
+ {at: 0.5, expect: '20% 30% 40% 50%'},
+ {at: 0.6, expect: '24% 34% 44% 54%'},
+ {at: 1, expect: '40% 50% 60% 70%'},
+ {at: 1.5, expect: '60% 70% 80% 90%'},
+]);
+
+test_interpolation({
+ property: 'mask-border-slice',
+ from: '0 10 20 30 fill',
+ to: '40 50 60 70 fill',
+}, [
+ {at: -0.5, expect: '0 0 0 10 fill'}, // CSS mask-border-slice can't be negative.
+ {at: 0, expect: '0 10 20 30 fill'},
+ {at: 0.3, expect: '12 22 32 42 fill'},
+ {at: 0.5, expect: '20 30 40 50 fill'},
+ {at: 0.6, expect: '24 34 44 54 fill'},
+ {at: 1, expect: '40 50 60 70 fill'},
+ {at: 1.5, expect: '60 70 80 90 fill'},
+]);
+
+test_interpolation({
+ property: 'mask-border-slice',
+ from: '0% 10 20% 30 fill',
+ to: '40% 50 60% 70 fill',
+}, [
+ {at: -0.5, expect: '0% 0 0% 10 fill'}, // CSS mask-border-slice can't be negative.
+ {at: 0, expect: '0% 10 20% 30 fill'},
+ {at: 0.3, expect: '12% 22 32% 42 fill'},
+ {at: 0.5, expect: '20% 30 40% 50 fill'},
+ {at: 0.6, expect: '24% 34 44% 54 fill'},
+ {at: 1, expect: '40% 50 60% 70 fill'},
+ {at: 1.5, expect: '60% 70 80% 90 fill'},
+]);
+
+test_no_interpolation({
+ property: 'mask-border-slice',
+ from: '0% fill',
+ to: '50%',
+});
+
+test_no_interpolation({
+ property: 'mask-border-slice',
+ from: '50%',
+ to: '100',
+});
+
+test_no_interpolation({
+ property: 'mask-border-slice',
+ from: '50% fill',
+ to: '100 fill',
+});
+
+test_no_interpolation({
+ property: 'mask-border-slice',
+ from: '0% 10 20% 30 fill',
+ to: '40% 50 60% 70',
+});
+
+test_no_interpolation({
+ property: 'mask-border-slice',
+ from: '0% 10 20 30 fill',
+ to: '40 50 60% 70',
+});
+</script>
+</body>
diff --git a/tests/wpt/tests/css/css-masking/animations/mask-border-source-interpolation.html b/tests/wpt/tests/css/css-masking/animations/mask-border-source-interpolation.html
new file mode 100644
index 00000000000..799e9cfd757
--- /dev/null
+++ b/tests/wpt/tests/css/css-masking/animations/mask-border-source-interpolation.html
@@ -0,0 +1,83 @@
+<!DOCTYPE html>
+<meta charset="UTF-8">
+<title>mask-border-source interpolation</title>
+<link rel="help" href="https://drafts.fxtf.org/css-masking/#propdef-mask-border-source">
+<link rel="author" title="Tim Nguyen" href="https://github.com/nt1m">
+<meta name="assert" content="mask-border-source has discrete animation">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/interpolation-testcommon.js"></script>
+
+<style>
+.parent {
+ mask-border-source: url(../support/green.png);
+}
+.target {
+ width: 50px;
+ height: 50px;
+ background-color: black;
+ display: inline-block;
+ border: 5px solid aqua;
+ mask-border-source: url(../support/blue_color.png);
+ mask-border-slice: 10%;
+}
+.expected {
+ background-color: green;
+ margin-right: 2px;
+}
+</style>
+
+<body></body>
+
+<script>
+// initial
+test_no_interpolation({
+ property: 'mask-border-source',
+ from: 'initial',
+ to: 'url(../support/orange_color.png)',
+});
+
+// inherit
+test_no_interpolation({
+ property: 'mask-border-source',
+ from: 'inherit',
+ to: 'url(../support/orange_color.png)',
+});
+
+// unset
+test_no_interpolation({
+ property: 'mask-border-source',
+ from: 'unset',
+ to: 'url(../support/orange_color.png)',
+});
+
+// None to image
+test_no_interpolation({
+ property: 'mask-border-source',
+ from: 'none',
+ to: 'url(../support/orange_color.png)',
+});
+
+// Image to image
+test_no_interpolation({
+ property: 'mask-border-source',
+ from: 'url(../support/aqua_color.png)',
+ to: 'url(../support/orange_color.png)',
+});
+
+// Image to gradient
+test_no_interpolation({
+ property: 'mask-border-source',
+ from: 'url(../support/aqua_color.png)',
+ to: 'linear-gradient(45deg, blue, orange)',
+});
+
+// Gradient to gradient
+test_no_interpolation({
+ property: 'mask-border-source',
+ from: 'linear-gradient(-45deg, red, yellow)',
+ to: 'linear-gradient(45deg, blue, orange)',
+});
+</script>
+</body>
diff --git a/tests/wpt/tests/css/css-masking/animations/mask-border-width-composition.html b/tests/wpt/tests/css/css-masking/animations/mask-border-width-composition.html
new file mode 100644
index 00000000000..6489ff90841
--- /dev/null
+++ b/tests/wpt/tests/css/css-masking/animations/mask-border-width-composition.html
@@ -0,0 +1,134 @@
+<!DOCTYPE html>
+<meta charset="UTF-8">
+<title>mask-border-width composition</title>
+<link rel="help" href="https://drafts.fxtf.org/css-masking/#propdef-mask-border-width">
+<link rel="author" title="Tim Nguyen" href="https://github.com/nt1m">
+<meta name="assert" content="mask-border-width supports animation by computed value">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/interpolation-testcommon.js"></script>
+
+<body>
+<script>
+test_composition({
+ property: 'mask-border-width',
+ underlying: '1 2 3 4',
+ addFrom: '1 2 3 4',
+ addTo: '101 102 103 104',
+}, [
+ {at: -0.25, expect: '0'}, // Non-negative.
+ {at: 0, expect: '2 4 6 8'},
+ {at: 0.25, expect: '27 29 31 33'},
+ {at: 0.5, expect: '52 54 56 58'},
+ {at: 0.75, expect: '77 79 81 83'},
+ {at: 1, expect: '102 104 106 108'},
+ {at: 1.25, expect: '127 129 131 133'},
+]);
+
+test_composition({
+ property: 'mask-border-width',
+ underlying: '100 200 300 400',
+ addFrom: '100',
+ addTo: '200 300 500',
+}, [
+ {at: -0.25, expect: '175 250 300 450'},
+ {at: 0, expect: '200 300 400 500'},
+ {at: 0.25, expect: '225 350 500 550'},
+ {at: 0.5, expect: '250 400 600 600'},
+ {at: 0.75, expect: '275 450 700 650'},
+ {at: 1, expect: '300 500 800 700'},
+ {at: 1.25, expect: '325 550 900 750'},
+]);
+
+test_composition({
+ property: 'mask-border-width',
+ underlying: '1 2 3px 4%',
+ addFrom: '1 2 3px 4%',
+ addTo: '101 102 103px 104%',
+}, [
+ {at: -0.25, expect: '0 0 0px 0%'}, // Non-negative.
+ {at: 0, expect: '2 4 6px 8%'},
+ {at: 0.25, expect: '27 29 31px 33%'},
+ {at: 0.5, expect: '52 54 56px 58%'},
+ {at: 0.75, expect: '77 79 81px 83%'},
+ {at: 1, expect: '102 104 106px 108%'},
+ {at: 1.25, expect: '127 129 131px 133%'},
+]);
+
+test_composition({
+ property: 'mask-border-width',
+ underlying: '10px 20px',
+ addFrom: '190px 180px 290px 280px',
+ addTo: '90px 80px',
+}, [
+ {at: -0.25, expect: '225px 225px 350px 350px'},
+ {at: 0, expect: '200px 200px 300px 300px'},
+ {at: 0.25, expect: '175px 175px 250px 250px'},
+ {at: 0.5, expect: '150px 150px 200px 200px'},
+ {at: 0.75, expect: '125px 125px 150px 150px'},
+ {at: 1, expect: '100px'},
+ {at: 1.25, expect: '75px 75px 50px 50px'},
+]);
+
+test_composition({
+ property: 'mask-border-width',
+ underlying: '10 20px',
+ replaceFrom: '100 100px',
+ addTo: '190 180px',
+}, [
+ {at: -0.25, expect: '75 75px'},
+ {at: 0, expect: '100 100px'},
+ {at: 0.25, expect: '125 125px'},
+ {at: 0.5, expect: '150 150px'},
+ {at: 0.75, expect: '175 175px'},
+ {at: 1, expect: '200 200px'},
+ {at: 1.25, expect: '225 225px'},
+]);
+
+test_composition({
+ property: 'mask-border-width',
+ underlying: '10px 20',
+ addFrom: '90px 80',
+ replaceTo: '0px 0 0px 0',
+}, [
+ {at: -0.25, expect: '125px 125'},
+ {at: 0, expect: '100px 100'},
+ {at: 0.25, expect: '75px 75'},
+ {at: 0.5, expect: '50px 50'},
+ {at: 0.75, expect: '25px 25'},
+ {at: 1, expect: '0px 0'},
+ {at: 1.25, expect: '0px 0'}, // Non-negative.
+]);
+
+test_composition({
+ property: 'mask-border-width',
+ underlying: '10 20',
+ addFrom: '100px 150px',
+ addTo: '200px 250px',
+}, [
+ {at: -0.25, expect: '75px 125px'},
+ {at: 0, expect: '100px 150px'},
+ {at: 0.25, expect: '125px 175px'},
+ {at: 0.5, expect: '150px 200px'},
+ {at: 0.75, expect: '175px 225px'},
+ {at: 1, expect: '200px 250px'},
+ {at: 1.25, expect: '225px 275px'},
+]);
+
+test_composition({
+ property: 'mask-border-width',
+ underlying: '10 20',
+ addFrom: '100 150px',
+ addTo: '200% 250',
+}, [
+ {at: -0.25, expect: '100 150px'},
+ {at: 0, expect: '100 150px'},
+ {at: 0.25, expect: '100 150px'},
+ {at: 0.5, expect: '200% 250'},
+ {at: 0.75, expect: '200% 250'},
+ {at: 1, expect: '200% 250'},
+ {at: 1.25, expect: '200% 250'},
+]);
+</script>
+</body>
diff --git a/tests/wpt/tests/css/css-masking/animations/mask-border-width-interpolation.html b/tests/wpt/tests/css/css-masking/animations/mask-border-width-interpolation.html
new file mode 100644
index 00000000000..18b3f37bc63
--- /dev/null
+++ b/tests/wpt/tests/css/css-masking/animations/mask-border-width-interpolation.html
@@ -0,0 +1,193 @@
+<!DOCTYPE html>
+<meta charset="UTF-8">
+<title>mask-border-width interpolation</title>
+<link rel="help" href="https://drafts.fxtf.org/css-masking/#propdef-mask-border-width">
+<link rel="author" title="Tim Nguyen" href="https://github.com/nt1m">
+<meta name="assert" content="mask-border-width supports animation by computed value">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/interpolation-testcommon.js"></script>
+
+<style>
+.parent {
+ mask-border-width: 100px;
+}
+.target {
+ width: 80px;
+ height: 80px;
+ background-color: black;
+ display: inline-block;
+ border: 10px;
+ mask-border-source: linear-gradient(45deg, red, blue, green);
+ mask-border-width: 10px;
+}
+.expected {
+ background-color: green;
+ margin-right: 2px;
+}
+</style>
+
+<body></body>
+
+<script>
+test_interpolation({
+ property: 'mask-border-width',
+ from: neutralKeyframe,
+ to: '20px',
+}, [
+ {at: -0.3, expect: '7px'},
+ {at: 0, expect: '10px'},
+ {at: 0.3, expect: '13px'},
+ {at: 0.6, expect: '16px'},
+ {at: 1, expect: '20px'},
+ {at: 1.5, expect: '25px'},
+ {at: 5, expect: '60px'},
+ {at: 10, expect: '110px'},
+]);
+test_no_interpolation({
+ property: 'mask-border-width',
+ from: 'initial',
+ to: '20px',
+});
+test_interpolation({
+ property: 'mask-border-width',
+ from: 'inherit',
+ to: '20px',
+}, [
+ {at: -0.3, expect: '124px'},
+ {at: 0, expect: '100px'},
+ {at: 0.3, expect: '76px'},
+ {at: 0.6, expect: '52px'},
+ {at: 1, expect: '20px'},
+ {at: 1.5, expect: '0px'},
+ {at: 5, expect: '0px'},
+ {at: 10, expect: '0px'},
+]);
+test_no_interpolation({
+ property: 'mask-border-width',
+ from: 'unset',
+ to: '20px',
+});
+test_interpolation({
+ property: 'mask-border-width',
+ from: '0px',
+ to: '20px'
+}, [
+ {at: -0.3, expect: '0px'}, // CSS mask-border-width can't be negative.
+ {at: 0, expect: '0px'},
+ {at: 0.3, expect: '6px'},
+ {at: 0.6, expect: '12px'},
+ {at: 1, expect: '20px'},
+ {at: 1.5, expect: '30px'},
+ {at: 5, expect: '100px'},
+ {at: 10, expect: '200px'}
+]);
+test_interpolation({
+ property: 'mask-border-width',
+ from: '0%',
+ to: '20%'
+}, [
+ {at: -0.3, expect: '0%'}, // CSS mask-border-width can't be negative.
+ {at: 0, expect: '0%'},
+ {at: 0.3, expect: '6%'},
+ {at: 0.6, expect: '12%'},
+ {at: 1, expect: '20%'},
+ {at: 1.5, expect: '30%'},
+ {at: 5, expect: '100%'},
+ {at: 10, expect: '200%'}
+]);
+test_interpolation({
+ property: 'mask-border-width',
+ from: '0',
+ to: '20'
+}, [
+ {at: -0.3, expect: '0'}, // CSS mask-border-width can't be negative.
+ {at: 0, expect: '0'},
+ {at: 0.3, expect: '6'},
+ {at: 0.6, expect: '12'},
+ {at: 1, expect: '20'},
+ {at: 1.5, expect: '30'},
+ {at: 5, expect: '100'},
+ {at: 10, expect: '200'}
+]);
+test_interpolation({
+ property: 'mask-border-width',
+ from: '10px 20% 30 40px',
+ to: '80px 70% 60 50px'
+}, [
+ {at: -0.3, expect: '0px 5% 21 37px'}, // CSS mask-border-width can't be negative.
+ {at: 0, expect: '10px 20% 30 40px'},
+ {at: 0.3, expect: '31px 35% 39 43px'},
+ {at: 0.6, expect: '52px 50% 48 46px'},
+ {at: 1, expect: '80px 70% 60 50px'},
+ {at: 1.5, expect: '115px 95% 75 55px'},
+ {at: 5, expect: '360px 270% 180 90px'},
+ {at: 10, expect: '710px 520% 330 140px'}
+]);
+test_interpolation({
+ property: 'mask-border-width',
+ from: '10%',
+ to: '20px'
+}, [
+ // Percentages are relative to the size of the border image area, which is 120px.
+ {at: -0.3, expect: 'calc(13% + -6px)'}, // Should be parsed as 16px - 6px = 10px
+ {at: 0, expect: '10%'}, // Should be parsed as 12px
+ {at: 0.3, expect: 'calc(7% + 6px)'}, // Should be parsed as 8px + 6px = 14px
+ {at: 0.6, expect: 'calc(4% + 12px)'}, // Should be parsed as 5px + 12px = 17px
+ {at: 1, expect: 'calc(0% + 20px)'},
+ {at: 1.5, expect: 'calc(-5% + 30px)'}, // Should be parsed as -6px + 30px = 24px
+]);
+test_interpolation({
+ property: 'mask-border-width',
+ from: '10px',
+ to: '20%'
+}, [
+ // Percentages are relative to the size of the border image area, which is 120px.
+ {at: -0.3, expect: 'calc(13px + -6%)'}, // Should be parsed as 13px - 7px = 6px
+ {at: 0, expect: 'calc(0% + 10px)'},
+ {at: 0.3, expect: 'calc(7px + 6%)'}, // Should be parsed as 7px + 7px = 14px
+ {at: 0.6, expect: 'calc(4px + 12%)'}, // Should be parsed as 4px + 14px = 18px
+ {at: 1, expect: '20%'}, // Should be parsed as 24px
+ {at: 1.5, expect: 'calc(-5px + 30%)'}, // Should be parsed as -5px + 36px = 31px
+]);
+
+test_interpolation({
+ property: 'mask-border-width',
+ from: '10px auto auto 20',
+ to: '110px auto auto 120'
+}, [
+ {at: -0.3, expect: ' 0px auto auto 0'},
+ {at: 0, expect: ' 10px auto auto 20'},
+ {at: 0.3, expect: ' 40px auto auto 50'},
+ {at: 0.6, expect: ' 70px auto auto 80'},
+ {at: 1, expect: '110px auto auto 120'},
+ {at: 1.5, expect: '160px auto auto 170'},
+]);
+
+test_no_interpolation({
+ property: 'mask-border-width',
+ from: '10px auto auto 20',
+ to: '110px auto 120 auto'
+});
+test_no_interpolation({
+ property: 'mask-border-width',
+ from: '10px',
+ to: '20'
+});
+test_no_interpolation({
+ property: 'mask-border-width',
+ from: '10',
+ to: '20px'
+});
+test_no_interpolation({
+ property: 'mask-border-width',
+ from: '10%',
+ to: '20'
+});
+test_no_interpolation({
+ property: 'mask-border-width',
+ from: '10',
+ to: '20%'
+});
+</script>
diff --git a/tests/wpt/tests/css/css-masking/clip-path/animations/clip-path-animation-cancel-ref.html b/tests/wpt/tests/css/css-masking/clip-path/animations/clip-path-animation-cancel-ref.html
index 661e7b3be84..ac04bd53798 100644
--- a/tests/wpt/tests/css/css-masking/clip-path/animations/clip-path-animation-cancel-ref.html
+++ b/tests/wpt/tests/css/css-masking/clip-path/animations/clip-path-animation-cancel-ref.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<html>
<style>
.container {
width: 100px;
@@ -11,5 +12,4 @@
<body>
<div class="container"></div>
</body>
-
</html>
diff --git a/tests/wpt/tests/css/css-masking/clip-path/animations/clip-path-animation-ellipse-ref.html b/tests/wpt/tests/css/css-masking/clip-path/animations/clip-path-animation-ellipse-ref.html
index 63b3174806f..8fda2089cd0 100644
--- a/tests/wpt/tests/css/css-masking/clip-path/animations/clip-path-animation-ellipse-ref.html
+++ b/tests/wpt/tests/css/css-masking/clip-path/animations/clip-path-animation-ellipse-ref.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<html>
<style>
.container {
width: 100px;
diff --git a/tests/wpt/tests/css/css-masking/clip-path/animations/clip-path-animation-font-size-ref.html b/tests/wpt/tests/css/css-masking/clip-path/animations/clip-path-animation-font-size-ref.html
index 912a8e84642..f4369b0f111 100644
--- a/tests/wpt/tests/css/css-masking/clip-path/animations/clip-path-animation-font-size-ref.html
+++ b/tests/wpt/tests/css/css-masking/clip-path/animations/clip-path-animation-font-size-ref.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<html>
<style>
.container {
width: 100px;
diff --git a/tests/wpt/tests/css/css-masking/clip-path/animations/clip-path-animation-path-ref.html b/tests/wpt/tests/css/css-masking/clip-path/animations/clip-path-animation-path-ref.html
index d53067f5634..be3e970e462 100644
--- a/tests/wpt/tests/css/css-masking/clip-path/animations/clip-path-animation-path-ref.html
+++ b/tests/wpt/tests/css/css-masking/clip-path/animations/clip-path-animation-path-ref.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<html>
<style>
.container {
width: 200px;
diff --git a/tests/wpt/tests/css/css-masking/clip-path/animations/clip-path-animation-polygon-ref.html b/tests/wpt/tests/css/css-masking/clip-path/animations/clip-path-animation-polygon-ref.html
index 28e11e966d5..7c18c5feca2 100644
--- a/tests/wpt/tests/css/css-masking/clip-path/animations/clip-path-animation-polygon-ref.html
+++ b/tests/wpt/tests/css/css-masking/clip-path/animations/clip-path-animation-polygon-ref.html
@@ -1,4 +1,5 @@
<!DOCTYPE html>
+<html>
<style>
.container {
width: 100px;
diff --git a/tests/wpt/tests/css/css-masking/clip-path/animations/clip-path-transition-crashtest.html b/tests/wpt/tests/css/css-masking/clip-path/animations/clip-path-transition-crashtest.html
new file mode 100644
index 00000000000..103a0da2a60
--- /dev/null
+++ b/tests/wpt/tests/css/css-masking/clip-path/animations/clip-path-transition-crashtest.html
@@ -0,0 +1,31 @@
+<!DOCTYPE html>
+<html class="test-wait">
+<style>
+ .container {
+ width: 100px;
+ height: 100px;
+ clip-path: circle(30% at 30% 30%);
+ background-color: green;
+ transition-property: clip-path;
+ transition-duration: 0.5s;
+ }
+</style>
+<script src="/web-animations/testcommon.js"></script>
+<script src="/web-animations/resources/timing-utils.js"></script>
+
+<body>
+ <div class="container" id="target"></div>
+
+ <script>
+ window.onload = async () => {
+ await waitForNextFrame();
+ document.getElementById('target').style.clipPath = "circle(40% at 40% 40%)";
+ await waitForNextFrame();
+ await document.getAnimations()[0].finished;
+ await waitForAnimationFrames(3);
+ document.documentElement.classList.remove('test-wait');
+ }
+ </script>
+</body>
+
+</html>
diff --git a/tests/wpt/tests/css/css-nesting/supports-rule-ref.html b/tests/wpt/tests/css/css-nesting/supports-rule-ref.html
new file mode 100644
index 00000000000..1be71b22523
--- /dev/null
+++ b/tests/wpt/tests/css/css-nesting/supports-rule-ref.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<title>@supports with nesting</title>
+<link rel="author" title="Matthieu Dubet" href="mailto:m_dubet@apple.com">
+<link rel="help" href="https://drafts.csswg.org/css-nesting-1/">
+<style>
+ .test {
+ background-color: green;
+ width: 100px;
+ height: 100px;
+ display: grid;
+ }
+
+ body * + * {
+ margin-top: 8px;
+ }
+</style>
+<body>
+ <p>Tests pass if <strong>block is green</strong></p>
+ <div class="test"></div>
+ <div class="test"></div>
+ <div class="test"></div>
+ <div class="test"></div>
+</body>
diff --git a/tests/wpt/tests/css/css-nesting/supports-rule.html b/tests/wpt/tests/css/css-nesting/supports-rule.html
new file mode 100644
index 00000000000..886eda43237
--- /dev/null
+++ b/tests/wpt/tests/css/css-nesting/supports-rule.html
@@ -0,0 +1,52 @@
+<!DOCTYPE html>
+<title>@supports with nesting</title>
+<link rel="author" title="Matthieu Dubet" href="mailto:m_dubet@apple.com">
+<link rel="help" href="https://drafts.csswg.org/css-nesting-1/">
+<link rel="match" href="supports-rule-ref.html">
+<style>
+ .test {
+ background-color: red;
+ width: 100px;
+ height: 100px;
+ display: grid;
+ }
+
+ @supports(not selector(> .test-1)) {
+ .test-1 {
+ background-color: green;
+ }
+ }
+
+ .test {
+ @supports (selector(> .test-2)) {
+ > .test-2 {
+ background-color: green;
+ }
+ }
+ }
+
+ .test-3 {
+ @supports (selector(&)) {
+ & {
+ background-color: green;
+ }
+ }
+ }
+
+ @supports(selector(&)) {
+ .test-4 {
+ background-color: green;
+ }
+ }
+
+ body * + * {
+ margin-top: 8px;
+ }
+</style>
+<body>
+ <p>Tests pass if <strong>block is green</strong></p>
+ <div class="test test-1"></div>
+ <div class="test"><div class="test-2"></div></div>
+ <div class="test test-3"></div>
+ <div class="test test-4"></div>
+</body>
diff --git a/tests/wpt/tests/css/css-overflow/WEB_FEATURES.yml b/tests/wpt/tests/css/css-overflow/WEB_FEATURES.yml
index 7d0688929ab..6c270951f79 100644
--- a/tests/wpt/tests/css/css-overflow/WEB_FEATURES.yml
+++ b/tests/wpt/tests/css/css-overflow/WEB_FEATURES.yml
@@ -4,29 +4,7 @@ features:
- scrollbar-gutter-*
- name: overflow-shorthand
files:
- # This is all overflow-* except overflow-auto-scrollbar-gutter-intrinsic-*,
- # overflow-scroll-*, and overflow-no-interpolation.html which depends on
- # transition-behavior. TODO: convert to exclusion patterns when possible.
- - overflow-abpos-transform.html
- - overflow-body-propagation-*
- - overflow-canvas.html
- - overflow-clip-*
- - overflow-codependent-scrollbars.html
- - overflow-ellipsis-dynamic-001.html
- - overflow-empty-child-box.html
- - overflow-hidden-resize-with-stacking-context-child.html
- - overflow-img-*
- - overflow-img.html
- - overflow-inline-block-with-opacity.html
- - overflow-inline-transform-relative.html
- - overflow-negative-margin-dynamic.html
- - overflow-negative-margin.html
- - overflow-no-frameset-propagation.html
- - overflow-overlay.html
- - overflow-padding.html
- - overflow-recalc-001.html
- - overflow-replaced-element-001.html
- - overflow-shorthand-001.html
- - overflow-video.html
- - rounded-overflow-*
- - select-size-overflow-001.html
+ - overflow-*
+ - "!overflow-auto-scrollbar-gutter-intrinsic-*"
+ - "!overflow-scroll-*"
+ - "!overflow-no-interpolation.html" # depends on transition-behavior
diff --git a/tests/wpt/tests/css/css-overflow/line-clamp/line-clamp-auto-033.tentative.html b/tests/wpt/tests/css/css-overflow/line-clamp/line-clamp-auto-033.tentative.html
new file mode 100644
index 00000000000..f18d7eefb27
--- /dev/null
+++ b/tests/wpt/tests/css/css-overflow/line-clamp/line-clamp-auto-033.tentative.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Overflow: `line-clamp: auto` will not clamp inside IFC</title>
+<link rel="author" title="Andreu Botella" href="mailto:abotella@igalia.com">
+<link rel="help" href="https://drafts.csswg.org/css-overflow-4/#line-clamp">
+<link rel="match" href="reference/webkit-line-clamp-005-ref.html">
+<meta name="assert" content="With `line-clamp: auto`, there cannot be any clamp points inside IFCs. So if the max-height offset falls inside an IFC, the clamp would be before the IFC.">
+<style>
+.clamp {
+ line-clamp: auto;
+ max-height: 6lh;
+ font: 16px / 32px serif;
+ white-space: pre;
+ padding: 0 4px;
+ background-color: yellow;
+}
+.ifc {
+ display: flow-root;
+ background-color: red;
+}
+</style>
+
+<div class="clamp">Line 1
+Line 2
+Line 3
+Line 4
+<div class="ifc">Line 5
+Line 6
+Line 7</div>
+Line 8</div>
diff --git a/tests/wpt/tests/css/css-overflow/line-clamp/line-clamp-auto-034.tentative.html b/tests/wpt/tests/css/css-overflow/line-clamp/line-clamp-auto-034.tentative.html
new file mode 100644
index 00000000000..d581c31e100
--- /dev/null
+++ b/tests/wpt/tests/css/css-overflow/line-clamp/line-clamp-auto-034.tentative.html
@@ -0,0 +1,33 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Overflow: `line-clamp: auto` ellipsis before </title>
+<link rel="author" title="Andreu Botella" href="mailto:abotella@igalia.com">
+<link rel="help" href="https://drafts.csswg.org/css-overflow-4/#line-clamp">
+<link rel="match" href="reference/line-clamp-auto-034-ref.html">
+<meta name="assert" content="With `line-clamp: auto`, the l">
+<style>
+.clamp {
+ line-clamp: auto;
+ max-height: 6lh;
+ font: 16px / 32px serif;
+ white-space: pre;
+ padding: 0 4px;
+ background-color: yellow;
+}
+.ifc {
+ display: flow-root;
+ background-color: orange;
+}
+.red {
+ display: flow-root;
+ background-color: red;
+}
+</style>
+
+<div class="clamp">Line 1
+Line 2
+Line 3
+Line 4
+<div class="ifc">Line 5
+Line 6</div><div class="ifc red">Line 7
+Line 8</div>Line 9</div>
diff --git a/tests/wpt/tests/css/css-overflow/line-clamp/reference/line-clamp-auto-034-ref.html b/tests/wpt/tests/css/css-overflow/line-clamp/reference/line-clamp-auto-034-ref.html
new file mode 100644
index 00000000000..8fae3b278c1
--- /dev/null
+++ b/tests/wpt/tests/css/css-overflow/line-clamp/reference/line-clamp-auto-034-ref.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Reference</title>
+<style>
+.clamp {
+ display: flow-root;
+ font: 16px / 32px serif;
+ white-space: pre;
+ padding: 0 4px;
+ background-color: yellow;
+}
+.ifc {
+ display: flow-root;
+ background-color: orange;
+}
+</style>
+
+<div class="clamp">Line 1
+Line 2
+Line 3
+Line 4
+<div class="ifc">Line 5
+Line 6</div></div>
diff --git a/tests/wpt/tests/css/css-page/parsing/size-001.html b/tests/wpt/tests/css/css-page/parsing/size-001.html
deleted file mode 100644
index 885a7b85306..00000000000
--- a/tests/wpt/tests/css/css-page/parsing/size-001.html
+++ /dev/null
@@ -1,63 +0,0 @@
-<!DOCTYPE html>
-<link rel="author" title="Mozilla" href="https://mozilla.org">
-<link rel="help" href="https://drafts.csswg.org/css-page-3/#page-size-prop">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<style>
-@page{
- size: 640px 480px;
-}
-@page{
- size: 8.5in 11in;
-}
-@page{
- size: A4;
-}
-@page{
- size: 3in 10in;
-}
-@page{
- size: jis-B5;
-}
-@page{
- size: auto;
-}
-@page{
- size: landscape;
-}
-@page{
- size: letter portrait;
-}
-@page{
- size: legal landscape;
-}
-</style>
-
-<script>
-'use strict';
-
-const expectedSizes = [
- "640px 480px",
- "8.5in 11in",
- "a4",
- "3in 10in",
- "jis-b5",
- "auto",
- "landscape",
- "letter",
- "legal landscape"
-];
-const sizePrefix = "size: ";
-
-test(t => {
- assert_equals(document.styleSheets.length, 1);
- let styleSheet = document.styleSheets[0];
- assert_equals(styleSheet.rules.length, expectedSizes.length);
- for(let i = 0; i < expectedSizes.length; i++){
- let cssText = styleSheet.cssRules[i].style.cssText;
- assert_true(cssText.startsWith(sizePrefix));
- cssText = cssText.slice(sizePrefix.length);
- assert_equals(cssText, expectedSizes[i] + ";", "for rule " + i);
- }
-}, "size-001");
-</script>
diff --git a/tests/wpt/tests/css/css-page/parsing/size-invalid.html b/tests/wpt/tests/css/css-page/parsing/size-invalid.html
index 6e7c4a222df..238d10ee4a1 100644
--- a/tests/wpt/tests/css/css-page/parsing/size-invalid.html
+++ b/tests/wpt/tests/css/css-page/parsing/size-invalid.html
@@ -1,6 +1,6 @@
<!DOCTYPE html>
<link rel="author" title="Tim Nguyen" href="https://github.com/nt1m">
-<link rel="help" href="https://drafts.csswg.org/css-page-3/#page-orientation-prop">
+<link rel="help" href="https://drafts.csswg.org/css-page-3/#descdef-page-size">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/css/support/parsing-testcommon.js"></script>
diff --git a/tests/wpt/tests/css/css-page/parsing/size-valid.html b/tests/wpt/tests/css/css-page/parsing/size-valid.html
new file mode 100644
index 00000000000..1e091165536
--- /dev/null
+++ b/tests/wpt/tests/css/css-page/parsing/size-valid.html
@@ -0,0 +1,85 @@
+<!DOCTYPE html>
+<link rel="author" title="Mozilla" href="https://mozilla.org">
+<link rel="help" href="https://drafts.csswg.org/css-page-3/#page-size-prop">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+@page {
+ size: 640px 480px;
+}
+@page {
+ size: 8.5in 11in;
+}
+@page {
+ size: 3in 10in;
+}
+@page {
+ size: auto;
+}
+@page {
+ size: A5;
+}
+@page {
+ size: A4;
+}
+@page {
+ size: A3;
+}
+@page {
+ size: B5;
+}
+@page {
+ size: B4;
+}
+@page {
+ size: jis-B5;
+}
+@page {
+ size: jis-B4;
+}
+@page {
+ size: landscape;
+}
+@page {
+ size: letter portrait;
+}
+@page {
+ size: legal landscape;
+}
+</style>
+
+<script>
+"use strict";
+
+const expectedSizes = [
+ "640px 480px",
+ "8.5in 11in",
+ "3in 10in",
+ "auto",
+ "a5",
+ "a4",
+ "a3",
+ "b5",
+ "b4",
+ "jis-b5",
+ "jis-b4",
+ "landscape",
+ "letter",
+ "legal landscape"
+];
+const sizePrefix = "size: ";
+
+test(() => {
+ assert_equals(document.styleSheets.length, 1);
+ assert_equals(document.styleSheets[0].rules.length, expectedSizes.length);
+}, "Test setup");
+
+for (let i = 0; i < expectedSizes.length; i++) {
+ test(() => {
+ let cssText = document.styleSheets[0].cssRules[i].style.cssText;
+ assert_true(cssText.startsWith(sizePrefix));
+ cssText = cssText.slice(sizePrefix.length);
+ assert_equals(cssText, expectedSizes[i] + ";", "for rule " + i);
+ }, "size: " + expectedSizes[i]);
+}
+</script>
diff --git a/tests/wpt/tests/css/css-properties-values-api/at-property.html b/tests/wpt/tests/css/css-properties-values-api/at-property.html
index 950d9b02d7b..56a1956f56d 100644
--- a/tests/wpt/tests/css/css-properties-values-api/at-property.html
+++ b/tests/wpt/tests/css/css-properties-values-api/at-property.html
@@ -213,6 +213,25 @@ test_applied('<transform-list>', 'rotateX(0deg)', false, 'rotateX(0deg)');
test_applied('<transform-list>', 'rotateX(0deg) translateX(10px)', false, 'rotateX(0deg) translateX(10px)');
test_applied('<url>', 'url("http://a/")', false, 'url("http://a/")');
+test_applied("<string>", "'foo bar'", false, '"foo bar"');
+test_applied("<string>", " 'foo bar' ", false, '"foo bar"');
+test_applied("<string>", `'"foo" bar'`, false, '"\\"foo\\" bar"');
+test_applied("<string>", '"bar baz"', false, '"bar baz"');
+test_applied("<string>", `"bar 'baz'"`, false, `"bar 'baz'"`);
+test_applied("<string>+", "'foo' 'bar'", false, '"foo" "bar"');
+test_applied("<string>#", "'foo', 'bar'", false, '"foo", "bar"');
+test_applied("<string>+ | <string>#", "'foo' 'bar'", false, '"foo" "bar"');
+test_applied("<string>+ | <string>#", " 'foo' 'bar'", false, '"foo" "bar"');
+test_applied("<string>+ | <string>#", `'foo' "bar"`, false, '"foo" "bar"');
+test_applied("<string># | <string>+", "'foo', 'bar'", false, '"foo", "bar"');
+test_applied("<string># | <string>+", "'foo', 'bar' ", false, '"foo", "bar"');
+test_applied("<string># | <string>+", `"foo", 'bar'`, false, '"foo", "bar"');
+
+test_not_applied("<string>", "'foo bar", false);
+test_not_applied("<string>", `"bar 'baz'`, false);
+test_not_applied("<string>+ | <string>#", `'foo' "bar`, false);
+test_not_applied("<string># | <string>+", `"foo", 'bar`, false);
+
// inherits: true/false
test_applied('<color>', 'tomato', false, 'rgb(255, 99, 71)');
test_applied('<color>', 'tomato', true, 'rgb(255, 99, 71)');
diff --git a/tests/wpt/tests/css/css-properties-values-api/register-property-syntax-parsing.html b/tests/wpt/tests/css/css-properties-values-api/register-property-syntax-parsing.html
index 664ccabd33c..537a921efc7 100644
--- a/tests/wpt/tests/css/css-properties-values-api/register-property-syntax-parsing.html
+++ b/tests/wpt/tests/css/css-properties-values-api/register-property-syntax-parsing.html
@@ -82,6 +82,25 @@ assert_valid("<transform-function>+", "translateX(2px) rotate(42deg)");
assert_valid("<transform-list>", "scale(2)");
assert_valid("<transform-list>", "translateX(2px) rotate(20deg)");
+// <string> is accepted in https://github.com/w3c/css-houdini-drafts/issues/1103
+assert_valid("<string>", "'foo bar'");
+assert_valid("<string>", " 'foo bar' ");
+assert_valid("<string>", "'foo bar");
+assert_valid("<string>", `'"foo" bar'`);
+assert_valid("<string>", '"bar baz"');
+assert_valid("<string>", `"bar 'baz'"`);
+assert_valid("<string>", `"bar 'baz'`);
+assert_valid("<string>+", "'foo' 'bar'");
+assert_valid("<string>#", "'foo', 'bar'");
+assert_valid("<string>+ | <string>#", "'foo' 'bar'");
+assert_valid("<string>+ | <string>#", " 'foo' 'bar'");
+assert_valid("<string>+ | <string>#", `'foo' "bar"`);
+assert_valid("<string>+ | <string>#", `'foo' "bar`);
+assert_valid("<string># | <string>+", "'foo', 'bar'");
+assert_valid("<string># | <string>+", "'foo', 'bar' ");
+assert_valid("<string># | <string>+", `"foo", 'bar'`);
+assert_valid("<string># | <string>+", `"foo", 'bar`);
+
assert_valid("<color>", "rgb(12, 34, 56)");
assert_valid("<color>", "lightgoldenrodyellow");
assert_valid("<image>", "url(a)");
@@ -262,4 +281,7 @@ assert_invalid("<transform-list>+", "translateX(2px) rotate(20deg)");
assert_invalid("<color>", "fancy-looking");
assert_invalid("<image>", "banana.png");
assert_invalid("<url>", "banana.png");
+
+assert_invalid("<string>", "foo bar'");
+assert_invalid("<string>", 'foo bar"');
</script>
diff --git a/tests/wpt/tests/css/css-pseudo/firefox-bug-1907238-crash.html b/tests/wpt/tests/css/css-pseudo/firefox-bug-1907238-crash.html
new file mode 100644
index 00000000000..7bfa2538d97
--- /dev/null
+++ b/tests/wpt/tests/css/css-pseudo/firefox-bug-1907238-crash.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<meta charset=cp1252>
+<style>
+::first-letter {}
+</style>
+<script>
+document.addEventListener("DOMContentLoaded", () => {
+ let a = document.createElement("pre")
+ a.innerHTML = "<a dir='rtl'><i"
+ let b = document.createElement("a")
+ a.appendChild(b)
+ document.documentElement.appendChild(a)
+ b.insertAdjacentText("beforebegin", "�\nۭ")
+})
+</script>
diff --git a/tests/wpt/tests/css/css-pseudo/parsing/marker-supported-properties-in-animation.html b/tests/wpt/tests/css/css-pseudo/parsing/marker-supported-properties-in-animation.html
index e581a786367..11811bae127 100644
--- a/tests/wpt/tests/css/css-pseudo/parsing/marker-supported-properties-in-animation.html
+++ b/tests/wpt/tests/css/css-pseudo/parsing/marker-supported-properties-in-animation.html
@@ -272,6 +272,14 @@ const interpolationTests = [
midPoint: "rgb(50, 100, 100) 2px 2px 2px",
},
+ // ::marker supports `cursor`.
+ {
+ property: "cursor",
+ from: "auto",
+ to: "move",
+ midPoint: "move",
+ },
+
// ::marker does NOT support layout properties
{
property: "display",
diff --git a/tests/wpt/tests/css/css-pseudo/parsing/marker-supported-properties.html b/tests/wpt/tests/css/css-pseudo/parsing/marker-supported-properties.html
index 700d04aa83a..203c0a64077 100644
--- a/tests/wpt/tests/css/css-pseudo/parsing/marker-supported-properties.html
+++ b/tests/wpt/tests/css/css-pseudo/parsing/marker-supported-properties.html
@@ -88,6 +88,9 @@ test_pseudo_computed_value("::marker", "text-emphasis-position", "under left");
test_pseudo_computed_value("::marker", "text-emphasis-style", "dot");
test_pseudo_computed_value("::marker", "text-shadow", "rgb(0, 255, 0) 1px 2px 3px");
+// ::marker supports `cursor`.
+test_pseudo_computed_value("::marker", "cursor", "move");
+
// ::marker does NOT support layout properties
test_pseudo_computed_value("::marker", "display", "none", ["block", "inline", "inline-block"]);
test_pseudo_computed_value("::marker", "position", "absolute", "static");
diff --git a/tests/wpt/tests/css/css-rhythm/block-step-size-establishes-block-formatting-context-list-item.html b/tests/wpt/tests/css/css-rhythm/block-step-size-establishes-block-formatting-context-list-item.html
new file mode 100644
index 00000000000..85daa729789
--- /dev/null
+++ b/tests/wpt/tests/css/css-rhythm/block-step-size-establishes-block-formatting-context-list-item.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<html>
+<head>
+<link rel="author" href="mailto:sammy.gill@apple.com">
+<link rel="help" href="https://drafts.csswg.org/css-rhythm/#block-step-size">
+<link rel="match" href="/css/reference/ref-filled-green-100px-square-only.html">
+<meta name="assert" content="block-step-size values other than none on a block box causes it to establish a block formatting context">
+<style>
+div {
+ width: 50px;
+ height: 100px;
+ background-color: green;
+}
+.floating {
+ float: left;
+}
+.block-step-size {
+ display: list-item;
+ list-style: none;
+ block-step-size: 1px;
+}
+</style>
+</head>
+<body>
+<p>Test passes if there is a filled green square.</p>
+<div class="floating"></div>
+<div class="block-step-size"></div>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-rhythm/block-step-size-establishes-block-formatting-context.html b/tests/wpt/tests/css/css-rhythm/block-step-size-establishes-block-formatting-context.html
new file mode 100644
index 00000000000..e96e3e00824
--- /dev/null
+++ b/tests/wpt/tests/css/css-rhythm/block-step-size-establishes-block-formatting-context.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<html>
+<head>
+<link rel="author" href="mailto:sammy.gill@apple.com">
+<link rel="help" href="https://drafts.csswg.org/css-rhythm/#block-step-size">
+<link rel="match" href="/css/reference/ref-filled-green-100px-square-only.html">
+<meta name="assert" content="block-step-size values other than none on a block box causes it to establish a block formatting context">
+<style>
+div {
+ width: 50px;
+ height: 100px;
+ background-color: green;
+}
+.floating {
+ float: left;
+}
+.block-step-size {
+ block-step-size: 1px;
+}
+</style>
+</head>
+<body>
+<p>Test passes if there is a filled green square.</p>
+<div class="floating"></div>
+<div class="block-step-size"></div>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-rhythm/block-step-size-none-does-not-establish-block-formatting-context.html b/tests/wpt/tests/css/css-rhythm/block-step-size-none-does-not-establish-block-formatting-context.html
new file mode 100644
index 00000000000..afbfcd84efb
--- /dev/null
+++ b/tests/wpt/tests/css/css-rhythm/block-step-size-none-does-not-establish-block-formatting-context.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<html>
+<head>
+<link rel="author" href="mailto:sammy.gill@apple.com">
+<link rel="help" href="https://drafts.csswg.org/css-rhythm/#block-step-size">
+<link rel="match" href="/css/reference/ref-filled-green-100px-square.xht">
+<meta name="assert" content="block-step-size none should not establish a block formatting context for the block box">
+<style>
+div {
+ width: 100px;
+ height: 100px;
+ background-color: green;
+}
+.floating {
+ position: relative;
+ z-index: -1;
+ float: left;
+ background-color: red;
+}
+.block-step-size {
+ block-step-size: none;
+}
+</style>
+</head>
+<body>
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div class="floating"></div>
+<div class="block-step-size"></div>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-ruby/break-within-bases/break-spaces-crash.html b/tests/wpt/tests/css/css-ruby/break-within-bases/break-spaces-crash.html
new file mode 100644
index 00000000000..d6b8f340844
--- /dev/null
+++ b/tests/wpt/tests/css/css-ruby/break-within-bases/break-spaces-crash.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<head>
+<link rel="help" href="https://crbug.com/352467338">
+<title>Zero available width + break-spaces</title>
+<style>
+body {
+ margin-right: 1000%;
+}
+span {
+ white-space-collapse: break-spaces;
+}
+</style>
+</head>
+<body dir="rtl">
+<ruby><span>A A A</span><rt></rt></ruby>
+</body>
diff --git a/tests/wpt/tests/css/css-ruby/ruby-dynamic-removal-004-crash.html b/tests/wpt/tests/css/css-ruby/ruby-dynamic-removal-004-crash.html
new file mode 100644
index 00000000000..be7c28956f6
--- /dev/null
+++ b/tests/wpt/tests/css/css-ruby/ruby-dynamic-removal-004-crash.html
@@ -0,0 +1,23 @@
+<!doctype html>
+<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1902540">
+<script>
+let fuzz = () => {
+ document.body.appendChild(document.createElement("iframe"))
+ document.getElementById("b").appendChild(document.createElement("plaintext"))
+ document.documentElement.offsetHeight;
+ window.frames[0].document.body.appendChild(document.getElementById("a"))
+ window.frames[0].document.body.appendChild(document.getElementById("c"))
+}
+</script>
+<style>
+:last-child {
+ display: ruby-text-container;
+}
+</style>
+<body onload="fuzz()">
+<fieldset id="a"></fieldset>
+<ruby id="b">
+<ul id="c"></ul>
+</ruby>
+</body>
+
diff --git a/tests/wpt/tests/css/css-scroll-anchoring/shadow-dom-subscroller.html b/tests/wpt/tests/css/css-scroll-anchoring/shadow-dom-subscroller.html
new file mode 100644
index 00000000000..bbae72df715
--- /dev/null
+++ b/tests/wpt/tests/css/css-scroll-anchoring/shadow-dom-subscroller.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-scroll-anchoring/">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+ body {
+ height: 5000px;
+ }
+
+ .filler {
+ width: 20px;
+ height: 500px;
+ background-color: silver;
+ }
+
+ #container {
+ height: 800px;
+ width: 800px;
+ padding: 10px;
+ border: 1px solid black;
+ }
+
+ #target {
+ border: 1px solid gray;
+ padding: 10px;
+ height: 150px;
+ background-color: orange;
+ }
+</style>
+
+<div id="container">
+ <test-container id="shadowHost" >
+ <div class="filler">
+ </div>
+ <div id="target">
+ <p>Scrolling over this element doesn't scroll the main scroller<p>
+ </div>
+ <div class="filler">
+ </div>
+ </test-container>
+</div>
+
+<script type="module">
+ const content = document.getElementById('target');
+ class TestContainer extends HTMLElement {
+ connectedCallback() {
+ const shadow = this.attachShadow({ mode: 'open' });
+ shadow.innerHTML = `
+ <div id = "shadowScroller" style="height: calc(100% - 20px); overflow: auto; border: 1px solid green; padding: 10px">
+ <slot></slot>
+ </div>`;
+ }
+ }
+
+ customElements.define('test-container', TestContainer);
+
+ promise_test(async function() {
+ var root = document.getElementById('shadowHost');
+ var shadowElement = root.shadowRoot.querySelector("#shadowScroller");
+ document.scrollingElement.scrollBy(0,100);
+ shadowElement.scrollBy(0,150);
+ await new Promise(resolve => {
+ shadowElement.addEventListener("scroll", () => step_timeout(resolve, 0));
+ });
+
+ assert_equals(document.scrollingElement.scrollTop, 100);
+ }, "Ensure there is no scroll anchoring adjustment in the main frame.");
+
+</script>
diff --git a/tests/wpt/tests/css/css-scroll-anchoring/zero-scroll-offset.html b/tests/wpt/tests/css/css-scroll-anchoring/zero-scroll-offset-001.html
index b8f5aa2ccc5..b8f5aa2ccc5 100644
--- a/tests/wpt/tests/css/css-scroll-anchoring/zero-scroll-offset.html
+++ b/tests/wpt/tests/css/css-scroll-anchoring/zero-scroll-offset-001.html
diff --git a/tests/wpt/tests/css/css-scroll-anchoring/zero-scroll-offset-002.html b/tests/wpt/tests/css/css-scroll-anchoring/zero-scroll-offset-002.html
new file mode 100644
index 00000000000..b1da4560c6d
--- /dev/null
+++ b/tests/wpt/tests/css/css-scroll-anchoring/zero-scroll-offset-002.html
@@ -0,0 +1,56 @@
+<!DOCTYPE html>
+<head>
+ <title>Test that scroll anchoring is suppressed when scroll offset is zero in the block axis, even if the inline axis scroll offset isn't.</title>
+ <link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@mozilla.com">
+ <link rel="author" title="Mozilla" href="https://mozilla.org">
+ <link rel="help" href="https://drafts.csswg.org/css-scroll-anchoring/">
+ <link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1905426">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+</head>
+<style>
+#header {
+ height: 100px;
+ border: 1px solid black;
+ overflow-anchor: none;
+}
+#content {
+ height: 200vh;
+ width: 200vw;
+}
+</style>
+<div id="header"></div>
+<div id="content">abc</div>
+<script>
+window.addEventListener("scroll", function() {
+ if (document.scrollingElement.scrollTop > 0) {
+ // On the first scroll event, shrink the header. Scroll anchoring anchors to
+ // content, but the header shrinks by more than the scroll offset so the
+ // resulting scroll position is zero.
+ step_timeout(function() {
+ document.querySelector("#header").style.height = "50px";
+ }, 0);
+ } else {
+ // On the second scroll event, grow the header. Since the scroll offset is
+ // zero, scroll anchoring should be suppressed. Otherwise, scroll anchoring
+ // would anchor to content and the resulting scroll position would be 50px.
+ step_timeout(function() {
+ document.querySelector("#header").style.height = "100px";
+ }, 0);
+ }
+});
+
+async_test(function(t) {
+ // Scroll down a bit to trigger the scroll event listener.
+ window.scrollTo(10, 10);
+
+ window.requestAnimationFrame(function() {
+ window.requestAnimationFrame(function() {
+ window.requestAnimationFrame(t.step_func_done(() => {
+ assert_equals(document.scrollingElement.scrollTop, 0);
+ }));
+ });
+ });
+
+}, "Scroll anchoring suppressed when scroll offset is zero.");
+</script>
diff --git a/tests/wpt/tests/css/css-scroll-snap/snap-to-visible-areas-both-pseudo.html b/tests/wpt/tests/css/css-scroll-snap/snap-to-visible-areas-both-pseudo.html
new file mode 100644
index 00000000000..6bc6d13b3bb
--- /dev/null
+++ b/tests/wpt/tests/css/css-scroll-snap/snap-to-visible-areas-both-pseudo.html
@@ -0,0 +1,93 @@
+<!DOCTYPE html>
+<title>
+ Snap to a visible area only even when there is a closer snap point for an area
+ that is closer but not visible (using both axes snap type), where the relevant
+ snap areas are pseudo-elements
+</title>
+<link rel="help" href="https://drafts.csswg.org/css-scroll-snap-1/#snap-scope"/>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+
+body, html { height: 100%; }
+
+div {
+ position: absolute;
+ margin: 0px;
+}
+
+#scroller {
+ height: 600px;
+ width: 600px;
+ overflow: scroll;
+ scroll-snap-type: both mandatory;
+}
+
+#space {
+ width: 2000px;
+ height: 2000px;
+}
+
+.snap {
+ width: 200px;
+ height: 200px;
+ background-color: blue;
+ scroll-snap-align: start;
+}
+
+#left-top {
+ left: 0px;
+ top: 0px;
+}
+
+#left-top::before {
+ position: absolute;
+ margin: 0px;
+ content: "";
+
+ display:block;
+
+ left: 0px;
+ top: 800px;
+ width: 200px;
+ height: 200px;
+ background-color: yellow;
+ scroll-snap-align: start;
+}
+
+#left-top::after {
+ position: absolute;
+ margin: 0px;
+ content: "";
+
+ display:block;
+
+ left: 800px;
+ top: 0px;
+ width: 200px;
+ height: 200px;
+ background-color: yellow;
+ scroll-snap-align: start;
+
+}
+
+</style>
+<div id="scroller">
+ <div id="space"></div>
+ <div id="left-top" class="snap"></div>
+</div>
+<script>
+test(t => {
+ const scroller = document.getElementById("scroller");
+ scroller.scrollTo(0, 0);
+ assert_equals(scroller.scrollLeft, 0);
+ assert_equals(scroller.scrollTop, 0);
+ scroller.scrollTo(500, 600);
+ assert_equals(scroller.scrollLeft, 0);
+ assert_equals(scroller.scrollTop, 800);
+ scroller.scrollTo(600, 500);
+ assert_equals(scroller.scrollLeft, 800);
+ assert_equals(scroller.scrollTop, 0);
+}, 'Only snap to visible areas in the case where taking the closest snap point of \
+ each axis does not snap to a visible area');
+</script>
diff --git a/tests/wpt/tests/css/css-scrollbars/invalid-needs-layout-crash.html b/tests/wpt/tests/css/css-scrollbars/invalid-needs-layout-crash.html
new file mode 100644
index 00000000000..0b0ae427897
--- /dev/null
+++ b/tests/wpt/tests/css/css-scrollbars/invalid-needs-layout-crash.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<style>
+#target::-webkit-scrollbar { position: absolute; }
+#target.crash::-webkit-scrollbar { right: 0 }
+</style>
+<div id="target" style="width: 100px; height: 100px; overflow: auto;"><div style="height: 200px;"></div></div>
+<script>
+document.body.offsetTop;
+document.getElementById('target').classList.add('crash');
+</script>
diff --git a/tests/wpt/tests/css/css-shadow-parts/grouping-with-disabled.html b/tests/wpt/tests/css/css-shadow-parts/grouping-with-disabled.html
new file mode 100644
index 00000000000..187b40ba3b5
--- /dev/null
+++ b/tests/wpt/tests/css/css-shadow-parts/grouping-with-disabled.html
@@ -0,0 +1,63 @@
+<!doctype html>
+<title>::part():disabled grouping</title>
+<link rel="help" href="https://drafts.csswg.org/css-shadow-parts/">
+<style>
+ my-element::part(button) {
+ font-family: fantasy;
+ }
+ my-element::part(button):disabled {
+ background-color: #ff0000;
+ }
+ my-element::part(button):disabled,
+ p {
+ color: #0000ff;
+ }
+ my-element::part(not-a-part):disabled,
+ p {
+ font-family: monospace;
+ }
+</style>
+<body>
+ <my-element id="subject"></my-element>
+ <p id="grouped">Text</p>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script>
+ const RED = "rgb(255, 0, 0)";
+ const BLUE = "rgb(0, 0, 255)";
+ customElements.define(
+ "my-element",
+ class MyElement extends HTMLElement {
+ connectedCallback() {
+ this.attachShadow({
+ mode: "open",
+ }).innerHTML = `
+ <button part="button" disabled>Test</button>
+ `;
+ this.elementInternals = this.attachInternals();
+ }
+
+ get inner() {
+ return this.shadowRoot.querySelector("[part=button]");
+ }
+ },
+ );
+
+ test(() => {
+ assert_equals(getComputedStyle(subject.inner).fontFamily, 'fantasy');
+ }, "Styles applied to ::part(...)");
+
+ test(() => {
+ assert_equals(getComputedStyle(subject.inner).backgroundColor, RED);
+ }, "Styles applied to ::part(...):disabled");
+
+ test(() => {
+ assert_equals(getComputedStyle(subject.inner).color, BLUE);
+ assert_equals(getComputedStyle(grouped).color, BLUE);
+ }, "Styles applied via grouped selector including matched ::part(...):disabled");
+
+ test(() => {
+ assert_equals(getComputedStyle(grouped).fontFamily, 'monospace');
+ }, "Styles applied via grouped selector including unmatched ::part(...):disabled");
+ </script>
+</body>
diff --git a/tests/wpt/tests/css/css-shapes/parsing/shape-outside-invalid.html b/tests/wpt/tests/css/css-shapes/parsing/shape-outside-invalid.html
deleted file mode 100644
index 5fe89a605ec..00000000000
--- a/tests/wpt/tests/css/css-shapes/parsing/shape-outside-invalid.html
+++ /dev/null
@@ -1,56 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8">
-<title>CSS Shapes Module Level 1: parsing shape-outside with invalid values</title>
-<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-shapes/#shape-outside-property">
-<meta name="assert" content="shape-outside supports only the grammar 'none | [ <basic-shape> || <shape-box> ] | <image>'.">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/css/support/parsing-testcommon.js"></script>
-</head>
-<body>
-<script>
-test_invalid_value("shape-outside", "auto");
-test_invalid_value("shape-outside", "ray(0deg)");
-
-test_invalid_value("shape-outside", "inset()");
-test_invalid_value("shape-outside", "inset(123)");
-test_invalid_value("shape-outside", "inset(1% 2% 3% 4% 5%)");
-test_invalid_value("shape-outside", "inset(round 0)");
-test_invalid_value("shape-outside", "inset(0px round)");
-test_invalid_value("shape-outside", "inset(0px round 123)");
-test_invalid_value("shape-outside", "inset(0px round 1% 2% 3% 4% 5%)");
-test_invalid_value("shape-outside", "inset(0px round / 1px)");
-test_invalid_value("shape-outside", "inset(10px round -20px)");
-test_invalid_value("shape-outside", "inset(30% round -40%)");
-
-test_invalid_value("shape-outside", "circle(123)");
-test_invalid_value("shape-outside", "circle(at)");
-test_invalid_value("shape-outside", "circle(10% 20%)");
-test_invalid_value("shape-outside", "circle(-10px at 20px 30px)");
-test_invalid_value("shape-outside", "circle(-10% at 20% 30%)");
-test_invalid_value("shape-outside", "circle(1% 2% at 0% 100%)");
-
-test_invalid_value("shape-outside", "ellipse(farthest-side at)");
-test_invalid_value("shape-outside", "ellipse(1% 2% top right)");
-test_invalid_value("shape-outside", "ellipse(3%)");
-test_invalid_value("shape-outside", "ellipse(3% at 100% 0%)");
-test_invalid_value("shape-outside", "ellipse(closest-side)");
-test_invalid_value("shape-outside", "ellipse(farthest-side at 100% 0%)");
-test_invalid_value("shape-outside", "ellipse(10% -20% at 30% 40%)");
-test_invalid_value("shape-outside", "ellipse(-50px 60px at 70% 80%)");
-
-test_invalid_value("shape-outside", "polygon(1%)");
-
-test_invalid_value("shape-outside", "border-box circle(7% at 8% 9%) border-box");
-
-// <geometry-box> other than <shape-box>
-test_invalid_value("shape-outside", "fill-box");
-test_invalid_value("shape-outside", "stroke-box");
-test_invalid_value("shape-outside", "view-box");
-
-</script>
-</body>
-</html>
diff --git a/tests/wpt/tests/css/css-shapes/parsing/shape-outside-valid.html b/tests/wpt/tests/css/css-shapes/parsing/shape-outside-valid.html
deleted file mode 100644
index e5587c6b233..00000000000
--- a/tests/wpt/tests/css/css-shapes/parsing/shape-outside-valid.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8">
-<title>CSS Shapes Module Level 1: parsing shape-outside with valid values</title>
-<link rel="author" title="Eric Willigers" href="mailto:ericwilligers@chromium.org">
-<link rel="help" href="https://drafts.csswg.org/css-shapes/#shape-outside-property">
-<meta name="assert" content="shape-outside supports the full grammar 'none | [ <basic-shape> || <shape-box> ] | <image>'.">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/css/support/parsing-testcommon.js"></script>
-</head>
-<body>
-<script>
-test_valid_value("shape-outside", "none");
-
-// <basic-shape>
-test_valid_value("shape-outside", "inset(100%)");
-test_valid_value("shape-outside", "inset(0 1px)", "inset(0px 1px)");
-test_valid_value("shape-outside", "inset(0px 1px 2%)");
-test_valid_value("shape-outside", "inset(0px 1px 2% 3em)");
-test_valid_value("shape-outside", "inset(0px round 100%)");
-test_valid_value("shape-outside", "inset(0px round 0 1px)", "inset(0px round 0px 1px)");
-test_valid_value("shape-outside", "inset(0px round 0px 1px 2%)");
-test_valid_value("shape-outside", "inset(0px round 0px 1px 2% 3em)");
-test_valid_value("shape-outside", "inset(10px round 20% / 0px 1px 2% 3em)");
-
-test_valid_value("shape-outside", "circle()");
-test_valid_value("shape-outside", "circle(1px)");
-test_valid_value("shape-outside", "circle(closest-side)", "circle()");
-test_valid_value("shape-outside", "circle(at 10% 20%)");
-test_valid_value("shape-outside", "circle(farthest-side at center top)", "circle(farthest-side at 50% 0%)");
-test_valid_value("shape-outside", "circle(4% at top right)", "circle(4% at 100% 0%)");
-
-test_valid_value("shape-outside", "ellipse()", "ellipse()");
-test_valid_value("shape-outside", "ellipse(3% 2%)");
-test_valid_value("shape-outside", "ellipse(closest-side 1px)");
-test_valid_value("shape-outside", "ellipse(10% closest-side)");
-test_valid_value("shape-outside", "ellipse(closest-side closest-side at 60% 70%)", "ellipse(at 60% 70%)");
-test_valid_value("shape-outside", "ellipse(at 10% 20%)");
-test_valid_value("shape-outside", "ellipse(farthest-side 4% at bottom left)", "ellipse(farthest-side 4% at 0% 100%)");
-
-test_valid_value("shape-outside", "polygon(1% 2%)");
-test_valid_value("shape-outside", "polygon(nonzero, 1px 2px, 3em 4em)", "polygon(1px 2px, 3em 4em)");
-test_valid_value("shape-outside", "polygon(evenodd, 1px 2px, 3em 4em, 5pt 6%)");
-
-// <shape-box>
-test_valid_value("shape-outside", "border-box");
-test_valid_value("shape-outside", "padding-box");
-test_valid_value("shape-outside", "content-box");
-test_valid_value("shape-outside", "margin-box");
-
-// basic-shape> <shape-box>
-test_valid_value("shape-outside", "circle(7% at 8% 9%) border-box");
-
-// <shape-box> <basic-shape>
-test_valid_value("shape-outside", "padding-box inset(10em)", "inset(10em) padding-box");
-test_valid_value("shape-outside", "border-box circle(7% at 8% 9%)", "circle(7% at 8% 9%) border-box");
-test_valid_value("shape-outside", "margin-box ellipse(at 1em 2em)", ["ellipse(at 1em 2em) margin-box", "ellipse(at 1em 2em)"]);
-test_valid_value("shape-outside", "content-box polygon(1% 2%)", "polygon(1% 2%) content-box");
-
-// <image>
-// Spec is silent about url serialization.
-// Blink, Edge, Firefox add quotes. WebKit removes quotes.
-test_valid_value("shape-outside", "url(https://example.com/)", ["url(https://example.com/)", "url(\"https://example.com/\")"]);
-test_valid_value("shape-outside", "url(\"https://example.com/\")", ["url(https://example.com/)", "url(\"https://example.com/\")"]);
-test_valid_value("shape-outside", "cross-fade(url(\"https://example.com/\"), green)");
-test_valid_value("shape-outside", "linear-gradient(yellow, blue)");
-</script>
-</body>
-</html>
diff --git a/tests/wpt/tests/css/css-shapes/shape-functions/circle-function-computed.html b/tests/wpt/tests/css/css-shapes/shape-functions/circle-function-computed.html
new file mode 100644
index 00000000000..cdfbbb5aa03
--- /dev/null
+++ b/tests/wpt/tests/css/css-shapes/shape-functions/circle-function-computed.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Shapes Module Level 1: the computed value of the circle() function</title>
+<link rel="help" href="https://drafts.csswg.org/css-shapes-1/#funcdef-basic-shape-circle">
+<meta name="assert" content="Tests parsing of the circle() function">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/computed-testcommon.js"></script>
+</head>
+<body>
+<div id="target"></div>
+<script>
+test_computed_value("shape-outside", "circle()");
+test_computed_value("shape-outside", "circle(1px)");
+test_computed_value("shape-outside", "circle(20px at center)", "circle(20px at 50% 50%)");
+test_computed_value("shape-outside", "circle(at 10% 20%)");
+test_computed_value("shape-outside", "circle(4% at top right)", "circle(4% at 100% 0%)");
+test_computed_value("shape-outside", "circle(calc(100% - 20px) at calc(100% - 20px) calc(100% / 4))", "circle(calc(100% - 20px) at calc(100% - 20px) 25%)");
+
+test_computed_value("shape-outside", "circle(closest-corner at center)", "circle(closest-corner at 50% 50%");
+test_computed_value("shape-outside", "circle(closest-corner at 20px 50px)", "circle(closest-corner at 20px 50px");
+test_computed_value("shape-outside", "circle(closest-side at center)", "circle(at 50% 50%)");
+test_computed_value("shape-outside", "circle(closest-side at 20px 30%)", "circle(at 20px 30%)");
+test_computed_value("shape-outside", "circle(farthest-corner at center top)", "circle(farthest-corner at 50% 0%)");
+test_computed_value("shape-outside", "circle(farthest-corner at center)", "circle(farthest-corner at 50% 50%)");
+test_computed_value("shape-outside", "circle(farthest-side at center top)", "circle(farthest-side at 50% 0%)");
+test_computed_value("shape-outside", "circle(farthest-side at center)", "circle(farthest-side at 50% 50%)");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-shapes/shape-functions/circle-function-invalid.html b/tests/wpt/tests/css/css-shapes/shape-functions/circle-function-invalid.html
new file mode 100644
index 00000000000..56ca23d23a5
--- /dev/null
+++ b/tests/wpt/tests/css/css-shapes/shape-functions/circle-function-invalid.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Shapes Module Level 1: parsing the circle() function</title>
+<link rel="help" href="https://drafts.csswg.org/css-shapes-1/#funcdef-basic-shape-circle">
+<meta name="assert" content="Tests parsing of the circle() function">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_invalid_value("shape-outside", "circle(123)");
+test_invalid_value("shape-outside", "circle(at)");
+test_invalid_value("shape-outside", "circle(4% 20%)");
+test_invalid_value("shape-outside", "circle(4% 20% at center)");
+test_invalid_value("shape-outside", "circle(4px 20px)");
+test_invalid_value("shape-outside", "circle(4px, 20px)");
+test_invalid_value("shape-outside", "circle(at 4px, 20px)");
+test_invalid_value("shape-outside", "circle(-10px at 20px 30px)");
+test_invalid_value("shape-outside", "circle(-10% at 20% 30%)");
+test_invalid_value("shape-outside", "circle(1% 2% at 0% 100%)");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-shapes/shape-functions/circle-function-valid.html b/tests/wpt/tests/css/css-shapes/shape-functions/circle-function-valid.html
new file mode 100644
index 00000000000..417e397de9e
--- /dev/null
+++ b/tests/wpt/tests/css/css-shapes/shape-functions/circle-function-valid.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Shapes Module Level 1: parsing the circle() function</title>
+<link rel="help" href="https://drafts.csswg.org/css-shapes-1/#funcdef-basic-shape-circle">
+<meta name="assert" content="Tests parsing of the circle() function">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+</head>
+<body>
+<div id="target"></div>
+<script>
+test_valid_value("shape-outside", "circle()");
+test_valid_value("shape-outside", "circle(1px)");
+test_valid_value("shape-outside", "circle(20px at center)", "circle(20px at 50% 50%)");
+test_valid_value("shape-outside", "circle(at 10% 20%)");
+test_valid_value("shape-outside", "circle(4% at top right)", "circle(4% at 100% 0%)");
+test_valid_value("shape-outside", "circle(calc(100% - 20px) at calc(100% - 20px) calc(100% / 4))", "circle(calc(100% - 20px) at calc(100% - 20px) calc(25%))");
+
+test_valid_value("shape-outside", "circle(closest-corner at center)", "circle(closest-corner at 50% 50%");
+test_valid_value("shape-outside", "circle(closest-corner at 20px 50px)", "circle(closest-corner at 20px 50px");
+test_valid_value("shape-outside", "circle(closest-side at center)", "circle(at 50% 50%)");
+test_valid_value("shape-outside", "circle(closest-side at 20px 30%)", "circle(at 20px 30%)");
+test_valid_value("shape-outside", "circle(farthest-corner at center top)", "circle(farthest-corner at 50% 0%)");
+test_valid_value("shape-outside", "circle(farthest-corner at center)", "circle(farthest-corner at 50% 50%)");
+test_valid_value("shape-outside", "circle(farthest-side at center top)", "circle(farthest-side at 50% 0%)");
+test_valid_value("shape-outside", "circle(farthest-side at center)", "circle(farthest-side at 50% 50%)");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-shapes/shape-functions/ellipse-function-computed.html b/tests/wpt/tests/css/css-shapes/shape-functions/ellipse-function-computed.html
new file mode 100644
index 00000000000..2f574f5a8b1
--- /dev/null
+++ b/tests/wpt/tests/css/css-shapes/shape-functions/ellipse-function-computed.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Shapes Module Level 1: the computed value of the ellipse() function</title>
+<link rel="help" href="https://drafts.csswg.org/css-shapes-1/#funcdef-basic-shape-ellipse">
+<meta name="assert" content="Tests parsing of the ellipse() function">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/computed-testcommon.js"></script>
+</head>
+<body>
+<div id="target"></div>
+<script>
+test_computed_value("shape-outside", "ellipse()");
+test_computed_value("shape-outside", "ellipse(1px 2px)");
+test_computed_value("shape-outside", "ellipse(20px 40px at center)", "ellipse(20px 40px at 50% 50%)");
+test_computed_value("shape-outside", "ellipse(closest-side 20%)");
+test_computed_value("shape-outside", "ellipse(farthest-side 20%)");
+test_computed_value("shape-outside", "ellipse(closest-corner 20%)");
+test_computed_value("shape-outside", "ellipse(farthest-corner 20%)");
+test_computed_value("shape-outside", "ellipse(at 10% 20%)");
+test_computed_value("shape-outside", "ellipse(at -10px -20%)");
+test_computed_value("shape-outside", "ellipse(4% 20% at top right)", "ellipse(4% 20% at 100% 0%)");
+test_computed_value("shape-outside", "ellipse(calc(100% - 20px) calc(80% - 10px) at calc(100% - 20px) calc(100% / 4))", "ellipse(calc(100% - 20px) calc(80% - 10px) at calc(100% - 20px) 25%)");
+
+test_computed_value("shape-outside", "ellipse(10px closest-side at top right)", "ellipse(10px closest-side at 100% 0%)");
+test_computed_value("shape-outside", "ellipse(farthest-side 20px at center top)", "ellipse(farthest-side 20px at 50% 0%)");
+test_computed_value("shape-outside", "ellipse(farthest-side farthest-side at top right)", "ellipse(farthest-side farthest-side at 100% 0%)");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-shapes/shape-functions/ellipse-function-invalid.html b/tests/wpt/tests/css/css-shapes/shape-functions/ellipse-function-invalid.html
new file mode 100644
index 00000000000..d17034439bf
--- /dev/null
+++ b/tests/wpt/tests/css/css-shapes/shape-functions/ellipse-function-invalid.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Shapes Module Level 1: parsing the ellipse() function</title>
+<link rel="help" href="https://drafts.csswg.org/css-shapes-1/#funcdef-basic-shape-ellipse">
+<meta name="assert" content="Tests parsing of the ellipse() function">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_invalid_value("shape-outside", "ellipse(10px)");
+test_invalid_value("shape-outside", "ellipse(10px -20px)");
+test_invalid_value("shape-outside", "ellipse(20px, 40px at center)");
+test_invalid_value("shape-outside", "ellipse(farthest-side at)");
+test_invalid_value("shape-outside", "ellipse(1% 2% top right)");
+test_invalid_value("shape-outside", "ellipse(3% at 100% 0%)");
+test_invalid_value("shape-outside", "ellipse(closest-side)");
+test_invalid_value("shape-outside", "ellipse(farthest-side at 100% 0%)");
+test_invalid_value("shape-outside", "ellipse(10% -20% at 30% 40%)");
+test_invalid_value("shape-outside", "ellipse(-50px 60px at 70% 80%)");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-shapes/shape-functions/ellipse-function-valid.html b/tests/wpt/tests/css/css-shapes/shape-functions/ellipse-function-valid.html
new file mode 100644
index 00000000000..7d82996068f
--- /dev/null
+++ b/tests/wpt/tests/css/css-shapes/shape-functions/ellipse-function-valid.html
@@ -0,0 +1,31 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Shapes Module Level 1: parsing the ellipse() function</title>
+<link rel="help" href="https://drafts.csswg.org/css-shapes-1/#funcdef-basic-shape-ellipse">
+<meta name="assert" content="Tests parsing of the ellipse() function">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_valid_value("shape-outside", "ellipse()");
+test_valid_value("shape-outside", "ellipse(1px 2px)");
+test_valid_value("shape-outside", "ellipse(20px 40px at center)", "ellipse(20px 40px at 50% 50%)");
+test_valid_value("shape-outside", "ellipse(closest-side 20%)");
+test_valid_value("shape-outside", "ellipse(farthest-side 20%)");
+test_valid_value("shape-outside", "ellipse(closest-corner 20%)");
+test_valid_value("shape-outside", "ellipse(farthest-corner 20%)");
+test_valid_value("shape-outside", "ellipse(at 10% 20%)");
+test_valid_value("shape-outside", "ellipse(at -10px -20%)");
+test_valid_value("shape-outside", "ellipse(4% 20% at top right)", "ellipse(4% 20% at 100% 0%)");
+test_valid_value("shape-outside", "ellipse(calc(100% - 20px) calc(80% - 10px) at calc(100% - 20px) calc(100% / 4))", "ellipse(calc(100% - 20px) calc(80% - 10px) at calc(100% - 20px) calc(25%))");
+
+test_valid_value("shape-outside", "ellipse(10px closest-side at top right)", "ellipse(10px closest-side at 100% 0%)");
+test_valid_value("shape-outside", "ellipse(farthest-side 20px at center top)", "ellipse(farthest-side 20px at 50% 0%)");
+test_valid_value("shape-outside", "ellipse(farthest-side farthest-side at top right)", "ellipse(farthest-side farthest-side at 100% 0%)");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-shapes/shape-functions/inset-function-computed.html b/tests/wpt/tests/css/css-shapes/shape-functions/inset-function-computed.html
new file mode 100644
index 00000000000..4712c591cc2
--- /dev/null
+++ b/tests/wpt/tests/css/css-shapes/shape-functions/inset-function-computed.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Shapes Module Level 1: the computed value of the inset() function</title>
+<link rel="help" href="https://drafts.csswg.org/css-shapes-1/#funcdef-basic-shape-inset">
+<meta name="assert" content="Tests parsing of the inset() function">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/computed-testcommon.js"></script>
+</head>
+<body>
+<div id="target"></div>
+<script>
+test_computed_value("shape-outside", "inset(100%)");
+test_computed_value("shape-outside", "inset(0 1px)", "inset(0px 1px)");
+test_computed_value("shape-outside", "inset(0px 1px 2%)");
+test_computed_value("shape-outside", "inset(-20px -20px 2%)");
+test_computed_value("shape-outside", "inset(0px 1px 2% 3em)", "inset(0px 1px 2% 48px)");
+test_computed_value("shape-outside", "inset(0px calc(100% - 20px) 2% 3em)", "inset(0px calc(100% - 20px) 2% 48px)");
+test_computed_value("shape-outside", "inset(0px round 100%)");
+test_computed_value("shape-outside", "inset(0px round 0 1px)", "inset(0px round 0px 1px)");
+test_computed_value("shape-outside", "inset(0px round 0px 1px 2%)");
+test_computed_value("shape-outside", "inset(0px round 0px 1px 2% 3em)", "inset(0px round 0px 1px 2% 48px)");
+test_computed_value("shape-outside", "inset(10px round 20% / 0px 1px 2% 3em)", "inset(10px round 20% / 0px 1px 2% 48px)");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-shapes/shape-functions/inset-function-invalid.html b/tests/wpt/tests/css/css-shapes/shape-functions/inset-function-invalid.html
new file mode 100644
index 00000000000..fb1fd998e3c
--- /dev/null
+++ b/tests/wpt/tests/css/css-shapes/shape-functions/inset-function-invalid.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Shapes Module Level 1: parsing the inset() function</title>
+<link rel="help" href="https://drafts.csswg.org/css-shapes-1/#funcdef-basic-shape-inset">
+<meta name="assert" content="Tests parsing of the inset() function">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_invalid_value("shape-outside", "inset(0px, 1px)");
+test_invalid_value("shape-outside", "inset(0px round 0px, 1px)");
+test_invalid_value("shape-outside", "inset()");
+test_invalid_value("shape-outside", "inset(123)");
+test_invalid_value("shape-outside", "inset(1% 2% 3% 4% 5%)");
+test_invalid_value("shape-outside", "inset(round 0)");
+test_invalid_value("shape-outside", "inset(0px round)");
+test_invalid_value("shape-outside", "inset(0px round 123)");
+test_invalid_value("shape-outside", "inset(0px round 1% 2% 3% 4% 5%)");
+test_invalid_value("shape-outside", "inset(0px round / 1px)");
+test_invalid_value("shape-outside", "inset(10px round -20px)");
+test_invalid_value("shape-outside", "inset(30% round -40%)");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-shapes/shape-functions/inset-function-valid.html b/tests/wpt/tests/css/css-shapes/shape-functions/inset-function-valid.html
new file mode 100644
index 00000000000..25fc426d2c8
--- /dev/null
+++ b/tests/wpt/tests/css/css-shapes/shape-functions/inset-function-valid.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Shapes Module Level 1: parsing the inset() function</title>
+<link rel="help" href="https://drafts.csswg.org/css-shapes-1/#funcdef-basic-shape-inset">
+<meta name="assert" content="Tests parsing of the inset() function">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_valid_value("shape-outside", "inset(100%)");
+test_valid_value("shape-outside", "inset(0 1px)", "inset(0px 1px)");
+test_valid_value("shape-outside", "inset(0px 1px 2%)");
+test_valid_value("shape-outside", "inset(-20px -20px 2%)");
+test_valid_value("shape-outside", "inset(0px 1px 2% 3em)");
+test_valid_value("shape-outside", "inset(0px calc(100% - 20px) 2% 3em)");
+test_valid_value("shape-outside", "inset(0px round 100%)");
+test_valid_value("shape-outside", "inset(0px round 0 1px)", "inset(0px round 0px 1px)");
+test_valid_value("shape-outside", "inset(0px round 0px 1px 2%)");
+test_valid_value("shape-outside", "inset(0px round 0px 1px 2% 3em)");
+test_valid_value("shape-outside", "inset(10px round 20% / 0px 1px 2% 3em)");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-shapes/shape-functions/path-function-computed.html b/tests/wpt/tests/css/css-shapes/shape-functions/path-function-computed.html
new file mode 100644
index 00000000000..e6ed3734ce4
--- /dev/null
+++ b/tests/wpt/tests/css/css-shapes/shape-functions/path-function-computed.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Shapes Module Level 1: the computed value of the path() function</title>
+<link rel="help" href="https://drafts.csswg.org/css-shapes-1/#funcdef-basic-shape-path">
+<meta name="assert" content="Tests parsing of the path() function">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/computed-testcommon.js"></script>
+</head>
+<body>
+<div id="target"></div>
+<script>
+test_computed_value("clip-path", "path(nonzero, 'M10,10h80v80h-80zM25,25h50v50h-50z')", "path(\"M 10 10 h 80 v 80 h -80 Z M 25 25 h 50 v 50 h -50 Z\")");
+test_computed_value("clip-path", "path(evenodd, 'M10,10h80v80h-80zM25,25h50v50h-50z')", "path(evenodd, \"M 10 10 h 80 v 80 h -80 Z M 25 25 h 50 v 50 h -50 Z\")");
+test_computed_value("clip-path", "path(evenodd, 'M10,10h80v80h-80zM25,25h50v50h-50')", "path(evenodd, \"M 10 10 h 80 v 80 h -80 Z M 25 25 h 50 v 50 h -50\")");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-shapes/shape-functions/path-function-invalid.html b/tests/wpt/tests/css/css-shapes/shape-functions/path-function-invalid.html
new file mode 100644
index 00000000000..8b9bbcfa127
--- /dev/null
+++ b/tests/wpt/tests/css/css-shapes/shape-functions/path-function-invalid.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Shapes Module Level 1: parsing the path() function</title>
+<link rel="help" href="https://drafts.csswg.org/css-shapes-1/#funcdef-basic-shape-path">
+<meta name="assert" content="Tests parsing of the path() function">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_invalid_value("clip-path", "path(evenodd, 'not-a-path')");
+test_invalid_value("clip-path", "path(badfillrule, 'M10,10')");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-shapes/shape-functions/path-function-valid.html b/tests/wpt/tests/css/css-shapes/shape-functions/path-function-valid.html
new file mode 100644
index 00000000000..4a576a0de25
--- /dev/null
+++ b/tests/wpt/tests/css/css-shapes/shape-functions/path-function-valid.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Shapes Module Level 1: parsing the path() function</title>
+<link rel="help" href="https://drafts.csswg.org/css-shapes-1/#funcdef-basic-shape-path">
+<meta name="assert" content="Tests parsing of the path() function">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_valid_value("clip-path", "path(evenodd, 'M10,10h80v80h-80zM25,25h50v50h-50z')", "path(evenodd, \"M 10 10 h 80 v 80 h -80 Z M 25 25 h 50 v 50 h -50 Z\")");
+test_valid_value("clip-path", "path(evenodd, 'M10,10h80v80h-80zM25,25h50v50h-50')", "path(evenodd, \"M 10 10 h 80 v 80 h -80 Z M 25 25 h 50 v 50 h -50\")");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-shapes/shape-functions/polygon-function-computed.html b/tests/wpt/tests/css/css-shapes/shape-functions/polygon-function-computed.html
new file mode 100644
index 00000000000..beb9714e652
--- /dev/null
+++ b/tests/wpt/tests/css/css-shapes/shape-functions/polygon-function-computed.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Shapes Module Level 1: parsing the polygon() function</title>
+<link rel="help" href="https://drafts.csswg.org/css-shapes-1/#funcdef-basic-shape-polygon">
+<meta name="assert" content="Tests parsing of the polygon() function">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/computed-testcommon.js"></script>
+</head>
+<body>
+<div id="target"></div>
+<script>
+test_computed_value("shape-outside", "polygon(1% 2%)");
+test_computed_value("shape-outside", "polygon(calc(100% - 20px) calc(30% + 10px))");
+test_computed_value("shape-outside", "polygon(nonzero, 1px 2px, 3em 4em)", "polygon(1px 2px, 48px 64px)");
+test_computed_value("shape-outside", "polygon(evenodd, 1px 2px, 3em 4em, 6pt 6%)", "polygon(evenodd, 1px 2px, 48px 64px, 8px 6%)");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-shapes/shape-functions/polygon-function-invalid.html b/tests/wpt/tests/css/css-shapes/shape-functions/polygon-function-invalid.html
new file mode 100644
index 00000000000..c37fd9e748c
--- /dev/null
+++ b/tests/wpt/tests/css/css-shapes/shape-functions/polygon-function-invalid.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Shapes Module Level 1: parsing the polygon() function</title>
+<link rel="help" href="https://drafts.csswg.org/css-shapes-1/#funcdef-basic-shape-polygon">
+<meta name="assert" content="Tests parsing of the polygon() function">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_invalid_value("shape-outside", "polygon(100px)");
+test_invalid_value("shape-outside", "polygon(1%)");
+test_invalid_value("shape-outside", "polygon(evenodd, 1px, 2px, 3em 4em, 5pt 6%)");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-shapes/shape-functions/polygon-function-valid.html b/tests/wpt/tests/css/css-shapes/shape-functions/polygon-function-valid.html
new file mode 100644
index 00000000000..45b0c1eda1c
--- /dev/null
+++ b/tests/wpt/tests/css/css-shapes/shape-functions/polygon-function-valid.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Shapes Module Level 1: parsing the polygon() function</title>
+<link rel="help" href="https://drafts.csswg.org/css-shapes-1/#funcdef-basic-shape-polygon">
+<meta name="assert" content="Tests parsing of the polygon() function">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_valid_value("shape-outside", "polygon(1% 2%)");
+test_valid_value("shape-outside", "polygon(calc(100% - 20px) calc(30% + 10px))");
+test_valid_value("shape-outside", "polygon(nonzero, 1px 2px, 3em 4em)", "polygon(1px 2px, 3em 4em)");
+test_valid_value("shape-outside", "polygon(evenodd, 1px 2px, 3em 4em, 5pt 6%)");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-shapes/shape-functions/rect-function-computed.html b/tests/wpt/tests/css/css-shapes/shape-functions/rect-function-computed.html
new file mode 100644
index 00000000000..bf43cdce68d
--- /dev/null
+++ b/tests/wpt/tests/css/css-shapes/shape-functions/rect-function-computed.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Shapes Module Level 1: the computed value of the rect() function</title>
+<link rel="help" href="https://drafts.csswg.org/css-shapes-1/#funcdef-basic-shape-rect">
+<meta name="assert" content="Tests parsing of the inset() function">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/computed-testcommon.js"></script>
+</head>
+<body>
+<div id="target"></div>
+<script>
+test_computed_value("clip-path", "rect(0 0 0 0)", "inset(0px 100% 100% 0px)");
+test_computed_value("clip-path", "rect(10px auto 20px 30px)", "inset(10px 0% calc(100% - 20px) 30px)");
+test_computed_value("clip-path", "rect(auto auto auto auto)", "inset(0%)");
+test_computed_value("clip-path", "rect(10% 20% 15% 12%)", "inset(10% 80% 85% 12%)");
+test_computed_value("clip-path", "rect(10% 95% 97% 12%)", "inset(10% 5% 3% 12%)");
+test_computed_value("clip-path", "rect(-10% -20% -15% -12%)", "inset(-10% 120% 115% -12%)");
+test_computed_value("clip-path", "rect(10px 12% 20px 30px round 100%)", "inset(10px 88% calc(100% - 20px) 30px round 100%)");
+test_computed_value("clip-path", "rect(10px 12% 20px 30px round 0 1px)", "inset(10px 88% calc(100% - 20px) 30px round 0px 1px)");
+test_computed_value("clip-path", "rect(10px 12% 20px 30px round 0px 1px 2%)", "inset(10px 88% calc(100% - 20px) 30px round 0px 1px 2%)");
+test_computed_value("clip-path", "rect(10px 12% 20px 30px round 0px 1px 2% 3em)", "inset(10px 88% calc(100% - 20px) 30px round 0px 1px 2% 48px)");
+test_computed_value("clip-path", "rect(10px 12% 20px 30px round 20% / 0px 1px 2% 3em)", "inset(10px 88% calc(100% - 20px) 30px round 20% / 0px 1px 2% 48px)");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-shapes/shape-functions/rect-function-invalid.html b/tests/wpt/tests/css/css-shapes/shape-functions/rect-function-invalid.html
new file mode 100644
index 00000000000..528502b904d
--- /dev/null
+++ b/tests/wpt/tests/css/css-shapes/shape-functions/rect-function-invalid.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Shapes Module Level 1: parsing the rect() function</title>
+<link rel="help" href="https://drafts.csswg.org/css-shapes-1/#funcdef-basic-shape-rect">
+<meta name="assert" content="Tests parsing of the inset() function">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_invalid_value("clip-path", "rect()");
+test_invalid_value("clip-path", "rect(0px)");
+test_invalid_value("clip-path", "rect(0px 1px)");
+test_invalid_value("clip-path", "rect(0px 1px 2px)");
+test_invalid_value("clip-path", "rect(0px, 1px, 2px, 3px)");
+test_invalid_value("clip-path", "rect(0, 1, 2, 3)");
+test_invalid_value("clip-path", "rect(1% 2% 3% 4% 5%)");
+test_invalid_value("clip-path", "rect(round 0)");
+test_invalid_value("clip-path", "rect(10px auto 20px 30px round)");
+test_invalid_value("clip-path", "rect(10px auto 20px 30px round 123)");
+test_invalid_value("clip-path", "rect(10px auto 20px 30px round 1% 2% 3% 4% 5%)");
+test_invalid_value("clip-path", "rect(10px auto 20px 30px round / 1px)");
+test_invalid_value("clip-path", "rect(10px auto 20px 30px round -20px)");
+test_invalid_value("clip-path", "rect(10px auto 20px 30px round -40%)");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-shapes/shape-functions/rect-function-valid.html b/tests/wpt/tests/css/css-shapes/shape-functions/rect-function-valid.html
new file mode 100644
index 00000000000..6489f4e82ad
--- /dev/null
+++ b/tests/wpt/tests/css/css-shapes/shape-functions/rect-function-valid.html
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Shapes Module Level 1: parsing the rect() function</title>
+<link rel="help" href="https://drafts.csswg.org/css-shapes-1/#funcdef-basic-shape-rect">
+<meta name="assert" content="Tests parsing of the inset() function">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_valid_value("clip-path", "rect(0 0 0 0)", "rect(0px 0px 0px 0px)");
+test_valid_value("clip-path", "rect(10px auto 20px 30px)");
+test_valid_value("clip-path", "rect(auto auto auto auto)");
+test_valid_value("clip-path", "rect(10% 20% 15% 12%)");
+test_valid_value("clip-path", "rect(10% 95% 97% 12%)");
+test_valid_value("clip-path", "rect(-10% -20% -15% -12%)");
+test_valid_value("clip-path", "rect(10px 12% 20px 30px round 100%)");
+test_valid_value("clip-path", "rect(10px 12% 20px 30px round 0 1px)", "rect(10px 12% 20px 30px round 0px 1px)");
+test_valid_value("clip-path", "rect(10px 12% 20px 30px round 0px 1px 2%)");
+test_valid_value("clip-path", "rect(10px 12% 20px 30px round 0px 1px 2% 3em)");
+test_valid_value("clip-path", "rect(10px 12% 20px 30px round 20% / 0px 1px 2% 3em)");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-shapes/shape-functions/xywh-function-computed.html b/tests/wpt/tests/css/css-shapes/shape-functions/xywh-function-computed.html
new file mode 100644
index 00000000000..117e7a40cfe
--- /dev/null
+++ b/tests/wpt/tests/css/css-shapes/shape-functions/xywh-function-computed.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Shapes Module Level 1: the computed value of the xywh() function</title>
+<link rel="help" href="https://drafts.csswg.org/css-shapes-1/#funcdef-basic-shape-xywh">
+<meta name="assert" content="Tests parsing of the xywh() function">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/computed-testcommon.js"></script>
+</head>
+<body>
+<div id="target"></div>
+<script>
+test_computed_value("shape-outside", "xywh(0px 1px 2% 3em)", "inset(1px 98% calc(100% - 49px) 0px)");
+test_computed_value("shape-outside", "xywh(0px calc(100% - 20px) 2% 3em)", "inset(calc(100% - 20px) 98% calc(0% - 28px) 0px)");
+test_computed_value("shape-outside", "xywh(10px 20px 30px 25px round 100%)", "inset(20px calc(100% - 40px) calc(100% - 45px) 10px round 100%)");
+test_computed_value("shape-outside", "xywh(10px 20px 30px 25px round 0 1px)", "inset(20px calc(100% - 40px) calc(100% - 45px) 10px round 0px 1px)");
+
+test_computed_value("shape-outside", "xywh(10px 20px 30px 25px round 0px 1px 2%)", "inset(20px calc(100% - 40px) calc(100% - 45px) 10px round 0px 1px 2%)");
+test_computed_value("shape-outside", "xywh(10px 20px 30px 25px round 0px 1px 2% 3em)", "inset(20px calc(100% - 40px) calc(100% - 45px) 10px round 0px 1px 2% 48px)");
+test_computed_value("shape-outside", "xywh(10px 20px 30px 25px round 20% / 0px 1px 2% 3em)", "inset(20px calc(100% - 40px) calc(100% - 45px) 10px round 20% / 0px 1px 2% 48px)");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-shapes/shape-functions/xywh-function-invalid.html b/tests/wpt/tests/css/css-shapes/shape-functions/xywh-function-invalid.html
new file mode 100644
index 00000000000..b2b1677fb34
--- /dev/null
+++ b/tests/wpt/tests/css/css-shapes/shape-functions/xywh-function-invalid.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Shapes Module Level 1: parsing the xywh() function</title>
+<link rel="help" href="https://drafts.csswg.org/css-shapes-1/#funcdef-basic-shape-xywh">
+<meta name="assert" content="Tests parsing of the xywh() function">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_invalid_value("shape-outside", "xywh(0px 1px -2% 3em)");
+test_invalid_value("shape-outside", "xywh(0px 1px 2% -3em)");
+test_invalid_value("shape-outside", "xywh(10px 20px)");
+test_invalid_value("shape-outside", "xywh(10px 20px 30px)");
+test_invalid_value("shape-outside", "xywh(10px 20px, 30px 25px)");
+test_invalid_value("shape-outside", "xywh(10px 20px 30px 25px round 0px -1px 2%)");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-shapes/shape-functions/xywh-function-valid.html b/tests/wpt/tests/css/css-shapes/shape-functions/xywh-function-valid.html
new file mode 100644
index 00000000000..bfb5a9cae3d
--- /dev/null
+++ b/tests/wpt/tests/css/css-shapes/shape-functions/xywh-function-valid.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Shapes Module Level 1: parsing the xywh() function</title>
+<link rel="help" href="https://drafts.csswg.org/css-shapes-1/#funcdef-basic-shape-xywh">
+<meta name="assert" content="Tests parsing of the xywh() function">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_valid_value("shape-outside", "xywh(0px 1px 2% 3em)");
+test_valid_value("shape-outside", "xywh(0px calc(100% - 20px) 2% 3em)");
+test_valid_value("shape-outside", "xywh(10px 20px 30px 25px round 100%)");
+test_valid_value("shape-outside", "xywh(10px 20px 30px 25px round 0 1px)", "xywh(10px 20px 30px 25px round 0px 1px)");
+test_valid_value("shape-outside", "xywh(10px 20px 30px 25px round 0px 1px 2%)");
+test_valid_value("shape-outside", "xywh(10px 20px 30px 25px round 0px 1px 2% 3em)");
+test_valid_value("shape-outside", "xywh(10px 20px 30px 25px round 20% / 0px 1px 2% 3em)");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-sizing/block-size-with-min-or-max-content-2.html b/tests/wpt/tests/css/css-sizing/block-size-with-min-or-max-content-2.html
new file mode 100644
index 00000000000..cd649b86df1
--- /dev/null
+++ b/tests/wpt/tests/css/css-sizing/block-size-with-min-or-max-content-2.html
@@ -0,0 +1,7 @@
+<!DOCTYPE html>
+<link rel="match" href="../reference/ref-filled-green-100px-square-only.html">
+<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/3973">
+<p>Test passes if there is a filled green square.</p>
+<div style="background: green; width: 100px; min-height: max-content; height: 0px;">
+ <div style="height: 100px;"></div>
+</div>
diff --git a/tests/wpt/tests/css/css-sizing/block-size-with-min-or-max-content-3.html b/tests/wpt/tests/css/css-sizing/block-size-with-min-or-max-content-3.html
new file mode 100644
index 00000000000..0d765ca27d1
--- /dev/null
+++ b/tests/wpt/tests/css/css-sizing/block-size-with-min-or-max-content-3.html
@@ -0,0 +1,7 @@
+<!DOCTYPE html>
+<link rel="match" href="../reference/ref-filled-green-100px-square-only.html">
+<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/3973">
+<p>Test passes if there is a filled green square.</p>
+<div style="background: green; width: 100px;max-height: max-content; height: 200px;">
+ <div style="height: 100px;"></div>
+</div>
diff --git a/tests/wpt/tests/css/css-sizing/block-size-with-min-or-max-content-4.html b/tests/wpt/tests/css/css-sizing/block-size-with-min-or-max-content-4.html
new file mode 100644
index 00000000000..95a60ec85fa
--- /dev/null
+++ b/tests/wpt/tests/css/css-sizing/block-size-with-min-or-max-content-4.html
@@ -0,0 +1,5 @@
+<!DOCTYPE html>
+<link rel="match" href="../reference/ref-filled-green-100px-square-only.html">
+<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/3973">
+<p>Test passes if there is a filled green square.</p>
+<div style="background: green; display: grid; grid-template-rows: 100px; width: 100px; min-height: max-content; height: 0px;"></div>
diff --git a/tests/wpt/tests/css/css-sizing/block-size-with-min-or-max-content-5.html b/tests/wpt/tests/css/css-sizing/block-size-with-min-or-max-content-5.html
new file mode 100644
index 00000000000..749ccf59bfc
--- /dev/null
+++ b/tests/wpt/tests/css/css-sizing/block-size-with-min-or-max-content-5.html
@@ -0,0 +1,5 @@
+<!DOCTYPE html>
+<link rel="match" href="../reference/ref-filled-green-100px-square-only.html">
+<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/3973">
+<p>Test passes if there is a filled green square.</p>
+<div style="background: green; display: grid; grid-template-rows: 100px; width: 100px;max-height: max-content; height: 200px;"></div>
diff --git a/tests/wpt/tests/css/css-sizing/block-size-with-min-or-max-content-6.html b/tests/wpt/tests/css/css-sizing/block-size-with-min-or-max-content-6.html
new file mode 100644
index 00000000000..e05962cb7a6
--- /dev/null
+++ b/tests/wpt/tests/css/css-sizing/block-size-with-min-or-max-content-6.html
@@ -0,0 +1,7 @@
+<!DOCTYPE html>
+<link rel="match" href="../reference/ref-filled-green-100px-square-only.html">
+<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/3973">
+<p>Test passes if there is a filled green square.</p>
+<div style="background: green; position: absolute; width: 0px; min-width: max-content; min-height: max-content; height: 0px;">
+ <div style="width: 100px; height: 100px;"></div>
+</div>
diff --git a/tests/wpt/tests/css/css-sizing/block-size-with-min-or-max-content-7.html b/tests/wpt/tests/css/css-sizing/block-size-with-min-or-max-content-7.html
new file mode 100644
index 00000000000..11517c23ee7
--- /dev/null
+++ b/tests/wpt/tests/css/css-sizing/block-size-with-min-or-max-content-7.html
@@ -0,0 +1,7 @@
+<!DOCTYPE html>
+<link rel="match" href="../reference/ref-filled-green-100px-square-only.html">
+<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/3973">
+<p>Test passes if there is a filled green square.</p>
+<div style="background: green; position: absolute; max-width: max-content; width: 200px; max-height: max-content; height: 200px;">
+ <div style="width: 100px; height: 100px;"></div>
+</div>
diff --git a/tests/wpt/tests/css/css-sizing/hori-block-size-small-or-larger-than-container-with-min-or-max-content-1-ref.html b/tests/wpt/tests/css/css-sizing/hori-block-size-small-or-larger-than-container-with-min-or-max-content-1-ref.html
index 263a0869aed..523d80324ee 100644
--- a/tests/wpt/tests/css/css-sizing/hori-block-size-small-or-larger-than-container-with-min-or-max-content-1-ref.html
+++ b/tests/wpt/tests/css/css-sizing/hori-block-size-small-or-larger-than-container-with-min-or-max-content-1-ref.html
@@ -30,14 +30,6 @@
font-size: 10px;
line-height: 15px;
}
-
- .too-small {
- height: 10px;
- }
-
- .too-big {
- height: 120px;
- }
</style>
</head>
<body>
diff --git a/tests/wpt/tests/css/css-sizing/intrinsic-percent-non-replaced-002.html b/tests/wpt/tests/css/css-sizing/intrinsic-percent-non-replaced-002.html
index 748aa5f8f71..fd0490a68a9 100644
--- a/tests/wpt/tests/css/css-sizing/intrinsic-percent-non-replaced-002.html
+++ b/tests/wpt/tests/css/css-sizing/intrinsic-percent-non-replaced-002.html
@@ -1,6 +1,7 @@
<!DOCTYPE html>
<title>Percentages of max-width on non-replaced blocks are ignored for intrinsic sizing and resolved afterwards</title>
<link rel="help" href="https://www.w3.org/TR/css-sizing-3/#intrinsic-contribution">
+<link rel="match" href="intrinsic-percent-non-replaced-002-ref.html">
<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<style>
diff --git a/tests/wpt/tests/css/css-sizing/replaced-max-height-min-content.html b/tests/wpt/tests/css/css-sizing/replaced-max-height-min-content.html
new file mode 100644
index 00000000000..189a979be8b
--- /dev/null
+++ b/tests/wpt/tests/css/css-sizing/replaced-max-height-min-content.html
@@ -0,0 +1,5 @@
+<!DOCTYPE html>
+<link rel="match" href="../reference/ref-filled-green-100px-square-only.html">
+<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/3973">
+<p>Test passes if there is a filled green square.</p>
+<canvas width="10" height="10" style="width: 100px; height: 1000px; max-height: min-content; background: green;"></canvas>
diff --git a/tests/wpt/tests/css/css-sizing/replaced-max-width-min-content.html b/tests/wpt/tests/css/css-sizing/replaced-max-width-min-content.html
new file mode 100644
index 00000000000..41074632422
--- /dev/null
+++ b/tests/wpt/tests/css/css-sizing/replaced-max-width-min-content.html
@@ -0,0 +1,5 @@
+<!DOCTYPE html>
+<link rel="match" href="../reference/ref-filled-green-100px-square-only.html">
+<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/3973">
+<p>Test passes if there is a filled green square.</p>
+<canvas width="10" height="10" style="width: 1000px; height: 100px; max-width: min-content; background: green;"></canvas>
diff --git a/tests/wpt/tests/css/css-sizing/replaced-min-height-min-content.html b/tests/wpt/tests/css/css-sizing/replaced-min-height-min-content.html
new file mode 100644
index 00000000000..6e693810733
--- /dev/null
+++ b/tests/wpt/tests/css/css-sizing/replaced-min-height-min-content.html
@@ -0,0 +1,5 @@
+<!DOCTYPE html>
+<link rel="match" href="../reference/ref-filled-green-100px-square-only.html">
+<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/3973">
+<p>Test passes if there is a filled green square.</p>
+<canvas width="10" height="10" style="width: 100px; height: 10px; min-height: min-content; background: green;"></canvas>
diff --git a/tests/wpt/tests/css/css-sizing/replaced-min-width-min-content.html b/tests/wpt/tests/css/css-sizing/replaced-min-width-min-content.html
new file mode 100644
index 00000000000..bb77166def1
--- /dev/null
+++ b/tests/wpt/tests/css/css-sizing/replaced-min-width-min-content.html
@@ -0,0 +1,5 @@
+<!DOCTYPE html>
+<link rel="match" href="../reference/ref-filled-green-100px-square-only.html">
+<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/3973">
+<p>Test passes if there is a filled green square.</p>
+<canvas width="10" height="10" style="width: 10px; height: 100px; min-width: min-content; background: green;"></canvas>
diff --git a/tests/wpt/tests/css/css-sizing/svg-no-ar-max-height-min-content.html b/tests/wpt/tests/css/css-sizing/svg-no-ar-max-height-min-content.html
new file mode 100644
index 00000000000..ae3f69e72bd
--- /dev/null
+++ b/tests/wpt/tests/css/css-sizing/svg-no-ar-max-height-min-content.html
@@ -0,0 +1,5 @@
+<!DOCTYPE html>
+<link rel="match" href="../reference/ref-filled-green-100px-square-only.html">
+<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/3973">
+<p>Test passes if there is a filled green square.</p>
+<svg width="0" height="100" style="width: 100px; height: 1000px; max-height: min-content; background: green;"></svg>
diff --git a/tests/wpt/tests/css/css-sizing/svg-no-ar-min-height-min-content.html b/tests/wpt/tests/css/css-sizing/svg-no-ar-min-height-min-content.html
new file mode 100644
index 00000000000..6848e9375be
--- /dev/null
+++ b/tests/wpt/tests/css/css-sizing/svg-no-ar-min-height-min-content.html
@@ -0,0 +1,5 @@
+<!DOCTYPE html>
+<link rel="match" href="../reference/ref-filled-green-100px-square-only.html">
+<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/3973">
+<p>Test passes if there is a filled green square.</p>
+<svg width="0" height="100" style="width: 100px; height: 10px; min-height: min-content; background: green;"></svg>
diff --git a/tests/wpt/tests/css/css-sizing/vert-block-size-small-or-larger-than-container-with-min-or-max-content-1-ref.html b/tests/wpt/tests/css/css-sizing/vert-block-size-small-or-larger-than-container-with-min-or-max-content-1-ref.html
index 0a5de8da146..e137920f131 100644
--- a/tests/wpt/tests/css/css-sizing/vert-block-size-small-or-larger-than-container-with-min-or-max-content-1-ref.html
+++ b/tests/wpt/tests/css/css-sizing/vert-block-size-small-or-larger-than-container-with-min-or-max-content-1-ref.html
@@ -29,14 +29,6 @@
font-size: 10px;
line-height: 15px;
}
-
- .too-small {
- width: 10px;
- }
-
- .too-big {
- width: 120px;
- }
</style>
</head>
<body>
diff --git a/tests/wpt/tests/css/css-tables/remove-caption-from-anon-table-ref.html b/tests/wpt/tests/css/css-tables/remove-caption-from-anon-table-ref.html
new file mode 100644
index 00000000000..41af5464c78
--- /dev/null
+++ b/tests/wpt/tests/css/css-tables/remove-caption-from-anon-table-ref.html
@@ -0,0 +1,12 @@
+<!doctype html>
+<meta charset="utf-8">
+<table style="display: block">
+ <tbody>
+ <tr>
+ <th>Header</th>
+ </tr>
+ <tr>
+ <td>Some long long long content</td>
+ </tr>
+ </tbody>
+</table>
diff --git a/tests/wpt/tests/css/css-tables/remove-caption-from-anon-table.html b/tests/wpt/tests/css/css-tables/remove-caption-from-anon-table.html
new file mode 100644
index 00000000000..ea71c54327c
--- /dev/null
+++ b/tests/wpt/tests/css/css-tables/remove-caption-from-anon-table.html
@@ -0,0 +1,26 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>Removing the last caption from an anonymous table</title>
+<link rel="help" href="https://drafts.csswg.org/css-tables/">
+<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1907789">
+<link rel="author" href="mailto:emilio@crisal.io" title="Emilio Cobos Álvarez">
+<link rel="author" href="https://mozilla.org" title="Mozilla">
+<link rel="match" href="remove-caption-from-anon-table-ref.html">
+<table style="display: block">
+ <caption>Some caption</caption>
+ <tbody>
+ <tr>
+ <th>Header</th>
+ </tr>
+ <tr>
+ <td>Some long long long content</td>
+ </tr>
+ </tbody>
+</table>
+<script>
+onload = function() {
+ let caption = document.querySelector("caption");
+ caption.getBoundingClientRect();
+ caption.remove();
+}
+</script>
diff --git a/tests/wpt/tests/css/css-tables/remove-colgroup-from-anon-table.html b/tests/wpt/tests/css/css-tables/remove-colgroup-from-anon-table.html
new file mode 100644
index 00000000000..cea6524ddfc
--- /dev/null
+++ b/tests/wpt/tests/css/css-tables/remove-colgroup-from-anon-table.html
@@ -0,0 +1,28 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>Removing the last col group from an anonymous table</title>
+<link rel="help" href="https://drafts.csswg.org/css-tables/">
+<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1907789">
+<link rel="author" href="mailto:emilio@crisal.io" title="Emilio Cobos Álvarez">
+<link rel="author" href="https://mozilla.org" title="Mozilla">
+<link rel="match" href="remove-caption-from-anon-table-ref.html">
+<table style="display: block">
+ <colgroup>
+ <col></col>
+ </colgroup>
+ <tbody>
+ <tr>
+ <th>Header</th>
+ </tr>
+ <tr>
+ <td>Some long long long content</td>
+ </tr>
+ </tbody>
+</table>
+<script>
+onload = function() {
+ let colgroup = document.querySelector("colgroup");
+ colgroup.getBoundingClientRect();
+ colgroup.remove();
+}
+</script>
diff --git a/tests/wpt/tests/css/css-text-decor/invalidation/text-decoration-thickness-ref.html b/tests/wpt/tests/css/css-text-decor/invalidation/text-decoration-thickness-ref.html
index f0276959fbd..d29edee1cf2 100644
--- a/tests/wpt/tests/css/css-text-decor/invalidation/text-decoration-thickness-ref.html
+++ b/tests/wpt/tests/css/css-text-decor/invalidation/text-decoration-thickness-ref.html
@@ -8,7 +8,8 @@
text-decoration-thickness: 3px;
}
</style>
+ <p>The link below should increase its underline thickness when hovered:</p>
<div style="font-size: 28px;">
- <a href="#" id="link">Hover over this link, and check if the text-decoration-thickness increases.</a>
+ <a href="#" id="link">Hover me</a>
</div>
</html>
diff --git a/tests/wpt/tests/css/css-text-decor/invalidation/text-decoration-thickness.html b/tests/wpt/tests/css/css-text-decor/invalidation/text-decoration-thickness.html
index 93fe9a61157..66080a1301d 100644
--- a/tests/wpt/tests/css/css-text-decor/invalidation/text-decoration-thickness.html
+++ b/tests/wpt/tests/css/css-text-decor/invalidation/text-decoration-thickness.html
@@ -15,8 +15,9 @@
text-decoration-thickness: 3px;
}
</style>
+ <p>The link below should increase its underline thickness when hovered:</p>
<div style="font-size: 28px;">
- <a href="#" id="link">Hover over this link, and check if the text-decoration-thickness increases.</a>
+ <a href="#" id="link">Hover me</a>
</div>
<script src="/resources/testdriver.js"></script>
<script src="/resources/testdriver-actions.js"></script>
diff --git a/tests/wpt/tests/css/css-text-decor/reference/text-decoration-underline-position-vertical-ja-ref.html b/tests/wpt/tests/css/css-text-decor/reference/text-decoration-underline-position-vertical-ja-ref.html
deleted file mode 100644
index 303655abdd2..00000000000
--- a/tests/wpt/tests/css/css-text-decor/reference/text-decoration-underline-position-vertical-ja-ref.html
+++ /dev/null
@@ -1,16 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<head>
- <meta charset="utf-8">
- <style>
- body { writing-mode: vertical-rl; }
- .underline { text-decoration: underline; }
- .overline { text-decoration: overline; }
- </style>
-</head>
-<body lang="en">
- <div>In vertical writing mode with lang=ja, default overline will be same as underline (lang=en). However, when we set text-underline-position to "under left" it should be shifted.</div>
- <div class="underline">サンプル</div>
- <div class="underline">サンプル</div>
-</body>
-</html>
diff --git a/tests/wpt/tests/css/css-text-decor/reference/text-decoration-underline-position-horizontal-ref.html b/tests/wpt/tests/css/css-text-decor/reference/text-underline-position-horizontal-ref.html
index be9155bbcf8..be9155bbcf8 100644
--- a/tests/wpt/tests/css/css-text-decor/reference/text-decoration-underline-position-horizontal-ref.html
+++ b/tests/wpt/tests/css/css-text-decor/reference/text-underline-position-horizontal-ref.html
diff --git a/tests/wpt/tests/css/css-text-decor/reference/text-underline-position-vertical-ja-ref.html b/tests/wpt/tests/css/css-text-decor/reference/text-underline-position-vertical-ja-ref.html
new file mode 100644
index 00000000000..3f594c6c0fc
--- /dev/null
+++ b/tests/wpt/tests/css/css-text-decor/reference/text-underline-position-vertical-ja-ref.html
@@ -0,0 +1,20 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+ <meta charset="utf-8">
+ <style>
+ @font-face {
+ font-family: halt-font;
+ src: url('/fonts/noto/cjk/NotoSansCJKjp-Regular-subset-halt-min.otf');
+ }
+ body { writing-mode: vertical-rl; font-family: Arial; }
+ .underline { text-decoration: underline; font-family: halt-font; font-language-override: "JAN"; }
+ .overline { text-decoration: overline; font-family: halt-font; font-language-override: "JAN"; }
+ </style>
+</head>
+<body lang="en">
+ <div>In vertical writing mode with lang=ja, default overline will be same as underline (lang=en). However, when we set text-underline-position to "under left" it should be shifted.</div>
+ <div class="underline">&#x56fd;&#x56fd;&#x56fd;&#x56fd;</div>
+ <div class="underline">&#x56fd;&#x56fd;&#x56fd;&#x56fd;</div>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-text-decor/reference/text-decoration-underline-position-vertical-ref.html b/tests/wpt/tests/css/css-text-decor/reference/text-underline-position-vertical-ref.html
index 8c0bee67203..8c0bee67203 100644
--- a/tests/wpt/tests/css/css-text-decor/reference/text-decoration-underline-position-vertical-ref.html
+++ b/tests/wpt/tests/css/css-text-decor/reference/text-underline-position-vertical-ref.html
diff --git a/tests/wpt/tests/css/css-text-decor/text-decoration-underline-position-horizontal.html b/tests/wpt/tests/css/css-text-decor/text-decoration-underline-position-horizontal.html
deleted file mode 100644
index e4d495e722e..00000000000
--- a/tests/wpt/tests/css/css-text-decor/text-decoration-underline-position-horizontal.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<head>
- <meta charset="utf-8">
- <link rel="help" href="https://www.w3.org/TR/css-text-decor-3/#text-underline-position-property">
- <link rel="match" href="reference/text-decoration-underline-position-horizontal-ref.html">
- <style>
- .underline { text-decoration: underline; }
- .overline { text-decoration: overline; }
- </style>
-</head>
-<body lang="en">
- <div class="overline" style="text-underline-position: under right">サンプル</div>
- <div class="overline" style="text-underline-position: under left">サンプル</div>
- <div class="underline" style="text-underline-position: right">"text-underline-position: right" alone should be same as "auto right"</div>
- <div class="underline" style="text-underline-position: left">"text-underline-position: left" alone should be same as "auto left"</div>
-</body>
-</html>
-
diff --git a/tests/wpt/tests/css/css-text-decor/text-decoration-underline-position-vertical-ja.html b/tests/wpt/tests/css/css-text-decor/text-decoration-underline-position-vertical-ja.html
deleted file mode 100644
index 6f41e939b24..00000000000
--- a/tests/wpt/tests/css/css-text-decor/text-decoration-underline-position-vertical-ja.html
+++ /dev/null
@@ -1,18 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<head>
- <meta charset="utf-8">
- <link rel="help" href="https://www.w3.org/TR/css-text-decor-3/#text-underline-position-property">
- <link rel="match" href="reference/text-decoration-underline-position-vertical-ja-ref.html">
- <style>
- body { writing-mode: vertical-rl; }
- .underline { text-decoration: underline; }
- .overline { text-decoration: overline; }
- </style>
-</head>
-<body lang="ja">
- <div>In vertical writing mode with lang=ja, default overline will be same as underline (lang=en). However, when we set text-underline-position to "under left" it should be shifted.</div>
- <div class="underline" style="text-underline-position: under left">サンプル</div>
- <div class="overline">サンプル</div>
-</body>
-</html>
diff --git a/tests/wpt/tests/css/css-text-decor/text-decoration-underline-position-vertical.html b/tests/wpt/tests/css/css-text-decor/text-decoration-underline-position-vertical.html
deleted file mode 100644
index 9f60bc116ba..00000000000
--- a/tests/wpt/tests/css/css-text-decor/text-decoration-underline-position-vertical.html
+++ /dev/null
@@ -1,18 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<head>
- <meta charset="utf-8">
- <link rel="help" href="https://www.w3.org/TR/css-text-decor-3/#text-underline-position-property">
- <link rel="match" href="reference/text-decoration-underline-position-vertical-ref.html">
- <style>
- body { writing-mode: vertical-rl; }
- .underline { text-decoration: underline; }
- .overline { text-decoration: overline; }
- </style>
-</head>
-<body lang="en">
- <div class="overline" style="text-underline-position: right">サンプル</div>
- <div class="underline" style="text-underline-position: left">サンプル</div>
-</body>
-</html>
-
diff --git a/tests/wpt/tests/css/css-text-decor/text-underline-position-horizontal.html b/tests/wpt/tests/css/css-text-decor/text-underline-position-horizontal.html
new file mode 100644
index 00000000000..f008bdec2f7
--- /dev/null
+++ b/tests/wpt/tests/css/css-text-decor/text-underline-position-horizontal.html
@@ -0,0 +1,19 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+ <meta charset="utf-8">
+ <link rel="help" href="https://www.w3.org/TR/css-text-decor-3/#text-underline-position-property">
+ <link rel="match" href="reference/text-underline-position-horizontal-ref.html">
+ <style>
+ .underline { text-decoration: underline; }
+ .overline { text-decoration: overline; }
+ </style>
+</head>
+<body lang="en">
+ <div class="overline" style="text-underline-position: under right">サンプル</div>
+ <div class="overline" style="text-underline-position: under left">サンプル</div>
+ <div class="underline" style="text-underline-position: right">"text-underline-position: right" alone should be same as "auto right"</div>
+ <div class="underline" style="text-underline-position: left">"text-underline-position: left" alone should be same as "auto left"</div>
+</body>
+</html>
+
diff --git a/tests/wpt/tests/css/css-text-decor/text-underline-position-vertical-ja.html b/tests/wpt/tests/css/css-text-decor/text-underline-position-vertical-ja.html
new file mode 100644
index 00000000000..27c978bc7d1
--- /dev/null
+++ b/tests/wpt/tests/css/css-text-decor/text-underline-position-vertical-ja.html
@@ -0,0 +1,22 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+ <meta charset="utf-8">
+ <link rel="help" href="https://www.w3.org/TR/css-text-decor-3/#text-underline-position-property">
+ <link rel="match" href="reference/text-underline-position-vertical-ja-ref.html">
+ <style>
+ @font-face {
+ font-family: halt-font;
+ src: url('/fonts/noto/cjk/NotoSansCJKjp-Regular-subset-halt-min.otf');
+ }
+ body { writing-mode: vertical-rl; font-family: Arial; }
+ .underline { text-decoration: underline; font-family: halt-font; font-language-override: "JAN"; }
+ .overline { text-decoration: overline; font-family: halt-font; font-language-override: "JAN"; }
+ </style>
+</head>
+<body lang="ja">
+ <div lang="en">In vertical writing mode with lang=ja, default overline will be same as underline (lang=en). However, when we set text-underline-position to "under left" it should be shifted.</div>
+ <div class="underline" style="text-underline-position: under left">&#x56fd;&#x56fd;&#x56fd;&#x56fd;</div>
+ <div class="overline">&#x56fd;&#x56fd;&#x56fd;&#x56fd;</div>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-text-decor/text-underline-position-vertical.html b/tests/wpt/tests/css/css-text-decor/text-underline-position-vertical.html
new file mode 100644
index 00000000000..95aea0a6a29
--- /dev/null
+++ b/tests/wpt/tests/css/css-text-decor/text-underline-position-vertical.html
@@ -0,0 +1,18 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+ <meta charset="utf-8">
+ <link rel="help" href="https://www.w3.org/TR/css-text-decor-3/#text-underline-position-property">
+ <link rel="match" href="reference/text-underline-position-vertical-ref.html">
+ <style>
+ body { writing-mode: vertical-rl; }
+ .underline { text-decoration: underline; }
+ .overline { text-decoration: overline; }
+ </style>
+</head>
+<body lang="en">
+ <div class="overline" style="text-underline-position: right">サンプル</div>
+ <div class="underline" style="text-underline-position: left">サンプル</div>
+</body>
+</html>
+
diff --git a/tests/wpt/tests/css/css-transforms/animation/transform-box-ref.html b/tests/wpt/tests/css/css-transforms/animation/transform-box-ref.html
new file mode 100644
index 00000000000..f041336b6c5
--- /dev/null
+++ b/tests/wpt/tests/css/css-transforms/animation/transform-box-ref.html
@@ -0,0 +1,17 @@
+<!doctype html>
+<html>
+<meta charset="utf-8">
+<title>Reference for transform-box animation test equivalent</title>
+<style>
+ .block {
+ position: absolute;
+ border: 20px solid green;
+ width: 100px;
+ height: 100px;
+ left: 100px;
+ top: 200px;
+ }
+</style>
+<body>
+ <div class="block"></div>
+</body>
diff --git a/tests/wpt/tests/css/css-transforms/animation/transform-box-will-change-transform-layer.html b/tests/wpt/tests/css/css-transforms/animation/transform-box-will-change-transform-layer.html
new file mode 100644
index 00000000000..2d2f9c99149
--- /dev/null
+++ b/tests/wpt/tests/css/css-transforms/animation/transform-box-will-change-transform-layer.html
@@ -0,0 +1,62 @@
+<!doctype html>
+<html class="reftest-wait">
+<meta charset="utf-8">
+<title>Verify transform-box animations on a 'will-change: transform' layer</title>
+<link rel="match" href="transform-box-ref.html">
+<link rel="help" href="https://drafts.csswg.org/css-transforms-2/#ctm">
+<script src="/common/reftest-wait.js"></script>
+<style>
+ .block {
+ position: absolute;
+ border: 20px solid black;
+ width: 100px;
+ height: 100px;
+ left: 100px;
+ top: 100px;
+ will-change: transform;
+ }
+
+ #transformBoxTarget {
+ transform: rotateZ(90deg);
+ transform-origin: 0% 100%;
+ transform-box: border-box;
+ }
+</style>
+<body>
+ <div id="transformBoxTarget" class="block"></div>
+
+<script>
+ 'use strict';
+
+ async function waitForNextFrame() {
+ return new Promise(resolve => {
+ window.requestAnimationFrame(() => {
+ resolve();
+ });
+ });
+ }
+
+ async function createAnimation(elementName, keyframes) {
+ const element = document.getElementById(elementName);
+ const anim = element.animate(keyframes, {
+ duration: 1000,
+ easing: 'linear',
+ fill: 'forwards',
+ });
+ anim.pause();
+ anim.currentTime = 2000;
+ return anim.ready;
+ }
+
+ onload = async function() {
+ await waitForNextFrame();
+ await createAnimation('transformBoxTarget', [
+ { transformBox: 'border-box', borderColor: 'black' },
+ { transformBox: 'content-box', borderColor: 'green' }]);
+
+ await waitForNextFrame();
+ takeScreenshot();
+ };
+</script>
+</body>
+
diff --git a/tests/wpt/tests/css/css-transforms/animation/transform-box.html b/tests/wpt/tests/css/css-transforms/animation/transform-box.html
new file mode 100644
index 00000000000..87f32e48838
--- /dev/null
+++ b/tests/wpt/tests/css/css-transforms/animation/transform-box.html
@@ -0,0 +1,60 @@
+<!doctype html>
+<html class="reftest-wait">
+<meta charset="utf-8">
+<title>Verify transform-box animations</title>
+<link rel="match" href="transform-box-ref.html">
+<link rel="help" href="https://drafts.csswg.org/css-transforms-2/#ctm">
+<script src="/common/reftest-wait.js"></script>
+<style>
+ .block {
+ position: absolute;
+ border: 20px solid black;
+ width: 100px;
+ height: 100px;
+ left: 100px;
+ top: 100px;
+ }
+
+ #transformBoxTarget {
+ transform: rotateZ(90deg);
+ transform-origin: 0% 100%;
+ transform-box: border-box;
+ }
+</style>
+<body>
+ <div id="transformBoxTarget" class="block"></div>
+
+<script>
+ 'use strict';
+
+ async function waitForNextFrame() {
+ return new Promise(resolve => {
+ window.requestAnimationFrame(() => {
+ resolve();
+ });
+ });
+ }
+
+ async function createAnimation(elementName, keyframes) {
+ const element = document.getElementById(elementName);
+ const anim = element.animate(keyframes, {
+ duration: 1000,
+ easing: 'linear',
+ fill: 'forwards',
+ });
+ anim.pause();
+ anim.currentTime = 2000;
+ return anim.ready;
+ }
+
+ onload = async function() {
+ await waitForNextFrame();
+ await createAnimation('transformBoxTarget', [
+ { transformBox: 'border-box', borderColor: 'black' },
+ { transformBox: 'content-box', borderColor: 'green' }]);
+
+ await waitForNextFrame();
+ takeScreenshot();
+ };
+</script>
+</body>
diff --git a/tests/wpt/tests/css/css-typed-om/parse-calc-expressions.html b/tests/wpt/tests/css/css-typed-om/parse-calc-expressions.html
new file mode 100644
index 00000000000..df8ac6b511a
--- /dev/null
+++ b/tests/wpt/tests/css/css-typed-om/parse-calc-expressions.html
@@ -0,0 +1,20 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>Tests parsing of calc() expressions via CSSStyleValue.parse()</title>
+<link rel="help" href="https://drafts.css-houdini.org/css-typed-om/#reify-a-math-expression">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/css-typed-om/resources/testhelper.js"></script>
+<body>
+<script>
+'use strict';
+
+test(t => {
+ assert_style_value_equals(CSSStyleValue.parse('width', 'calc(1% + 2em + 3px)'), new CSSMathSum(CSS.percent(1), CSS.em(2), CSS.px(3)));
+}, 'Parsing calc(1% + 2em + 3px)');
+
+test(t => {
+ assert_style_value_equals(CSSStyleValue.parse('width', 'calc(1px + 2% + 3em)'), new CSSMathSum(CSS.px(1), CSS.percent(2), CSS.em(3)));
+}, 'Parsing calc(1px + 2% + 3em)');
+</script>
+</body>
diff --git a/tests/wpt/tests/css/css-outline/outline-width-rounding.tentative.html b/tests/wpt/tests/css/css-ui/outline-width-rounding.tentative.html
index 8a4a724bbe5..8a4a724bbe5 100644
--- a/tests/wpt/tests/css/css-outline/outline-width-rounding.tentative.html
+++ b/tests/wpt/tests/css/css-ui/outline-width-rounding.tentative.html
diff --git a/tests/wpt/tests/css/css-outline/reference/subpixel-outline-width-ref.tentative.html b/tests/wpt/tests/css/css-ui/reference/subpixel-outline-width-ref.tentative.html
index 28d84fabb77..28d84fabb77 100644
--- a/tests/wpt/tests/css/css-outline/reference/subpixel-outline-width-ref.tentative.html
+++ b/tests/wpt/tests/css/css-ui/reference/subpixel-outline-width-ref.tentative.html
diff --git a/tests/wpt/tests/css/css-outline/subpixel-outline-width.tentative.html b/tests/wpt/tests/css/css-ui/subpixel-outline-width.tentative.html
index a9fc0c49cf3..a9fc0c49cf3 100644
--- a/tests/wpt/tests/css/css-outline/subpixel-outline-width.tentative.html
+++ b/tests/wpt/tests/css/css-ui/subpixel-outline-width.tentative.html
diff --git a/tests/wpt/tests/css/css-values/attr-all-types.html b/tests/wpt/tests/css/css-values/attr-all-types.html
index 129e1fd6c73..4e9dd9a6bd9 100644
--- a/tests/wpt/tests/css/css-values/attr-all-types.html
+++ b/tests/wpt/tests/css/css-values/attr-all-types.html
@@ -80,6 +80,10 @@
test_valid_attr('content', 'attr(data-foo string)', 'abc', '"abc"');
test_valid_attr('content', 'attr(data-foo string)', 'attr(data-foo)', '"attr(data-foo)"');
+ test_valid_attr('animation-name', 'attr(data-foo ident)', 'anim', 'anim');
+ test_valid_attr('animation-name', 'attr(data-foo ident, anim-fallback)', '"anim"', 'anim-fallback');
+ test_valid_attr('animation-name', 'attr(data-foo ident, anim-fallback)', 'initial', 'anim-fallback');
+
test_valid_attr('background-color', 'attr(data-foo color)', 'red', 'red');
test_valid_attr('background-color', 'attr(data-foo color)', '#ff0099aa', '#ff0099aa');
test_valid_attr('background-color', 'attr(data-foo color, red)', '10', 'red');
@@ -113,9 +117,15 @@
test_valid_attr('height', 'attr(data-foo px)', '10', '10px');
test_valid_attr('width', 'calc(attr(data-foo px) + 1px)', '10', '11px');
test_valid_attr('--x', 'attr(data-foo px) 11px', '10', '10px 11px');
+ test_valid_attr('grid-template-columns', 'attr(data-foo fr)', '10', '10fr');
+ test_valid_attr('grid-template-columns', 'attr(data-foo fr, 3fr)', '10fr', '3fr');
test_dimension_types_and_units();
+ test_invalid_attr('animation-name', 'attr(data-foo ident)', 'initial');
+ test_invalid_attr('animation-name', 'attr(data-foo ident)', '"anim"');
+ test_invalid_attr('animation-name', 'attr(data-foo ident)', '"none"');
+
test_invalid_attr('background-color', 'attr(data-foo color)', 'rgb(0 255 0)');
test_invalid_attr('background-color', 'attr(data-foo color)', 'color-mix(in lch, red, pink)');
test_invalid_attr('background-color', 'attr(data-foo color)', 'light-dark(#333b3c, #efefec)');
diff --git a/tests/wpt/tests/css/css-values/attr-invalid-type-008.html b/tests/wpt/tests/css/css-values/attr-invalid-type-008.html
deleted file mode 100644
index a76be44d76a..00000000000
--- a/tests/wpt/tests/css/css-values/attr-invalid-type-008.html
+++ /dev/null
@@ -1,90 +0,0 @@
-<!DOCTYPE html>
-
- <meta charset="UTF-8">
-
- <title>CSS Values and Units Test: attr() function with valid and invalid data types</title>
-
- <link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
- <link href="http://www.w3.org/TR/css3-values/#attr-notation" rel="help">
- <link rel="match" href="../reference/ref-filled-green-100px-square.xht">
-
- <meta name="flags" content="invalid">
- <meta content="When the data type of an attr() function is invalid or when the fallback value does not match the data type, then the attr() function generates an invalid declaration." name="assert">
-
- <style>
- div
- {
- height: 50px;
- position: relative;
- width: 50px;
- }
-
- div#valid1
- {
- background-color: green;
- width: attr(attr-test-valid1 length);
- }
-
- div#invalid1
- {
- background-color: green;
- width: 100px;
- width: attr(attr-test-invalid1 number, 0);
- }
-
- /*
- '0' can be both a number and a length. But here,
- in this sub-test, the width CSS property requires
- a length type and not a number type. So, the
- attr() function generates an invalid declaration.
- */
-
- div#reference-overlapped-red
- {
- background-color: red;
- bottom: 100px;
- height: 100px;
- width: 100px;
- z-index: -1;
- }
-
- div#invalid2
- {
- background-color: red;
- bottom: 100px;
- width: 0px;
- width: attr(attr-test-invalid2 length, 100);
- }
-
- /*
- '100' is not a valid length value.
- So, the attr() function generates an invalid
- declaration.
- */
-
- div#invalid3
- {
- background-color: red;
- bottom: 100px;
- width: 0px;
- width: attr(attr-test-invalid3 number, 100px);
- }
-
- /*
- number type is not a valid length value.
- So, the attr() function generates an invalid
- declaration.
- */
- </style>
-
- <p>Test passes if there is a filled green square and <strong>no red</strong>.
-
- <div id="valid1" attr-test-valid1="100px"></div>
-
- <div id="invalid1" attr-test-invalid1="foo"></div>
-
- <div id="reference-overlapped-red"></div>
-
- <div id="invalid2" attr-test-invalid2="bar"></div>
-
- <div id="invalid3" attr-test-invalid3="baz"></div>
diff --git a/tests/wpt/tests/css/css-values/attr-pseudo-elem-invalidation.html b/tests/wpt/tests/css/css-values/attr-pseudo-elem-invalidation.html
new file mode 100644
index 00000000000..1ef912bf75d
--- /dev/null
+++ b/tests/wpt/tests/css/css-values/attr-pseudo-elem-invalidation.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<title>CSS Values and Units Test: attr() invalidation of pseudo elements</title>
+<meta name="assert" content="Test attr() invalidation of pseudo elements">
+<link rel="help" href="https://drafts.csswg.org/css-values/#attr-notation">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<html>
+ <body>
+ <div id="div"></div>
+ </body>
+</html>
+
+<script>
+ const pseudoSelectors = [
+ "::after",
+ "::backdrop",
+ "::before",
+ "::first-letter",
+ "::first-line",
+ "::selection"
+ ];
+
+ function test_pseudo_element_invalidation(pseudoSelector) {
+ let elem = document.getElementById("div");
+ elem.setAttribute("data-foo", "150%");
+ elem.style["font-size"]= "attr(data-foo percentage)";
+ let old_font_size = window.getComputedStyle(elem, pseudoSelector).getPropertyValue("font-size");
+ elem.setAttribute("data-foo", "300%");
+ let new_font_size = window.getComputedStyle(elem, pseudoSelector).getPropertyValue("font-size");
+ test(() => {
+ assert_not_equals(new_font_size, old_font_size,
+ "Change of attribute value should lead to invalidation of "
+ + pseudoSelector + " element style.");
+ });
+ elem.style["font-size"]= null;
+ }
+
+ pseudoSelectors.forEach(pseudoSelector => {
+ test_pseudo_element_invalidation(pseudoSelector);
+ });
+</script> \ No newline at end of file
diff --git a/tests/wpt/tests/css/css-values/calc-size/animation/calc-size-height-interpolation.tentative.html b/tests/wpt/tests/css/css-values/calc-size/animation/calc-size-height-interpolation.html
index b37b57bf26d..b37b57bf26d 100644
--- a/tests/wpt/tests/css/css-values/calc-size/animation/calc-size-height-interpolation.tentative.html
+++ b/tests/wpt/tests/css/css-values/calc-size/animation/calc-size-height-interpolation.html
diff --git a/tests/wpt/tests/css/css-values/calc-size/animation/calc-size-interpolation-expansion.tentative.html b/tests/wpt/tests/css/css-values/calc-size/animation/calc-size-interpolation-expansion.html
index a34aec06085..a34aec06085 100644
--- a/tests/wpt/tests/css/css-values/calc-size/animation/calc-size-interpolation-expansion.tentative.html
+++ b/tests/wpt/tests/css/css-values/calc-size/animation/calc-size-interpolation-expansion.html
diff --git a/tests/wpt/tests/css/css-values/calc-size/animation/calc-size-width-interpolation.tentative.html b/tests/wpt/tests/css/css-values/calc-size/animation/calc-size-width-interpolation.html
index c08198bd4a5..c08198bd4a5 100644
--- a/tests/wpt/tests/css/css-values/calc-size/animation/calc-size-width-interpolation.tentative.html
+++ b/tests/wpt/tests/css/css-values/calc-size/animation/calc-size-width-interpolation.html
diff --git a/tests/wpt/tests/css/css-values/calc-size/calc-size-aspect-ratio-001.html b/tests/wpt/tests/css/css-values/calc-size/calc-size-aspect-ratio-001.html
new file mode 100644
index 00000000000..34487f49dd1
--- /dev/null
+++ b/tests/wpt/tests/css/css-values/calc-size/calc-size-aspect-ratio-001.html
@@ -0,0 +1,7 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-values-5/#calc-size">
+<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#aspect-ratio">
+<link rel="match" href="../../reference/ref-filled-green-100px-square-only.html">
+<p>Test passes if there is a filled green square.</p>
+<!-- Without calc-size() "auto" would resolve to 50px, and passing through calc-size() will yield 100px. -->
+<div style="aspect-ratio: 1/2; height: 100px; width: calc-size(auto, size + 50px); background: green;"></div>
diff --git a/tests/wpt/tests/css/css-values/calc-size/calc-size-aspect-ratio-002.html b/tests/wpt/tests/css/css-values/calc-size/calc-size-aspect-ratio-002.html
new file mode 100644
index 00000000000..0730a31d82a
--- /dev/null
+++ b/tests/wpt/tests/css/css-values/calc-size/calc-size-aspect-ratio-002.html
@@ -0,0 +1,7 @@
+<!DOCTYPE html>
+<link rel="help" href="https://drafts.csswg.org/css-values-5/#calc-size">
+<link rel="help" href="https://drafts.csswg.org/css-sizing-4/#aspect-ratio">
+<link rel="match" href="../../reference/ref-filled-green-100px-square-only.html">
+<p>Test passes if there is a filled green square.</p>
+<!-- Without calc-size() "auto" would resolve to 50px, and passing through calc-size() will yield 100px. -->
+<div style="aspect-ratio: 2/1; width: 100px; height: calc-size(auto, size + 50px); background: green;"></div>
diff --git a/tests/wpt/tests/css/css-values/calc-size/calc-size-flex-basis-on-column.html b/tests/wpt/tests/css/css-values/calc-size/calc-size-flex-basis-on-column.html
new file mode 100644
index 00000000000..1d2ba5804b9
--- /dev/null
+++ b/tests/wpt/tests/css/css-values/calc-size/calc-size-flex-basis-on-column.html
@@ -0,0 +1,92 @@
+<!DOCTYPE html>
+<title>calc-size() on flex-basis</title>
+<link rel="help" href="https://drafts.csswg.org/css-values-5/#calc-size">
+<link rel="help" href="https://drafts.csswg.org/css-flexbox/#flex-basis-property">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<link rel="stylesheet" href="/fonts/ahem.css">
+<style>
+ #container {
+ display: flex;
+ flex-direction: column;
+ font-family: 'Ahem';
+ font-size: 20px;
+ height: 200px;
+ }
+ #target {
+ height: 50px;
+ flex-grow: 0;
+ flex-shrink: 0;
+ }
+</style>
+
+<div id="container">
+ <!--
+ Given the contents of #target (and the Ahem font), intrinsic height is 1ch or 20px
+ -->
+ <div id="target">hello</div>
+</div>
+
+<script>
+
+setup({explicit_done: true});
+document.fonts.ready.then(()=> {
+ let basic_tests = [
+ /* I think flex layout rules require expectations be >= 20px */
+ { value: "274px", expected: "274px" },
+ { value: "min-content", expected: "20px" },
+ { value: "fit-content", expected: "20px" },
+ { value: "max-content", expected: "20px" },
+ { value: "content", expected: "20px" },
+ { value: "auto", expected: "50px" },
+ { value: "calc-size(any, 357px)", expected: "357px" },
+ { value: "calc-size(any, 220%)", expected: "440px" },
+ { value: "calc-size(max-content, 350%)", expected: "700px" },
+ { value: "calc-size(fit-content, 172px)", expected: "172px" },
+ { value: "calc-size(37px, 193px)", expected: "193px" },
+ { value: "calc-size(83px, size * 3)", expected: "249px" },
+ { value: "calc-size(min-content, size / 0.25)", expected: "80px" },
+ { value: "calc-size(max-content, size * 5.2)", expected: "104px" },
+ { value: "calc-size(fit-content, size / 4 + 60px)", expected: "65px" },
+ { value: "calc-size(stretch, size * 2 - 10%)", expected: "90px" },
+ { value: "calc-size(30px, 15em)", expected: "300px" },
+ { value: "calc-size(calc-size(any, 30px), 15em)", expected: "300px" },
+ { value: "calc-size(calc-size(2in, 30px), 15em)", expected: "300px" },
+ { value: "calc-size(calc-size(min-content, 30px), 15em)", expected: "300px" },
+ { value: "calc-size(calc-size(min-content, size), size * 3)", expected: "60px" },
+ { value: "calc-size(auto, size)", expected: "50px" },
+ { value: "calc-size(auto, size * 1.6 + 23px)", expected: "103px" },
+ { value: "calc-size(content, size)", expected: "20px" },
+ { value: "calc-size(content, size * 1.6 + 23px)", expected: "55px" },
+ { value: "auto", height_value: "auto", expected: "20px" },
+ { value: "calc-size(auto, size * 3)", height_value: "auto", expected: "60px" },
+ { value: "auto", height_value: "calc-size(auto, size * 7)", expected: "140px" },
+ { value: "calc-size(auto, size * 7)", height_value: "calc-size(auto, size * 3)", expected: "420px" },
+ { value: "auto", height_value: "calc-size(max-content, size + 12px)", expected: "32px" },
+ { value: "calc-size(auto, size + 4px)", height_value: "calc-size(fit-content, size + 12px)", expected: "36px" },
+ { value: "372px", height_value: "calc-size(fit-content, size + 12px)", expected: "372px" },
+ { value: "calc-size(content, size * 7)", height_value: "321px", expected: "140px" },
+ ];
+ const container = document.getElementById("container");
+ const target = document.getElementById("target");
+ const target_cs = getComputedStyle(target);
+ for (const obj of basic_tests) {
+ test((t) => {
+ target.style.removeProperty("flex-basis");
+ target.style.flexBasis = obj.value;
+ assert_not_equals(target.style.flexBasis, "", "flex-basis value is accepted");
+
+ target.style.removeProperty("height");
+ if ("height_value" in obj) {
+ target.style.height = obj.height_value;
+ assert_not_equals(target.style.height, "", "height value is accepted");
+ }
+
+ assert_equals(target_cs.height, obj.expected, "resulting height is correct");
+ }, `resolved value for height resulting from flex-basis: ${obj.value}${obj.height_value ? ` and height: ${obj.height_value}` : ""}`);
+ }
+
+ done();
+});
+
+</script>
diff --git a/tests/wpt/tests/css/css-values/calc-size/calc-size-flex-basis-on-row.html b/tests/wpt/tests/css/css-values/calc-size/calc-size-flex-basis-on-row.html
new file mode 100644
index 00000000000..23231f213ed
--- /dev/null
+++ b/tests/wpt/tests/css/css-values/calc-size/calc-size-flex-basis-on-row.html
@@ -0,0 +1,94 @@
+<!DOCTYPE html>
+<title>calc-size() on flex-basis</title>
+<link rel="help" href="https://drafts.csswg.org/css-values-5/#calc-size">
+<link rel="help" href="https://drafts.csswg.org/css-flexbox/#flex-basis-property">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<link rel="stylesheet" href="/fonts/ahem.css">
+<style>
+ #container {
+ display: flex;
+ flex-direction: row;
+ font-family: 'Ahem';
+ font-size: 20px;
+ width: 500px;
+ }
+ #target {
+ width: 125px;
+ flex-grow: 0;
+ flex-shrink: 0;
+ }
+</style>
+
+<div id="container">
+ <!--
+ Given the contents of #target (and the Ahem font):
+ max-content width is 30ch or 600px
+ min-content width is 20ch or 400px
+ -->
+ <div id="target">ninechars twenty_characters___</div>
+</div>
+
+<script>
+
+setup({explicit_done: true});
+document.fonts.ready.then(()=> {
+ let basic_tests = [
+ /* I think flex layout rules require expectations be greater than width or min-content width */
+ { value: "274px", expected: "274px" },
+ { value: "min-content", expected: "400px" },
+ { value: "fit-content", expected: "500px" },
+ { value: "max-content", expected: "600px" },
+ { value: "content", expected: "600px" },
+ { value: "auto", expected: "125px" },
+ { value: "calc-size(any, 357px)", expected: "357px" },
+ { value: "calc-size(any, 31%)", expected: "155px" },
+ { value: "calc-size(max-content, 31%)", expected: "155px" },
+ { value: "calc-size(fit-content, 172px)", expected: "172px" },
+ { value: "calc-size(37px, 193px)", expected: "193px" },
+ { value: "calc-size(83px, size * 3)", expected: "249px" },
+ { value: "calc-size(min-content, size / 2)", expected: "200px" },
+ { value: "calc-size(max-content, size * 1.2)", expected: "720px" },
+ { value: "calc-size(fit-content, size / 4 + 30px)", expected: "155px" },
+ { value: "calc-size(stretch, size / 2 - 10%)", expected: "200px" },
+ { value: "calc-size(30px, 15em)", expected: "300px" },
+ { value: "calc-size(calc-size(any, 30px), 15em)", expected: "300px" },
+ { value: "calc-size(calc-size(2in, 30px), 15em)", expected: "300px" },
+ { value: "calc-size(calc-size(min-content, 30px), 15em)", expected: "300px" },
+ { value: "calc-size(calc-size(min-content, size), size)", expected: "400px" },
+ { value: "calc-size(auto, size)", expected: "125px" },
+ { value: "calc-size(auto, size * 1.6 + 23px)", expected: "223px" },
+ { value: "calc-size(content, size)", expected: "600px" },
+ { value: "calc-size(content, size / 2)", expected: "300px" },
+ { value: "auto", width_value: "auto", expected: "600px" },
+ { value: "calc-size(auto, size * 2)", width_value: "auto", expected: "1200px" },
+ { value: "auto", width_value: "calc-size(auto, size * 1.5 + 5px)", expected: "905px" },
+ { value: "calc-size(auto, size + 14px)", width_value: "calc-size(auto, size * 1.5)", expected: "914px" },
+ { value: "auto", width_value: "calc-size(max-content, size + 12px)", expected: "612px" },
+ { value: "calc-size(auto, size + 4px)", width_value: "calc-size(fit-content, size + 12px)", expected: "516px" },
+ { value: "472px", width_value: "calc-size(fit-content, size + 12px)", expected: "472px" },
+ { value: "calc-size(content, size * 1.5 + 4px)", width_value: "321px", expected: "904px" },
+ ];
+ const container = document.getElementById("container");
+ const target = document.getElementById("target");
+ const target_cs = getComputedStyle(target);
+ for (const obj of basic_tests) {
+ test((t) => {
+ target.style.removeProperty("flex-basis");
+ target.style.flexBasis = obj.value;
+ assert_not_equals(target.style.flexBasis, "", "flex-basis value is accepted");
+
+ target.style.removeProperty("width");
+ if ("width_value" in obj) {
+ target.style.width = obj.width_value;
+ assert_not_equals(target.style.width, "", "width value is accepted");
+ }
+
+ assert_equals(target_cs.width, obj.expected, "resulting width is correct");
+ }, `resolved value for width resulting from flex-basis: ${obj.value}${obj.width_value ? ` and width: ${obj.width_value}` : ""}`);
+ }
+
+ done();
+});
+
+</script>
diff --git a/tests/wpt/tests/css/css-values/calc-size/calc-size-height.tentative.html b/tests/wpt/tests/css/css-values/calc-size/calc-size-height.html
index c3d58931b87..c3d58931b87 100644
--- a/tests/wpt/tests/css/css-values/calc-size/calc-size-height.tentative.html
+++ b/tests/wpt/tests/css/css-values/calc-size/calc-size-height.html
diff --git a/tests/wpt/tests/css/css-values/calc-size/calc-size-parsing.html b/tests/wpt/tests/css/css-values/calc-size/calc-size-parsing.html
new file mode 100644
index 00000000000..37eb933c713
--- /dev/null
+++ b/tests/wpt/tests/css/css-values/calc-size/calc-size-parsing.html
@@ -0,0 +1,112 @@
+<!DOCTYPE html>
+<title>calc-size() expressions</title>
+<link rel="help" href="https://drafts.csswg.org/css-values-5/#calc-size">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="../../support/parsing-testcommon.js"></script>
+
+<script>
+
+test_valid_value("width", "calc-size(auto, size)");
+test_valid_value("min-width", "calc-size(auto, size)");
+test_valid_value("height", "calc-size(auto, size)");
+test_valid_value("min-height", "calc-size(auto, size)");
+test_invalid_value("max-height", "calc-size(auto, size)");
+test_invalid_value("max-width", "calc-size(auto, size)");
+
+test_invalid_value("height", "calc-size(none, size)");
+test_invalid_value("width", "calc-size(none, size)");
+test_invalid_value("min-height", "calc-size(none, size)");
+test_invalid_value("min-width", "calc-size(none, size)");
+test_invalid_value("max-height", "calc-size(none, size)");
+test_invalid_value("max-width", "calc-size(none, size)");
+
+test_valid_value("width", "calc-size(max-content, size)");
+test_valid_value("height", "calc-size(max-content, size)");
+test_valid_value("max-width", "calc-size(max-content, size)");
+test_valid_value("max-height", "calc-size(max-content, size)");
+test_valid_value("min-width", "calc-size(max-content, size)");
+test_valid_value("min-height", "calc-size(max-content, size)");
+test_valid_value("block-size", "calc-size(max-content, size)");
+test_valid_value("inline-size", "calc-size(max-content, size)");
+test_valid_value("max-block-size", "calc-size(max-content, size)");
+test_valid_value("max-inline-size", "calc-size(max-content, size)");
+test_valid_value("min-block-size", "calc-size(max-content, size)");
+test_valid_value("min-inline-size", "calc-size(max-content, size)");
+
+test_valid_value("width", "calc-size(fit-content, size)");
+test_valid_value("height", "calc-size(min-content, size * 2)");
+test_valid_value("max-width", "calc-size(max-content, size / 2)");
+test_valid_value("max-height", "calc-size(fit-content, 30px + size / 2)");
+test_valid_value("width", "calc-size(fit-content, 50% + size / 2)");
+
+test_valid_value("width", "calc-size(any, 25em)");
+test_valid_value("width", "calc-size(any, 40%)");
+test_valid_value("width", "calc-size(any, 50px + 30%)", "calc-size(any, 30% + 50px)");
+test_invalid_value("width", "calc-size(any, size)");
+test_invalid_value("width", "calc-size(any, fit-content)");
+test_invalid_value("width", "calc-size(any, max-content)");
+test_invalid_value("width", "calc-size(any, min-content)");
+test_valid_value("width", "calc-size(10px, sign(size) * size)");
+test_invalid_value("width", "size");
+test_invalid_value("width", "sign(size)");
+test_invalid_value("width", "calc(50px * sign(size))");
+test_invalid_value("width", "calc-size(any, calc-size(10px, sign(size) * size))");
+test_invalid_value("width", "calc-size(any, calc-size(any, 10px))");
+test_invalid_value("width", "calc(calc-size(auto, size))");
+test_invalid_value("width", "calc(50px * sign(calc-size(auto, size)))");
+test_invalid_value("width", "calc(calc-size(auto, size) + calc-size(auto, size))");
+test_invalid_value("width", "calc(abs(calc-size(auto, size)))");
+test_invalid_value("width", "calc(100px * progress(calc-size(auto, size) from calc-size(auto, 0px) to calc-size(auto, size)))");
+test_invalid_value("width", "calc(100px * progress(calc-size(auto, size) from 0px to 100px))");
+test_invalid_value("width", "calc(100px * progress(50px from calc-size(auto, 0px) to calc-size(auto, size)))");
+test_invalid_value("width", "min(calc-size(auto, 0px), calc-size(auto, size))");
+test_invalid_value("width", "calc(min(calc-size(auto, 0px), calc-size(auto, size)))");
+test_invalid_value("width", "max(calc-size(auto, 0px), calc-size(auto, size))");
+test_invalid_value("width", "calc(max(calc-size(auto, 0px), calc-size(auto, size)))");
+test_invalid_value("width", "clamp(calc-size(auto, 0px), calc-size(auto, 30px), calc-size(auto, size))");
+test_invalid_value("width", "calc(clamp(calc-size(auto, 0px), calc-size(auto, 30px), calc-size(auto, size)))");
+test_invalid_value("width", "calc(cos(calc-size(auto, 0px)))");
+test_invalid_value("width", "calc(atan2(calc-size(auto, size), calc-size(auto, 50px)))");
+test_invalid_value("width", "calc(sqrt(calc-size(auto, 0px)))");
+test_invalid_value("width", "calc(hypot(calc-size(auto, size * 0.5), calc-size(auto, size)))");
+test_invalid_value("width", "calc(round(calc-size(auto, size * 0.5), calc-size(auto, size)))");
+test_invalid_value("width", "calc(round(calc-size(auto, size * 0.5)))");
+test_invalid_value("width", "calc(mod(calc-size(auto, size * 0.5), calc-size(auto, size)))");
+test_invalid_value("width", "calc(rem(calc-size(auto, size * 0.5), calc-size(auto, size)))");
+
+test_valid_value("width", "calc-size(30px, 25em)");
+test_valid_value("width", "calc-size(calc-size(any, 30px), 25em)");
+test_valid_value("width", "calc-size(calc-size(2in, 30px), 25em)", "calc-size(calc-size(192px, 30px), 25em)");
+test_valid_value("width", "calc-size(calc-size(min-content, 30px), 25em)");
+test_valid_value("width", "calc-size(calc-size(min-content, size), size)");
+
+test_invalid_value("height", "calc(12% + calc-size(any, 31%))");
+
+// Based on the discussion in https://github.com/w3c/csswg-drafts/issues/10259
+// this presumes parse-time conversion of the one-argument form to the
+// two-argument form, but this isn't yet specified.
+test_valid_value("width", "calc-size(30px)", "calc-size(any, 30px)");
+test_valid_value("width", "calc-size(min(30px, 2em))", "calc-size(any, min(30px, 2em))");
+test_invalid_value("width", "calc-size(any)");
+test_valid_value("width", "calc-size(calc-size(any, 30px))", "calc-size(calc-size(any, 30px), size)");
+test_invalid_value("width", "calc-size(size)");
+test_valid_value("width", "calc-size(fit-content)", "calc-size(fit-content, size)");
+test_valid_value("width", "calc-size(calc-size(fit-content, size * 2))", "calc-size(calc-size(fit-content, size * 2), size)");
+test_valid_value("width", "calc-size(calc-size(30px))", "calc-size(calc-size(any, 30px), size)");
+
+test_valid_value("flex-basis", "calc-size(any, 50px)");
+test_valid_value("flex-basis", "calc-size(auto, size)");
+test_valid_value("flex-basis", "calc-size(min-content, size)");
+test_valid_value("flex-basis", "calc-size(max-content, size)");
+test_valid_value("flex-basis", "calc-size(fit-content, size)");
+test_valid_value("flex-basis", "calc-size(content, size)");
+
+test_invalid_value("width", "calc-size(content, size)");
+test_invalid_value("height", "calc-size(content, size)");
+test_invalid_value("max-width", "calc-size(content, size)");
+test_invalid_value("max-height", "calc-size(content, size)");
+test_invalid_value("min-width", "calc-size(content, size)");
+test_invalid_value("min-height", "calc-size(content, size)");
+
+</script>
diff --git a/tests/wpt/tests/css/css-values/calc-size/calc-size-parsing.tentative.html b/tests/wpt/tests/css/css-values/calc-size/calc-size-parsing.tentative.html
deleted file mode 100644
index bec5fb1a8d5..00000000000
--- a/tests/wpt/tests/css/css-values/calc-size/calc-size-parsing.tentative.html
+++ /dev/null
@@ -1,98 +0,0 @@
-<!DOCTYPE html>
-<title>calc-size() expressions</title>
-<link rel="help" href="https://drafts.csswg.org/css-values-5/#calc-size">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="../../support/parsing-testcommon.js"></script>
-
-<script>
-
-test_valid_value("width", "calc-size(auto, size)");
-test_valid_value("min-width", "calc-size(auto, size)");
-test_valid_value("height", "calc-size(auto, size)");
-test_valid_value("min-height", "calc-size(auto, size)");
-test_invalid_value("max-height", "calc-size(auto, size)");
-test_invalid_value("max-width", "calc-size(auto, size)");
-
-test_invalid_value("height", "calc-size(none, size)");
-test_invalid_value("width", "calc-size(none, size)");
-test_invalid_value("min-height", "calc-size(none, size)");
-test_invalid_value("min-width", "calc-size(none, size)");
-test_invalid_value("max-height", "calc-size(none, size)");
-test_invalid_value("max-width", "calc-size(none, size)");
-
-test_valid_value("width", "calc-size(max-content, size)");
-test_valid_value("height", "calc-size(max-content, size)");
-test_valid_value("max-width", "calc-size(max-content, size)");
-test_valid_value("max-height", "calc-size(max-content, size)");
-test_valid_value("min-width", "calc-size(max-content, size)");
-test_valid_value("min-height", "calc-size(max-content, size)");
-test_valid_value("block-size", "calc-size(max-content, size)");
-test_valid_value("inline-size", "calc-size(max-content, size)");
-test_valid_value("max-block-size", "calc-size(max-content, size)");
-test_valid_value("max-inline-size", "calc-size(max-content, size)");
-test_valid_value("min-block-size", "calc-size(max-content, size)");
-test_valid_value("min-inline-size", "calc-size(max-content, size)");
-
-test_valid_value("width", "calc-size(fit-content, size)");
-test_valid_value("height", "calc-size(min-content, size * 2)");
-test_valid_value("max-width", "calc-size(max-content, size / 2)");
-test_valid_value("max-height", "calc-size(fit-content, 30px + size / 2)");
-test_valid_value("width", "calc-size(fit-content, 50% + size / 2)");
-
-test_valid_value("width", "calc-size(any, 25em)");
-test_valid_value("width", "calc-size(any, 40%)");
-test_valid_value("width", "calc-size(any, 50px + 30%)", "calc-size(any, 30% + 50px)");
-test_invalid_value("width", "calc-size(any, size)");
-test_invalid_value("width", "calc-size(any, fit-content)");
-test_invalid_value("width", "calc-size(any, max-content)");
-test_invalid_value("width", "calc-size(any, min-content)");
-test_valid_value("width", "calc-size(10px, sign(size) * size)");
-test_invalid_value("width", "size");
-test_invalid_value("width", "sign(size)");
-test_invalid_value("width", "calc(50px * sign(size))");
-test_invalid_value("width", "calc-size(any, calc-size(10px, sign(size) * size))");
-test_invalid_value("width", "calc-size(any, calc-size(any, 10px))");
-test_invalid_value("width", "calc(calc-size(auto, size))");
-test_invalid_value("width", "calc(50px * sign(calc-size(auto, size)))");
-test_invalid_value("width", "calc(calc-size(auto, size) + calc-size(auto, size))");
-test_invalid_value("width", "calc(abs(calc-size(auto, size)))");
-test_invalid_value("width", "calc(100px * progress(calc-size(auto, size) from calc-size(auto, 0px) to calc-size(auto, size)))");
-test_invalid_value("width", "calc(100px * progress(calc-size(auto, size) from 0px to 100px))");
-test_invalid_value("width", "calc(100px * progress(50px from calc-size(auto, 0px) to calc-size(auto, size)))");
-test_invalid_value("width", "min(calc-size(auto, 0px), calc-size(auto, size))");
-test_invalid_value("width", "calc(min(calc-size(auto, 0px), calc-size(auto, size)))");
-test_invalid_value("width", "max(calc-size(auto, 0px), calc-size(auto, size))");
-test_invalid_value("width", "calc(max(calc-size(auto, 0px), calc-size(auto, size)))");
-test_invalid_value("width", "clamp(calc-size(auto, 0px), calc-size(auto, 30px), calc-size(auto, size))");
-test_invalid_value("width", "calc(clamp(calc-size(auto, 0px), calc-size(auto, 30px), calc-size(auto, size)))");
-test_invalid_value("width", "calc(cos(calc-size(auto, 0px)))");
-test_invalid_value("width", "calc(atan2(calc-size(auto, size), calc-size(auto, 50px)))");
-test_invalid_value("width", "calc(sqrt(calc-size(auto, 0px)))");
-test_invalid_value("width", "calc(hypot(calc-size(auto, size * 0.5), calc-size(auto, size)))");
-test_invalid_value("width", "calc(round(calc-size(auto, size * 0.5), calc-size(auto, size)))");
-test_invalid_value("width", "calc(round(calc-size(auto, size * 0.5)))");
-test_invalid_value("width", "calc(mod(calc-size(auto, size * 0.5), calc-size(auto, size)))");
-test_invalid_value("width", "calc(rem(calc-size(auto, size * 0.5), calc-size(auto, size)))");
-
-test_valid_value("width", "calc-size(30px, 25em)");
-test_valid_value("width", "calc-size(calc-size(any, 30px), 25em)");
-test_valid_value("width", "calc-size(calc-size(2in, 30px), 25em)", "calc-size(calc-size(192px, 30px), 25em)");
-test_valid_value("width", "calc-size(calc-size(min-content, 30px), 25em)");
-test_valid_value("width", "calc-size(calc-size(min-content, size), size)");
-
-test_invalid_value("height", "calc(12% + calc-size(any, 31%))");
-
-// Based on the discussion in https://github.com/w3c/csswg-drafts/issues/10259
-// this presumes parse-time conversion of the one-argument form to the
-// two-argument form, but this isn't yet specified.
-test_valid_value("width", "calc-size(30px)", "calc-size(any, 30px)");
-test_valid_value("width", "calc-size(min(30px, 2em))", "calc-size(any, min(30px, 2em))");
-test_invalid_value("width", "calc-size(any)");
-test_valid_value("width", "calc-size(calc-size(any, 30px))", "calc-size(calc-size(any, 30px), size)");
-test_invalid_value("width", "calc-size(size)");
-test_valid_value("width", "calc-size(fit-content)", "calc-size(fit-content, size)");
-test_valid_value("width", "calc-size(calc-size(fit-content, size * 2))", "calc-size(calc-size(fit-content, size * 2), size)");
-test_valid_value("width", "calc-size(calc-size(30px))", "calc-size(calc-size(any, 30px), size)");
-
-</script>
diff --git a/tests/wpt/tests/css/css-values/calc-size/calc-size-width.tentative.html b/tests/wpt/tests/css/css-values/calc-size/calc-size-width.html
index 96b2719c5d1..96b2719c5d1 100644
--- a/tests/wpt/tests/css/css-values/calc-size/calc-size-width.tentative.html
+++ b/tests/wpt/tests/css/css-values/calc-size/calc-size-width.html
diff --git a/tests/wpt/tests/css/css-values/integer_interpolation_round_half_towards_positive_infinity_order.html b/tests/wpt/tests/css/css-values/integer_interpolation_round_half_towards_positive_infinity_order.html
new file mode 100644
index 00000000000..60c439ebcf4
--- /dev/null
+++ b/tests/wpt/tests/css/css-values/integer_interpolation_round_half_towards_positive_infinity_order.html
@@ -0,0 +1,39 @@
+<!doctype html>
+<title>Testing if integer interpolation is rounded towards positive infinity</title>
+<link rel="author" title="Joonghun Park" href="pjh0718@gmail.com">
+<link rel="help" href="https://drafts.csswg.org/css-values-4/#combine-integers">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+
+#flex-container {
+ display: flex;
+ animation: anim-order 4s steps(4) forwards 1;
+ animation-delay: -1s;
+ animation-play-state: paused;
+}
+
+@keyframes anim-order {
+ from {
+ order: -2;
+ }
+
+ to {
+ order: 0;
+ }
+}
+
+</style>
+<div id="flex-container"></div>
+<script>
+var test_description = "Integer interpolation should be rounded towards positive infinity";
+test(
+ t => {
+ const container = document.getElementById("flex-container");
+ const order_value = Number.parseFloat(getComputedStyle(container).getPropertyValue('order'));
+
+ assert_equals(order_value, -1, "Interpolation result for order should be rounded towards positive infinity");
+ },
+ test_description
+);
+</script>
diff --git a/tests/wpt/tests/css/css-values/integer_interpolation_round_half_towards_positive_infinity_z_index.html b/tests/wpt/tests/css/css-values/integer_interpolation_round_half_towards_positive_infinity_z_index.html
new file mode 100644
index 00000000000..c9b042ccb8f
--- /dev/null
+++ b/tests/wpt/tests/css/css-values/integer_interpolation_round_half_towards_positive_infinity_z_index.html
@@ -0,0 +1,38 @@
+<!doctype html>
+<title>Testing if integer interpolation is rounded towards positive infinity</title>
+<link rel="author" title="Joonghun Park" href="pjh0718@gmail.com">
+<link rel="help" href="https://drafts.csswg.org/css-values-4/#combine-integers">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+
+#anim-target {
+ animation: anim-z 4s steps(4) forwards 1;
+ animation-delay: -1s;
+ animation-play-state: paused;
+}
+
+@keyframes anim-z {
+ from {
+ z-index: -2;
+ }
+
+ to {
+ z-index: 0;
+ }
+}
+
+</style>
+<div id="anim-target"></div>
+<script>
+var test_description = "Integer interpolation should be rounded towards positive infinity";
+test(
+ t => {
+ const target = document.getElementById("anim-target");
+ const z_index_value = Number.parseFloat(getComputedStyle(target).getPropertyValue('z-index'));
+
+ assert_equals(z_index_value, -1, "Interpolation result for z-index should be rounded towards positive infinity");
+ },
+ test_description
+);
+</script>
diff --git a/tests/wpt/tests/css/css-values/lh-unit-same-element-font-size-dependency.html b/tests/wpt/tests/css/css-values/lh-unit-same-element-font-size-dependency.html
new file mode 100644
index 00000000000..0646f2d876c
--- /dev/null
+++ b/tests/wpt/tests/css/css-values/lh-unit-same-element-font-size-dependency.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<title>Test same-element font-size dependency with lh unit</title>
+<link rel="author" title="Tim Nguyen" href="https://github.com/nt1m">
+<link rel="help" href="https://drafts.csswg.org/css-values/#font-relative-lengths">
+<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
+<meta name="fuzzy" content="maxDifference=0-1; totalPixels=0-5000">
+<style>
+div {
+ background-image: linear-gradient(green, green);
+ background-repeat: no-repeat;
+ background-size: 100px 1lh;
+ line-height: 2em;
+ font-size: 50px;
+ width: 100px;
+ color: transparent;
+}
+</style>
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div>.</div>
diff --git a/tests/wpt/tests/css/css-values/lh-unit-same-element-line-height-dependency.html b/tests/wpt/tests/css/css-values/lh-unit-same-element-line-height-dependency.html
new file mode 100644
index 00000000000..0a9da7d536d
--- /dev/null
+++ b/tests/wpt/tests/css/css-values/lh-unit-same-element-line-height-dependency.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<title>Test same-element line-height dependency with lh unit</title>
+<link rel="author" title="Tim Nguyen" href="https://github.com/nt1m">
+<link rel="help" href="https://drafts.csswg.org/css-values/#font-relative-lengths">
+<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
+<meta name="fuzzy" content="maxDifference=0-1; totalPixels=0-5000">
+<style>
+div {
+ background-image: linear-gradient(green, green);
+ background-repeat: no-repeat;
+ background-size: 100px 1lh;
+ line-height: 100px;
+ width: 100px;
+ color: transparent;
+}
+</style>
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div>.</div>
diff --git a/tests/wpt/tests/css/css-variables/variable-css-wide-keywords.html b/tests/wpt/tests/css/css-variables/variable-css-wide-keywords.html
new file mode 100644
index 00000000000..4666729da51
--- /dev/null
+++ b/tests/wpt/tests/css/css-variables/variable-css-wide-keywords.html
@@ -0,0 +1,331 @@
+<!DOCTYPE html>
+<head>
+<title>CSS Custom Properties: Using CSS-wide keywords</title>
+<link rel="help" href="https://drafts.csswg.org/css-variables/#defining-variables">
+<meta name="assert" content="The CSS-wide keywords can be used in custom properties, with the same meaning as in any another property." />
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+ body {
+ --is-initial: initial;
+
+ --should-not-inherit: tomato;
+ --should-inherit: lightgreen;
+
+ --registered-inherits-should-not-inherit: tomato;
+ --registered-should-not-inherit: tomato;
+ --registered-inherits-should-inherit: lightgreen;
+ --registered-should-inherit: lightgreen;
+ --registered-should-revert: tomato;
+ --registered-inherits-should-revert: tomato;
+ }
+ @property --registered-inherits-should-not-inherit {
+ syntax: '<color>';
+ initial-value: lightgreen;
+ inherits: true;
+ }
+ @property --registered-should-not-inherit {
+ syntax: '<color>';
+ initial-value: lightgreen;
+ inherits: false;
+ }
+ @property --registered-inherits-should-inherit {
+ syntax: '<color>';
+ initial-value: tomato;
+ inherits: true;
+ }
+ @property --registered-should-inherit {
+ syntax: '<color>';
+ initial-value: tomato;
+ inherits: false;
+ }
+ @property --registered-should-revert {
+ syntax: '<color>';
+ initial-value: orange;
+ inherits: false;
+ }
+ @property --registered-inherits-should-revert {
+ syntax: '<color>';
+ initial-value: orange;
+ inherits: true;
+ }
+</style>
+
+<!-- Tests for values of unregistered custom properties -->
+<div class="test" style="
+ background: var(--should-not-inherit, lightgreen);
+ --should-not-inherit: initial;
+">
+ `initial` as a value for an unregistered custom property
+</div>
+
+<div class="test" style="
+ background: var(--should-inherit, tomato);
+ --should-inherit: inherit;
+">
+ `inherit` as a value for an unregistered custom property
+</div>
+
+<div class="test" style="
+ background: var(--should-inherit, tomato);
+ --should-inherit: unset;
+">
+ `unset` as a value for an unregistered custom property
+</div>
+
+<div class="test" style="
+ background: var(--should-inherit, tomato);
+ --should-inherit: revert;
+">
+ `revert` as a value for an unregistered custom property
+</div>
+
+<style>
+ #regular-revert-layer {
+ @layer {
+ --should-not-inherit: lightgreen;
+ }
+ @layer {
+ --should-not-inherit: revert-layer;
+ }
+ }
+</style>
+<div class="test" id="regular-revert-layer" style="
+ background: var(--should-not-inherit);
+">
+ `revert-layer` as a value for an unregistered custom property
+</div>
+
+
+<!-- Tests for values of registered custom properties -->
+
+<div class="test" style="
+ background: var(--registered-should-not-inherit);
+ --registered-should-not-inherit: initial;
+">
+ `initial` as a value for a non-inheriting registered custom property
+</div>
+
+<div class="test" style="
+ background: var(--registered-inherits-should-not-inherit);
+ --registered-inherits-should-not-inherit: initial;
+">
+ `initial` as a value for an inheriting registered custom property
+</div>
+
+<div class="test" style="
+ background: var(--registered-should-inherit);
+ --registered-should-inherit: inherit;
+">
+ `inherit` as a value for a non-inheriting registered custom property
+</div>
+
+<div class="test" style="
+ background: var(--registered-inherits-should-inherit);
+ --registered-inherits-should-inherit: inherit;
+">
+ `inherit` as a value for an inheriting registered custom property
+</div>
+
+<div class="test" style="
+ background: var(--registered-should-not-inherit);
+ --registered-should-not-inherit: unset;
+">
+ `unset` as a value for a non-inheriting registered custom property
+</div>
+
+<div class="test" style="
+ background: var(--registered-inherits-should-inherit);
+ --registered-inherits-should-inherit: unset;
+">
+ `unset` as a value for an inheriting registered custom property
+</div>
+
+<div class="test" style="
+ background: var(--registered-should-not-inherit);
+ --registered-should-not-inherit: revert;
+">
+ `revert` as a value for a non-inheriting registered custom property
+</div>
+
+<div class="test" style="
+ background: var(--registered-inherits-should-inherit);
+ --registered-inherits-should-inherit: revert;
+">
+ `revert` as a value for an inheriting registered custom property
+</div>
+
+<style>
+ #registered-revert-layer {
+ @layer {
+ --registered-should-revert: lightgreen;
+ }
+ @layer {
+ --registered-should-revert: revert-layer;
+ }
+ }
+</style>
+<div class="test" id="registered-revert-layer" style="
+ background: var(--registered-should-revert);
+">
+ `revert-layer` as a value for a non-inheriting registered custom property
+</div>
+
+<style>
+ #registered-revert-layer-inherits {
+ @layer {
+ --registered-inherits-should-revert: lightgreen;
+ }
+ @layer {
+ --registered-inherits-should-revert: revert-layer;
+ }
+ }
+</style>
+<div class="test" id="registered-revert-layer-inherits" style="
+ background: var(--registered-inherits-should-revert);
+">
+ `revert-layer` as a value for an inheriting registered custom property
+</div>
+
+
+<!-- Tests for `var()` fallbacks of unregistered custom properties -->
+
+<div class="test" style="
+ background: var(--should-not-inherit, lightgreen);
+ --should-not-inherit: var(--is-initial, initial);
+">
+ `initial` as a `var()` fallback for an unregistered custom property
+</div>
+
+<div class="test" style="
+ background: var(--should-inherit, tomato);
+ --should-inherit: var(--is-initial, inherit);
+">
+ `inherit` as a `var()` fallback for an unregistered custom property
+</div>
+
+<div class="test" style="
+ background: var(--should-inherit, tomato);
+ --should-inherit: var(--is-initial, unset);
+">
+ `unset` as a `var()` fallback for an unregistered custom property
+</div>
+
+<div class="test" style="
+ background: var(--should-inherit, tomato);
+ --should-inherit: var(--is-initial, unset);
+">
+ `revert` as a `var()` fallback for an unregistered custom property
+</div>
+
+<style>
+ #regular-fallback-revert-layer {
+ @layer {
+ --should-not-inherit: lightgreen;
+ }
+ @layer {
+ --should-not-inherit: var(--is-initial, revert-layer);
+ }
+ }
+</style>
+<div class="test" id="regular-fallback-revert-layer" style="
+ background: var(--should-not-inherit);
+">
+ `revert-layer` as a `var()` fallback for an unregistered custom property
+</div>
+
+
+<!-- Tests for `var()` fallbacks of registered custom properties -->
+
+<div class="test" style="
+ background: var(--registered-should-not-inherit);
+ --registered-should-not-inherit: var(--is-initial, initial);
+">
+ `initial` as a `var()` fallback for a non-inheriting registered custom property
+</div>
+
+<div class="test" style="
+ background: var(--registered-inherits-should-not-inherit);
+ --registered-inherits-should-not-inherit: var(--is-initial, initial);
+">
+ `initial` as a `var()` fallback for an inheriting registered custom property
+</div>
+
+<div class="test" style="
+ background: var(--registered-should-inherit);
+ --registered-should-inherit: var(--is-initial, inherit);
+">
+ `inherit` as a `var()` fallback for a non-inheriting registered custom property
+</div>
+
+<div class="test" style="
+ background: var(--registered-inherits-should-inherit);
+ --registered-inherits-should-inherit: var(--is-initial, inherit);
+">
+ `inherit` as a `var()` fallback for an inheriting registered custom property
+</div>
+
+<div class="test" style="
+ background: var(--registered-should-not-inherit);
+ --registered-should-not-inherit: var(--is-initial, unset);
+">
+ `unset` as a `var()` fallback for a non-inheriting registered custom property
+</div>
+
+<div class="test" style="
+ background: var(--registered-inherits-should-inherit);
+ --registered-inherits-should-inherit: var(--is-initial, unset);
+">
+ `unset` as a `var()` fallback for an inheriting registered custom property
+</div>
+
+<div class="test" style="
+ background: var(--registered-should-not-inherit);
+ --registered-should-not-inherit: var(--is-initial, revert);
+">
+ `revert` as a `var()` fallback for a non-inheriting registered custom property
+</div>
+
+<div class="test" style="
+ background: var(--registered-inherits-should-inherit);
+ --registered-inherits-should-inherit: var(--is-initial, revert);
+">
+ `revert` as a `var()` fallback for an inheriting registered custom property
+</div>
+
+<style>
+ #registered-fallback-revert-layer {
+ @layer {
+ --registered-should-revert: lightgreen;
+ }
+ @layer {
+ --registered-should-revert: var(--is-initial, revert-layer);
+ }
+ }
+</style>
+<div class="test" id="registered-fallback-revert-layer" style="
+ background: var(--registered-should-revert);
+">
+ `revert-layer` as a `var()` fallback for a non-inheriting registered custom property
+</div>
+
+<style>
+ #registered-fallback-revert-layer-inherits {
+ @layer {
+ --registered-inherits-should-revert: lightgreen;
+ }
+ @layer {
+ --registered-inherits-should-revert: var(--is-initial, revert-layer);
+ }
+ }
+</style>
+<div class="test" id="registered-fallback-revert-layer-inherits" style="
+ background: var(--registered-inherits-should-revert);
+">
+ `revert-layer` as a `var()` fallback for an inheriting registered custom property
+</div>
+
+<pre id="out"></pre>
+<script>
+ [...document.querySelectorAll('.test')].map(el => test(() => assert_equals(getComputedStyle(el).getPropertyValue('background-color'), 'rgb(144, 238, 144)'), el.textContent.trim()));
+</script>
diff --git a/tests/wpt/tests/css/css-view-transitions/block-with-overflowing-text-ref.html b/tests/wpt/tests/css/css-view-transitions/block-with-overflowing-text-ref.html
index 8d9c430fcc7..ec5d8712000 100644
--- a/tests/wpt/tests/css/css-view-transitions/block-with-overflowing-text-ref.html
+++ b/tests/wpt/tests/css/css-view-transitions/block-with-overflowing-text-ref.html
@@ -3,8 +3,13 @@
<title>View transitions: block with overflowing text is rendered correctly (ref)</title>
<link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/">
<link rel="author" href="mailto:khushalsagar@chromium.org">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<style>
+:root {
+ font: 20px/1 Ahem;
+}
+
#target {
text-shadow: red -20px -50px;
position: relative;
diff --git a/tests/wpt/tests/css/css-view-transitions/block-with-overflowing-text.html b/tests/wpt/tests/css/css-view-transitions/block-with-overflowing-text.html
index 15d1653bfc2..61b3dc1329c 100644
--- a/tests/wpt/tests/css/css-view-transitions/block-with-overflowing-text.html
+++ b/tests/wpt/tests/css/css-view-transitions/block-with-overflowing-text.html
@@ -4,12 +4,16 @@
<link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/">
<link rel="author" href="mailto:khushalsagar@chromium.org">
<link rel="match" href="block-with-overflowing-text-ref.html">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<meta name="fuzzy" content="maxDifference=0-2;totalPixels=0-1200">
<script src="/common/reftest-wait.js"></script>
<script src="/common/rendering-utils.js"></script>
<style>
+:root {
+ font: 20px/1 Ahem;
+}
#target {
text-shadow: red -20px -50px;
position: relative;
diff --git a/tests/wpt/tests/css/css-view-transitions/clip-path-larger-than-border-box-on-child-of-named-element.html b/tests/wpt/tests/css/css-view-transitions/clip-path-larger-than-border-box-on-child-of-named-element.html
index 4a26c50ef82..75019d349d1 100644
--- a/tests/wpt/tests/css/css-view-transitions/clip-path-larger-than-border-box-on-child-of-named-element.html
+++ b/tests/wpt/tests/css/css-view-transitions/clip-path-larger-than-border-box-on-child-of-named-element.html
@@ -51,6 +51,8 @@ html::view-transition { background: lightpink; }
<div class="child"></div>
</div>
+<div class=hidden></div>
+
<script>
failIfNot(document.startViewTransition, "Missing document.startViewTransition");
diff --git a/tests/wpt/tests/css/css-view-transitions/fractional-translation-from-position-ref.html b/tests/wpt/tests/css/css-view-transitions/fractional-translation-from-position-ref.html
index 0674b265ac9..9821593438e 100644
--- a/tests/wpt/tests/css/css-view-transitions/fractional-translation-from-position-ref.html
+++ b/tests/wpt/tests/css/css-view-transitions/fractional-translation-from-position-ref.html
@@ -3,11 +3,13 @@
<title>View transitions: fractional translation from position (ref)</title>
<link rel="help" href="https://www.w3.org/TR/css-view-transitions-1/">
<link rel="author" href="mailto:khushalsagar@chromium.org">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<style>
body {
width: 100vw;
height: 100vh;
background: grey;
+ font: 12px/1 Ahem;
}
#target {
diff --git a/tests/wpt/tests/css/css-view-transitions/fractional-translation-from-position.html b/tests/wpt/tests/css/css-view-transitions/fractional-translation-from-position.html
index a09b08cf00c..6187348b9ea 100644
--- a/tests/wpt/tests/css/css-view-transitions/fractional-translation-from-position.html
+++ b/tests/wpt/tests/css/css-view-transitions/fractional-translation-from-position.html
@@ -4,12 +4,14 @@
<link rel="help" href="https://www.w3.org/TR/css-view-transitions-1/">
<link rel="author" href="mailto:khushalsagar@chromium.org">
<link rel="match" href="fractional-translation-from-position-ref.html">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<script src="/common/reftest-wait.js"></script>
<style>
body {
width: 100vw;
height: 100vh;
background: grey;
+ font: 12px/1 Ahem;
}
#target {
diff --git a/tests/wpt/tests/css/css-view-transitions/inline-element-size-ref.html b/tests/wpt/tests/css/css-view-transitions/inline-element-size-ref.html
index 14b76fb07e7..ea791930e9b 100644
--- a/tests/wpt/tests/css/css-view-transitions/inline-element-size-ref.html
+++ b/tests/wpt/tests/css/css-view-transitions/inline-element-size-ref.html
@@ -3,10 +3,12 @@
<title>View transitions: capture elements with display inline (ref)</title>
<link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/">
<link rel="author" href="mailto:vmpstr@chromium.org">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<style>
body {
background: pink;
+ font: 20px/1 Ahem;
}
#box {
background: green;
diff --git a/tests/wpt/tests/css/css-view-transitions/inline-element-size.html b/tests/wpt/tests/css/css-view-transitions/inline-element-size.html
index 4f94c92550e..a571ace718a 100644
--- a/tests/wpt/tests/css/css-view-transitions/inline-element-size.html
+++ b/tests/wpt/tests/css/css-view-transitions/inline-element-size.html
@@ -4,8 +4,13 @@
<link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/">
<link rel="author" href="mailto:vmpstr@chromium.org">
<link rel="match" href="inline-element-size-ref.html">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<script src="/common/reftest-wait.js"></script>
<style>
+:root {
+ font: 20px/1 Ahem;
+}
+
#box {
background: green;
view-transition-name: target;
diff --git a/tests/wpt/tests/css/css-view-transitions/massive-element-below-viewport-partially-onscreen-new.html b/tests/wpt/tests/css/css-view-transitions/massive-element-below-viewport-partially-onscreen-new.html
index 42f97555f5c..127dc2ef344 100644
--- a/tests/wpt/tests/css/css-view-transitions/massive-element-below-viewport-partially-onscreen-new.html
+++ b/tests/wpt/tests/css/css-view-transitions/massive-element-below-viewport-partially-onscreen-new.html
@@ -4,10 +4,15 @@
<link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/">
<link rel="author" href="mailto:khushalsagar@chromium.org">
<link rel="match" href="massive-element-below-viewport-partially-onscreen-ref.html">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<meta name="fuzzy" content="maxDifference=0-2;totalPixels=0-330">
<script src="/common/reftest-wait.js"></script>
<style>
+:root {
+ font: 12px/1 Ahem;
+}
+
.target {
inline-size: 100px;
block-size: 40000px;
@@ -15,6 +20,10 @@
}
.top {
+ /* Ahem font sometimes causes slight differences between actual and reference
+ images due to anti-aliasing when bordering the white background in this
+ case. Adding a padding reduces the test flakiness. */
+ padding-top: 1px;
inline-size: 100%;
block-size: 100px;
background: lightblue;
diff --git a/tests/wpt/tests/css/css-view-transitions/massive-element-below-viewport-partially-onscreen-old.html b/tests/wpt/tests/css/css-view-transitions/massive-element-below-viewport-partially-onscreen-old.html
index 87b9a207956..275c0d8840b 100644
--- a/tests/wpt/tests/css/css-view-transitions/massive-element-below-viewport-partially-onscreen-old.html
+++ b/tests/wpt/tests/css/css-view-transitions/massive-element-below-viewport-partially-onscreen-old.html
@@ -4,10 +4,15 @@
<link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/">
<link rel="author" href="mailto:khushalsagar@chromium.org">
<link rel="match" href="massive-element-below-viewport-partially-onscreen-ref.html">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<meta name="fuzzy" content="maxDifference=0-2; totalPixels=0-1600">
<script src="/common/reftest-wait.js"></script>
<style>
+:root {
+ font: 12px/1 Ahem;
+}
+
.target {
inline-size: 100px;
block-size: 40000px;
@@ -15,6 +20,10 @@
}
.top {
+ /* Ahem font sometimes causes slight difference between actual and reference
+ images due to anti-aliasing when bordering the white background in this
+ case. Adding a padding reduces the test flakiness. */
+ padding-top: 1px;
inline-size: 100%;
block-size: 100px;
background: lightblue;
diff --git a/tests/wpt/tests/css/css-view-transitions/massive-element-below-viewport-partially-onscreen-ref.html b/tests/wpt/tests/css/css-view-transitions/massive-element-below-viewport-partially-onscreen-ref.html
index 3c2ae6a6f58..72861d37a09 100644
--- a/tests/wpt/tests/css/css-view-transitions/massive-element-below-viewport-partially-onscreen-ref.html
+++ b/tests/wpt/tests/css/css-view-transitions/massive-element-below-viewport-partially-onscreen-ref.html
@@ -2,7 +2,12 @@
<title>View transitions: massive element below viewport partially onscreen (ref)</title>
<link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/">
<link rel="author" href="mailto:khushalsagar@chromium.org">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<style>
+:root {
+ font: 12px/1 Ahem;
+}
+
.target {
contain: paint;
inline-size: 100px;
@@ -11,6 +16,10 @@
}
.top {
+ /* Ahem font sometimes causes slight difference between actual and reference
+ images due to anti-aliasing when bordering the white background in this
+ case. Adding a padding reduces the test flakiness. */
+ padding-top: 1px;
inline-size: 100%;
block-size: 100px;
background: lightblue;
diff --git a/tests/wpt/tests/css/css-view-transitions/massive-element-left-of-viewport-partially-onscreen-new.html b/tests/wpt/tests/css/css-view-transitions/massive-element-left-of-viewport-partially-onscreen-new.html
index accd909158e..a472c090618 100644
--- a/tests/wpt/tests/css/css-view-transitions/massive-element-left-of-viewport-partially-onscreen-new.html
+++ b/tests/wpt/tests/css/css-view-transitions/massive-element-left-of-viewport-partially-onscreen-new.html
@@ -4,12 +4,14 @@
<link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/">
<link rel="author" href="mailto:khushalsagar@chromium.org">
<link rel="match" href="massive-element-left-of-viewport-partially-onscreen-ref.html">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<meta name="fuzzy" content="maxDifference=0-2;totalPixels=0-330">
<script src="/common/reftest-wait.js"></script>
<style>
:root {
writing-mode: vertical-lr;
+ font: 12px/1 Ahem;
}
.target {
diff --git a/tests/wpt/tests/css/css-view-transitions/massive-element-left-of-viewport-partially-onscreen-old.html b/tests/wpt/tests/css/css-view-transitions/massive-element-left-of-viewport-partially-onscreen-old.html
index e16806e8f37..6c29737ab35 100644
--- a/tests/wpt/tests/css/css-view-transitions/massive-element-left-of-viewport-partially-onscreen-old.html
+++ b/tests/wpt/tests/css/css-view-transitions/massive-element-left-of-viewport-partially-onscreen-old.html
@@ -4,12 +4,14 @@
<link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/">
<link rel="author" href="mailto:khushalsagar@chromium.org">
<link rel="match" href="massive-element-left-of-viewport-partially-onscreen-ref.html">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<meta name="fuzzy" content="maxDifference=0-3;totalPixels=0-330">
<script src="/common/reftest-wait.js"></script>
<style>
:root {
writing-mode: vertical-lr;
+ font: 12px/1 Ahem;
}
.target {
diff --git a/tests/wpt/tests/css/css-view-transitions/massive-element-left-of-viewport-partially-onscreen-ref.html b/tests/wpt/tests/css/css-view-transitions/massive-element-left-of-viewport-partially-onscreen-ref.html
index 436783b42e9..aa15c1fb22a 100644
--- a/tests/wpt/tests/css/css-view-transitions/massive-element-left-of-viewport-partially-onscreen-ref.html
+++ b/tests/wpt/tests/css/css-view-transitions/massive-element-left-of-viewport-partially-onscreen-ref.html
@@ -2,9 +2,11 @@
<title>View transitions: massive element on top of viewport partially onscreen (ref)</title>
<link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/">
<link rel="author" href="mailto:khushalsagar@chromium.org">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<style>
:root {
writing-mode: vertical-lr;
+ font: 12px/1 Ahem;
}
.target {
diff --git a/tests/wpt/tests/css/css-view-transitions/massive-element-on-top-of-viewport-partially-onscreen-new.html b/tests/wpt/tests/css/css-view-transitions/massive-element-on-top-of-viewport-partially-onscreen-new.html
index c301e470996..f9a3babdf99 100644
--- a/tests/wpt/tests/css/css-view-transitions/massive-element-on-top-of-viewport-partially-onscreen-new.html
+++ b/tests/wpt/tests/css/css-view-transitions/massive-element-on-top-of-viewport-partially-onscreen-new.html
@@ -4,10 +4,15 @@
<link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/">
<link rel="author" href="mailto:khushalsagar@chromium.org">
<link rel="match" href="massive-element-on-top-of-viewport-partially-onscreen-ref.html">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<meta name="fuzzy" content="maxDifference=0-2;totalPixels=0-330">
<script src="/common/reftest-wait.js"></script>
<style>
+:root {
+ font: 12px/1 Ahem;
+}
+
.target {
inline-size: 100px;
block-size: 40000px;
diff --git a/tests/wpt/tests/css/css-view-transitions/massive-element-on-top-of-viewport-partially-onscreen-old.html b/tests/wpt/tests/css/css-view-transitions/massive-element-on-top-of-viewport-partially-onscreen-old.html
index 1f810af745b..15786b55fc5 100644
--- a/tests/wpt/tests/css/css-view-transitions/massive-element-on-top-of-viewport-partially-onscreen-old.html
+++ b/tests/wpt/tests/css/css-view-transitions/massive-element-on-top-of-viewport-partially-onscreen-old.html
@@ -4,10 +4,15 @@
<link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/">
<link rel="author" href="mailto:khushalsagar@chromium.org">
<link rel="match" href="massive-element-on-top-of-viewport-partially-onscreen-ref.html">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<meta name="fuzzy" content="maxDifference=0-3;totalPixels=0-330">
<script src="/common/reftest-wait.js"></script>
<style>
+:root {
+ font: 12px/1 Ahem;
+}
+
.target {
inline-size: 100px;
block-size: 40000px;
diff --git a/tests/wpt/tests/css/css-view-transitions/massive-element-on-top-of-viewport-partially-onscreen-ref.html b/tests/wpt/tests/css/css-view-transitions/massive-element-on-top-of-viewport-partially-onscreen-ref.html
index 6377c72616a..31c9c4e1a6e 100644
--- a/tests/wpt/tests/css/css-view-transitions/massive-element-on-top-of-viewport-partially-onscreen-ref.html
+++ b/tests/wpt/tests/css/css-view-transitions/massive-element-on-top-of-viewport-partially-onscreen-ref.html
@@ -2,7 +2,12 @@
<title>View transitions: massive element on top of viewport partially onscreen (ref)</title>
<link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/">
<link rel="author" href="mailto:khushalsagar@chromium.org">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<style>
+:root {
+ font: 12px/1 Ahem;
+}
+
.target {
contain: paint;
inline-size: 100px;
diff --git a/tests/wpt/tests/css/css-view-transitions/massive-element-right-of-viewport-partially-onscreen-new.html b/tests/wpt/tests/css/css-view-transitions/massive-element-right-of-viewport-partially-onscreen-new.html
index ac3fe48a0a7..9daadd97de4 100644
--- a/tests/wpt/tests/css/css-view-transitions/massive-element-right-of-viewport-partially-onscreen-new.html
+++ b/tests/wpt/tests/css/css-view-transitions/massive-element-right-of-viewport-partially-onscreen-new.html
@@ -4,12 +4,14 @@
<link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/">
<link rel="author" href="mailto:khushalsagar@chromium.org">
<link rel="match" href="massive-element-right-of-viewport-partially-onscreen-ref.html">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<meta name="fuzzy" content="maxDifference=0-2;totalPixels=0-330">
<script src="/common/reftest-wait.js"></script>
<style>
:root {
writing-mode: vertical-lr;
+ font: 12px/1 Ahem;
}
.target {
diff --git a/tests/wpt/tests/css/css-view-transitions/massive-element-right-of-viewport-partially-onscreen-old.html b/tests/wpt/tests/css/css-view-transitions/massive-element-right-of-viewport-partially-onscreen-old.html
index 2626910d783..b99d752e3fe 100644
--- a/tests/wpt/tests/css/css-view-transitions/massive-element-right-of-viewport-partially-onscreen-old.html
+++ b/tests/wpt/tests/css/css-view-transitions/massive-element-right-of-viewport-partially-onscreen-old.html
@@ -4,12 +4,14 @@
<link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/">
<link rel="author" href="mailto:khushalsagar@chromium.org">
<link rel="match" href="massive-element-right-of-viewport-partially-onscreen-ref.html">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<meta name="fuzzy" content="maxDifference=0-3;totalPixels=0-445">
<script src="/common/reftest-wait.js"></script>
<style>
:root {
writing-mode: vertical-lr;
+ font: 12px/1 Ahem;
}
.target {
diff --git a/tests/wpt/tests/css/css-view-transitions/massive-element-right-of-viewport-partially-onscreen-ref.html b/tests/wpt/tests/css/css-view-transitions/massive-element-right-of-viewport-partially-onscreen-ref.html
index b134c158589..5a50d7fabf8 100644
--- a/tests/wpt/tests/css/css-view-transitions/massive-element-right-of-viewport-partially-onscreen-ref.html
+++ b/tests/wpt/tests/css/css-view-transitions/massive-element-right-of-viewport-partially-onscreen-ref.html
@@ -2,9 +2,11 @@
<title>View transitions: massive element below viewport partially onscreen (ref)</title>
<link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/">
<link rel="author" href="mailto:khushalsagar@chromium.org">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<style>
:root {
writing-mode: vertical-lr;
+ font: 12px/1 Ahem;
}
.target {
diff --git a/tests/wpt/tests/css/css-view-transitions/multiline-span-with-overflowing-text-and-box-decorations-ref.html b/tests/wpt/tests/css/css-view-transitions/multiline-span-with-overflowing-text-and-box-decorations-ref.html
index ca9efc52d6e..47edb8a3b03 100644
--- a/tests/wpt/tests/css/css-view-transitions/multiline-span-with-overflowing-text-and-box-decorations-ref.html
+++ b/tests/wpt/tests/css/css-view-transitions/multiline-span-with-overflowing-text-and-box-decorations-ref.html
@@ -3,8 +3,13 @@
<title>View transitions: span with overflowing text is rendered correctly (ref)</title>
<link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/">
<link rel="author" href="mailto:khushalsagar@chromium.org">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<style>
+:root {
+ font: 20px/1 Ahem;
+}
+
div {
width: 250px;
visibility: hidden;
diff --git a/tests/wpt/tests/css/css-view-transitions/multiline-span-with-overflowing-text-and-box-decorations.html b/tests/wpt/tests/css/css-view-transitions/multiline-span-with-overflowing-text-and-box-decorations.html
index 8fff184b2a7..423cd255081 100644
--- a/tests/wpt/tests/css/css-view-transitions/multiline-span-with-overflowing-text-and-box-decorations.html
+++ b/tests/wpt/tests/css/css-view-transitions/multiline-span-with-overflowing-text-and-box-decorations.html
@@ -4,12 +4,17 @@
<link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/">
<link rel="author" href="mailto:khushalsagar@chromium.org">
<link rel="match" href="multiline-span-with-overflowing-text-and-box-decorations-ref.html">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<meta name="fuzzy" content="maxDifference=0-3; totalPixels=0-4900">
<script src="/common/reftest-wait.js"></script>
<script src="/common/rendering-utils.js"></script>
<style>
+:root {
+ font: 20px/1 Ahem;
+}
+
#wrapper {
width: 250px;
visibility: hidden;
diff --git a/tests/wpt/tests/css/css-view-transitions/navigation/pagereveal-ctor.html b/tests/wpt/tests/css/css-view-transitions/navigation/pagereveal-ctor.html
new file mode 100644
index 00000000000..a840b29f317
--- /dev/null
+++ b/tests/wpt/tests/css/css-view-transitions/navigation/pagereveal-ctor.html
@@ -0,0 +1,42 @@
+<!doctype html>
+<title>ßPageRevelEvent constructor</title>
+<link rel="help" href="https://html.spec.whatwg.org/multipage/nav-history-apis.html#the-pagerevealevent-interface">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<div id="log"></div>
+<script>
+test(function() {
+ var e = new PageRevealEvent("something");
+ assert_true(e instanceof PageRevealEvent);
+ assert_equals(e.type, "something");
+ assert_equals(e.viewTransition, null);
+}, "Constructing pagereveal event");
+
+test(function() {
+ var e = new PageRevealEvent("pagereveal");
+ assert_true(e instanceof PageRevealEvent);
+ assert_equals(e.type, "pagereveal");
+ assert_equals(e.viewTransition, null);
+}, "Constructing pagereveal event with a custom name");
+
+test(function() {
+ var e = new PageRevealEvent("pagereveal", {});
+ assert_true(e instanceof PageRevealEvent);
+ assert_equals(e.type, "pagereveal");
+ assert_equals(e.viewTransition, null);
+}, "Constructing pagereveal event with empty dictionary");
+
+test(function() {
+ var e = new PageRevealEvent("pagereveal", {viewTransition: null});
+ assert_true(e instanceof PageRevealEvent);
+ assert_equals(e.type, "pagereveal");
+ assert_equals(e.viewTransition, null);
+}, "Constructing pagereveal event with a null viewTransition");
+test(function() {
+ const viewTransition = document.startViewTransition();
+ var e = new PageRevealEvent("pagereveal", {viewTransition});
+ assert_true(e instanceof PageRevealEvent);
+ assert_equals(e.type, "pagereveal");
+ assert_equals(e.viewTransition, viewTransition);
+}, "Constructing pagereveal event with a viewTransition");
+</script> \ No newline at end of file
diff --git a/tests/wpt/tests/css/css-view-transitions/navigation/pageswap-ctor.html b/tests/wpt/tests/css/css-view-transitions/navigation/pageswap-ctor.html
new file mode 100644
index 00000000000..3e4e9b64661
--- /dev/null
+++ b/tests/wpt/tests/css/css-view-transitions/navigation/pageswap-ctor.html
@@ -0,0 +1,54 @@
+<!doctype html>
+<title> PageSwapEvent constructor</title>
+<link rel="help" href="https://html.spec.whatwg.org/multipage/nav-history-apis.html#the-pageswapevent-interface">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<div id="log"></div>
+<script>
+test(function() {
+ var e = new PageSwapEvent("something");
+ assert_true(e instanceof PageSwapEvent);
+ assert_equals(e.type, "something");
+ assert_equals(e.viewTransition, null);
+ assert_equals(e.activation, null);
+}, "Constructing pageswap event");
+
+test(function() {
+ var e = new PageSwapEvent("pageswap");
+ assert_true(e instanceof PageSwapEvent);
+ assert_equals(e.type, "pageswap");
+ assert_equals(e.viewTransition, null);
+ assert_equals(e.activation, null);
+}, "Constructing pageswap event with a custom name");
+
+test(function() {
+ var e = new PageSwapEvent("pageswap", {});
+ assert_true(e instanceof PageSwapEvent);
+ assert_equals(e.type, "pageswap");
+ assert_equals(e.viewTransition, null);
+ assert_equals(e.activation, null);
+}, "Constructing pageswap event with empty dictionary");
+
+test(function() {
+ var e = new PageSwapEvent("pageswap", {viewTransition: null});
+ assert_true(e instanceof PageSwapEvent);
+ assert_equals(e.type, "pageswap");
+ assert_equals(e.viewTransition, null);
+ assert_equals(e.activation, null);
+}, "Constructing pageswap event with a null viewTransition");
+test(function() {
+ const viewTransition = document.startViewTransition();
+ var e = new PageSwapEvent("pageswap", {viewTransition});
+ assert_true(e instanceof PageSwapEvent);
+ assert_equals(e.type, "pageswap");
+ assert_equals(e.viewTransition, viewTransition);
+}, "Constructing pageswap event with a viewTransition");
+test(function() {
+ const viewTransition = document.startViewTransition();
+ var e = new PageSwapEvent("pageswap", {viewTransition, activation: navigation.activation});
+ assert_true(e instanceof PageSwapEvent);
+ assert_equals(e.type, "pageswap");
+ assert_equals(e.viewTransition, viewTransition);
+ assert_equals(e.activation, navigation.activation);
+}, "Constructing pageswap event with a viewTransition and activation");
+</script> \ No newline at end of file
diff --git a/tests/wpt/tests/css/css-view-transitions/nested/adjust-transform-with-scale.html b/tests/wpt/tests/css/css-view-transitions/nested/adjust-transform-with-scale.html
new file mode 100644
index 00000000000..e58a7f36300
--- /dev/null
+++ b/tests/wpt/tests/css/css-view-transitions/nested/adjust-transform-with-scale.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<html class=reftest-wait>
+<title>Nested group name should match direct parent</title>
+<meta name=fuzzy content="maxDifference=0-255; totalPixels=0-1250">
+<link rel="help" href="https://drafts.csswg.org/css-view-transitions-2/">
+<link rel="match" href="nested-ref-100.html">
+<script src="/common/reftest-wait.js"></script>
+<script src="resources/compute-test.js"></script>
+<style>
+ body {
+ margin: 0;
+ }
+ div {
+ position: absolute;
+ width: 25px;
+ height: 25px;
+ transform-origin: 0 0;
+ scale: 2;
+ }
+
+ .parent {
+ view-transition-name: parent;
+ top: 50px;
+ left: 50px;
+ }
+
+ .child {
+ top: 25px;
+ left: 25px;
+ view-transition-name: child;
+ view-transition-group: parent;
+ background: green;
+ }
+</style>
+<body>
+ <div class="parent">
+ <div class="child"></div>
+ </div>
+</body> \ No newline at end of file
diff --git a/tests/wpt/tests/css/css-view-transitions/nested/adjust-transform.html b/tests/wpt/tests/css/css-view-transitions/nested/adjust-transform.html
new file mode 100644
index 00000000000..bbf9e8376e5
--- /dev/null
+++ b/tests/wpt/tests/css/css-view-transitions/nested/adjust-transform.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html class=reftest-wait>
+<title>Nested group name should match direct parent</title>
+<meta name=fuzzy content="maxDifference=0-255; totalPixels=0-515">
+<link rel="help" href="https://drafts.csswg.org/css-view-transitions-2/">
+<link rel="match" href="nested-ref-100.html">
+<script src="/common/reftest-wait.js"></script>
+<script src="resources/compute-test.js"></script>
+<style>
+ body {
+ margin: 0;
+ }
+ div {
+ position: absolute;
+ top: 50px;
+ left: 50px;
+ width: 100px;
+ height: 100px;
+ }
+
+ .parent {
+ view-transition-name: parent;
+ }
+
+ .child {
+ view-transition-name: child;
+ view-transition-group: parent;
+ background: green;
+ }
+</style>
+<body>
+ <div class="parent">
+ <div class="child"></div>
+ </div>
+</body> \ No newline at end of file
diff --git a/tests/wpt/tests/css/css-view-transitions/nested/compute-explicit-name-direct.html b/tests/wpt/tests/css/css-view-transitions/nested/compute-explicit-name-direct.html
new file mode 100644
index 00000000000..d0b3e0f16d6
--- /dev/null
+++ b/tests/wpt/tests/css/css-view-transitions/nested/compute-explicit-name-direct.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html class=reftest-wait>
+<title>Nested group name should match direct parent</title>
+<meta name=fuzzy content="maxDifference=0-255; totalPixels=0-515">
+<link rel="help" href="https://drafts.csswg.org/css-view-transitions-2/">
+<link rel="match" href="nested-ref.html">
+<link rel=stylesheet href="resources/compute-common.css"></link>
+<script src="/common/reftest-wait.js"></script>
+<script src="resources/compute-test.js"></script>
+<body>
+ <div class="green">
+ <div class="test green-ref"></div>
+ </div>
+</body> \ No newline at end of file
diff --git a/tests/wpt/tests/css/css-view-transitions/nested/compute-explicit-name-nested-vt-names.html b/tests/wpt/tests/css/css-view-transitions/nested/compute-explicit-name-nested-vt-names.html
new file mode 100644
index 00000000000..b5b12197712
--- /dev/null
+++ b/tests/wpt/tests/css/css-view-transitions/nested/compute-explicit-name-nested-vt-names.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<html class=reftest-wait>
+<title>Nested group name should match non-direct parent</title>
+<meta name=fuzzy content="maxDifference=0-255; totalPixels=0-515">
+<link rel="help" href="https://drafts.csswg.org/css-view-transitions-2/">
+<link rel="match" href="nested-ref.html">
+<link rel=stylesheet href="resources/compute-common.css"></link>
+<script src="/common/reftest-wait.js"></script>
+<script src="resources/compute-test.js"></script>
+<style>
+ ::view-transition-group(yellow) {
+ opacity: 0;
+ }
+
+ .yellow {
+ view-transition-name: yellow;
+ }
+</style>
+<body>
+ <div class="green">
+ <div class="yellow">
+ <div class="test green-ref"></div>
+ </div>
+ </div>
+</body> \ No newline at end of file
diff --git a/tests/wpt/tests/css/css-view-transitions/nested/compute-explicit-name-nested.html b/tests/wpt/tests/css/css-view-transitions/nested/compute-explicit-name-nested.html
new file mode 100644
index 00000000000..ad47461b142
--- /dev/null
+++ b/tests/wpt/tests/css/css-view-transitions/nested/compute-explicit-name-nested.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html class=reftest-wait>
+<title>Nested group name should match non-direct parent</title>
+<meta name=fuzzy content="maxDifference=0-255; totalPixels=0-515">
+<link rel="help" href="https://drafts.csswg.org/css-view-transitions-2/">
+<link rel="match" href="nested-ref.html">
+<link rel=stylesheet href="resources/compute-common.css"></link>
+<script src="/common/reftest-wait.js"></script>
+<script src="resources/compute-test.js"></script>
+<body>
+ <div class="green">
+ <div>
+ <div class="test green-ref"></div>
+ </div>
+ </div>
+</body> \ No newline at end of file
diff --git a/tests/wpt/tests/css/css-view-transitions/nested/compute-explicit-name-non-ancestor.html b/tests/wpt/tests/css/css-view-transitions/nested/compute-explicit-name-non-ancestor.html
new file mode 100644
index 00000000000..8a2c69147ad
--- /dev/null
+++ b/tests/wpt/tests/css/css-view-transitions/nested/compute-explicit-name-non-ancestor.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html class="reftest-wait no-match">
+<title>Explicit view-transition-group name can only match ancestors</title>
+<meta name=fuzzy content="maxDifference=0-255; totalPixels=0-515">
+<link rel="help" href="https://drafts.csswg.org/css-view-transitions-2/">
+<link rel="match" href="nested-ref.html">
+<link rel=stylesheet href="resources/compute-common.css"></link>
+<script src="/common/reftest-wait.js"></script>
+<script src="resources/compute-test.js"></script>
+<body>
+ <div class="red"></div>
+ <!-- this would appear as green because it inherits from the ::view-transition-group -->
+ <div class="test red-ref"></div>
+</body> \ No newline at end of file
diff --git a/tests/wpt/tests/css/css-view-transitions/nested/compute-explicit-name-non-existent.html b/tests/wpt/tests/css/css-view-transitions/nested/compute-explicit-name-non-existent.html
new file mode 100644
index 00000000000..2e3d71f96d1
--- /dev/null
+++ b/tests/wpt/tests/css/css-view-transitions/nested/compute-explicit-name-non-existent.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html class="reftest-wait no-match">
+<title>Explicit view-transition-group name can only match other groups</title>
+<meta name=fuzzy content="maxDifference=0-255; totalPixels=0-515">
+<link rel="help" href="https://drafts.csswg.org/css-view-transitions-2/">
+<link rel="match" href="nested-ref.html">
+<link rel=stylesheet href="resources/compute-common.css"></link>
+<script src="/common/reftest-wait.js"></script>
+<script src="resources/compute-test.js"></script>
+<body>
+ <!-- this would appear as green because it inherits from the ::view-transition-group -->
+ <div class="test red-ref"></div>
+</body> \ No newline at end of file
diff --git a/tests/wpt/tests/css/css-view-transitions/nested/compute-explicit-name-self.html b/tests/wpt/tests/css/css-view-transitions/nested/compute-explicit-name-self.html
new file mode 100644
index 00000000000..09aa0f65331
--- /dev/null
+++ b/tests/wpt/tests/css/css-view-transitions/nested/compute-explicit-name-self.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<html class="reftest-wait no-match">
+<title>Explicit view-transition-group name cannot reference itself</title>
+<meta name=fuzzy content="maxDifference=0-255; totalPixels=0-515">
+<link rel="help" href="https://drafts.csswg.org/css-view-transitions-2/">
+<link rel="match" href="nested-ref.html">
+<link rel=stylesheet href="resources/compute-common.css"></link>
+<script src="/common/reftest-wait.js"></script>
+<script src="resources/compute-test.js"></script>
+<body>
+ <div class="test test-ref"></div>
+</body> \ No newline at end of file
diff --git a/tests/wpt/tests/css/css-view-transitions/nested/nearest-direct.html b/tests/wpt/tests/css/css-view-transitions/nested/nearest-direct.html
new file mode 100644
index 00000000000..bc49ef8d264
--- /dev/null
+++ b/tests/wpt/tests/css/css-view-transitions/nested/nearest-direct.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html class=reftest-wait>
+<title>Nearest should match direct parent</title>
+<meta name=fuzzy content="maxDifference=0-255; totalPixels=0-515">
+<link rel="help" href="https://drafts.csswg.org/css-view-transitions-2/">
+<link rel="match" href="nested-ref.html">
+<link rel=stylesheet href="resources/compute-common.css"></link>
+<script src="/common/reftest-wait.js"></script>
+<script src="resources/compute-test.js"></script>
+<body>
+ <div class="green">
+ <div>
+ <div class="test nearest-ref"></article>
+ </div>
+ </div>
+</body> \ No newline at end of file
diff --git a/tests/wpt/tests/css/css-view-transitions/nested/nearest-ignores-nearest-name.html b/tests/wpt/tests/css/css-view-transitions/nested/nearest-ignores-nearest-name.html
new file mode 100644
index 00000000000..0afa170eaec
--- /dev/null
+++ b/tests/wpt/tests/css/css-view-transitions/nested/nearest-ignores-nearest-name.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html class=reftest-wait>
+<title>Nearest should not match a group called "nearest"</title>
+<meta name=fuzzy content="maxDifference=0-255; totalPixels=0-515">
+<link rel="help" href="https://drafts.csswg.org/css-view-transitions-2/">
+<link rel="match" href="nested-ref.html">
+<link rel=stylesheet href="resources/compute-common.css"></link>
+<script src="/common/reftest-wait.js"></script>
+<script src="resources/compute-test.js"></script>
+<body>
+ <div style="view-transition-name: nearest">
+ <div class="green">
+ <div>
+ <div class="test nearest-ref"></article>
+ </div>
+ </div>
+ </div>
+</body> \ No newline at end of file
diff --git a/tests/wpt/tests/css/css-view-transitions/nested/nearest-nested.html b/tests/wpt/tests/css/css-view-transitions/nested/nearest-nested.html
new file mode 100644
index 00000000000..1c4f153427d
--- /dev/null
+++ b/tests/wpt/tests/css/css-view-transitions/nested/nearest-nested.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html class=reftest-wait>
+<title>Nearest should match non-direct ancestor</title>
+<meta name=fuzzy content="maxDifference=0-255; totalPixels=0-515">
+<link rel="help" href="https://drafts.csswg.org/css-view-transitions-2/">
+<link rel="match" href="nested-ref.html">
+<link rel=stylesheet href="resources/compute-common.css"></link>
+<script src="/common/reftest-wait.js"></script>
+<script src="resources/compute-test.js"></script>
+<body>
+ <div class="red">
+ <div class="green">
+ <div>
+ <div class="test nearest-ref"></article>
+ </div>
+ </div>
+ </div>
+</body> \ No newline at end of file
diff --git a/tests/wpt/tests/css/css-view-transitions/nested/nested-group-display-none.html b/tests/wpt/tests/css/css-view-transitions/nested/nested-group-display-none.html
new file mode 100644
index 00000000000..08434873254
--- /dev/null
+++ b/tests/wpt/tests/css/css-view-transitions/nested/nested-group-display-none.html
@@ -0,0 +1,44 @@
+<!DOCTYPE html>
+<html class=reftest-wait>
+<title>Nested view-transition-group with display:none</title>
+<link rel="help" href="https://drafts.csswg.org/css-view-transitions-2/">
+<link rel="match" href="nested-ref.html">
+<meta name=fuzzy content="maxDifference=0-255; totalPixels=0-515">
+<script src="/common/reftest-wait.js"></script>
+<style>
+ body {
+ background: green;
+ }
+ main {
+ view-transition-name: main;
+ }
+
+ section {
+ view-transition-name: section;
+ view-transition-group: main;
+ }
+
+ ::view-transition-group(*)
+ ::view-transition-image-pair(*),
+ ::view-transition-old(*),
+ ::view-transition-new(*)
+ {
+ display: none;
+ }
+</style>
+<body>
+ <main>
+ <section>
+ Hello
+ </section>
+ </main>
+<script>
+failIfNot(document.startViewTransition, "Missing document.startViewTransition");
+
+async function runTest() {
+ let transition = document.startViewTransition();
+ transition.ready.then(() => takeScreenshot());
+}
+onload = () => requestAnimationFrame(() => requestAnimationFrame(runTest));
+</script>
+</body> \ No newline at end of file
diff --git a/tests/wpt/tests/css/css-view-transitions/nested/nested-group-in-pseudo-basic.html b/tests/wpt/tests/css/css-view-transitions/nested/nested-group-in-pseudo-basic.html
new file mode 100644
index 00000000000..2cacf7a759c
--- /dev/null
+++ b/tests/wpt/tests/css/css-view-transitions/nested/nested-group-in-pseudo-basic.html
@@ -0,0 +1,59 @@
+<!DOCTYPE html>
+<html class=reftest-wait>
+<title>Basic hierarchy of view-transition-group</title>
+<link rel="help" href="https://drafts.csswg.org/css-view-transitions-2/">
+<link rel="match" href="nested-ref.html">
+<meta name=fuzzy content="maxDifference=0-255; totalPixels=0-515">
+<script src="/common/reftest-wait.js"></script>
+<style>
+ body {
+ margin: 0;
+ }
+ main {
+ view-transition-name: main;
+ }
+
+ section {
+ view-transition-name: section;
+ view-transition-group: main;
+ }
+
+ ::view-transition,
+ ::view-transition-group(*),
+ section,
+ main {
+ background: red;
+ inset: 0;
+ position: absolute;
+ }
+
+ ::view-transition-group(main) {
+ background: green;
+ }
+ ::view-transition-group(section) {
+ background: inherit;
+ transform: none !important;
+ }
+ ::view-transition-image-pair(*),
+ ::view-transition-old(*),
+ ::view-transition-new(*)
+ {
+ display: none;
+ }
+</style>
+<body>
+ <main>
+ <section>
+ Hello
+ </section>
+ </main>
+<script>
+failIfNot(document.startViewTransition, "Missing document.startViewTransition");
+
+async function runTest() {
+ let transition = document.startViewTransition();
+ transition.ready.then(() => takeScreenshot());
+}
+onload = () => requestAnimationFrame(() => requestAnimationFrame(runTest));
+</script>
+</body> \ No newline at end of file
diff --git a/tests/wpt/tests/css/css-view-transitions/nested/nested-ref-100.html b/tests/wpt/tests/css/css-view-transitions/nested/nested-ref-100.html
new file mode 100644
index 00000000000..dde4f026c36
--- /dev/null
+++ b/tests/wpt/tests/css/css-view-transitions/nested/nested-ref-100.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<style>
+ body {
+ margin: 0;
+ }
+ div.green {
+ position: absolute;
+ top: 100px;
+ left: 100px;
+ width: 100px;
+ height: 100px;
+ background: green;
+ }
+</style>
+<body>
+ <div class="green">
+ </div>
+</body> \ No newline at end of file
diff --git a/tests/wpt/tests/css/css-view-transitions/nested/nested-ref.html b/tests/wpt/tests/css/css-view-transitions/nested/nested-ref.html
new file mode 100644
index 00000000000..d189a460c7c
--- /dev/null
+++ b/tests/wpt/tests/css/css-view-transitions/nested/nested-ref.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<style>
+ body {
+ margin: 0;
+ }
+ div.green {
+ position: fixed;
+ inset: 0;
+ background: green;
+ }
+</style>
+<body>
+ <div class="green">
+ </div>
+</body> \ No newline at end of file
diff --git a/tests/wpt/tests/css/css-view-transitions/nested/normal-goes-up.html b/tests/wpt/tests/css/css-view-transitions/nested/normal-goes-up.html
new file mode 100644
index 00000000000..f68c93d4744
--- /dev/null
+++ b/tests/wpt/tests/css/css-view-transitions/nested/normal-goes-up.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html class="reftest-wait no-match">
+<title>view-transition: normal should behave like having no group</title>
+<meta name=fuzzy content="maxDifference=0-255; totalPixels=0-515">
+<link rel="help" href="https://drafts.csswg.org/css-view-transitions-2/">
+<link rel="match" href="nested-ref.html">
+<link rel=stylesheet href="resources/compute-common.css"></link>
+<script src="/common/reftest-wait.js"></script>
+<script src="resources/compute-test.js"></script>
+<body>
+ <div class="normal">
+ <div>
+ <div class="test normal-ref"></article>
+ </div>
+ </div>
+</body> \ No newline at end of file
diff --git a/tests/wpt/tests/css/css-view-transitions/nested/render-element.html b/tests/wpt/tests/css/css-view-transitions/nested/render-element.html
new file mode 100644
index 00000000000..59a5a108314
--- /dev/null
+++ b/tests/wpt/tests/css/css-view-transitions/nested/render-element.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+<html class=reftest-wait>
+<title>Nested group name should match direct parent</title>
+<meta name=fuzzy content="maxDifference=0-255; totalPixels=0-515">
+<link rel="help" href="https://drafts.csswg.org/css-view-transitions-2/">
+<link rel="match" href="nested-ref-100.html">
+<script src="/common/reftest-wait.js"></script>
+<script src="resources/compute-test.js"></script>
+<style>
+ body {
+ margin: 0;
+ }
+ div {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100px;
+ height: 100px;
+ }
+
+ .parent {
+ view-transition-name: parent;
+ }
+
+ .child {
+ view-transition-name: child;
+ view-transition-group: parent;
+ top: 100px;
+ left: 100px;
+ background: green;
+ }
+</style>
+<body>
+ <div class="parent">
+ <div class="child"></div>
+ </div>
+</body> \ No newline at end of file
diff --git a/tests/wpt/tests/css/css-view-transitions/nested/resources/compute-common.css b/tests/wpt/tests/css/css-view-transitions/nested/resources/compute-common.css
new file mode 100644
index 00000000000..92cb8243c0b
--- /dev/null
+++ b/tests/wpt/tests/css/css-view-transitions/nested/resources/compute-common.css
@@ -0,0 +1,60 @@
+::view-transition,
+::view-transition-group(*),
+div {
+ background: red;
+ inset: 0;
+ position: absolute;
+ transform: none !important;
+}
+
+html.no-match::view-transition {
+ background: green;
+}
+
+.green {
+ view-transition-name: green;
+}
+
+.test {
+ view-transition-name: test;
+}
+
+.green-ref {
+ view-transition-group: green;
+}
+
+.red {
+ view-transition-name: red;
+}
+
+.test-ref {
+ view-transition-group: test;
+}
+
+.red-ref {
+ view-transition-group: red;
+}
+
+.nearest-ref {
+ view-transition-group: nearest;
+}
+
+.normal {
+ view-transition-name: normal;
+}
+
+.normal-ref {
+ view-transition-group: normal;
+}
+::view-transition-group(green) {
+ background: green;
+}
+::view-transition-group(test) {
+ background: inherit;
+}
+::view-transition-image-pair(*),
+::view-transition-old(*),
+::view-transition-new(*)
+ {
+ display: none;
+}
diff --git a/tests/wpt/tests/css/css-view-transitions/nested/resources/compute-test.js b/tests/wpt/tests/css/css-view-transitions/nested/resources/compute-test.js
new file mode 100644
index 00000000000..6d3905239c7
--- /dev/null
+++ b/tests/wpt/tests/css/css-view-transitions/nested/resources/compute-test.js
@@ -0,0 +1,7 @@
+failIfNot(document.startViewTransition, "Missing document.startViewTransition");
+
+function runTest() {
+ document.startViewTransition().ready.then(() => takeScreenshot());
+}
+
+onload = () => requestAnimationFrame(() => requestAnimationFrame(runTest));
diff --git a/tests/wpt/tests/css/css-view-transitions/new-content-captures-spans-ref.html b/tests/wpt/tests/css/css-view-transitions/new-content-captures-spans-ref.html
index f7bba2d683c..941ed432b26 100644
--- a/tests/wpt/tests/css/css-view-transitions/new-content-captures-spans-ref.html
+++ b/tests/wpt/tests/css/css-view-transitions/new-content-captures-spans-ref.html
@@ -2,12 +2,16 @@
<title>View transitions: capture opacity elements (ref)</title>
<link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/">
<link rel="author" href="mailto:vmpstr@chromium.org">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<style>
span {
background: lightgreen;
view-transition-name: span;
}
-body { background: lightpink; }
+body {
+ background: lightpink;
+ font: 20px/1 Ahem;
+}
</style>
<span>This is a span</span>
diff --git a/tests/wpt/tests/css/css-view-transitions/new-content-captures-spans.html b/tests/wpt/tests/css/css-view-transitions/new-content-captures-spans.html
index 5f4807404c7..c099ff7ced6 100644
--- a/tests/wpt/tests/css/css-view-transitions/new-content-captures-spans.html
+++ b/tests/wpt/tests/css/css-view-transitions/new-content-captures-spans.html
@@ -4,9 +4,14 @@
<link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/">
<link rel="author" href="mailto:vmpstr@chromium.org">
<link rel="match" href="new-content-captures-spans-ref.html">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<meta name="fuzzy" content="maxDifference=0-1; totalPixels=0-400">
<script src="/common/reftest-wait.js"></script>
<style>
+:root {
+ font: 20px/1 Ahem;
+}
+
span {
background: lightblue;
view-transition-name: span;
diff --git a/tests/wpt/tests/css/css-view-transitions/new-content-is-inline-ref.html b/tests/wpt/tests/css/css-view-transitions/new-content-is-inline-ref.html
index c75cfcc252a..10098bec8ef 100644
--- a/tests/wpt/tests/css/css-view-transitions/new-content-is-inline-ref.html
+++ b/tests/wpt/tests/css/css-view-transitions/new-content-is-inline-ref.html
@@ -2,9 +2,14 @@
<title>View transitions: New content is an inline element (ref)</title>
<link rel="help" href="https://www.w3.org/TR/css-view-transitions-1/">
<link rel="author" href="mailto:bokan@chromium.org">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<style>
-:root { background-color: rebeccapurple; }
+:root {
+ background-color: rebeccapurple;
+ font: 20px/1 Ahem;
+}
+
body { margin: 0; }
.container {
diff --git a/tests/wpt/tests/css/css-view-transitions/new-content-is-inline.html b/tests/wpt/tests/css/css-view-transitions/new-content-is-inline.html
index 81b261a9bff..9be8332c857 100644
--- a/tests/wpt/tests/css/css-view-transitions/new-content-is-inline.html
+++ b/tests/wpt/tests/css/css-view-transitions/new-content-is-inline.html
@@ -4,11 +4,16 @@
<link rel="help" href="https://www.w3.org/TR/css-view-transitions-1/">
<link rel="author" href="mailto:bokan@chromium.org">
<link rel="match" href="new-content-is-inline-ref.html">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<meta name="fuzzy" content="maxDifference=0-255; totalPixels=0-1000">
<script src="/common/reftest-wait.js"></script>
<style>
-body { margin : 0; }
+body {
+ margin : 0;
+ font: 20px/1 Ahem;
+}
+
.container {
position: absolute;
left: 100px;
diff --git a/tests/wpt/tests/css/css-view-transitions/no-named-elements-ref.html b/tests/wpt/tests/css/css-view-transitions/no-named-elements-ref.html
new file mode 100644
index 00000000000..750fdf37303
--- /dev/null
+++ b/tests/wpt/tests/css/css-view-transitions/no-named-elements-ref.html
@@ -0,0 +1,9 @@
+<!DOCTYPE html>
+<html>
+<title>View transitions: no named elements</title>
+<link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/">
+<link rel="author" href="mailto:khushalsagar@chromium.org">
+<style>
+body { background: blue; }
+</style>
+
diff --git a/tests/wpt/tests/css/css-view-transitions/no-named-elements.html b/tests/wpt/tests/css/css-view-transitions/no-named-elements.html
new file mode 100644
index 00000000000..ee762559131
--- /dev/null
+++ b/tests/wpt/tests/css/css-view-transitions/no-named-elements.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<html class=reftest-wait>
+<title>View transitions: no named elements</title>
+<link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/">
+<link rel="author" href="mailto:khushalsagar@chromium.org">
+<link rel="match" href="no-named-elements-ref.html">
+
+<script src="/common/reftest-wait.js"></script>
+<script src="/common/rendering-utils.js"></script>
+<style>
+body { background: red; }
+
+:root { view-transition-name: none; }
+
+@keyframes no-op {
+ from {opacity: 1;}
+ to {opacity: 1;}
+}
+
+:root::view-transition {
+ width: 100%;
+ height: 100%;
+ background: blue;
+ animation: no-op 300s;
+}
+</style>
+<script>
+failIfNot(document.startViewTransition, "Missing document.startViewTransition");
+
+async function runTest() {
+ let transition = document.startViewTransition();
+ transition.ready.then(takeScreenshot);
+}
+onload = () => requestAnimationFrame(() => requestAnimationFrame(runTest));
+</script>
+
diff --git a/tests/wpt/tests/css/css-view-transitions/parsing/pseudo-elements-invalid.html b/tests/wpt/tests/css/css-view-transitions/parsing/pseudo-elements-invalid.html
index 14bd768f76c..e13df89fe32 100644
--- a/tests/wpt/tests/css/css-view-transitions/parsing/pseudo-elements-invalid.html
+++ b/tests/wpt/tests/css/css-view-transitions/parsing/pseudo-elements-invalid.html
@@ -1,7 +1,7 @@
<!doctype html>
<meta charset="utf-8">
<title>Test pseudo elements parsing of invalid selectors</title>
-<link rel="author" href="https://github.com/nt1m">
+<link rel="author" title="Tim Nguyen" href="https://github.com/nt1m">
<link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
diff --git a/tests/wpt/tests/css/css-view-transitions/parsing/pseudo-elements-valid.html b/tests/wpt/tests/css/css-view-transitions/parsing/pseudo-elements-valid.html
index 1a0e5b82d35..1d5ccd1442c 100644
--- a/tests/wpt/tests/css/css-view-transitions/parsing/pseudo-elements-valid.html
+++ b/tests/wpt/tests/css/css-view-transitions/parsing/pseudo-elements-valid.html
@@ -1,7 +1,7 @@
<!doctype html>
<meta charset="utf-8">
<title>Test pseudo elements parsing of valid selectors</title>
-<link rel="author" href="https://github.com/nt1m">
+<link rel="author" title="Tim Nguyen" href="https://github.com/nt1m">
<link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
diff --git a/tests/wpt/tests/css/css-view-transitions/parsing/view-transition-group-invalid.html b/tests/wpt/tests/css/css-view-transitions/parsing/view-transition-group-invalid.html
new file mode 100644
index 00000000000..a371a94665e
--- /dev/null
+++ b/tests/wpt/tests/css/css-view-transitions/parsing/view-transition-group-invalid.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS View Transitions Test: view-transition-group with invalid values</title>
+<link rel="help" href="https://drafts.csswg.org/css-view-transitions-2/">
+<meta name="assert" content="view-transition-group does not support invalid values">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_invalid_value("view-transition-group", "default"); // `default` isn't allowed by the `<custom-ident>` syntax.
+test_invalid_value("view-transition-group", "foo none");
+test_invalid_value("view-transition-group", "#fff");
+test_invalid_value("view-transition-group", "12px");
+test_invalid_value("view-transition-group", "foo 12px");
+test_invalid_value("view-transition-group", "12em");
+test_invalid_value("view-transition-group", "12%");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-view-transitions/parsing/view-transition-group-valid.html b/tests/wpt/tests/css/css-view-transitions/parsing/view-transition-group-valid.html
new file mode 100644
index 00000000000..d1d21a60997
--- /dev/null
+++ b/tests/wpt/tests/css/css-view-transitions/parsing/view-transition-group-valid.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS View Transitions Test: view-transition-group with valid values</title>
+<link rel="help" href="https://drafts.csswg.org/css-view-transitions-2/">
+<meta name="assert" content="view-transition-group supports custom tags">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/parsing-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_valid_value("view-transition-group", "none");
+test_valid_value("view-transition-group", "nearest");
+test_valid_value("view-transition-group", "contain");
+test_valid_value("view-transition-group", "normal");
+test_valid_value("view-transition-group", "abc");
+test_valid_value("view-transition-group", "custom-ident");
+test_valid_value("view-transition-group", "a-1");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-entry.html b/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-entry.html
index 44f95dccbf4..21f87b907ec 100644
--- a/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-entry.html
+++ b/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-entry.html
@@ -33,7 +33,7 @@ div {
::view-transition-new(*) {
animation-name: jump;
animation-timing-function: step-start;
- animation-duration: 1s;
+ animation-play-state: paused;
}
::view-transition-new(*.cls) {
diff --git a/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-exit.html b/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-exit.html
index c687461f18e..0480e1e5312 100644
--- a/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-exit.html
+++ b/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-exit.html
@@ -33,7 +33,7 @@ div {
::view-transition-old(*) {
animation-name: jump;
animation-timing-function: step-start;
- animation-duration: 1s;
+ animation-play-state: paused;
}
::view-transition-old(*.cls) {
diff --git a/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-match-ident.html b/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-match-ident.html
index 1418a90bc45..9cfc3f12ce8 100644
--- a/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-match-ident.html
+++ b/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-match-ident.html
@@ -21,7 +21,7 @@ div {
}
::view-transition-group(*) {
- animation-duration: 1s;
+ animation-play-state: paused;
}
::view-transition-new(target.cls),
diff --git a/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-match-multiple-wildcard.html b/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-match-multiple-wildcard.html
index 53eaacfe799..261c00f0875 100644
--- a/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-match-multiple-wildcard.html
+++ b/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-match-multiple-wildcard.html
@@ -21,7 +21,7 @@ div {
}
::view-transition-group(*) {
- animation-duration: 1s;
+ animation-play-state: paused;
}
::view-transition-new(*.cls.some-div),
diff --git a/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-match-multiple.html b/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-match-multiple.html
index 1ab69340b4b..7ff42edf366 100644
--- a/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-match-multiple.html
+++ b/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-match-multiple.html
@@ -21,7 +21,7 @@ div {
}
::view-transition-group(*) {
- animation-duration: 1s;
+ animation-play-state: paused;
}
::view-transition-new(target.cls.some-div),
diff --git a/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-match-wildcard-no-star.html b/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-match-wildcard-no-star.html
index 2dc7d00cd18..96186cd8784 100644
--- a/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-match-wildcard-no-star.html
+++ b/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-match-wildcard-no-star.html
@@ -21,7 +21,7 @@
}
::view-transition-group(*) {
- animation-duration: 1s;
+ animation-play-state: paused;
}
::view-transition-new(.cls),
diff --git a/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-match-wildcard.html b/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-match-wildcard.html
index 13490d58786..f777e245ba6 100644
--- a/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-match-wildcard.html
+++ b/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-match-wildcard.html
@@ -21,7 +21,7 @@ div {
}
::view-transition-group(*) {
- animation-duration: 1s;
+ animation-play-state: paused;
}
::view-transition-new(*.cls),
diff --git a/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-mismatch-ident.html b/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-mismatch-ident.html
index 97db64fca20..107f388b388 100644
--- a/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-mismatch-ident.html
+++ b/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-mismatch-ident.html
@@ -21,7 +21,7 @@ div {
}
::view-transition-group(*) {
- animation-duration: 1s;
+ animation-play-state: paused;
}
::view-transition-new(*),
diff --git a/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-mismatch-partial.html b/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-mismatch-partial.html
index 9d9838036bc..ddb9b2535f2 100644
--- a/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-mismatch-partial.html
+++ b/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-mismatch-partial.html
@@ -21,7 +21,7 @@ div {
}
::view-transition-group(*) {
- animation-duration: 1s;
+ animation-play-state: paused;
}
::view-transition-new(*),
diff --git a/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-mismatch-wildcard.html b/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-mismatch-wildcard.html
index 722e4130455..1e27dc2c05c 100644
--- a/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-mismatch-wildcard.html
+++ b/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-mismatch-wildcard.html
@@ -21,7 +21,7 @@ div {
}
::view-transition-group(*) {
- animation-duration: 1s;
+ animation-play-state: paused;
}
::view-transition-new(*),
diff --git a/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-multiple-vt-classes.html b/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-multiple-vt-classes.html
index d7ca0a04936..fa7ae4eeb15 100644
--- a/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-multiple-vt-classes.html
+++ b/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-multiple-vt-classes.html
@@ -21,7 +21,7 @@ div {
}
::view-transition-group(*) {
- animation-duration: 1s;
+ animation-play-state: paused;
}
::view-transition-new(target.cls),
diff --git a/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-new-with-class-old-without.html b/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-new-with-class-old-without.html
index 5aedc33b3c1..225ed1cb7f3 100644
--- a/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-new-with-class-old-without.html
+++ b/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-new-with-class-old-without.html
@@ -24,7 +24,7 @@ div {
}
::view-transition-group(*) {
- animation-duration: 1s;
+ animation-play-state: paused;
}
::view-transition-new(*.cls),
diff --git a/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-old-with-class-new-without.html b/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-old-with-class-new-without.html
index 6c153253e00..f9ef100ef7e 100644
--- a/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-old-with-class-new-without.html
+++ b/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-old-with-class-new-without.html
@@ -24,7 +24,7 @@ div {
}
::view-transition-group(*) {
- animation-duration: 1s;
+ animation-play-state: paused;
}
::view-transition-new(*),
diff --git a/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-view-transition-group.html b/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-view-transition-group.html
index 3e4dbb303c6..f9fe2022258 100644
--- a/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-view-transition-group.html
+++ b/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-view-transition-group.html
@@ -18,7 +18,7 @@
}
:root::view-transition-group(*) {
- animation-duration: 1s;
+ animation-play-state: paused;
}
:root::view-transition-group(target.cls) {
diff --git a/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-view-transition-image-pair.html b/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-view-transition-image-pair.html
index 8f0f2ef2a97..0473742260c 100644
--- a/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-view-transition-image-pair.html
+++ b/tests/wpt/tests/css/css-view-transitions/pseudo-with-classes-view-transition-image-pair.html
@@ -18,7 +18,7 @@
}
::view-transition-group(*) {
- animation-duration: 1s;
+ animation-play-state: paused;
}
::view-transition-image-pair(target.cls) {
diff --git a/tests/wpt/tests/css/css-view-transitions/span-with-overflowing-text-and-box-decorations-ref.html b/tests/wpt/tests/css/css-view-transitions/span-with-overflowing-text-and-box-decorations-ref.html
index e0a75e730ff..b2479b60ad4 100644
--- a/tests/wpt/tests/css/css-view-transitions/span-with-overflowing-text-and-box-decorations-ref.html
+++ b/tests/wpt/tests/css/css-view-transitions/span-with-overflowing-text-and-box-decorations-ref.html
@@ -3,6 +3,7 @@
<title>View transitions: span with overflowing text is rendered correctly (ref)</title>
<link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/">
<link rel="author" href="mailto:khushalsagar@chromium.org">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<style>
span {
@@ -13,6 +14,7 @@ span {
body {
background: pink;
+ font: 12px/1 Ahem;
}
</style>
diff --git a/tests/wpt/tests/css/css-view-transitions/span-with-overflowing-text-and-box-decorations.html b/tests/wpt/tests/css/css-view-transitions/span-with-overflowing-text-and-box-decorations.html
index 262970ad5fb..c22fda0f797 100644
--- a/tests/wpt/tests/css/css-view-transitions/span-with-overflowing-text-and-box-decorations.html
+++ b/tests/wpt/tests/css/css-view-transitions/span-with-overflowing-text-and-box-decorations.html
@@ -4,11 +4,16 @@
<link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/">
<link rel="author" href="mailto:khushalsagar@chromium.org">
<link rel="match" href="span-with-overflowing-text-and-box-decorations-ref.html">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<meta name="fuzzy" content="maxDifference=0-3;totalPixels=0-4900">
<script src="/common/reftest-wait.js"></script>
<script src="/common/rendering-utils.js"></script>
<style>
+:root {
+ font: 12px/1 Ahem;
+}
+
span {
text-shadow: red -2px -5px;
border: 2px solid black;
diff --git a/tests/wpt/tests/css/css-view-transitions/span-with-overflowing-text-ref.html b/tests/wpt/tests/css/css-view-transitions/span-with-overflowing-text-ref.html
index 4ec4d4ccf85..ed8586811f8 100644
--- a/tests/wpt/tests/css/css-view-transitions/span-with-overflowing-text-ref.html
+++ b/tests/wpt/tests/css/css-view-transitions/span-with-overflowing-text-ref.html
@@ -3,6 +3,7 @@
<title>View transitions: span with overflowing text is rendered correctly (ref)</title>
<link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/">
<link rel="author" href="mailto:khushalsagar@chromium.org">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<style>
span {
@@ -11,6 +12,7 @@ span {
body {
background: pink;
+ font: 20px/1 Ahem;
}
</style>
diff --git a/tests/wpt/tests/css/css-view-transitions/span-with-overflowing-text.html b/tests/wpt/tests/css/css-view-transitions/span-with-overflowing-text.html
index 5a6268ddf03..769b47159f1 100644
--- a/tests/wpt/tests/css/css-view-transitions/span-with-overflowing-text.html
+++ b/tests/wpt/tests/css/css-view-transitions/span-with-overflowing-text.html
@@ -4,11 +4,16 @@
<link rel="help" href="https://drafts.csswg.org/css-view-transitions-1/">
<link rel="author" href="mailto:khushalsagar@chromium.org">
<link rel="match" href="span-with-overflowing-text-ref.html">
+<link rel="stylesheet" type="text/css" href="/fonts/ahem.css" />
<meta name="fuzzy" content="maxDifference=0-3;totalPixels=0-1100">
<script src="/common/reftest-wait.js"></script>
<script src="/common/rendering-utils.js"></script>
<style>
+:root {
+ font: 20px/1 Ahem;
+}
+
span {
text-shadow: red -2px -5px;
view-transition-name: target;
diff --git a/tests/wpt/tests/css/css-viewport/width-ref.html b/tests/wpt/tests/css/css-viewport/width-ref.html
index 5d2755f3e9e..b1b5e115672 100644
--- a/tests/wpt/tests/css/css-viewport/width-ref.html
+++ b/tests/wpt/tests/css/css-viewport/width-ref.html
@@ -1,5 +1,5 @@
<!DOCTYPE html>
-<style>CSS zoom applies to width when specified and inherited</style>
+<title>CSS zoom applies to width when specified and inherited</title>
<link rel="author" title="Chris Harrelson" href="mailto:chrishtr@chromium.org">
<link rel="help" href="https://drafts.csswg.org/css-viewport/">
<style>
diff --git a/tests/wpt/tests/css/css-viewport/width.html b/tests/wpt/tests/css/css-viewport/width.html
index b6d9753ea3c..b76328be849 100644
--- a/tests/wpt/tests/css/css-viewport/width.html
+++ b/tests/wpt/tests/css/css-viewport/width.html
@@ -1,5 +1,5 @@
<!DOCTYPE html>
-<style>CSS zoom applies to width when specified and inherited</style>
+<title>CSS zoom applies to width when specified and inherited</title>
<link rel="author" title="Chris Harrelson" href="mailto:chrishtr@chromium.org">
<link rel="help" href="https://drafts.csswg.org/css-viewport/">
<link rel="match" href="width-ref.html">
diff --git a/tests/wpt/tests/css/css-viewport/zoom/WEB_FEATURES.yml b/tests/wpt/tests/css/css-viewport/zoom/WEB_FEATURES.yml
new file mode 100644
index 00000000000..7e5ac576a42
--- /dev/null
+++ b/tests/wpt/tests/css/css-viewport/zoom/WEB_FEATURES.yml
@@ -0,0 +1,3 @@
+features:
+- name: zoom
+ files: "**"
diff --git a/tests/wpt/tests/css/css-viewport/zoom/border-spacing.html b/tests/wpt/tests/css/css-viewport/zoom/border-spacing.html
index 2801a292006..f4ecb8f77a5 100644
--- a/tests/wpt/tests/css/css-viewport/zoom/border-spacing.html
+++ b/tests/wpt/tests/css/css-viewport/zoom/border-spacing.html
@@ -1,5 +1,5 @@
<!DOCTYPE html>
-<style>CSS zoom applies to border-spacing when specified and inherited</style>
+<title>CSS zoom applies to border-spacing when specified and inherited</title>
<link rel="author" title="Stefan Zager" href="mailto:szager@chromium.org">
<link rel="help" href="https://drafts.csswg.org/css-viewport/">
<link rel="match" href="reference/border-spacing-ref.html">
diff --git a/tests/wpt/tests/css/css-viewport/zoom/container-queries.html b/tests/wpt/tests/css/css-viewport/zoom/container-queries.html
new file mode 100644
index 00000000000..cc8cefdd6c0
--- /dev/null
+++ b/tests/wpt/tests/css/css-viewport/zoom/container-queries.html
@@ -0,0 +1,37 @@
+<!doctype html>
+<title>Container queries use CSS pixels (i.e. not multipled by effective zoom)</title>
+<link rel="author" title="Chris Harelson" href="mailto:chrishtr@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-viewport/">
+<link rel="match" href="reference/container-queries-ref.html">
+<style>
+ .container {
+ container-type: inline-size;
+ width: 100px;
+ height: 100px;
+ }
+ .child {
+ background-color: green;
+ height: 50px;
+ width: 50px;
+ @container (width > 120px) {
+ background-color: red;
+ }
+ }
+</style>
+<p>All boxes below should be green.</p>
+<div class="container">
+ <div class="child"></div>
+</div>
+<div class="container" style="zoom: 2">
+ <div class="child"></div>
+</div>
+<div class="container" style="zoom: 2">
+ <div class="nested" style="zoom: 2">
+ <div class="child"></div>
+ </div>
+</div>
+<div class="outer" style="zoom: 2">
+ <div class="container">
+ <div class="child"></div>
+ </div>
+</div>
diff --git a/tests/wpt/tests/css/css-viewport/zoom/font-size-ref.html b/tests/wpt/tests/css/css-viewport/zoom/font-size-ref.html
index 5714a878b30..30eaa4aeb9f 100644
--- a/tests/wpt/tests/css/css-viewport/zoom/font-size-ref.html
+++ b/tests/wpt/tests/css/css-viewport/zoom/font-size-ref.html
@@ -1,5 +1,5 @@
<!DOCTYPE html>
-<style>CSS Test reference</style>
+<title>CSS Test reference</title>
<div style="font-size: 12px">
12px text
</div>
diff --git a/tests/wpt/tests/css/css-viewport/zoom/font-size.html b/tests/wpt/tests/css/css-viewport/zoom/font-size.html
index e4b20c3c931..e572806be41 100644
--- a/tests/wpt/tests/css/css-viewport/zoom/font-size.html
+++ b/tests/wpt/tests/css/css-viewport/zoom/font-size.html
@@ -1,5 +1,5 @@
<!DOCTYPE html>
-<style>CSS zoom applies to font-size when specified and inherited</style>
+<title>CSS zoom applies to font-size when specified and inherited</title>
<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io">
<link rel="author" title="Mozilla" href="https://mozilla.org">
<link rel="help" href="https://drafts.csswg.org/css-viewport/">
diff --git a/tests/wpt/tests/css/css-viewport/zoom/letter-spacing.html b/tests/wpt/tests/css/css-viewport/zoom/letter-spacing.html
index 5c17e10ebed..03b66cddb35 100644
--- a/tests/wpt/tests/css/css-viewport/zoom/letter-spacing.html
+++ b/tests/wpt/tests/css/css-viewport/zoom/letter-spacing.html
@@ -1,5 +1,5 @@
<!DOCTYPE html>
-<style>CSS zoom applies to letter-spacing when specified and inherited</style>
+<title>CSS zoom applies to letter-spacing when specified and inherited</title>
<link rel="author" title="Stefan Zager" href="mailto:szager@chromium.org">
<link rel="help" href="https://drafts.csswg.org/css-viewport/">
<link rel="match" href="reference/letter-spacing-ref.html">
diff --git a/tests/wpt/tests/css/css-viewport/zoom/line-height-ref.html b/tests/wpt/tests/css/css-viewport/zoom/line-height-ref.html
index c75539243cb..a34093cce75 100644
--- a/tests/wpt/tests/css/css-viewport/zoom/line-height-ref.html
+++ b/tests/wpt/tests/css/css-viewport/zoom/line-height-ref.html
@@ -1,5 +1,5 @@
<!DOCTYPE html>
-<style>CSS zoom applies to line-height when specified and inherited</style>
+<title>CSS zoom applies to line-height when specified and inherited</title>
<link rel="author" title="Chris Harrelson" href="mailto:chrishtr@chromium.org">
<link rel="help" href="https://drafts.csswg.org/css-viewport/">
<div style="line-height: 12px; font-size: 12px">
diff --git a/tests/wpt/tests/css/css-viewport/zoom/line-height.html b/tests/wpt/tests/css/css-viewport/zoom/line-height.html
index fa333be32f6..072d666ed29 100644
--- a/tests/wpt/tests/css/css-viewport/zoom/line-height.html
+++ b/tests/wpt/tests/css/css-viewport/zoom/line-height.html
@@ -1,5 +1,5 @@
<!DOCTYPE html>
-<style>CSS zoom applies to line-height when specified and inherited</style>
+<title>CSS zoom applies to line-height when specified and inherited</title>
<link rel="author" title="Chris Harrelson" href="mailto:chrishtr@chromium.org">
<link rel="help" href="https://drafts.csswg.org/css-viewport/">
<link rel="match" href="line-height-ref.html">
diff --git a/tests/wpt/tests/css/css-viewport/zoom/reference/border-spacing-ref.html b/tests/wpt/tests/css/css-viewport/zoom/reference/border-spacing-ref.html
index df01e965a27..c5b18cc3c37 100644
--- a/tests/wpt/tests/css/css-viewport/zoom/reference/border-spacing-ref.html
+++ b/tests/wpt/tests/css/css-viewport/zoom/reference/border-spacing-ref.html
@@ -1,5 +1,5 @@
<!DOCTYPE html>
-<style>CSS zoom applies to border-spacing when specified and inherited</style>
+<title>CSS zoom applies to border-spacing when specified and inherited</title>
<link rel="author" title="Stefan Zager" href="mailto:szager@chromium.org">
<link rel="help" href="https://drafts.csswg.org/css-viewport/">
diff --git a/tests/wpt/tests/css/css-viewport/zoom/reference/container-queries-ref.html b/tests/wpt/tests/css/css-viewport/zoom/reference/container-queries-ref.html
new file mode 100644
index 00000000000..e9d93d39e72
--- /dev/null
+++ b/tests/wpt/tests/css/css-viewport/zoom/reference/container-queries-ref.html
@@ -0,0 +1,33 @@
+<!doctype html>
+<title>Reference for container-queries.html</title>
+<link rel="author" title="Chris Harelson" href="mailto:chrishtr@chromium.org">
+<link rel="help" href="https://drafts.csswg.org/css-viewport/">
+<style>
+ .container {
+ container-type: inline-size;
+ width: 100px;
+ height: 100px;
+ }
+ .child {
+ background-color: green;
+ height: 50px;
+ width: 50px;
+}
+</style>
+<p>All boxes below should be green.</p>
+<div class="container">
+ <div class="child"></div>
+</div>
+<div class="container" style="zoom: 2">
+ <div class="child"></div>
+</div>
+<div class="container" style="zoom: 2">
+ <div class="nested" style="zoom: 2">
+ <div class="child"></div>
+ </div>
+</div>
+<div class="outer" style="zoom: 2">
+ <div class="container">
+ <div class="child"></div>
+ </div>
+</div>
diff --git a/tests/wpt/tests/css/css-viewport/zoom/reference/letter-spacing-ref.html b/tests/wpt/tests/css/css-viewport/zoom/reference/letter-spacing-ref.html
index 7d050672c4e..59df4318320 100644
--- a/tests/wpt/tests/css/css-viewport/zoom/reference/letter-spacing-ref.html
+++ b/tests/wpt/tests/css/css-viewport/zoom/reference/letter-spacing-ref.html
@@ -1,5 +1,5 @@
<!DOCTYPE html>
-<style>CSS zoom applies to letter-spacing when specified and inherited</style>
+<title>CSS zoom applies to letter-spacing when specified and inherited</title>
<link rel="author" title="Stefan Zager" href="mailto:szager@chromium.org">
<link rel="help" href="https://drafts.csswg.org/css-viewport/">
<div style="letter-spacing: 2px; font-size: 12px">
diff --git a/tests/wpt/tests/css/css-viewport/zoom/reference/text-indent-ref.html b/tests/wpt/tests/css/css-viewport/zoom/reference/text-indent-ref.html
index 6dc0f8527c2..7ec1f57c7b4 100644
--- a/tests/wpt/tests/css/css-viewport/zoom/reference/text-indent-ref.html
+++ b/tests/wpt/tests/css/css-viewport/zoom/reference/text-indent-ref.html
@@ -1,5 +1,5 @@
<!DOCTYPE html>
-<style>CSS zoom applies to text-indent when specified and inherited</style>
+<title>CSS zoom applies to text-indent when specified and inherited</title>
<link rel="author" title="Stefan Zager" href="mailto:szager@chromium.org">
<link rel="help" href="https://drafts.csswg.org/css-viewport/">
diff --git a/tests/wpt/tests/css/css-viewport/zoom/reference/text-shadow-ref.html b/tests/wpt/tests/css/css-viewport/zoom/reference/text-shadow-ref.html
index 0538ba2c538..8341822f610 100644
--- a/tests/wpt/tests/css/css-viewport/zoom/reference/text-shadow-ref.html
+++ b/tests/wpt/tests/css/css-viewport/zoom/reference/text-shadow-ref.html
@@ -1,5 +1,5 @@
<!DOCTYPE html>
-<style>CSS zoom applies to text-shadow when specified and inherited</style>
+<title>CSS zoom applies to text-shadow when specified and inherited</title>
<link rel="author" title="Stefan Zager" href="mailto:szager@chromium.org">
<link rel="help" href="https://drafts.csswg.org/css-viewport/">
diff --git a/tests/wpt/tests/css/css-viewport/zoom/reference/text-stroke-width-ref.html b/tests/wpt/tests/css/css-viewport/zoom/reference/text-stroke-width-ref.html
index d1c675fc77d..1fb1b9c0886 100644
--- a/tests/wpt/tests/css/css-viewport/zoom/reference/text-stroke-width-ref.html
+++ b/tests/wpt/tests/css/css-viewport/zoom/reference/text-stroke-width-ref.html
@@ -1,5 +1,5 @@
<!DOCTYPE html>
-<style>CSS zoom applies to -webkit-text-stroke-width when specified and inherited</style>
+<title>CSS zoom applies to -webkit-text-stroke-width when specified and inherited</title>
<link rel="author" title="Stefan Zager" href="mailto:szager@chromium.org">
<link rel="help" href="https://drafts.csswg.org/css-viewport/">
diff --git a/tests/wpt/tests/css/css-viewport/zoom/reference/text-underline-offset-ref.html b/tests/wpt/tests/css/css-viewport/zoom/reference/text-underline-offset-ref.html
index 11b61e0acaa..a60d46a6e92 100644
--- a/tests/wpt/tests/css/css-viewport/zoom/reference/text-underline-offset-ref.html
+++ b/tests/wpt/tests/css/css-viewport/zoom/reference/text-underline-offset-ref.html
@@ -1,5 +1,5 @@
<!DOCTYPE html>
-<style>CSS zoom applies to text-underline-offset when specified and inherited</style>
+<title>CSS zoom applies to text-underline-offset when specified and inherited</title>
<link rel="author" title="Stefan Zager" href="mailto:szager@chromium.org">
<link rel="help" href="https://drafts.csswg.org/css-viewport/">
diff --git a/tests/wpt/tests/css/css-viewport/zoom/reference/word-spacing-ref.html b/tests/wpt/tests/css/css-viewport/zoom/reference/word-spacing-ref.html
index 02ace8352ad..f2f59c36dec 100644
--- a/tests/wpt/tests/css/css-viewport/zoom/reference/word-spacing-ref.html
+++ b/tests/wpt/tests/css/css-viewport/zoom/reference/word-spacing-ref.html
@@ -1,5 +1,5 @@
<!DOCTYPE html>
-<style>CSS zoom applies to word-spacing when specified and inherited</style>
+<title>CSS zoom applies to word-spacing when specified and inherited</title>
<link rel="author" title="Stefan Zager" href="mailto:szager@chromium.org">
<link rel="help" href="https://drafts.csswg.org/css-viewport/">
diff --git a/tests/wpt/tests/css/css-viewport/zoom/text-indent.html b/tests/wpt/tests/css/css-viewport/zoom/text-indent.html
index 2edf6a62223..1994d4e489c 100644
--- a/tests/wpt/tests/css/css-viewport/zoom/text-indent.html
+++ b/tests/wpt/tests/css/css-viewport/zoom/text-indent.html
@@ -1,5 +1,5 @@
<!DOCTYPE html>
-<style>CSS zoom applies to text-indent when specified and inherited</style>
+<title>CSS zoom applies to text-indent when specified and inherited</title>
<link rel="author" title="Stefan Zager" href="mailto:szager@chromium.org">
<link rel="help" href="https://drafts.csswg.org/css-viewport/">
<link rel="match" href="reference/text-indent-ref.html">
diff --git a/tests/wpt/tests/css/css-viewport/zoom/text-shadow.html b/tests/wpt/tests/css/css-viewport/zoom/text-shadow.html
index 1d39a24cd19..b1aa9be581a 100644
--- a/tests/wpt/tests/css/css-viewport/zoom/text-shadow.html
+++ b/tests/wpt/tests/css/css-viewport/zoom/text-shadow.html
@@ -1,5 +1,5 @@
<!DOCTYPE html>
-<style>CSS zoom applies to text-shadow when specified and inherited</style>
+<title>CSS zoom applies to text-shadow when specified and inherited</title>
<link rel="author" title="Stefan Zager" href="mailto:szager@chromium.org">
<link rel="help" href="https://drafts.csswg.org/css-viewport/">
<link rel="match" href="reference/text-shadow-ref.html">
diff --git a/tests/wpt/tests/css/css-viewport/zoom/text-stroke-width.html b/tests/wpt/tests/css/css-viewport/zoom/text-stroke-width.html
index b11dc67d52c..1bba3236894 100644
--- a/tests/wpt/tests/css/css-viewport/zoom/text-stroke-width.html
+++ b/tests/wpt/tests/css/css-viewport/zoom/text-stroke-width.html
@@ -1,5 +1,5 @@
<!DOCTYPE html>
-<style>CSS zoom applies to -webkit-text-stroke-width when specified and inherited</style>
+<title>CSS zoom applies to -webkit-text-stroke-width when specified and inherited</title>
<link rel="author" title="Stefan Zager" href="mailto:szager@chromium.org">
<link rel="help" href="https://drafts.csswg.org/css-viewport/">
<link rel="match" href="reference/text-stroke-width-ref.html">
diff --git a/tests/wpt/tests/css/css-viewport/zoom/text-underline-offset.html b/tests/wpt/tests/css/css-viewport/zoom/text-underline-offset.html
index cdf7b3d7ab2..4c7f378ab95 100644
--- a/tests/wpt/tests/css/css-viewport/zoom/text-underline-offset.html
+++ b/tests/wpt/tests/css/css-viewport/zoom/text-underline-offset.html
@@ -1,5 +1,5 @@
<!DOCTYPE html>
-<style>CSS zoom applies to text-underline-offset when specified and inherited</style>
+<title>CSS zoom applies to text-underline-offset when specified and inherited</title>
<link rel="author" title="Stefan Zager" href="mailto:szager@chromium.org">
<link rel="help" href="https://drafts.csswg.org/css-viewport/">
<link rel="match" href="reference/text-underline-offset-ref.html">
diff --git a/tests/wpt/tests/css/cssom-view/scrollintoview-containingblock-chain.html b/tests/wpt/tests/css/cssom-view/scrollintoview-containingblock-chain.html
new file mode 100644
index 00000000000..fd66bfadce1
--- /dev/null
+++ b/tests/wpt/tests/css/cssom-view/scrollintoview-containingblock-chain.html
@@ -0,0 +1,64 @@
+<!DOCTYPE html>
+<title>scrollIntoView should only adjust scrollers in the containing block chain</title>
+<link rel="help" href="https://drafts.csswg.org/cssom-view/#dom-element-scrollintoview">
+<style>
+ .scroller {
+ width: 300px;
+ height: 300px;
+ overflow: scroll;
+ }
+
+ .contents {
+ width: 200%;
+ height: 300%;
+ }
+
+ #inner.scroller {
+ position: absolute;
+ margin-top: 250px;
+ margin-left: 100px;
+ width: 400px
+ }
+
+ #reveal {
+ margin-top: 400px;
+ background-color: blue;
+ }
+</style>
+<div id="container">
+ <div id="outer" class="scroller">
+ <div class="contents">
+ This should not scroll
+ <div id="inner" class="inner scroller">
+ <div class="contents">
+ contents
+ <div id="reveal">
+ Reveal me
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
+</div>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+add_completion_callback(() => document.getElementById("container").remove());
+
+test(t => {
+ var reveal = document.getElementById('reveal');
+
+ var outerScroller = document.getElementById('outer');
+ var innerScroller = document.getElementById('inner');
+ var initialOuterTop = outerScroller.scrollTop;
+ var initialInnerTop = innerScroller.scrollTop;
+
+ assert_equals(initialOuterTop, 0);
+ assert_equals(initialInnerTop, 0);
+
+ reveal.scrollIntoView({block: "start", inline: "start"});
+
+ assert_approx_equals(innerScroller.scrollTop, 418, 4);
+ assert_equals(outerScroller.scrollTop, 0);
+}, "scrollIntoView should not scroll ancestor overflow:scroll elements that are not containing block ancestors");
+</script>
diff --git a/tests/wpt/tests/css/cssom-view/scrollintoview-zero-height-item.html b/tests/wpt/tests/css/cssom-view/scrollintoview-zero-height-item.html
new file mode 100644
index 00000000000..0973dadb35e
--- /dev/null
+++ b/tests/wpt/tests/css/cssom-view/scrollintoview-zero-height-item.html
@@ -0,0 +1,53 @@
+<!DOCTYPE html>
+<title>CSSOM View - scrollIntoView does not scroll to zero height item</title>
+<meta charset="UTF-8">
+<link rel="help" href="https://drafts.csswg.org/cssom-view/#dom-element-scrollintoview">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<body>
+<div style="border: 1px solid black; height: 300px; width: 200px; overflow-y: auto;visibility: hidden" id="box">
+ <div>text</div>
+ <div>text</div>
+ <div>text</div>
+ <div>text</div>
+ <div id="text">--- Clicking here should NOT scroll to top ---</div>
+ <div>text</div>
+ <div>text</div>
+ <div>text</div>
+ <div>text</div>
+ <div>text</div>
+ <div>text</div>
+ <div>text</div>
+ <div>text</div>
+ <div>text</div>
+ <div>text</div>
+ <div>text</div>
+ <div>text</div>
+ <div>text</div>
+ <div>text</div>
+ <div>text</div>
+ <div>text</div>
+ <div>text</div>
+ <div>text</div>
+ <div>text</div>
+ <div>text</div>
+</div>
+<script>
+test(() => {
+box.scrollTop = 40;
+
+let div = document.createElement("div");
+div.textContent = "div";
+text.parentNode.insertBefore(div, text);
+
+let span = document.createElement("span");
+span.tabIndex = 0;
+div.append(span);
+
+span.scrollIntoViewIfNeeded();
+
+assert_equals(box.scrollTop, 40, 'box.scrollTop');
+}, `scrollIntoView on zero height item`);
+
+</script>
+</body>
diff --git a/tests/wpt/tests/css/cssom/link-element-stylesheet-title.html b/tests/wpt/tests/css/cssom/link-element-stylesheet-title.html
new file mode 100644
index 00000000000..bca6a3082e9
--- /dev/null
+++ b/tests/wpt/tests/css/cssom/link-element-stylesheet-title.html
@@ -0,0 +1,37 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>Link Element StyleSheet's title attribute</title>
+<link rel="author" title="Takuya Kurimoto" href="mailto:takuya004869@gmail.com">
+<link rel="help" href="https://drafts.csswg.org/cssom/#dom-stylesheet-title">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<link id="set_title" rel="stylesheet" href="null.css" type="text/css">
+<link id="set_title" rel="stylesheet" title="" href="empty.css" type="text/css">
+<link id="set_title" rel="stylesheet" title="title" href="set.css" type="text/css">
+<link id="change_title_to_empty_string" rel="stylesheet" title="title" href="set.css" type="text/css">
+
+<script>
+test(function() {
+ const sheetCount = 3;
+ const sheets = Array.from(document.styleSheets).filter(sheet => sheet.ownerNode.id == 'set_title');
+ const linkStylesheets = Array.from(document.querySelectorAll('#set_title'));
+ assert_equals(sheets.length, sheetCount);
+ assert_equals(linkStylesheets.length, sheetCount);
+ for (let i = 0; i < sheets.length; ++i) {
+ let titleAttr = linkStylesheets[i].getAttribute("title");
+ if (titleAttr === null || titleAttr === "")
+ assert_equals(sheets[i].title, null, "Empty title returns null");
+ else
+ assert_equals(sheets[i].title, titleAttr, "Selected title is properly reflected");
+ }
+}, "StyleSheet.title");
+
+test(() => {
+ const linkStylesheet = document.getElementById('change_title_to_empty_string');
+ linkStylesheet.setAttribute("title", "")
+ const sheet = Array.from(document.styleSheets).find(sheet => sheet.ownerNode.id == 'change_title_to_empty_string');
+ assert_equals(sheet.title, null);
+}, "Executing setAttribute('title', '') results in the title being set to null");
+
+</script>
diff --git a/tests/wpt/tests/css/fill-stroke/animation/stroke-color-interpolation.html b/tests/wpt/tests/css/fill-stroke/animation/stroke-color-interpolation.html
new file mode 100644
index 00000000000..e519e6b8a53
--- /dev/null
+++ b/tests/wpt/tests/css/fill-stroke/animation/stroke-color-interpolation.html
@@ -0,0 +1,123 @@
+<!DOCTYPE html>
+<meta charset="UTF-8">
+<link rel="author" title="Tim Nguyen" href="https://github.com/nt1m">
+<link rel="help" href="https://drafts.fxtf.org/fill-stroke/#stroke-color">
+<meta name="test" content="stroke-color supports animation as a <color>">
+
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/interpolation-testcommon.js"></script>
+
+<style>
+.parent {
+ stroke-color: #eee;
+}
+.target {
+ width: 60px;
+ height: 60px;
+ display: inline-block;
+ border: 2px solid black;
+ margin-right: 2px;
+ color: rgba(0, 0, 255, 0.5);
+ stroke-color: black;
+}
+.expected {
+ margin-right: 15px;
+}
+</style>
+
+<body></body>
+
+<script>
+test_interpolation({
+ property: 'stroke-color',
+ from: neutralKeyframe,
+ to: 'green',
+}, [
+ {at: -0.3, expect: 'rgb(0, 0, 0)'},
+ {at: 0, expect: 'rgb(0, 0, 0)'},
+ {at: 0.3, expect: 'rgb(0, 38, 0)'},
+ {at: 0.6, expect: 'rgb(0, 77, 0)'},
+ {at: 1, expect: 'rgb(0, 128, 0)'},
+ {at: 1.5, expect: 'rgb(0, 192, 0)'},
+]);
+
+test_interpolation({
+ property: 'stroke-color',
+ from: 'initial',
+ to: 'green',
+}, [
+ {at: -0.3, expect: 'rgba(0, 0, 0, 0)'},
+ {at: 0, expect: 'rgba(0, 0, 0, 0)'},
+ {at: 0.3, expect: 'rgba(0, 128, 0, 0.3)'},
+ {at: 0.6, expect: 'rgba(0, 128, 0, 0.6)'},
+ {at: 1, expect: 'rgb(0, 128, 0)'},
+ {at: 1.5, expect: 'rgb(0, 192, 0)'},
+]);
+
+test_interpolation({
+ property: 'stroke-color',
+ from: 'inherit',
+ to: 'green',
+}, [
+ {at: -0.3, expect: 'rgb(255, 255, 255)'},
+ {at: 0, expect: 'rgb(238, 238, 238)'},
+ {at: 0.3, expect: 'rgb(167, 205, 167)'},
+ {at: 0.6, expect: 'rgb(95, 172, 95)'},
+ {at: 1, expect: 'rgb(0, 128, 0)'},
+ {at: 1.5, expect: 'rgb(0, 73, 0)'},
+]);
+
+test_interpolation({
+ property: 'stroke-color',
+ from: 'unset',
+ to: 'green',
+}, [
+ {at: -0.3, expect: 'rgb(255, 255, 255)'},
+ {at: 0, expect: 'rgb(238, 238, 238)'},
+ {at: 0.3, expect: 'rgb(167, 205, 167)'},
+ {at: 0.6, expect: 'rgb(95, 172, 95)'},
+ {at: 1, expect: 'rgb(0, 128, 0)'},
+ {at: 1.5, expect: 'rgb(0, 73, 0)'},
+]);
+
+test_interpolation({
+ property: 'stroke-color',
+ from: 'white',
+ to: 'orange',
+}, [
+ {at: -0.3, expect: 'white'},
+ {at: 0, expect: 'white'},
+ {at: 0.3, expect: 'rgb(255, 228, 179)'},
+ {at: 0.6, expect: 'rgb(255, 201, 102)'},
+ {at: 1, expect: 'orange'},
+ {at: 1.5, expect: 'rgb(255, 120, 0)'},
+]);
+
+test_interpolation({
+ property: 'stroke-color',
+ from: 'transparent',
+ to: 'green',
+}, [
+ {at: -0.3, expect: 'rgba(0, 0, 0, 0)'},
+ {at: 0, expect: 'rgba(0, 0, 0, 0)'},
+ {at: 0.3, expect: 'rgba(0, 128, 0, 0.3)'},
+ {at: 0.6, expect: 'rgba(0, 128, 0, 0.6)'},
+ {at: 1, expect: 'rgb(0, 128, 0)'},
+ {at: 1.5, expect: 'rgb(0, 192, 0)'},
+]);
+
+test_interpolation({
+ property: 'stroke-color',
+ from: 'currentcolor',
+ to: 'rgba(0, 255, 0, 0.75)',
+}, [
+ {at: -0.5, expect: 'rgba(0, 0, 255, 0.38)'},
+ {at: 0, expect: 'rgba(0, 0, 255, 0.5)'},
+ {at: 0.25, expect: 'rgba(0, 85, 170, 0.56)'},
+ {at: 0.5, expect: 'rgba(0, 153, 102, 0.63)'},
+ {at: 0.75, expect: 'rgba(0, 208, 47, 0.69)'},
+ {at: 1, expect: 'rgba(0, 255, 0, 0.75)'},
+ {at: 1.5, expect: 'rgba(0, 255, 0, 0.88)'},
+]);
+</script>
diff --git a/tests/wpt/tests/css/geometry/DOMMatrix-invertSelf.html b/tests/wpt/tests/css/geometry/DOMMatrix-invertSelf.html
new file mode 100644
index 00000000000..b9b8066d1d1
--- /dev/null
+++ b/tests/wpt/tests/css/geometry/DOMMatrix-invertSelf.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<title>Geometry Interfaces: DOMMatrix and DOMMatrixReadOnly invertSelf</title>
+<link rel="help" href="https://drafts.fxtf.org/geometry/#DOMMatrix">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="support/dommatrix-test-util.js"></script>
+<script>
+[
+ [[0, 0, 0, 0, 0, 0], [NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN]],
+ [[1, 1, 1, 1, 1, 1], [NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN]],
+ [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
+ [NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN]],
+ [[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1],
+ [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]],
+].forEach(([actual_array, expected_array]) => {
+ var is2D = false;
+ test(() => {
+ const actual = new DOMMatrix(actual_array);
+ const actualInvertSelfReturnValue = actual.invertSelf();
+ assert_true(actual === actualInvertSelfReturnValue);
+ const expected = new DOMMatrix(expected_array);
+ checkDOMMatrix(actual, expected, is2D);
+ }, `new DOMMatrix([${actual_array}]).invertSelf()`);
+});
+</script>
diff --git a/tests/wpt/tests/css/mediaqueries/mq-calc-sign-function-001.html b/tests/wpt/tests/css/mediaqueries/mq-calc-sign-function-001.html
index 96c38531362..12286cb531e 100644
--- a/tests/wpt/tests/css/mediaqueries/mq-calc-sign-function-001.html
+++ b/tests/wpt/tests/css/mediaqueries/mq-calc-sign-function-001.html
@@ -5,6 +5,9 @@
<link rel="help" href="http://www.w3.org/TR/css3-mediaqueries/#units">
<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
<style>
+ :root {
+ font-size: 16px;
+ }
div {
width: 100px;
height: 100px;
diff --git a/tests/wpt/tests/css/mediaqueries/mq-calc-sign-function-002.html b/tests/wpt/tests/css/mediaqueries/mq-calc-sign-function-002.html
index 31ff421ea2a..35fd111ba1e 100644
--- a/tests/wpt/tests/css/mediaqueries/mq-calc-sign-function-002.html
+++ b/tests/wpt/tests/css/mediaqueries/mq-calc-sign-function-002.html
@@ -5,6 +5,9 @@
<link rel="help" href="http://www.w3.org/TR/css3-mediaqueries/#units">
<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
<style>
+ :root {
+ font-size: 16px;
+ }
div {
width: 100px;
height: 100px;
diff --git a/tests/wpt/tests/css/mediaqueries/mq-calc-sign-function-003.html b/tests/wpt/tests/css/mediaqueries/mq-calc-sign-function-003.html
index 423948f722d..8d532b915ac 100644
--- a/tests/wpt/tests/css/mediaqueries/mq-calc-sign-function-003.html
+++ b/tests/wpt/tests/css/mediaqueries/mq-calc-sign-function-003.html
@@ -5,17 +5,21 @@
<link rel="help" href="http://www.w3.org/TR/css3-mediaqueries/#units">
<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
<style>
- div {
- width: 100px;
- height: 100px;
- background-color: red;
- }
+ :root {
+ font-size: 16px;
+ }
- @media screen and (aspect-ratio > calc(sign(17px - 1rem) * 59) / calc(79 * sign(17px - 1rem))) {
- div {
- background-color: green;
- }
- }
+ div {
+ width: 100px;
+ height: 100px;
+ background-color: red;
+ }
+
+ @media screen and (aspect-ratio > calc(sign(17px - 1rem) * 59) / calc(79 * sign(17px - 1rem))) {
+ div {
+ background-color: green;
+ }
+ }
</style>
<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
<div></div> \ No newline at end of file
diff --git a/tests/wpt/tests/css/mediaqueries/mq-calc-sign-function-004.html b/tests/wpt/tests/css/mediaqueries/mq-calc-sign-function-004.html
index 219f0c15272..bd4c74331ce 100644
--- a/tests/wpt/tests/css/mediaqueries/mq-calc-sign-function-004.html
+++ b/tests/wpt/tests/css/mediaqueries/mq-calc-sign-function-004.html
@@ -5,6 +5,9 @@
<link rel="help" href="http://www.w3.org/TR/css3-mediaqueries/#units">
<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
<style>
+ :root {
+ font-size: 16px;
+ }
div {
width: 100px;
height: 100px;
diff --git a/tests/wpt/tests/css/mediaqueries/mq-calc-sign-function-005.html b/tests/wpt/tests/css/mediaqueries/mq-calc-sign-function-005.html
index ca5fecb338b..602cac02be1 100644
--- a/tests/wpt/tests/css/mediaqueries/mq-calc-sign-function-005.html
+++ b/tests/wpt/tests/css/mediaqueries/mq-calc-sign-function-005.html
@@ -5,6 +5,9 @@
<link rel="help" href="http://www.w3.org/TR/css3-mediaqueries/#units">
<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
<style>
+ :root {
+ font-size: 16px;
+ }
div {
width: 100px;
height: 100px;
diff --git a/tests/wpt/tests/css/mediaqueries/mq-calc-sign-function-006.html b/tests/wpt/tests/css/mediaqueries/mq-calc-sign-function-006.html
index 239748d205f..3db626343ab 100644
--- a/tests/wpt/tests/css/mediaqueries/mq-calc-sign-function-006.html
+++ b/tests/wpt/tests/css/mediaqueries/mq-calc-sign-function-006.html
@@ -5,6 +5,9 @@
<link rel="help" href="http://www.w3.org/TR/css3-mediaqueries/#units">
<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
<style>
+ :root {
+ font-size: 16px;
+ }
div {
width: 100px;
height: 100px;
diff --git a/tests/wpt/tests/css/motion/offset-path-shape-circle-008.html b/tests/wpt/tests/css/motion/offset-path-shape-circle-008.html
new file mode 100644
index 00000000000..7c3dfe81355
--- /dev/null
+++ b/tests/wpt/tests/css/motion/offset-path-shape-circle-008.html
@@ -0,0 +1,32 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>CSS Motion Path test: &lt;basic-shape&gt; circle() path offset-position</title>
+<meta name="fuzzy" content="maxDifference=0-150; totalPixels=0-300">
+<link rel="match" href="offset-path-shape-circle-001-ref.html">
+<link rel="help" href="https://drafts.fxtf.org/motion/#valdef-offset-path-basic-shape">
+
+<style>
+#outer {
+ top: 100px;
+ left: 100px;
+ position: relative;
+ width: 600px;
+ height: 400px;
+}
+#box {
+ top: 100px;
+ left: 200px;
+ background-color: green;
+ position: relative;
+ offset-path: circle();
+ offset-position: 300px 200px;
+ offset-distance: 25%;
+ border-radius: 50% 50% 0 0;
+ width: 100px;
+ height: 100px;
+}
+</style>
+
+<div id="outer">
+ <div id="box"></div>
+</div>
diff --git a/tests/wpt/tests/css/motion/offset-path-shape-ellipse-007.html b/tests/wpt/tests/css/motion/offset-path-shape-ellipse-007.html
new file mode 100644
index 00000000000..fda9cd44f9f
--- /dev/null
+++ b/tests/wpt/tests/css/motion/offset-path-shape-ellipse-007.html
@@ -0,0 +1,32 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>CSS Motion Path test: &lt;basic-shape&gt; ellipse() path offset-position</title>
+<meta name="fuzzy" content="maxDifference=0-100; totalPixels=0-401">
+<link rel="match" href="offset-path-shape-ellipse-001-ref.html">
+<link rel="help" href="https://drafts.fxtf.org/motion/#valdef-offset-path-basic-shape">
+
+<style>
+#outer {
+ top: 100px;
+ left: 100px;
+ position: relative;
+ width: 600px;
+ height: 400px;
+}
+#box {
+ top: 100px;
+ left: 200px;
+ background-color: green;
+ position: relative;
+ offset-path: ellipse();
+ offset-distance: 25%;
+ border-radius: 50% 50% 0 0;
+ offset-position: 300px 200px;
+ width: 100px;
+ height: 100px;
+}
+</style>
+
+<div id="outer">
+ <div id="box"></div>
+</div>
diff --git a/tests/wpt/tests/css/selectors/WEB_FEATURES.yml b/tests/wpt/tests/css/selectors/WEB_FEATURES.yml
index a674f92e29c..89c6f53f8f9 100644
--- a/tests/wpt/tests/css/selectors/WEB_FEATURES.yml
+++ b/tests/wpt/tests/css/selectors/WEB_FEATURES.yml
@@ -11,6 +11,9 @@ features:
- name: modal
files:
- modal-pseudo-class.html
+- name: nth-child-of
+ files:
+ - nth-child-of-*
- name: user-pseudos
files:
- user-invalid.html
diff --git a/tests/wpt/tests/css/selectors/invalidation/WEB_FEATURES.yml b/tests/wpt/tests/css/selectors/invalidation/WEB_FEATURES.yml
index 1f80a7755b3..33e80ad651e 100644
--- a/tests/wpt/tests/css/selectors/invalidation/WEB_FEATURES.yml
+++ b/tests/wpt/tests/css/selectors/invalidation/WEB_FEATURES.yml
@@ -7,6 +7,9 @@ features:
- name: modal
files:
- modal-pseudo-class-in-has.html
+- name: nth-child-of
+ files:
+ - nth-child-of-*
- name: user-pseudos
files:
- user-valid-user-invalid.html
diff --git a/tests/wpt/tests/css/selectors/invalidation/has-with-nesting-parent-containing-complex.html b/tests/wpt/tests/css/selectors/invalidation/has-with-nesting-parent-containing-complex.html
new file mode 100644
index 00000000000..4ed611146b8
--- /dev/null
+++ b/tests/wpt/tests/css/selectors/invalidation/has-with-nesting-parent-containing-complex.html
@@ -0,0 +1,158 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>CSS Selector Invalidation: :has() with nesting parent containing complex selector</title>
+<link rel="help" href="https://drafts.csswg.org/selectors/#relational">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-actions.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
+<style>
+ .anchor { background-color: white; }
+
+ .ancestor .descendant {
+ .anchor:has(&) { background-color: blue; }
+ }
+
+ .ancestor .child {
+ .anchor:has(> &) { background-color: lightblue; }
+ }
+
+ .ancestor_prev ~ div .descendant {
+ .anchor:has(&) { background-color: yellow; }
+ }
+
+ .ancestor_prev ~ div.ancestor .descendant {
+ .anchor:has(&) { background-color: yellowgreen; }
+ }
+
+ .prev ~ .indirect_next {
+ .anchor:has(~ &) { background-color: green; }
+ }
+
+ .prev ~ .direct_next {
+ .anchor:has(+ &) { background-color: lightgreen; }
+ }
+</style>
+<div><div id="grand_parent1">
+ <div id="parent1">
+ <div id="anchor1" class="anchor">
+ <div><div class="descendant"></div></div>
+ </div>
+ </div>
+</div></div>
+<div><div id="grand_parent2">
+ <div id="parent2">
+ <div id="anchor2" class="anchor">
+ <div class="child"></div>
+ </div>
+ </div>
+</div></div>
+<div><div id="grand_parent_indirect_prev3"></div>
+ <div id="grand_parent_direct_prev3"></div>
+ <div id="grand_parent3">
+ <div id="parent_indirect_prev3"></div>
+ <div id="parent_direct_prev3"></div>
+ <div id="parent3">
+ <div id="anchor_indirect_prev3"></div>
+ <div id="anchor_direct_prev3"></div>
+ <div id="anchor3" class="anchor">
+ <div><div class="descendant"></div></div>
+ </div>
+ </div>
+</div></div>
+<div><div id="indirect_prev4"></div>
+ <div id="direct_prev4"></div>
+ <div id="anchor4" class="anchor"></div>
+ <div></div><div class="indirect_next">
+</div></div>
+<div><div id="indirect_prev5"></div>
+ <div id="direct_prev5"></div>
+ <div id="anchor5" class="anchor"></div>
+ <div class="direct_next">
+</div></div>
+<script>
+ const white = "rgb(255, 255, 255)";
+ const blue = "rgb(0, 0, 255)";
+ const lightblue = "rgb(173, 216, 230)";
+ const yellow = "rgb(255, 255, 0)";
+ const yellowgreen = "rgb(154, 205, 50)";
+ const green = "rgb(0, 128, 0)";
+ const lightgreen = "rgb(144, 238, 144)";
+
+ function bg_color(element, color, message) {
+ promise_test(async () => {
+ assert_equals(getComputedStyle(element)['background-color'], color);
+ }, message);
+ }
+
+ function add_class_and_check_bg_color(
+ element_to_add, class_name, has_anchor, color) {
+ promise_test(async () => {
+ element_to_add.classList.add(class_name);
+ assert_equals(getComputedStyle(has_anchor)['background-color'], color);
+ }, `#${has_anchor.id} becomes ${color} after adding .${class_name} to #${element_to_add.id}`);
+ }
+
+ function remove_class_and_check_bg_color(
+ element_to_remove, class_name, has_anchor, color) {
+ promise_test(async () => {
+ element_to_remove.classList.remove(class_name);
+ assert_equals(getComputedStyle(has_anchor)['background-color'], color);
+ }, `#${has_anchor.id} becomes ${color} after removing .${class_name} from #${element_to_remove.id}`);
+ }
+
+ bg_color(anchor1, white, "#anchor1 initially white");
+ add_class_and_check_bg_color(grand_parent1, "ancestor", anchor1, blue);
+ remove_class_and_check_bg_color(grand_parent1, "ancestor", anchor1, white);
+ add_class_and_check_bg_color(parent1, "ancestor", anchor1, blue);
+ remove_class_and_check_bg_color(parent1, "ancestor", anchor1, white);
+
+ bg_color(anchor2, white, "#anchor2 initially white");
+ add_class_and_check_bg_color(grand_parent2, "ancestor", anchor2, lightblue);
+ remove_class_and_check_bg_color(grand_parent2, "ancestor", anchor2, white);
+ add_class_and_check_bg_color(parent2, "ancestor", anchor2, lightblue);
+ remove_class_and_check_bg_color(parent2, "ancestor", anchor2, white);
+
+ bg_color(anchor3, white, "#anchor3 initially white");
+ add_class_and_check_bg_color(grand_parent_indirect_prev3, "ancestor_prev",
+ anchor3, yellow);
+ add_class_and_check_bg_color(grand_parent3, "ancestor", anchor3, yellowgreen);
+ remove_class_and_check_bg_color(grand_parent3, "ancestor", anchor3, yellow);
+ remove_class_and_check_bg_color(grand_parent_indirect_prev3, "ancestor_prev",
+ anchor3, white);
+ add_class_and_check_bg_color(grand_parent_direct_prev3, "ancestor_prev",
+ anchor3, yellow);
+ remove_class_and_check_bg_color(grand_parent_direct_prev3, "ancestor_prev",
+ anchor3, white);
+ add_class_and_check_bg_color(parent_indirect_prev3, "ancestor_prev",
+ anchor3, yellow);
+ add_class_and_check_bg_color(parent3, "ancestor", anchor3, yellowgreen);
+ remove_class_and_check_bg_color(parent3, "ancestor", anchor3, yellow);
+ remove_class_and_check_bg_color(parent_indirect_prev3, "ancestor_prev",
+ anchor3, white);
+ add_class_and_check_bg_color(parent_direct_prev3, "ancestor_prev",
+ anchor3, yellow);
+ remove_class_and_check_bg_color(parent_direct_prev3, "ancestor_prev",
+ anchor3, white);
+ add_class_and_check_bg_color(anchor_indirect_prev3, "ancestor_prev",
+ anchor3, yellow);
+ remove_class_and_check_bg_color(anchor_indirect_prev3, "ancestor_prev",
+ anchor3, white);
+ add_class_and_check_bg_color(anchor_direct_prev3, "ancestor_prev",
+ anchor3, yellow);
+ remove_class_and_check_bg_color(anchor_direct_prev3, "ancestor_prev",
+ anchor3, white);
+
+ bg_color(anchor4, white, "#anchor4 initially white");
+ add_class_and_check_bg_color(indirect_prev4, "prev", anchor4, green);
+ remove_class_and_check_bg_color(indirect_prev4, "prev", anchor4, white);
+ add_class_and_check_bg_color(direct_prev4, "prev", anchor4, green);
+ remove_class_and_check_bg_color(direct_prev4, "prev", anchor4, white);
+
+ bg_color(anchor5, white, "#anchor5 initially white");
+ add_class_and_check_bg_color(indirect_prev5, "prev", anchor5, lightgreen);
+ remove_class_and_check_bg_color(indirect_prev5, "prev", anchor5, white);
+ add_class_and_check_bg_color(direct_prev5, "prev", anchor5, lightgreen);
+ remove_class_and_check_bg_color(direct_prev5, "prev", anchor5, white);
+</script> \ No newline at end of file
diff --git a/tests/wpt/tests/css/selectors/nth-last-child-invalid.html b/tests/wpt/tests/css/selectors/nth-last-child-invalid.html
new file mode 100644
index 00000000000..ae768b8698e
--- /dev/null
+++ b/tests/wpt/tests/css/selectors/nth-last-child-invalid.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>CSS Selectors: :nth-last-child() with no argument</title>
+ <link rel="help" href="https://crbug.com/355451192">
+ <link rel="help" href="https://drafts.csswg.org/selectors-4/#child-index">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <style>
+ #target:nth-last-child() { color: red; }
+ #target { color: green; }
+ </style>
+ <head>
+ <body>
+ <body>
+ <div id="target">Test passes if this line is green.</div>
+ <script>
+ test(() => {
+ assert_equals(getComputedStyle(target).color, 'rgb(0, 128, 0)');
+ });
+ </script>
+ </body>
+</html>
+
diff --git a/tests/wpt/tests/css/selectors/parsing/parse-part.html b/tests/wpt/tests/css/selectors/parsing/parse-part.html
index c166fd7765b..fa1856ad2a9 100644
--- a/tests/wpt/tests/css/selectors/parsing/parse-part.html
+++ b/tests/wpt/tests/css/selectors/parsing/parse-part.html
@@ -26,6 +26,8 @@
test_valid_selector(":dir(ltr)::part(foo)");
test_valid_selector("::part(foo):lang(en)");
test_valid_selector("::part(foo):dir(ltr)");
+ test_valid_selector("::part(foo):disabled");
+ test_valid_selector("::part(foo):checked");
test_invalid_selector(":part()");
test_invalid_selector(":part(0)");
test_invalid_selector(":part('foo')");
diff --git a/tests/wpt/tests/css/support/color-testcommon.js b/tests/wpt/tests/css/support/color-testcommon.js
index 18ab4420f67..060f251f0c1 100644
--- a/tests/wpt/tests/css/support/color-testcommon.js
+++ b/tests/wpt/tests/css/support/color-testcommon.js
@@ -63,6 +63,26 @@ function fuzzy_test_computed_color(specified, computed, epsilon) {
}
/**
+ * Test the computed value of a color property with some tolerance for numeric parameters.
+ *
+ * @param {string} property A style property to test.
+ * @param {string} specified A specified value for the color.
+ * @param {string} computed The expected computed color. If omitted, defaults
+ * to the default test_computed_value test, as
+ * fuzziness is unnecessary.
+ * @param {object} epsilon Epsilon for comparison of numeric values.
+ */
+
+function fuzzy_test_computed_color_property(property, specified, computed, epsilon) {
+ if (!computed) {
+ test_computed_value(property, specified);
+ return;
+ }
+
+ test_computed_value(property, specified, computed, undefined /* titleExtra */, {comparisonFunction: set_up_fuzzy_color_test(epsilon)});
+}
+
+/**
* Test the parsed value of a color.
*
* @param {string} specified A specified value for the property.
@@ -81,6 +101,25 @@ function fuzzy_test_valid_color(specified, parsed, epsilon) {
}
/**
+ * Test the parsed value of a color property.
+ *
+ * @param {string} property A style property to test.
+ * @param {string} specified A specified value for the property.
+ * @param {string} parsed The expected parsed color. If omitted, defaults
+ * to the default test_valid_value test, as
+ * fuzziness is unnecessary.
+ * @param {object} epsilon Epsilon for comparison of numeric values.
+ */
+function fuzzy_test_valid_color_property(property, specified, parsed, epsilon) {
+ if (!parsed) {
+ test_valid_value(property, specified);
+ return;
+ }
+
+ test_valid_value(property, specified, parsed, {comparisonFunction: set_up_fuzzy_color_test(epsilon)});
+}
+
+/**
* Fuzzy color matcher for oklab color with optional transparency.
* @param {string} actual Observed color
* @param {string} expected What the color should be
diff --git a/tests/wpt/tests/custom-elements/ElementInternals-role.html b/tests/wpt/tests/custom-elements/ElementInternals-role.html
new file mode 100644
index 00000000000..193cd77644c
--- /dev/null
+++ b/tests/wpt/tests/custom-elements/ElementInternals-role.html
@@ -0,0 +1,192 @@
+<!DOCTYPE HTML>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
+
+<body>
+ <table-element id="table-row-columnheader-test">
+ <row-element>
+ <columnheader-element></columnheader-element>
+ </row-element>
+ </table-element>
+ <grid-element id="grid-row-gridcell-test">
+ <row-element>
+ <gridcell-element></gridcell-element>
+ </row-element>
+ </grid-element>
+ <list-element id="list-listitem-test">
+ <listitem-element></listitem-element>
+ </list-element>
+ <menu-element id="menu-menuitem-test">
+ <menuitem-element></menuitem-element>
+ </menu-element>
+ <menu-element id="menu-menuitemcheckbox-test">
+ <menuitemcheckbox-element></menuitemcheckbox-element>
+ </menu-element>
+ <menu-element id="menu-menuitemradio-test">
+ <menuitemradio-element></menuitemradio-element>
+ </menu-element>
+ <listbox-element id="listbox-option-test">
+ <option-element></option-element>
+ </listbox-element>
+ <table-element id="table-row-test">
+ <row-element></row-element>
+ </table-element>
+ <table-element id="table-rowgroup-test">
+ <rowgroup-element></rowgroup-element>
+ </table-element>
+ <table-element id="table-row-rowheader-test">
+ <row-element>
+ <rowheader-element></rowheader-element>
+ </row-element>
+ </table-element>
+ <tablist-element id="tablist-tab-test">
+ <tab-element></tab-element>
+ </tablist-element>
+ <tree-element id="tree-treeitem-test">
+ <treeitem-element></treeitem-element>
+ </tree-element>
+</body>
+
+<script>
+function conditionally_register_element(role) {
+ if (!customElements.get(`${role}-element`)) {
+ customElements.define(`${role}-element`, class extends HTMLElement {
+ constructor() {
+ super();
+ this.internals_ = this.attachInternals();
+ this.internals_.role = role;
+ this.internals_.ariaLabel = `Test ${role} label`;
+ }
+ });
+ }
+}
+
+function generate_role_element(role) {
+ conditionally_register_element(role);
+ const el = document.createElement(`${role}-element`);
+ document.body.append(el);
+ return el;
+}
+
+function generate_child_role_element(role, parentElement) {
+ conditionally_register_element(role);
+ const el = document.createElement(`${role}-element`);
+ parentElement.append(el);
+ return el;
+}
+
+const test_roles = [
+ 'alert',
+ 'alertdialog',
+ 'application',
+ 'article',
+ 'banner',
+ 'button',
+ 'cell',
+ 'checkbox',
+ 'combobox',
+ 'complementary',
+ 'contentinfo',
+ 'definition',
+ 'dialog',
+ ['directory', 'list'], // is this expected?
+ 'document',
+ 'figure',
+ 'form',
+ 'grid',
+ 'group',
+ 'heading',
+ ['img', 'image'],
+ 'feed',
+ 'link',
+ 'list',
+ 'listbox',
+ 'log',
+ 'main',
+ 'marquee',
+ 'math',
+ 'menu',
+ 'menubar',
+ 'meter',
+ 'navigation',
+ 'note',
+ 'progressbar',
+ 'radio',
+ 'radiogroup',
+ 'region',
+ 'scrollbar',
+ 'search',
+ 'searchbox',
+ 'separator',
+ 'slider',
+ 'spinbutton',
+ 'status',
+ 'switch',
+ 'table',
+ 'tablist',
+ 'tabpanel',
+ 'term',
+ 'textbox',
+ 'timer',
+ 'toolbar',
+ 'tooltip',
+ 'tree',
+ 'treegrid'
+];
+
+test_roles.map((testdata) => {
+ let role;
+ let roleName;
+ if (Array.isArray(testdata)) {
+ role = testdata[0];
+ roleName = testdata[1];
+ } else {
+ role = testdata;
+ roleName = testdata;
+ }
+ promise_test(async () => {
+ const el = generate_role_element(role);
+ const computed_role = await test_driver.get_computed_role(el);
+ const computed_label = await test_driver.get_computed_label(el);
+ assert_equals(computed_role, roleName, el);
+ assert_equals(computed_label, `Test ${role} label`, el);
+ el.remove();
+ }, `Applies "${role}" via Element Internals`);
+});
+
+const child_test_roles = [
+ ['table', 'row', 'columnheader'],
+ ['grid', 'row', 'gridcell'],
+ ['list', 'listitem'],
+ ['menu', 'menuitem'],
+ ['menu', 'menuitemcheckbox'],
+ ['menu', 'menuitemradio'],
+ ['listbox', 'option'],
+ ['table', 'row'],
+ ['table', 'rowgroup'],
+ ['table', 'row', 'rowheader'],
+ ['tablist', 'tab'],
+ ['tree', 'treeitem'],
+];
+
+child_test_roles.map((roles) => {
+ promise_test(async () => {
+ // Ensure role applied elements are registered.
+ roles.forEach((role) => {
+ conditionally_register_element(role);
+ });
+ // Gather test DOM and walk children to ensure parent/child relationships are correct.
+ let testEl = document.getElementById([...roles, 'test'].join('-'));
+ for (let i = 0; i < roles.length; i++) {
+ const role = roles[i];
+ const computed_role = await test_driver.get_computed_role(testEl);
+ const computed_label = await test_driver.get_computed_label(testEl);
+ assert_equals(computed_role, role, testEl);
+ assert_equals(computed_label, `Test ${role} label`, testEl);
+ testEl = testEl.children[0];
+ }
+ }, `Applies parent/child relationship of "${roles.join('"/"')}" via Element Internals`);
+});
+</script>
diff --git a/tests/wpt/tests/custom-elements/WEB_FEATURES.yml b/tests/wpt/tests/custom-elements/WEB_FEATURES.yml
index 7a9f56f6d6a..e77a8695bdd 100644
--- a/tests/wpt/tests/custom-elements/WEB_FEATURES.yml
+++ b/tests/wpt/tests/custom-elements/WEB_FEATURES.yml
@@ -1,44 +1,17 @@
features:
- name: autonomous-custom-elements
- # TODO: Replace this list by an exclusion pattern. It is simply all tests
- # except the ones for customized built-in elements.
files:
- - adopted-callback.html
- - attribute-changed-callback.html
- - connected-callbacks-html-fragment-parsing.html
- - connected-callbacks-template.html
- - connected-callbacks.html
- - cross-realm-callback-report-exception.html
- - custom-element-reaction-queue.html
- - CustomElementRegistry-constructor-and-callbacks-are-held-strongly.html
- - CustomElementRegistry-getName.html
- - CustomElementRegistry.html
- - disconnected-callbacks.html
- - Document-createElement-svg.svg
- - Document-createElement.html
- - Document-createElementNS.html
- - element-internals-aria-element-reflection.html
- - element-internals-shadowroot.html
- - ElementInternals-accessibility.html
- - enqueue-custom-element-callback-reactions-inside-another-callback.html
- - historical.html
- - HTMLElement-attachInternals.html
- - HTMLElement-constructor.html
- - microtasks-and-constructors.html
- - overwritten-customElements-global.html
- - perform-microtask-checkpoint-before-construction-xml-parser.xhtml
- - perform-microtask-checkpoint-before-construction.html
- - pseudo-class-defined-print.html
- - pseudo-class-defined.html
- - range-and-constructors.html
- - reaction-timing.html
- - throw-on-dynamic-markup-insertion-counter-construct-xml-parser.xhtml
- - throw-on-dynamic-markup-insertion-counter-construct.html
- - throw-on-dynamic-markup-insertion-counter-reactions-xml-parser.xhtml
- - throw-on-dynamic-markup-insertion-counter-reactions.html
- - upgrading.html
+ - "*"
+ # Exclude customized built-in elements. Keep in sync with below list.
+ - "!builtin-coverage.html"
+ - "!customized-built-in-constructor-exceptions.html"
+ - "!Document-createElement-customized-builtins.html"
+ - "!Document-createElementNS-customized-builtins.html"
+ - "!HTMLElement-constructor-customized-builtins.html"
+ - "!pseudo-class-defined-customized-builtins.html"
- name: customized-built-in-elements
files:
+ # Keep in sync with above list.
- builtin-coverage.html
- customized-built-in-constructor-exceptions.html
- Document-createElement-customized-builtins.html
diff --git a/tests/wpt/tests/digital-credentials/non-fully-active.https.html b/tests/wpt/tests/digital-credentials/non-fully-active.https.html
index dac4cecb78c..82b87b63d7d 100644
--- a/tests/wpt/tests/digital-credentials/non-fully-active.https.html
+++ b/tests/wpt/tests/digital-credentials/non-fully-active.https.html
@@ -42,28 +42,28 @@
// Try to get credentials while not fully active...
await promise_rejects_dom(
t,
- "NotAllowedError",
+ "InvalidStateError",
DOMExceptionCtor,
identity.get({ signal }),
- "Expected NotAllowedError for get() on non-fully-active document"
+ "Expected InvalidStateError for get() on non-fully-active document"
);
// Try to create credentials while not fully active...
await promise_rejects_dom(
t,
- "NotAllowedError",
+ "InvalidStateError",
DOMExceptionCtor,
identity.create({ signal }),
- "Expected NotAllowedError for create() on non-fully-active document"
+ "Expected InvalidStateError for create() on non-fully-active document"
);
// Try to prevent silent access while not fully active...
await promise_rejects_dom(
t,
- "NotAllowedError",
+ "InvalidStateError",
DOMExceptionCtor,
identity.preventSilentAccess(),
- "Expected NotAllowedError for preventSilentAccess() on non-fully-active document"
+ "Expected InvalidStateError for preventSilentAccess() on non-fully-active document"
);
}, "non-fully active document behavior for CredentialsContainer");
</script>
diff --git a/tests/wpt/tests/docs/writing-tests/testdriver.md b/tests/wpt/tests/docs/writing-tests/testdriver.md
index fcf0199badc..b1428b6af71 100644
--- a/tests/wpt/tests/docs/writing-tests/testdriver.md
+++ b/tests/wpt/tests/docs/writing-tests/testdriver.md
@@ -125,6 +125,12 @@ the global scope.
.. js:autofunction:: test_driver.clear_device_posture
```
+### Bounce Tracking Mitigations ###
+
+```eval_rst
+.. js:autofunction:: test_driver.run_bounce_tracking_mitigations
+```
+
### Using test_driver in other browsing contexts ###
Testdriver can be used in browsing contexts (i.e. windows or frames)
diff --git a/tests/wpt/tests/dom/abort/abort-signal-any-crash.html b/tests/wpt/tests/dom/abort/abort-signal-any-crash.html
new file mode 100644
index 00000000000..912c0d0ada7
--- /dev/null
+++ b/tests/wpt/tests/dom/abort/abort-signal-any-crash.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<html class=test-wait>
+ <head>
+ <title>AbortSignal::Any when source signal was garbage collected</title>
+ <link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1908466">
+ <link rel="author" title="Vincent Hilla" href="mailto:vhilla@mozilla.com">
+ <script src="/common/gc.js"></script>
+ </head>
+ <body>
+ <p>Test passes if the browser does not crash.</p>
+ <script>
+ async function test() {
+ let controller = new AbortController();
+ let signal = AbortSignal.any([controller.signal]);
+ controller = undefined;
+ await garbageCollect();
+ AbortSignal.any([signal]);
+ document.documentElement.classList.remove('test-wait');
+ }
+ test();
+ </script>
+ </body>
+</html>
diff --git a/tests/wpt/tests/dom/nodes/moveBefore/tentative/popover-preserve.html b/tests/wpt/tests/dom/nodes/moveBefore/tentative/popover-preserve.html
new file mode 100644
index 00000000000..5487bd4aec5
--- /dev/null
+++ b/tests/wpt/tests/dom/nodes/moveBefore/tentative/popover-preserve.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<title>moveBefore should not close a popover</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<body>
+<section id="old_parent">
+<div popover>
+Popover
+</div>
+</section>
+<section id="new_parent">
+</section>
+<script>
+promise_test(async t => {
+ const popover = document.querySelector("div[popover]");
+ popover.showPopover();
+ await new Promise(resolve => requestAnimationFrame(() => resolve()));
+ assert_equals(document.querySelector(":popover-open"), popover);
+ document.querySelector("#new_parent").moveBefore(popover, null);
+ assert_equals(document.querySelector(":popover-open"), popover);
+}, "when reparenting an open popover, it shouldn't be closed automatically");
+</script>
diff --git a/tests/wpt/tests/dom/observable/tentative/observable-filter.any.js b/tests/wpt/tests/dom/observable/tentative/observable-filter.any.js
index 419d59ed8a8..0a2aa366584 100644
--- a/tests/wpt/tests/dom/observable/tentative/observable-filter.any.js
+++ b/tests/wpt/tests/dom/observable/tentative/observable-filter.any.js
@@ -28,7 +28,7 @@ test(() => {
const source = new Observable(subscriber => {
subscriber.addTeardown(() => teardownCalled = true);
subscriber.next(1);
- assert_true(teardownCalled, "Teardown called once map unsubscribes due to error");
+ assert_true(teardownCalled, "Teardown called once filter unsubscribes due to error");
assert_false(subscriber.active, "Unsubscription makes Subscriber inactive");
results.push(subscriber.signal.reason);
subscriber.next(2);
@@ -76,7 +76,7 @@ test(() => {
let predicateCalls = 0;
const results = [];
- source.map(v => ++predicateCalls).subscribe({
+ source.filter(v => ++predicateCalls).subscribe({
next: v => results.push(v),
error: e => results.push(e),
complete: () => results.push('complete'),
diff --git a/tests/wpt/tests/editing/crashtests/replace-body-after-designMode-off-and-making-editing-host.html b/tests/wpt/tests/editing/crashtests/replace-body-after-designMode-off-and-making-editing-host.html
new file mode 100644
index 00000000000..1ec599eabff
--- /dev/null
+++ b/tests/wpt/tests/editing/crashtests/replace-body-after-designMode-off-and-making-editing-host.html
@@ -0,0 +1,17 @@
+<!doctype html>
+<html>
+<head>
+<meta charset="utf-8">
+<script>
+document.addEventListener("DOMContentLoaded", async () => {
+ document.designMode = "on";
+ const style = document.createElement("style");
+ document.documentElement.appendChild(style);
+ document.designMode = "off";
+ style.setAttribute("contenteditable", "true");
+ document.documentElement.innerHTML = "<div></div>";
+}, {once: true});
+</script>
+</head>
+<body></body>
+</html>
diff --git a/tests/wpt/tests/editing/manual/contenteditable-insertfromdrop-type-inputevent-data-manual.html b/tests/wpt/tests/editing/manual/contenteditable-insertfromdrop-type-inputevent-data-manual.html
new file mode 100644
index 00000000000..1836553b3b3
--- /dev/null
+++ b/tests/wpt/tests/editing/manual/contenteditable-insertfromdrop-type-inputevent-data-manual.html
@@ -0,0 +1,27 @@
+<!doctype html>
+<html>
+<meta charset=utf-8>
+<title>Manual drag and drop text</title>
+
+<div contenteditable id="editable">Please select a part of the text in this editable,
+ and then drag-and-drop the selected text to a different section of the textarea.
+
+ It is expected that the event data should be null.
+
+ If you see "insertFromDrop" events having null data, then the
+ test passes.
+
+ See https://www.w3.org/TR/input-events-1/#overview
+</div>
+<div id="out"></div>
+<script>
+ function getInputEventData(event) {
+ const out = document.getElementById('out');
+ const line = document.createElement('div');
+ line.textContent = 'inputType: ' + event.inputType + ' eventData: ' + event.data;
+ out.appendChild(line);
+ }
+ const editable = document.getElementById('editable');
+ editable.addEventListener('input', getInputEventData);
+</script>
+</html>
diff --git a/tests/wpt/tests/editing/manual/textarea-insertfromdrop-type-inputevent-data-manual.html b/tests/wpt/tests/editing/manual/textarea-insertfromdrop-type-inputevent-data-manual.html
new file mode 100644
index 00000000000..eee35a38220
--- /dev/null
+++ b/tests/wpt/tests/editing/manual/textarea-insertfromdrop-type-inputevent-data-manual.html
@@ -0,0 +1,29 @@
+<!doctype html>
+<html>
+<meta charset=utf-8>
+<title>Manual drag and drop text</title>
+
+<textarea id="text" rows="16" cols="60">Please select a part of the text in this textarea,
+ and then drag-and-drop the selected text to a different section of the textarea.
+
+ It is expected that "deleteByDrag" events will have no data (data == null), but it is
+ expected that "insertFromDrop" events populate the data attribute with the text that was
+ dropped / inserted.
+
+ If you see "insertFromDrop" events having the data that was dragged and dropped, then the
+ test passes.
+
+ See https://www.w3.org/TR/input-events-1/#overview
+</textarea>
+<div id="out"></div>
+<script>
+ function getInputEventData(event) {
+ const out = document.getElementById('out');
+ const line = document.createElement('div');
+ line.textContent = 'inputType: ' + event.inputType + ' eventData: ' + event.data;
+ out.appendChild(line);
+ }
+ const text = document.getElementById('text');
+ text.addEventListener('input', getInputEventData);
+</script>
+</html>
diff --git a/tests/wpt/tests/editing/other/fire-selection-change-on-deleting-empty-element.html b/tests/wpt/tests/editing/other/fire-selection-change-on-deleting-empty-element.html
new file mode 100644
index 00000000000..74770053066
--- /dev/null
+++ b/tests/wpt/tests/editing/other/fire-selection-change-on-deleting-empty-element.html
@@ -0,0 +1,25 @@
+<!doctype HTML>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
+
+<body>
+ <div contenteditable="true" id="target">
+ <h1><br></h1>
+ </div>
+ <script>
+ // Selection should be updated when removing element in contenteditable div
+ promise_test(async () => {
+ let selectionChangeCount = 0;
+ document.addEventListener("selectionchange", () => ++selectionChangeCount);
+ document.getElementById("target").focus();
+ await new Promise(resolve => step_timeout(resolve, 50));
+ // Remove the <h1> element
+ test_driver.send_keys(target, "\uE003");
+ // Waits a short time to allow any events to be processed.
+ await new Promise(resolve => step_timeout(resolve, 50));
+ assert_greater_than(selectionChangeCount, 1, "Selection change count should be greater than 1");
+ }, "Selection is updated after removing the element in contenteditable div");
+ </script>
+</body> \ No newline at end of file
diff --git a/tests/wpt/tests/editing/other/html-text-copy-paste-of-anchor-with-href-in-content-editable.html b/tests/wpt/tests/editing/other/html-text-copy-paste-of-anchor-with-href-in-content-editable.html
new file mode 100644
index 00000000000..5724b59ada4
--- /dev/null
+++ b/tests/wpt/tests/editing/other/html-text-copy-paste-of-anchor-with-href-in-content-editable.html
@@ -0,0 +1,31 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>This test is for testing HTML text copy paste of anchor tag containing href
+inside contenteditable.</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<div contenteditable="true" id="contentCopy"><a href="www.crbug.com/356548150">AnchorTagWithHREF</a></div>
+<div contenteditable="true" id="contentPaste"></div>
+<script>
+
+function runTests() {
+ test(function() {
+ const range = document.createRange();
+ const contentToCopy = document.getElementById('contentCopy');
+ range.selectNodeContents(contentToCopy);
+ const selection = window.getSelection();
+ const anchorToCopy = contentToCopy.querySelector('a');
+ selection.removeAllRanges();
+ selection.addRange(range);
+ document.execCommand('copy');
+ assert_true(anchorToCopy.hasAttribute('href'));
+ const pasteTarget = document.getElementById('contentPaste');
+ pasteTarget.focus();
+ document.execCommand('paste');
+ const pastedAnchor = pasteTarget.querySelector('a');
+ assert_true(pastedAnchor.hasAttribute('href'));
+ }, "Attribute href is missing after copy paste of anchor tag");
+}
+
+window.addEventListener("load", runTests, {once: true});
+</script>
diff --git a/tests/wpt/tests/editing/other/plain-text-copy-paste-of-paragraph-ending-with-non-layed-out-content.html b/tests/wpt/tests/editing/other/plain-text-copy-paste-of-paragraph-ending-with-non-layed-out-content.html
new file mode 100644
index 00000000000..4b053e37706
--- /dev/null
+++ b/tests/wpt/tests/editing/other/plain-text-copy-paste-of-paragraph-ending-with-non-layed-out-content.html
@@ -0,0 +1,121 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>This test is for testing plain text copy paste of paragraph
+ending with non layed out content.</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<div id="copy" contenteditable="true">
+<p>line 1</p>
+<p id="line2">line 2<!-- A comment !--></p>
+<p>line 3</p>
+</div>
+<textarea id="paste"></textarea>
+<script>
+"use strict";
+
+setup({explicit_done: true});
+
+function runTests() {
+ test(function() {
+ const range = document.createRange();
+ range.selectNodeContents(document.getElementById('copy'));
+ const selection = window.getSelection();
+ selection.removeAllRanges();
+ selection.addRange(range);
+ document.execCommand('copy');
+ selection.removeAllRanges();
+ const textarea = document.getElementById('paste');
+ textarea.focus();
+ document.execCommand('paste');
+ assert_equals(textarea.value, 'line 1\n\nline 2\n\nline 3');
+ }, "The extra line break is missing after the paragraph that ends with a comment.");
+
+ test(function() {
+ const line2 = document.getElementById('line2');
+ line2.innerHTML = 'line 2<span style="display: none;">hidden content</span>';
+ const range = document.createRange();
+ range.selectNodeContents(document.getElementById('copy'));
+ const selection = window.getSelection();
+ selection.removeAllRanges();
+ selection.addRange(range);
+ document.execCommand('copy');
+ selection.removeAllRanges();
+ const textarea = document.getElementById('paste');
+ textarea.value='';
+ textarea.focus();
+ document.execCommand('paste');
+ assert_equals(textarea.value, 'line 1\n\nline 2\n\nline 3');
+ }, "The extra line break is missing after the paragraph that ends with a display:none span.");
+
+ test(function() {
+ const line2 = document.getElementById('line2');
+ line2.innerHTML = 'line 2<span hidden>hidden content</span>';
+ const range = document.createRange();
+ range.selectNodeContents(document.getElementById('copy'));
+ const selection = window.getSelection();
+ selection.removeAllRanges();
+ selection.addRange(range);
+ document.execCommand('copy');
+ selection.removeAllRanges();
+ const textarea = document.getElementById('paste');
+ textarea.value='';
+ textarea.focus();
+ document.execCommand('paste');
+ assert_equals(textarea.value, 'line 1\n\nline 2\n\nline 3');
+ }, "The extra line break is missing after the paragraph that ends with a hidden span.");
+
+ test(function() {
+ const line2 = document.getElementById('line2');
+ line2.innerHTML = 'line 2<meta charset="UTF-8">';
+ const range = document.createRange();
+ range.selectNodeContents(document.getElementById('copy'));
+ const selection = window.getSelection();
+ selection.removeAllRanges();
+ selection.addRange(range);
+ document.execCommand('copy');
+ selection.removeAllRanges();
+ const textarea = document.getElementById('paste');
+ textarea.value='';
+ textarea.focus();
+ document.execCommand('paste');
+ assert_equals(textarea.value, 'line 1\n\nline 2\n\nline 3');
+ }, "The extra line break is missing after the paragraph that ends with a meta tag.");
+
+ test(function() {
+ const line2 = document.getElementById('line2');
+ line2.innerHTML = 'line 2<style>body{ font-family: Arial, sans-serif; ""}</style>';
+ const range = document.createRange();
+ range.selectNodeContents(document.getElementById('copy'));
+ const selection = window.getSelection();
+ selection.removeAllRanges();
+ selection.addRange(range);
+ document.execCommand('copy');
+ selection.removeAllRanges();
+ const textarea = document.getElementById('paste');
+ textarea.value='';
+ textarea.focus();
+ document.execCommand('paste');
+ assert_equals(textarea.value, 'line 1\n\nline 2\n\nline 3');
+ }, "The extra line break is missing after the paragraph that ends with a style tag.");
+
+ test(function() {
+ const line2 = document.getElementById('line2');
+ line2.innerHTML = 'line 2<base href="http://crbug.com/41350470">';
+ const range = document.createRange();
+ range.selectNodeContents(document.getElementById('copy'));
+ const selection = window.getSelection();
+ selection.removeAllRanges();
+ selection.addRange(range);
+ document.execCommand('copy');
+ selection.removeAllRanges();
+ const textarea = document.getElementById('paste');
+ textarea.value='';
+ textarea.focus();
+ document.execCommand('paste');
+ assert_equals(textarea.value, 'line 1\n\nline 2\n\nline 3');
+ }, "The extra line break is missing after the paragraph that ends with a base tag.");
+ done();
+}
+
+window.addEventListener("load", runTests, {once: true});
+</script>
diff --git a/tests/wpt/tests/editing/other/selection-change-not-fired-if-selection-set-to-root.html b/tests/wpt/tests/editing/other/selection-change-not-fired-if-selection-set-to-root.html
new file mode 100644
index 00000000000..39e8b46e69b
--- /dev/null
+++ b/tests/wpt/tests/editing/other/selection-change-not-fired-if-selection-set-to-root.html
@@ -0,0 +1,23 @@
+<!doctype HTML>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
+
+<body>
+ <div contenteditable="true" id="target">
+ </div>
+ <script>
+ // Selectionchange event should not get fired if the selection is already set to the beginning of the root
+ promise_test(async () => {
+ let selectionChangeCount = 0;
+ document.getElementById("target").focus();
+ await new Promise(resolve => step_timeout(resolve, 50));
+ document.addEventListener("selectionchange", () => ++selectionChangeCount);
+ test_driver.send_keys(target, "\uE003");
+ // Waits a short time to allow any events to be processed.
+ await new Promise(resolve => step_timeout(resolve, 50));
+ assert_equals(selectionChangeCount, 0, "Selectionchange event should not get fired");
+ }, "Selectionchange event not get fired when the selection is already set to the beginning of the root ");
+ </script>
+</body> \ No newline at end of file
diff --git a/tests/wpt/tests/encrypted-media/util/drm-messagehandler.js b/tests/wpt/tests/encrypted-media/util/drm-messagehandler.js
index 5c5577c6d68..b1565c12cb0 100644
--- a/tests/wpt/tests/encrypted-media/util/drm-messagehandler.js
+++ b/tests/wpt/tests/encrypted-media/util/drm-messagehandler.js
@@ -35,7 +35,14 @@ drmconfig = {
"sessionTypes" : [ "temporary", "persistent-usage-record", "persistent-license" ],
"merchant" : "w3c-eme-test",
"secret" : drmtodaysecret
- } ]
+ } ],
+ "com.microsoft.playready.recommendation": [
+ {
+ "serverURL": "https://test.playready.microsoft.com/service/rightsmanager.asmx",
+ "servertype" : "microsoft",
+ "sessionTypes" : [ "temporary", "persistent-license" ],
+ "merchant" : "w3c-eme-test",
+ } ],
};
@@ -54,7 +61,7 @@ var keySystemWrappers = {
});
},
- 'com.microsoft.playready': function(handler, messageType, message, params) {
+ playReadyHandler : function(handler, messageType, message, params) {
var msg, xmlDoc;
var licenseRequest = null;
var headers = {};
@@ -86,6 +93,14 @@ var keySystemWrappers = {
return handler.call(this, messageType, licenseRequest, 'arraybuffer', headers, params).catch(function(response){
return response.text().then( function( error ) { throw error; } );
});
+ },
+
+ 'com.microsoft.playready': function(handler, messageType, message, params) {
+ return keySystemWrappers.playReadyHandler.call(this, handler, messageType, message, params);
+ },
+
+ 'com.microsoft.playready.recommendation': function(handler, messageType, message, params) {
+ return keySystemWrappers.playReadyHandler.call(this, handler, messageType, message, params);
}
};
@@ -141,7 +156,6 @@ const requestConstructors = {
}
url += "PlayEnablers=B621D91F-EDCC-4035-8D4B-DC71760D43E9&"; // disable output protection
url += "ContentKey=" + btoa(String.fromCharCode.apply(null, content.key));
- return url;
}
// TODO: Include expiration time in URL
diff --git a/tests/wpt/tests/encrypted-media/util/utils.js b/tests/wpt/tests/encrypted-media/util/utils.js
index 79f8c7ea6d1..78678d5c038 100644
--- a/tests/wpt/tests/encrypted-media/util/utils.js
+++ b/tests/wpt/tests/encrypted-media/util/utils.js
@@ -80,8 +80,14 @@ function getSupportedKeySystem() {
var keysystem = undefined;
if (userAgent.indexOf('edge') > -1 ) {
keysystem = 'com.microsoft.playready';
- } else if ( userAgent.indexOf('chrome') > -1 || userAgent.indexOf('firefox') > -1 ) {
+ } else if (userAgent.indexOf('chrome') > -1) {
keysystem = 'com.widevine.alpha';
+ } else if (userAgent.indexOf('firefox') > -1) {
+ if (userAgent.includes("win")) {
+ keysystem = 'com.microsoft.playready.recommendation';
+ } else {
+ keysystem = 'com.widevine.alpha';
+ }
}
return keysystem;
}
diff --git a/tests/wpt/tests/event-timing/TapToStopFling.html b/tests/wpt/tests/event-timing/TapToStopFling.html
new file mode 100644
index 00000000000..df309d6584c
--- /dev/null
+++ b/tests/wpt/tests/event-timing/TapToStopFling.html
@@ -0,0 +1,77 @@
+<!DOCTYPE html>
+<html>
+<meta charset=utf-8 />
+<title></title>
+<style>
+#targetDiv {
+ width: 200px;
+ height: 200px;
+ overflow: scroll;
+}
+
+#innerDiv {
+ width: 4000px;
+ height: 4000px;
+}
+</style>
+<body style="margin:0">
+ <div id="targetDiv">
+ <div id="innerDiv">
+ </div>
+ </div>
+ <script src=/resources/testharness.js></script>
+ <script src=/resources/testharnessreport.js></script>
+ <script src=/resources/testdriver.js></script>
+ <script src=/resources/testdriver-actions.js></script>
+ <script src=/resources/testdriver-vendor.js></script>
+ <script src=resources/event-timing-test-utils.js></script>
+ <script>
+ let event_count = 0;
+
+ function validateEntries(entries) {
+ assert_equals(entries.length, 2, "two pointerdown entries should be received");
+ let entry = entries[0];
+ assert_equals(entry.name, 'pointerdown');
+ assert_equals(entry.interactionId, 0);
+ entry = entries[1];
+ assert_equals(entry.name, 'pointerdown');
+ assert_equals(entry.interactionId, 0);
+ }
+
+ promise_test(async t => {
+ assert_implements(window.PerformanceEventTiming, 'Event Timing is not supported.');
+ // Skip the test on a Mac as they do not support touch screens.
+ const isMac = navigator.platform.toUpperCase().indexOf('MAC')>=0;
+ if (isMac)
+ return;
+
+ // Wait for load event so we can interact on the page.
+ await new Promise(resolve => {
+ window.addEventListener('load', resolve);
+ });
+
+ let observedEntries = [];
+ const observerPromise = new Promise(resolve => {
+ let pointerdown_count = 0;
+ new PerformanceObserver(entryList => {
+ entryList.getEntries().forEach(e => {
+ if(e.name.includes('pointerdown')) {
+ pointerdown_count += 1;
+ observedEntries.push(e);
+ }
+ if(pointerdown_count == 2){
+ resolve(observedEntries);
+ }
+ });
+ }).observe({type: 'event',
+ durationThreshold: 0,
+ buffered: true});
+ })
+
+ const target = document.getElementById('targetDiv');
+ await interactAndObserve('fling-tap', target, observerPromise);
+ validateEntries(observedEntries);
+ }, "Event Timing: test that the second pointerdown event that happens during fling does not have interaction id.");
+</script>
+</body>
+</html>
diff --git a/tests/wpt/tests/event-timing/interactionid-keyboard-event-simulated-click-button-space.html b/tests/wpt/tests/event-timing/interactionid-keyboard-event-simulated-click-button-space.html
new file mode 100644
index 00000000000..d3ab5437f8e
--- /dev/null
+++ b/tests/wpt/tests/event-timing/interactionid-keyboard-event-simulated-click-button-space.html
@@ -0,0 +1,33 @@
+<!DOCTYPE html>
+<html>
+<meta charset=utf-8 />
+<title>Event Timing: Keyboard event simulated click</title>
+<meta charset=utf-8 />
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/resources/testdriver.js></script>
+<script src=/resources/testdriver-vendor.js></script>
+<script src=resources/event-timing-test-utils.js></script>
+
+<button id='button'>Click me.</button>
+
+<script>
+ promise_test(async t => {
+
+ let map = new Map();
+
+ const button = document.getElementById('button');
+
+ const callback = (entryList) => { entryList.getEntries().filter(filterAndAddToMap(['keydown','click'], map)); };
+
+ const readyToResolve = () => { return map.has('keydown') && map.has('click'); };
+
+ const observerPromise = createPerformanceObserverPromise(['event'], callback, readyToResolve);
+ await interactAndObserve('space-key-simulated-click', button, observerPromise);
+
+ assert_equals(map.get('click'), map.get('keydown'),
+ 'Click event should have the same interaction id as the keydown event.');
+
+ }, 'Click event triggered by space key in checkbox should have the same\
+ interaction id as that of the associated keyboard events.');
+</script>
diff --git a/tests/wpt/tests/event-timing/interactionid-keyboard-event-simulated-click-checkbox-space.html b/tests/wpt/tests/event-timing/interactionid-keyboard-event-simulated-click-checkbox-space.html
new file mode 100644
index 00000000000..3dd8e21e784
--- /dev/null
+++ b/tests/wpt/tests/event-timing/interactionid-keyboard-event-simulated-click-checkbox-space.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html>
+<meta charset=utf-8 />
+<title>Event Timing: Keyboard event simulated click</title>
+<meta charset=utf-8 />
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/resources/testdriver.js></script>
+<script src=/resources/testdriver-vendor.js></script>
+<script src=resources/event-timing-test-utils.js></script>
+
+<input type="checkbox">
+
+<script>
+ promise_test(async t => {
+
+ let map = new Map();
+
+ const checkbox = document.querySelector('input[type="checkbox"]');
+
+ const callback = (entryList) => { entryList.getEntries().filter(filterAndAddToMap(['keydown','click'], map)); };
+
+ const readyToResolve = () => { return map.has('keydown') && map.has('click'); };
+
+ const observerPromise = createPerformanceObserverPromise(['event'], callback, readyToResolve);
+
+ await interactAndObserve('space-key-simulated-click', checkbox, observerPromise );
+
+ assert_equals(map.get('click'), map.get('keydown'),
+ 'Click event should have the same interaction id as the keydown event.');
+
+ }, 'Click event triggered by space key in checkbox should have the same\
+ interaction id as that of the associated keyboard events.');
+</script>
diff --git a/tests/wpt/tests/event-timing/interactionid-keyboard-event-simulated-click-link-enter.html b/tests/wpt/tests/event-timing/interactionid-keyboard-event-simulated-click-link-enter.html
new file mode 100644
index 00000000000..6945d2ff771
--- /dev/null
+++ b/tests/wpt/tests/event-timing/interactionid-keyboard-event-simulated-click-link-enter.html
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<html>
+<meta charset=utf-8 />
+<title>Event Timing: Keyboard event simulated click</title>
+<meta charset=utf-8 />
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/resources/testdriver.js></script>
+<script src=/resources/testdriver-vendor.js></script>
+<script src=resources/event-timing-test-utils.js></script>
+
+<a id="lnk" href="url">
+
+<script>
+ promise_test(async t => {
+
+ let map = new Map();
+
+ const link = document.getElementById('lnk');
+
+ link.addEventListener('click', e=>{ e.preventDefault();})
+
+ const callback = (entryList) => { entryList.getEntries().filter(filterAndAddToMap(['keydown','click'], map)); };
+
+ const readyToResolve = () => { return map.has('keydown') && map.has('click'); };
+
+ const observerPromise = createPerformanceObserverPromise(['event'], callback, readyToResolve);
+
+ await interactAndObserve('enter-key-simulated-click', link, observerPromise );
+
+ assert_equals(map.get('click'), map.get('keydown'),
+ 'Click event should have the same interaction id as the keydown event.');
+
+ }, 'Click event triggered by space key in checkbox should have the same\
+ interaction id as that of the associated keyboard events.');
+</script>
diff --git a/tests/wpt/tests/event-timing/resources/event-timing-test-utils.js b/tests/wpt/tests/event-timing/resources/event-timing-test-utils.js
index a10f1c20c35..8bf429974a0 100644
--- a/tests/wpt/tests/event-timing/resources/event-timing-test-utils.js
+++ b/tests/wpt/tests/event-timing/resources/event-timing-test-utils.js
@@ -378,6 +378,21 @@ async function pressKey(target, key) {
await test_driver.send_keys(target, key);
}
+async function flingAndTapInTarget(target) {
+ const actions = new test_driver.Actions();
+ return actions.addPointer("pointer1", "touch")
+ .pointerMove(0, 0, {origin: target})
+ .pointerDown()
+ .pointerMove(0, -50, {origin: target})
+ .pointerMove(0, -50, {origin: target})
+ .pointerUp()
+ .pause(60)
+ .pointerMove(0, 0, {origin: target})
+ .pointerDown()
+ .pointerUp()
+ .send();
+}
+
// The testdriver.js, testdriver-vendor.js need to be included to use this
// function.
async function addListenersAndPress(target, key, events) {
@@ -416,6 +431,29 @@ async function createPerformanceObserverPromise(observeTypes, callback, readyToR
});
}
+const ENTER_KEY = '\uE007';
+const SPACE_KEY = '\uE00D';
+
+async function blockPointerDownEventListener(target, duration, count) {
+ return new Promise(resolve => {
+ target.addEventListener("pointerdown", () => {
+ event_count++;
+ mainThreadBusy(duration);
+ if (event_count == count)
+ resolve();
+ });
+ });
+}
+
+async function flingTapAndBlockMain(target, duration) {
+ await Promise.all([
+ blockPointerDownEventListener(target, 30, 2),
+ blockNextEventListener(target, "pointercancel", 30),
+ blockNextEventListener(target, "scroll", 30),
+ flingAndTapInTarget(target),
+ ]);
+}
+
// The testdriver.js, testdriver-vendor.js need to be included to use this
// function.
async function interactAndObserve(interactionType, target, observerPromise, key = '') {
@@ -459,6 +497,20 @@ async function interactAndObserve(interactionType, target, observerPromise, key
interactionPromise = pointerup(target);
break;
}
+ case 'space-key-simulated-click': {
+ addListeners(target, ['keydown', 'click']);
+ interactionPromise = interact('key', target, SPACE_KEY);
+ break;
+ }
+ case 'enter-key-simulated-click': {
+ addListeners(target, ['keydown', 'click']);
+ interactionPromise = interact('key', target, ENTER_KEY);
+ break;
+ }
+ case 'fling-tap': {
+ interactionPromise = flingTapAndBlockMain(target, 30);
+ break;
+ }
}
return Promise.all([interactionPromise, observerPromise]);
}
diff --git a/tests/wpt/tests/fedcm/fedcm-disconnect-iframe.sub.https.html b/tests/wpt/tests/fedcm/fedcm-disconnect-iframe.sub.https.html
index 275a4a55c5e..1587ef5f8be 100644
--- a/tests/wpt/tests/fedcm/fedcm-disconnect-iframe.sub.https.html
+++ b/tests/wpt/tests/fedcm/fedcm-disconnect-iframe.sub.https.html
@@ -22,7 +22,11 @@ async function createIframeAndWaitForMessage(test, iframeUrl, allow = false) {
iframe.allow = "identity-credentials-get";
}
document.body.appendChild(iframe);
- const message = await messageWatcher.wait_for("message");
+ let message = null;
+ // Ignore internal "testdriver-complete" messages.
+ do {
+ message = await messageWatcher.wait_for("message");
+ } while (!("result" in message.data));
return message.data;
}
diff --git a/tests/wpt/tests/fedcm/fedcm-identity-assertion-nocors.https.html b/tests/wpt/tests/fedcm/fedcm-identity-assertion-nocors.https.html
index ae89f51ab4e..79da95d5006 100644
--- a/tests/wpt/tests/fedcm/fedcm-identity-assertion-nocors.https.html
+++ b/tests/wpt/tests/fedcm/fedcm-identity-assertion-nocors.https.html
@@ -11,15 +11,18 @@ import {alt_request_options_with_mediation_required,
fedcm_test,
select_manifest,
mark_signed_in,
- fedcm_get_dialog_type_promise,
- fedcm_get_and_select_first_account} from './support/fedcm-helper.sub.js';
+ fedcm_error_dialog_dismiss,
+ fedcm_select_account_promise} from './support/fedcm-helper.sub.js';
fedcm_test(async t => {
await mark_signed_in();
let test_options = alt_request_options_with_mediation_required("manifest-token-nocors.json");
await select_manifest(t, test_options);
try {
- const cred = await fedcm_get_and_select_first_account(t, test_options);
+ const cred_promise = navigator.credentials.get(test_options);
+ await fedcm_select_account_promise(t, 0);
+ fedcm_error_dialog_dismiss(t);
+ await cred_promise;
assert_unreached("An IdentityCredentialError exception should be thrown.");
} catch (e) {
assert_true(e instanceof DOMException);
diff --git a/tests/wpt/tests/fedcm/fedcm-iframe.https.html b/tests/wpt/tests/fedcm/fedcm-iframe.https.html
index 6a9bec677cc..2c63a9973b2 100644
--- a/tests/wpt/tests/fedcm/fedcm-iframe.https.html
+++ b/tests/wpt/tests/fedcm/fedcm-iframe.https.html
@@ -29,7 +29,11 @@ async function createIframeAndWaitForMessage(test, iframeUrl, setPermissionPolic
iframe.style = style;
}
document.body.appendChild(iframe);
- const message = await messageWatcher.wait_for("message");
+ let message = null;
+ // Ignore internal "testdriver-complete" messages.
+ do {
+ message = await messageWatcher.wait_for("message");
+ } while (!("result" in message.data));
return message.data;
}
diff --git a/tests/wpt/tests/fedcm/fedcm-same-site-none.https.html b/tests/wpt/tests/fedcm/fedcm-same-site-none.https.html
new file mode 100644
index 00000000000..e4a9e3c4146
--- /dev/null
+++ b/tests/wpt/tests/fedcm/fedcm-same-site-none.https.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+<title>Federated Credential Management API SameSite=None tests.</title>
+<link rel="help" href="https://fedidcg.github.io/FedCM">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
+
+<body>
+
+<script type="module">
+import {fedcm_test,
+ alt_request_options_with_mediation_required,
+ select_manifest,
+ fedcm_get_and_select_first_account} from './support/fedcm-helper.sub.js';
+
+fedcm_test(async t => {
+ const options = alt_request_options_with_mediation_required('manifest_check_same_site_strict.json');
+ await select_manifest(t, options);
+ const cred = await fedcm_get_and_select_first_account(t, options);
+ assert_equals(cred.token, "token");
+ assert_equals(cred.isAutoSelected, false);
+}, "FedCM requests should be considered cross-origin and therefore not send SameSite=Strict or Lax cookies.");
+
+</script>
diff --git a/tests/wpt/tests/fedcm/fedcm-same-site-none/fedcm-same-site-none.https.html b/tests/wpt/tests/fedcm/fedcm-same-site-none/fedcm-same-site-none.https.html
deleted file mode 100644
index d3d20ea9df2..00000000000
--- a/tests/wpt/tests/fedcm/fedcm-same-site-none/fedcm-same-site-none.https.html
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE html>
-<title>Federated Credential Management API SameSite=None tests.</title>
-<link rel="help" href="https://fedidcg.github.io/FedCM">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/resources/testdriver.js"></script>
-<script src="/resources/testdriver-vendor.js"></script>
-
-<body>
-
-<script type="module">
-import {fedcm_test,
- alt_request_options_with_mediation_required,
- select_manifest,
- fedcm_get_and_select_first_account} from '../support/fedcm-helper.sub.js';
-
-fedcm_test(async t => {
- const options = alt_request_options_with_mediation_required('manifest_check_same_site_strict.json');
- await select_manifest(t, options);
- const cred = await fedcm_get_and_select_first_account(t, options);
- assert_equals(cred.token, "token");
- assert_equals(cred.isAutoSelected, false);
-}, "FedCM requests should be considered cross-origin and therefore not send SameSite=Strict or Lax cookies.");
-
-</script>
diff --git a/tests/wpt/tests/fedcm/fedcm-userinfo.https.html b/tests/wpt/tests/fedcm/fedcm-userinfo.https.html
index d256f685f7c..ea0db0b69f9 100644
--- a/tests/wpt/tests/fedcm/fedcm-userinfo.https.html
+++ b/tests/wpt/tests/fedcm/fedcm-userinfo.https.html
@@ -56,19 +56,14 @@ fedcm_test(async t => {
const cred = await fedcm_get_and_select_first_account(t, alt_request_options_with_mediation_required());
assert_equals(cred.token, "token");
- try {
- const manifest_path = `${alt_manifest_origin}/\
+ const manifest_path = `${alt_manifest_origin}/\
fedcm/support/fedcm/manifest.py`;
- const user_info = await IdentityProvider.getUserInfo({
+ await promise_rejects_dom(t, 'InvalidStateError',
+ IdentityProvider.getUserInfo({
configURL: manifest_path,
// Approved client
clientId: '123',
- });
- assert_unreached("Failure message");
- } catch (error) {
- assert_equals(error.message, "UserInfo request must be initiated from a frame that is the same origin with the provider.");
- // Expect failure
- }
+ }))
}, 'Test that User Info API does not work in the top frame');
</script>
diff --git a/tests/wpt/tests/fedcm/lfedcm-identity.create-store-collect.tentative.sub.https.html b/tests/wpt/tests/fedcm/lfedcm-identity.create-store-collect.tentative.sub.https.html
new file mode 100644
index 00000000000..9cc7278d375
--- /dev/null
+++ b/tests/wpt/tests/fedcm/lfedcm-identity.create-store-collect.tentative.sub.https.html
@@ -0,0 +1,332 @@
+<!doctype html>
+<head>
+<title>Test creation of 'identity' credentials</title>
+</head>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
+<script src="support/lfedcm-helpers.js"></script>
+<script type="module">
+'use strict';
+
+import {fedcm_select_account_promise} from './support/fedcm-helper.sub.js';
+
+promise_test(async t => {
+ let initData = {
+ id : "wpt-pick-me",
+ token: "token1",
+ };
+
+ let result1 = await navigator.credentials.create({
+ identity : initData,
+ });
+ assert_not_equals(result1, undefined, "A credential is returned from the CredentialContainer.");
+ assert_equals(result1.type, "identity", "The credential is an IdentityCredential");
+ assert_equals(result1.id, "wpt-pick-me", "The identity matches the argument");
+ assert_equals(result1.token, "token1", "The token matches the argument");
+
+
+ let result2 = new IdentityCredential(initData);
+ assert_not_equals(result2, undefined, "A credential is returned from new.");
+ assert_equals(result2.type, "identity", "The credential is an IdentityCredential");
+ assert_equals(result2.id, "wpt-pick-me", "The identity matches the argument");
+ assert_equals(result2.token, "token1", "The token matches the argument");
+}, "Basic valid credential creation");
+
+
+promise_test(async t => {
+ let initData = {
+ id_missing : "invalid"
+ };
+
+
+ await assert_throws_js(TypeError, () => new IdentityCredential(initData), "Create with missing id field in identity credential constructor throws TypeError.");
+ return promise_rejects_js(t, TypeError, navigator.credentials.create({
+ identity : initData,
+ }), "Create with missing id field in identity credential creation throws TypeError.");
+
+}, "Basic invalid credential creation");
+
+promise_test(async t => {
+ let initData = {
+ id : "wpt-pick-me"
+ };
+
+ let result1 = await navigator.credentials.create({
+ identity : initData,
+ });
+
+ let result2 = await navigator.credentials.store(result1);
+ assert_equals(result2, undefined, "The result of a store should be a promise that resolves to undefined.")
+
+ let result3 = await navigator.credentials.store(result1);
+ assert_equals(result3, undefined, "The result of a duplicate store should be a promise that resolves to undefined.")
+
+ await clearLightweightCredential(window.origin, "wpt-pick-me");
+}, "Basic identity credential store suceeds");
+
+
+promise_test(async t => {
+ let initData = {
+ id : "wpt-pick-me",
+ };
+
+ let result1 = await navigator.credentials.create({
+ identity : initData,
+ });
+ await navigator.credentials.store(result1);
+ let promise2 = navigator.credentials.get({identity: {providers: [{origin: window.origin}]}});
+ assert_true(promise2 instanceof Promise, "The return value of get must be a promise.");
+ let result2 = await promise2;
+ assert_equals(result2, null, "A credential is not returned from the CredentialContainer when the RP is not on the allowlist.");
+
+ let initDataWithOrigin = {
+ id : "wpt-pick-me",
+ effectiveOrigins : [window.origin],
+ };
+
+ let credential = await navigator.credentials.create({
+ identity : initDataWithOrigin,
+ });
+ await navigator.credentials.store(credential);
+
+ let getCredentialPromise = navigator.credentials.get({identity: {providers: [{origin: window.origin}]}});
+ let credentialGotten = await getCredentialPromise;
+ fedcm_select_account_promise(t, 0);
+ assert_not_equals(credentialGotten, undefined, "A credential is returned from the CredentialContainer.");
+ assert_equals(credentialGotten.type, "identity", "The credential is an IdentityCredential");
+ assert_equals(credentialGotten.id, "wpt-pick-me", "The identity matches the argument");
+
+
+ let promise3 = navigator.credentials.get({identity: {providers: []}});
+ assert_true(promise3 instanceof Promise, "The return value of get must be a promise.");
+ let result3 = await promise3;
+ assert_equals(result3, null, "A credential is not returned from the CredentialContainer when no providers are given.");
+
+
+ let promise4 = navigator.credentials.get({identity: {providers: [{origin: "https://{{hosts[alt][]}}:{{ports[https][0]}}"}]}});
+ assert_true(promise4 instanceof Promise, "The return value of get must be a promise.");
+ let result4 = await promise4;
+ assert_equals(result4, null, "A credential is not returned from the CredentialContainer when a provider with no credentials is given.");
+
+ await clearLightweightCredential(window.origin, "wpt-pick-me");
+}, "Basic same-origin identity credential collect suceeds");
+
+promise_test(async t => {
+
+ let initDataWithOrigin = {
+ id : "wpt-pick-me",
+ effectiveQueryURL : `https://{{hosts[][]}}:{{ports[https][0]}}/fedcm/support/acao-cors.py`,
+ };
+
+ let credential = await navigator.credentials.create({
+ identity : initDataWithOrigin,
+ });
+ await navigator.credentials.store(credential);
+
+ let promise2 = navigator.credentials.get({identity: {providers: [{origin: window.origin}]}});
+ assert_true(promise2 instanceof Promise, "The return value of get must be a promise.");
+ let result2 = await promise2;
+ assert_equals(result2, null, "A credential is not returned from the CredentialContainer when the effectiveQueryURL is not provided.");
+
+
+ let getCredentialPromise = navigator.credentials.get({identity: {providers: [{origin: window.origin, effectiveQueryURL: `https://{{hosts[][]}}:{{ports[https][0]}}/fedcm/support/acao-cors.py`}]}});
+ assert_true(getCredentialPromise instanceof Promise, "The return value of get must be a promise.");
+ fedcm_select_account_promise(t, 0);
+ let credentialGotten = await getCredentialPromise;
+ assert_not_equals(credentialGotten, undefined, "A credential is returned from the CredentialContainer.");
+ assert_equals(credentialGotten.type, "identity", "The credential is an IdentityCredential");
+ assert_equals(credentialGotten.id, "wpt-pick-me", "The identity matches the argument");
+
+ await clearLightweightCredential(window.origin, "wpt-pick-me");
+}, "Basic same-origin identity credential collect with effectiveQueryURL suceeds");
+
+promise_test(async t => {
+ let initDataWithOrigin = {
+ id : "wpt-pick-me",
+ effectiveOrigins : [window.origin],
+ };
+
+ let credential = await navigator.credentials.create({
+ identity : initDataWithOrigin,
+ });
+ await navigator.credentials.store(credential);
+
+ let promise2 = navigator.credentials.get({identity: {providers: [{loginURL: "https://{{hosts[][]}}:{{ports[https][0]}}/fedcm/support/lfedcm-identity.provider-create.sub.html"}]}});
+ assert_true(promise2 instanceof Promise, "The return value of get must be a promise.");
+ let result2 = await promise2;
+ fedcm_select_account_promise(t, 0);
+ assert_not_equals(result2, undefined, "A credential is returned from the CredentialContainer.");
+ assert_equals(result2.type, "identity", "The credential is an IdentityCredential");
+ assert_equals(result2.id, "wpt-pick-me", "The identity matches the argument");
+
+ await clearLightweightCredential(window.origin, "wpt-pick-me");
+}, "Basic same-origin identity credential collect with origin inferred from loginURL succeeds");
+
+
+promise_test(async t => {
+ let initDataWithOrigin = {
+ id : "wpt-pick-me",
+ effectiveQueryURL : `https://{{hosts[][]}}:{{ports[https][0]}}/fedcm/support/no-cors.py`,
+ };
+
+ let credential = await navigator.credentials.create({
+ identity : initDataWithOrigin,
+ });
+ await navigator.credentials.store(credential);
+
+ let promise2 = navigator.credentials.get({identity: {providers: [{origin: window.origin}]}});
+ assert_true(promise2 instanceof Promise, "The return value of get must be a promise.");
+ let result2 = await promise2;
+ assert_equals(result2, null, "A credential is not returned from the CredentialContainer when the effectiveQueryURL is not provided.");
+
+
+ let getCredentialPromise = navigator.credentials.get({identity: {providers: [{origin: window.origin, effectiveQueryURL: `https://{{hosts[][]}}:{{ports[https][0]}}/fedcm/support/no-cors.py`}]}});
+ let credentialGotten = await getCredentialPromise;
+ fedcm_select_account_promise(t, 0);
+ assert_not_equals(credentialGotten, undefined, "A credential is returned from the CredentialContainer.");
+ assert_equals(credentialGotten.type, "identity", "The credential is an IdentityCredential");
+ assert_equals(credentialGotten.id, "wpt-pick-me", "The identity matches the argument");
+
+ await clearLightweightCredential(window.origin, "wpt-pick-me");
+}, "Basic same-origin identity credential collect with effectiveQueryURL and no ACAO works because CORS is not needed");
+
+
+promise_test(async t => {
+ let getCredentialPromise, credentialGotten;
+
+ await createLightweightCredential("https://{{hosts[alt][]}}:{{ports[https][0]}}", {
+ id: "wpt-pick-me",
+ });
+
+ getCredentialPromise = navigator.credentials.get({identity: {providers: [{origin: "https://{{hosts[alt][]}}:{{ports[https][0]}}"}]}});
+ assert_true(getCredentialPromise instanceof Promise, "The return value of get must be a promise.");
+ credentialGotten = await getCredentialPromise;
+ assert_equals(credentialGotten, null, "A optionless credential is not returned from the CredentialContainer.");
+ await clearLightweightCredential("https://{{hosts[alt][]}}:{{ports[https][0]}}", "wpt-pick-me");
+
+}, "Cross-origin identity credential collection is correctly filtered when there is no effective argument");
+
+
+promise_test(async t => {
+ let getCredentialPromise, credentialGotten;
+
+ await createLightweightCredential("https://{{hosts[alt][]}}:{{ports[https][0]}}", {
+ id: "wpt-pick-me",
+ origin: "https://{{hosts[alt][]}}:{{ports[https][0]}}/",
+ });
+ getCredentialPromise = navigator.credentials.get({identity: {providers: [{origin: "https://{{hosts[alt][]}}:{{ports[https][0]}}"}]}});
+ assert_true(getCredentialPromise instanceof Promise, "The return value of get must be a promise.");
+ credentialGotten = await getCredentialPromise;
+ assert_equals(credentialGotten, null, "An innefective credential is not returned from the CredentialContainer.");
+ await clearLightweightCredential("https://{{hosts[alt][]}}:{{ports[https][0]}}", "wpt-pick-me");
+
+}, "Cross-origin identity credential collection is correctly filtered when the effective origin is not the relying party");
+
+promise_test(async t => {
+ let getCredentialPromise, credentialGotten;
+
+ await createLightweightCredential("https://{{hosts[alt][]}}:{{ports[https][0]}}", {
+ id: "wpt-pick-me",
+ origin: "https://{{hosts[][]}}:{{ports[https][0]}}/",
+ });
+
+ getCredentialPromise = navigator.credentials.get({identity: {providers: [{origin: "https://{{hosts[alt][]}}:{{ports[https][0]}}"}]}});
+ assert_true(getCredentialPromise instanceof Promise, "The return value of get must be a promise.");
+ fedcm_select_account_promise(t, 0);
+ credentialGotten = await getCredentialPromise;
+ assert_not_equals(credentialGotten, null, "An effective credential is returned from the CredentialContainer.");
+ await clearLightweightCredential("https://{{hosts[alt][]}}:{{ports[https][0]}}", "wpt-pick-me");
+
+}, "Cross-origin identity credential collection is correctly returned when the effective origin is the relying party");
+
+promise_test(async t => {
+ let getCredentialPromise, credentialGotten;
+
+ await createLightweightCredential("https://{{hosts[alt][]}}:{{ports[https][0]}}", {
+ id: "wpt-pick-me",
+ url: "no-cors"
+ });
+
+ getCredentialPromise = navigator.credentials.get({identity: {providers: [{origin: "https://{{hosts[alt][]}}:{{ports[https][0]}}"}]}});
+ assert_true(getCredentialPromise instanceof Promise, "The return value of get must be a promise.");
+ credentialGotten = await getCredentialPromise;
+ assert_equals(credentialGotten, null, "An innefective credential is not returned from the CredentialContainer.");
+ await clearLightweightCredential("https://{{hosts[alt][]}}:{{ports[https][0]}}", "wpt-pick-me");
+
+}, "Cross-origin identity credential collection is correctly filtered when the endpoint doesn't have CORS");
+
+promise_test(async t => {
+ let getCredentialPromise, credentialGotten;
+
+
+ await createLightweightCredential("https://{{hosts[alt][]}}:{{ports[https][0]}}", {
+ id: "wpt-pick-me",
+ url: "cors"
+ });
+
+ getCredentialPromise = navigator.credentials.get({identity: {providers: [{origin: "https://{{hosts[alt][]}}:{{ports[https][0]}}", effectiveQueryURL: "https://{{hosts[alt][]}}:{{ports[https][0]}}/fedcm/support/acao-cors.py"}]}});
+ assert_true(getCredentialPromise instanceof Promise, "The return value of get must be a promise.");
+ fedcm_select_account_promise(t, 0);
+ credentialGotten = await getCredentialPromise;
+ assert_not_equals(credentialGotten, null, "An effective credential is returned from the CredentialContainer.");
+ await clearLightweightCredential("https://{{hosts[alt][]}}:{{ports[https][0]}}", "wpt-pick-me");
+
+}, "Cross-origin identity credential collection is correctly returned when the endpoint returns success");
+
+
+promise_test(async t => {
+ let initData = {
+ id : "wpt-pick-me",
+ };
+
+ let result1 = await navigator.credentials.create({
+ identity : initData,
+ });
+ await navigator.credentials.store(result1);
+ let promise2 = navigator.credentials.get({identity: {providers: [{origin: window.origin}]}});
+ assert_true(promise2 instanceof Promise, "The return value of get must be a promise.");
+ let result2 = await promise2;
+ assert_equals(result2, null, "A credential is not returned from the CredentialContainer when the RP is not on the allowlist.");
+
+ let initDataWithOrigin = {
+ id : "wpt-pick-me",
+ effectiveOrigins : [window.origin],
+ };
+
+ let credential = await navigator.credentials.create({
+ identity : initDataWithOrigin,
+ });
+ await navigator.credentials.store(credential);
+
+ // Collect a credential so we can use silent access
+ let getCredentialPromise = navigator.credentials.get({identity: {providers: [{origin: window.origin}]}});
+ let credentialGotten = await getCredentialPromise;
+ fedcm_select_account_promise(t, 0);
+ assert_not_equals(credentialGotten, undefined, "A credential is returned from the CredentialContainer.");
+ assert_equals(credentialGotten.type, "identity", "The credential is an IdentityCredential");
+ assert_equals(credentialGotten.id, "wpt-pick-me", "The identity matches the argument");
+
+
+ // Collect the credential silently.
+ let getCredentialPromise2 = navigator.credentials.get({identity: {providers: [{origin: window.origin}]}});
+ let credentialGotten2 = await getCredentialPromise2;
+ assert_not_equals(credentialGotten2, undefined, "A credential is returned from the CredentialContainer.");
+ assert_equals(credentialGotten2.type, "identity", "The credential is an IdentityCredential");
+ assert_equals(credentialGotten2.id, "wpt-pick-me", "The identity matches the argument");
+
+ await navigator.credentials.preventSilentAccess();
+
+ let getCredentialPromise3 = navigator.credentials.get({identity: {providers: [{origin: window.origin}]}});
+ fedcm_select_account_promise(t, 0);
+ let credentialGotten3 = await getCredentialPromise3;
+ assert_not_equals(credentialGotten3, undefined, "A credential is returned from the CredentialContainer.");
+ assert_equals(credentialGotten3.type, "identity", "The credential is an IdentityCredential");
+ assert_equals(credentialGotten3.id, "wpt-pick-me", "The identity matches the argument");
+
+ await clearLightweightCredential(window.origin, "wpt-pick-me");
+ await clearLightweightCredential(window.origin, "other");
+}, "Credentials can be collected silently, but preventSilentAccess is respected");
+
+</script>
diff --git a/tests/wpt/tests/fedcm/lfedcm-identity.discovery.tentative.sub.https.html b/tests/wpt/tests/fedcm/lfedcm-identity.discovery.tentative.sub.https.html
new file mode 100644
index 00000000000..2d5e8e8db47
--- /dev/null
+++ b/tests/wpt/tests/fedcm/lfedcm-identity.discovery.tentative.sub.https.html
@@ -0,0 +1,111 @@
+<!doctype html>
+<head>
+<title>Test discovery of 'identity' credentials</title>
+</head>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
+<script src="support/lfedcm-helpers.js"></script>
+<script type="module">
+'use strict';
+
+import {fedcm_select_account_promise} from './support/fedcm-helper.sub.js';
+
+promise_test(async t => {
+ let getCredentialPromise, credentialGotten;
+
+ await test_driver.bless();
+ getCredentialPromise = navigator.credentials.get({identity: {providers: [{origin: "https://{{hosts[alt][]}}:{{ports[https][0]}}/", loginURL : `https://{{hosts[alt][]}}:{{ports[https][0]}}/fedcm/support/lfedcm-identity.provider-create.sub.html?id=wpt-pick-me&origin=${encodeURIComponent("https://{{hosts[][]}}:{{ports[https][0]}}/")}`, loginTarget : "popup"}]}});
+ credentialGotten = await getCredentialPromise;
+ fedcm_select_account_promise(t, 0);
+ assert_not_equals(credentialGotten, null, "A discovered credential is returned from the CredentialContainer.");
+
+ await clearLightweightCredential("https://{{hosts[alt][]}}:{{ports[https][0]}}", "wpt-pick-me");
+}, "Cross-origin identity credential discovery works");
+
+promise_test(async t => {
+ let getCredentialPromise, credentialGotten;
+
+ await test_driver.bless();
+ getCredentialPromise = navigator.credentials.get({identity: {providers: [{loginURL : `https://{{hosts[alt][]}}:{{ports[https][0]}}/fedcm/support/lfedcm-identity.provider-create.sub.html?id=wpt-pick-me&origin=${encodeURIComponent("https://{{hosts[][]}}:{{ports[https][0]}}/")}`, loginTarget : "popup"}]}});
+ fedcm_select_account_promise(t, 0);
+ credentialGotten = await getCredentialPromise;
+ assert_not_equals(credentialGotten, null, "A discovered credential is returned from the CredentialContainer.");
+
+ await clearLightweightCredential("https://{{hosts[alt][]}}:{{ports[https][0]}}", "wpt-pick-me");
+}, "Origin inferred from loginURL for discovery");
+
+promise_test(async t => {
+ let getCredentialPromise, credentialGotten;
+
+ await test_driver.bless();
+ getCredentialPromise = navigator.credentials.get({identity: {providers: [{origin: "https://{{hosts[alt][]}}:{{ports[https][0]}}/", loginURL : `https://{{hosts[alt][]}}:{{ports[https][0]}}/fedcm/support/lfedcm-identity.provider-create.sub.html?id=wpt-pick-me&url=cors`, loginTarget : "popup", effectiveQueryURL: "https://{{hosts[alt][]}}:{{ports[https][0]}}/fedcm/support/acao-cors.py"}]}});
+ fedcm_select_account_promise(t, 0);
+ credentialGotten = await getCredentialPromise;
+ assert_not_equals(credentialGotten, null, "A discovered credential is returned from the CredentialContainer.");
+
+ await clearLightweightCredential("https://{{hosts[alt][]}}:{{ports[https][0]}}", "wpt-pick-me");
+}, "Cross-origin identity credential discovery works using the effectiveQueryURL");
+
+promise_test(async t => {
+ let getCredentialPromise, credentialGotten;
+
+ let createdPromise = new Promise((resolve) => {
+ window.addEventListener(
+ "message",
+ (event) => {
+ if (event.data == "created") {
+ resolve();
+ }
+ }
+ );
+ });
+
+ await test_driver.bless();
+ let state = "pending";
+ getCredentialPromise = navigator.credentials.get({identity: {providers: [{origin: "https://{{hosts[alt][]}}:{{ports[https][0]}}/", loginURL : `https://{{hosts[alt][]}}:{{ports[https][0]}}/fedcm/support/lfedcm-identity.provider-create.sub.html?id=wpt-pick-me&postMessage&origin=${encodeURIComponent("https://{{hosts[alt][]}}:{{ports[https][0]}}/")}`, loginTarget : "popup"}]}});
+ getCredentialPromise.finally(() => {state = "fulfilled"});
+ await createdPromise;
+ assert_equals(state, "pending", "promise is not fulfilled during discovery window by get.");
+
+ window.open(`https://{{hosts[alt][]}}:{{ports[https][0]}}/fedcm/support/lfedcm-identity.provider-create.sub.html?id=wpt-pick-me&origin=${encodeURIComponent("https://{{hosts[][]}}:{{ports[https][0]}}/")}`);
+ fedcm_select_account_promise(t, 0);
+ credentialGotten = await getCredentialPromise;
+
+ assert_not_equals(credentialGotten, null, "Resolved with credential because the credential was stored.");
+
+ await clearLightweightCredential("https://{{hosts[alt][]}}:{{ports[https][0]}}", "wpt-pick-me");
+}, "Cross-origin identity credential discovery does not resolve with ineffective store from the right origin");
+
+
+promise_test(async t => {
+ let getCredentialPromise, credentialGotten;
+
+ let createdPromise = new Promise((resolve) => {
+ window.addEventListener(
+ "message",
+ (event) => {
+ if (event.data == "created") {
+ resolve();
+ }
+ }
+ );
+ });
+
+ await test_driver.bless();
+ let state = "pending";
+ getCredentialPromise = navigator.credentials.get({identity: {providers: [{origin: "https://{{hosts[alt][]}}:{{ports[https][0]}}/", loginURL : `https://{{hosts[alt][www]}}:{{ports[https][0]}}/fedcm/support/lfedcm-identity.provider-create.sub.html?id=wpt-pick-me&postMessage&origin=${encodeURIComponent("https://{{hosts[][]}}:{{ports[https][0]}}/")}`, loginTarget : "popup"}]}});
+ getCredentialPromise.finally(() => {state = "fulfilled"});
+ await createdPromise;
+ assert_equals(state, "pending", "promise is not fulfilled during discovery window by get.");
+
+ window.open(`https://{{hosts[alt][]}}:{{ports[https][0]}}/fedcm/support/lfedcm-identity.provider-create.sub.html?id=wpt-pick-me&origin=${encodeURIComponent("https://{{hosts[][]}}:{{ports[https][0]}}")}`);
+ credentialGotten = await getCredentialPromise;
+ fedcm_select_account_promise(t, 0);
+ assert_not_equals(credentialGotten, null, "Resolved with credential because the credential was stored.");
+
+ await clearLightweightCredential("https://{{hosts[alt][]}}:{{ports[https][0]}}", "wpt-pick-me");
+}, "Cross-origin identity credential discovery does not resolve with effective store from the wrong origin");
+
+</script>
diff --git a/tests/wpt/tests/fedcm/support/acao-cors.py b/tests/wpt/tests/fedcm/support/acao-cors.py
new file mode 100644
index 00000000000..57b6f1e3218
--- /dev/null
+++ b/tests/wpt/tests/fedcm/support/acao-cors.py
@@ -0,0 +1,6 @@
+def main(request, response):
+ if request.headers.get(b"Origin") is not None:
+ response.headers.set(
+ b"Access-Control-Allow-Origin", request.headers.get(b"Origin")
+ )
+ return ""
diff --git a/tests/wpt/tests/fedcm/support/fedcm-iframe.html b/tests/wpt/tests/fedcm/support/fedcm-iframe.html
index ba79c4cf9e9..085d6128976 100644
--- a/tests/wpt/tests/fedcm/support/fedcm-iframe.html
+++ b/tests/wpt/tests/fedcm/support/fedcm-iframe.html
@@ -14,6 +14,7 @@ import {request_options_with_mediation_required} from './fedcm-helper.sub.js';
// }
window.onload = async () => {
+ window.test_driver.set_test_context(window.top);
// Use this variable to stop trying to select an account once the get() promise is resolved.
let cancelHelper = false;
try {
diff --git a/tests/wpt/tests/fedcm/support/fedcm/disconnect-iframe.html b/tests/wpt/tests/fedcm/support/fedcm/disconnect-iframe.html
index f65763932b8..ae97011a535 100644
--- a/tests/wpt/tests/fedcm/support/fedcm/disconnect-iframe.html
+++ b/tests/wpt/tests/fedcm/support/fedcm/disconnect-iframe.html
@@ -24,6 +24,7 @@ async function attemptDisconnect() {
}
window.onload = async () => {
+ window.test_driver.set_test_context(window.top);
const params = new URLSearchParams(document.location.search);
if (params.has("skip_get")) {
attemptDisconnect();
diff --git a/tests/wpt/tests/fedcm/support/lfedcm-helpers.js b/tests/wpt/tests/fedcm/support/lfedcm-helpers.js
new file mode 100644
index 00000000000..28a43d9328e
--- /dev/null
+++ b/tests/wpt/tests/fedcm/support/lfedcm-helpers.js
@@ -0,0 +1,43 @@
+async function clearLightweightCredential(origin, id) {
+ let deletePromise = new Promise((resolve) => {
+ let handler = (event) => {
+ if (event.origin == origin && event.data == "deleted") {
+ resolve();
+ window.removeEventListener("message", handler);
+ }
+ };
+ window.addEventListener(
+ "message",
+ handler,
+ );
+ });
+ let win = window.open(`${origin}/fedcm/support/lfedcm-identity.provider-delete.sub.html?id=${id}`, "_blank");
+ await deletePromise;
+ win.close();
+ await navigator.credentials.preventSilentAccess();
+}
+
+async function createLightweightCredential(origin, options) {
+ let createPromise = new Promise((resolve) => {
+ let handler = (event) => {
+ if (event.origin == origin && event.data == "created") {
+ resolve();
+ window.removeEventListener("message", handler);
+ }
+ };
+ window.addEventListener(
+ "message",
+ handler,
+ );
+ });
+ options.postMessage = true;
+
+ let url = URL.parse(origin);
+ url.pathname = "/fedcm/support/lfedcm-identity.provider-create.sub.html";
+ for (const [name, value] of Object.entries(options)) {
+ url.searchParams.set(name, value);
+ }
+ let win = window.open(url, "_blank");
+ await createPromise;
+ win.close();
+}
diff --git a/tests/wpt/tests/fedcm/support/lfedcm-identity.provider-create.sub.html b/tests/wpt/tests/fedcm/support/lfedcm-identity.provider-create.sub.html
new file mode 100644
index 00000000000..4b60c7866f0
--- /dev/null
+++ b/tests/wpt/tests/fedcm/support/lfedcm-identity.provider-create.sub.html
@@ -0,0 +1,35 @@
+<!doctype html>
+<head>
+<title>Helper to create 'identity' credentials for discovery</title>
+</head>
+<script>
+'use strict';
+
+async function createCredentials(params) {
+ let identityData = {
+ id: params.get("id"),
+ }
+ if (params.get("origin")) {
+ identityData.effectiveOrigins = [params.get("origin")]
+ }
+ if (params.get("url") == "cors") {
+ identityData.effectiveQueryURL = "https://{{hosts[alt][]}}:{{ports[https][0]}}/fedcm/support/acao-cors.py";
+ } else if (params.get("url") == "no-cors") {
+ identityData.effectiveQueryURL = "https://{{hosts[alt][]}}:{{ports[https][0]}}/fedcm/support/no-cors.py";
+ }
+ return navigator.credentials.store(await navigator.credentials.create({
+ identity: identityData
+ }))
+}
+
+
+const queryString = window.location.search;
+const params = new URLSearchParams(queryString);
+createCredentials(params).then(() => {
+ if (params.has("postMessage")) {
+ window.opener.postMessage("created", "*");
+ }
+});
+
+
+</script>
diff --git a/tests/wpt/tests/fedcm/support/lfedcm-identity.provider-delete.sub.html b/tests/wpt/tests/fedcm/support/lfedcm-identity.provider-delete.sub.html
new file mode 100644
index 00000000000..47ff664e722
--- /dev/null
+++ b/tests/wpt/tests/fedcm/support/lfedcm-identity.provider-delete.sub.html
@@ -0,0 +1,27 @@
+<!doctype html>
+<head>
+<title>Helper to delete 'identity' credentials for discovery</title>
+</head>
+<script>
+'use strict';
+
+// we delete a credential by storing a credential with the same ID but
+// that is effective for no use. There isn't a native delete in the
+// credential manager, so this is how it must be done
+async function deleteCredentials() {
+ const queryString = window.location.search;
+ const params = new URLSearchParams(queryString);
+ let identityData = {
+ id: params.get("id"),
+ }
+ await navigator.credentials.store(await navigator.credentials.create({
+ identity: identityData
+ }));
+}
+
+deleteCredentials().then(() => {
+ window.opener.postMessage("deleted", "*");
+})
+
+
+</script>
diff --git a/tests/wpt/tests/fedcm/support/no-cors.py b/tests/wpt/tests/fedcm/support/no-cors.py
new file mode 100644
index 00000000000..a5be59ccb69
--- /dev/null
+++ b/tests/wpt/tests/fedcm/support/no-cors.py
@@ -0,0 +1,2 @@
+def main(request, response):
+ return ""
diff --git a/tests/wpt/tests/fenced-frame/allow-attribute-src.https.html b/tests/wpt/tests/fenced-frame/allow-attribute-src.https.html
new file mode 100644
index 00000000000..1cf53a1db3c
--- /dev/null
+++ b/tests/wpt/tests/fenced-frame/allow-attribute-src.https.html
@@ -0,0 +1,76 @@
+<!DOCTYPE html>
+<title>Test the 'src' attribute set in fenced frames.</title>
+<meta name=variant content="?type=fencedframe">
+<meta name=variant content="?type=iframe">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/utils.js"></script>
+<script src="/common/dispatcher/dispatcher.js"></script>
+<script src="resources/utils.js"></script>
+<script src="/common/media.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+
+<body></body>
+<script>
+frame_builder = () => {
+ const params = new URLSearchParams(location.search);
+ if (params.get('type') === "fencedframe") {
+ return attachFencedFrameContext({
+ attributes: [["allow", "shared-storage"]]
+ });
+ } else {
+ return attachIFrameContext({
+ generator_api: "fledge",
+ attributes: [["allow", "shared-storage"]]
+ });
+ }
+}
+
+promise_test(async () => {
+ // Not specifying an allowlist for a permissions policy will default the
+ // allowlist to 'src', which is an allowlist unique to iframes/fencedframes
+ // that matches either the URL of the 'src' attribute, the mapped URL of the
+ // URN in the 'src' attribute, or the mapped URL of the config in the 'config'
+ // attribute.
+ const frame = await frame_builder();
+ await frame.execute(async () => {
+ assert_true(document.featurePolicy.allowsFeature("shared-storage"));
+ });
+}, 'Src permissions policy in allow attribute.');
+
+promise_test(async () => {
+ const frame = await frame_builder();
+ await navigateFrameContext(frame, {
+ origin: get_host_info().HTTPS_ORIGIN,
+ });
+ // When the fenced frame navigates itself to a same-origin page, the resulting
+ // document should still allow "shared-storage" since it is still same-origin to the
+ // original mapped URL (i.e. what 'src' is considered to be).
+ await frame.execute(async () => {
+ assert_true(document.featurePolicy.allowsFeature("shared-storage"));
+ });
+}, 'Src permissions policy after same-origin navigation.');
+
+promise_test(async () => {
+ const frame = await frame_builder();
+ await navigateFrameContext(frame, {
+ origin: get_host_info().HTTPS_REMOTE_ORIGIN,
+ });
+ // When the fenced frame navigates itself to a cross-origin page, the
+ // resulting document should not allow "shared-storage" since it is now cross-origin
+ // to the original mapped URL (i.e. what 'src' is considered to be).
+ await frame.execute(async () => {
+ assert_false(document.featurePolicy.allowsFeature("shared-storage"));
+ });
+}, 'Src permissions policy after cross-origin navigation.');
+
+promise_test(async () => {
+ const frame = await frame_builder();
+ await frame.execute(async () => {
+ const child_frame = await attachIFrameContext();
+ await child_frame.execute(() => {
+ assert_true(document.featurePolicy.allowsFeature("shared-storage"));
+ })
+ });
+}, 'Src permissions policy in child iframe inheritance works properly.');
+</script>
diff --git a/tests/wpt/tests/fenced-frame/document-activeelement.https.html b/tests/wpt/tests/fenced-frame/document-activeelement.https.html
index 3ac1fd866fc..4f5bbb67655 100644
--- a/tests/wpt/tests/fenced-frame/document-activeelement.https.html
+++ b/tests/wpt/tests/fenced-frame/document-activeelement.https.html
@@ -17,10 +17,7 @@ promise_test(async(t) => {
assert_equals(document.activeElement, document.body);
- await actions.pointerMove(0, 0, {origin: fencedframe.element})
- .pointerDown()
- .pointerUp()
- .send();
+ await multiClick(0, 0, fencedframe.element, 5);
assert_equals(document.activeElement, fencedframe.element);
}, 'document.activeElement should be the fenced frame when it has focus');
diff --git a/tests/wpt/tests/fenced-frame/notify-event-prevent-caching.https.html b/tests/wpt/tests/fenced-frame/notify-event-prevent-caching.https.html
new file mode 100644
index 00000000000..872bab5b872
--- /dev/null
+++ b/tests/wpt/tests/fenced-frame/notify-event-prevent-caching.https.html
@@ -0,0 +1,101 @@
+<!DOCTYPE html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-actions.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
+<script src="/common/utils.js"></script>
+<script src="/common/dispatcher/dispatcher.js"></script>
+<script src="/common/get-host-info.sub.js"></script>
+<script src="resources/utils.js"></script>
+<title>Test that fenced frame notifyEvent() cannot reuse a cached event</title>
+
+<body>
+ <script>
+ promise_test(async (t) => {
+ const fencedframe = await attachFencedFrameContext(
+ {generator_api: 'fledge'});
+
+ let notified_promise = new Promise((resolve) => {
+ fencedframe.element.addEventListener('fencedtreeclick', () => resolve());
+ });
+
+ await fencedframe.execute(() => {
+ window.first_click_listener = (e) => {
+ // Before calling notifyEvent, cache the event for later. After this
+ // first notifyEvent call fires, we'll attempt to re-use the cached
+ // event to scam additional notifyEvent calls later.
+ window.cached_event = e;
+ window.fence.notifyEvent(e);
+ };
+ document.addEventListener('click', window.first_click_listener);
+ });
+
+ await multiClick(10, 10, fencedframe.element);
+ await notified_promise;
+
+ // That notifyEvent call should have consumed user activation.
+ let frame_has_activation = await fencedframe.execute(() => {
+ return navigator.userActivation.isActive;
+ });
+ assert_false(frame_has_activation);
+
+ // Now, let's do another activation, and try to call notifyEvent on
+ // the cached event.
+ // If we click again, the frame will receive another activation. If we
+ // try to call notifyEvent with the cached event instead, the call should
+ // fail, because even though the trusted click event still exists and the
+ // frame has activation, the original event has finished dispatching.
+ let second_notified_promise = new Promise((resolve) => {
+ fencedframe.element.addEventListener('fencedtreeclick', () => resolve());
+ });
+ await fencedframe.execute(() => {
+ // Unfortunately, a failed assertion in an event handler won't fail the
+ // whole test. So we have to wrap the handler in a Promise that can
+ // be awaited and examined from the test code.
+ document.removeEventListener('click', window.first_click_listener);
+ window.activation_promise = new Promise((resolve, reject) => {
+ document.addEventListener('click', (e) => {
+ try {
+ assert_equals(window.cached_event.type, 'click');
+ assert_true(window.cached_event.isTrusted);
+ assert_true(navigator.userActivation.isActive);
+ // 0 = NONE, no longer dispatching.
+ assert_equals(window.cached_event.eventPhase, 0);
+ window.fence.notifyEvent(window.cached_event);
+ reject('notifyEvent should not fire from a mousedown event.');
+ } catch (err) {
+ if (err.name != 'SecurityError') {
+ reject('Unexpected error: ' + err.message);
+ return;
+ }
+ resolve('PASS');
+ }
+ });
+ });
+ });
+
+ await multiClick(10, 10, fencedframe.element);
+
+ // After sending the mousedown events to reactivate the frame, we have to
+ // wait for the fenced frame to indicate that the notifyEvent call fails.
+ // If we get an unexpected result, we'll unwrap the promise into an
+ // exception, which should fail the test.
+ await fencedframe.execute(async () => {
+ await window.activation_promise;
+ });
+
+ // Lastly, we need to make sure the notifyEvent call never reached the
+ // parent frame.
+ let result = await Promise.race([
+ second_notified_promise,
+ new Promise((resolve) => {
+ t.step_timeout(() => resolve('timeout'), 2000);
+ })
+ ]);
+ assert_equals(result, 'timeout');
+
+ }, "Test that fenced frame notifyEvent() cannot reuse a cached event after dispatch finishes.");
+
+ </script>
+</body>
diff --git a/tests/wpt/tests/focus/activeelement-after-nested-loses-focus.html b/tests/wpt/tests/focus/activeelement-after-nested-loses-focus.html
new file mode 100644
index 00000000000..fbbec9b9cd5
--- /dev/null
+++ b/tests/wpt/tests/focus/activeelement-after-nested-loses-focus.html
@@ -0,0 +1,83 @@
+<!doctype html>
+<head>
+<meta charset=utf-8>
+<title>Use focusout and click events to test ancestors' activeElements are cleared and updated correctly when nested child loses focus</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
+</head>
+<body>
+<h1 id="my-h1">text</h1>
+
+<iframe
+ id="first-iframe"
+ src="about:blank"
+ srcdoc="
+ <!DOCTYPE html>
+ <html>
+ <body id='iframe-body' contentEditable='true'>
+ lorem ipsum
+ <iframe
+ id='nested-iframe'
+ srcdoc='
+ <html>
+ <body id=&quot;iframe-body-2&quot; contentEditable=&quot;true&quot;>
+ nested lorem ipsum
+ </body>
+ </html>'>
+ </iframe>
+ </body>
+ </html>
+ ">
+</iframe>
+
+<script>
+ async_test(t => {
+ window.onload = function() {
+ const iframe = document.querySelector("iframe");
+ const nestedIframe = iframe.contentDocument.getElementById("nested-iframe");
+
+ nestedIframe.contentDocument.getElementById("iframe-body-2").addEventListener('focusout', () => {
+ t.step(function() {
+ assert_equals(
+ nestedIframe.contentDocument.activeElement,
+ nestedIframe.contentDocument.body,
+ "nestedIframe should still have focus on its body");
+ assert_equals(
+ iframe.contentDocument.activeElement, nestedIframe,
+ "iframe should still think the nestedIframe is focused");
+ assert_equals(
+ document.activeElement, iframe,
+ "top level document should still think the iframe is focused");
+ });
+ });
+
+ const h1 = document.getElementById("my-h1");
+ h1.addEventListener("click", t.step_func_done(function() {
+ assert_equals(
+ nestedIframe.contentDocument.activeElement,
+ nestedIframe.contentDocument.body,
+ "nestedIframe originally has the focus on its body, and should still have the focus on its body after it loses the focus");
+ assert_equals(
+ iframe.contentDocument.activeElement,
+ iframe.contentDocument.body,
+ "Since nestedIframe loses the focus, iframe's activeElement should move from the nestedIframe to be its body"
+ );
+ assert_equals(
+ document.activeElement, document.body,
+ "top level document gains the focus");
+ }));
+
+ // Step 1: Focus the body of the nestedIframe
+ nestedIframe.contentDocument.body.focus();
+
+ // Step 2: Click focus the <h1> in the top level document
+ test_driver.click(h1);
+
+ // Now the focusout event for nestedIframe, and the
+ // click event for h1 should be triggered.
+ }
+ })
+</script>
+</body>
diff --git a/tests/wpt/tests/fs/FileSystemObserver-sync-access-handle.https.tentative.worker.js b/tests/wpt/tests/fs/FileSystemObserver-sync-access-handle.https.tentative.worker.js
new file mode 100644
index 00000000000..e21a3dd3904
--- /dev/null
+++ b/tests/wpt/tests/fs/FileSystemObserver-sync-access-handle.https.tentative.worker.js
@@ -0,0 +1,84 @@
+importScripts('/resources/testharness.js');
+importScripts('resources/sandboxed-fs-test-helpers.js');
+importScripts('resources/test-helpers.js');
+importScripts('resources/collecting-file-system-observer.js');
+
+'use strict';
+
+directory_test(async (t, root_dir) => {
+ const file = await root_dir.getFileHandle(getUniqueName(), {create: true});
+
+ const observer = new CollectingFileSystemObserver(t, root_dir);
+ await observer.observe([file]);
+
+ // Write to `file` through a `FileSystemSyncAccessHandle`.
+ const syncHandle = await createSAHWithCleanup(t, file);
+ const writeBuffer = new TextEncoder().encode('contents');
+ syncHandle.write(writeBuffer);
+ syncHandle.close();
+
+ // Expect one "modified" event to happen on `file`.
+ const records = await observer.getRecords();
+ await assert_records_equal(file, records, [modifiedEvent(file, [])]);
+}, 'FileSystemSyncAccessHandle.write produces a "modified" event');
+
+directory_test(async (t, root_dir) => {
+ const file = await root_dir.getFileHandle(getUniqueName(), {create: true});
+
+ const observer = new CollectingFileSystemObserver(t, root_dir);
+ await observer.observe([file]);
+
+ // Write to `file` through a `FileSystemSyncAccessHandle` multiple times.
+ const syncHandle = await createSAHWithCleanup(t, file);
+ const writeBuffer = new TextEncoder().encode('contents');
+
+ const numberOfWrites = 3;
+ const expectedEvents = [];
+ for (let i = 0; i < numberOfWrites; i++) {
+ expectedEvents.push(modifiedEvent(file, []));
+ syncHandle.write(writeBuffer);
+ }
+ syncHandle.close();
+
+ // Expect the same number of "modified" event to happen on `file` as there
+ // were writes to it.
+ const records = await observer.getRecords();
+ await assert_records_equal(file, records, expectedEvents);
+}, 'Multiple FileSystemSyncAccessHandle.writes produces the same amount of "modified" event');
+
+directory_test(async (t, root_dir) => {
+ const file = await root_dir.getFileHandle(getUniqueName(), {create: true});
+
+ const observer = new CollectingFileSystemObserver(t, root_dir);
+ await observer.observe([file]);
+
+ // Truncate to `file` through a `FileSystemSyncAccessHandle`.
+ const syncHandle = await createSAHWithCleanup(t, file);
+ syncHandle.truncate(1);
+ syncHandle.close();
+
+ // Expect one "modified" event to happen on `file`.
+ const records = await observer.getRecords();
+ await assert_records_equal(file, records, [modifiedEvent(file, [])]);
+}, 'FileSystemSyncAccessHandle.truncate produces a "modified" event');
+
+directory_test(async (t, root_dir) => {
+ const file = await root_dir.getFileHandle(getUniqueName(), {create: true});
+
+ const observer = new CollectingFileSystemObserver(t, root_dir);
+ await observer.observe([file]);
+
+ // Write to `file`.
+ const syncHandle = await createSAHWithCleanup(t, file);
+ const readBuffer = new Uint8Array(24);
+ syncHandle.read(readBuffer);
+ syncHandle.flush();
+ syncHandle.getSize();
+ syncHandle.close();
+
+ // Expect no events to happen.
+ const records = await observer.getRecords();
+ await assert_records_equal(file, records, []);
+}, 'FileSystemSyncAccessHandle methods that don\'t modify the file don\'t produce events');
+
+done();
diff --git a/tests/wpt/tests/fs/FileSystemObserver-unsupported-global.https.tentative.any.js b/tests/wpt/tests/fs/FileSystemObserver-unsupported-global.https.tentative.any.js
new file mode 100644
index 00000000000..adafe7d9dc0
--- /dev/null
+++ b/tests/wpt/tests/fs/FileSystemObserver-unsupported-global.https.tentative.any.js
@@ -0,0 +1,5 @@
+// META: global=serviceworker
+
+promise_test(async t => {
+ assert_throws_js(ReferenceError, () => new FileSystemObserver(() => {}));
+}, 'Creating a FileSystemObserver from an unsupported global fails');
diff --git a/tests/wpt/tests/fs/FileSystemObserver-writable-file-stream.https.tentative.any.js b/tests/wpt/tests/fs/FileSystemObserver-writable-file-stream.https.tentative.any.js
new file mode 100644
index 00000000000..9c030fb5471
--- /dev/null
+++ b/tests/wpt/tests/fs/FileSystemObserver-writable-file-stream.https.tentative.any.js
@@ -0,0 +1,5 @@
+// META: global=window,dedicatedworker,sharedworker
+// META: script=resources/sandboxed-fs-test-helpers.js
+// META: script=resources/test-helpers.js
+// META: script=resources/collecting-file-system-observer.js
+// META: script=script-tests/FileSystemObserver-writable-file-stream.js
diff --git a/tests/wpt/tests/fs/FileSystemObserver.https.tentative.any.js b/tests/wpt/tests/fs/FileSystemObserver.https.tentative.any.js
new file mode 100644
index 00000000000..992e73246cc
--- /dev/null
+++ b/tests/wpt/tests/fs/FileSystemObserver.https.tentative.any.js
@@ -0,0 +1,6 @@
+// META: global=window,dedicatedworker,sharedworker
+// META: script=resources/sandboxed-fs-test-helpers.js
+// META: script=resources/test-helpers.js
+// META: script=resources/collecting-file-system-observer.js
+// META: script=resources/change-observer-scope-test.js
+// META: script=script-tests/FileSystemObserver.js
diff --git a/tests/wpt/tests/fs/FileSystemObserver.https.tentative.window.js b/tests/wpt/tests/fs/FileSystemObserver.https.tentative.window.js
deleted file mode 100644
index 2b9f7ca7c78..00000000000
--- a/tests/wpt/tests/fs/FileSystemObserver.https.tentative.window.js
+++ /dev/null
@@ -1,3 +0,0 @@
-// META: script=/service-workers/service-worker/resources/test-helpers.sub.js
-// META: script=resources/messaging-helpers.js
-// META: script=script-tests/FileSystemObserver.js
diff --git a/tests/wpt/tests/fs/resources/change-observer-scope-test.js b/tests/wpt/tests/fs/resources/change-observer-scope-test.js
new file mode 100644
index 00000000000..c11d2ff9224
--- /dev/null
+++ b/tests/wpt/tests/fs/resources/change-observer-scope-test.js
@@ -0,0 +1,102 @@
+// This script depends on the following scripts:
+// resources/test-helpers.js
+
+// A helper class for WPTs testing FileSystemObserver scope behavior.
+//
+// Sets up a `watched_handle` for the test to watch. Provides the
+// `in_scope_paths()` and `out_of_scope_paths()` async iterators to get paths
+// that are in scope or out of scope of the `watched_path` respectively.
+class ScopeTest {
+ #test_dir_handle;
+
+ #watched_handle;
+ #out_of_scope_directory;
+
+ #child_dir_name;
+ #child_dir_handle;
+
+ #setup_promise_and_resolvers = Promise.withResolvers();
+
+ constructor(test, test_dir_handle) {
+ test.add_cleanup(async () => {
+ await this.#setup_promise_and_resolvers.promise;
+ this.#watched_handle.remove({recursive: true});
+ this.#out_of_scope_directory.remove({recursive: true});
+ });
+
+ this.#test_dir_handle = test_dir_handle;
+
+ this.#setup();
+ }
+
+ async watched_handle() {
+ await this.#setup_promise_and_resolvers.promise;
+ return this.#watched_handle;
+ }
+
+ async * in_scope_paths(recursive) {
+ await this.#setup_promise_and_resolvers.promise;
+
+ yield new ScopeTestPath(this.#watched_handle, [])
+
+ if (recursive) {
+ yield new ScopeTestPath(this.#child_dir_handle, [this.#child_dir_name]);
+ }
+ }
+
+ async * out_of_scope_paths(recursive) {
+ await this.#setup_promise_and_resolvers.promise;
+
+ yield new ScopeTestPath(this.#out_of_scope_directory, [])
+
+ if (!recursive) {
+ yield new ScopeTestPath(this.#child_dir_handle, [this.#child_dir_name]);
+ }
+ }
+
+ async #setup() {
+ this.#watched_handle = await this.#test_dir_handle.getDirectoryHandle(
+ getUniqueName(), {create: true});
+
+ this.#child_dir_name = getUniqueName();
+ this.#child_dir_handle = await this.#watched_handle.getDirectoryHandle(
+ this.#child_dir_name, {create: true});
+
+ this.#out_of_scope_directory =
+ await this.#test_dir_handle.getDirectoryHandle(
+ getUniqueName(), {create: true});
+
+ this.#setup_promise_and_resolvers.resolve();
+ }
+}
+
+// The class that ScopeTest delivers the in scope and out of scope paths in.
+class ScopeTestPath {
+ #parentHandle;
+ #fileName;
+ #relativePathComponents;
+
+ constructor(parentHandle, parentRelativePathComponents) {
+ this.#parentHandle = parentHandle;
+ this.#fileName = getUniqueName();
+ this.#relativePathComponents =
+ [...parentRelativePathComponents, this.#fileName];
+ }
+
+ parentHandle() {
+ return this.#parentHandle;
+ }
+
+ fileName() {
+ return this.#fileName;
+ }
+
+ // Returns the relative path components to the watched directory.
+ relativePathComponents() {
+ return this.#relativePathComponents;
+ }
+
+ createHandle() {
+ return this.#parentHandle.getFileHandle(this.#fileName, {create: true});
+ }
+}
diff --git a/tests/wpt/tests/fs/resources/collecting-file-system-observer.js b/tests/wpt/tests/fs/resources/collecting-file-system-observer.js
new file mode 100644
index 00000000000..64bb671af14
--- /dev/null
+++ b/tests/wpt/tests/fs/resources/collecting-file-system-observer.js
@@ -0,0 +1,152 @@
+// Wraps a FileSystemObserver to collect its records until it stops receiving
+// them.
+//
+// To collect records, it sets up a directory to observe and periodically create
+// files in it. If no new changes occur (outside of these file creations)
+// between two file changes, then it resolves the promise returned by
+// getRecords() with the records it collected.
+class CollectingFileSystemObserver {
+ #observer = new FileSystemObserver(this.#collectRecordsCallback.bind(this));
+ #notificationObserver =
+ new FileSystemObserver(this.#notificationCallback.bind(this));
+
+ #callback;
+
+ #records_promise_and_resolvers = Promise.withResolvers();
+ #collected_records = [];
+
+ #notification_dir_handle;
+ #notification_file_count = 0;
+ #received_changes_since_last_notification = true;
+
+ constructor(test, root_dir, callback) {
+ test.add_cleanup(() => {
+ this.disconnect();
+ this.#notificationObserver.disconnect();
+ });
+
+ this.#setupCollectNotification(root_dir);
+ this.#callback = callback ?? (() => {return {}});
+ }
+
+ #getCollectNotificationName() {
+ return `notification_file_${this.#notification_file_count}`;
+ }
+
+ async #setupCollectNotification(root_dir) {
+ this.#notification_dir_handle =
+ await root_dir.getDirectoryHandle(getUniqueName(), {create: true});
+ await this.#notificationObserver.observe(this.#notification_dir_handle);
+ await this.#createCollectNotification();
+ }
+
+ #createCollectNotification() {
+ this.#notification_file_count++;
+ return this.#notification_dir_handle.getFileHandle(
+ this.#getCollectNotificationName(), {create: true});
+ }
+
+ #finishCollectingIfReady() {
+ // `records` contains the notification for collecting records. Determine
+ // if we should finish collecting or create the next notification.
+ if (this.#received_changes_since_last_notification) {
+ this.#received_changes_since_last_notification = false;
+ this.#createCollectNotification();
+ } else {
+ this.#records_promise_and_resolvers.resolve(this.#collected_records);
+ }
+ }
+
+ #notificationCallback(records) {
+ this.#finishCollectingIfReady(records);
+ }
+
+ #collectRecordsCallback(records, observer) {
+ this.#collected_records.push({
+ ...this.#callback(records, observer),
+ records,
+ });
+
+ this.#received_changes_since_last_notification = true;
+ }
+
+ async getRecords() {
+ return (await this.#records_promise_and_resolvers.promise)
+ .map(record => record.records)
+ .flat();
+ }
+
+ getRecordsWithCallbackInfo() {
+ return this.#records_promise_and_resolvers.promise;
+ }
+
+ observe(handles, options) {
+ return Promise.all(
+ handles.map(handle => this.#observer.observe(handle, options)));
+ }
+
+ disconnect() {
+ this.#observer.disconnect();
+ }
+}
+
+async function assert_records_equal(root, actual, expected) {
+ assert_equals(
+ actual.length, expected.length,
+ 'Received an unexpected number of events');
+
+ for (let i = 0; i < actual.length; i++) {
+ const actual_record = actual[i];
+ const expected_record = expected[i];
+
+ assert_equals(
+ actual_record.type, expected_record.type,
+ 'A record\'s type didn\'t match the expected type');
+
+ assert_array_equals(
+ actual_record.relativePathComponents,
+ expected_record.relativePathComponents,
+ 'A record\'s relativePathComponents didn\'t match the expected relativePathComponents');
+
+ if (expected_record.relativePathMovedFrom) {
+ assert_array_equals(
+ actual_record.relativePathMovedFrom,
+ expected_record.relativePathMovedFrom,
+ 'A record\'s relativePathMovedFrom didn\'t match the expected relativePathMovedFrom');
+ } else {
+ assert_equals(
+ actual_record.relativePathMovedFrom, null,
+ 'A record\'s relativePathMovedFrom was set when it shouldn\'t be');
+ }
+
+ assert_true(
+ await actual_record.changedHandle.isSameEntry(
+ expected_record.changedHandle),
+ 'A record\'s changedHandle didn\'t match the expected changedHandle');
+ assert_true(
+ await actual_record.root.isSameEntry(root),
+ 'A record\'s root didn\'t match the expected root');
+ }
+}
+
+function modifiedEvent(changedHandle, relativePathComponents) {
+ return {type: 'modified', changedHandle, relativePathComponents};
+}
+
+function appearedEvent(changedHandle, relativePathComponents) {
+ return {type: 'appeared', changedHandle, relativePathComponents};
+}
+
+function disappearedEvent(changedHandle, relativePathComponents) {
+ return {type: 'disappeared', changedHandle, relativePathComponents};
+}
+
+function movedEvent(
+ changedHandle, relativePathComponents, relativePathMovedFrom) {
+ return {
+ type: 'moved',
+ changedHandle,
+ relativePathComponents,
+ relativePathMovedFrom
+ };
+}
diff --git a/tests/wpt/tests/fs/resources/message-target.js b/tests/wpt/tests/fs/resources/message-target.js
index a59fa6bec2b..ac5fa63e137 100644
--- a/tests/wpt/tests/fs/resources/message-target.js
+++ b/tests/wpt/tests/fs/resources/message-target.js
@@ -120,26 +120,6 @@ function add_message_event_handlers(receiver, target, target_origin) {
{ targetOrigin: target_origin });
break;
- case 'create-file-system-observer':
- // Attempt to create a file system observer with a dummy callback.
- // Respond with whether creating the observer succeeded.
- function dummyCallback(records, observer) {};
-
- let createObserverSuccess = true;
- try {
- const observer = new FileSystemObserver(dummyCallback);
- } catch (error) {
- createObserverSuccess = false;
- }
-
- message_source.postMessage(
- {
- type: 'receive-create-file-system-observer-result',
- createObserverSuccess
- },
- {targetOrigin: target_origin});
- break;
-
default:
throw `Unknown message type: '${message_data.type}'`;
}
diff --git a/tests/wpt/tests/fs/resources/test-helpers.js b/tests/wpt/tests/fs/resources/test-helpers.js
index add3dba6455..8f969c987dd 100644
--- a/tests/wpt/tests/fs/resources/test-helpers.js
+++ b/tests/wpt/tests/fs/resources/test-helpers.js
@@ -123,11 +123,20 @@ async function cleanup_writable(test, value) {
});
}
+function getUniqueName(name) {
+ return `unique${Date.now()}${Math.random().toString().slice(2)}`;
+}
+
function createFileHandles(dir, ...fileNames) {
return Promise.all(
fileNames.map(fileName => dir.getFileHandle(fileName, {create: true})));
}
+function createDirectoryHandles(dir, ...dirNames) {
+ return Promise.all(
+ dirNames.map(dirName => dir.getDirectoryHandle(dirName, {create: true})));
+}
+
// Releases a lock created by one of the create*WithCleanup functions below.
async function releaseLock(lockPromise) {
const result = await lockPromise;
diff --git a/tests/wpt/tests/fs/script-tests/FileSystemObserver-writable-file-stream.js b/tests/wpt/tests/fs/script-tests/FileSystemObserver-writable-file-stream.js
new file mode 100644
index 00000000000..6a3eb6b4ca9
--- /dev/null
+++ b/tests/wpt/tests/fs/script-tests/FileSystemObserver-writable-file-stream.js
@@ -0,0 +1,49 @@
+'use strict';
+
+// This script depends on the following scripts:
+// resources/test-helpers.js
+// resources/collecting-file-system-observer.js
+// script-tests/FileSystemObserver-writable-file-stream.js
+
+directory_test(async (t, root_dir) => {
+ const file = await root_dir.getFileHandle(getUniqueName(), {create: true});
+
+ const observer = new CollectingFileSystemObserver(t, root_dir);
+ await observer.observe([file]);
+
+ // Write to `file` through a `FileSystemWritableFileStream`.
+ const writable = await createWFSWithCleanup(t, file);
+ await writable.write('contents');
+ await writable.close();
+
+ // Expect one "modified" event to happen on `file`.
+ const records = await observer.getRecords();
+ await assert_records_equal(file, records, [modifiedEvent(file, [])]);
+}, 'Closing a FileSystemWritableFileStream that\'s modified the file produces a "modified" event');
+
+directory_test(async (t, root_dir) => {
+ const file = await root_dir.getFileHandle(getUniqueName(), {create: true});
+
+ const observer = new CollectingFileSystemObserver(t, root_dir);
+ await observer.observe([file]);
+
+ // Write to `file`.
+ const writable = await createWFSWithCleanup(t, file);
+ await writable.write('contents');
+ await writable.truncate(1);
+ await writable.seek(1);
+
+ {
+ // Expect no events to happen.
+ const records = await observer.getRecords();
+ await assert_records_equal(file, records, []);
+ }
+
+ await writable.abort();
+
+ {
+ // Expect no events to happen.
+ const records = await observer.getRecords();
+ await assert_records_equal(file, records, []);
+ }
+}, 'All FileSystemWritableFileStream methods that aren\'t closed don\'t produce events');
diff --git a/tests/wpt/tests/fs/script-tests/FileSystemObserver.js b/tests/wpt/tests/fs/script-tests/FileSystemObserver.js
index 2c8fd57f7c9..d1e1ce40dbc 100644
--- a/tests/wpt/tests/fs/script-tests/FileSystemObserver.js
+++ b/tests/wpt/tests/fs/script-tests/FileSystemObserver.js
@@ -1,57 +1,373 @@
'use strict';
// This script depends on the following scripts:
-// /fs/resources/messaging-helpers.js
-// /service-worker/resources/test-helpers.sub.js
+// resources/test-helpers.js
+// resources/collecting-file-system-observer.js
+// resources/change-observer-scope-test.js
+// script-tests/FileSystemObserver-writable-file-stream.js
promise_test(async t => {
- function dummyCallback(records, observer) {};
- let success = true;
try {
- const observer = new FileSystemObserver(dummyCallback);
- } catch (error) {
- success = false;
+ const observer = new FileSystemObserver(() => {});
+ } catch {
+ assert_unreached();
}
- assert_true(success);
-}, 'Creating a FileSystemObserver from a window succeeds');
+}, 'Creating a FileSystemObserver from a supported global succeeds');
+
+directory_test(async (t, root_dir) => {
+ const observer = new FileSystemObserver(() => {});
+ try {
+ observer.unobserve(root_dir);
+ } catch {
+ assert_unreached();
+ }
+}, 'Calling unobserve() without a corresponding observe() shouldn\'t throw');
+
+directory_test(async (t, root_dir) => {
+ const observer = new FileSystemObserver(() => {});
+ try {
+ observer.unobserve(root_dir);
+ observer.unobserve(root_dir);
+ } catch {
+ assert_unreached();
+ }
+}, 'unobserve() is idempotent');
promise_test(async t => {
- const dedicated_worker =
- create_dedicated_worker(t, kDedicatedWorkerMessageTarget);
- dedicated_worker.postMessage({type: 'create-file-system-observer'});
+ const observer = new FileSystemObserver(() => {});
+ try {
+ observer.disconnect();
+ } catch {
+ assert_unreached();
+ }
+}, 'Calling disconnect() without observing shouldn\'t throw');
+
+promise_test(async t => {
+ const observer = new FileSystemObserver(() => {});
+ try {
+ observer.disconnect();
+ observer.disconnect();
+ } catch {
+ assert_unreached();
+ }
+}, 'disconnect() is idempotent');
+
+directory_test(async (t, root_dir) => {
+ const observer = new FileSystemObserver(() => {});
+
+ // Create a `FileSystemFileHandle` and delete its underlying file entry.
+ const file = await root_dir.getFileHandle(getUniqueName(), {create: true});
+ await file.remove();
+
+ await promise_rejects_dom(t, 'NotFoundError', observer.observe(file));
+}, 'observe() fails when file does not exist');
+
+directory_test(async (t, root_dir) => {
+ const observer = new FileSystemObserver(() => {});
+
+ // Create a `FileSystemDirectoryHandle` and delete its underlying file entry.
+ const dir =
+ await root_dir.getDirectoryHandle(getUniqueName(), {create: true});
+ await dir.remove();
+
+ await promise_rejects_dom(t, 'NotFoundError', observer.observe(dir));
+}, 'observe() fails when directory does not exist');
+
+directory_test(async (t, root_dir) => {
+ const dir =
+ await root_dir.getDirectoryHandle(getUniqueName(), {create: true});
+
+ const scope_test = new ScopeTest(t, dir);
+ const watched_handle = await scope_test.watched_handle();
+
+ for (const recursive of [false, true]) {
+ for await (const path of scope_test.in_scope_paths(recursive)) {
+ const observer = new CollectingFileSystemObserver(t, root_dir);
+ await observer.observe([watched_handle], {recursive});
+
+ // Create `file`.
+ const file = await path.createHandle();
+
+ // Expect one "appeared" event to happen on `file`.
+ const records = await observer.getRecords();
+ await assert_records_equal(
+ watched_handle, records,
+ [appearedEvent(file, path.relativePathComponents())]);
+
+ observer.disconnect();
+ }
+ }
+}, 'Creating a file through FileSystemDirectoryHandle.getFileHandle is reported as an "appeared" event if in scope');
+
+directory_test(async (t, root_dir) => {
+ const dir =
+ await root_dir.getDirectoryHandle(getUniqueName(), {create: true});
+
+ const scope_test = new ScopeTest(t, dir);
+ const watched_handle = await scope_test.watched_handle();
+
+ for (const recursive of [false, true]) {
+ for await (const path of scope_test.in_scope_paths(recursive)) {
+ const file = await path.createHandle();
+
+ const observer = new CollectingFileSystemObserver(t, root_dir);
+ await observer.observe([watched_handle], {recursive});
+
+ // Remove `file`.
+ await file.remove();
+
+ // Expect one "disappeared" event to happen on `file`.
+ const records = await observer.getRecords();
+ await assert_records_equal(
+ watched_handle, records,
+ [disappearedEvent(file, path.relativePathComponents())]);
+
+ observer.disconnect();
+ }
+ }
+}, 'Removing a file through FileSystemFileHandle.remove is reported as an "disappeared" event if in scope');
+
+directory_test(async (t, root_dir) => {
+ const dir =
+ await root_dir.getDirectoryHandle(getUniqueName(), {create: true});
+
+ const scope_test = new ScopeTest(t, dir);
+ const watched_handle = await scope_test.watched_handle();
+
+ for (const recursive of [false, true]) {
+ for await (const path of scope_test.out_of_scope_paths(recursive)) {
+ const observer = new CollectingFileSystemObserver(t, root_dir);
+ await observer.observe([watched_handle], {recursive});
+
+ // Create and remove `file`.
+ const file = await path.createHandle();
+ await file.remove();
+
+ // Expect the observer to receive no events.
+ const records = await observer.getRecords();
+ await assert_records_equal(watched_handle, records, []);
+
+ observer.disconnect();
+ }
+ }
+}, 'Events outside the watch scope are not sent to the observer\'s callback');
+
+directory_test(async (t, root_dir) => {
+ const dir =
+ await root_dir.getDirectoryHandle(getUniqueName(), {create: true});
+
+ const scope_test = new ScopeTest(t, dir);
+ const watched_handle = await scope_test.watched_handle();
+
+ for (const recursive of [false, true]) {
+ for await (const src of scope_test.in_scope_paths(recursive)) {
+ for await (const dest of scope_test.in_scope_paths(recursive)) {
+ const file = await src.createHandle();
+
+ const observer = new CollectingFileSystemObserver(t, root_dir);
+ await observer.observe([watched_handle], {recursive});
+
+ // Move `file`.
+ await file.move(dest.parentHandle(), dest.fileName());
- const event_watcher = new EventWatcher(t, dedicated_worker, 'message');
- const message_event = await event_watcher.wait_for('message');
- const response = message_event.data;
+ // Expect one "moved" event to happen on `file`.
+ const records = await observer.getRecords();
+ await assert_records_equal(
+ watched_handle, records, [movedEvent(
+ file, dest.relativePathComponents(),
+ src.relativePathComponents())]);
- assert_true(response.createObserverSuccess);
-}, 'Creating a FileSystemObserver from a dedicated worker succeeds');
+ observer.disconnect();
+ }
+ }
+ }
+}, 'Moving a file through FileSystemFileHandle.move is reported as a "moved" event if destination and source are in scope');
+
+directory_test(async (t, root_dir) => {
+ const dir =
+ await root_dir.getDirectoryHandle(getUniqueName(), {create: true});
+
+ const scope_test = new ScopeTest(t, dir);
+ const watched_handle = await scope_test.watched_handle();
+
+ for (const recursive of [false, true]) {
+ for await (const src of scope_test.out_of_scope_paths(recursive)) {
+ for await (const dest of scope_test.out_of_scope_paths(recursive)) {
+ const file = await src.createHandle();
+
+ const observer = new CollectingFileSystemObserver(t, root_dir);
+ await observer.observe([watched_handle], {recursive});
+
+ // Move `file`.
+ await file.move(dest.parentHandle(), dest.fileName());
+
+ // Expect the observer to not receive any events.
+ const records = await observer.getRecords();
+ await assert_records_equal(watched_handle, records, []);
+ }
+ }
+ }
+}, 'Moving a file through FileSystemFileHandle.move is not reported if destination and source are not in scope');
+
+directory_test(async (t, root_dir) => {
+ const dir =
+ await root_dir.getDirectoryHandle(getUniqueName(), {create: true});
+
+ const scope_test = new ScopeTest(t, dir);
+ const watched_handle = await scope_test.watched_handle();
+
+ for (const recursive of [false, true]) {
+ for await (const src of scope_test.out_of_scope_paths(recursive)) {
+ for await (const dest of scope_test.in_scope_paths(recursive)) {
+ const file = await src.createHandle();
+
+ const observer = new CollectingFileSystemObserver(t, root_dir);
+ await observer.observe([watched_handle], {recursive});
+
+ // Move `file`.
+ await file.move(dest.parentHandle(), dest.fileName());
+
+ // Expect one "appeared" event to happen on `file`.
+ const records = await observer.getRecords();
+ await assert_records_equal(
+ watched_handle, records,
+ [appearedEvent(file, dest.relativePathComponents())]);
+ }
+ }
+ }
+}, 'Moving a file through FileSystemFileHandle.move is reported as a "appeared" event if only destination is in scope');
+
+directory_test(async (t, root_dir) => {
+ const dir =
+ await root_dir.getDirectoryHandle(getUniqueName(), {create: true});
+
+ const scope_test = new ScopeTest(t, dir);
+ const watched_handle = await scope_test.watched_handle();
+
+ for (const recursive of [false, true]) {
+ for await (const src of scope_test.in_scope_paths(recursive)) {
+ for await (const dest of scope_test.out_of_scope_paths(recursive)) {
+ // These both point to the same underlying file entry initially until
+ // move is called on `fileToMove`. `file` is kept so that we have a
+ // handle that still points at the source file entry.
+ const file = await src.createHandle();
+ const fileToMove = await src.createHandle();
+
+ const observer = new CollectingFileSystemObserver(t, root_dir);
+ await observer.observe([watched_handle], {recursive});
+
+ // Move `fileToMove`.
+ await fileToMove.move(dest.parentHandle(), dest.fileName());
+
+ // Expect one "disappeared" event to happen on `file`.
+ const records = await observer.getRecords();
+ await assert_records_equal(
+ watched_handle, records,
+ [disappearedEvent(file, src.relativePathComponents())]);
+ }
+ }
+ }
+}, 'Moving a file through FileSystemFileHandle.move is reported as a "disappeared" event if only source is in scope');
+
+// Wraps a `CollectingFileSystemObserver` and disconnects the observer after it's
+// received `num_of_records_to_observe`.
+class DisconnectingFileSystemObserver {
+ #collectingObserver;
-if (self.SharedWorker !== undefined) {
- promise_test(async t => {
- const shared_worker = new SharedWorker(kSharedWorkerMessageTarget);
- shared_worker.port.start();
- shared_worker.port.postMessage({type: 'create-file-system-observer'});
+ #num_of_records_to_observe;
- const event_watcher = new EventWatcher(t, shared_worker.port, 'message');
- const message_event = await event_watcher.wait_for('message');
- const response = message_event.data;
+ #called_disconnect = false;
+ #records_observed_count = 0;
- assert_true(response.createObserverSuccess);
- }, 'Creating a FileSystemObserver from a shared worker succeeds');
+ constructor(test, root_dir, num_of_records_to_observe) {
+ this.#collectingObserver = new CollectingFileSystemObserver(
+ test, root_dir, this.#callback.bind(this));
+ this.#num_of_records_to_observe = num_of_records_to_observe;
+ }
+
+ #callback(records, observer) {
+ this.#records_observed_count += records.length;
+
+ const called_disconnect = this.#called_disconnect;
+
+ // Call `disconnect` once after we've received `num_of_records_to_observe`.
+ if (!called_disconnect &&
+ this.#records_observed_count >= this.#num_of_records_to_observe) {
+ observer.disconnect();
+ this.#called_disconnect = true;
+ }
+
+ return {called_disconnect};
+ }
+
+ getRecordsWithCallbackInfo() {
+ return this.#collectingObserver.getRecordsWithCallbackInfo();
+ }
+
+ observe(handles) {
+ return this.#collectingObserver.observe(handles);
+ }
}
-promise_test(async t => {
- const scope = `${kServiceWorkerMessageTarget}?create-observer`;
- const registration =
- await create_service_worker(t, kServiceWorkerMessageTarget, scope);
- await wait_for_state(t, registration.installing, 'activated');
- registration.active.postMessage({type: 'create-file-system-observer'});
+directory_test(async (t, root_dir) => {
+ const total_files_to_create = 100;
+
+ const child_dir =
+ await root_dir.getDirectoryHandle(getUniqueName(), {create: true});
+
+ // Create a `FileSystemObserver` that will disconnect after its
+ // received half of the total files we're going to create.
+ const observer = new DisconnectingFileSystemObserver(
+ t, root_dir, total_files_to_create / 2);
+
+ // Observe the child directory and create files in it.
+ await observer.observe([child_dir]);
+ for (let i = 0; i < total_files_to_create; i++) {
+ child_dir.getFileHandle(`file${i}`, {create: true});
+ }
+
+ // Wait for `disconnect` to be called.
+ const records_with_disconnect_state =
+ await observer.getRecordsWithCallbackInfo();
+
+ // No observations should have been received after disconnected has been
+ // called.
+ assert_false(
+ records_with_disconnect_state.some(
+ ({called_disconnect}) => called_disconnect),
+ 'Received records after disconnect.');
+}, 'Observations stop after disconnect()');
+
+directory_test(async (t, root_dir) => {
+ const num_of_child_dirs = 5;
+ const num_files_to_create_per_directory = 100;
+ const total_files_to_create =
+ num_files_to_create_per_directory * num_of_child_dirs;
+
+ const child_dirs = await createDirectoryHandles(
+ root_dir, getUniqueName(), getUniqueName(), getUniqueName());
+
+ // Create a `FileSystemObserver` that will disconnect after its received half
+ // of the total files we're going to create.
+ const observer = new DisconnectingFileSystemObserver(
+ t, root_dir, total_files_to_create / 2);
+
+ // Observe the child directories and create files in them.
+ await observer.observe(child_dirs);
+ for (let i = 0; i < num_files_to_create_per_directory; i++) {
+ child_dirs.forEach(
+ child_dir => child_dir.getFileHandle(`file${i}`, {create: true}));
+ }
- const event_watcher = new EventWatcher(t, navigator.serviceWorker, 'message');
- const message_event = await event_watcher.wait_for('message');
- const response = message_event.data;
+ // Wait for `disconnect` to be called.
+ const records_with_disconnect_state =
+ await observer.getRecordsWithCallbackInfo();
- assert_false(response.createObserverSuccess);
-}, 'Creating a FileSystemObserver from a service worker fails');
+ // No observations should have been received after disconnected has been
+ // called.
+ assert_false(
+ records_with_disconnect_state.some(
+ ({called_disconnect}) => called_disconnect),
+ 'Received records after disconnect.');
+}, 'Observations stop for all observed handles after disconnect()');
diff --git a/tests/wpt/tests/fullscreen/api/element-request-fullscreen-without-user-activation.tentative.https.html b/tests/wpt/tests/fullscreen/api/element-request-fullscreen-without-user-activation.tentative.https.html
new file mode 100644
index 00000000000..4315ba21187
--- /dev/null
+++ b/tests/wpt/tests/fullscreen/api/element-request-fullscreen-without-user-activation.tentative.https.html
@@ -0,0 +1,30 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>Element#requestFullscreen() without user activation</title>
+<link rel="help" href="https://github.com/explainers-by-googlers/html-fullscreen-without-a-gesture">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
+<div id="log"></div>
+<script>
+ promise_test(async (test) => {
+ const div = document.querySelector("div");
+ assert_false(navigator.userActivation.isActive, "userActivation.isActive");
+ await promise_rejects_js(test, TypeError, div.requestFullscreen());
+ }, `Element#requestFullscreen() rejects without user activation by default`);
+
+ promise_test(async (test) => {
+ test.add_cleanup(() => {
+ if (document.fullscreenElement) return document.exitFullscreen();
+ });
+ const descriptor = { name: "fullscreen", allowWithoutGesture: true };
+ await test_driver.set_permission(descriptor, "granted");
+ const status = await navigator.permissions.query(descriptor);
+ assert_equals((status).state, "granted", `state should be "granted", as set`);
+
+ const div = document.querySelector("div");
+ assert_false(navigator.userActivation.isActive, "userActivation.isActive");
+ await div.requestFullscreen();
+ }, `Element#requestFullscreen() resolves without user activation with permission`);
+</script>
diff --git a/tests/wpt/tests/html-aam/roles-contextual.html b/tests/wpt/tests/html-aam/roles-contextual.html
index 200fed7e753..4edcc12e8f2 100644
--- a/tests/wpt/tests/html-aam/roles-contextual.html
+++ b/tests/wpt/tests/html-aam/roles-contextual.html
@@ -53,19 +53,14 @@
</section>
<!-- el-footer -->
-<nav>
- <footer data-testname="el-footer" aria-label="x" class="ex-generic">x</aside>
-</nav>
+<!-- nav>footer -> ./roles-contextual.tentative.html -->
<footer data-testname="el-footer-ancestorbody" data-expectedrole="contentinfo" class="ex">x</footer>
+<!-- main>footer -> ./roles-contextual.tentative.html -->
<!-- el-header -->
-<nav>
- <header data-testname="el-header" aria-label="x" class="ex-generic">x</header>
-</nav>
+<!-- nav>header -> ./roles-contextual.tentative.html -->
<header data-testname="el-header-ancestorbody" data-expectedrole="banner" class="ex">x</header>
-<main>
- <header data-testname="el-header-ancestormain" data-expectedrole="generic" class="ex-generic">x</header>
-</main>
+<!-- main>header -> ./roles-contextual.tentative.html -->
<!-- el-section -->
<section data-testname="el-section" aria-label="x" data-expectedrole="region" class="ex">x</section>
diff --git a/tests/wpt/tests/html-aam/roles-contextual.tentative.html b/tests/wpt/tests/html-aam/roles-contextual.tentative.html
new file mode 100644
index 00000000000..0f918b24c70
--- /dev/null
+++ b/tests/wpt/tests/html-aam/roles-contextual.tentative.html
@@ -0,0 +1,36 @@
+<!doctype html>
+<html>
+<head>
+ <title>Tentative: HTML-AAM Contextual-Specific Role Verification Tests</title>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/resources/testdriver.js"></script>
+ <script src="/resources/testdriver-vendor.js"></script>
+ <script src="/resources/testdriver-actions.js"></script>
+ <script src="/wai-aria/scripts/aria-utils.js"></script>
+</head>
+<body>
+
+<!--
+ New sectionheader and sectionfooter roles.
+ See https://github.com/w3c/aria/pull/1931
+-->
+<nav>
+ <footer data-testname="el-footer" aria-label="x" data-expectedrole="sectionfooter" class="ex">x</aside>
+</nav>
+<main>
+ <footer data-testname="el-footer-ancestormain" data-expectedrole="sectionfooter" class="ex">x</footer>
+</main>
+<nav>
+ <header data-testname="el-header" aria-label="x" data-expectedrole="sectionheader" class="ex">x</header>
+</nav>
+<main>
+ <header data-testname="el-header-ancestormain" data-expectedrole="sectionheader" class="ex">x</header>
+</main>
+
+<script>
+AriaUtils.verifyRolesBySelector(".ex");
+</script>
+
+</body>
+</html> \ No newline at end of file
diff --git a/tests/wpt/tests/html/canvas/element/text/2d.text.writingmode-expected.html b/tests/wpt/tests/html/canvas/element/text/2d.text.writingmode-expected.html
new file mode 100644
index 00000000000..d7003a2a08a
--- /dev/null
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.writingmode-expected.html
@@ -0,0 +1,17 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
+<title>Canvas test: 2d.text.writingmode</title>
+<h1>2d.text.writingmode</h1>
+<p class="desc">writing-mode in css should not change how text is rendered</p>
+<canvas id="canvas" width="100" height="50">
+ <p class="fallback">FAIL (fallback content)</p>
+</canvas>
+<script>
+ const canvas = document.getElementById("canvas");
+ const ctx = canvas.getContext('2d');
+
+ ctx.font = "bold 64px Arial";
+ ctx.textBaseline = "top";
+
+ ctx.fillText("Happy", 0, 100);
+</script>
diff --git a/tests/wpt/tests/html/canvas/element/text/2d.text.writingmode.html b/tests/wpt/tests/html/canvas/element/text/2d.text.writingmode.html
new file mode 100644
index 00000000000..2a12154762b
--- /dev/null
+++ b/tests/wpt/tests/html/canvas/element/text/2d.text.writingmode.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. -->
+<link rel="match" href="2d.text.writingmode-expected.html">
+<title>Canvas test: 2d.text.writingmode</title>
+<h1>2d.text.writingmode</h1>
+<p class="desc">writing-mode in css should not change how text is rendered</p>
+<canvas id="canvas" width="100" height="50">
+ <p class="fallback">FAIL (fallback content)</p>
+</canvas>
+<script>
+ const canvas = document.getElementById("canvas");
+ const ctx = canvas.getContext('2d');
+
+ canvas.style.writingMode = "vertical-rl";
+ canvas.style.fontFamily = "Arial";
+
+ ctx.font = "bold 64px Arial";
+ ctx.textBaseline = "top";
+
+ ctx.fillText("Happy", 0, 100);
+</script>
diff --git a/tests/wpt/tests/html/canvas/tools/name2dir-canvas.yaml b/tests/wpt/tests/html/canvas/tools/name2dir-canvas.yaml
index 1e0caff5b98..4081f674c6d 100644
--- a/tests/wpt/tests/html/canvas/tools/name2dir-canvas.yaml
+++ b/tests/wpt/tests/html/canvas/tools/name2dir-canvas.yaml
@@ -20,7 +20,6 @@
2d.shadow: "shadows"
2d.filter: "filters"
2d.state: "the-canvas-state"
-2d.scrollPathIntoView: "scroll"
2d.video: "video"
2d.canvas.host: "canvas-host"
2d.canvas.context: "canvas-context"
diff --git a/tests/wpt/tests/html/canvas/tools/name2dir.yaml b/tests/wpt/tests/html/canvas/tools/name2dir.yaml
index ae69c153780..a62fab3a04e 100644
--- a/tests/wpt/tests/html/canvas/tools/name2dir.yaml
+++ b/tests/wpt/tests/html/canvas/tools/name2dir.yaml
@@ -19,7 +19,6 @@
2d.filter: "filters"
2d.layer: "layers"
2d.state: "the-canvas-state"
-2d.scrollPathIntoView: "scroll"
2d.video: "video"
2d.canvas.host: "canvas-host"
2d.canvas.context: "canvas-context"
diff --git a/tests/wpt/tests/html/canvas/tools/yaml-new/scroll.yaml b/tests/wpt/tests/html/canvas/tools/yaml-new/scroll.yaml
deleted file mode 100644
index 0579a8b3d74..00000000000
--- a/tests/wpt/tests/html/canvas/tools/yaml-new/scroll.yaml
+++ /dev/null
@@ -1,71 +0,0 @@
-- name: 2d.scrollPathIntoView.basic
- desc: scrollPathIntoView() works
- canvas_types: ['HtmlCanvas']
- code: |
- var div = document.createElement('div');
- div.style.cssText = 'width: 200vw; height: 200vh';
- document.body.appendChild(div);
- canvas.style.cssText = 'position: absolute; top: 100px; left: 200px; border: none;';
- window.scrollTo(0, 0);
-
- ctx.beginPath();
- ctx.rect(4, 8, 16, 32);
- ctx.scrollPathIntoView();
- var rect = canvas.getBoundingClientRect();
- @assert Math.round(rect.top) === -8;
- @assert Math.round(rect.left) === 200;
-
-- name: 2d.scrollPathIntoView.verticalLR
- desc: scrollPathIntoView() works in vertical-lr writing mode
- canvas_types: ['HtmlCanvas']
- code: |
- document.documentElement.style.cssText = 'writing-mode: vertical-lr';
- var div = document.createElement('div');
- div.style.cssText = 'width: 200vw; height: 200vh';
- document.body.appendChild(div);
- canvas.style.cssText = 'position: absolute; top: 100px; left: 200px; border: none;';
- window.scrollTo(0, 0);
-
- ctx.beginPath();
- ctx.rect(4, 8, 16, 32);
- ctx.scrollPathIntoView();
- var rect = canvas.getBoundingClientRect();
- @assert Math.round(rect.top) === 100;
- @assert Math.round(rect.left) === -4;
-
-- name: 2d.scrollPathIntoView.verticalRL
- desc: scrollPathIntoView() works in vertical-rl writing mode
- canvas_types: ['HtmlCanvas']
- code: |
- document.documentElement.style.cssText = 'writing-mode: vertical-rl';
- var div = document.createElement('div');
- div.style.cssText = 'width: 200vw; height: 200vh';
- document.body.appendChild(div);
- canvas.style.cssText = 'position: absolute; top: 100px; right: 200px; border: none;';
- window.scrollTo(0, 0);
-
- ctx.beginPath();
- ctx.rect(4, 8, 16, 32);
- ctx.scrollPathIntoView();
- var rect = canvas.getBoundingClientRect();
- var viewportWidth = document.scrollingElement.clientWidth;
- var canvasWidth = canvas.width;
- @assert Math.round(rect.top) === 100;
- @assert Math.round(rect.right) === viewportWidth + (canvasWidth - 4 - 16);
-
-- name: 2d.scrollPathIntoView.path
- desc: scrollPathIntoView() with path argument works
- canvas_types: ['HtmlCanvas']
- code: |
- var div = document.createElement('div');
- div.style.cssText = 'width: 200vw; height: 200vh';
- document.body.appendChild(div);
- canvas.style.cssText = 'position: absolute; top: 100px; left: 200px; border: none;';
- window.scrollTo(0, 0);
-
- var path = new Path2D();
- path.rect(4, 8, 16, 32);
- ctx.scrollPathIntoView(path);
- var rect = canvas.getBoundingClientRect();
- @assert Math.round(rect.top) === -8;
- @assert Math.round(rect.left) === 200;
diff --git a/tests/wpt/tests/html/canvas/tools/yaml-new/text.yaml b/tests/wpt/tests/html/canvas/tools/yaml-new/text.yaml
index b54cc7ebc26..5c6b9f8abc3 100644
--- a/tests/wpt/tests/html/canvas/tools/yaml-new/text.yaml
+++ b/tests/wpt/tests/html/canvas/tools/yaml-new/text.yaml
@@ -2448,4 +2448,21 @@
code: |
ctx.font = "math serif";
+- name: 2d.text.writingmode
+ desc: writing-mode in css should not change how text is rendered
+ canvas_types: ['HtmlCanvas']
+ code: |
+ canvas.style.writingMode = "vertical-rl";
+ canvas.style.fontFamily = "Arial";
+
+ ctx.font = "bold 64px Arial";
+ ctx.textBaseline = "top";
+
+ ctx.fillText("Happy", 0, 100);
+ reference: |
+ ctx.font = "bold 64px Arial";
+ ctx.textBaseline = "top";
+
+ ctx.fillText("Happy", 0, 100);
+
# TODO: shadows, alpha, composite, clip
diff --git a/tests/wpt/tests/html/select/select-capitalize-sizing-ref.html b/tests/wpt/tests/html/select/select-capitalize-sizing-ref.html
new file mode 100644
index 00000000000..6371f213c10
--- /dev/null
+++ b/tests/wpt/tests/html/select/select-capitalize-sizing-ref.html
@@ -0,0 +1,16 @@
+<!doctype html>
+<meta charset=utf-8>
+<style>
+.appearance-none {
+ appearance: none;
+ padding: 0;
+ border: 1px solid;
+}
+</style>
+<select>
+ <option>X X X X X</option>
+</select>
+<br><br>
+<select class=appearance-none>
+ <option>X X X X X</option>
+</select>
diff --git a/tests/wpt/tests/html/select/select-capitalize-sizing.html b/tests/wpt/tests/html/select/select-capitalize-sizing.html
new file mode 100644
index 00000000000..47214a67cf1
--- /dev/null
+++ b/tests/wpt/tests/html/select/select-capitalize-sizing.html
@@ -0,0 +1,22 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>select sizing with text-transform:capitalize</title>
+<link rel="match" href="select-capitalize-sizing-ref.html">
+<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1911550">
+<style>
+select {
+ text-transform: capitalize;
+}
+.appearance-none {
+ appearance: none;
+ padding: 0;
+ border: 1px solid;
+}
+</style>
+<select>
+ <option>x x x x x</option>
+</select>
+<br><br>
+<select class=appearance-none>
+ <option>x x x x x</option>
+</select>
diff --git a/tests/wpt/tests/html/semantics/embedded-content/the-img-element/decode/image-decode-path-changes.html b/tests/wpt/tests/html/semantics/embedded-content/the-img-element/decode/image-decode-path-changes.html
index 4b878c1bae2..72e27af296c 100644
--- a/tests/wpt/tests/html/semantics/embedded-content/the-img-element/decode/image-decode-path-changes.html
+++ b/tests/wpt/tests/html/semantics/embedded-content/the-img-element/decode/image-decode-path-changes.html
@@ -14,17 +14,17 @@
// -------------------
promise_test(function(t) {
var img = new Image();
- img.src = "/images/green.png";
+ img.src = "/images/green.png?image-decode-path-changes-1";
var promise = img.decode();
- img.src = "/images/green.svg";
+ img.src = "/images/green.svg?image-decode-path-changes-1";
return promise_rejects_dom(t, "EncodingError", promise);
}, document.title + " src changes fail decode.");
promise_test(function(t) {
var img = new Image();
- img.src = "/images/green.png";
+ img.src = "/images/green.png?image-decode-path-changes-2";
var first_promise = img.decode();
- img.src = "/images/blue.png";
+ img.src = "/images/blue.png?image-decode-path-changes-2";
var second_promise = img.decode();
assert_not_equals(first_promise, second_promise);
return Promise.all([
@@ -35,9 +35,9 @@ promise_test(function(t) {
promise_test(function(t) {
var img = new Image();
- img.src = "/images/green.png";
+ img.src = "/images/green.png?image-decode-path-changes-3";
var first_promise = img.decode();
- img.src = "/images/green.svg";
+ img.src = "/images/green.svg?image-decode-path-changes-3";
var second_promise = img.decode();
assert_not_equals(first_promise, second_promise);
return Promise.all([
@@ -48,9 +48,9 @@ promise_test(function(t) {
promise_test(function(t) {
var img = new Image();
- img.src = "/images/green.png";
+ img.src = "/images/green.png?image-decode-path-changes-4";
var first_promise = img.decode();
- img.src = "/non/existent/path.png";
+ img.src = "/non/existent/path.png?image-decode-path-changes-5";
var second_promise = img.decode();
assert_not_equals(first_promise, second_promise);
return Promise.all([
@@ -73,12 +73,12 @@ promise_test(function(t) {
img.onload = null;
var first_promise = img.decode();
- img.src = "/images/green.png";
+ img.src = "/images/green.png?image-decode-path-changes-6";
var second_promise = img.decode();
assert_not_equals(first_promise, second_promise);
resolve(Promise.all([first_promise, second_promise]));
});
- img.src = "/images/green.png";
+ img.src = "/images/green.png?image-decode-path-changes-6";
});
}, document.title + " src changes to the same path succeed.");
@@ -86,17 +86,17 @@ promise_test(function(t) {
// -------------------
promise_test(function(t) {
var img = new Image();
- img.srcset = "/images/green.png 100w";
+ img.srcset = "/images/green.png?image-decode-path-changes-7 100w";
var promise = img.decode();
- img.srcset = "/images/green.svg 100w";
+ img.srcset = "/images/green.svg?image-decode-path-changes-7 100w";
return promise_rejects_dom(t, "EncodingError", promise);
}, document.title + " srcset changes fail decode.");
promise_test(function(t) {
var img = new Image();
- img.srcset = "/images/green.png 100w";
+ img.srcset = "/images/green.png?image-decode-path-changes-8 100w";
var first_promise = img.decode();
- img.srcset = "/images/green.svg 100w";
+ img.srcset = "/images/green.svg?image-decode-path-changes-8 100w";
var second_promise = img.decode();
assert_not_equals(first_promise, second_promise);
return Promise.all([
@@ -107,9 +107,9 @@ promise_test(function(t) {
promise_test(function(t) {
var img = new Image();
- img.srcset = "/images/green.png 100w";
+ img.srcset = "/images/green.png?image-decode-path-changes-9 100w";
var first_promise = img.decode();
- img.srcset = "/non/existent/path.png 100w";
+ img.srcset = "/non/existent/path.png?image-decode-path-changes-9 100w";
var second_promise = img.decode();
assert_not_equals(first_promise, second_promise);
return Promise.all([
diff --git a/tests/wpt/tests/html/semantics/embedded-content/the-img-element/decode/image-decode-with-quick-attach.html b/tests/wpt/tests/html/semantics/embedded-content/the-img-element/decode/image-decode-with-quick-attach.html
index be680da619e..2d18789896b 100644
--- a/tests/wpt/tests/html/semantics/embedded-content/the-img-element/decode/image-decode-with-quick-attach.html
+++ b/tests/wpt/tests/html/semantics/embedded-content/the-img-element/decode/image-decode-with-quick-attach.html
@@ -12,9 +12,11 @@
<script>
"use strict";
-promise_test(function() {
+let png = "/images/green.png?image-decode-with-quick-attach-" + Math.random();
+
+function run_test(prop = "src") {
const img = new Image();
- img.src = "/images/green.png";
+ img[prop] = png;
const promise = img.decode().then(function(arg) {
assert_equals(arg, undefined);
});
@@ -22,5 +24,9 @@ promise_test(function() {
// The promise should still resolve successfully.
document.body.appendChild(img);
return promise;
-}, document.title);
+}
+
+promise_test(() => run_test(), document.title + ": src not cached");
+promise_test(() => run_test(), document.title + ": src cached");
+promise_test(() => run_test("srcset"), document.title + ": srcset");
</script>
diff --git a/tests/wpt/tests/html/semantics/embedded-content/the-img-element/empty-src-no-current-request.html b/tests/wpt/tests/html/semantics/embedded-content/the-img-element/empty-src-no-current-request.html
new file mode 100644
index 00000000000..443da20bd6d
--- /dev/null
+++ b/tests/wpt/tests/html/semantics/embedded-content/the-img-element/empty-src-no-current-request.html
@@ -0,0 +1,45 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>src = "" doesn't trigger a sync load if there's no existing current request</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1905646">
+<script>
+ promise_test(async function(t) {
+ let img = new Image();
+ img.src = "";
+ img.loading = "lazy";
+ img.onload = t.unreached_func("should not trigger a load event");
+ img.onerror = t.unreached_func("should not trigger an error event");
+ // Shouldn't fire any event since it's in the lazy state.
+ await new Promise(r => t.step_timeout(r, 0));
+ await new Promise(r => t.step_timeout(r, 0));
+
+ // We're about to append it to the document, which should trigger the (lazy) load (and in this case error event).
+ let error = new Promise(r => {
+ img.onerror = r;
+ });
+ document.documentElement.appendChild(img);
+ await error;
+ }, "Without srcset");
+
+ promise_test(async function(t) {
+ let img = new Image();
+ img.src = "";
+ img.srcset = "/images/green.png";
+ img.loading = "lazy";
+ img.onload = t.unreached_func("should not trigger a load event");
+ img.onerror = t.unreached_func("should not trigger an error event");
+ // Shouldn't fire any event since it's in the lazy state.
+ await new Promise(r => t.step_timeout(r, 0));
+ await new Promise(r => t.step_timeout(r, 0));
+
+ // We're about to append it to the document, which should trigger the (lazy) load.
+ let load = new Promise(r => {
+ img.onload = r;
+ });
+
+ document.documentElement.appendChild(img);
+ await load;
+ }, "With srcset");
+</script>
diff --git a/tests/wpt/tests/html/semantics/embedded-content/the-img-element/update-the-image-data/current-request-microtask-002.html b/tests/wpt/tests/html/semantics/embedded-content/the-img-element/update-the-image-data/current-request-microtask-002.html
new file mode 100644
index 00000000000..a843f222822
--- /dev/null
+++ b/tests/wpt/tests/html/semantics/embedded-content/the-img-element/update-the-image-data/current-request-microtask-002.html
@@ -0,0 +1,27 @@
+<!doctype html>
+<title>Current request microtask handling with multiple tasks.</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<body>
+<script>
+async_test(function(t) {
+ let img;
+ function testSrcOnMicrotask(expectedCurrentSrc, done) {
+ window.queueMicrotask(t.step_func(() => {
+ assert_equals(img.currentSrc, expectedCurrentSrc, `currentSrc should be ${expectedCurrentSrc}`);
+ if (done) {
+ t.done();
+ }
+ }));
+ }
+ testSrcOnMicrotask("");
+ img = new Image();
+ let png = "/images/green.png?" + Math.random();
+ testSrcOnMicrotask("");
+ // Both .src assignment and appendChild are relevant mutations. So the first task should be "canceled" (return early).
+ img.src = png;
+ testSrcOnMicrotask("");
+ document.body.appendChild(img);
+ testSrcOnMicrotask(new URL(png, document.documentURI).href, /* done = */ true);
+});
+</script>
diff --git a/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-child-button-and-datalist-invalidation.tentative.html b/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-child-button-and-datalist-invalidation.tentative.html
index 822a63e1045..4a71c187c6e 100644
--- a/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-child-button-and-datalist-invalidation.tentative.html
+++ b/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-child-button-and-datalist-invalidation.tentative.html
@@ -11,7 +11,7 @@
</style>
<select>
- <button type=popover>button</button>
+ <button>button</button>
<datalist>
<option>
<span class=blue>option</span> one
diff --git a/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-child-button-and-datalist.tentative.html b/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-child-button-and-datalist.tentative.html
index 9b2f53df283..1650f37d5c1 100644
--- a/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-child-button-and-datalist.tentative.html
+++ b/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-child-button-and-datalist.tentative.html
@@ -10,7 +10,7 @@
</style>
<select style="appearance:base-select">
- <button type=popover>button</button>
+ <button>button</button>
<datalist>
<option>
<span class=blue>option</span> one
diff --git a/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-datalist-popover-behavior.tentative.html b/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-datalist-popover-behavior.tentative.html
index caea2a2f8db..2853a09bad4 100644
--- a/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-datalist-popover-behavior.tentative.html
+++ b/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-datalist-popover-behavior.tentative.html
@@ -8,7 +8,7 @@
<script src="/resources/testdriver-actions.js"></script>
<select style="appearance:base-select">
- <button type=popover>button</button>
+ <button>button</button>
<datalist>
<option class=one>one</option>
<option class=two>two</option>
diff --git a/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-keyboard-behavior.tentative.html b/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-keyboard-behavior.tentative.html
index 8b062121697..ff27aeb3a99 100644
--- a/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-keyboard-behavior.tentative.html
+++ b/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-keyboard-behavior.tentative.html
@@ -34,14 +34,14 @@ select {
</select>
<select id=custombutton-defaultdatalist>
- <button type=popover>custom button</button>
+ <button>custom button</button>
<option class=one>one</option>
<option class=two>two</option>
<option class=three>three</option>
</select>
<select id=custombutton-customdatalist>
- <button type=popover>custom button</button>
+ <button>custom button</button>
<datalist>
<option class=one>one</option>
<option class=two>two</option>
diff --git a/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-mouse-behavior.tentative.html b/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-mouse-behavior.tentative.html
index aff976d1ad5..b5d5c3fd1bb 100644
--- a/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-mouse-behavior.tentative.html
+++ b/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-mouse-behavior.tentative.html
@@ -17,7 +17,7 @@ select {
<!-- TODO(http://crbug.com/1511354): Add test cases with no <button> and no <datalist>. -->
<select>
- <button type=popover>button</button>
+ <button>button</button>
<datalist>
<option class=one>one</option>
<option class=two>two</option>
diff --git a/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-open-invalidation.tentative.html b/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-open-invalidation.tentative.html
index 809ae69d7af..d973d42b5bf 100644
--- a/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-open-invalidation.tentative.html
+++ b/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/select-open-invalidation.tentative.html
@@ -14,7 +14,7 @@ select:open > button {
</style>
<select style="appearance:base-select">
- <button type=popover>button</button>
+ <button>button</button>
<datalist>
<option>one</option>
<option>two</option>
diff --git a/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/selectedoption.tentative.html b/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/selectedoption.tentative.html
index 16d711515c9..ad006a8b38e 100644
--- a/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/selectedoption.tentative.html
+++ b/tests/wpt/tests/html/semantics/forms/the-select-element/stylable-select/selectedoption.tentative.html
@@ -36,22 +36,27 @@ promise_test(async () => {
'The innerHTML of <selectedoption> should initially match the innerHTML of the selected <option>.');
select.value = 'two';
+ await new Promise(queueMicrotask);
assert_equals(selectedOption.innerHTML, optionTwo.innerHTML,
'The innerHTML of <selectedoption> should change after the selected option is changed.');
spanTwo.textContent = 'new span';
+ await new Promise(queueMicrotask);
assert_equals(selectedOption.innerHTML, optionTwo.innerHTML,
'<selectedoption> should respond to text content changes.');
spanTwo.appendChild(document.createElement('div'));
+ await new Promise(queueMicrotask);
assert_equals(selectedOption.innerHTML, optionTwo.innerHTML,
'<selectedoption> should respond to new elements being added to descendants.');
spanTwo.setAttribute('data-foo', 'bar');
+ await new Promise(queueMicrotask);
assert_equals(selectedOption.innerHTML, optionTwo.innerHTML,
'<selectedoption> should respond to attributes being added to descendants.');
form.reset();
+ await new Promise(queueMicrotask);
assert_equals(select.value, 'one',
'form.reset() should change the selects value to one.');
assert_equals(selectedOption.innerHTML, optionOne.innerHTML,
@@ -60,12 +65,14 @@ promise_test(async () => {
await test_driver.bless();
select.showPicker();
await test_driver.click(optionTwo);
+ await new Promise(queueMicrotask);
assert_equals(select.value, 'two',
'Clicking on another option should change select.value.');
assert_equals(selectedOption.innerHTML, optionTwo.innerHTML,
'Clicking on an option element should update the <selectedoption>.');
selectedOption.remove();
+ await new Promise(queueMicrotask);
assert_equals(selectedOption.innerHTML, '',
'Removing the <selectedoption> from the <select> should make it clear its contents.');
button.appendChild(selectedOption);
@@ -73,6 +80,7 @@ promise_test(async () => {
'Re-inserting the <selectedoption> should make it update its contents.');
optionTwo.remove();
+ await new Promise(queueMicrotask);
assert_equals(selectedOption.innerHTML, optionOne.innerHTML,
'The innerHTML of <selectedoption> should be updated in response to selected <option> removal.');
optionOne.remove();
diff --git a/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-form-state-restore.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-form-state-restore.tentative.html
deleted file mode 100644
index f98494a9507..00000000000
--- a/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-form-state-restore.tentative.html
+++ /dev/null
@@ -1,39 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<title>HTMLSelectListElement Test: form state restore</title>
-<link rel="author" title="Ionel Popescu" href="mailto:iopopesc@microsoft.com">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-
-<input id="emptyOnFirstVisit">
-<form action="support/back.html" id="form0">
-<selectlist id="selectlist0">
- <option>one</option>
- <option>two</option>
- <option>three</option>
-</selectlist>
-</form>
-
-<script>
-async_test(t => {
- window.onload = () => t.step_timeout(() => {
- let state = document.getElementById('emptyOnFirstVisit');
- let selectList = document.getElementById("selectlist0");
-
- if (!state.value) {
- // First visit.
- t.step_timeout(() => {
- state.value = 'visited';
- assert_equals(selectList.value, "one");
- selectList.value = "two";
- // The form is submitted in a timeout to make sure that a new back/forward list item is created.
- document.getElementById('form0').submit();
- }, 0);
- } else {
- // Went back to this page again, and the form state should be restored.
- assert_equals(selectList.value, "two");
- t.done();
- }
- }, 1);
-}, "Test restoring state after form submission");
-</script>
diff --git a/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-popover.tentative.html b/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-popover.tentative.html
deleted file mode 100644
index a26d0266496..00000000000
--- a/tests/wpt/tests/html/semantics/forms/the-selectlist-element/selectlist-popover.tentative.html
+++ /dev/null
@@ -1,102 +0,0 @@
-<!DOCTYPE html>
-<title>HTMLSelectListElement Test: popover</title>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/resources/testdriver.js"></script>
-<script src="/resources/testdriver-actions.js"></script>
-<script src="/resources/testdriver-vendor.js"></script>
-
-<selectlist id="selectList0">
- <option>one</option>
- <option id="selectList0-child2">two</option>
- <option>three</option>
- <option>four</option>
-</selectlist>
-
-<selectlist id="selectList1">
- <button type=selectlist class=button>
- Custom button
- </button>
- <listbox>
- <option>one</option>
- <option class="child2">two</option>
- <option class="child3">three</option>
- </listbox>
-</selectlist>
-
-<selectlist id="selectList2">
- <!-- Swap out the listbox part without providing a replacement -->
- <div slot="listbox"></div>
-</selectlist>
-
-<selectlist id="selectList3">
- <div slot="listbox">
- <div popover behavior="listbox" id="selectList3-listbox">
- <option>one</option>
- </div>
- </div>
-</selectlist>
-<script>
-
- function clickOn(element) {
- const actions = new test_driver.Actions();
- return actions.pointerMove(0, 0, {origin: element})
- .pointerDown({button: actions.ButtonType.LEFT})
- .pointerUp({button: actions.ButtonType.LEFT})
- .send();
- }
-
- promise_test(async () => {
- const selectList0 = document.getElementById("selectList0");
- const selectList0Child2 = document.getElementById("selectList0-child2");
- assert_equals(selectList0.value, "one");
- assert_equals(selectList0.open, false);
- await clickOn(selectList0);
- assert_equals(selectList0.open, true);
- await clickOn(selectList0Child2);
- assert_equals(selectList0.value, "two");
- assert_equals(selectList0.open, false);
-
- await clickOn(selectList0);
- assert_equals(selectList0.open, true);
- await clickOn(selectList0Child2);
- assert_equals(selectList0.open, false);
- }, "Opening the popover and clicking an option should change the selectlist's value");
-
- promise_test(async () => {
- const selectList1 = document.getElementById("selectList1");
- const button = selectList1.querySelector(".button");
- const child2 = selectList1.querySelector(".child2");
- const child3 = selectList1.querySelector(".child3");
- assert_equals(selectList1.value, "one");
- assert_equals(selectList1.open, false);
- await clickOn(button);
- assert_equals(selectList1.open, true);
- await clickOn(child2);
- assert_equals(selectList1.value, "two", "Clicking an <option> should change the value");
- assert_equals(selectList1.open, false);
-
- await clickOn(button);
- assert_equals(selectList1.open, true);
- await clickOn(child3);
- assert_equals(selectList1.value, "three", "Clicking a <div part='option'> should change the value");
- assert_equals(selectList1.open, false);
- }, "With custom button and popover: opening the popover and clicking an option should change the selectlist's value");
-
- promise_test(async () => {
- const selectList2 = document.getElementById("selectList2");
- await clickOn(selectList2);
- assert_equals(selectList2.value, "");
- assert_equals(selectList2.open, false);
- }, "Clicking a popover with no listbox part does nothing");
-
- promise_test(async () => {
- const selectList3 = document.getElementById("selectList3");
- const selectList3Listbox = document.getElementById("selectList3-listbox");
- selectList3Listbox.remove();
-
- await clickOn(selectList3);
- assert_equals(selectList3.value, "");
- assert_equals(selectList3.open, false);
- }, "Clicking a popover with a listbox that was removed does nothing");
-</script>
diff --git a/tests/wpt/tests/html/semantics/interactive-elements/the-dialog-element/child-sequential-focus.html b/tests/wpt/tests/html/semantics/interactive-elements/the-dialog-element/child-sequential-focus.html
index bc787202cf5..84853fc2169 100644
--- a/tests/wpt/tests/html/semantics/interactive-elements/the-dialog-element/child-sequential-focus.html
+++ b/tests/wpt/tests/html/semantics/interactive-elements/the-dialog-element/child-sequential-focus.html
@@ -5,24 +5,24 @@
<script src="/resources/testharnessreport.js"></script>
<dialog autofocus id=autofocusdialog data-description="dialog element with autofocus should get initial focus." class=target>
- <button>focusable button</button>
- <button autofocus>autofocusable button</button>
+ <button tabindex="0">focusable button</button>
+ <button tabindex="0" autofocus>autofocusable button</button>
</dialog>
<dialog id=keyboardfocusdialog data-description="Only keyboard-focusable elements should get dialog initial focus.">
<button tabindex="-1">mouse focusable button</button>
- <button class=target>keyboard focusable button</button>
+ <button tabindex="0" class=target>keyboard focusable button</button>
</dialog>
<dialog id=autofocuswithoutkeyboarddialog data-description="Autofocus takes precedence over keyboard-focusable requirement.">
- <button>keyboard focusable button</button>
+ <button tabindex="0">keyboard focusable button</button>
<button tabindex="-1" autofocus class=target>mouse focusable autofocus button</button>
</dialog>
<dialog id=subtree data-description="Only keyboard-focusable elements should get dialog initial focus including in subtrees.">
<div>
<button tabindex="-1">mouse focusable button</button>
- <button class=target>keyboard focusable button</button>
+ <button tabindex="0" class=target>keyboard focusable button</button>
</div>
</dialog>
@@ -31,7 +31,7 @@
<span>mouse focusable button</span>
<button tabindex="-1">nested mouse focusable button</button>
</button>
- <button class=target>keyboard focusable button</button>
+ <button tabindex="0" class=target>keyboard focusable button</button>
</dialog>
<script>
diff --git a/tests/wpt/tests/html/semantics/scripting-1/the-script-element/remove-src-attr-prepare-a-script.html b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/remove-src-attr-prepare-a-script.html
new file mode 100644
index 00000000000..7caacb5917c
--- /dev/null
+++ b/tests/wpt/tests/html/semantics/scripting-1/the-script-element/remove-src-attr-prepare-a-script.html
@@ -0,0 +1,35 @@
+<!doctype html>
+<meta charset=utf-8>
+<link rel=help href=https://github.com/whatwg/html/pull/10188/files#r1685905457>
+<title>Remove src attribute does not "prepare the script"</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<body>
+<script>
+test(() => {
+ // Flags that the script element in this test will change, if it incorrectly
+ // executes.
+ window.didExecute = false;
+ window.innerTextExecuted = false;
+
+ const script = document.createElement('script');
+ // Invalid type, so the script won't execute upon insertion.
+ script.type = 'invalid';
+ script.src = 'resources/flag-setter.js';
+ script.innerText = 'window.innerTextExecuted = true';
+ document.body.append(script);
+ assert_false(window.didExecute);
+ assert_false(window.innerTextExecuted);
+
+ // Make script valid, but don't immediately execute it.
+ script.type = '';
+
+ // Removing the `src` content attribute does not trigger the "prepare a
+ // script" algorithm on the script.
+ script.removeAttribute('src');
+ assert_false(window.didExecute);
+ assert_false(window.innerTextExecuted);
+}, "Removing the `src` content attribute does not 'prepare' the script");
+</script>
+</body>
diff --git a/tests/wpt/tests/images/blank-highlight.png b/tests/wpt/tests/images/blank-highlight.png
new file mode 100644
index 00000000000..6dbee091749
--- /dev/null
+++ b/tests/wpt/tests/images/blank-highlight.png
Binary files differ
diff --git a/tests/wpt/tests/infrastructure/metadata/infrastructure/webdriver/bidi/subscription.html.ini b/tests/wpt/tests/infrastructure/metadata/infrastructure/webdriver/bidi/subscription.html.ini
new file mode 100644
index 00000000000..c357f765ab9
--- /dev/null
+++ b/tests/wpt/tests/infrastructure/metadata/infrastructure/webdriver/bidi/subscription.html.ini
@@ -0,0 +1,2 @@
+disabled:
+ if product != "chrome": @True
diff --git a/tests/wpt/tests/infrastructure/webdriver/bidi/subscription.html b/tests/wpt/tests/infrastructure/webdriver/bidi/subscription.html
new file mode 100644
index 00000000000..056c2e5f77f
--- /dev/null
+++ b/tests/wpt/tests/infrastructure/webdriver/bidi/subscription.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Test console log are present</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
+<script>
+ promise_test(async () => {
+ const some_message = "SOME MESSAGE";
+ // Subscribe to `log.entryAdded` BiDi events. This will not add a listener to the page.
+ await test_driver.bidi.log.entry_added.subscribe();
+ // Add a listener for the log.entryAdded event. This will not subscribe to the event, so the subscription is
+ // required before. The cleanup is done automatically after the test is finished.
+ const log_entry_promise = test_driver.bidi.log.entry_added.once();
+ // Emit a console.log message.
+ // Note: Lint rule is disabled in `lint.ignore` file.
+ console.log(some_message);
+ // Wait for the log.entryAdded event to be received.
+ const event = await log_entry_promise;
+ // Assert the log.entryAdded event has the expected message.
+ assert_equals(event.args.length, 1);
+ const event_message = event.args[0];
+ assert_equals(event_message.value, some_message);
+ }, "Assert testdriver can subscribe and receive events");
+</script>
diff --git a/tests/wpt/tests/input-events/contenteditable-insertfrompaste-type-inputevent-data.html b/tests/wpt/tests/input-events/contenteditable-insertfrompaste-type-inputevent-data.html
new file mode 100644
index 00000000000..ab4cce7da30
--- /dev/null
+++ b/tests/wpt/tests/input-events/contenteditable-insertfrompaste-type-inputevent-data.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<div contenteditable id="editable">Copying and pasting some part of the text should not
+ set the event.data with the selected part for contenteditable</div>
+<script>
+ const editable = document.getElementById("editable");
+ let eventData;
+ let eventFired = false;
+ editable.addEventListener('input', (evt) => {
+ if(evt.inputType == 'insertFromPaste') {
+ eventFired = true;
+ eventData = evt.data;
+ }
+ });
+ test(function () {
+ editable.focus();
+ // Selecting first word of the text.
+ getSelection().setBaseAndExtent(editable.firstChild, 0, editable.firstChild, 7);
+ const selectedData = getSelection().toString();
+ // Copy and paste should fire input event with inputType insertFromPaste.
+ document.execCommand("copy");
+ document.execCommand("paste");
+ // Event data should NOT be set with the first word of the text
+ // which is "Copying" in case of contenteditable, it should be null instead.
+ assert_equals(selectedData, "Copying");
+ assert_equals(eventData, null);
+ assert_true(eventFired);
+ }, 'Input event data for inputType insertFromPaste should not be set for contenteditable');
+</script>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/wpt/tests/input-events/textarea-insertfrompaste-type-inputevent-data.html b/tests/wpt/tests/input-events/textarea-insertfrompaste-type-inputevent-data.html
new file mode 100644
index 00000000000..277e5982384
--- /dev/null
+++ b/tests/wpt/tests/input-events/textarea-insertfrompaste-type-inputevent-data.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<html>
+<body>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<textarea id="text">Copying and pasting some part of the text should set
+ the event.data with the selected part for inputType insertFromPaste</textarea>
+<script>
+ const text = document.getElementById("text");
+ let eventData;
+ text.addEventListener('input', (evt) => {
+ if(evt.inputType == 'insertFromPaste')
+ eventData = evt.data;
+ });
+ test(function () {
+ text.focus();
+ // Selecting first word of the text.
+ text.setSelectionRange(0, 7);
+ const selectedData = getSelection().toString();
+ // Copy and paste should fire input event with inputType insertFromPaste.
+ document.execCommand("copy");
+ document.execCommand("paste");
+ // Event data should now be set with the first word of the text
+ // which is "Copying".
+ assert_equals(selectedData, "Copying");
+ assert_equals(eventData, selectedData);
+ }, 'Input event data for inputType insertFromPaste should be set');
+</script>
+</body>
+</html> \ No newline at end of file
diff --git a/tests/wpt/tests/language_detection/canDetect.tentative.window.js b/tests/wpt/tests/language_detection/canDetect.tentative.window.js
new file mode 100644
index 00000000000..a69d1787fb8
--- /dev/null
+++ b/tests/wpt/tests/language_detection/canDetect.tentative.window.js
@@ -0,0 +1,9 @@
+// META: title=canDetect
+
+'use strict';
+
+promise_test(async t => {
+ const canDetect = await translation.canDetect();
+ assert_greater_than(canDetect.length, 0);
+ assert_not_equals(canDetect, "no");
+});
diff --git a/tests/wpt/tests/language_detection/detect-en.tentative.window.js b/tests/wpt/tests/language_detection/detect-en.tentative.window.js
new file mode 100644
index 00000000000..b4494d460d9
--- /dev/null
+++ b/tests/wpt/tests/language_detection/detect-en.tentative.window.js
@@ -0,0 +1,14 @@
+// META: title=Detect english
+
+'use strict';
+
+promise_test(async t => {
+ const detector = await translation.createDetector();
+ const results = await detector.detect("this string is in English");
+ // "en" should be highest confidence.
+ assert_equals(results[0].detectedLanguage, "en");
+ // Results should be from high to low confidence.
+ for (let i = 0; i < results.length - 1; i++) {
+ assert_greater_than_equal(results[i].confidence, results[i + 1].confidence);
+ }
+});
diff --git a/tests/wpt/tests/lint.ignore b/tests/wpt/tests/lint.ignore
index ca22175f33c..62ad931cb83 100644
--- a/tests/wpt/tests/lint.ignore
+++ b/tests/wpt/tests/lint.ignore
@@ -119,6 +119,9 @@ CONSOLE: service-workers/service-worker/resources/clients-get-other-origin.html
CONSOLE: webrtc/tools/*
CONSOLE: webaudio/resources/audit.js:41
+# Intentional use of console.*
+CONSOLE: infrastructure/webdriver/bidi/subscription.html
+
# use of console in a public library - annotation-model ensures
# it is not actually used
CONSOLE: annotation-model/scripts/ajv.min.js
diff --git a/tests/wpt/tests/mathml/presentation-markup/mpadded/mpadded-rendering-from-in-flow.html b/tests/wpt/tests/mathml/presentation-markup/mpadded/mpadded-rendering-from-in-flow.html
new file mode 100644
index 00000000000..3275b774f79
--- /dev/null
+++ b/tests/wpt/tests/mathml/presentation-markup/mpadded/mpadded-rendering-from-in-flow.html
@@ -0,0 +1,60 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="utf-8"/>
+ <title>mpadded rendering from in-flow children</title>
+ <link rel="help" href="https://w3c.github.io/mathml-core/#adjust-space-around-content-mpadded">
+ <meta name="assert" content="Verify rendering of mpadded is only affected by in-flow children.">
+ <style>
+ .oof1 {
+ position: absolute;
+ }
+ .oof2 {
+ position: fixed;
+ }
+ .nobox {
+ display: none;
+ }
+ </style>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/mathml/support/layout-comparison.js"></script>
+ <script>
+ setup({ explicit_done: true });
+ window.addEventListener("load", runTests);
+
+ function runTests() {
+ let math = document.querySelector("#mpadded");
+ let element = math.firstElementChild;
+ let reference = element.nextElementSibling;
+ const epsilon = 1;
+
+ test(function() {
+ compareLayout(element, reference, epsilon);
+ }, "Rendering of mpadded should only be affected by in-flow children");
+
+ done();
+ }
+ </script>
+ </head>
+ <body>
+ <div id="log"></div>
+ <div>
+ <math id="mpadded">
+ <mpadded lspace="3em" voffset="-1em" height="1em" depth="2em" width="8em" style="background: lightblue">
+ <mspace width="32px" class="oof1"/>
+ <mspace width="16px" class="oof2"/>
+ <mspace width="8px" class="nobox"/>
+ <mspace width="64px" height="8px" style="background: lightgreen"/>
+ <mspace width="32px" class="oof1"/>
+ <mspace width="16px" class="oof2"/>
+ <mspace width="8px" class="nobox"/>
+ </mpadded>
+
+ <mpadded lspace="3em" voffset="-1em" height="1em" depth="2em" width="8em" style="background: lightblue">
+ <mspace width="64px" height="8px" style="background: lightgreen"/>
+ </mpadded>
+ </math>
+ </div>
+ </body>
+</html>
diff --git a/tests/wpt/tests/mathml/presentation-markup/mrow/stretch-along-block-axis-001.html b/tests/wpt/tests/mathml/presentation-markup/mrow/stretch-along-block-axis-001.html
index 31385f53880..477fa27ebe7 100644
--- a/tests/wpt/tests/mathml/presentation-markup/mrow/stretch-along-block-axis-001.html
+++ b/tests/wpt/tests/mathml/presentation-markup/mrow/stretch-along-block-axis-001.html
@@ -152,6 +152,7 @@
<munderover>
<mo id="core_operator_4" stretchy="true">⥜</mo>
<mspace></mspace>
+ <mspace></mspace>
</munderover>
<mrow>
<mspace></mspace>
diff --git a/tests/wpt/tests/mathml/presentation-markup/scripts/scripts-rendering-from-in-flow.html b/tests/wpt/tests/mathml/presentation-markup/scripts/scripts-rendering-from-in-flow.html
new file mode 100644
index 00000000000..84099cad090
--- /dev/null
+++ b/tests/wpt/tests/mathml/presentation-markup/scripts/scripts-rendering-from-in-flow.html
@@ -0,0 +1,235 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="utf-8"/>
+ <title>scripts rendering from in-flow children</title>
+ <link rel="help" href="https://w3c.github.io/mathml-core/#script-and-limit-schemata">
+ <meta name="assert" content="Verify rendering of scripts and limits is only affected by in-flow children.">
+ <style>
+ .oof1 {
+ position: absolute;
+ }
+ .oof2 {
+ position: fixed;
+ }
+ .nobox {
+ display: none;
+ }
+ </style>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/mathml/support/layout-comparison.js"></script>
+ <script>
+ setup({ explicit_done: true });
+ window.addEventListener("load", runTests);
+
+ function runTests() {
+ let container = document.querySelector("#container");
+ const epsilon = 1;
+
+ for (let math of container.children) {
+ let tagName = math.id;
+ let element = math.firstElementChild;
+ let reference = element.nextElementSibling;
+
+ test(function() {
+ compareLayout(element, reference, epsilon);
+ }, `Rendering of ${tagName} should only be affected by in-flow children`);
+ }
+
+ done();
+ }
+ </script>
+ </head>
+ <body>
+ <div id="log"></div>
+ <div id="container">
+ <math id="mmultiscripts">
+ <mmultiscripts>
+ <mspace width="32px" class="oof1"/>
+ <mspace width="16px" class="oof2"/>
+ <mspace width="8px" class="nobox"/>
+ <mspace width="128px" height="24px" style="background: lightblue"/>
+ <mspace width="32px" class="oof1"/>
+ <mspace width="16px" class="oof2"/>
+ <mspace width="8px" class="nobox"/>
+ <mspace width="64px" height="8px" style="background: lightgreen"/>
+ <mspace width="32px" class="oof1"/>
+ <mspace width="16px" class="oof2"/>
+ <mspace width="8px" class="nobox"/>
+ <mspace width="32px" height="16px" style="background: lightgreen"/>
+ <mspace width="32px" class="oof1"/>
+ <mspace width="16px" class="oof2"/>
+ <mspace width="8px" class="nobox"/>
+ <mspace width="96px" height="48px" style="background: lightgreen"/>
+ <mspace width="32px" class="oof1"/>
+ <mspace width="16px" class="oof2"/>
+ <mspace width="8px" class="nobox"/>
+ <mspace width="48px" height="32px" style="background: lightgreen"/>
+ <mspace width="32px" class="oof1"/>
+ <mspace width="16px" class="oof2"/>
+ <mspace width="8px" class="nobox"/>
+ <mprescripts/>
+ <mspace width="32px" class="oof1"/>
+ <mspace width="16px" class="oof2"/>
+ <mspace width="8px" class="nobox"/>
+ <mspace width="32px" height="16px" style="background: lightsalmon"/>
+ <mspace width="32px" class="oof1"/>
+ <mspace width="16px" class="oof2"/>
+ <mspace width="8px" class="nobox"/>
+ <mspace width="16px" height="48px" style="background: lightsalmon"/>
+ <mspace width="32px" class="oof1"/>
+ <mspace width="16px" class="oof2"/>
+ <mspace width="8px" class="nobox"/>
+ </mmultiscripts>
+
+ <mmultiscripts>
+ <mspace width="128px" height="24px" style="background: lightblue"/>
+ <mspace width="64px" height="8px" style="background: lightgreen"/>
+ <mspace width="32px" height="16px" style="background: lightgreen"/>
+ <mspace width="96px" height="48px" style="background: lightgreen"/>
+ <mspace width="48px" height="32px" style="background: lightgreen"/>
+ <mprescripts/>
+ <mspace width="32px" height="16px" style="background: lightsalmon"/>
+ <mspace width="16px" height="48px" style="background: lightsalmon"/>
+ </mmultiscripts>
+ </math>
+
+ <math id="munder">
+ <munder>
+ <mspace width="32px" class="oof1"/>
+ <mspace width="16px" class="oof2"/>
+ <mspace width="8px" class="nobox"/>
+ <mspace width="128px" height="24px" style="background: lightblue"/>
+ <mspace width="32px" class="oof1"/>
+ <mspace width="16px" class="oof2"/>
+ <mspace width="8px" class="nobox"/>
+ <mspace width="64px" height="8px" style="background: lightgreen"/>
+ <mspace width="32px" class="oof1"/>
+ <mspace width="16px" class="oof2"/>
+ <mspace width="8px" class="nobox"/>
+ </munder>
+
+ <munder>
+ <mspace width="128px" height="24px" style="background: lightblue"/>
+ <mspace width="64px" height="8px" style="background: lightgreen"/>
+ </munder>
+ </math>
+
+ <math id="mover">
+ <mover>
+ <mspace width="32px" class="oof1"/>
+ <mspace width="16px" class="oof2"/>
+ <mspace width="8px" class="nobox"/>
+ <mspace width="128px" height="24px" style="background: lightblue"/>
+ <mspace width="32px" class="oof1"/>
+ <mspace width="16px" class="oof2"/>
+ <mspace width="8px" class="nobox"/>
+ <mspace width="32px" height="16px" style="background: lightsalmon"/>
+ <mspace width="32px" class="oof1"/>
+ <mspace width="16px" class="oof2"/>
+ <mspace width="8px" class="nobox"/>
+ </mover>
+
+ <mover>
+ <mspace width="128px" height="24px" style="background: lightblue"/>
+ <mspace width="32px" height="16px" style="background: lightsalmon"/>
+ </mover>
+ </math>
+
+ <math id="munderover">
+ <munderover>
+ <mspace width="32px" class="oof1"/>
+ <mspace width="16px" class="oof2"/>
+ <mspace width="8px" class="nobox"/>
+ <mspace width="128px" height="24px" style="background: lightblue"/>
+ <mspace width="32px" class="oof1"/>
+ <mspace width="16px" class="oof2"/>
+ <mspace width="8px" class="nobox"/>
+ <mspace width="64px" height="8px" style="background: lightgreen"/>
+ <mspace width="32px" class="oof1"/>
+ <mspace width="16px" class="oof2"/>
+ <mspace width="8px" class="nobox"/>
+ <mspace width="32px" height="16px" style="background: lightsalmon"/>
+ <mspace width="32px" class="oof1"/>
+ <mspace width="16px" class="oof2"/>
+ <mspace width="8px" class="nobox"/>
+ </munderover>
+
+ <munderover>
+ <mspace width="128px" height="24px" style="background: lightblue"/>
+ <mspace width="64px" height="8px" style="background: lightgreen"/>
+ <mspace width="32px" height="16px" style="background: lightsalmon"/>
+ </munderover>
+ </math>
+
+ <math id="msub">
+ <msub>
+ <mspace width="32px" class="oof1"/>
+ <mspace width="16px" class="oof2"/>
+ <mspace width="8px" class="nobox"/>
+ <mspace width="128px" height="24px" style="background: lightblue"/>
+ <mspace width="32px" class="oof1"/>
+ <mspace width="16px" class="oof2"/>
+ <mspace width="8px" class="nobox"/>
+ <mspace width="64px" height="8px" style="background: lightgreen"/>
+ <mspace width="32px" class="oof1"/>
+ <mspace width="16px" class="oof2"/>
+ <mspace width="8px" class="nobox"/>
+ </msub>
+
+ <msub>
+ <mspace width="128px" height="24px" style="background: lightblue"/>
+ <mspace width="64px" height="8px" style="background: lightgreen"/>
+ </msub>
+ </math>
+
+ <math id="msup">
+ <msup>
+ <mspace width="32px" class="oof1"/>
+ <mspace width="16px" class="oof2"/>
+ <mspace width="8px" class="nobox"/>
+ <mspace width="128px" height="24px" style="background: lightblue"/>
+ <mspace width="32px" class="oof1"/>
+ <mspace width="16px" class="oof2"/>
+ <mspace width="8px" class="nobox"/>
+ <mspace width="32px" height="16px" style="background: lightsalmon"/>
+ <mspace width="32px" class="oof1"/>
+ <mspace width="16px" class="oof2"/>
+ <mspace width="8px" class="nobox"/>
+ </msup>
+
+ <msup>
+ <mspace width="128px" height="24px" style="background: lightblue"/>
+ <mspace width="32px" height="16px" style="background: lightsalmon"/>
+ </msup>
+ </math>
+
+ <math id="msubsup">
+ <msubsup>
+ <mspace width="32px" class="oof1"/>
+ <mspace width="16px" class="oof2"/>
+ <mspace width="8px" class="nobox"/>
+ <mspace width="128px" height="24px" style="background: lightblue"/>
+ <mspace width="32px" class="oof1"/>
+ <mspace width="16px" class="oof2"/>
+ <mspace width="8px" class="nobox"/>
+ <mspace width="64px" height="8px" style="background: lightgreen"/>
+ <mspace width="32px" class="oof1"/>
+ <mspace width="16px" class="oof2"/>
+ <mspace width="8px" class="nobox"/>
+ <mspace width="32px" height="16px" style="background: lightsalmon"/>
+ <mspace width="32px" class="oof1"/>
+ <mspace width="16px" class="oof2"/>
+ <mspace width="8px" class="nobox"/>
+ </msubsup>
+
+ <msubsup>
+ <mspace width="128px" height="24px" style="background: lightblue"/>
+ <mspace width="64px" height="8px" style="background: lightgreen"/>
+ <mspace width="32px" height="16px" style="background: lightsalmon"/>
+ </msubsup>
+ </math>
+ </div>
+ </body>
+</html>
diff --git a/tests/wpt/tests/mathml/presentation-markup/tokens/tokens-rendering-from-in-flow.html b/tests/wpt/tests/mathml/presentation-markup/tokens/tokens-rendering-from-in-flow.html
new file mode 100644
index 00000000000..ccc0f25452d
--- /dev/null
+++ b/tests/wpt/tests/mathml/presentation-markup/tokens/tokens-rendering-from-in-flow.html
@@ -0,0 +1,75 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="utf-8"/>
+ <title>tokens rendering from in-flow children</title>
+ <link rel="help" href="https://w3c.github.io/mathml-core/#token-elements">
+ <meta name="assert" content="Verify rendering of tokens is only affected by in-flow children.">
+ <style>
+ .oof1 {
+ position: absolute;
+ }
+ .oof2 {
+ position: fixed;
+ }
+ .box {
+ display: inline-block;
+ width: 10px;
+ height: 10px;
+ }
+ </style>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/mathml/support/layout-comparison.js"></script>
+ <script>
+ setup({ explicit_done: true });
+ window.addEventListener("load", runTests);
+
+ function runTests() {
+ let container = document.querySelector("#container");
+ const epsilon = 1;
+
+ for (let math of container.children) {
+ let tagName = math.id;
+ let element = math.firstElementChild;
+ let reference = element.nextElementSibling;
+
+ test(function() {
+ compareLayout(element, reference, epsilon);
+ }, `Rendering of ${tagName} should only be affected by in-flow children`);
+ }
+
+ done();
+ }
+ </script>
+ </head>
+ <body>
+ <div id="log"></div>
+ <div id="container">
+ <math id="mo">
+ <mo><span class="box" style="background: lightblue"></span><span class="oof1 box"><span class="oof2 box"></span><span class="box" style="background: pink"></span><span class="box" style="background: yellow"></span><span class="oof1 box"></span><span class="oof2 box"></span></mo>
+ <mo><span class="box" style="background: lightblue"></span><span class="box" style="background: pink"></span><span class="box" style="background: yellow"></span></mo>
+ </math>
+
+ <math id="mi">
+ <mi><span class="box" style="background: lightblue"></span><span class="oof1 box"></span><span class="oof2 box"></span><span class="box" style="background: pink"></span><span class="box" style="background: yellow"></span><span class="oof1 box"></span><span class="oof2 box"></span></mi>
+ <mi><span class="box" style="background: lightblue"></span><span class="box" style="background: pink"></span><span class="box" style="background: yellow"></span></mi>
+ </math>
+
+ <math id="mi">
+ <mn><span class="box" style="background: lightblue"></span><span class="oof1 box"></span><span class="oof2 box"></span><span class="box" style="background: pink"></span><span class="box" style="background: yellow"></span><span class="oof1 box"></span><span class="oof2 box"></span></mn>
+ <mn><span class="box" style="background: lightblue"></span><span class="box" style="background: pink"></span><span class="box" style="background: yellow"></span></mn>
+ </math>
+
+ <math id="mo">
+ <mo><span class="box" style="background: lightblue"></span><span class="oof1 box"></span><span class="oof2 box"></span><span class="box" style="background: pink"></span><span class="box" style="background: yellow"></span><span class="oof1 box"></span><span class="oof2 box"></span></mo>
+ <mo><span class="box" style="background: lightblue"></span><span class="box" style="background: pink"></span><span class="box" style="background: yellow"></span></mo>
+ </math>
+
+ <math id="mtext">
+ <mtext><span class="box" style="background: lightblue"></span><span class="oof1 box"></span><span class="oof2 box"></span><span class="box" style="background: pink"></span><span class="box" style="background: yellow"></span><span class="oof1 box"></span><span class="oof2 box"></span></mtext>
+ <mtext><span class="box" style="background: lightblue"></span><span class="box" style="background: pink"></span><span class="box" style="background: yellow"></span></mtext>
+ </math>
+ </div>
+ </body>
+</html>
diff --git a/tests/wpt/tests/mediacapture-streams/GUM-permissions-query.https.html b/tests/wpt/tests/mediacapture-streams/GUM-permissions-query.https.html
new file mode 100644
index 00000000000..877b901705d
--- /dev/null
+++ b/tests/wpt/tests/mediacapture-streams/GUM-permissions-query.https.html
@@ -0,0 +1,56 @@
+<!doctype html>
+<html>
+<head>
+<title>Check permissions.query with getUserMedia</title>
+</head>
+<body>
+<p class="instructions">When prompted, accept to share your camera or microphone.</p>
+<h1 class="instructions">Description</h1>
+<p class="instructions">This test checks that permissions.query() of camera and
+microphone produce "granted" after successful calls to getUserMedia for the
+respective device kinds.</p>
+<div id='log'></div>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script src=/resources/testdriver.js></script>
+<script src=/resources/testdriver-vendor.js></script>
+<script src=permission-helper.js></script>
+<script>
+promise_test(async t => {
+ let status = await navigator.permissions.query({name: "camera"});
+ assert_equals(status.state, "prompt", "initial camera state is prompt");
+
+ let eventFired = false;
+ status.onchange = () => eventFired = true;
+
+ // state is set by setMediaPermission in automation & by gUM when run manually
+ await setMediaPermission("granted", ["camera"]);
+ const stream = await navigator.mediaDevices.getUserMedia({video: true});
+ t.add_cleanup(() => stream.getTracks()[0].stop());
+ status.onchange = null; // defer assert to not overshadow main assert below
+
+ status = await navigator.permissions.query({name: "camera"});
+ assert_equals(status.state, "granted", "camera is granted after getUserMedia");
+ assert_true(eventFired, "status.onchange fired for camera permission change");
+}, "camera is granted after getUserMedia, according to permissions.query()");
+
+promise_test(async t => {
+ let status = await navigator.permissions.query({name: "microphone"});
+ assert_equals(status.state, "prompt", "initial microphone state is prompt");
+ let eventFired = false;
+ status.onchange = () => eventFired = true;
+
+ // state is set by setMediaPermission in automation & by gUM when run manually
+ await setMediaPermission("granted", ["microphone"]);
+ const stream = await navigator.mediaDevices.getUserMedia({audio: true});
+ t.add_cleanup(() => stream.getTracks()[0].stop());
+ status.onchange = null; // defer assert to not overshadow main assert below
+
+ status = await navigator.permissions.query({name: "microphone"});
+ assert_equals(status.state, "granted", "microphone is granted after getUserMedia");
+ assert_true(eventFired, "status.onchange fired for microphone permission change");
+}, "microphone is granted after getUserMedia, according to permissions.query()");
+
+</script>
+</body>
+</html>
diff --git a/tests/wpt/tests/navigation-api/navigation-methods/navigate-relative-url-utf8.html b/tests/wpt/tests/navigation-api/navigation-methods/navigate-relative-url-utf8.html
new file mode 100644
index 00000000000..22c723fd3bc
--- /dev/null
+++ b/tests/wpt/tests/navigation-api/navigation-methods/navigate-relative-url-utf8.html
@@ -0,0 +1,23 @@
+<!doctype html>
+<meta charset={{GET[encoding]}}> <!-- ends up as <meta charset> by default which is windows-1252 -->
+<meta name=variant content="?encoding=windows-1252">
+<meta name=variant content="?encoding=x-cp1251">
+<meta name=variant content="?encoding=utf8">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<iframe id="i" src="/common/blank.html"></iframe>
+<!-- Test for https://github.com/whatwg/html/pull/9756 -->
+
+<script>
+async_test(t => {
+ window.onload = t.step_func(() => {
+ i.contentWindow.navigation.navigate("?\u00FF");
+
+ i.onload = t.step_func_done(() => {
+ const iframeURL = new URL(i.contentWindow.navigation.currentEntry.url);
+ assert_equals(iframeURL.pathname, "/common/blank.html", "pathname");
+ assert_equals(iframeURL.search, "?%C3%BF", "search");
+ });
+ });
+}, "navigate() should resolve URLs assuming UTF-8, ignoring the document's encoding");
+</script>
diff --git a/tests/wpt/tests/permissions/all-permissions.html b/tests/wpt/tests/permissions/all-permissions.html
index 9ad014bc6e2..76d45279b7c 100644
--- a/tests/wpt/tests/permissions/all-permissions.html
+++ b/tests/wpt/tests/permissions/all-permissions.html
@@ -18,20 +18,20 @@
"midi",
"nfc",
"screen-wake-lock",
- "camera",
"display-capture",
- "microphone",
"speaker-selection",
"xr-spatial-tracking",
];
// These are known to be supported by multiple engines...
const permissions = [
+ "camera",
"geolocation",
+ "microphone",
"notifications",
"persistent-storage",
"push",
- ]
+ ];
for (const name of [...permissions, ...atRisk]) {
promise_test(async (test) => {
diff --git a/tests/wpt/tests/pointerevents/pointerevent-boundary-event-target-when-hover-generates-content-under-pointer.html b/tests/wpt/tests/pointerevents/pointerevent-boundary-event-target-when-hover-generates-content-under-pointer.html
new file mode 100644
index 00000000000..3cbed96c867
--- /dev/null
+++ b/tests/wpt/tests/pointerevents/pointerevent-boundary-event-target-when-hover-generates-content-under-pointer.html
@@ -0,0 +1,55 @@
+<!doctype html>
+<html>
+<head>
+<meta charset="utf-8">
+<meta name=viewport content="width=device-width,initial-scale=1">
+<title>Making generated content under pointer at hover should keep targeting the boundary event target to parent element</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-actions.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
+<script>
+"use strict";
+
+addEventListener("load", () => {
+ promise_test(async () => {
+ const div = document.querySelector("div");
+ await new test_driver.Actions()
+ .pointerMove(0, 0, {origin: div})
+ .send();
+ const span = document.querySelector("span");
+ const promisePointerOver = new Promise(resolve => {
+ span.addEventListener("pointerover", event => resolve(event.target), {once: true});
+ });
+ const promiseMouseOver = new Promise(resolve => {
+ span.addEventListener("mouseover", event => resolve(event.target), {once: true});
+ });
+ await new test_driver.Actions()
+ .pointerMove(0, 0, {origin: span})
+ .pointerDown()
+ .pointerUp()
+ .send();
+ const pointerOverTarget = await promisePointerOver;
+ assert_equals(
+ pointerOverTarget,
+ span,
+ "pointerover target should be the <span>"
+ );
+ const mouseOverTarget = await promiseMouseOver;
+ assert_equals(
+ mouseOverTarget,
+ span,
+ "mouseover target should be the <span>"
+ );
+ }, "Generating text content under pointer");
+}, {once: true});
+</script>
+<style>
+span:hover::before {
+ content: "Here is generated content... ";
+}
+</style>
+</head>
+<body><span>Hover me!</span><div>Move pointer here first!</div></body>
+</html>
diff --git a/tests/wpt/tests/pointerevents/pointerevent_click_is_a_pointerevent.html b/tests/wpt/tests/pointerevents/pointerevent_click_is_a_pointerevent.html
index ceaae68db21..9087a42436e 100644
--- a/tests/wpt/tests/pointerevents/pointerevent_click_is_a_pointerevent.html
+++ b/tests/wpt/tests/pointerevents/pointerevent_click_is_a_pointerevent.html
@@ -13,7 +13,7 @@
<input id="target" style="margin: 20px">
-<iframe src="resources/minimal.html" height="20" width="20"></iframe>
+<iframe src="resources/minimal.html" height="100" width="100"></iframe>
<script>
'use strict';
diff --git a/tests/wpt/tests/private-aggregation/private-aggregation-permissions-policy-default.https.sub.html b/tests/wpt/tests/private-aggregation/private-aggregation-permissions-policy-default.https.sub.html
index 81e0c241184..3deb6077051 100644
--- a/tests/wpt/tests/private-aggregation/private-aggregation-permissions-policy-default.https.sub.html
+++ b/tests/wpt/tests/private-aggregation/private-aggregation-permissions-policy-default.https.sub.html
@@ -34,8 +34,8 @@ promise_test(async () => {
await CreateWorkletAndVerifyContributeToHistogram(
/*shared_storage_origin=*/cross_origin, paa_data);
}, 'In a page with default "private-aggregation" permissions policy, ' +
- 'createWorklet() with cross-origin script, and then execute ' +
- 'contributeToHistogram() inside the worklet');
+ 'createWorklet() with cross-origin script and script data origin, and then '
+ + 'execute contributeToHistogram() inside the worklet');
</script>
</body>
diff --git a/tests/wpt/tests/private-aggregation/private-aggregation-permissions-policy-none.https.sub.html b/tests/wpt/tests/private-aggregation/private-aggregation-permissions-policy-none.https.sub.html
index a10efe95c4b..92fd2d5f360 100644
--- a/tests/wpt/tests/private-aggregation/private-aggregation-permissions-policy-none.https.sub.html
+++ b/tests/wpt/tests/private-aggregation/private-aggregation-permissions-policy-none.https.sub.html
@@ -34,8 +34,8 @@ promise_test(async () => {
await CreateWorkletAndVerifyContributeToHistogram(
/*shared_storage_origin=*/cross_origin, paa_data, /*expected_error=*/true);
}, 'In a page with "private-aggregation=()" permissions policy, ' +
- 'createWorklet() with cross-origin script, and then execute ' +
- 'contributeToHistogram() inside the worklet');
+ 'createWorklet() with cross-origin script and script data origin, and then '
+ + 'execute contributeToHistogram() inside the worklet');
</script>
</body>
diff --git a/tests/wpt/tests/private-aggregation/private-aggregation-permissions-policy-self.https.sub.html b/tests/wpt/tests/private-aggregation/private-aggregation-permissions-policy-self.https.sub.html
index 0ec4c6b400d..56b98356548 100644
--- a/tests/wpt/tests/private-aggregation/private-aggregation-permissions-policy-self.https.sub.html
+++ b/tests/wpt/tests/private-aggregation/private-aggregation-permissions-policy-self.https.sub.html
@@ -34,8 +34,8 @@ promise_test(async () => {
await CreateWorkletAndVerifyContributeToHistogram(
/*shared_storage_origin=*/cross_origin, paa_data, /*expected_error=*/true);
}, 'In a page with "private-aggregation=(self)" permissions policy, ' +
- 'createWorklet() with cross-origin script, and then execute ' +
- 'contributeToHistogram() inside the worklet');
+ 'createWorklet() with cross-origin script and script data origin, and then '
+ + 'execute contributeToHistogram() inside the worklet');
</script>
</body>
diff --git a/tests/wpt/tests/private-aggregation/resources/util.js b/tests/wpt/tests/private-aggregation/resources/util.js
index a4e7e905c65..64f638684ba 100644
--- a/tests/wpt/tests/private-aggregation/resources/util.js
+++ b/tests/wpt/tests/private-aggregation/resources/util.js
@@ -35,8 +35,10 @@ async function CreateWorkletAndVerifyContributeToHistogram(shared_storage_origin
let url1 = generateURL("/shared-storage/resources/frame1.html",
[ancestor_key]);
- let worklet = await sharedStorage.createWorklet(shared_storage_origin +
- "/private-aggregation/resources/shared-storage-helper-module.js");
+ let worklet = await sharedStorage.createWorklet(
+ shared_storage_origin +
+ '/private-aggregation/resources/shared-storage-helper-module.js',
+ {dataOrigin: 'script-origin'});
let select_url_result = await worklet.selectURL(
"contribute-to-histogram", [{url: url0}, {url: url1}],
diff --git a/tests/wpt/tests/resources/testdriver.js b/tests/wpt/tests/resources/testdriver.js
index af7b3e06cd9..985dbb0e403 100644
--- a/tests/wpt/tests/resources/testdriver.js
+++ b/tests/wpt/tests/resources/testdriver.js
@@ -50,6 +50,58 @@
*/
window.test_driver = {
/**
+ Represents `WebDriver BiDi <https://w3c.github.io/webdriver-bidi>`_ protocol.
+ */
+ bidi: {
+ /**
+ * `log <https://w3c.github.io/webdriver-bidi/#module-log>`_ module.
+ */
+ log: {
+ /**
+ * `log.entryAdded <https://w3c.github.io/webdriver-bidi/#event-log-entryAdded>`_ event.
+ */
+ entry_added: {
+ /**
+ * Subscribe to the `log.entryAdded` event. This does not
+ * add actual listeners. To listen to the event, use the
+ * `on` or `once` methods.
+ * @param {{contexts?: null | (string | Window)[]}} params - Parameters for the subscription.
+ * * `contexts`: an array of window proxies or browsing
+ * context ids to listen to the event. If not provided, the
+ * event subscription is done for the current window's
+ * browsing context. `null` for the global subscription.
+ * @return {Promise<void>}
+ */
+ subscribe: async function (params = {}) {
+ return window.test_driver_internal.bidi.log.entry_added.subscribe(params);
+ },
+ /**
+ * Add an event listener for the `log.entryAdded
+ * <https://w3c.github.io/webdriver-bidi/#event-log-entryAdded>`_ event. Make sure `subscribe` is
+ * called before using this method.
+ *
+ * @param callback {function(event): void} - The callback
+ * to be called when the event is fired.
+ * @returns {function(): void} - A function to call to
+ * remove the event listener.
+ */
+ on: function (callback) {
+ return window.test_driver_internal.bidi.log.entry_added.on(callback);
+ },
+ once: function () {
+ return new Promise(resolve => {
+ const remove_handler = window.test_driver_internal.bidi.log.entry_added.on(
+ data => {
+ resolve(data);
+ remove_handler();
+ });
+ });
+ },
+ }
+ }
+ },
+
+ /**
* Set the context in which testharness.js is loaded
*
* @param {WindowProxy} context - the window containing testharness.js
@@ -1066,6 +1118,29 @@
*/
clear_device_posture: function(context=null) {
return window.test_driver_internal.clear_device_posture(context);
+ },
+
+ /**
+ * Runs the `bounce tracking timer algorithm
+ * <https://privacycg.github.io/nav-tracking-mitigations/#bounce-tracking-timer>`_,
+ * which removes all hosts from the stateful bounce tracking map, without
+ * regard for the bounce tracking grace period and returns a list of the
+ * deleted hosts.
+ *
+ * Matches the `Run Bounce Tracking Mitigations
+ * https://privacycg.github.io/nav-tracking-mitigations/#run-bounce-tracking-mitigations-command`_
+ * WebDriver command.
+ *
+ * @param {WindowProxy} [context=null] - Browsing context in which to
+ * run the call, or null for the
+ * current browsing context.
+ * @returns {Promise} Fulfilled after the bounce tracking timer
+ * algorithm has finished running. Returns an array
+ * of all hosts that were in the stateful bounce
+ * tracking map before deletion occurred.
+ */
+ run_bounce_tracking_mitigations: function (context = null) {
+ return window.test_driver_internal.run_bounce_tracking_mitigations(context);
}
};
@@ -1078,6 +1153,21 @@
*/
in_automation: false,
+ bidi: {
+ log: {
+ entry_added: {
+ async subscribe() {
+ throw new Error(
+ "bidi.log.entry_added.subscribe is not implemented by testdriver-vendor.js");
+ },
+ on() {
+ throw new Error(
+ "bidi.log.entry_added.on is not implemented by testdriver-vendor.js");
+ }
+ }
+ }
+ },
+
async click(element, coords) {
if (this.in_automation) {
throw new Error("click() is not implemented by testdriver-vendor.js");
@@ -1262,6 +1352,10 @@
async clear_device_posture(context=null) {
throw new Error("clear_device_posture() is not implemented by testdriver-vendor.js");
+ },
+
+ async run_bounce_tracking_mitigations(context=null) {
+ throw new Error("run_bounce_tracking_mitigations() is not implemented by testdriver-vendor.js");
}
};
})();
diff --git a/tests/wpt/tests/scroll-animations/crashtests/viewport-100vh.html b/tests/wpt/tests/scroll-animations/crashtests/viewport-100vh.html
new file mode 100644
index 00000000000..cc862bd2995
--- /dev/null
+++ b/tests/wpt/tests/scroll-animations/crashtests/viewport-100vh.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>Handle zero animation range</title>
+ <style>
+ @keyframes card {
+ 0% { scale: 1; }
+ 100% { scale: 1; }
+ }
+ .SignetCard {
+ height: 100px;
+ animation-name: card;
+ animation-duration: 1ms;
+ animation-fill-mode: both;
+ animation-timeline: view(block 100vh);
+ }
+ </style>
+</head>
+<body>
+ <div class="SignetCard"></div>
+</body>
+</html>
diff --git a/tests/wpt/tests/scroll-animations/css/animation-shorthand.html b/tests/wpt/tests/scroll-animations/css/animation-shorthand.html
index b128b33dd8b..144fc5773fd 100644
--- a/tests/wpt/tests/scroll-animations/css/animation-shorthand.html
+++ b/tests/wpt/tests/scroll-animations/css/animation-shorthand.html
@@ -133,4 +133,40 @@ test((t) => {
assert_equals(getComputedStyle(target).animation, '');
}, 'Animation shorthand can not represent non-initial animation-range-end (computed)');
+test((t) => {
+ t.add_cleanup(() => {
+ target.style = '';
+ });
+
+ target.style.animationName = "bounce, roll";
+ target.style.animationDuration = "1s, 0.2s";
+ target.style.animationTimingFunction = "ease-in, linear";
+ target.style.animationDelay = "0s, 1s";
+ target.style.animationDirection = "normal, reverse";
+ target.style.animationFillMode = "forwards, backwards";
+ target.style.animationIterationCount = "infinite, 2";
+ target.style.animationPlayState = "paused, running";
+ // animation-timeline and animation-range-{start|end} are initial values.
+ assert_equals(target.style.animation, '');
+}, 'Animation shorthand can not be represented with same list length (specified)');
+
+test((t) => {
+ t.add_cleanup(() => {
+ target.style = '';
+ });
+
+ target.style.animationName = "bounce, roll";
+ target.style.animationDuration = "1s, 0.2s";
+ target.style.animationTimingFunction = "ease-in, linear";
+ target.style.animationDelay = "0s, 1s";
+ target.style.animationDirection = "normal, reverse";
+ target.style.animationFillMode = "forwards, backwards";
+ target.style.animationIterationCount = "infinite, 2";
+ target.style.animationPlayState = "paused, running";
+ // animation-timeline and animation-range-{start|end} are initial values.
+ assert_equals(getComputedStyle(target).animation,
+ '1s ease-in infinite forwards paused bounce, ' +
+ '0.2s linear 1s 2 reverse backwards roll');
+}, 'Animation shorthand can be represented with same list length (computed)');
+
</script>
diff --git a/tests/wpt/tests/scroll-animations/css/view-timeline-range-update-reversed-animation.html b/tests/wpt/tests/scroll-animations/css/view-timeline-range-update-reversed-animation.html
index 960a8e6ecfb..be51998f2e0 100644
--- a/tests/wpt/tests/scroll-animations/css/view-timeline-range-update-reversed-animation.html
+++ b/tests/wpt/tests/scroll-animations/css/view-timeline-range-update-reversed-animation.html
@@ -51,15 +51,19 @@
await waitForCompositorReady();
const anim = target.getAnimations()[0];
- anim.playbackRate = -1;
+ // If animation-duration:auto is not supported, getAnimations() may not
+ // return this animation.
+ if (typeof anim !== 'undefined') {
+ anim.playbackRate = -1;
- // Scroll to exit 60%.
- scroller.scrollTop = 860;
- await waitForNextFrame();
+ // Scroll to exit 60%.
+ scroller.scrollTop = 860;
+ await waitForNextFrame();
- // Update the animation range.
- target.classList.add('exit-range');
- await waitForNextFrame();
+ // Update the animation range.
+ target.classList.add('exit-range');
+ await waitForNextFrame();
+ }
// Make sure change to animation range was properly picked up.
document.documentElement.classList.remove("reftest-wait");
diff --git a/tests/wpt/tests/scroll-to-text-fragment/drag-selection-over-target-text.html b/tests/wpt/tests/scroll-to-text-fragment/drag-selection-over-target-text.html
new file mode 100644
index 00000000000..f7b3c4c7f4d
--- /dev/null
+++ b/tests/wpt/tests/scroll-to-text-fragment/drag-selection-over-target-text.html
@@ -0,0 +1,53 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>Drag Selection over a text directive</title>
+ <meta charset="utf-8">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/resources/testdriver.js"></script>
+ <script src="/resources/testdriver-actions.js"></script>
+ <script src="/resources/testdriver-vendor.js"></script>
+
+</head>
+<body>
+<p>This is a sample text.</p>
+<script>
+async function rAF() {
+ return new Promise((resolve) => {
+ window.requestAnimationFrame(resolve);
+ });
+}
+
+document.addEventListener('DOMContentLoaded', () => {
+
+ const textElement = document.querySelector('p');
+
+ const rect = textElement.getBoundingClientRect();
+ const startX = rect.left + 5;
+ const startY = rect.top + 5;
+ const endX = rect.right - 5;
+ const endY = rect.top + 5;
+
+ promise_test(async t => {
+ const hashChange = new Promise(r => window.addEventListener('hashchange', r, { once: true }));
+
+ location.hash = ':~:text=This is a sample text';
+ await hashChange;
+
+ await new test_driver.Actions()
+ .pointerMove(startX, startY, { origin: 'viewport' })
+ .pointerDown({ button: 0 })
+ .pointerMove(endX, endY, { origin: 'viewport' })
+ .pointerUp({ button: 0 })
+ .send();
+
+ await rAF();
+
+ const selection = window.getSelection().toString();
+ assert_true(selection.endsWith("sample text."), "A Selection should be created.");
+ }, "Test drag and drop selection over a text directive");
+});
+</script>
+</body>
+</html>
diff --git a/tests/wpt/tests/scroll-to-text-fragment/find-range-from-text-directive-target.html b/tests/wpt/tests/scroll-to-text-fragment/find-range-from-text-directive-target.html
index dc02ebd8741..c7ed1899e7c 100644
--- a/tests/wpt/tests/scroll-to-text-fragment/find-range-from-text-directive-target.html
+++ b/tests/wpt/tests/scroll-to-text-fragment/find-range-from-text-directive-target.html
@@ -69,7 +69,26 @@ window.onload = function() {
Dipsum
-
+ <div>Text
+ <div style="display: none">This isn't rendered</div>
+ with display: none
+ </div>
+ <div>Text
+ <div style="visibility: hidden">This also isn't visible</div>
+ with visibility: hidden as block boundary
+ </div>
+ <div>Text
+ <span style="visibility: hidden">This also isn't visible</span>
+ with visibility: hidden as inline
+ </div>
+ <div>Text
+ <iframe srcdoc="Inner Iframe"></iframe>
+ with Iframe
+ </div>
+ <div>Text
+ <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAQAAAAnOwc2AAAAEUlEQVR42mNk+M+AARiHsiAAcCIKAYwFoQ8AAAAASUVORK5CYII=">
+ with image
+ </div>
</p>
<p>
diff --git a/tests/wpt/tests/scroll-to-text-fragment/find-range-from-text-directive.html b/tests/wpt/tests/scroll-to-text-fragment/find-range-from-text-directive.html
index 229f082747b..bc34b60fe7f 100644
--- a/tests/wpt/tests/scroll-to-text-fragment/find-range-from-text-directive.html
+++ b/tests/wpt/tests/scroll-to-text-fragment/find-range-from-text-directive.html
@@ -284,6 +284,31 @@ let test_cases = [
fragment: '#:~:text=prefix-,match,matchEnd,-suffix5',
expect_to_scroll: true,
description: 'Range end matches correct suffix'
+ },
+ {
+ fragment: '#:~:text=Text%20with%20display:%20none',
+ expect_to_scroll: true,
+ description: '`start` element contains search-invisible text (display: none)'
+ },
+ {
+ fragment: '#:~:text=Text%20with%20visibility:%20hidden%20as%20block%20boundary',
+ expect_to_scroll: false,
+ description: '`start` element contains hidden text, which is a block boundary'
+ },
+ {
+ fragment: '#:~:text=Text%20with%20visibility:%20hidden%20as%20inline',
+ expect_to_scroll: true,
+ description: '`start` element contains hidden text which is not a block boundary'
+ },
+ {
+ fragment: '#:~:text=Text%20with%20Iframe',
+ expect_to_scroll: true,
+ description: '`start` element contains search-invisible text (iframe)'
+ },
+ {
+ fragment: '#:~:text=Text%20with%20image',
+ expect_to_scroll: true,
+ description: '`start` element contains search-invisible text (image)'
}
];
diff --git a/tests/wpt/tests/scroll-to-text-fragment/sequential-focus.html b/tests/wpt/tests/scroll-to-text-fragment/sequential-focus.html
index 30b467f1ecd..79b013ca229 100644
--- a/tests/wpt/tests/scroll-to-text-fragment/sequential-focus.html
+++ b/tests/wpt/tests/scroll-to-text-fragment/sequential-focus.html
@@ -24,21 +24,21 @@
const link = document.getElementById('link');
const nextButton = document.getElementById('next-button');
- window.addEventListener('hashchange', async () => {
- // Assert that the link element does not have focus initially
- assert_not_equals(document.activeElement, link, 'Link element should not have focus initially');
+ const hashChange = new Promise(r => window.addEventListener('hashchange', r, { once: true }));
- // Simulate pressing TAB to shift focus to the next element
- await test_driver.send_keys(document.body, '\uE004'); // '\uE004' is the WebDriver key code for TAB
+ // Simulate a same-document load to the text fragment
+ location.hash = '#some-hash-to-trigger-hashchange:~:text=foo';
- // Assert that the next focusable element (button) has focus
- assert_equals(document.activeElement, nextButton, 'Next focusable element should have focus after pressing TAB');
+ await hashChange;
- t.done();
- });
+ // Assert that the link element does not have focus initially
+ assert_not_equals(document.activeElement, link, 'Link element should not have focus initially');
- // Simulate a same-document load to the text fragment
- location.hash = '#some-hash-to-trigger-hashchange:~:text=foo';
+ // Simulate pressing TAB to shift focus to the next element
+ await test_driver.send_keys(document.body, '\uE004'); // '\uE004' is the WebDriver key code for TAB
+
+ // Assert that the next focusable element (button) has focus
+ assert_equals(document.activeElement, nextButton, 'Next focusable element should have focus after pressing TAB');
}, 'Text Fragment focus behavior');
</script>
</body>
diff --git a/tests/wpt/tests/selection/move-paragraphboundary-cross-editing-boundary.tentative.html b/tests/wpt/tests/selection/move-paragraphboundary-cross-editing-boundary.tentative.html
new file mode 100644
index 00000000000..552b8aecb66
--- /dev/null
+++ b/tests/wpt/tests/selection/move-paragraphboundary-cross-editing-boundary.tentative.html
@@ -0,0 +1,28 @@
+<!doctype html>
+<meta charset="utf-8">
+<link rel="author" title="Peng Zhou" href="mailto:zhoupeng.1996@bytedance.com">
+<link rel="help" href="https://github.com/w3c/selection-api/issues/179">
+<link rel="help" href="https://issues.chromium.org/issues/41484126">
+<title>Selection.modify(): move by paragraphboundary cross editing boundary</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<div contenteditable>this <a contenteditable="false">link</a> after</div>
+<script>
+const selection = getSelection();
+const editable = document.querySelector('div');
+function runTest() {
+ selection.collapse(editable.childNodes[2], 6);
+ selection.modify('move', 'backward', 'paragraphboundary');
+ assert_equals(selection.anchorNode.nodeValue, 'this ');
+ assert_equals(selection.anchorOffset, 0);
+}
+
+test(() => {
+ runTest();
+}, 'cross editing boundary');
+
+test(() => {
+ editable.setAttribute('contenteditable', true);
+ runTest();
+});
+</script> \ No newline at end of file
diff --git a/tests/wpt/tests/selection/selection-content-visibility-hidden.html b/tests/wpt/tests/selection/selection-content-visibility-hidden.html
new file mode 100644
index 00000000000..a44b23f6b76
--- /dev/null
+++ b/tests/wpt/tests/selection/selection-content-visibility-hidden.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="utf-8">
+ <title>Test content-visibility:hidden text is not selected</title>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+</head>
+<body>
+ <p style="content-visibility: hidden;">This is hidden text.</p>
+
+ <script>
+ promise_test(async t => {
+ const range = document.createRange();
+ range.selectNodeContents(document.body);
+ const selection = window.getSelection();
+ selection.addRange(range);
+
+ const selectedText = selection.toString().trim();
+ assert_equals(selectedText, '', 'Text with content-visibility: hidden should not be selected');
+ }, 'Text with content-visibility: hidden is not selected');
+ </script>
+</body>
+</html>
diff --git a/tests/wpt/tests/selection/selection-nested-video.html b/tests/wpt/tests/selection/selection-nested-video.html
index 9777d7d9927..7565665a7c8 100644
--- a/tests/wpt/tests/selection/selection-nested-video.html
+++ b/tests/wpt/tests/selection/selection-nested-video.html
@@ -18,8 +18,10 @@ async_test(t => {
assert_equals(sel.focusOffset, 0);
t.done();
})
-});
+}, 'selection have the same anchor and focus nodes because b and c are in different tree scopes.');
+
</script>
<div id="a">A</div>
<video>
-<video id="b">
+ <video id="b"></video>
+</video>
diff --git a/tests/wpt/tests/selection/shadow-dom/select-later-become-slotted-content.html b/tests/wpt/tests/selection/shadow-dom/select-later-become-slotted-content.tentative.html
index f38105dd0bb..f38105dd0bb 100644
--- a/tests/wpt/tests/selection/shadow-dom/select-later-become-slotted-content.html
+++ b/tests/wpt/tests/selection/shadow-dom/select-later-become-slotted-content.tentative.html
diff --git a/tests/wpt/tests/serial/requestPort/sandboxed_iframe.https.window.js b/tests/wpt/tests/serial/requestPort/sandboxed_iframe.https.window.js
index f6d7abad103..763cdefa067 100644
--- a/tests/wpt/tests/serial/requestPort/sandboxed_iframe.https.window.js
+++ b/tests/wpt/tests/serial/requestPort/sandboxed_iframe.https.window.js
@@ -14,9 +14,7 @@ promise_test(async (t) => {
window.addEventListener('message', t.step_func(messageEvent => {
// The failure message of no device chosen is expected. The point here is
// to validate not failing because of a sandboxed iframe.
- assert_equals(
- 'FAIL: NotFoundError: Failed to execute \'requestPort\' on \'Serial\': No port selected by the user.',
- messageEvent.data);
+ assert_true(messageEvent.data.includes('NotFoundError'));
resolve();
}));
iframe.contentWindow.postMessage({type: 'RequestPort'}, '*');
diff --git a/tests/wpt/tests/shadow-dom/leaktests/selection.html b/tests/wpt/tests/shadow-dom/leaktests/selection.html
new file mode 100644
index 00000000000..62509317667
--- /dev/null
+++ b/tests/wpt/tests/shadow-dom/leaktests/selection.html
@@ -0,0 +1,53 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta name='author' title='weizman' href='https://www.weizmangal.com'>
+<meta name='assert' content='Shadow DOM should not leak via Selection API'>
+<link rel='help' href='https://w3c.github.io/webcomponents/spec/shadow/'>
+<script src='/resources/testharness.js'></script>
+<script src='/resources/testharnessreport.js'></script>
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-actions.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
+</head>
+<body>
+<div id='log'></div>
+<div id='container'></div>
+</body>
+<script>
+ 'use strict';
+
+ const container = document.getElementById('container');
+
+ function reset(text) {
+ const host = container.appendChild(document.createElement('div'));
+ const shadow = host.attachShadow({mode: 'closed'});
+ const child = shadow.appendChild(document.createElement('span'));
+ child.textContent = text;
+ return host;
+ }
+
+ async function select(t, target) {
+ const event_watcher = new EventWatcher(t, target, ["mouseup"]);
+ const actions_promise = new test_driver.Actions()
+ .pointerMove(0, 0, {origin: target})
+ .pointerDown()
+ .pointerMove(100, 0, {origin: target})
+ .pointerUp()
+ .send();
+ t.add_cleanup(() => actions_promise);
+ const event = await event_watcher.wait_for(["mouseup"]);
+ assert_equals(event.type, "mouseup");
+ assert_equals(event.target, target);
+ }
+
+ promise_test(async (t) => {
+ const text = 'text_inside_shadow';
+ const host = reset(text);
+ await select(t, host);
+ const node = getSelection().anchorNode;
+ assert_equals(node, container, 'getSelection().anchorNode should return the host of the shadow');
+ assert_not_equals(node.textContent, text, 'getSelection().anchorNode textContent should not be the text contents of an element inside the shadow root');
+ }, 'selection API should not leak nodes in Shadow DOM.');
+</script>
+</html>
diff --git a/tests/wpt/tests/shadow-dom/selection-getComposedRanges-collapsed.tentative.html b/tests/wpt/tests/shadow-dom/selection-getComposedRanges-collapsed.tentative.html
new file mode 100644
index 00000000000..6af01fd8e0f
--- /dev/null
+++ b/tests/wpt/tests/shadow-dom/selection-getComposedRanges-collapsed.tentative.html
@@ -0,0 +1,81 @@
+<!DOCTYPE html>
+<html>
+<body>
+<meta name="author" href="mailto:dizhangg@chromium.org">
+<meta name="assert" content="Selection's getComposedRanges should return a sequence of static ranges">
+<link rel="help" href="https://w3c.github.io/selection-api/#dom-selection-getcomposedranges">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<div id="container">
+ <div id="host1">
+ <template shadowrootmode=open>C</template>
+ A - not slotted
+ </div>
+ <div id="host2">
+ <template shadowrootmode=open>D</template>
+ <div id=b>B - not slotted</div>
+ </div>
+</div>
+
+<script>
+
+const c = host1.shadowRoot;
+const d = host2.shadowRoot;
+
+test(() => {
+ const sel = getSelection();
+ sel.setBaseAndExtent(b, 0, c, 0);
+ assert_equals(sel.getRangeAt(0).startContainer, b);
+ assert_equals(sel.getRangeAt(0).startOffset, 0);
+ assert_equals(sel.getRangeAt(0).endContainer, b);
+ assert_equals(sel.getRangeAt(0).endOffset, 0);
+
+ assert_equals(sel.getComposedRanges()[0].startContainer, b);
+ assert_equals(sel.getComposedRanges()[0].startOffset, 0);
+ assert_equals(sel.getComposedRanges()[0].endContainer, b);
+ assert_equals(sel.getComposedRanges()[0].endOffset, 0);
+}, 'Setting the range to nodes that aren\'t in the same tree collapses both composed and non-composed ranges.');
+
+test(() => {
+ const sel = getSelection();
+ sel.setBaseAndExtent(c, 0, d, 0);
+
+ assert_equals(sel.getRangeAt(0).startContainer, d);
+ assert_equals(sel.getRangeAt(0).startOffset, 0);
+ assert_equals(sel.getRangeAt(0).endContainer, d);
+ assert_equals(sel.getRangeAt(0).endOffset, 0);
+
+ assert_equals(sel.getComposedRanges()[0].startContainer, container);
+ assert_equals(sel.getComposedRanges()[0].startOffset, 1);
+ assert_equals(sel.getComposedRanges()[0].endContainer, container);
+ assert_equals(sel.getComposedRanges()[0].endOffset, 4);
+
+ assert_equals(sel.getComposedRanges(c)[0].startContainer, c);
+ assert_equals(sel.getComposedRanges(c)[0].startOffset, 0);
+ assert_equals(sel.getComposedRanges(c)[0].endContainer, container);
+ assert_equals(sel.getComposedRanges(c)[0].endOffset, 4);
+
+ assert_equals(sel.getComposedRanges(d)[0].startContainer, container);
+ assert_equals(sel.getComposedRanges(d)[0].startOffset, 1);
+ assert_equals(sel.getComposedRanges(d)[0].endContainer, d);
+ assert_equals(sel.getComposedRanges(d)[0].endOffset, 0);
+
+ assert_equals(sel.getComposedRanges(c, d)[0].startContainer, c);
+ assert_equals(sel.getComposedRanges(c, d)[0].startOffset, 0);
+ assert_equals(sel.getComposedRanges(c, d)[0].endContainer, d);
+ assert_equals(sel.getComposedRanges(c, d)[0].endOffset, 0);
+
+ // Re-setting the same range should never change the output
+ sel.setBaseAndExtent(c, 0, d, 0);
+ assert_equals(sel.getRangeAt(0).startContainer, d);
+ assert_equals(sel.getRangeAt(0).startOffset, 0);
+ assert_equals(sel.getRangeAt(0).endContainer, d);
+ assert_equals(sel.getRangeAt(0).endOffset, 0);
+
+ assert_equals(sel.getComposedRanges(c, d)[0].startContainer, c);
+ assert_equals(sel.getComposedRanges(c, d)[0].startOffset, 0);
+ assert_equals(sel.getComposedRanges(c, d)[0].endContainer, d);
+ assert_equals(sel.getComposedRanges(c, d)[0].endOffset, 0);
+}, 'Setting the range to nodes in different shadow trees collapses ordinary ranges, but does not collapse composed ranges.');
+</script>
diff --git a/tests/wpt/tests/shadow-dom/selection-getComposedRanges.tentative.html b/tests/wpt/tests/shadow-dom/selection-getComposedRanges.tentative.html
index 983328693c6..9d5fa761627 100644
--- a/tests/wpt/tests/shadow-dom/selection-getComposedRanges.tentative.html
+++ b/tests/wpt/tests/shadow-dom/selection-getComposedRanges.tentative.html
@@ -3,7 +3,7 @@
<body>
<meta name="author" title="Ryosuke Niwa" href="mailto:rniwa@webkit.org">
<meta name="assert" content="Selection's getComposedRanges should return a sequence of static ranges">
-<link rel="help" href="https://w3c.github.io/selection-api/#dom-selection-getcomposedrange">
+<link rel="help" href="https://w3c.github.io/selection-api/#dom-selection-getcomposedranges">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<div id="container"></div>
@@ -15,6 +15,17 @@ test(() => {
}, 'getComposedRanges returns an empty sequence when there is no selection');
test(() => {
+ container.innerHTML = 'hello, world';
+ getSelection().setBaseAndExtent(container.firstChild, 0, container.firstChild, 5);
+ try {
+ getSelection().getComposedRanges(container);
+ assert_unreached('executed without error; want error');
+ } catch (e) {
+ assert_equals(e.message, "Failed to execute 'getComposedRanges' on 'Selection': parameter 1 is not of type 'ShadowRoot'.");
+ }
+}, 'getComposedRanges should fail if argument is not a shadow root');
+
+test(() => {
container.innerHTML = 'hello, world';
getSelection().setBaseAndExtent(container.firstChild, 0, container.firstChild, 5);
const ranges = getSelection().getComposedRanges();
@@ -38,6 +49,7 @@ test(() => {
test(() => {
container.innerHTML = 'a<div id="host"></div>b';
+ const host = container.querySelector('#host');
const shadowRoot = host.attachShadow({mode: 'closed'});
shadowRoot.innerHTML = 'hello, world';
getSelection().setBaseAndExtent(shadowRoot.firstChild, 0, shadowRoot.firstChild, 5);
@@ -51,6 +63,7 @@ test(() => {
test(() => {
container.innerHTML = 'a<div id="host"></div>b';
+ const host = container.querySelector('#host');
const shadowRoot = host.attachShadow({mode: 'closed'});
shadowRoot.innerHTML = 'hello, world';
getSelection().setBaseAndExtent(shadowRoot.firstChild, 0, shadowRoot.firstChild, 5);
@@ -64,6 +77,7 @@ test(() => {
test(() => {
container.innerHTML = 'a<div id="host"></div>b';
+ const host = container.querySelector('#host');
const shadowRoot = host.attachShadow({mode: 'closed'});
shadowRoot.innerHTML = 'hello, world';
getSelection().setBaseAndExtent(shadowRoot.firstChild, 7, container, 2);
@@ -77,6 +91,7 @@ test(() => {
test(() => {
container.innerHTML = 'a<div id="host"></div>b';
+ const host = container.querySelector('#host');
const shadowRoot = host.attachShadow({mode: 'closed'});
shadowRoot.innerHTML = 'hello, world';
getSelection().setBaseAndExtent(shadowRoot.firstChild, 7, container, 2);
@@ -90,6 +105,7 @@ test(() => {
test(() => {
container.innerHTML = 'a<div id="outerHost"></div>b';
+ const outerHost = container.querySelector('#outerHost');
const outerShadowRoot = outerHost.attachShadow({mode: 'closed'});
outerShadowRoot.innerHTML = '<div id="innerHost">hello</div><div>world</div>';
const innerHost = outerShadowRoot.getElementById('innerHost');
@@ -106,6 +122,7 @@ test(() => {
test(() => {
container.innerHTML = 'a<div id="outerHost"></div>b';
+ const outerHost = container.querySelector('#outerHost');
const outerShadowRoot = outerHost.attachShadow({mode: 'closed'});
outerShadowRoot.innerHTML = '<div id="innerHost">hello</div><div>world</div>';
const innerHost = outerShadowRoot.getElementById('innerHost');
@@ -122,6 +139,7 @@ test(() => {
test(() => {
container.innerHTML = 'a<div id="outerHost"></div>b';
+ const outerHost = container.querySelector('#outerHost');
const outerShadowRoot = outerHost.attachShadow({mode: 'closed'});
outerShadowRoot.innerHTML = '<div id="innerHost">hello</div><div>world</div>';
const innerHost = outerShadowRoot.getElementById('innerHost');
@@ -136,6 +154,23 @@ test(() => {
assert_equals(ranges[0].endOffset, 1);
}, 'getComposedRanges returns a sequence with a static range pointing to the outer shadow tree when there is a selection in an inner shadow tree and the outer shadow tree is specified as an argument');
+test(() => {
+ container.innerHTML = 'a<div id="outerHost"></div>b';
+ const outerHost = container.querySelector('#outerHost');
+ const outerShadowRoot = outerHost.attachShadow({mode: 'closed'});
+ outerShadowRoot.innerHTML = '<div id="innerHost">hello</div><div>world</div>';
+ const innerHost = outerShadowRoot.getElementById('innerHost');
+ const innerShadowRoot = innerHost.attachShadow({mode: 'closed'});
+ innerShadowRoot.innerHTML = 'some text';
+ getSelection().setBaseAndExtent(container.firstChild, 0, outerShadowRoot, 0);
+ const ranges = getSelection().getComposedRanges(innerShadowRoot);
+ assert_equals(ranges.length, 1);
+ assert_equals(ranges[0].startContainer, container.firstChild, "A");
+ assert_equals(ranges[0].startOffset, 0, "B");
+ assert_equals(ranges[0].endContainer, outerShadowRoot, "C");
+ assert_equals(ranges[0].endOffset, 0, "D");
+}, 'getComposedRanges returns a sequence with a static range without rescoping when there is a selection in an outer shadow tree and the inner shadow tree is specified as an argument');
+
</script>
</body>
</html>
diff --git a/tests/wpt/tests/shared-storage-selecturl-limit/run-url-selection-operation-limit-multiple-sites.tentative.https.sub.html b/tests/wpt/tests/shared-storage-selecturl-limit/run-url-selection-operation-limit-multiple-sites.tentative.https.sub.html
index b71c368704b..bc27ccae485 100644
--- a/tests/wpt/tests/shared-storage-selecturl-limit/run-url-selection-operation-limit-multiple-sites.tentative.https.sub.html
+++ b/tests/wpt/tests/shared-storage-selecturl-limit/run-url-selection-operation-limit-multiple-sites.tentative.https.sub.html
@@ -11,14 +11,9 @@
<script>
'use strict';
-function getCrossSiteURL(url) {
- return new URL(url.toString().replace(location.origin,
- get_host_info().HTTPS_NOTSAMESITE_ORIGIN));
-}
-
promise_test(async () => {
const ancestorKey = token();
- const perOriginBitLimit = 6;
+ const perOriginBitLimit = 3;
const bitsKey = "bits";
let url0 = generateURL(
@@ -26,7 +21,7 @@ promise_test(async () => {
"resources/run-url-selection-operation-limit-inner.https.html",
[ancestorKey]);
- // The per site per pageload limit is 6 bits.
+ // We have set the per site per pageload limit to 3 bits.
url0.searchParams.append(bitsKey, perOriginBitLimit.toString());
attachIFrame(url0);
const result0 = await nextValueFromServer(ancestorKey);
@@ -38,9 +33,10 @@ promise_test(async () => {
[ancestorKey]);
// The overall pageload budget should have 3 bits remaining, as we have set
- // it to start at 9.
+ // it to start at 6.
url1.searchParams.append(bitsKey, "3");
- url1 = getCrossSiteURL(url1);
+ const crossOrigin1 = get_host_info().HTTPS_NOTSAMESITE_ORIGIN;
+ url1 = updateUrlToUseNewOrigin(url1, crossOrigin1);
attachIFrame(url1);
const result1 = await nextValueFromServer(ancestorKey);
assert_equals(result1, "run_url_selection_limit_inner_succeeded");
@@ -50,11 +46,12 @@ promise_test(async () => {
"resources/run-url-selection-operation-limit-inner.https.html",
[ancestorKey]);
- // Since the overall per pageload limit is 9 bits here, it should have
+ // Since the overall per pageload limit is 6 bits here, it should have
// already been reached, even though `url2`'s site should have 3 bits
- // remaining in the per-site budget, since it is same-site with `url1`.
+ // remaining in the per-site budget.
url2.searchParams.append(bitsKey, "0");
- url2 = getCrossSiteURL(url2);
+ const crossOrigin2 = get_host_info().OTHER_ORIGIN;
+ url2 = updateUrlToUseNewOrigin(url2, crossOrigin2);
attachIFrame(url2);
const result2 = await nextValueFromServer(ancestorKey);
assert_equals(result2, "run_url_selection_limit_inner_succeeded");
diff --git a/tests/wpt/tests/shared-storage-selecturl-limit/run-url-selection-operation-limit.tentative.https.sub.html b/tests/wpt/tests/shared-storage-selecturl-limit/run-url-selection-operation-limit.tentative.https.sub.html
index b8f8d5a4bf0..5989aa160bc 100644
--- a/tests/wpt/tests/shared-storage-selecturl-limit/run-url-selection-operation-limit.tentative.https.sub.html
+++ b/tests/wpt/tests/shared-storage-selecturl-limit/run-url-selection-operation-limit.tentative.https.sub.html
@@ -12,7 +12,7 @@
promise_test(async () => {
const ancestorKey = token();
- const perOriginBitLimit = 6;
+ const perOriginBitLimit = 3;
const numUrls = 8;
const urls = generateUrls(numUrls, "/shared-storage/resources/frame",
[ancestorKey]);
diff --git a/tests/wpt/tests/shared-storage-selecturl-limit/select-url-limit-multiple-worklets.tentative.https.sub.html b/tests/wpt/tests/shared-storage-selecturl-limit/select-url-limit-multiple-worklets.tentative.https.sub.html
index c0eedc6f5fa..62cbe7a90ff 100644
--- a/tests/wpt/tests/shared-storage-selecturl-limit/select-url-limit-multiple-worklets.tentative.https.sub.html
+++ b/tests/wpt/tests/shared-storage-selecturl-limit/select-url-limit-multiple-worklets.tentative.https.sub.html
@@ -12,7 +12,7 @@
promise_test(async () => {
const ancestorKey = token();
- const perOriginBitLimit = 6;
+ const perOriginBitLimit = 3;
const numUrls = 8;
const urls = generateUrls(numUrls, "/shared-storage/resources/frame",
[ancestorKey]);
diff --git a/tests/wpt/tests/shared-storage/add-module-cross-origin-script.tentative.https.sub.html b/tests/wpt/tests/shared-storage/add-module-cross-origin-script.tentative.https.sub.html
new file mode 100644
index 00000000000..6ac73bdeddc
--- /dev/null
+++ b/tests/wpt/tests/shared-storage/add-module-cross-origin-script.tentative.https.sub.html
@@ -0,0 +1,40 @@
+<!doctype html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/utils.js"></script>
+<script src="/shared-storage/resources/util.js"></script>
+<script src="/fenced-frame/resources/utils.js"></script>
+
+<body>
+<script>
+'use strict';
+
+promise_test(async t => {
+ const sameOrigin = location.origin;
+ const crossOrigin = 'https://{{domains[www]}}:{{ports[https][0]}}';
+ const crossOriginScript = crossOrigin
+ + "/shared-storage/resources/simple-module2.js";
+ await sharedStorage.worklet.addModule(crossOriginScript);
+
+ const ancestor_key = token();
+ let url0 = generateURL("/shared-storage/resources/frame0.html",
+ [ancestor_key]);
+ let select_url_result = await sharedStorage.selectURL(
+ "test-url-selection-operation", [{url: url0}],
+ {data: {'mockResult': 0, 'setKey': 'a', 'setValue': 'b'},
+ resolveToConfig: true});
+ assert_true(validateSelectURLResult(select_url_result, true));
+ attachFencedFrame(select_url_result, 'opaque-ads');
+ const result = await nextValueFromServer(ancestor_key);
+ assert_equals(result, "frame0_loaded");
+
+ // The invoking context's origin is used as the data origin.
+ await verifyKeyValueForOrigin('a', 'b', sameOrigin);
+ await verifyKeyNotFoundForOrigin('a', crossOrigin);
+
+ // Clean up.
+ return sharedStorage.delete('a');
+}, 'addModule with cross-origin url');
+
+</script>
+</body>
diff --git a/tests/wpt/tests/shared-storage/add-module-or-create-worklet-with-data-url.tentative.https.sub.html b/tests/wpt/tests/shared-storage/add-module-or-create-worklet-with-data-url.tentative.https.sub.html
new file mode 100644
index 00000000000..54816507334
--- /dev/null
+++ b/tests/wpt/tests/shared-storage/add-module-or-create-worklet-with-data-url.tentative.https.sub.html
@@ -0,0 +1,42 @@
+<!doctype html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<body>
+<script>
+'use strict';
+
+promise_test(async t => {
+ // Loading the worklet script uses CORS, which doesn't support the data
+ // scheme.
+ return promise_rejects_dom(t, "OperationError",
+ sharedStorage.worklet.addModule(
+ `data:application/javascript;alert("Hi!")`));
+}, 'addModule() with data URL module script');
+
+promise_test(async t => {
+ // Loading the worklet script uses CORS, which doesn't support the data
+ // scheme.
+ return promise_rejects_dom(t, "OperationError",
+ sharedStorage.createWorklet(
+ `data:application/javascript;alert("Hi!")`));
+}, 'createWorklet() with data URL module script and default data origin');
+
+promise_test(async t => {
+ // Loading the worklet script uses CORS, which doesn't support the data
+ // scheme.
+ return promise_rejects_dom(t, "OperationError",
+ sharedStorage.createWorklet(
+ `data:application/javascript;alert("Hi!")`,
+ { dataOrigin: "context-origin" }));
+}, 'createWorklet() with data URL module script and dataOrigin "context-origin"');
+
+promise_test(async t => {
+ // Opaque data origins are not permitted.
+ return promise_rejects_dom(t, "InvalidAccessError",
+ sharedStorage.createWorklet(
+ `data:application/javascript;alert("Hi!")`,
+ { dataOrigin: "script-origin" }));
+}, 'createWorklet() with data URL module script and dataOrigin "script-origin"');
+</script>
+</body>
diff --git a/tests/wpt/tests/shared-storage/add-module.tentative.https.sub.html b/tests/wpt/tests/shared-storage/add-module.tentative.https.sub.html
index 7859e750c96..33ff70d1145 100644
--- a/tests/wpt/tests/shared-storage/add-module.tentative.https.sub.html
+++ b/tests/wpt/tests/shared-storage/add-module.tentative.https.sub.html
@@ -11,11 +11,6 @@ promise_test(async t => {
sharedStorage.worklet.addModule("https://"));
}, 'addModule with invalid url');
-promise_test(async t => {
- return promise_rejects_dom(t, "DataError",
- sharedStorage.worklet.addModule("https://foo.com"));
-}, 'addModule with cross-origin url');
-
promise_test(() => {
return sharedStorage.worklet.addModule(
"/shared-storage/resources/simple-module.js");
diff --git a/tests/wpt/tests/shared-storage/cross-origin-create-worklet-credentials-include.tentative.https.sub.html b/tests/wpt/tests/shared-storage/cross-origin-create-worklet-credentials-include.tentative.https.sub.html
index 4c0e91c1561..3b73f92d311 100644
--- a/tests/wpt/tests/shared-storage/cross-origin-create-worklet-credentials-include.tentative.https.sub.html
+++ b/tests/wpt/tests/shared-storage/cross-origin-create-worklet-credentials-include.tentative.https.sub.html
@@ -9,7 +9,8 @@
<script>
'use strict';
-promise_test(async () => {
+async function verifyStoreCookieCrossOriginCreateWorkletIncludeCredentials(
+ helper_url_params, data_origin_option) {
const ancestor_key = token();
const crossOrigin = 'https://{{domains[www]}}:{{ports[https][0]}}';
const set_cookie_url = crossOrigin + `/cookies/resources/set-cookie.py` +
@@ -17,16 +18,15 @@ promise_test(async () => {
`&path=/shared-storage/`;
const helper_url = crossOrigin +
`/shared-storage/resources/credentials-test-helper.py` +
- `?access_control_allow_origin_header=${window.origin}` +
- `&access_control_allow_credentials_header=true` +
- `&shared_storage_cross_origin_worklet_allowed_header=?1` +
- `&token=${ancestor_key}`;
+ helper_url_params + `&token=${ancestor_key}`;
await fetch(set_cookie_url, { mode: 'no-cors', credentials: 'include' });
+ const options = (data_origin_option === '') ? { credentials: "include" }
+ : { credentials: "include", dataOrigin: data_origin_option };
+
const worklet = await sharedStorage.createWorklet(
- helper_url + `&action=store-cookie`,
- { credentials: "include" });
+ helper_url + `&action=store-cookie`, options);
const request_cookie_fetch_response =
await fetch(helper_url + `&action=get-cookie`);
@@ -34,7 +34,38 @@ promise_test(async () => {
const request_cookie_text = await request_cookie_fetch_response.text();
assert_equals(request_cookie_text, "key0=1");
-}, 'createWorklet() with cross-origin module script and credentials "include"');
+}
+
+promise_test(async () => {
+ const helper_url_params =
+ `?access_control_allow_origin_header=${window.origin}` +
+ `&access_control_allow_credentials_header=true`;
+
+ await verifyStoreCookieCrossOriginCreateWorkletIncludeCredentials(
+ helper_url_params, /*data_origin_option=*/'');
+}, 'createWorklet() with cross-origin module script, credentials "include",'
+ + 'and default data origin (context origin).');
+
+promise_test(async () => {
+ const helper_url_params =
+ `?access_control_allow_origin_header=${window.origin}` +
+ `&access_control_allow_credentials_header=true`;
+
+ await verifyStoreCookieCrossOriginCreateWorkletIncludeCredentials(
+ helper_url_params, /*data_origin_option=*/'context-origin');
+}, 'createWorklet() with cross-origin module script, credentials "include",'
+ + 'and "context-origin" as dataOrigin.');
+
+promise_test(async () => {
+ const helper_url_params =
+ `?access_control_allow_origin_header=${window.origin}` +
+ `&access_control_allow_credentials_header=true` +
+ `&shared_storage_cross_origin_worklet_allowed_header=?1`;
+
+ await verifyStoreCookieCrossOriginCreateWorkletIncludeCredentials(
+ helper_url_params, /*data_origin_option=*/'script-origin');
+}, 'createWorklet() with cross-origin module script, credentials "include",'
+ + 'and "script-origin" as dataOrigin.');
</script>
</body>
diff --git a/tests/wpt/tests/shared-storage/cross-origin-create-worklet-credentials-omit.tentative.https.sub.html b/tests/wpt/tests/shared-storage/cross-origin-create-worklet-credentials-omit.tentative.https.sub.html
index 86b56ce80d6..4f23e2f8de3 100644
--- a/tests/wpt/tests/shared-storage/cross-origin-create-worklet-credentials-omit.tentative.https.sub.html
+++ b/tests/wpt/tests/shared-storage/cross-origin-create-worklet-credentials-omit.tentative.https.sub.html
@@ -9,7 +9,8 @@
<script>
'use strict';
-promise_test(async () => {
+async function verifyStoreCookieCrossOriginCreateWorkletOmitCredentials(
+ helper_url_params, data_origin_option) {
const ancestor_key = token();
const crossOrigin = 'https://{{domains[www]}}:{{ports[https][0]}}';
const set_cookie_url = crossOrigin + `/cookies/resources/set-cookie.py` +
@@ -17,15 +18,15 @@ promise_test(async () => {
`&path=/shared-storage/`;
const helper_url = crossOrigin +
`/shared-storage/resources/credentials-test-helper.py` +
- `?access_control_allow_origin_header=${window.origin}` +
- `&shared_storage_cross_origin_worklet_allowed_header=?1` +
- `&token=${ancestor_key}`;
+ helper_url_params + `&token=${ancestor_key}`;
await fetch(set_cookie_url, { mode: 'no-cors', credentials: 'include' });
+ const options = (data_origin_option === '') ? { credentials: "omit" }
+ : { credentials: "omit", dataOrigin: data_origin_option };
+
const worklet = await sharedStorage.createWorklet(
- helper_url + `&action=store-cookie`,
- { credentials: "omit" });
+ helper_url + `&action=store-cookie`, options);
const request_cookie_fetch_response =
await fetch(helper_url + `&action=get-cookie`);
@@ -33,7 +34,38 @@ promise_test(async () => {
const request_cookie_text = await request_cookie_fetch_response.text();
assert_equals(request_cookie_text, "NO_COOKIE_HEADER");
-}, 'createWorklet() with cross-origin module script and credentials "omit"');
+}
+
+promise_test(async () => {
+ const helper_url_params =
+ `?access_control_allow_origin_header=${window.origin}` +
+ `&access_control_allow_credentials_header=true`;
+
+ await verifyStoreCookieCrossOriginCreateWorkletOmitCredentials(
+ helper_url_params, /*data_origin_option=*/'');
+}, 'createWorklet() with cross-origin module script, credentials "omit",'
+ + 'and default data origin (context origin).');
+
+promise_test(async () => {
+ const helper_url_params =
+ `?access_control_allow_origin_header=${window.origin}` +
+ `&access_control_allow_credentials_header=true`;
+
+ await verifyStoreCookieCrossOriginCreateWorkletOmitCredentials(
+ helper_url_params, /*data_origin_option=*/'context-origin');
+}, 'createWorklet() with cross-origin module script, credentials "omit",'
+ + 'and "context-origin" as dataOrigin.');
+
+promise_test(async () => {
+ const helper_url_params =
+ `?access_control_allow_origin_header=${window.origin}` +
+ `&access_control_allow_credentials_header=true` +
+ `&shared_storage_cross_origin_worklet_allowed_header=?1`;
+
+ await verifyStoreCookieCrossOriginCreateWorkletOmitCredentials(
+ helper_url_params, /*data_origin_option=*/'script-origin');
+}, 'createWorklet() with cross-origin module script, credentials "omit",'
+ + 'and "script-origin" as dataOrigin.');
</script>
</body>
diff --git a/tests/wpt/tests/shared-storage/cross-origin-create-worklet-credentials-same-origin.tentative.https.sub.html b/tests/wpt/tests/shared-storage/cross-origin-create-worklet-credentials-same-origin.tentative.https.sub.html
index 0b8faad7830..bda5da10dbe 100644
--- a/tests/wpt/tests/shared-storage/cross-origin-create-worklet-credentials-same-origin.tentative.https.sub.html
+++ b/tests/wpt/tests/shared-storage/cross-origin-create-worklet-credentials-same-origin.tentative.https.sub.html
@@ -9,7 +9,8 @@
<script>
'use strict';
-promise_test(async () => {
+async function verifyStoreCookieCrossOriginCreateWorkletSameOriginCredentials(
+ helper_url_params, data_origin_option) {
const ancestor_key = token();
const crossOrigin = 'https://{{domains[www]}}:{{ports[https][0]}}';
const set_cookie_url = crossOrigin + `/cookies/resources/set-cookie.py` +
@@ -17,15 +18,15 @@ promise_test(async () => {
`&path=/shared-storage/`;
const helper_url = crossOrigin +
`/shared-storage/resources/credentials-test-helper.py` +
- `?access_control_allow_origin_header=${window.origin}` +
- `&shared_storage_cross_origin_worklet_allowed_header=?1` +
- `&token=${ancestor_key}`;
+ helper_url_params + `&token=${ancestor_key}`;
await fetch(set_cookie_url, { mode: 'no-cors', credentials: 'include' });
+ const options = (data_origin_option === '') ? { credentials: "same-origin" }
+ : { credentials: "same-origin", dataOrigin: data_origin_option };
+
const worklet = await sharedStorage.createWorklet(
- helper_url + `&action=store-cookie`,
- { credentials: "same-origin" });
+ helper_url + `&action=store-cookie`, options);
const request_cookie_fetch_response =
await fetch(helper_url + `&action=get-cookie`);
@@ -33,7 +34,38 @@ promise_test(async () => {
const request_cookie_text = await request_cookie_fetch_response.text();
assert_equals(request_cookie_text, "NO_COOKIE_HEADER");
-}, 'createWorklet() with cross-origin module script and credentials "same-origin"');
+}
+
+promise_test(async () => {
+ const helper_url_params =
+ `?access_control_allow_origin_header=${window.origin}` +
+ `&access_control_allow_credentials_header=true`;
+
+ await verifyStoreCookieCrossOriginCreateWorkletSameOriginCredentials(
+ helper_url_params, /*data_origin_option=*/'');
+}, 'createWorklet() with cross-origin module script, credentials "same-origin",'
+ + 'and default data origin (context origin).');
+
+promise_test(async () => {
+ const helper_url_params =
+ `?access_control_allow_origin_header=${window.origin}` +
+ `&access_control_allow_credentials_header=true`;
+
+ await verifyStoreCookieCrossOriginCreateWorkletSameOriginCredentials(
+ helper_url_params, /*data_origin_option=*/'context-origin');
+}, 'createWorklet() with cross-origin module script, credentials "same-origin",'
+ + 'and "context-origin" as dataOrigin.');
+
+promise_test(async () => {
+ const helper_url_params =
+ `?access_control_allow_origin_header=${window.origin}` +
+ `&access_control_allow_credentials_header=true` +
+ `&shared_storage_cross_origin_worklet_allowed_header=?1`;
+
+ await verifyStoreCookieCrossOriginCreateWorkletSameOriginCredentials(
+ helper_url_params, /*data_origin_option=*/'script-origin');
+}, 'createWorklet() with cross-origin module script, credentials "same-origin",'
+ + 'and "script-origin" as dataOrigin.');
</script>
</body>
diff --git a/tests/wpt/tests/shared-storage/cross-origin-create-worklet-failure-false-shared-storage-cross-origin-worklet-allowed.tentative.https.sub.html b/tests/wpt/tests/shared-storage/cross-origin-create-worklet-failure-false-shared-storage-cross-origin-worklet-allowed.tentative.https.sub.html
deleted file mode 100644
index db361776f63..00000000000
--- a/tests/wpt/tests/shared-storage/cross-origin-create-worklet-failure-false-shared-storage-cross-origin-worklet-allowed.tentative.https.sub.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<!doctype html>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/common/utils.js"></script>
-<script src="/shared-storage/resources/util.js"></script>
-<script src="/fenced-frame/resources/utils.js"></script>
-
-<body>
-<script>
-'use strict';
-
-promise_test(async t => {
- const ancestor_key = token();
- const crossOrigin = 'https://{{domains[www]}}:{{ports[https][0]}}';
- const helper_url = crossOrigin +
- `/shared-storage/resources/credentials-test-helper.py` +
- `?access_control_allow_origin_header=${window.origin}` +
- `&access_control_allow_credentials_header=true` +
- `&shared_storage_cross_origin_worklet_allowed_header=?0` +
- `&token=${ancestor_key}`;
-
- return promise_rejects_dom(t, "OperationError",
- sharedStorage.createWorklet(
- helper_url + `&action=store-cookie`,
- { credentials: "include" }));
-}, 'createWorklet() with cross-origin module script and credentials ' +
- '"include", and with the Shared-Storage-Cross-Origin-Worklet-Allowed ' +
- 'response header value set to false (?0)');
-
-</script>
-</body>
diff --git a/tests/wpt/tests/shared-storage/cross-origin-create-worklet-failure-missing-access-control-allow-credentials.tentative.https.sub.html b/tests/wpt/tests/shared-storage/cross-origin-create-worklet-failure-missing-access-control-allow-credentials.tentative.https.sub.html
index 8887aad64dc..49ffe8e8426 100644
--- a/tests/wpt/tests/shared-storage/cross-origin-create-worklet-failure-missing-access-control-allow-credentials.tentative.https.sub.html
+++ b/tests/wpt/tests/shared-storage/cross-origin-create-worklet-failure-missing-access-control-allow-credentials.tentative.https.sub.html
@@ -9,22 +9,53 @@
<script>
'use strict';
+const crossOrigin = 'https://{{domains[www]}}:{{ports[https][0]}}';
+
promise_test(async t => {
const ancestor_key = token();
- const crossOrigin = 'https://{{domains[www]}}:{{ports[https][0]}}';
const helper_url = crossOrigin +
`/shared-storage/resources/credentials-test-helper.py` +
`?access_control_allow_origin_header=${window.origin}` +
- `&shared_storage_cross_origin_worklet_allowed_header=?1` +
`&token=${ancestor_key}`;
return promise_rejects_dom(t, "OperationError",
sharedStorage.createWorklet(
helper_url + `&action=store-cookie`,
{ credentials: "include" }));
-}, 'createWorklet() with cross-origin module script and credentials ' +
- '"include", and without the Access-Control-Allow-Credentials response ' +
- 'header');
+}, 'createWorklet() with cross-origin module script, credentials ' +
+ '"include", default data origin (context origin), and without the ' +
+ 'Access-Control-Allow-Credentials response header');
+
+promise_test(async t => {
+ const ancestor_key = token();
+ const helper_url = crossOrigin +
+ `/shared-storage/resources/credentials-test-helper.py` +
+ `?access_control_allow_origin_header=${window.origin}` +
+ `&token=${ancestor_key}`;
+
+ return promise_rejects_dom(t, "OperationError",
+ sharedStorage.createWorklet(
+ helper_url + `&action=store-cookie`,
+ { credentials: "include", dataOrigin: "context-origin" }));
+}, 'createWorklet() with cross-origin module script, credentials ' +
+ '"include", "context-origin" as dataOrigin, and without the ' +
+ 'Access-Control-Allow-Credentials response header');
+
+promise_test(async t => {
+ const ancestor_key = token();
+ const helper_url = crossOrigin +
+ `/shared-storage/resources/credentials-test-helper.py` +
+ `?access_control_allow_origin_header=${window.origin}` +
+ `&shared_storage_cross_origin_worklet_allowed_header=?1` +
+ `&token=${ancestor_key}`;
+
+ return promise_rejects_dom(t, "OperationError",
+ sharedStorage.createWorklet(
+ helper_url + `&action=store-cookie`,
+ { credentials: "include", dataOrigin: "script-origin" }));
+}, 'createWorklet() with cross-origin module script, credentials ' +
+ '"include", "script-origin" as dataOrigin, and without the ' +
+ 'Access-Control-Allow-Credentials response header');
</script>
</body>
diff --git a/tests/wpt/tests/shared-storage/cross-origin-create-worklet-failure-missing-access-control-allow-origin.tentative.https.sub.html b/tests/wpt/tests/shared-storage/cross-origin-create-worklet-failure-missing-access-control-allow-origin.tentative.https.sub.html
index 58a2f3a77bb..e3154fd191e 100644
--- a/tests/wpt/tests/shared-storage/cross-origin-create-worklet-failure-missing-access-control-allow-origin.tentative.https.sub.html
+++ b/tests/wpt/tests/shared-storage/cross-origin-create-worklet-failure-missing-access-control-allow-origin.tentative.https.sub.html
@@ -9,21 +9,53 @@
<script>
'use strict';
+const crossOrigin = 'https://{{domains[www]}}:{{ports[https][0]}}';
+
promise_test(async t => {
const ancestor_key = token();
- const crossOrigin = 'https://{{domains[www]}}:{{ports[https][0]}}';
const helper_url = crossOrigin +
`/shared-storage/resources/credentials-test-helper.py` +
`&access_control_allow_credentials_header=true` +
- `&shared_storage_cross_origin_worklet_allowed_header=?1` +
`&token=${ancestor_key}`;
return promise_rejects_dom(t, "OperationError",
sharedStorage.createWorklet(
helper_url + `&action=store-cookie`,
{ credentials: "include" }));
-}, 'createWorklet() with cross-origin module script and credentials ' +
- '"include", and without the Access-Control-Allow-Origin response header');
+}, 'createWorklet() with cross-origin module script, credentials ' +
+ '"include", default data origin (context origin), and without ' +
+ 'Access-Control-Allow-Origin response header');
+
+promise_test(async t => {
+ const ancestor_key = token();
+ const helper_url = crossOrigin +
+ `/shared-storage/resources/credentials-test-helper.py` +
+ `&access_control_allow_credentials_header=true` +
+ `&token=${ancestor_key}`;
+
+ return promise_rejects_dom(t, "OperationError",
+ sharedStorage.createWorklet(
+ helper_url + `&action=store-cookie`,
+ { credentials: "include", dataOrigin: "context-origin" }));
+}, 'createWorklet() with cross-origin module script, credentials ' +
+ '"include", "context-origin" as dataOrigin, and without the ' +
+ 'Access-Control-Allow-Origin response header');
+
+promise_test(async t => {
+ const ancestor_key = token();
+ const helper_url = crossOrigin +
+ `/shared-storage/resources/credentials-test-helper.py` +
+ `&access_control_allow_credentials_header=true` +
+ `&shared_storage_cross_origin_worklet_allowed_header=?1` +
+ `&token=${ancestor_key}`;
+
+ return promise_rejects_dom(t, "OperationError",
+ sharedStorage.createWorklet(
+ helper_url + `&action=store-cookie`,
+ { credentials: "include", dataOrigin: "script-origin" }));
+}, 'createWorklet() with cross-origin module script, credentials ' +
+ '"include", "script-origin" as dataOrigin, and without the ' +
+ 'Access-Control-Allow-Origin response header');
</script>
</body>
diff --git a/tests/wpt/tests/shared-storage/cross-origin-create-worklet-failure-missing-shared-storage-cross-origin-worklet-allowed.tentative.https.sub.html b/tests/wpt/tests/shared-storage/cross-origin-create-worklet-failure-missing-shared-storage-cross-origin-worklet-allowed.tentative.https.sub.html
deleted file mode 100644
index 5b140a8141c..00000000000
--- a/tests/wpt/tests/shared-storage/cross-origin-create-worklet-failure-missing-shared-storage-cross-origin-worklet-allowed.tentative.https.sub.html
+++ /dev/null
@@ -1,30 +0,0 @@
-<!doctype html>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<script src="/common/utils.js"></script>
-<script src="/shared-storage/resources/util.js"></script>
-<script src="/fenced-frame/resources/utils.js"></script>
-
-<body>
-<script>
-'use strict';
-
-promise_test(async t => {
- const ancestor_key = token();
- const crossOrigin = 'https://{{domains[www]}}:{{ports[https][0]}}';
- const helper_url = crossOrigin +
- `/shared-storage/resources/credentials-test-helper.py` +
- `?access_control_allow_origin_header=${window.origin}` +
- `&access_control_allow_credentials_header=true` +
- `&token=${ancestor_key}`;
-
- return promise_rejects_dom(t, "OperationError",
- sharedStorage.createWorklet(
- helper_url + `&action=store-cookie`,
- { credentials: "include" }));
-}, 'createWorklet() with cross-origin module script and credentials ' +
- '"include", and without the Shared-Storage-Cross-Origin-Worklet-Allowed ' +
- 'response header');
-
-</script>
-</body>
diff --git a/tests/wpt/tests/shared-storage/cross-origin-create-worklet-false-shared-storage-cross-origin-worklet-allowed.tentative.https.sub.html b/tests/wpt/tests/shared-storage/cross-origin-create-worklet-false-shared-storage-cross-origin-worklet-allowed.tentative.https.sub.html
new file mode 100644
index 00000000000..0b8f8b9e23d
--- /dev/null
+++ b/tests/wpt/tests/shared-storage/cross-origin-create-worklet-false-shared-storage-cross-origin-worklet-allowed.tentative.https.sub.html
@@ -0,0 +1,66 @@
+<!doctype html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/utils.js"></script>
+<script src="/shared-storage/resources/util.js"></script>
+<script src="/fenced-frame/resources/utils.js"></script>
+
+<body>
+<script>
+'use strict';
+
+const crossOrigin = 'https://{{domains[www]}}:{{ports[https][0]}}';
+const helperUrlBase = crossOrigin +
+ `/shared-storage/resources/credentials-test-helper.py`;
+
+promise_test(async t => {
+ const ancestor_key = token();
+ const helper_url = helperUrlBase +
+ `?access_control_allow_origin_header=${window.origin}` +
+ `&access_control_allow_credentials_header=true` +
+ `&shared_storage_cross_origin_worklet_allowed_header=?0` +
+ `&token=${ancestor_key}`;
+
+ await sharedStorage.createWorklet(
+ helper_url + `&action=store-cookie`,
+ { credentials: "include" });
+}, 'createWorklet() with cross-origin module script, credentials ' +
+ '"include", default data origin (context origin), and with the ' +
+ 'Shared-Storage-Cross-Origin-Worklet-Allowed response header value ' +
+ 'set to false (?0)');
+
+promise_test(async t => {
+ const ancestor_key = token();
+ const helper_url = helperUrlBase +
+ `?access_control_allow_origin_header=${window.origin}` +
+ `&access_control_allow_credentials_header=true` +
+ `&shared_storage_cross_origin_worklet_allowed_header=?0` +
+ `&token=${ancestor_key}`;
+
+ await sharedStorage.createWorklet(
+ helper_url + `&action=store-cookie`,
+ { credentials: "include", dataOrigin: "context-origin" });
+}, 'createWorklet() with cross-origin module script, credentials ' +
+ '"include", "context-origin" as dataOrigin, and with the ' +
+ 'Shared-Storage-Cross-Origin-Worklet-Allowed response header value ' +
+ 'set to false (?0)');
+
+promise_test(async t => {
+ const ancestor_key = token();
+ const helper_url = helperUrlBase +
+ `?access_control_allow_origin_header=${window.origin}` +
+ `&access_control_allow_credentials_header=true` +
+ `&shared_storage_cross_origin_worklet_allowed_header=?0` +
+ `&token=${ancestor_key}`;
+
+ return promise_rejects_dom(t, "OperationError",
+ sharedStorage.createWorklet(
+ helper_url + `&action=store-cookie`,
+ { credentials: "include", dataOrigin: "script-origin" }));
+}, 'createWorklet() with cross-origin module script, credentials ' +
+ '"include", "script-origin" as dataOrigin, and with the ' +
+ 'Shared-Storage-Cross-Origin-Worklet-Allowed response header value ' +
+ 'set to false (?0)');
+
+</script>
+</body>
diff --git a/tests/wpt/tests/shared-storage/cross-origin-create-worklet-missing-shared-storage-cross-origin-worklet-allowed.tentative.https.sub.html b/tests/wpt/tests/shared-storage/cross-origin-create-worklet-missing-shared-storage-cross-origin-worklet-allowed.tentative.https.sub.html
new file mode 100644
index 00000000000..fe7333a6360
--- /dev/null
+++ b/tests/wpt/tests/shared-storage/cross-origin-create-worklet-missing-shared-storage-cross-origin-worklet-allowed.tentative.https.sub.html
@@ -0,0 +1,60 @@
+<!doctype html>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/common/utils.js"></script>
+<script src="/shared-storage/resources/util.js"></script>
+<script src="/fenced-frame/resources/utils.js"></script>
+
+<body>
+<script>
+'use strict';
+
+const crossOrigin = 'https://{{domains[www]}}:{{ports[https][0]}}';
+const helperUrlBase = crossOrigin +
+ `/shared-storage/resources/credentials-test-helper.py`;
+
+promise_test(async t => {
+ const ancestor_key = token();
+ const helper_url = helperUrlBase +
+ `?access_control_allow_origin_header=${window.origin}` +
+ `&access_control_allow_credentials_header=true` +
+ `&token=${ancestor_key}`;
+
+ await sharedStorage.createWorklet(
+ helper_url + `&action=store-cookie`,
+ { credentials: "include" });
+}, 'createWorklet() with cross-origin module script, credentials ' +
+ '"include", default data origin (context origin), and without the ' +
+ 'Shared-Storage-Cross-Origin-Worklet-Allowed response header');
+
+promise_test(async t => {
+ const ancestor_key = token();
+ const helper_url = helperUrlBase +
+ `?access_control_allow_origin_header=${window.origin}` +
+ `&access_control_allow_credentials_header=true` +
+ `&token=${ancestor_key}`;
+
+ await sharedStorage.createWorklet(
+ helper_url + `&action=store-cookie`,
+ { credentials: "include", dataOrigin: "context-origin" });
+}, 'createWorklet() with cross-origin module script, credentials ' +
+ '"include", "context-origin" as dataOrigin, and without the ' +
+ 'Shared-Storage-Cross-Origin-Worklet-Allowed response header');
+
+promise_test(async t => {
+ const ancestor_key = token();
+ const helper_url = helperUrlBase +
+ `?access_control_allow_origin_header=${window.origin}` +
+ `&access_control_allow_credentials_header=true` +
+ `&token=${ancestor_key}`;
+
+ return promise_rejects_dom(t, "OperationError",
+ sharedStorage.createWorklet(
+ helper_url + `&action=store-cookie`,
+ { credentials: "include", dataOrigin: "script-origin" }));
+}, 'createWorklet() with cross-origin module script, credentials ' +
+ '"include", "script-origin" as dataOrigin, and without the ' +
+ 'Shared-Storage-Cross-Origin-Worklet-Allowed response header');
+
+</script>
+</body>
diff --git a/tests/wpt/tests/shared-storage/cross-origin-worklet-select-url-and-verify-data-origin.tentative.https.sub.html b/tests/wpt/tests/shared-storage/cross-origin-worklet-select-url-and-verify-data-origin.tentative.https.sub.html
index 5b6b9d5f8f5..bc78433d8e9 100644
--- a/tests/wpt/tests/shared-storage/cross-origin-worklet-select-url-and-verify-data-origin.tentative.https.sub.html
+++ b/tests/wpt/tests/shared-storage/cross-origin-worklet-select-url-and-verify-data-origin.tentative.https.sub.html
@@ -9,14 +9,15 @@
<script>
'use strict';
-promise_test(async () => {
+async function createWorkletThenSelectUrlAndVerifyDataOrigin(data_origin_value) {
const crossOrigin = 'https://{{domains[www]}}:{{ports[https][0]}}';
const script_url = crossOrigin +
`/shared-storage/resources/simple-module.js`;
- const worklet = await sharedStorage.createWorklet(
- script_url,
- { credentials: "omit" });
+ const options = (data_origin_value === '') ? { credentials: "omit" } :
+ { credentials: "omit", dataOrigin: data_origin_value };
+
+ const worklet = await sharedStorage.createWorklet(script_url, options);
const ancestor_key = token();
let url0 = generateURL("/shared-storage/resources/frame0.html",
@@ -39,8 +40,27 @@ promise_test(async () => {
const result0 = await nextValueFromServer(ancestor_key);
assert_equals(result0, "frame0_loaded");
- await verifyKeyValueForOrigin('key0', 'value0', crossOrigin);
-}, 'For a cross-origin worklet, test selectURL() and verify its data origin');
+ const expectedDataOrigin = (data_origin_value === 'script-origin') ?
+ crossOrigin : location.origin;
+ await verifyKeyValueForOrigin('key0', 'value0', expectedDataOrigin);
+}
+
+promise_test(async () => {
+ await createWorkletThenSelectUrlAndVerifyDataOrigin(/*data_origin_value=*/'');
+}, 'For a cross-origin worklet with default data origin, test selectURL() ' +
+ 'and verify its data origin');
+
+promise_test(async () => {
+ await createWorkletThenSelectUrlAndVerifyDataOrigin(
+ /*data_origin_value=*/'context-origin');
+}, 'For a cross-origin worklet with dataOrigin "context-origin", test ' +
+ 'selectURL() and verify its data origin');
+
+promise_test(async () => {
+ await createWorkletThenSelectUrlAndVerifyDataOrigin(
+ /*data_origin_value=*/'script-origin');
+}, 'For a cross-origin worklet with dataOrigin "script-origin", test ' +
+ 'selectURL() and verify its data origin');
</script>
</body>
diff --git a/tests/wpt/tests/shared-storage/resources/cross-origin-worklet-in-sandboxed-frame-inner.https.sub.html b/tests/wpt/tests/shared-storage/resources/cross-origin-worklet-in-sandboxed-frame-inner.https.sub.html
index 498fda30780..f5e41c84d55 100644
--- a/tests/wpt/tests/shared-storage/resources/cross-origin-worklet-in-sandboxed-frame-inner.https.sub.html
+++ b/tests/wpt/tests/shared-storage/resources/cross-origin-worklet-in-sandboxed-frame-inner.https.sub.html
@@ -22,7 +22,7 @@ async function test() {
const worklet = await sharedStorage.createWorklet(
script_url,
- { credentials: "omit" });
+ { credentials: "omit", dataOrigin: "script-origin" });
let url0 = generateURL("/shared-storage/resources/frame0.html",
[ancestor_token]);
@@ -48,4 +48,4 @@ async function test() {
test();
</script>
-</body> \ No newline at end of file
+</body>
diff --git a/tests/wpt/tests/shared-storage/resources/simple-module2.js b/tests/wpt/tests/shared-storage/resources/simple-module2.js
new file mode 100644
index 00000000000..dd5f31f36e8
--- /dev/null
+++ b/tests/wpt/tests/shared-storage/resources/simple-module2.js
@@ -0,0 +1,20 @@
+// Copyright 2024 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+class TestURLSelectionOperation {
+ async run(urls, data) {
+ if (data && data.hasOwnProperty('setKey') &&
+ data.hasOwnProperty('setValue')) {
+ await sharedStorage.set(data['setKey'], data['setValue']);
+ }
+
+ if (data && data.hasOwnProperty('mockResult')) {
+ return data['mockResult'];
+ }
+
+ return -1;
+ }
+}
+
+register('test-url-selection-operation', TestURLSelectionOperation);
diff --git a/tests/wpt/tests/shared-storage/resources/simple-module2.js.headers b/tests/wpt/tests/shared-storage/resources/simple-module2.js.headers
new file mode 100644
index 00000000000..cb762eff806
--- /dev/null
+++ b/tests/wpt/tests/shared-storage/resources/simple-module2.js.headers
@@ -0,0 +1 @@
+Access-Control-Allow-Origin: *
diff --git a/tests/wpt/tests/shared-storage/resources/util.sub.js b/tests/wpt/tests/shared-storage/resources/util.sub.js
index dc1ec780a24..a5511a96800 100644
--- a/tests/wpt/tests/shared-storage/resources/util.sub.js
+++ b/tests/wpt/tests/shared-storage/resources/util.sub.js
@@ -126,9 +126,12 @@ async function testCreateWorkletWithDataOption(
const scriptOrigin = is_same_origin_script ? sameOrigin : crossOrigin;
const scriptUrl = is_same_origin_script ? sameOriginScriptUrl :
crossOrigin + sameOriginScriptUrl;
+ const dataOrigin =
+ (data_origin === 'script-origin') ? scriptOrigin : sameOrigin;
+ let success = false;
+ let error = null;
try {
- // Currently the `dataOrigin` option is not hooked up.
const worklet = await sharedStorage.createWorklet(
scriptUrl, {credentials: 'omit', dataOrigin: data_origin});
@@ -148,14 +151,17 @@ async function testCreateWorkletWithDataOption(
const result0 = await nextValueFromServer(ancestor_key);
assert_equals(result0, 'frame0_loaded');
- await verifyKeyValueForOrigin(key, value, scriptOrigin);
- await deleteKeyForOrigin(key, scriptOrigin);
- assert_true(expect_success, 'no error caught even though one was expected');
+ await verifyKeyValueForOrigin(key, value, dataOrigin);
+ await deleteKeyForOrigin(key, dataOrigin);
+ success = true;
} catch (e) {
- assert_false(
- expect_success, 'expected success but error thrown: ' + e.toString());
+ error = e;
assert_equals(e.name, 'TypeError');
} finally {
+ assert_equals(
+ expect_success, success,
+ error ? 'expected success but error thrown: ' + error.toString() :
+ 'no error caught even though one was expected');
test.done();
}
}
diff --git a/tests/wpt/tests/shared-storage/resources/verify-shared-storage.https.html b/tests/wpt/tests/shared-storage/resources/verify-shared-storage.https.html
index c2d75ddf852..cc4440df7d8 100644
--- a/tests/wpt/tests/shared-storage/resources/verify-shared-storage.https.html
+++ b/tests/wpt/tests/shared-storage/resources/verify-shared-storage.https.html
@@ -11,6 +11,9 @@ async function test() {
await sharedStorage.set('key0', 'key1');
} else if (method == 'createWorklet') {
await sharedStorage.createWorklet('simple-module.js')
+ } else if (method == 'createWorkletScriptOrigin') {
+ await sharedStorage.createWorklet('simple-module.js',
+ { dataOrigin: 'script-origin' })
} else if (method == 'addModule') {
await sharedStorage.worklet.addModule('simple-module.js')
}
diff --git a/tests/wpt/tests/shared-storage/select-url-permissions-policy-default.tentative.https.sub.html b/tests/wpt/tests/shared-storage/select-url-permissions-policy-default.tentative.https.sub.html
index a5be825d0e8..6bb6dde4a07 100644
--- a/tests/wpt/tests/shared-storage/select-url-permissions-policy-default.tentative.https.sub.html
+++ b/tests/wpt/tests/shared-storage/select-url-permissions-policy-default.tentative.https.sub.html
@@ -30,7 +30,7 @@
promise_test(async t => {
const worklet = await sharedStorage.createWorklet(
cross_origin_script,
- { credentials: "omit" });
+ { credentials: "omit", dataOrigin: "script-origin" });
await worklet.selectURL("operation", [{url: "1.html"}]);
}, header + ' allows selectURL() on a cross-origin worklet');
diff --git a/tests/wpt/tests/shared-storage/select-url-permissions-policy-none.tentative.https.sub.html b/tests/wpt/tests/shared-storage/select-url-permissions-policy-none.tentative.https.sub.html
index 6b48036fadb..caaa1285e76 100644
--- a/tests/wpt/tests/shared-storage/select-url-permissions-policy-none.tentative.https.sub.html
+++ b/tests/wpt/tests/shared-storage/select-url-permissions-policy-none.tentative.https.sub.html
@@ -31,7 +31,7 @@
promise_test(async t => {
const worklet = await sharedStorage.createWorklet(
cross_origin_script,
- { credentials: "omit" });
+ { credentials: "omit", dataOrigin: "script-origin" });
return promise_rejects_dom(t, "InvalidAccessError",
worklet.selectURL("operation", [{url: "1.html"}]));
diff --git a/tests/wpt/tests/shared-storage/select-url-permissions-policy-self.tentative.https.sub.html b/tests/wpt/tests/shared-storage/select-url-permissions-policy-self.tentative.https.sub.html
index 71d5653a2d1..86414c2c9da 100644
--- a/tests/wpt/tests/shared-storage/select-url-permissions-policy-self.tentative.https.sub.html
+++ b/tests/wpt/tests/shared-storage/select-url-permissions-policy-self.tentative.https.sub.html
@@ -30,7 +30,7 @@
promise_test(async t => {
const worklet = await sharedStorage.createWorklet(
cross_origin_script,
- { credentials: "omit" });
+ { credentials: "omit", dataOrigin: "script-origin" });
return promise_rejects_dom(t, "InvalidAccessError",
worklet.selectURL("operation", [{url: "1.html"}]));
diff --git a/tests/wpt/tests/shared-storage/shared-storage-in-sandboxed-iframe.tentative.https.html b/tests/wpt/tests/shared-storage/shared-storage-in-sandboxed-iframe.tentative.https.html
index 537f2e99d38..c0accefc497 100644
--- a/tests/wpt/tests/shared-storage/shared-storage-in-sandboxed-iframe.tentative.https.html
+++ b/tests/wpt/tests/shared-storage/shared-storage-in-sandboxed-iframe.tentative.https.html
@@ -52,12 +52,26 @@
test_shared_storage_in_sandboxed_iframe(t,
/*sandbox_flags=*/'allow-scripts',
/*method=*/'createWorklet',
- /*expect_success=*/true);
+ /*expect_success=*/false);
}, 'test sharedStorage.createWorklet() in sandboxed iframe without "allow-same-origin"');
async_test(t => {
test_shared_storage_in_sandboxed_iframe(t,
/*sandbox_flags=*/'allow-scripts allow-same-origin',
+ /*method=*/'createWorkletScriptOrigin',
+ /*expect_success=*/true);
+ }, 'test sharedStorage.createWorklet() with dataOrigin "script-origin" in sandboxed iframe with "allow-same-origin"');
+
+ async_test(t => {
+ test_shared_storage_in_sandboxed_iframe(t,
+ /*sandbox_flags=*/'allow-scripts',
+ /*method=*/'createWorkletScriptOrigin',
+ /*expect_success=*/true);
+ }, 'test sharedStorage.createWorklet() with dataOrigin "script-origin" in sandboxed iframe without "allow-same-origin"');
+
+ async_test(t => {
+ test_shared_storage_in_sandboxed_iframe(t,
+ /*sandbox_flags=*/'allow-scripts allow-same-origin',
/*method=*/'addModule',
/*expect_success=*/true);
}, 'test sharedStorage.worklet.addModule() in sandboxed iframe with "allow-same-origin"');
diff --git a/tests/wpt/tests/shared-storage/shared-storage-permissions-policy-default.tentative.https.sub.html b/tests/wpt/tests/shared-storage/shared-storage-permissions-policy-default.tentative.https.sub.html
index d0ff76a61ef..a0560765414 100644
--- a/tests/wpt/tests/shared-storage/shared-storage-permissions-policy-default.tentative.https.sub.html
+++ b/tests/wpt/tests/shared-storage/shared-storage-permissions-policy-default.tentative.https.sub.html
@@ -27,7 +27,7 @@
promise_test(async t => {
const worklet = await sharedStorage.createWorklet(
cross_origin_script,
- { credentials: "omit" });
+ { credentials: "omit", dataOrigin: "script-origin" });
}, header + ' allows sharedStorage.createWorklet() with cross-origin script');
async_test(t => {
diff --git a/tests/wpt/tests/shared-storage/shared-storage-permissions-policy-none.tentative.https.sub.html b/tests/wpt/tests/shared-storage/shared-storage-permissions-policy-none.tentative.https.sub.html
index c3cd3b1b478..e23174d6b96 100644
--- a/tests/wpt/tests/shared-storage/shared-storage-permissions-policy-none.tentative.https.sub.html
+++ b/tests/wpt/tests/shared-storage/shared-storage-permissions-policy-none.tentative.https.sub.html
@@ -29,7 +29,7 @@
return promise_rejects_dom(t, "InvalidAccessError",
sharedStorage.createWorklet(
cross_origin_script,
- { credentials: "omit" }));
+ { credentials: "omit", dataOrigin: "script-origin" }));
}, header + ' disallows sharedStorage.createWorklet() with cross-origin script');
async_test(t => {
diff --git a/tests/wpt/tests/shared-storage/shared-storage-permissions-policy-self.tentative.https.sub.html b/tests/wpt/tests/shared-storage/shared-storage-permissions-policy-self.tentative.https.sub.html
index 9c45e86b67a..e976be94335 100644
--- a/tests/wpt/tests/shared-storage/shared-storage-permissions-policy-self.tentative.https.sub.html
+++ b/tests/wpt/tests/shared-storage/shared-storage-permissions-policy-self.tentative.https.sub.html
@@ -28,7 +28,7 @@
return promise_rejects_dom(t, "InvalidAccessError",
sharedStorage.createWorklet(
cross_origin_script,
- { credentials: "omit" }));
+ { credentials: "omit", dataOrigin: "script-origin" }));
}, header + ' disallows sharedStorage.createWorklet() with cross-origin script');
async_test(t => {
diff --git a/tests/wpt/tests/speculation-rules/prerender/no-vary-search.https.html b/tests/wpt/tests/speculation-rules/prerender/no-vary-search.https.html
index dc47ff7ca21..3e7cffda1dd 100644
--- a/tests/wpt/tests/speculation-rules/prerender/no-vary-search.https.html
+++ b/tests/wpt/tests/speculation-rules/prerender/no-vary-search.https.html
@@ -59,13 +59,27 @@ function prerender_no_vary_search_test(description, noVarySearch, prefetchQuery,
'activating': navigateQueryParams
};
- const {tryToActivate, getNetworkRequestCount} =
+ const {exec, tryToActivate, getNetworkRequestCount, prerenderingURL, activatingURL} =
await create_prerendered_page(t, params);
if (shouldUse) {
// The request should be sent only one time for prerendering.
+
+ // Test that the URL changes, and that popstate isn't called as part of
+ // activation changing the URL.
+ await exec(() => {
+ window.popstateFired = false;
+ window.addEventListener("popstate", () => {
+ window.popstateFired = true;
+ });
+ });
+ assert_equals(await exec(() => location.href), prerenderingURL, 'location.href before activation');
+
assert_equals(await tryToActivate(), 'activated');
assert_equals(await getNetworkRequestCount(), '1');
+
+ assert_equals(await exec(() => location.href), activatingURL, 'location.href after activation');
+ assert_equals(await exec(() => window.popstateFired), false, 'popstate must not be fired');
} else {
// The request should be sent twice for prerendering and real navigation
// that doesn't activate the prerendered page.
diff --git a/tests/wpt/tests/speculation-rules/prerender/resources/utils.js b/tests/wpt/tests/speculation-rules/prerender/resources/utils.js
index 3533c77a86d..c9486d7fa1d 100644
--- a/tests/wpt/tests/speculation-rules/prerender/resources/utils.js
+++ b/tests/wpt/tests/speculation-rules/prerender/resources/utils.js
@@ -331,7 +331,9 @@ async function create_prerendered_page(t, params = {}, opt = {}, rule_extras = {
exec: (fn, args) => prerender_remote.execute_script(fn, args),
activate,
tryToActivate,
- getNetworkRequestCount
+ getNetworkRequestCount,
+ prerenderingURL: (new URL(prerendering_url, document.baseURI)).href,
+ activatingURL: (new URL(activating_url, document.baseURI)).href
};
}
diff --git a/tests/wpt/tests/storage-access-api/requestStorageAccess-sandboxed-iframe-allow-storage-access.sub.https.window.js b/tests/wpt/tests/storage-access-api/requestStorageAccess-sandboxed-iframe-allow-storage-access.sub.https.window.js
index a631b981a64..9d792703757 100644
--- a/tests/wpt/tests/storage-access-api/requestStorageAccess-sandboxed-iframe-allow-storage-access.sub.https.window.js
+++ b/tests/wpt/tests/storage-access-api/requestStorageAccess-sandboxed-iframe-allow-storage-access.sub.https.window.js
@@ -1,29 +1,68 @@
// META: script=helpers.js
+// META: script=/cookies/resources/cookie-helper.sub.js
// META: script=/resources/testdriver.js
// META: script=/resources/testdriver-vendor.js
'use strict';
-test(() => {
- let iframe = document.createElement('iframe');
- assert_true(iframe.sandbox.supports('allow-storage-access-by-user-activation'), '`allow-storage-access-by-user-activation`' +
- 'sandbox attribute should be supported');
-}, "`allow-storage-access-by-user-activation` sandbox attribute is supported");
+// Document-level test config flags:
+//
+// testPrefix: Prefix each test case with an indicator so we know what context
+// they are run in if they are used in multiple iframes.
+//
+// topLevelDocument: Keep track of if we run these tests in a nested context, we
+// don't want to recurse forever.
+const {testPrefix, topLevelDocument} = processQueryParams();
-(async function () {
- const frameSourceUrl = 'https://{{hosts[alt][www]}}:{{ports[https][0]}}/storage-access-api/requestStorageAccess-sandboxed-iframe.sub.https.window.html';
+if (topLevelDocument) {
+ const frameSourceUrl =
+ 'https://{{hosts[alt][www]}}:{{ports[https][0]}}/storage-access-api/requestStorageAccess-sandboxed-iframe-allow-storage-access.sub.https.window.html';
- let sandboxAttribute =
- 'allow-scripts allow-same-origin';
- let testCase = 'sandboxed-iframe';
+ const sandboxAttribute =
+ 'allow-scripts allow-same-origin allow-storage-access-by-user-activation';
+ const testCase = 'sandboxed-iframe-allow-storage-access-by-user-activation';
RunTestsInIFrame(
frameSourceUrl + `?testCase=${testCase}`,
sandboxAttribute);
+} else {
+ test(() => {
+ let iframe = document.createElement('iframe');
+ assert_true(
+ iframe.sandbox.supports('allow-storage-access-by-user-activation'),
+ '`allow-storage-access-by-user-activation`' +
+ 'sandbox attribute should be supported');
+ }, '`allow-storage-access-by-user-activation` sandbox attribute is supported');
- sandboxAttribute += ' allow-storage-access-by-user-activation';
- testCase = 'sandboxed-iframe-allow-storage-access-by-user-activation';
+ // Ideally this would check whether the user-activation condition changes
+ // the behavior; however, due to limitations in the test driver, the
+ // 'prompt' permission state is effectively the same as 'denied' from the
+ // perspective of platform tests.
+ promise_test(async t => {
+ await test_driver.set_permission({name: 'storage-access'}, 'granted');
+ await MaybeSetStorageAccess('*', '*', 'blocked');
+ await document.requestStorageAccess();
- RunTestsInIFrame(
- frameSourceUrl + `?testCase=${testCase}`,
- sandboxAttribute);
-})();
+ assert_true(
+ await CanAccessCookiesViaHTTP(),
+ 'After obtaining storage access, subresource requests from the frame should send and set cookies.');
+ assert_true(
+ CanAccessCookiesViaJS(),
+ 'After obtaining storage access, scripts in the frame should be able to access cookies.');
+ }, `[${testPrefix}] document.requestStorageAccess() should resolve even without a user gesture when already granted.`);
+
+ promise_test(async () => {
+ await test_driver.set_permission({name: 'storage-access'}, 'granted');
+ await MaybeSetStorageAccess('*', '*', 'blocked');
+
+ await RunCallbackWithGesture(async () => {
+ await document.requestStorageAccess();
+ });
+
+ assert_true(
+ await CanAccessCookiesViaHTTP(),
+ 'After obtaining storage access, subresource requests from the frame should send and set cookies.');
+ assert_true(
+ CanAccessCookiesViaJS(),
+ 'After obtaining storage access, scripts in the frame should be able to access cookies.');
+ }, `[${testPrefix}] document.requestStorageAccess() should resolve with a user gesture`);
+}
diff --git a/tests/wpt/tests/storage-access-api/requestStorageAccess-sandboxed-iframe-no-storage-access.sub.https.window.js b/tests/wpt/tests/storage-access-api/requestStorageAccess-sandboxed-iframe-no-storage-access.sub.https.window.js
new file mode 100644
index 00000000000..db1d88fe0dc
--- /dev/null
+++ b/tests/wpt/tests/storage-access-api/requestStorageAccess-sandboxed-iframe-no-storage-access.sub.https.window.js
@@ -0,0 +1,53 @@
+// META: script=helpers.js
+// META: script=/cookies/resources/cookie-helper.sub.js
+// META: script=/resources/testdriver.js
+// META: script=/resources/testdriver-vendor.js
+'use strict';
+
+// Document-level test config flags:
+//
+// testPrefix: Prefix each test case with an indicator so we know what context
+// they are run in if they are used in multiple iframes.
+//
+// topLevelDocument: Keep track of if we run these tests in a nested context, we
+// don't want to recurse forever.
+const {testPrefix, topLevelDocument} = processQueryParams();
+
+if (topLevelDocument) {
+ const frameSourceUrl =
+ 'https://{{hosts[alt][www]}}:{{ports[https][0]}}/storage-access-api/requestStorageAccess-sandboxed-iframe-no-storage-access.sub.https.window.html';
+
+ let sandboxAttribute = 'allow-scripts allow-same-origin';
+ let testCase = 'sandboxed-iframe';
+
+ RunTestsInIFrame(frameSourceUrl + `?testCase=${testCase}`, sandboxAttribute);
+} else {
+ test(() => {
+ let iframe = document.createElement('iframe');
+ assert_true(
+ iframe.sandbox.supports('allow-storage-access-by-user-activation'),
+ '`allow-storage-access-by-user-activation`' +
+ 'sandbox attribute should be supported');
+ }, '`allow-storage-access-by-user-activation` sandbox attribute is supported');
+ promise_test(
+ async t => {
+ await test_driver.set_permission({name: 'storage-access'}, 'granted');
+ await MaybeSetStorageAccess('*', '*', 'blocked');
+ return promise_rejects_dom(
+ t, 'NotAllowedError', document.requestStorageAccess(),
+ 'document.requestStorageAccess() call without user gesture.');
+ },
+ '[' + testPrefix +
+ '] document.requestStorageAccess() should reject with a NotAllowedError with no user gesture.');
+
+ promise_test(async t => {
+ await test_driver.set_permission({name: 'storage-access'}, 'granted');
+ await MaybeSetStorageAccess('*', '*', 'blocked');
+
+ await RunCallbackWithGesture(async () => {
+ await promise_rejects_dom(
+ t, 'NotAllowedError', document.requestStorageAccess(),
+ 'document.requestStorageAccess() call with user gesture.');
+ });
+ }, `[${testPrefix}] document.requestStorageAccess() should reject with a NotAllowedError, even with a user gesture`);
+}
diff --git a/tests/wpt/tests/storage-access-api/requestStorageAccess-sandboxed-iframe.sub.https.window.js b/tests/wpt/tests/storage-access-api/requestStorageAccess-sandboxed-iframe.sub.https.window.js
deleted file mode 100644
index e32a29601b3..00000000000
--- a/tests/wpt/tests/storage-access-api/requestStorageAccess-sandboxed-iframe.sub.https.window.js
+++ /dev/null
@@ -1,82 +0,0 @@
-// META: script=helpers.js
-// META: script=/cookies/resources/cookie-helper.sub.js
-// META: script=/resources/testdriver.js
-// META: script=/resources/testdriver-vendor.js
-'use strict';
-
-// Document-level test config flags:
-//
-// testPrefix: Prefix each test case with an indicator so we know what context
-// they are run in if they are used in multiple iframes.
-//
-// topLevelDocument: Keep track of if we run these tests in a nested context, we
-// don't want to recurse forever.
-const {testPrefix, topLevelDocument} = processQueryParams();
-
-promise_test(async () => {
- assert_not_equals(document.requestStorageAccess, undefined);
-}, `[${testPrefix}] document.requestStorageAccess() should exist on the document interface`);
-
-// Skip these tests when we're in a top-level document; these should only
-// execute inside the iframe test defined by
-// requestStorageAccess-sandboxed-iframe-*.sub.https.window.js
-if (!topLevelDocument) {
- if (testPrefix.includes('allow-storage-access-by-user-activation')) {
- // Ideally this would check whether the user-activation condition changes
- // the behavior; however, due to limitations in the test driver, the
- // 'prompt' permission state is effectively the same as 'denied' from the
- // perspective of platform tests.
- promise_test(async t => {
- await test_driver.set_permission({name: 'storage-access'}, 'granted');
- await MaybeSetStorageAccess('*', '*', 'blocked');
- await document.requestStorageAccess();
-
- assert_true(
- await CanAccessCookiesViaHTTP(),
- 'After obtaining storage access, subresource requests from the frame should send and set cookies.');
- assert_true(
- CanAccessCookiesViaJS(),
- 'After obtaining storage access, scripts in the frame should be able to access cookies.');
- }, `[${testPrefix}] document.requestStorageAccess() should resolve even without a user gesture when already granted.`);
-
- promise_test(async () => {
- await test_driver.set_permission({ name: 'storage-access' }, 'granted');
- await MaybeSetStorageAccess('*', '*', 'blocked');
-
- await RunCallbackWithGesture(async () => {
- await document.requestStorageAccess();
- });
-
- assert_true(
- await CanAccessCookiesViaHTTP(),
- 'After obtaining storage access, subresource requests from the frame should send and set cookies.');
- assert_true(
- CanAccessCookiesViaJS(),
- 'After obtaining storage access, scripts in the frame should be able to access cookies.');
- }, `[${testPrefix}] document.requestStorageAccess() should resolve with a user gesture`);
- } else {
- // For cases where allow-storage-access-by-user-activation is not set for
- // this iframe
- promise_test(
- async t => {
- await test_driver.set_permission({name: 'storage-access'}, 'granted');
- await MaybeSetStorageAccess('*', '*', 'blocked');
- return promise_rejects_dom(
- t, 'NotAllowedError', document.requestStorageAccess(),
- 'document.requestStorageAccess() call without user gesture.');
- },
- '[' + testPrefix +
- '] document.requestStorageAccess() should reject with a NotAllowedError with no user gesture.');
-
- promise_test(async t => {
- await test_driver.set_permission({name: 'storage-access'}, 'granted');
- await MaybeSetStorageAccess('*', '*', 'blocked');
-
- await RunCallbackWithGesture(async () => {
- await promise_rejects_dom(
- t, 'NotAllowedError', document.requestStorageAccess(),
- 'document.requestStorageAccess() call with user gesture.');
- });
- }, `[${testPrefix}] document.requestStorageAccess() should reject with a NotAllowedError, even with a user gesture`);
- }
-}
diff --git a/tests/wpt/tests/storage-access-api/resources/embedded_responder.js b/tests/wpt/tests/storage-access-api/resources/embedded_responder.js
index 15ba640a1e5..c222c4dac05 100644
--- a/tests/wpt/tests/storage-access-api/resources/embedded_responder.js
+++ b/tests/wpt/tests/storage-access-api/resources/embedded_responder.js
@@ -58,8 +58,9 @@ window.addEventListener("message", async (event) => {
case "observe_permission_change":
const status = await navigator.permissions.query({name: "storage-access"});
status.addEventListener("change", (event) => {
- reply(event.target.state)
+ parent.postMessage(event.target.state, '*');
}, { once: true });
+ reply('permission_change_observer_installed');
break;
case "reload":
window.location.reload();
diff --git a/tests/wpt/tests/storage-access-api/storage-access-permission.sub.https.window.js b/tests/wpt/tests/storage-access-api/storage-access-permission.sub.https.window.js
index 56a5425722e..2faec7b5fdb 100644
--- a/tests/wpt/tests/storage-access-api/storage-access-permission.sub.https.window.js
+++ b/tests/wpt/tests/storage-access-api/storage-access-permission.sub.https.window.js
@@ -34,10 +34,16 @@
await SetPermissionInFrame(frame1, [{ name: 'storage-access' }, 'prompt']);
});
- const observed = ObservePermissionChange(frame2);
- await SetPermissionInFrame(frame1, [{ name: 'storage-access' }, 'granted']);
+ // Install observer on frame, and wait for acknowledgement that it is
+ // installed.
+ assert_equals(await ObservePermissionChange(frame2),
+ "permission_change_observer_installed");
- const state = await observed;
+ const observed_event = new Promise(r => {
+ onmessage = e => r(e.data);
+ });
+ await SetPermissionInFrame(frame1, [{ name: 'storage-access' }, 'granted']);
+ const state = await observed_event;
assert_equals(state, "granted");
}, 'Permissions grants are observable across same-origin iframes');
@@ -64,10 +70,16 @@
await SetPermissionInFrame(frame1, [{ name: 'storage-access' }, 'prompt']);
});
- const observed = ObservePermissionChange(frame2);
- await SetPermissionInFrame(frame1, [{ name: 'storage-access' }, 'granted']);
+ // Install observer on frame, and wait for acknowledgement that it is
+ // installed.
+ assert_equals(await ObservePermissionChange(frame2),
+ "permission_change_observer_installed");
- const state = await observed;
+ const observed_event = new Promise(r => {
+ onmessage = e => r(e.data);
+ });
+ await SetPermissionInFrame(frame1, [{ name: 'storage-access' }, 'granted']);
+ const state = await observed_event;
assert_equals(state, "granted");
}, "Permissions grants are observable across same-site iframes");
diff --git a/tests/wpt/tests/streams/transferable/transfer-with-messageport.window.js b/tests/wpt/tests/streams/transferable/transfer-with-messageport.window.js
index 37f8c9df169..3bfe634a6e1 100644
--- a/tests/wpt/tests/streams/transferable/transfer-with-messageport.window.js
+++ b/tests/wpt/tests/streams/transferable/transfer-with-messageport.window.js
@@ -105,7 +105,7 @@ async function transferMessagePortWith(constructor) {
await transferMessagePortWithOrder3(new constructor());
}
-async function advancedTransferMesagePortWith(constructor) {
+async function advancedTransferMessagePortWith(constructor) {
await transferMessagePortWithOrder4(new constructor());
await transferMessagePortWithOrder5(new constructor());
await transferMessagePortWithOrder6(new constructor());
@@ -166,7 +166,7 @@ async function mixedTransferMessagePortWithOrder3() {
);
}
-async function mixedTransferMesagePortWith() {
+async function mixedTransferMessagePortWith() {
await mixedTransferMessagePortWithOrder1();
await mixedTransferMessagePortWithOrder2();
await mixedTransferMessagePortWithOrder3();
@@ -185,19 +185,19 @@ promise_test(async t => {
}, "Transferring a MessagePort with a TransformStream should set `.ports`");
promise_test(async t => {
- await transferMessagePortWith(ReadableStream);
+ await advancedTransferMessagePortWith(ReadableStream);
}, "Transferring a MessagePort with a ReadableStream should set `.ports`, advanced");
promise_test(async t => {
- await transferMessagePortWith(WritableStream);
+ await advancedTransferMessagePortWith(WritableStream);
}, "Transferring a MessagePort with a WritableStream should set `.ports`, advanced");
promise_test(async t => {
- await transferMessagePortWith(TransformStream);
+ await advancedTransferMessagePortWith(TransformStream);
}, "Transferring a MessagePort with a TransformStream should set `.ports`, advanced");
promise_test(async t => {
- await mixedTransferMesagePortWith();
+ await mixedTransferMessagePortWith();
}, "Transferring a MessagePort with multiple streams should set `.ports`");
test(() => {
diff --git a/tests/wpt/tests/svg/struct/reftests/support/html-resource-with-doctype-and-symbol.html b/tests/wpt/tests/svg/struct/reftests/support/html-resource-with-doctype-and-symbol.html
new file mode 100644
index 00000000000..357528a6a99
--- /dev/null
+++ b/tests/wpt/tests/svg/struct/reftests/support/html-resource-with-doctype-and-symbol.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<html>
+ <svg xmlns="http://www.w3.org/2000/svg">
+ <symbol id="green" >
+ <rect width="100" height="100" fill="green"/>
+ </symbol>
+ </svg>
+</html>
diff --git a/tests/wpt/tests/svg/struct/reftests/support/html-resource-with-symbol-and-content-type-svg.html b/tests/wpt/tests/svg/struct/reftests/support/html-resource-with-symbol-and-content-type-svg.html
new file mode 100644
index 00000000000..59cdfb91c10
--- /dev/null
+++ b/tests/wpt/tests/svg/struct/reftests/support/html-resource-with-symbol-and-content-type-svg.html
@@ -0,0 +1,7 @@
+<html>
+ <svg xmlns="http://www.w3.org/2000/svg">
+ <symbol id="green" >
+ <rect width="100" height="100" fill="green"/>
+ </symbol>
+ </svg>
+</html>
diff --git a/tests/wpt/tests/svg/struct/reftests/support/html-resource-with-symbol-and-content-type-svg.html.headers b/tests/wpt/tests/svg/struct/reftests/support/html-resource-with-symbol-and-content-type-svg.html.headers
new file mode 100644
index 00000000000..070de35fbe9
--- /dev/null
+++ b/tests/wpt/tests/svg/struct/reftests/support/html-resource-with-symbol-and-content-type-svg.html.headers
@@ -0,0 +1 @@
+Content-Type: image/svg+xml
diff --git a/tests/wpt/tests/svg/struct/reftests/support/html-resource-with-symbol.html b/tests/wpt/tests/svg/struct/reftests/support/html-resource-with-symbol.html
new file mode 100644
index 00000000000..59cdfb91c10
--- /dev/null
+++ b/tests/wpt/tests/svg/struct/reftests/support/html-resource-with-symbol.html
@@ -0,0 +1,7 @@
+<html>
+ <svg xmlns="http://www.w3.org/2000/svg">
+ <symbol id="green" >
+ <rect width="100" height="100" fill="green"/>
+ </symbol>
+ </svg>
+</html>
diff --git a/tests/wpt/tests/svg/struct/reftests/use-external-html-resource-with-content-type-svg.html b/tests/wpt/tests/svg/struct/reftests/use-external-html-resource-with-content-type-svg.html
new file mode 100644
index 00000000000..bc2ac83978b
--- /dev/null
+++ b/tests/wpt/tests/svg/struct/reftests/use-external-html-resource-with-content-type-svg.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<title>Reference to a &lt;symbol> in an SVG fragment in an html resource document with SVG content type</title>
+<link rel="help" href="https://svgwg.org/svg2-draft/struct.html#UseElement">
+<link rel="help" href="https://svgwg.org/svg2-draft/linking.html#processingURL">
+<link rel="match" href="reference/green-100x100.html">
+<svg>
+ <use href="support/html-resource-with-symbol-and-content-type-svg.html#green"/>
+</svg>
diff --git a/tests/wpt/tests/svg/struct/reftests/use-external-html-resource-with-doctype.html b/tests/wpt/tests/svg/struct/reftests/use-external-html-resource-with-doctype.html
new file mode 100644
index 00000000000..c0aba28334e
--- /dev/null
+++ b/tests/wpt/tests/svg/struct/reftests/use-external-html-resource-with-doctype.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<title>Reference to a &lt;symbol> in an SVG fragment in an html resource document with a doctype</title>
+<link rel="help" href="https://svgwg.org/svg2-draft/struct.html#UseElement">
+<link rel="help" href="https://svgwg.org/svg2-draft/linking.html#processingURL">
+<link rel="match" href="reference/green-100x100.html">
+<svg>
+ <use href="support/html-resource-with-doctype-and-symbol.html#green"/>
+</svg>
diff --git a/tests/wpt/tests/svg/struct/reftests/use-external-html-resource.html b/tests/wpt/tests/svg/struct/reftests/use-external-html-resource.html
new file mode 100644
index 00000000000..7e79ea1ff76
--- /dev/null
+++ b/tests/wpt/tests/svg/struct/reftests/use-external-html-resource.html
@@ -0,0 +1,8 @@
+<!DOCTYPE html>
+<title>Reference to a &lt;symbol> in an SVG fragment in an html resource document</title>
+<link rel="help" href="https://svgwg.org/svg2-draft/struct.html#UseElement">
+<link rel="help" href="https://svgwg.org/svg2-draft/linking.html#processingURL">
+<link rel="match" href="reference/green-100x100.html">
+<svg>
+ <use href="support/html-resource-with-symbol.html#green"/>
+</svg>
diff --git a/tests/wpt/tests/tools/metadata/webfeatures/schema.py b/tests/wpt/tests/tools/metadata/webfeatures/schema.py
index 4cfe154b2f5..b6e64bcd467 100644
--- a/tests/wpt/tests/tools/metadata/webfeatures/schema.py
+++ b/tests/wpt/tests/tools/metadata/webfeatures/schema.py
@@ -1,6 +1,7 @@
from enum import Enum
from dataclasses import dataclass
from fnmatch import fnmatchcase
+from functools import cached_property
from typing import Any, Dict, Sequence, Union
from ..schema import SchemaValue, validate_dict
@@ -10,17 +11,36 @@ YAML filename for meta files
"""
WEB_FEATURES_YML_FILENAME = "WEB_FEATURES.yml"
+# File prefix to indicate that this FeatureFile should run in EXCLUDE mode.
+EXCLUSION_PREFIX = "!"
+
class SpecialFileEnum(Enum):
"""All files recursively"""
RECURSIVE = "**"
+class FileMatchingMode(Enum):
+ """Defines how a FeatureFile pattern is used for matching."""
+ INCLUDE = 1 # Include files that match the pattern
+ EXCLUDE = 2 # Exclude files that match the pattern
+
class FeatureFile(str):
+ @cached_property
+ def matching_mode(self) -> FileMatchingMode:
+ """Determines if the pattern should include or exclude matches."""
+ return FileMatchingMode.EXCLUDE if self.startswith(EXCLUSION_PREFIX) else FileMatchingMode.INCLUDE
+
+ @cached_property
+ def processed_filename(self) -> str:
+ """Removes the exclusion prefix "!" from the pattern."""
+ # TODO. After moving to Python3.9, use: return self.removeprefix(EXCLUSION_PREFIX)
+ return self[len(EXCLUSION_PREFIX):] if self.startswith(EXCLUSION_PREFIX) else self
+
def match_files(self, base_filenames: Sequence[str]) -> Sequence[str]:
"""
Given the input base file names, returns the subset of base file names
- that match the given FeatureFile.
+ that match the given FeatureFile based on matching_mode.
If the FeatureFile contains any number of "*" characters, fnmatch is
used check each file name.
If the FeatureFile does not contain any "*" characters, the base file name
@@ -32,10 +52,10 @@ class FeatureFile(str):
# If our file name contains a wildcard, use fnmatch
if "*" in self:
for base_filename in base_filenames:
- if fnmatchcase(base_filename, self):
+ if fnmatchcase(base_filename, self.processed_filename):
result.append(base_filename)
- elif self.__str__() in base_filenames:
- result.append(self)
+ elif self.processed_filename in base_filenames:
+ result.append(self.processed_filename)
return result
diff --git a/tests/wpt/tests/tools/metadata/webfeatures/tests/test_schema.py b/tests/wpt/tests/tools/metadata/webfeatures/tests/test_schema.py
index 3534ad33983..78c40b44bf6 100644
--- a/tests/wpt/tests/tools/metadata/webfeatures/tests/test_schema.py
+++ b/tests/wpt/tests/tools/metadata/webfeatures/tests/test_schema.py
@@ -1,7 +1,7 @@
# mypy: allow-untyped-defs
from dataclasses import asdict
-from ..schema import WebFeaturesFile, FeatureEntry, SpecialFileEnum, FeatureFile
+from ..schema import FileMatchingMode, WebFeaturesFile, FeatureEntry, SpecialFileEnum, FeatureFile
import pytest
import re
@@ -69,23 +69,39 @@ def test_does_feature_apply_recursively(input, expected_result):
assert input.does_feature_apply_recursively() == expected_result
@pytest.mark.parametrize(
- "input_feature,input_files,expected_result",
+ "input_feature,input_files,expected_result,expected_match_mode",
[
(
FeatureFile("*"),
["test.html", "TEST.HTML"],
- ["test.html", "TEST.HTML"]
+ ["test.html", "TEST.HTML"],
+ FileMatchingMode.INCLUDE,
),
(
FeatureFile("test.html"),
["test.html", "TEST.HTML"],
- ["test.html"]
+ ["test.html"],
+ FileMatchingMode.INCLUDE,
+ ),
+ (
+ FeatureFile("!test.html"),
+ ["test.html", "TEST.HTML"],
+ ["test.html"],
+ FileMatchingMode.EXCLUDE,
),
(
FeatureFile("test*.html"),
["test.html", "test1.html", "TEST1.HTML", "test2.html", "test-2.html", "foo.html"],
- ["test.html", "test1.html", "test2.html", "test-2.html"]
+ ["test.html", "test1.html", "test2.html", "test-2.html"],
+ FileMatchingMode.INCLUDE,
+ ),
+ (
+ FeatureFile("!test*.html"),
+ ["test.html", "test1.html", "TEST1.HTML", "test2.html", "test-2.html", "foo.html"],
+ ["test.html", "test1.html", "test2.html", "test-2.html"],
+ FileMatchingMode.EXCLUDE,
),
])
-def test_feature_file_match_files(input_feature, input_files, expected_result):
+def test_feature_file_match_files(input_feature, input_files, expected_result, expected_match_mode):
assert input_feature.match_files(input_files) == expected_result
+ assert input_feature.matching_mode == expected_match_mode
diff --git a/tests/wpt/tests/tools/requirements_mypy.txt b/tests/wpt/tests/tools/requirements_mypy.txt
index 66ae1420387..3224251e3fd 100644
--- a/tests/wpt/tests/tools/requirements_mypy.txt
+++ b/tests/wpt/tests/tools/requirements_mypy.txt
@@ -1,4 +1,4 @@
-mypy==1.10.1
+mypy==1.11.0
mypy-extensions==1.0.0
toml==0.10.2
tomli==2.0.1
diff --git a/tests/wpt/tests/tools/requirements_pytest.txt b/tests/wpt/tests/tools/requirements_pytest.txt
index 14cc97014aa..757cee5037f 100644
--- a/tests/wpt/tests/tools/requirements_pytest.txt
+++ b/tests/wpt/tests/tools/requirements_pytest.txt
@@ -1,3 +1,3 @@
-pytest==8.2.1
+pytest==8.3.2
pytest-cov==5.0.0
hypothesis==6.104.1
diff --git a/tests/wpt/tests/tools/web_features/tests/test_web_feature_map.py b/tests/wpt/tests/tools/web_features/tests/test_web_feature_map.py
index 06afa181fe5..609645f0556 100644
--- a/tests/wpt/tests/tools/web_features/tests/test_web_feature_map.py
+++ b/tests/wpt/tests/tools/web_features/tests/test_web_feature_map.py
@@ -71,6 +71,25 @@ def test_process_non_recursive_feature():
]
}
+def test_process_non_recursive_feature_negation():
+ feature_name = "feature1"
+ feature_files = [
+ FeatureFile("*range*"), # Matches all files with *range* in the file name
+ # Removes blob-range.any.js which removes blob-range.any.html and blob-range.any.worker.html
+ FeatureFile("!blob-range.any.*"),
+ ]
+
+ mapper = WebFeatureToTestsDirMapper(TEST_FILES, None)
+ result = WebFeaturesMap()
+
+ mapper._process_non_recursive_feature(feature_name, feature_files, result)
+
+ assert result.to_dict() == {
+ "feature1": [
+ "/root/foo-range.any.html",
+ "/root/foo-range.any.worker.html",
+ ]
+ }
def test_process_inherited_features():
mapper = WebFeatureToTestsDirMapper(TEST_FILES, None)
diff --git a/tests/wpt/tests/tools/web_features/web_feature_map.py b/tests/wpt/tests/tools/web_features/web_feature_map.py
index d66b07e1146..481225206f3 100644
--- a/tests/wpt/tests/tools/web_features/web_feature_map.py
+++ b/tests/wpt/tests/tools/web_features/web_feature_map.py
@@ -6,7 +6,7 @@ from typing import Dict, List, Optional, Sequence, Set
from ..manifest.item import ManifestItem, URLManifestItem
from ..manifest.sourcefile import SourceFile
-from ..metadata.webfeatures.schema import FeatureEntry, FeatureFile, WebFeaturesFile
+from ..metadata.webfeatures.schema import FeatureEntry, FeatureFile, FileMatchingMode, WebFeaturesFile
class WebFeaturesMap:
@@ -91,14 +91,21 @@ class WebFeatureToTestsDirMapper:
result: WebFeaturesMap) -> None:
# If the feature does not apply recursively, look at the individual
# files and match them against all_test_files_in_dir.
- test_file_paths: List[ManifestItem] = []
+ final_test_file_paths: List[ManifestItem] = []
+ test_file_paths: Set[str] = set()
+ excluded_test_file_paths: Set[str] = set()
base_test_file_names = [basename(f.path) for f in self.all_test_files_in_dir]
for test_file in files:
matched_base_file_names = test_file.match_files(base_test_file_names)
- test_file_paths.extend(itertools.chain.from_iterable([
- self.test_path_to_manifest_items_map[f] for f in matched_base_file_names]))
-
- result.add(feature_name, test_file_paths)
+ if test_file.matching_mode == FileMatchingMode.INCLUDE:
+ test_file_paths.update(matched_base_file_names)
+ elif test_file.matching_mode == FileMatchingMode.EXCLUDE:
+ excluded_test_file_paths.update(matched_base_file_names)
+ final_test_file_paths_set = test_file_paths - excluded_test_file_paths
+ final_test_file_paths.extend(itertools.chain.from_iterable([
+ self.test_path_to_manifest_items_map[f] for f in final_test_file_paths_set]))
+
+ result.add(feature_name, final_test_file_paths)
def run(self, result: WebFeaturesMap, inherited_features: List[str]) -> None:
if self.web_feature_file:
diff --git a/tests/wpt/tests/tools/webdriver/webdriver/bidi/protocol.py b/tests/wpt/tests/tools/webdriver/webdriver/bidi/protocol.py
new file mode 100644
index 00000000000..25c34b91bb2
--- /dev/null
+++ b/tests/wpt/tests/tools/webdriver/webdriver/bidi/protocol.py
@@ -0,0 +1,106 @@
+from abc import ABC
+import math
+from typing import Any, Dict, Union
+from .undefined import UNDEFINED
+from ..client import WebElement
+
+
+class BidiValue(ABC):
+ """Represents the non-primitive values received via BiDi."""
+ protocol_value: Dict[str, Any]
+ type: str
+
+ def __init__(self, protocol_value: Dict[str, Any]):
+ assert isinstance(protocol_value, dict)
+ assert isinstance(protocol_value["type"], str)
+ self.type = protocol_value["type"]
+ self.protocol_value = protocol_value
+
+ def to_classic_protocol_value(self) -> Dict[str, Any]:
+ """
+ Convert the BiDi value to the classic protocol value. Required for
+ compatibility of the values sent over BiDi transport with the classic
+ actions.
+ """
+ raise NotImplementedError(
+ "No conversion to the classic protocol value is implemented.")
+
+
+class BidiNode(BidiValue):
+ shared_id: str
+
+ def __init__(self, protocol_value: Dict[str, Any]):
+ super().__init__(protocol_value)
+ assert self.type == "node"
+ self.shared_id = self.protocol_value["sharedId"]
+
+ def to_classic_protocol_value(self) -> Dict[str, Any]:
+ return {WebElement.identifier: self.shared_id}
+
+
+class BidiWindow(BidiValue):
+ browsing_context: str
+
+ def __init__(self, protocol_value: Dict[str, Any]):
+ super().__init__(protocol_value)
+ assert self.type == "window"
+ self.browsing_context = self.protocol_value["value"]["context"]
+
+
+def bidi_deserialize(bidi_value: Union[str, int, Dict[str, Any]]) -> Any:
+ """
+ Deserialize the BiDi primitive values, lists and objects to the Python
+ value, keeping non-common data types in BiDi format.
+ Note: there can be some ambiguity in the deserialized value.
+ Eg `{window: {context: "abc"}}` can represent a window proxy, or the JS
+ object `{window: {context: "abc"}}`.
+ """
+ # script.PrimitiveProtocolValue https://w3c.github.io/webdriver-bidi/#type-script-PrimitiveProtocolValue
+ if isinstance(bidi_value, str):
+ return bidi_value
+ if isinstance(bidi_value, int):
+ return bidi_value
+ if not isinstance(bidi_value, dict):
+ raise ValueError("Unexpected bidi value: %s" % bidi_value)
+ if bidi_value["type"] == "undefined":
+ return UNDEFINED
+ if bidi_value["type"] == "null":
+ return None
+ if bidi_value["type"] == "string":
+ return bidi_value["value"]
+ if bidi_value["type"] == "number":
+ if bidi_value["value"] == "NaN":
+ return math.nan
+ if bidi_value["value"] == "-0":
+ return -0.0
+ if bidi_value["value"] == "Infinity":
+ return math.inf
+ if bidi_value["value"] == "-Infinity":
+ return -math.inf
+ if isinstance(bidi_value["value"], int) or isinstance(bidi_value["value"], float):
+ return bidi_value["value"]
+ raise ValueError("Unexpected bidi value: %s" % bidi_value)
+ if bidi_value["type"] == "boolean":
+ return bool(bidi_value["value"])
+ if bidi_value["type"] == "bigint":
+ # Python handles big integers natively.
+ return int(bidi_value["value"])
+ # script.RemoteValue https://w3c.github.io/webdriver-bidi/#type-script-RemoteValue
+ if bidi_value["type"] == "array":
+ list_result = []
+ for item in bidi_value["value"]:
+ list_result.append(bidi_deserialize(item))
+ return list_result
+ if bidi_value["type"] == "object":
+ dict_result = {}
+ for item in bidi_value["value"]:
+ dict_result[bidi_deserialize(item[0])] = bidi_deserialize(item[1])
+ return dict_result
+ if bidi_value["type"] == "node":
+ return BidiNode(bidi_value)
+ if bidi_value["type"] == "window":
+ return BidiWindow(bidi_value)
+ # TODO: do not raise after verified no regressions in the tests.
+ raise ValueError("Unexpected bidi value: %s" % bidi_value)
+ # All other types are not deserialized as a generic BidiValue.
+ # return BidiValue(bidi_value)
diff --git a/tests/wpt/tests/tools/webdriver/webdriver/protocol.py b/tests/wpt/tests/tools/webdriver/webdriver/protocol.py
index d6c89af22be..5d07047d5c3 100644
--- a/tests/wpt/tests/tools/webdriver/webdriver/protocol.py
+++ b/tests/wpt/tests/tools/webdriver/webdriver/protocol.py
@@ -24,6 +24,11 @@ class Encoder(json.JSONEncoder):
return {webdriver.ShadowRoot.identifier: obj.id}
elif isinstance(obj, webdriver.WebWindow):
return {webdriver.WebWindow.identifier: obj.id}
+ # Support for arguments received via BiDi.
+ # https://github.com/web-platform-tests/rfcs/blob/master/rfcs/testdriver_bidi.md
+ elif isinstance(obj, webdriver.bidi.protocol.BidiValue):
+ return obj.to_classic_protocol_value()
+
return super().default(obj)
diff --git a/tests/wpt/tests/tools/webdriver/webdriver/transport.py b/tests/wpt/tests/tools/webdriver/webdriver/transport.py
index 7e898b2869f..31d4997589a 100644
--- a/tests/wpt/tests/tools/webdriver/webdriver/transport.py
+++ b/tests/wpt/tests/tools/webdriver/webdriver/transport.py
@@ -2,6 +2,7 @@
import json
import select
+import socket
from http.client import HTTPConnection
from typing import Dict, List, Mapping, Sequence, Tuple
@@ -204,6 +205,8 @@ class HTTPWireProtocol:
``json.JSONEncoder`` unless specified.
:param decoder: JSON decoder class, which defaults to
``json.JSONDecoder`` unless specified.
+ :param timeout: Optional timeout for the underlying socket. `None` will
+ retain the existing timeout.
:param codec_kwargs: Surplus arguments passed on to `encoder`
and `decoder` on construction.
@@ -224,7 +227,7 @@ class HTTPWireProtocol:
raise ValueError("Failed to encode request body as JSON:\n"
"%s" % json.dumps(body, indent=2))
- response = self._request(method, uri, payload, headers, timeout=None)
+ response = self._request(method, uri, payload, headers, timeout=timeout)
return Response.from_http(response, decoder=decoder, **codec_kwargs)
def _request(self, method, uri, payload, headers=None, timeout=None):
@@ -249,16 +252,20 @@ class HTTPWireProtocol:
self._last_request_is_blocked = True
self.connection.request(method, url, payload, headers)
- # timeout for request has to be set just before calling httplib.getresponse()
- # and the previous value restored just after that, even on exception raised
+ # `timeout` for this request has to be set just before calling
+ # `getresponse()` and the previous value restored just after that,
+ # even on exception raised. Initialize `previous_timeout` to the global
+ # default socket timeout in case the lazily created socket doesn't exist
+ # before `getresponse()`.
+ previous_timeout = socket.getdefaulttimeout()
try:
- if timeout:
- previous_timeout = self._conn.gettimeout()
- self._conn.settimeout(timeout)
+ if timeout and self.connection.sock:
+ previous_timeout = self.connection.sock.gettimeout()
+ self.connection.sock.settimeout(timeout)
response = self.connection.getresponse()
finally:
- if timeout:
- self._conn.settimeout(previous_timeout)
+ if timeout and self.connection.sock:
+ self.connection.sock.settimeout(previous_timeout)
self._last_request_is_blocked = False
return response
diff --git a/tests/wpt/tests/tools/wpt/android.py b/tests/wpt/tests/tools/wpt/android.py
index f25350db078..1e2d30fb389 100644
--- a/tests/wpt/tests/tools/wpt/android.py
+++ b/tests/wpt/tests/tools/wpt/android.py
@@ -16,8 +16,6 @@ android_device = None
here = os.path.abspath(os.path.dirname(__file__))
wpt_root = os.path.abspath(os.path.join(here, os.pardir, os.pardir))
-
-NDK_VERSION = "r26c"
CMDLINE_TOOLS_VERSION_STRING = "12.0"
CMDLINE_TOOLS_VERSION = "11076708"
diff --git a/tests/wpt/tests/tools/wpt/browser.py b/tests/wpt/tests/tools/wpt/browser.py
index ba716cd14f6..93260439701 100644
--- a/tests/wpt/tests/tools/wpt/browser.py
+++ b/tests/wpt/tests/tools/wpt/browser.py
@@ -2252,6 +2252,15 @@ class Ladybird(Browser):
raise NotImplementedError
def version(self, binary=None, webdriver_binary=None):
+ if not binary:
+ self.logger.warning("No browser binary provided.")
+ return None
+ output = call(binary, "--version")
+ if output:
+ version_string = output.strip()
+ match = re.match(r"Version (.*)", version_string)
+ if match:
+ return match.group(1)
return None
class WebKitTestRunner(Browser):
diff --git a/tests/wpt/tests/tools/wptrunner/requirements_firefox.txt b/tests/wpt/tests/tools/wptrunner/requirements_firefox.txt
index ed377b9c95a..7ed450d3321 100644
--- a/tests/wpt/tests/tools/wptrunner/requirements_firefox.txt
+++ b/tests/wpt/tests/tools/wptrunner/requirements_firefox.txt
@@ -7,4 +7,4 @@ mozprofile==3.0.0
mozrunner==8.3.1
mozversion==2.4.0
psutil==5.9.8
-redo==2.0.4
+redo==3.0.0
diff --git a/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/chrome.py b/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/chrome.py
index 8ebbfdc91a5..0848f1cbeed 100644
--- a/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/chrome.py
+++ b/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/chrome.py
@@ -1,8 +1,16 @@
# mypy: allow-untyped-defs
+import re
+import time
+
+from mozlog.structuredlog import StructuredLogger
+
from . import chrome_spki_certs
+from .base import BrowserError
from .base import WebDriverBrowser, require_arg
from .base import NullBrowser # noqa: F401
+from .base import OutputHandler
+from .base import get_free_port
from .base import get_timeout_multiplier # noqa: F401
from .base import cmd_arg
from ..executors import executor_kwargs as base_executor_kwargs
@@ -13,6 +21,9 @@ from ..executors.executorchrome import ( # noqa: F401
ChromeDriverTestharnessExecutor,
ChromeDriverCrashTestExecutor
)
+from ..testloader import GroupMetadata
+
+from typing import Any, List, Optional
__wptrunner__ = {"product": "chrome",
@@ -194,8 +205,13 @@ def env_options():
def update_properties():
return (["debug", "os", "processor"], {"os": ["version"], "processor": ["bits"]})
-
class ChromeBrowser(WebDriverBrowser):
+ def __init__(self,
+ logger: StructuredLogger,
+ **kwargs: Any):
+ super().__init__(logger, **kwargs)
+ self._actual_port = None
+
def restart_on_test_type_change(self, new_test_type: str, old_test_type: str) -> bool:
# Restart the test runner when switch from/to wdspec tests. Wdspec test
# is using a different protocol class so a restart is always needed.
@@ -203,8 +219,78 @@ class ChromeBrowser(WebDriverBrowser):
return True
return False
+ def create_output_handler(self, cmd: List[str]) -> OutputHandler:
+ return ChromeDriverOutputHandler(
+ self.logger,
+ cmd,
+ init_deadline=self.init_deadline)
+
def make_command(self):
+ # TODO(crbug.com/354135326): Don't pass port unless specified explicitly
+ # after M132.
+ port = get_free_port() if self._port is None else self._port
return [self.webdriver_binary,
- cmd_arg("port", str(self.port)),
+ cmd_arg("port", str(port)),
+ # TODO(crbug.com/354135326): Remove --ignore-explicit-port after
+ # M132.
+ cmd_arg("ignore-explicit-port", None),
cmd_arg("url-base", self.base_path),
cmd_arg("enable-chrome-logs")] + self.webdriver_args
+
+ @property
+ def port(self):
+ # We read the port from WebDriver on startup
+ if self._actual_port is None:
+ if self._output_handler is None or self._output_handler.port is None:
+ raise ValueError("Can't get WebDriver port from its stdout")
+ self._actual_port = self._output_handler.port
+ return self._actual_port
+
+ def start(self, group_metadata: GroupMetadata, **kwargs: Any) -> None:
+ if self._actual_port is not None:
+ raise BrowserError('Unable to start a new WebDriver instance while the old instance is still running')
+ super().start(group_metadata=group_metadata, **kwargs)
+
+ def stop(self, force: bool = False, **kwargs: Any) -> bool:
+ self._actual_port = None
+ return super().stop(force=force, **kwargs)
+
+class ChromeDriverOutputHandler(OutputHandler):
+ PORT_RE = re.compile(rb'.*was started successfully on port (\d+)\.')
+ NO_PORT_RE = re.compile(rb'.*was started successfully\.')
+ REQUESTED_PORT_RE = re.compile(r'.*-port=(\d+)')
+
+ def __init__(self,
+ logger: StructuredLogger,
+ command: List[str],
+ init_deadline: Optional[float] = None):
+ super().__init__(logger, command)
+ self.port = None
+ # TODO(crbug.com/354135326): Remove requested_port logic below after M132.
+ self._requested_port = None
+ for arg in command:
+ m = self.REQUESTED_PORT_RE.match(arg)
+ if m is not None:
+ self._requested_port = int(m.groups()[0])
+ self.init_deadline = init_deadline
+
+ def after_process_start(self, pid):
+ super().after_process_start(pid)
+ while self.port is None:
+ time.sleep(0.1)
+ if self.init_deadline is not None and time.time() > self.init_deadline:
+ raise TimeoutError("Failed to get WebDriver port within the timeout")
+
+ def __call__(self, line):
+ if self.port is None:
+ m = self.PORT_RE.match(line)
+ if m is not None:
+ self.port = int(m.groups()[0])
+ self.logger.info(f"Got WebDriver port {self.port}")
+ else:
+ # TODO(crbug.com/354135326): Remove requested_port logic below after M132.
+ m = self.NO_PORT_RE.match(line)
+ if m is not None:
+ self.port = self._requested_port
+ self.logger.info(f"Got WebDriver port {self.port}")
+ super().__call__(line)
diff --git a/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/headless_shell.py b/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/headless_shell.py
index e7da3e64548..7fd11fecbe0 100644
--- a/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/headless_shell.py
+++ b/tests/wpt/tests/tools/wptrunner/wptrunner/browsers/headless_shell.py
@@ -1,6 +1,6 @@
# mypy: allow-untyped-defs
-from .base import cmd_arg, require_arg
+from .base import require_arg
from .base import get_timeout_multiplier # noqa: F401
from .chrome import ChromeBrowser, debug_args, executor_kwargs # noqa: F401
from ..executors.base import WdspecExecutor # noqa: F401
@@ -55,8 +55,4 @@ def update_properties():
class HeadlessShellBrowser(ChromeBrowser):
- def make_command(self):
- return [self.webdriver_binary,
- cmd_arg("port", str(self.port)),
- cmd_arg("url-base", self.base_path),
- cmd_arg("enable-chrome-logs")] + self.webdriver_args
+ pass
diff --git a/tests/wpt/tests/tools/wptrunner/wptrunner/executors/actions.py b/tests/wpt/tests/tools/wptrunner/wptrunner/executors/actions.py
index 6e0c081b48f..4bf8d735a1d 100644
--- a/tests/wpt/tests/tools/wptrunner/wptrunner/executors/actions.py
+++ b/tests/wpt/tests/tools/wptrunner/wptrunner/executors/actions.py
@@ -464,6 +464,17 @@ class ClearDevicePostureAction:
def __call__(self, payload):
return self.protocol.device_posture.clear_device_posture()
+class RunBounceTrackingMitigationsAction:
+ name = "run_bounce_tracking_mitigations"
+
+ def __init__(self, logger, protocol):
+ self.logger = logger
+ self.protocol = protocol
+
+ def __call__(self, payload):
+ self.logger.debug("Running bounce tracking mitigations")
+ return self.protocol.storage.run_bounce_tracking_mitigations()
+
actions = [ClickAction,
DeleteAllCookiesAction,
GetAllCookiesAction,
@@ -499,4 +510,5 @@ actions = [ClickAction,
RemoveVirtualSensorAction,
GetVirtualSensorInformationAction,
SetDevicePostureAction,
- ClearDevicePostureAction]
+ ClearDevicePostureAction,
+ RunBounceTrackingMitigationsAction]
diff --git a/tests/wpt/tests/tools/wptrunner/wptrunner/executors/asyncactions.py b/tests/wpt/tests/tools/wptrunner/wptrunner/executors/asyncactions.py
new file mode 100644
index 00000000000..6b4ee6fe70f
--- /dev/null
+++ b/tests/wpt/tests/tools/wptrunner/wptrunner/executors/asyncactions.py
@@ -0,0 +1,30 @@
+# mypy: allow-untyped-defs
+
+from webdriver.bidi.protocol import BidiWindow
+
+
+class BidiSessionSubscribeAction:
+ name = "bidi.session.subscribe"
+
+ def __init__(self, logger, protocol):
+ self.logger = logger
+ self.protocol = protocol
+
+ async def __call__(self, payload):
+ events = payload["events"]
+ contexts = None
+ if payload["contexts"] is not None:
+ contexts = []
+ for context in payload["contexts"]:
+ # Context can be either a browsing context id, or a BiDi serialized window. In the latter case, the
+ # value is extracted from the serialized object.
+ if isinstance(context, str):
+ contexts.append(context)
+ elif isinstance(context, BidiWindow):
+ contexts.append(context.browsing_context)
+ else:
+ raise ValueError("Unexpected context type: %s" % context)
+ return await self.protocol.bidi_events.subscribe(events, contexts)
+
+
+async_actions = [BidiSessionSubscribeAction]
diff --git a/tests/wpt/tests/tools/wptrunner/wptrunner/executors/base.py b/tests/wpt/tests/tools/wptrunner/wptrunner/executors/base.py
index 2c88f10e0ed..7d5ed5cabca 100644
--- a/tests/wpt/tests/tools/wptrunner/wptrunner/executors/base.py
+++ b/tests/wpt/tests/tools/wptrunner/wptrunner/executors/base.py
@@ -15,6 +15,7 @@ from urllib.parse import urljoin, urlsplit, urlunsplit
from . import pytestrunner
from .actions import actions
+from .asyncactions import async_actions
from .protocol import Protocol, WdspecProtocol
@@ -799,6 +800,63 @@ class CallbackHandler:
self.protocol.testdriver.send_message(cmd_id, message_type, status, message=message)
+class AsyncCallbackHandler(CallbackHandler):
+ """
+ Handle synchronous and asynchronous actions. Extends `CallbackHandler` with support of async actions.
+ """
+
+ def __init__(self, logger, protocol, test_window, loop):
+ super().__init__(logger, protocol, test_window)
+ self.loop = loop
+ self.async_actions = {cls.name: cls(self.logger, self.protocol) for cls in async_actions}
+
+ def process_action(self, url, payload):
+ action = payload["action"]
+ if action in self.async_actions:
+ # Schedule async action to be processed in the event loop and return immediately.
+ self.logger.debug(f"Scheduling async action processing: {action}, {payload}")
+ self.loop.create_task(self._process_async_action(action, payload))
+ return False, None
+ else:
+ # Fallback to the default action processing, which will fail if the action is not implemented.
+ self.logger.debug(f"Processing synchronous action: {action}, {payload}")
+ return super().process_action(url, payload)
+
+ async def _process_async_action(self, action, payload):
+ """
+ Process async action and send the result back to the test driver.
+
+ This method is analogous to `process_action` but is intended to be used with async actions in a task, so it does
+ not raise unexpected exceptions. However, the unexpected exceptions are logged and the error message is sent
+ back to the test driver.
+ """
+ async_action_handler = self.async_actions[action]
+ cmd_id = payload["id"]
+ try:
+ result = await async_action_handler(payload)
+ except AttributeError as e:
+ # If we fail to get an attribute from the protocol presumably that's a
+ # ProtocolPart we don't implement
+ # AttributeError got an obj property in Python 3.10, for older versions we
+ # fall back to looking at the error message.
+ if ((hasattr(e, "obj") and getattr(e, "obj") == self.protocol) or
+ f"'{self.protocol.__class__.__name__}' object has no attribute" in str(e)):
+ raise NotImplementedError from e
+ except self.unimplemented_exc:
+ self.logger.warning("Action %s not implemented" % action)
+ self._send_message(cmd_id, "complete", "error", f"Action {action} not implemented")
+ except self.expected_exc as e:
+ self.logger.debug(f"Action {action} failed with an expected exception: {e}")
+ self._send_message(cmd_id, "complete", "error", f"Action {action} failed: {e}")
+ except Exception as e:
+ self.logger.warning(f"Action {action} failed with an unexpected exception: {e}")
+ self._send_message(cmd_id, "complete", "error", f"Unexpected exception: {e}")
+ else:
+ self.logger.debug(f"Action {action} completed with result {result}")
+ return_message = {"result": result}
+ self._send_message(cmd_id, "complete", "success", json.dumps(return_message))
+
+
class ActionContext:
def __init__(self, logger, protocol, context):
self.logger = logger
diff --git a/tests/wpt/tests/tools/wptrunner/wptrunner/executors/executorchrome.py b/tests/wpt/tests/tools/wptrunner/wptrunner/executors/executorchrome.py
index d972a0eea5f..153e2cb72c1 100644
--- a/tests/wpt/tests/tools/wptrunner/wptrunner/executors/executorchrome.py
+++ b/tests/wpt/tests/tools/wptrunner/wptrunner/executors/executorchrome.py
@@ -16,7 +16,7 @@ from .base import (
from .executorwebdriver import (
WebDriverCrashtestExecutor,
WebDriverFedCMProtocolPart,
- WebDriverProtocol,
+ WebDriverBidiProtocol,
WebDriverRefTestExecutor,
WebDriverRun,
WebDriverTestharnessExecutor,
@@ -200,13 +200,13 @@ class ChromeDriverDevToolsProtocolPart(ProtocolPart):
body=body)
-class ChromeDriverProtocol(WebDriverProtocol):
+class ChromeDriverProtocol(WebDriverBidiProtocol):
implements = [
ChromeDriverDevToolsProtocolPart,
ChromeDriverFedCMProtocolPart,
ChromeDriverPrintProtocolPart,
ChromeDriverTestharnessProtocolPart,
- *(part for part in WebDriverProtocol.implements
+ *(part for part in WebDriverBidiProtocol.implements
if part.name != ChromeDriverTestharnessProtocolPart.name and
part.name != ChromeDriverFedCMProtocolPart.name)
]
diff --git a/tests/wpt/tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py b/tests/wpt/tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py
index 20ae4a42118..3ecf04df9a1 100644
--- a/tests/wpt/tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py
+++ b/tests/wpt/tests/tools/wptrunner/wptrunner/executors/executorwebdriver.py
@@ -1,5 +1,6 @@
# mypy: allow-untyped-defs
+import asyncio
import json
import os
import socket
@@ -9,7 +10,8 @@ import traceback
import uuid
from urllib.parse import urljoin
-from .base import (CallbackHandler,
+from .base import (AsyncCallbackHandler,
+ CallbackHandler,
CrashtestExecutor,
RefTestExecutor,
RefTestImplementation,
@@ -35,18 +37,30 @@ from .protocol import (BaseProtocolPart,
RPHRegistrationsProtocolPart,
FedCMProtocolPart,
VirtualSensorProtocolPart,
+ BidiBrowsingContextProtocolPart,
+ BidiEventsProtocolPart,
+ BidiScriptProtocolPart,
DevicePostureProtocolPart,
+ StorageProtocolPart,
merge_dicts)
+from typing import List, Optional, Tuple
from webdriver.client import Session
-from webdriver import error
+from webdriver import error as webdriver_error
+from webdriver.bidi import error as webdriver_bidi_error
+from webdriver.bidi.protocol import bidi_deserialize
here = os.path.dirname(__file__)
class WebDriverCallbackHandler(CallbackHandler):
- unimplemented_exc = (NotImplementedError, error.UnknownCommandException)
- expected_exc = (error.WebDriverException,)
+ unimplemented_exc = (NotImplementedError, webdriver_error.UnknownCommandException)
+ expected_exc = (webdriver_error.WebDriverException,)
+
+
+class WebDriverAsyncCallbackHandler(AsyncCallbackHandler):
+ unimplemented_exc = (NotImplementedError, webdriver_bidi_error.UnknownCommandException)
+ expected_exc = (webdriver_bidi_error.BidiException,)
class WebDriverBaseProtocolPart(BaseProtocolPart):
@@ -60,7 +74,7 @@ class WebDriverBaseProtocolPart(BaseProtocolPart):
def set_timeout(self, timeout):
try:
self.webdriver.timeouts.script = timeout
- except error.WebDriverException:
+ except webdriver_error.WebDriverException:
# workaround https://bugs.chromium.org/p/chromedriver/issues/detail?id=2057
body = {"type": "script", "ms": timeout * 1000}
self.webdriver.send_session_command("POST", "timeouts", body)
@@ -84,14 +98,14 @@ class WebDriverBaseProtocolPart(BaseProtocolPart):
self.webdriver.execute_async_script("""let callback = arguments[arguments.length - 1];
addEventListener("__test_restart", e => {e.preventDefault(); callback(true)})""")
self.webdriver.execute_async_script("")
- except (error.TimeoutException,
- error.ScriptTimeoutException,
- error.JavascriptErrorException):
+ except (webdriver_error.TimeoutException,
+ webdriver_error.ScriptTimeoutException,
+ webdriver_error.JavascriptErrorException):
# A JavascriptErrorException will happen when we navigate;
# by ignoring it it's possible to reload the test whilst the
# harness remains paused
pass
- except (socket.timeout, error.NoSuchWindowException, error.UnknownErrorException, OSError):
+ except (socket.timeout, webdriver_error.NoSuchWindowException, webdriver_error.UnknownErrorException, OSError):
break
except Exception:
message = "Uncaught exception in WebDriverBaseProtocolPart.wait:\n"
@@ -101,6 +115,110 @@ addEventListener("__test_restart", e => {e.preventDefault(); callback(true)})"""
return False
+class WebDriverBidiBrowsingContextProtocolPart(BidiBrowsingContextProtocolPart):
+ def __init__(self, parent):
+ super().__init__(parent)
+ self.webdriver = None
+
+ def setup(self):
+ self.webdriver = self.parent.webdriver
+
+ async def handle_user_prompt(self,
+ context: str,
+ accept: Optional[bool] = None,
+ user_text: Optional[str] = None) -> None:
+ await self.webdriver.bidi_session.browsing_context.handle_user_prompt(
+ context=context, accept=accept, user_text=user_text)
+
+
+class WebDriverBidiEventsProtocolPart(BidiEventsProtocolPart):
+ _subscriptions: List[Tuple[List[str], Optional[List[str]]]] = []
+
+ def __init__(self, parent):
+ super().__init__(parent)
+ self.webdriver = None
+
+ def setup(self):
+ self.webdriver = self.parent.webdriver
+
+ async def _contexts_to_top_contexts(self, contexts: Optional[List[str]]) -> Optional[List[str]]:
+ """Gathers the list of top-level contexts for the given list of contexts."""
+ if contexts is None:
+ # Global subscription.
+ return None
+ top_contexts = set()
+ for context in contexts:
+ maybe_top_context = await self._get_top_context(context)
+ if maybe_top_context is not None:
+ # The context is found. Add its top-level context to the result set.
+ top_contexts.add(maybe_top_context)
+ return list(top_contexts)
+
+ async def _get_top_context(self, context: str) -> Optional[str]:
+ """Returns the top context id for the given context id."""
+ # It is done in suboptimal way by calling `getTree` for each parent context until reaches the top context.
+ # TODO: optimise. Construct the tree once and then traverse it.
+ get_tree_result = await self.webdriver.bidi_session.browsing_context.get_tree(root=context)
+ if not get_tree_result:
+ # The context is not found. Nothing to do.
+ return None
+ assert len(get_tree_result) == 1, "The context should be unique."
+ context_info = get_tree_result[0]
+ if context_info["parent"] is None:
+ # The context is top-level. Return its ID.
+ return context
+ return await self._get_top_context(context_info["parent"])
+
+ async def subscribe(self, events, contexts):
+ self.logger.info("Subscribing to events %s in %s" % (events, contexts))
+ # The BiDi subscriptions are done for top context even if the sub-context is provided. We need to get the
+ # top-level contexts list to handle the scenario when subscription is done for a sub-context which is closed
+ # afterwards. However, the subscription itself is done for the provided contexts in order to throw in case of
+ # the sub-context is removed.
+ top_contexts = await self._contexts_to_top_contexts(contexts)
+ result = await self.webdriver.bidi_session.session.subscribe(events=events, contexts=contexts)
+ # The `subscribe` method either raises an exception or adds subscription. The command is atomic, meaning in case
+ # of exception no subscription is added.
+ self._subscriptions.append((events, top_contexts))
+ return result
+
+ async def unsubscribe_all(self):
+ self.logger.info("Unsubscribing from all the events")
+ while self._subscriptions:
+ events, contexts = self._subscriptions.pop()
+ self.logger.debug("Unsubscribing from events %s in %s" % (events, contexts))
+ try:
+ await self.webdriver.bidi_session.session.unsubscribe(events=events, contexts=contexts)
+ except webdriver_bidi_error.NoSuchFrameException:
+ # The browsing context is already removed. Nothing to do.
+ pass
+ except Exception as e:
+ self.logger.error("Failed to unsubscribe from events %s in %s: %s" % (events, contexts, e))
+ # Re-raise the exception to identify regressions.
+ # TODO: consider to continue the loop in case of the exception.
+ raise e
+
+ def add_event_listener(self, name, fn):
+ self.logger.info("adding event listener %s" % name)
+ return self.webdriver.bidi_session.add_event_listener(name=name, fn=fn)
+
+
+class WebDriverBidiScriptProtocolPart(BidiScriptProtocolPart):
+ def __init__(self, parent):
+ super().__init__(parent)
+ self.webdriver = None
+
+ def setup(self):
+ self.webdriver = self.parent.webdriver
+
+ async def call_function(self, function_declaration, target, arguments=None):
+ return await self.webdriver.bidi_session.script.call_function(
+ function_declaration=function_declaration,
+ arguments=arguments,
+ target=target,
+ await_promise=True)
+
+
class WebDriverTestharnessProtocolPart(TestharnessProtocolPart):
def setup(self):
self.webdriver = self.parent.webdriver
@@ -134,7 +252,7 @@ class WebDriverTestharnessProtocolPart(TestharnessProtocolPart):
try:
self.webdriver.window_handle = window_handle
self.webdriver.window.close()
- except error.NoSuchWindowException:
+ except webdriver_error.NoSuchWindowException:
pass
def open_test_window(self, window_id):
@@ -194,7 +312,7 @@ class WebDriverTestharnessProtocolPart(TestharnessProtocolPart):
try:
self.webdriver.execute_script(self.window_loaded_script, asynchronous=True)
break
- except error.JavascriptErrorException:
+ except webdriver_error.JavascriptErrorException:
pass
@@ -242,7 +360,7 @@ class WebDriverCookiesProtocolPart(CookiesProtocolPart):
self.logger.info("Getting cookie named %s" % name)
try:
return self.webdriver.send_session_command("GET", "cookie/%s" % name)
- except error.NoSuchCookieException:
+ except webdriver_error.NoSuchCookieException:
return None
@@ -269,7 +387,7 @@ class WebDriverSendKeysProtocolPart(SendKeysProtocolPart):
def send_keys(self, element, keys):
try:
return element.send_keys(keys)
- except error.UnknownErrorException as e:
+ except webdriver_error.UnknownErrorException as e:
# workaround https://bugs.chromium.org/p/chromedriver/issues/detail?id=1999
if (e.http_status != 500 or
e.status_code != "unknown error"):
@@ -305,8 +423,8 @@ class WebDriverTestDriverProtocolPart(TestDriverProtocolPart):
def _switch_to_frame(self, index_or_elem):
try:
self.webdriver.switch_frame(index_or_elem)
- except (error.StaleElementReferenceException,
- error.NoSuchFrameException) as e:
+ except (webdriver_error.StaleElementReferenceException,
+ webdriver_error.NoSuchFrameException) as e:
raise ValueError from e
def _switch_to_parent_frame(self):
@@ -443,7 +561,15 @@ class WebDriverDevicePostureProtocolPart(DevicePostureProtocolPart):
def clear_device_posture(self):
return self.webdriver.send_session_command("DELETE", "deviceposture")
+class WebDriverStorageProtocolPart(StorageProtocolPart):
+ def setup(self):
+ self.webdriver = self.parent.webdriver
+
+ def run_bounce_tracking_mitigations(self):
+ return self.webdriver.send_session_command("DELETE", "storage/run_bounce_tracking_mitigations")
+
class WebDriverProtocol(Protocol):
+ enable_bidi = False
implements = [WebDriverBaseProtocolPart,
WebDriverTestharnessProtocolPart,
WebDriverSelectorProtocolPart,
@@ -462,7 +588,8 @@ class WebDriverProtocol(Protocol):
WebDriverFedCMProtocolPart,
WebDriverDebugProtocolPart,
WebDriverVirtualSensorPart,
- WebDriverDevicePostureProtocolPart]
+ WebDriverDevicePostureProtocolPart,
+ WebDriverStorageProtocolPart]
def __init__(self, executor, browser, capabilities, **kwargs):
super().__init__(executor, browser)
@@ -488,13 +615,13 @@ class WebDriverProtocol(Protocol):
self.webdriver = None
def connect(self):
- """Connect to browser via WebDriver."""
+ """Connect to browser via WebDriver and crete a WebDriver session."""
self.logger.debug("Connecting to WebDriver on URL: %s" % self.url)
host, port = self.url.split(":")[1].strip("/"), self.url.split(':')[-1].strip("/")
capabilities = {"alwaysMatch": self.capabilities}
- self.webdriver = Session(host, port, capabilities=capabilities)
+ self.webdriver = Session(host, port, capabilities=capabilities, enable_bidi=self.enable_bidi)
self.webdriver.start()
def teardown(self):
@@ -519,7 +646,9 @@ class WebDriverProtocol(Protocol):
# 5 seconds of extra_timeout we have as maximum to end the test before
# the external timeout from testrunner triggers.
self.webdriver.send_session_command("GET", "window", timeout=2)
- except (OSError, error.WebDriverException):
+ except (OSError, webdriver_error.WebDriverException, socket.timeout,
+ webdriver_error.UnknownErrorException,
+ webdriver_error.InvalidSessionIdException):
return False
return True
@@ -527,11 +656,40 @@ class WebDriverProtocol(Protocol):
self.testharness.load_runner(self.executor.last_environment["protocol"])
+class WebDriverBidiProtocol(WebDriverProtocol):
+ enable_bidi = True
+ implements = [WebDriverBidiBrowsingContextProtocolPart,
+ WebDriverBidiEventsProtocolPart,
+ WebDriverBidiScriptProtocolPart,
+ *(part for part in WebDriverProtocol.implements)
+ ]
+
+ def __init__(self, executor, browser, capabilities, **kwargs):
+ super().__init__(executor, browser, capabilities, **kwargs)
+ self.loop = asyncio.new_event_loop()
+
+ def connect(self):
+ super().connect()
+ self.loop.run_until_complete(self.webdriver.bidi_session.start(self.loop))
+
+ def teardown(self):
+ try:
+ self.loop.run_until_complete(self.webdriver.bidi_session.end())
+ except Exception as e:
+ message = str(getattr(e, "message", ""))
+ if message:
+ message += "\n"
+ message += traceback.format_exc()
+ self.logger.debug(message)
+ self.loop.stop()
+ super().teardown()
+
+
class WebDriverRun(TimedRunner):
def set_timeout(self):
try:
self.protocol.base.set_timeout(self.timeout + self.extra_timeout)
- except error.UnknownErrorException:
+ except webdriver_error.UnknownErrorException:
msg = "Lost WebDriver connection"
self.logger.error(msg)
return ("INTERNAL-ERROR", msg)
@@ -539,14 +697,14 @@ class WebDriverRun(TimedRunner):
def run_func(self):
try:
self.result = True, self.func(self.protocol, self.url, self.timeout)
- except (error.TimeoutException, error.ScriptTimeoutException):
+ except (webdriver_error.TimeoutException, webdriver_error.ScriptTimeoutException):
self.result = False, ("EXTERNAL-TIMEOUT", None)
except socket.timeout:
# Checking if the browser is alive below is likely to hang, so mark
# this case as a CRASH unconditionally.
self.result = False, ("CRASH", None)
except Exception as e:
- if (isinstance(e, error.WebDriverException) and
+ if (isinstance(e, webdriver_error.WebDriverException) and
e.http_status == 408 and
e.status_code == "asynchronous script timeout"):
# workaround for https://bugs.chromium.org/p/chromedriver/issues/detail?id=2001
@@ -565,6 +723,7 @@ class WebDriverRun(TimedRunner):
class WebDriverTestharnessExecutor(TestharnessExecutor):
supports_testdriver = True
protocol_cls = WebDriverProtocol
+ _get_next_message = None
def __init__(self, logger, browser, server_config, timeout_multiplier=1,
close_after_done=True, capabilities=None, debug_info=None,
@@ -579,6 +738,12 @@ class WebDriverTestharnessExecutor(TestharnessExecutor):
with open(os.path.join(here, "window-loaded.js")) as f:
self.window_loaded_script = f.read()
+ if hasattr(self.protocol, 'bidi_script'):
+ # If `bidi_script` is available, the messages can be handled via BiDi.
+ self._get_next_message = self._get_next_message_bidi
+ else:
+ self._get_next_message = self._get_next_message_classic
+
self.close_after_done = close_after_done
self.window_id = str(uuid.uuid4())
self.cleanup_after_test = cleanup_after_test
@@ -610,6 +775,11 @@ class WebDriverTestharnessExecutor(TestharnessExecutor):
# went wrong or if cleanup_after_test was False), so clean up here.
parent_window = protocol.testharness.close_old_windows()
+ # If protocol implements `bidi_events`, remove all the existing subscriptions.
+ if hasattr(protocol, 'bidi_events'):
+ # Use protocol loop to run the async cleanup.
+ protocol.loop.run_until_complete(protocol.bidi_events.unsubscribe_all())
+
# Now start the test harness
protocol.testharness.open_test_window(self.window_id)
test_window = protocol.testharness.get_test_window(self.window_id,
@@ -620,45 +790,144 @@ class WebDriverTestharnessExecutor(TestharnessExecutor):
# Wait until about:blank has been loaded
protocol.base.execute_script(self.window_loaded_script, asynchronous=True)
- handler = WebDriverCallbackHandler(self.logger, protocol, test_window)
+ # Exceptions occurred outside the main loop.
+ unexpected_exceptions = []
+
+ if hasattr(protocol, 'bidi_events'):
+ # If protocol implements `bidi_events`, forward all the events to test_driver.
+ async def process_bidi_event(method, params):
+ try:
+ self.logger.debug(f"Received bidi event: {method}, {params}")
+ if hasattr(protocol, 'bidi_browsing_context') and method == "browsingContext.userPromptOpened" and \
+ params["context"] == test_window:
+ # User prompts of the test window are handled separately. In classic implementation, this user
+ # prompt always causes an exception when `_get_next_message` is called. In BiDi it's not a case,
+ # as the BiDi protocol allows sending commands even with the user prompt opened. However, the
+ # user prompt can block the testdriver JS execution and cause the dead loop. To overcome this
+ # issue, the user prompt of the test window is always dismissed and the test is failing.
+ try:
+ await protocol.bidi_browsing_context.handle_user_prompt(params["context"])
+ except Exception as e:
+ if "no such alert" in str(e):
+ # The user prompt is already dismissed by WebDriver BiDi server. Ignore the exception.
+ pass
+ else:
+ # The exception is unexpected. Re-raising it to handle it in the main loop.
+ raise e
+ raise Exception("Unexpected user prompt in test window: %s" % params)
+ else:
+ protocol.testdriver.send_message(-1, "event", method, json.dumps({
+ "params": params,
+ "method": method}))
+ except Exception as e:
+ # As the event listener is async, the exceptions should be added to the list to be processed in the
+ # main loop.
+ self.logger.error("BiDi event processing failed: %s" % e)
+ unexpected_exceptions.append(e)
+
+ protocol.bidi_events.add_event_listener(None, process_bidi_event)
+ protocol.loop.run_until_complete(protocol.bidi_events.subscribe(['browsingContext.userPromptOpened'], None))
+
+ # If possible, support async actions.
+ if hasattr(protocol, 'loop'):
+ handler = WebDriverAsyncCallbackHandler(self.logger, protocol, test_window, protocol.loop)
+ else:
+ handler = WebDriverCallbackHandler(self.logger, protocol, test_window)
+
protocol.webdriver.url = url
while True:
- result = protocol.base.execute_script(
- self.script_resume, asynchronous=True, args=[strip_server(url)])
+ if len(unexpected_exceptions) > 0:
+ # TODO: what to do if there are more then 1 unexpected exceptions?
+ raise unexpected_exceptions[0]
+
+ test_driver_message = self._get_next_message(protocol, url, test_window)
+ self.logger.debug("Receive message from testdriver: %s" % test_driver_message)
# As of 2019-03-29, WebDriver does not define expected behavior for
# cases where the browser crashes during script execution:
#
# https://github.com/w3c/webdriver/issues/1308
- if not isinstance(result, list) or len(result) != 3:
- is_alive = self.is_alive()
+ if not isinstance(test_driver_message, list) or len(test_driver_message) != 3:
+ try:
+ is_alive = self.is_alive()
+ except webdriver_error.WebDriverException:
+ is_alive = False
if not is_alive:
raise Exception("Browser crashed during script execution.")
- # A user prompt created after starting execution of the resume
- # script will resolve the script with `null` [1, 2]. In that case,
- # cycle this event loop and handle the prompt the next time the
- # resume script executes.
+ # In case of WebDriver Classic, a user prompt created after starting execution of the resume script will
+ # resolve the script with `null` [1, 2]. In that case, cycle this event loop and handle the prompt the next
+ # time the resume script executes.
#
# [1]: Step 5.3 of https://www.w3.org/TR/webdriver/#execute-async-script
# [2]: https://www.w3.org/TR/webdriver/#dfn-execute-a-function-body
- if result is None:
+ if test_driver_message is None:
continue
- done, rv = handler(result)
+ done, rv = handler(test_driver_message)
if done:
break
- # Attempt to cleanup any leftover windows, if allowed. This is
+ # If protocol implements `bidi_events`, remove all the existing subscriptions.
+ if hasattr(protocol, 'bidi_events'):
+ # Use protocol loop to run the async cleanup.
+ protocol.loop.run_until_complete(protocol.bidi_events.unsubscribe_all())
+
+ # Attempt to clean up any leftover windows, if allowed. This is
# preferable as it will blame the correct test if something goes wrong
# closing windows, but if the user wants to see the test results we
# have to leave the window(s) open.
if self.cleanup_after_test:
protocol.testharness.close_old_windows()
+ if len(unexpected_exceptions) > 0:
+ # TODO: what to do if there are more then 1 unexpected exceptions?
+ raise unexpected_exceptions[0]
+
return rv
+ def _get_next_message_classic(self, protocol, url, _):
+ """
+ Get the next message from the test_driver using the classic WebDriver async script execution. This will block
+ the event loop until the test_driver send a message.
+ :param window:
+ """
+ return protocol.base.execute_script(self.script_resume, asynchronous=True, args=[strip_server(url)])
+
+ def _get_next_message_bidi(self, protocol, url, test_window):
+ """
+ Get the next message from the test_driver using async call. This will not block the event loop, which allows for
+ processing the events from the test_runner to test_driver while waiting for the next test_driver commands.
+ """
+ # As long as we want to be able to use scripts both in bidi and in classic mode, the script should
+ # be wrapped to some harness to emulate the WebDriver Classic async script execution. The script
+ # will be provided with the `resolve` delegate, which finishes the execution. After that the
+ # coroutine is finished as well.
+ wrapped_script = """async function(...args){
+ return new Promise((resolve, reject) => {
+ args.push(resolve);
+ (async function(){
+ %s
+ }).apply(null, args);
+ })
+ }""" % self.script_resume
+
+ bidi_url_argument = {
+ "type": "string",
+ "value": strip_server(url)
+ }
+
+ # `run_until_complete` allows processing BiDi events in the same loop while waiting for the next message.
+ message = protocol.loop.run_until_complete(protocol.bidi_script.call_function(
+ wrapped_script, target={
+ "context": test_window
+ },
+ arguments=[bidi_url_argument]))
+ # The message is in WebDriver BiDi format. Deserialize it.
+ deserialized_message = bidi_deserialize(message)
+ return deserialized_message
+
class WebDriverRefTestExecutor(RefTestExecutor):
protocol_cls = WebDriverProtocol
@@ -703,7 +972,7 @@ class WebDriverRefTestExecutor(RefTestExecutor):
height_offset = max(height_offset, 0)
try:
self.protocol.webdriver.window.position = (0, 0)
- except error.InvalidArgumentException:
+ except webdriver_error.InvalidArgumentException:
# Safari 12 throws with 0 or 1, treating them as bools; fixed in STP
self.protocol.webdriver.window.position = (2, 2)
self.protocol.webdriver.window.size = (800 + width_offset, 600 + height_offset)
diff --git a/tests/wpt/tests/tools/wptrunner/wptrunner/executors/protocol.py b/tests/wpt/tests/tools/wptrunner/wptrunner/executors/protocol.py
index 5ebdeed3599..76408aafc0d 100644
--- a/tests/wpt/tests/tools/wptrunner/wptrunner/executors/protocol.py
+++ b/tests/wpt/tests/tools/wptrunner/wptrunner/executors/protocol.py
@@ -4,7 +4,8 @@ import traceback
from http.client import HTTPConnection
from abc import ABCMeta, abstractmethod
-from typing import ClassVar, List, Type
+from typing import Any, Awaitable, Callable, ClassVar, List, Mapping, Optional, Type
+from webdriver.bidi.modules.script import Target
def merge_dicts(target, source):
@@ -203,7 +204,7 @@ class TestharnessProtocolPart(ProtocolPart):
pass
@abstractmethod
- def get_test_window(self, window_id, parent):
+ def get_test_window(self, window_id: str, parent: str) -> str:
"""Get the window handle dorresponding to the window containing the
currently active test.
@@ -262,6 +263,12 @@ class StorageProtocolPart(ProtocolPart):
:param url: A url belonging to the origin"""
pass
+ @abstractmethod
+ def run_bounce_tracking_mitigations(self):
+ """Run the Bounce Tracking Mitigations deletion/enforcement algorithm
+
+ :returns: A list of sites corresponding to bounce trackers whose state was removed"""
+ pass
class SelectorProtocolPart(ProtocolPart):
"""Protocol part for selecting elements on the page."""
@@ -300,7 +307,6 @@ class ClickProtocolPart(ProtocolPart):
pass
-
class AccessibilityProtocolPart(ProtocolPart):
"""Protocol part for accessibility introspection"""
__metaclass__ = ABCMeta
@@ -321,6 +327,83 @@ class AccessibilityProtocolPart(ProtocolPart):
pass
+class BidiBrowsingContextProtocolPart(ProtocolPart):
+ """Protocol part for managing BiDi events"""
+ __metaclass__ = ABCMeta
+ name = "bidi_browsing_context"
+
+ @abstractmethod
+ async def handle_user_prompt(self,
+ context: str,
+ accept: Optional[bool] = None,
+ user_text: Optional[str] = None) -> None:
+ """
+ Allows closing an open prompt.
+ :param context: The context of the prompt.
+ :param accept: Whether to accept or dismiss the prompt.
+ :param user_text: The text to input in the prompt.
+ """
+ pass
+
+
+class BidiEventsProtocolPart(ProtocolPart):
+ """Protocol part for managing BiDi events"""
+ __metaclass__ = ABCMeta
+ name = "bidi_events"
+
+ @abstractmethod
+ async def subscribe(self,
+ events: List[str],
+ contexts: Optional[List[str]]) -> Mapping[str, Any]:
+ """
+ Subscribes to the given events in the given contexts.
+ :param events: The events to subscribe to.
+ :param contexts: The contexts to subscribe to. If None, the function will subscribe to all contexts.
+ """
+ pass
+
+ @abstractmethod
+ async def unsubscribe_all(self):
+ """Cleans up the subscription state. Removes all the previously added subscriptions."""
+ pass
+
+ @abstractmethod
+ def add_event_listener(
+ self,
+ name: Optional[str],
+ fn: Callable[[str, Mapping[str, Any]], Awaitable[Any]]
+ ) -> Callable[[], None]:
+ """Add an event listener. The callback will be called with the event name and the event data.
+
+ :param name: The name of the event to listen for. If None, the function will be called for all events.
+ :param fn: The function to call when the event is received.
+ :return: Function to remove the added listener."""
+ pass
+
+
+class BidiScriptProtocolPart(ProtocolPart):
+ """Protocol part for executing BiDi scripts"""
+ __metaclass__ = ABCMeta
+
+ name = "bidi_script"
+
+ @abstractmethod
+ async def call_function(
+ self,
+ function_declaration: str,
+ target: Target,
+ arguments: Optional[List[Mapping[str, Any]]] = None
+ ) -> Mapping[str, Any]:
+ """
+ Executes the provided script in the given target in asynchronous mode.
+
+ :param str function_declaration: The js source of the function to execute.
+ :param script.Target target: The target in which to execute the script.
+ :param list[script.LocalValue] arguments: The arguments to pass to the script.
+ """
+ pass
+
+
class CookiesProtocolPart(ProtocolPart):
"""Protocol part for managing cookies"""
__metaclass__ = ABCMeta
diff --git a/tests/wpt/tests/tools/wptrunner/wptrunner/testdriver-extra.js b/tests/wpt/tests/tools/wptrunner/wptrunner/testdriver-extra.js
index 87d3826bfce..f7b9ae5fdbf 100644
--- a/tests/wpt/tests/tools/wptrunner/wptrunner/testdriver-extra.js
+++ b/tests/wpt/tests/tools/wptrunner/wptrunner/testdriver-extra.js
@@ -2,6 +2,7 @@
(function() {
const pending = new Map();
+ const event_target = new EventTarget();
let result = null;
let ctx_cmd_id = 0;
@@ -39,6 +40,12 @@
if (is_test_context()) {
window.__wptrunner_process_next_event();
}
+ } else if (data.type === "testdriver-event") {
+ const event_data = JSON.parse(data.message);
+ const event_name = event_data.method;
+ const event = new Event(event_name);
+ event.payload = event_data.params;
+ event_target.dispatchEvent(event);
}
});
@@ -125,23 +132,23 @@
return selector;
};
- const create_action = function(name, props) {
+ /**
+ * Create an action and return a promise that resolves when the action is complete.
+ * @param name: The name of the action to create.
+ * @param params: The properties to pass to the action.
+ * @return {Promise<any>}: A promise that resolves with the action result when the action is complete.
+ */
+ const create_action = function(name, params) {
let cmd_id;
const action_msg = {type: "action",
action: name,
- ...props};
- if (action_msg.context) {
- action_msg.context = get_window_id(action_msg.context);
- }
+ ...params};
if (is_test_context()) {
cmd_id = window.__wptrunner_message_queue.push(action_msg);
} else {
if (testharness_context === null) {
throw new Error("Tried to run in a non-testharness window without a call to set_test_context");
}
- if (action_msg.context === null) {
- action_msg.context = get_window_id(window);
- }
cmd_id = ctx_cmd_id++;
action_msg.cmd_id = cmd_id;
window.test_driver.message_test({type: "testdriver-command",
@@ -160,8 +167,55 @@
return pending_promise;
};
+ /**
+ * Create an action in a specific context and return a promise that
+ * resolves when the action is complete. This is required for WebDriver
+ * Classic actions, as they require a specific context.
+ * @param name: The name of the action to create.
+ * @param context: The context in which to run the action. `null` for the
+ * current window.
+ * @param params: The properties to pass to the action.
+ * @return {Promise<any>}: A promise that resolves with the action result
+ * when the action is complete.
+ */
+ const create_context_action = function (name, context, params) {
+ const context_params = {...params};
+ if (context) {
+ context_params.context = get_window_id(context);
+ }
+ if (context === null && !is_test_context()) {
+ context_params.context = get_window_id(window);
+ }
+ return create_action(name, context_params);
+ };
+
+ const subscribe = function (params) {
+ return create_action("bidi.session.subscribe", {
+ // Default to subscribing to the window's events.
+ contexts: [window],
+ ...params
+ });
+ };
+
window.test_driver_internal.in_automation = true;
+ window.test_driver_internal.bidi.log.entry_added.subscribe =
+ function (params) {
+ return subscribe({
+ params,
+ events: ["log.entryAdded"]
+ })
+ };
+
+ window.test_driver_internal.bidi.log.entry_added.on = function (callback) {
+ const on_event = (event) => {
+ callback(event.payload);
+ };
+ event_target.addEventListener("log.entryAdded", on_event);
+ return () => event_target.removeEventListener("log.entryAdded",
+ on_event);
+ };
+
window.test_driver_internal.set_test_context = function(context) {
if (window.__wptrunner_message_queue) {
throw new Error("Tried to set testharness context in a window containing testharness.js");
@@ -172,49 +226,49 @@
window.test_driver_internal.click = function(element) {
const selector = get_selector(element);
const context = get_context(element);
- return create_action("click", {selector, context});
+ return create_context_action("click", context, {selector});
};
window.test_driver_internal.delete_all_cookies = function(context=null) {
- return create_action("delete_all_cookies", {context});
+ return create_context_action("delete_all_cookies", context, {});
};
window.test_driver_internal.get_all_cookies = function(context=null) {
- return create_action("get_all_cookies", {context});
+ return create_context_action("get_all_cookies", context, {});
};
window.test_driver_internal.get_computed_label = function(element) {
const selector = get_selector(element);
const context = get_context(element);
- return create_action("get_computed_label", {selector, context});
+ return create_context_action("get_computed_label", context, {selector});
};
window.test_driver_internal.get_computed_role = function(element) {
const selector = get_selector(element);
const context = get_context(element);
- return create_action("get_computed_role", {selector, context});
+ return create_context_action("get_computed_role", context, {selector});
};
window.test_driver_internal.get_named_cookie = function(name, context=null) {
- return create_action("get_named_cookie", {name, context});
+ return create_context_action("get_named_cookie", context, {name});
};
window.test_driver_internal.minimize_window = function(context=null) {
- return create_action("minimize_window", {context});
+ return create_context_action("minimize_window", context, {});
};
window.test_driver_internal.set_window_rect = function(rect, context=null) {
- return create_action("set_window_rect", {rect, context});
+ return create_context_action("set_window_rect", context, {rect});
};
window.test_driver_internal.get_window_rect = function(context=null) {
- return create_action("get_window_rect", {context});
+ return create_context_action("get_window_rect", context, {});
};
window.test_driver_internal.send_keys = function(element, keys) {
const selector = get_selector(element);
const context = get_context(element);
- return create_action("send_keys", {selector, keys, context});
+ return create_context_action("send_keys", context, {selector, keys});
};
window.test_driver_internal.action_sequence = function(actions, context=null) {
@@ -233,106 +287,110 @@
}
}
}
- return create_action("action_sequence", {actions, context});
+ return create_context_action("action_sequence", context, {actions});
};
window.test_driver_internal.generate_test_report = function(message, context=null) {
- return create_action("generate_test_report", {message, context});
+ return create_context_action("generate_test_report", context, {message});
};
window.test_driver_internal.set_permission = function(permission_params, context=null) {
- return create_action("set_permission", {permission_params, context});
+ return create_context_action("set_permission", context, {permission_params});
};
window.test_driver_internal.add_virtual_authenticator = function(config, context=null) {
- return create_action("add_virtual_authenticator", {config, context});
+ return create_context_action("add_virtual_authenticator", context, {config});
};
window.test_driver_internal.remove_virtual_authenticator = function(authenticator_id, context=null) {
- return create_action("remove_virtual_authenticator", {authenticator_id, context});
+ return create_context_action("remove_virtual_authenticator", context, {authenticator_id});
};
window.test_driver_internal.add_credential = function(authenticator_id, credential, context=null) {
- return create_action("add_credential", {authenticator_id, credential, context});
+ return create_context_action("add_credential", context, {authenticator_id, credential});
};
window.test_driver_internal.get_credentials = function(authenticator_id, context=null) {
- return create_action("get_credentials", {authenticator_id, context});
+ return create_context_action("get_credentials", context, {authenticator_id});
};
window.test_driver_internal.remove_credential = function(authenticator_id, credential_id, context=null) {
- return create_action("remove_credential", {authenticator_id, credential_id, context});
+ return create_context_action("remove_credential", context, {authenticator_id, credential_id});
};
window.test_driver_internal.remove_all_credentials = function(authenticator_id, context=null) {
- return create_action("remove_all_credentials", {authenticator_id, context});
+ return create_context_action("remove_all_credentials", context, {authenticator_id});
};
window.test_driver_internal.set_user_verified = function(authenticator_id, uv, context=null) {
- return create_action("set_user_verified", {authenticator_id, uv, context});
+ return create_context_action("set_user_verified", context, {authenticator_id, uv});
};
window.test_driver_internal.set_spc_transaction_mode = function(mode, context = null) {
- return create_action("set_spc_transaction_mode", {mode, context});
+ return create_context_action("set_spc_transaction_mode", context, {mode});
};
window.test_driver_internal.set_rph_registration_mode = function(mode, context = null) {
- return create_action("set_rph_registration_mode", {mode, context});
+ return create_context_action("set_rph_registration_mode", context, {mode});
};
window.test_driver_internal.cancel_fedcm_dialog = function(context = null) {
- return create_action("cancel_fedcm_dialog", {context});
+ return create_context_action("cancel_fedcm_dialog", context, {});
};
window.test_driver_internal.click_fedcm_dialog_button = function(dialog_button, context = null) {
- return create_action("click_fedcm_dialog_button", {dialog_button, context});
+ return create_context_action("click_fedcm_dialog_button", context, {dialog_button});
};
window.test_driver_internal.select_fedcm_account = function(account_index, context = null) {
- return create_action("select_fedcm_account", {account_index, context});
+ return create_context_action("select_fedcm_account", context, {account_index});
};
window.test_driver_internal.get_fedcm_account_list = function(context = null) {
- return create_action("get_fedcm_account_list", {context});
+ return create_context_action("get_fedcm_account_list", context, {});
};
window.test_driver_internal.get_fedcm_dialog_title = function(context = null) {
- return create_action("get_fedcm_dialog_title", {context});
+ return create_context_action("get_fedcm_dialog_title", context, {});
};
window.test_driver_internal.get_fedcm_dialog_type = function(context = null) {
- return create_action("get_fedcm_dialog_type", {context});
+ return create_context_action("get_fedcm_dialog_type", context, {});
};
window.test_driver_internal.set_fedcm_delay_enabled = function(enabled, context = null) {
- return create_action("set_fedcm_delay_enabled", {enabled, context});
+ return create_context_action("set_fedcm_delay_enabled", context, {enabled});
};
window.test_driver_internal.reset_fedcm_cooldown = function(context = null) {
- return create_action("reset_fedcm_cooldown", {context});
+ return create_context_action("reset_fedcm_cooldown", context, {});
};
window.test_driver_internal.create_virtual_sensor = function(sensor_type, sensor_params={}, context=null) {
- return create_action("create_virtual_sensor", {sensor_type, sensor_params, context});
+ return create_context_action("create_virtual_sensor", context, {sensor_type, sensor_params});
};
window.test_driver_internal.update_virtual_sensor = function(sensor_type, reading, context=null) {
- return create_action("update_virtual_sensor", {sensor_type, reading, context});
+ return create_context_action("update_virtual_sensor", context, {sensor_type, reading});
};
window.test_driver_internal.remove_virtual_sensor = function(sensor_type, context=null) {
- return create_action("remove_virtual_sensor", {sensor_type, context});
+ return create_context_action("remove_virtual_sensor", context, {sensor_type});
};
window.test_driver_internal.get_virtual_sensor_information = function(sensor_type, context=null) {
- return create_action("get_virtual_sensor_information", {sensor_type, context});
+ return create_context_action("get_virtual_sensor_information", context, {sensor_type});
};
window.test_driver_internal.set_device_posture = function(posture, context=null) {
- return create_action("set_device_posture", {posture, context});
+ return create_context_action("set_device_posture", {posture, context});
};
window.test_driver_internal.clear_device_posture = function(context=null) {
- return create_action("clear_device_posture", {context});
+ return create_context_action("clear_device_posture", {context});
+ };
+
+ window.test_driver_internal.run_bounce_tracking_mitigations = function (context = null) {
+ return create_action("run_bounce_tracking_mitigations", {context});
};
})();
diff --git a/tests/wpt/tests/tools/wptrunner/wptrunner/testrunner.py b/tests/wpt/tests/tools/wptrunner/wptrunner/testrunner.py
index 003a6acbd99..c5b12ee1d93 100644
--- a/tests/wpt/tests/tools/wptrunner/wptrunner/testrunner.py
+++ b/tests/wpt/tests/tools/wptrunner/wptrunner/testrunner.py
@@ -475,6 +475,10 @@ class TestRunnerManager(threading.Thread):
self.logger.critical(message)
raise
finally:
+ self._cleanup_run_loop()
+
+ def _cleanup_run_loop(self):
+ try:
self.logger.debug("TestRunnerManager main loop terminating, starting cleanup")
skipped_tests = []
@@ -499,6 +503,10 @@ class TestRunnerManager(threading.Thread):
assert self.browser.browser is not None
self.browser.browser.cleanup()
self.logger.debug("TestRunnerManager main loop terminated")
+ finally:
+ # Even if the cleanup fails, signal that this thread is ready to
+ # exit. Otherwise, the barrier backing `parent_stop_flag` will never
+ # get enough watiers, causing wptrunner to hang.
self.parent_stop_flag.wait_for_all_managers_done()
def wait_event(self):
diff --git a/tests/wpt/tests/trusted-types/Node-multiple-arguments-tt-enforced.html b/tests/wpt/tests/trusted-types/Node-multiple-arguments-tt-enforced.html
new file mode 100644
index 00000000000..3a82c264ae4
--- /dev/null
+++ b/tests/wpt/tests/trusted-types/Node-multiple-arguments-tt-enforced.html
@@ -0,0 +1,89 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="support/helper.sub.js"></script>
+ <meta http-equiv="Content-Security-Policy" content="require-trusted-types-for 'script';">
+</head>
+<body>
+<div id="container"></div>
+<script>
+ 'use strict';
+ const container = document.querySelector("#container");
+ const policy = window.trustedTypes.createPolicy("policy", {
+ createScript: t => t,
+ });
+ function stringify(arg) {
+ return "textContent" in Object.getPrototypeOf(arg) ? arg.textContent : arg.toString()
+ }
+
+ // Test all combinations of:
+ // - DOM methods: append, prepend, replaceWith, after, before
+ // - one or two parameters, string, Text node, Trusted Script
+ // - into regular container or <script> element.
+ //
+ // Test arguments are all string literals with a semicolon, because -
+ // depending on target - it might be injected into a <script> and shouldn't
+ // cause syntax errors there.
+ const targets = ["div", "script"];
+ const pass_args = [
+ [ policy.createScript("'createScript';") ],
+ [ policy.createScript("'createScript #1';"), policy.createScript("'#2;'") ],
+ [ "'plain text';" ],
+ [ "'plain text #1';", "'plain text #2';" ],
+ [ document.createTextNode("'node';") ],
+ [ document.createTextNode("'node #1';"),
+ document.createTextNode("'node #2';") ],
+ [ "'mixed';", document.createTextNode("'node';") ],
+ [ "'mixed';", policy.createScript("'script';") ],
+ [ document.createTextNode("'node';"),
+ policy.createScript("'script';") ],
+ ];
+ const all_args = [].concat(pass_args);
+
+ for (const target of targets) {
+ for (const args of all_args) {
+ var should_fail = false;
+ var fail_string = should_fail ? "fail" : "pass";
+
+ for (const setter of [container.replaceWith, container.after, container.before]) {
+ test(t => {
+ var outer = document.createElement(target);
+ container.appendChild(outer);
+ var inner = document.createElement("p");
+ outer.appendChild(inner);
+ var test_fn = _ => { setter.apply(inner, args); };
+ var expected;
+ if (should_fail) {
+ assert_throws_js(TypeError, test_fn, "This should throw.");
+ expected = "";
+ } else {
+ test_fn();
+ expected = args.map(stringify).join("");
+ }
+ assert_equals(outer.textContent, expected);
+ }, `${setter.name}(${args.toString()}) on <${target}> should ${fail_string}`);
+ }
+
+ for (const setter of [container.append, container.prepend]) {
+ test(t => {
+ let outer = document.createElement(target);
+ container.appendChild(outer);
+ var test_fn = _ => { setter.apply(outer, args); };
+ var expected;
+ if (should_fail) {
+ assert_throws_js(TypeError, test_fn, "This should throw.");
+ expected = "";
+ } else {
+ test_fn();
+ expected = args.map(stringify).join("");
+ }
+ assert_equals(outer.textContent, expected);
+ }, `${setter.name}(${args.toString()}) on <${target}> should ${fail_string}`);
+ }
+ }
+ }
+</script>
+</body>
+</html>
diff --git a/tests/wpt/tests/trusted-types/block-Node-multiple-arguments.html b/tests/wpt/tests/trusted-types/block-Node-multiple-arguments.html
deleted file mode 100644
index c3e7671534e..00000000000
--- a/tests/wpt/tests/trusted-types/block-Node-multiple-arguments.html
+++ /dev/null
@@ -1,91 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
- <script src="/resources/testharness.js"></script>
- <script src="/resources/testharnessreport.js"></script>
- <script src="support/helper.sub.js"></script>
- <meta http-equiv="Content-Security-Policy" content="require-trusted-types-for 'script';">
-</head>
-<body>
-<div id="container"></div>
-<script>
- 'use strict';
- const container = document.querySelector("#container");
- const policy = window.trustedTypes.createPolicy("policy", {
- createScript: t => t,
- });
- function stringify(arg) {
- return "textContent" in Object.getPrototypeOf(arg) ? arg.textContent : arg.toString()
- }
-
- // Test all combinations of:
- // - DOM methods: append, prepend, replaceWith, after, before
- // - one or two parameters, string, Text node, Trusted Script
- // - into regular container or <script> element.
- //
- // Test arguments are all string literals with a semicolon, because -
- // depending on target - it might be injected into a <script> and shouldn't
- // cause syntax errors there.
- const targets = ["div", "script"];
- const pass_args = [
- [ policy.createScript("'createScript';") ],
- [ policy.createScript("'createScript #1';"), policy.createScript("'#2;'") ],
- ];
- const fail_args = [
- [ "'plain text';" ],
- [ "'plain text #1';", "'plain text #2';" ],
- [ document.createTextNode("'node';") ],
- [ document.createTextNode("'node #1';"),
- document.createTextNode("'node #2';") ],
- [ "'mixed';", document.createTextNode("'node';") ],
- [ "'mixed';", policy.createScript("'script';") ],
- [ document.createTextNode("'node';"),
- policy.createScript("'script';") ],
- ];
- const all_args = [].concat(pass_args).concat(fail_args);
-
- for (const target of targets) {
- for (const args of all_args) {
- var should_fail = target == "script" && fail_args.indexOf(args) != -1;
- var fail_string = should_fail ? "fail" : "pass";
-
- for (const setter of [container.replaceWith, container.after, container.before]) {
- test(t => {
- var outer = document.createElement(target);
- container.appendChild(outer);
- var inner = document.createElement("p");
- outer.appendChild(inner);
- var test_fn = _ => { setter.apply(inner, args); };
- var expected;
- if (should_fail) {
- assert_throws_js(TypeError, test_fn, "This should throw.");
- expected = "";
- } else {
- test_fn();
- expected = args.map(stringify).join("");
- }
- assert_equals(outer.textContent, expected);
- }, `${setter.name}(${args.toString()}) on <${target}> should ${fail_string}`);
- }
-
- for (const setter of [container.append, container.prepend]) {
- test(t => {
- let outer = document.createElement(target);
- container.appendChild(outer);
- var test_fn = _ => { setter.apply(outer, args); };
- var expected;
- if (should_fail) {
- assert_throws_js(TypeError, test_fn, "This should throw.");
- expected = "";
- } else {
- test_fn();
- expected = args.map(stringify).join("");
- }
- assert_equals(outer.textContent, expected);
- }, `${setter.name}(${args.toString()}) on <${target}> should ${fail_string}`);
- }
- }
- }
-</script>
-</body>
-</html>
diff --git a/tests/wpt/tests/trusted-types/block-string-assignment-to-Document-parseHTMLUnsafe.html b/tests/wpt/tests/trusted-types/block-string-assignment-to-Document-parseHTMLUnsafe.html
index 83dfcda5d92..405da5f1643 100644
--- a/tests/wpt/tests/trusted-types/block-string-assignment-to-Document-parseHTMLUnsafe.html
+++ b/tests/wpt/tests/trusted-types/block-string-assignment-to-Document-parseHTMLUnsafe.html
@@ -34,13 +34,13 @@
// After default policy creation string assignment implicitly calls createHTML.
test(t => {
let p = window.trustedTypes.createPolicy("default", { createHTML: createHTMLJS }, true);
- let doc = Document.parseHTMLUnsafe(INPUTS.HTML, "text/html");
+ let doc = Document.parseHTMLUnsafe(INPUTS.HTML);
assert_equals(doc.body.innerText, RESULTS.HTML);
}, "'Document.parseHTMLUnsafe(string)' assigned via default policy (successful HTML transformation).");
// After default policy creation null assignment implicitly calls createHTML.
test(t => {
- var doc = Document.parseHTMLUnsafe(null, "text/html");
+ var doc = Document.parseHTMLUnsafe(null);
assert_equals(doc.body.innerText, "null");
}, "'Document.parseHTMLUnsafe(null)' assigned via default policy does not throw");
</script>
diff --git a/tests/wpt/tests/urlpattern/WEB_FEATURES.yml b/tests/wpt/tests/urlpattern/WEB_FEATURES.yml
new file mode 100644
index 00000000000..cb82ba5cda2
--- /dev/null
+++ b/tests/wpt/tests/urlpattern/WEB_FEATURES.yml
@@ -0,0 +1,3 @@
+features:
+- name: urlpattern
+ files: "**"
diff --git a/tests/wpt/tests/wai-aria/role/contextual-roles.html b/tests/wpt/tests/wai-aria/role/contextual-roles.html
index ff5c073e954..234f42bb792 100644
--- a/tests/wpt/tests/wai-aria/role/contextual-roles.html
+++ b/tests/wpt/tests/wai-aria/role/contextual-roles.html
@@ -74,9 +74,7 @@
2. If <footer> is scoped to <body>, it should be 'contentinfo' as expected
see: https://w3c.github.io/html-aam/#el-footer-ancestorbody -->
- <main>
- <footer data-testname="footer element scoped to main element is generic" class="ex-generic">x</footer>
- </main>
+ <!-- main>footer -> ./roles-contextual.tentative.html -->
<footer data-testname="footer scoped to body element is contentinfo" data-expectedrole="contentinfo" class="ex">x</footer>
<div role="contentinfo" data-testname="contentinfo region scoped to body element is contentinfo" data-expectedrole="contentinfo" class="ex">x</div>
diff --git a/tests/wpt/tests/wai-aria/role/contextual-roles.tentative.html b/tests/wpt/tests/wai-aria/role/contextual-roles.tentative.html
new file mode 100644
index 00000000000..efec67b7ae5
--- /dev/null
+++ b/tests/wpt/tests/wai-aria/role/contextual-roles.tentative.html
@@ -0,0 +1,30 @@
+<!doctype html>
+<html>
+<head>
+ <title>Tentative: Contextual Role Verification Tests</title>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script src="/resources/testdriver.js"></script>
+ <script src="/resources/testdriver-vendor.js"></script>
+ <script src="/resources/testdriver-actions.js"></script>
+ <script src="/wai-aria/scripts/aria-utils.js"></script>
+</head>
+<body>
+
+<!--
+ New sectionheader and sectionfooter roles.
+ See https://github.com/w3c/aria/pull/1931
+-->
+<main>
+ <div role="sectionfooter" data-testname="role is sectionfooter (in main)" data-expectedrole="sectionfooter" class="ex">x</div>
+</main>
+<main>
+ <div role="sectionheader" data-testname="role is sectionheader (in main)" data-expectedrole="sectionheader" class="ex">x</div>
+</main>
+
+<script>
+ AriaUtils.verifyRolesBySelector(".ex");
+</script>
+
+</body>
+</html> \ No newline at end of file
diff --git a/tests/wpt/tests/web-animations/animation-model/animation-types/property-list.js b/tests/wpt/tests/web-animations/animation-model/animation-types/property-list.js
index 98ab02a1221..2e5e876204b 100644
--- a/tests/wpt/tests/web-animations/animation-model/animation-types/property-list.js
+++ b/tests/wpt/tests/web-animations/animation-model/animation-types/property-list.js
@@ -1,6 +1,12 @@
'use strict';
const gCSSProperties1 = {
+ 'alignment-baseline': {
+ // https://drafts.csswg.org/css-inline/#propdef-alignment-baseline
+ types: [
+ { type: 'discrete', options: [ [ 'baseline', 'middle' ] ] }
+ ]
+ },
'align-content': {
// https://drafts.csswg.org/css-align/#propdef-align-content
types: [
@@ -19,6 +25,12 @@ const gCSSProperties1 = {
{ type: 'discrete', options: [ [ 'flex-start', 'flex-end' ] ] }
]
},
+ 'appearance': {
+ // https://drafts.csswg.org/css-ui/#appearance-switching
+ types: [
+ { type: 'discrete' , options: [ [ 'auto', 'none' ] ] }
+ ]
+ },
'backface-visibility': {
// https://drafts.csswg.org/css-transforms/#propdef-backface-visibility
types: [
@@ -92,6 +104,16 @@ const gCSSProperties1 = {
types: [
]
},
+ 'block-step-insert': {
+ // https://drafts.csswg.org/css-rhythm/#block-step-insert
+ types: [
+ { type: 'discrete', options: [ [ 'margin', 'padding' ] ] }
+ ]
+ },
+ 'block-step-size': {
+ // https://drafts.csswg.org/css-rhythm/#block-step-size
+ types: [ 'length' ]
+ },
'border-block-end-color': {
// https://drafts.csswg.org/css-logical-props/#propdef-border-block-end-color
types: [
@@ -308,6 +330,12 @@ const gCSSProperties1 = {
{ type: 'discrete', options: [ [ 'content-box', 'border-box' ] ] }
]
},
+ 'buffered-rendering': {
+ // https://www.w3.org/TR/SVGTiny12/painting.html#BufferedRenderingProperty
+ types: [
+ { type: 'discrete', options: [ [ 'auto', 'dynamic' ] ] }
+ ]
+ },
'caption-side': {
// https://drafts.csswg.org/css-tables/#propdef-caption-side
types: [
@@ -367,6 +395,10 @@ const gCSSProperties1 = {
{ type: 'discrete', options: [ [ 'srgb', 'linearrgb' ] ] }
]
},
+ 'columns': {
+ // https://drafts.csswg.org/css-multicol/#propdef-columns
+ types: [ 'positiveInteger', 'length' ]
+ },
'column-count': {
// https://drafts.csswg.org/css-multicol/#propdef-column-count
types: [ 'positiveInteger',
@@ -478,6 +510,12 @@ const gCSSProperties1 = {
{ type: 'discrete', options: [ [ 'row', 'row-reverse' ] ] }
]
},
+ 'flex-flow': {
+ // https://drafts.csswg.org/css-flexbox/#propdef-flex-flow
+ types: [
+ { type: 'discrete', options: [ [ 'row', 'row-reverse wrap' ] ] }
+ ]
+ },
'flex-grow': {
// https://drafts.csswg.org/css-flexbox/#flex-grow-property
types: [ 'positiveNumber' ]
@@ -621,6 +659,18 @@ const gCSSProperties1 = {
types: [
]
},
+ 'gap': {
+ // https://drafts.csswg.org/css-align/#propdef-gap
+ types: [ 'length',
+ { type: 'discrete', options: [ [ 'normal', '200px' ] ] }
+ ]
+ },
+ 'grid-area': {
+ // https://drafts.csswg.org/css-grid/#propdef-grid-area
+ types: [
+ { type: 'discrete', options: [ [ '1', '5' ] ] }
+ ]
+ },
'grid-auto-columns': {
// https://drafts.csswg.org/css-grid/#propdef-grid-auto-columns
types: [
@@ -639,6 +689,12 @@ const gCSSProperties1 = {
{ type: 'discrete', options: [ [ '1px', '5px' ] ] }
]
},
+ 'grid-column': {
+ // https://drafts.csswg.org/css-grid/#propdef-grid-column
+ types: [
+ { type: 'discrete', options: [ [ '1', '5' ] ] }
+ ]
+ },
'grid-column-end': {
// https://drafts.csswg.org/css-grid/#propdef-grid-column-end
types: [
@@ -656,6 +712,12 @@ const gCSSProperties1 = {
{ type: 'discrete', options: [ [ '1', '5' ] ] }
]
},
+ 'grid-row': {
+ // https://drafts.csswg.org/css-grid/#propdef-grid-row
+ types: [
+ { type: 'discrete', options: [ [ '1', '5' ] ] }
+ ]
+ },
'grid-row-end': {
// https://drafts.csswg.org/css-grid/#propdef-grid-row-end
types: [
@@ -673,8 +735,14 @@ const gCSSProperties1 = {
{ type: 'discrete', options: [ [ '1', '5' ] ] }
]
},
+ 'grid-template': {
+ // https://drafts.csswg.org/css-grid/#propdef-grid-template
+ types: [
+ { type: 'discrete', options: [ [ '". . a b" ". . a b"', 'none' ] ] }
+ ]
+ },
'grid-template-areas': {
- // https://drafts.csswg.org/css-template/#grid-template-areas
+ // https://drafts.csswg.org/css-grid/#propdef-grid-template-areas
types: [
{ type: 'discrete', options: [ [ '". . a b" ". . a b"', 'none' ] ] }
]
@@ -684,6 +752,12 @@ const gCSSProperties1 = {
types: [
]
},
+ 'hanging-punctuation': {
+ // https://drafts.csswg.org/css-text/#hanging-punctuation-property
+ types: [
+ { type: 'discrete', options: [ [ 'none', 'first last'] ] }
+ ]
+ },
'hyphens': {
// https://drafts.csswg.org/css-text-3/#propdef-hyphens
types: [
@@ -765,6 +839,12 @@ const gCSSProperties2 = {
[ 'normal', '10', 'normal', '100px' ] ] }
]
},
+ 'list-style': {
+ // https://drafts.csswg.org/css-lists-3/#propdef-list-style
+ types: [
+ { type: 'discrete', options: [ [ 'inside url("http://localhost/test-1") circle', 'outside url("http://localhost/test-2") square' ] ] },
+ ]
+ },
'list-style-image': {
// https://drafts.csswg.org/css-lists-3/#propdef-list-style-image
types: [
@@ -1042,6 +1122,7 @@ const gCSSProperties2 = {
'overflow': {
// https://drafts.csswg.org/css-overflow/#propdef-overflow
types: [
+ { type: 'discrete', options: [ [ 'visible', 'hidden' ] ] }
]
},
'overflow-wrap': {
@@ -1134,6 +1215,24 @@ const gCSSProperties2 = {
// https://drafts.csswg.org/css-transforms-1/#propdef-perspective-origin
types: [ 'position' ]
},
+ 'place-content': {
+ // https://drafts.csswg.org/css-align/#propdef-place-content
+ types: [
+ { type: 'discrete', options: [ [ 'start', 'end' ] ] }
+ ]
+ },
+ 'place-items': {
+ // https://drafts.csswg.org/css-align/#propdef-place-items
+ types: [
+ { type: 'discrete', options: [ [ 'start', 'end' ] ] }
+ ]
+ },
+ 'place-self': {
+ // https://drafts.csswg.org/css-align/#propdef-place-self
+ types: [
+ { type: 'discrete', options: [ [ 'start', 'end' ] ] }
+ ]
+ },
'pointer-events': {
// https://svgwg.org/svg2-draft/interact.html#PointerEventsProperty
types: [
@@ -1184,6 +1283,24 @@ const gCSSProperties2 = {
{ type: 'discrete', options: [ [ 'auto', 'smooth' ] ] }
]
},
+ 'scroll-snap-align': {
+ // https://drafts.csswg.org/css-scroll-snap/#propdef-scroll-snap-align
+ types: [
+ { type: 'discrete', options: [ [ 'none', 'start' ]] }
+ ]
+ },
+ 'scroll-snap-stop': {
+ // https://drafts.csswg.org/css-scroll-snap/#propdef-scroll-snap-stop
+ types: [
+ { type: 'discrete', options: [ [ 'normal', 'always' ]] }
+ ]
+ },
+ 'scroll-snap-type': {
+ // https://drafts.csswg.org/css-scroll-snap/#propdef-scroll-snap-type
+ types: [
+ { type: 'discrete', options: [ [ 'none', 'x mandatory' ]] }
+ ]
+ },
'scrollbar-color': {
// https://drafts.csswg.org/css-scrollbars/#propdef-scrollbar-color
types: [ 'colorPair' ]
@@ -1227,6 +1344,10 @@ const gCSSProperties2 = {
types: [
]
},
+ 'stroke-color': {
+ // https://drafts.fxtf.org/fill-stroke-3/#propdef-stroke-color
+ types: [ 'color' ]
+ },
'stroke-dasharray': {
// https://svgwg.org/svg2-draft/painting.html#StrokeDasharrayProperty
types: [
@@ -1297,6 +1418,24 @@ const gCSSProperties2 = {
{ type: 'discrete', options: [ [ 'normal', 'no-autospace' ] ] }
]
},
+ 'text-box-edge': {
+ // https://drafts.csswg.org/css-inline-3/#text-edges
+ types: [
+ { type: 'discrete', options: [ [ 'leading', 'text' ] ] }
+ ]
+ },
+ 'text-box-trim': {
+ // https://drafts.csswg.org/css-inline-3/#propdef-text-box-trim
+ types: [
+ { type: 'discrete', options: [ [ 'none', 'start' ] ] }
+ ]
+ },
+ 'text-decoration': {
+ // https://drafts.csswg.org/css-text-decor-3/#propdef-text-decoration
+ types: [
+ { type: 'discrete', options: [ [ 'underline', 'overline' ] ] }
+ ]
+ },
'text-decoration-color': {
// https://drafts.csswg.org/css-text-decor-3/#propdef-text-decoration-color
types: [ 'color' ]
@@ -1307,6 +1446,18 @@ const gCSSProperties2 = {
{ type: 'discrete', options: [ [ 'underline', 'overline' ] ] }
]
},
+ 'text-decoration-skip': {
+ // https://drafts.csswg.org/css-text-decor-4/#propdef-text-decoration-skip
+ types: [
+ { type: 'discrete', options: [ [ 'auto', 'none' ] ] }
+ ]
+ },
+ 'text-decoration-skip-ink': {
+ // https://drafts.csswg.org/css-text-decor-4/#propdef-text-decoration-skip-ink
+ types: [
+ { type: 'discrete', options: [ [ 'auto', 'none' ] ] }
+ ]
+ },
'text-decoration-style': {
// http://dev.w3.org/csswg/css-text-decor-3/#propdef-text-decoration-style
types: [
diff --git a/tests/wpt/tests/webauthn/public-key-credential-creation-options-from-json.https.window.js b/tests/wpt/tests/webauthn/public-key-credential-creation-options-from-json.https.window.js
index fe2df1ef7fd..b3882146f0c 100644
--- a/tests/wpt/tests/webauthn/public-key-credential-creation-options-from-json.https.window.js
+++ b/tests/wpt/tests/webauthn/public-key-credential-creation-options-from-json.https.window.js
@@ -53,7 +53,10 @@ test(() => {
assert_true(bytesEqual(actual.challenge, expected.challenge));
assertJsonEquals(actual.pubKeyCredParams, expected.pubKeyCredParams, "pk");
assert_equals(actual.attestation, expected.attestation);
- assertJsonEquals(actual.hints, expected.hints);
+ if (actual.hasOwnProperty('hints')) {
+ // Not all implementations support hints yet.
+ assertJsonEquals(actual.hints, expected.hints);
+ }
}, "parseCreationOptionsFromJSON()");
test(() => {
@@ -174,25 +177,65 @@ test(() => {
},
},
},
- // The spec defaults the following fields:
- attestation: "none",
- hints: [],
},
};
- assert_equals(actual.extensions.appidExclude, expected.extensions.appidExclude);
- assert_equals(actual.extensions.hmacCreateSecret, expected.extensions.hmacCreateSecret);
- assert_equals(actual.extensions.credentialProtectionPolicy, expected.extensions.credentialProtectionPolicy);
- assert_equals(actual.extensions.enforceCredentialProtectionPolicy, expected.extensions.enforceCredentialProtectionPolicy);
- assert_equals(actual.extensions.minPinLength, expected.extensions.minPinLength);
- assert_equals(actual.extensions.credProps, expected.extensions.credProps);
- assert_equals(actual.extensions.largeBlob.support, expected.extensions.largeBlob.support);
- assert_true(bytesEqual(actual.extensions.largeBlob.write, expected.extensions.largeBlob.write));
- assert_true(bytesEqual(actual.extensions.credBlob, expected.extensions.credBlob));
- assertJsonEquals(actual.extensions.supplementalPubKeys, expected.extensions.supplementalPubKeys);
- let prfValuesEquals = (a, b) => {
- return bytesEqual(a.first, b.first) && bytesEqual(a.second, b.second);
- };
- assert_true(prfValuesEquals(actual.extensions.prf.eval, expected.extensions.prf.eval), "prf eval");
- assert_true(prfValuesEquals(actual.extensions.prf.evalByCredential["test cred"], expected.extensions.prf.evalByCredential["test cred"]), "prf ebc");
+ // Some implementations do not support all of these extensions.
+ if (actual.extensions.hasOwnProperty('appidExclude')) {
+ assert_equals(
+ actual.extensions.appidExclude, expected.extensions.appidExclude);
+ }
+ if (actual.extensions.hasOwnProperty('hmacCreateSecret')) {
+ assert_equals(
+ actual.extensions.hmacCreateSecret,
+ expected.extensions.hmacCreateSecret);
+ }
+ if (actual.extensions.hasOwnProperty('credentialProtectionPolicy')) {
+ assert_equals(
+ actual.extensions.credentialProtectionPolicy,
+ expected.extensions.credentialProtectionPolicy);
+ }
+ if (actual.extensions.hasOwnProperty('enforceCredentialProtectionPolicy')) {
+ assert_equals(
+ actual.extensions.enforceCredentialProtectionPolicy,
+ expected.extensions.enforceCredentialProtectionPolicy);
+ }
+ if (actual.extensions.hasOwnProperty('minPinLength')) {
+ assert_equals(
+ actual.extensions.minPinLength, expected.extensions.minPinLength);
+ }
+ if (actual.extensions.hasOwnProperty('credProps')) {
+ assert_equals(actual.extensions.credProps, expected.extensions.credProps);
+ }
+ if (actual.extensions.hasOwnProperty('largeBlob')) {
+ assert_equals(
+ actual.extensions.largeBlob.support,
+ expected.extensions.largeBlob.support);
+ assert_true(bytesEqual(
+ actual.extensions.largeBlob.write,
+ expected.extensions.largeBlob.write));
+ }
+ if (actual.extensions.hasOwnProperty('credBlob')) {
+ assert_true(
+ bytesEqual(actual.extensions.credBlob, expected.extensions.credBlob));
+ }
+ if (actual.extensions.hasOwnProperty('supplementalPubKeys')) {
+ assertJsonEquals(
+ actual.extensions.supplementalPubKeys,
+ expected.extensions.supplementalPubKeys);
+ }
+ if (actual.extensions.hasOwnProperty('prf')) {
+ let prfValuesEquals = (a, b) => {
+ return bytesEqual(a.first, b.first) && bytesEqual(a.second, b.second);
+ };
+ assert_true(
+ prfValuesEquals(
+ actual.extensions.prf.eval, expected.extensions.prf.eval),
+ 'prf eval');
+ assert_true(
+ prfValuesEquals(
+ actual.extensions.prf.evalByCredential['test cred'],
+ expected.extensions.prf.evalByCredential['test cred']),
+ 'prf ebc');
+ }
}, "parseCreationOptionsFromJSON() with extensions");
diff --git a/tests/wpt/tests/webauthn/public-key-credential-request-options-from-json.https.window.js b/tests/wpt/tests/webauthn/public-key-credential-request-options-from-json.https.window.js
index 82e778b027d..6bcfe03e4d9 100644
--- a/tests/wpt/tests/webauthn/public-key-credential-request-options-from-json.https.window.js
+++ b/tests/wpt/tests/webauthn/public-key-credential-request-options-from-json.https.window.js
@@ -36,7 +36,10 @@ test(() => {
assert_equals(actual.allowCredentials[0].type, expected.allowCredentials[0].type);
assert_true(bytesEqual(actual.allowCredentials[0].id, expected.allowCredentials[0].id));
assert_equals(actual.userVerification, expected.userVerification);
- assertJsonEquals(actual.hints, expected.hints);
+ if (actual.hasOwnProperty("hints")) {
+ // Not all implementations support hints yet.
+ assertJsonEquals(actual.hints, expected.hints);
+ }
}, "parseRequestOptionsFromJSON()");
test(() => {
@@ -96,12 +99,32 @@ test(() => {
};
assert_equals(actual.extensions.appid, expected.extensions.appid);
- assert_equals(actual.extensions.largeBlob.read, expected.extensions.largeBlob.read);
- assert_equals(actual.extensions.getCredBlob, expected.extensions.getCredBlob);
- assertJsonEquals(actual.extensions.supplementalPubKeys, expected.extensions.supplementalPubKeys);
- let prfValuesEquals = (a, b) => {
- return bytesEqual(a.first, b.first) && bytesEqual(a.second, b.second);
- };
- assert_true(prfValuesEquals(actual.extensions.prf.eval, expected.extensions.prf.eval), "prf eval");
- assert_true(prfValuesEquals(actual.extensions.prf.evalByCredential["test cred"], expected.extensions.prf.evalByCredential["test cred"]), "prf ebc");
+ // Some implementations do not support all of these extensions.
+ if (actual.extensions.hasOwnProperty('largeBlob')) {
+ assert_equals(
+ actual.extensions.largeBlob.read, expected.extensions.largeBlob.read);
+ }
+ if (actual.extensions.hasOwnProperty('getCredBlob')) {
+ assert_equals(
+ actual.extensions.getCredBlob, expected.extensions.getCredBlob);
+ }
+ if (actual.extensions.hasOwnProperty('supplementalPubKeys')) {
+ assertJsonEquals(
+ actual.extensions.supplementalPubKeys,
+ expected.extensions.supplementalPubKeys);
+ }
+ if (actual.extensions.hasOwnProperty('prf')) {
+ let prfValuesEquals = (a, b) => {
+ return bytesEqual(a.first, b.first) && bytesEqual(a.second, b.second);
+ };
+ assert_true(
+ prfValuesEquals(
+ actual.extensions.prf.eval, expected.extensions.prf.eval),
+ 'prf eval');
+ assert_true(
+ prfValuesEquals(
+ actual.extensions.prf.evalByCredential['test cred'],
+ expected.extensions.prf.evalByCredential['test cred']),
+ 'prf ebc');
+ }
}, "parseRequestOptionsFromJSON() with extensions");
diff --git a/tests/wpt/tests/webdriver/tests/bidi/__init__.py b/tests/wpt/tests/webdriver/tests/bidi/__init__.py
index c8715183b01..c42b5f3e501 100644
--- a/tests/wpt/tests/webdriver/tests/bidi/__init__.py
+++ b/tests/wpt/tests/webdriver/tests/bidi/__init__.py
@@ -40,6 +40,10 @@ def any_int(actual: Any) -> None:
assert isinstance(actual, int)
+def any_number(actual: Any) -> None:
+ assert isinstance(actual, int) or isinstance(actual, float)
+
+
def any_int_or_null(actual: Any) -> None:
if actual is not None:
any_int(actual)
diff --git a/tests/wpt/tests/webdriver/tests/bidi/browsing_context/close/prompt_unload.py b/tests/wpt/tests/webdriver/tests/bidi/browsing_context/close/prompt_unload.py
index e7d88ad272d..065e8f32494 100644
--- a/tests/wpt/tests/webdriver/tests/bidi/browsing_context/close/prompt_unload.py
+++ b/tests/wpt/tests/webdriver/tests/bidi/browsing_context/close/prompt_unload.py
@@ -23,7 +23,7 @@ async def test_prompt_unload_not_triggering_dialog(
new_context = await bidi_session.browsing_context.create(type_hint=type_hint)
- # Set up event listener to make sure the "beforeunload" event is not emitted
+ # Set up event listener to make sure the "browsingContext.userPromptOpened" event is not emitted
await subscribe_events([USER_PROMPT_OPENED_EVENT, CONTEXT_DESTROYED_EVENT])
# Track all received browsingContext.userPromptOpened events in the events array
events = []
@@ -64,7 +64,7 @@ async def test_prompt_unload_triggering_dialog(
new_context = await bidi_session.browsing_context.create(type_hint=type_hint)
- # Set up event listener to make sure the "beforeunload" event is not emitted
+ # Set up event listener to make sure the "browsingContext.contextDestroyed" event is not emitted
await subscribe_events([USER_PROMPT_OPENED_EVENT, CONTEXT_DESTROYED_EVENT])
user_prompt_opened = wait_for_event(USER_PROMPT_OPENED_EVENT)
diff --git a/tests/wpt/tests/webdriver/tests/bidi/browsing_context/navigate/navigate.py b/tests/wpt/tests/webdriver/tests/bidi/browsing_context/navigate/navigate.py
index 1f003f4aa69..8f2fd4822ab 100644
--- a/tests/wpt/tests/webdriver/tests/bidi/browsing_context/navigate/navigate.py
+++ b/tests/wpt/tests/webdriver/tests/bidi/browsing_context/navigate/navigate.py
@@ -107,3 +107,67 @@ async def test_same_document_navigation_in_before_unload(bidi_session, new_tab,
url_after = url_before.replace("empty.html", "other.html")
await navigate_and_assert(bidi_session, new_tab, url_after, "complete")
+
+
+@pytest.mark.capabilities({"unhandledPromptBehavior": {'beforeUnload': 'ignore'}})
+async def test_wait_none_with_beforeunload_prompt(
+ bidi_session, new_tab, setup_beforeunload_page, inline
+):
+ await setup_beforeunload_page(new_tab)
+
+ url_after = inline("<div>foo</div>")
+
+ result = await bidi_session.browsing_context.navigate(
+ context=new_tab["context"], url=url_after, wait="none"
+ )
+
+ assert result["url"] == url_after
+ any_string(result["navigation"])
+
+
+@pytest.mark.capabilities({"unhandledPromptBehavior": {'beforeUnload': 'ignore'}})
+async def test_wait_none_with_beforeunload_prompt_in_iframe(
+ bidi_session, new_tab, setup_beforeunload_page, inline
+):
+ page = inline(f"""<iframe src={inline("foo")}></iframe>""")
+ await bidi_session.browsing_context.navigate(
+ context=new_tab["context"], url=page, wait="complete"
+ )
+
+ contexts = await bidi_session.browsing_context.get_tree(root=new_tab["context"])
+ iframe_context = contexts[0]["children"][0]
+
+ await setup_beforeunload_page(iframe_context)
+
+ url_after = inline("<div>foo</div>")
+
+ result = await bidi_session.browsing_context.navigate(
+ context=iframe_context["context"], url=url_after, wait="none"
+ )
+
+ assert result["url"] == url_after
+ any_string(result["navigation"])
+
+
+@pytest.mark.capabilities({"unhandledPromptBehavior": {'beforeUnload': 'ignore'}})
+async def test_wait_none_with_beforeunload_prompt_in_iframe_navigate_in_top_context(
+ bidi_session, new_tab, setup_beforeunload_page, inline
+):
+ page = inline(f"""<iframe src={inline("foo")}></iframe>""")
+ await bidi_session.browsing_context.navigate(
+ context=new_tab["context"], url=page, wait="complete"
+ )
+
+ contexts = await bidi_session.browsing_context.get_tree(root=new_tab["context"])
+ iframe_context = contexts[0]["children"][0]
+
+ await setup_beforeunload_page(iframe_context)
+
+ url_after = inline("<div>foo</div>")
+
+ result = await bidi_session.browsing_context.navigate(
+ context=new_tab["context"], url=url_after, wait="none"
+ )
+
+ assert result["url"] == url_after
+ any_string(result["navigation"])
diff --git a/tests/wpt/tests/webdriver/tests/bidi/browsing_context/navigation_failed/__init__.py b/tests/wpt/tests/webdriver/tests/bidi/browsing_context/navigation_failed/__init__.py
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/tests/wpt/tests/webdriver/tests/bidi/browsing_context/navigation_failed/__init__.py
diff --git a/tests/wpt/tests/webdriver/tests/bidi/browsing_context/navigation_failed/navigation_failed.py b/tests/wpt/tests/webdriver/tests/bidi/browsing_context/navigation_failed/navigation_failed.py
new file mode 100644
index 00000000000..fcab85fb075
--- /dev/null
+++ b/tests/wpt/tests/webdriver/tests/bidi/browsing_context/navigation_failed/navigation_failed.py
@@ -0,0 +1,435 @@
+import asyncio
+import pytest
+from tests.support.sync import AsyncPoll
+
+from webdriver.error import TimeoutException
+
+from .. import assert_navigation_info
+
+
+pytestmark = pytest.mark.asyncio
+
+NAVIGATION_FAILED_EVENT = "browsingContext.navigationFailed"
+NAVIGATION_STARTED_EVENT = "browsingContext.navigationStarted"
+USER_PROMPT_OPENED_EVENT = "browsingContext.userPromptOpened"
+
+
+async def test_unsubscribe(bidi_session, inline, new_tab):
+ await bidi_session.session.subscribe(events=[NAVIGATION_FAILED_EVENT])
+ await bidi_session.session.unsubscribe(events=[NAVIGATION_FAILED_EVENT])
+
+ # Track all received browsingContext.navigationFailed events in the events array.
+ events = []
+
+ async def on_event(method, data):
+ events.append(data)
+
+ remove_listener = bidi_session.add_event_listener(NAVIGATION_FAILED_EVENT, on_event)
+
+ iframe_url = inline("<div>foo</div>", domain="alt")
+ page_url = inline(
+ f"""<iframe src={iframe_url}></iframe>""",
+ parameters={"pipe": "header(Content-Security-Policy, default-src 'self')"},
+ )
+
+ await bidi_session.browsing_context.navigate(
+ context=new_tab["context"], url=page_url, wait="none"
+ )
+
+ wait = AsyncPoll(bidi_session, timeout=0.5)
+ with pytest.raises(TimeoutException):
+ await wait.until(lambda _: len(events) > 0)
+
+ remove_listener()
+
+
+async def test_with_csp_meta_tag(
+ bidi_session,
+ subscribe_events,
+ inline,
+ new_tab,
+ wait_for_event,
+ wait_for_future_safe,
+):
+ iframe_url = inline("<div>foo</div>", domain="alt")
+ page_url = inline(
+ f"""
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta
+ http-equiv="Content-Security-Policy"
+ content="default-src 'self'" />
+ </head>
+ <body><iframe src="{iframe_url}"></iframe></body>
+</html>
+"""
+ )
+ await subscribe_events(events=[NAVIGATION_FAILED_EVENT, NAVIGATION_STARTED_EVENT])
+
+ # Track all received browsingContext.navigationStarted events in the events array.
+ events = []
+
+ async def on_event(method, data):
+ events.append(data)
+
+ remove_listener = bidi_session.add_event_listener(
+ NAVIGATION_STARTED_EVENT, on_event
+ )
+
+ on_navigation_failed = wait_for_event(NAVIGATION_FAILED_EVENT)
+ await bidi_session.browsing_context.navigate(
+ context=new_tab["context"], url=page_url, wait="complete"
+ )
+ event = await wait_for_future_safe(on_navigation_failed)
+
+ contexts = await bidi_session.browsing_context.get_tree(root=new_tab["context"])
+ iframe_context = contexts[0]["children"][0]["context"]
+
+ started_event_for_iframe = next(
+ event for event in events if event["context"] == iframe_context
+ )
+
+ # Make sure that the iframe navigation was blocked.
+ assert_navigation_info(
+ event,
+ {
+ "context": iframe_context,
+ "navigation": started_event_for_iframe["navigation"],
+ "url": iframe_url,
+ },
+ )
+
+ remove_listener()
+
+
+@pytest.mark.parametrize(
+ "header",
+ [
+ "Content-Security-Policy, default-src 'self'",
+ "Cross-Origin-Embedder-Policy, require-corp",
+ ],
+)
+async def test_with_content_blocking_header_in_top_context(
+ bidi_session,
+ subscribe_events,
+ inline,
+ new_tab,
+ wait_for_event,
+ wait_for_future_safe,
+ header,
+):
+ iframe_url = inline("<div>foo</div>", domain="alt")
+ page_url = inline(
+ f"""<iframe src={iframe_url}></iframe>""",
+ parameters={"pipe": f"header({header})"},
+ )
+ await subscribe_events(events=[NAVIGATION_FAILED_EVENT, NAVIGATION_STARTED_EVENT])
+
+ # Track all received browsingContext.navigationStarted events in the events array.
+ events = []
+
+ async def on_event(method, data):
+ events.append(data)
+
+ remove_listener = bidi_session.add_event_listener(
+ NAVIGATION_STARTED_EVENT, on_event
+ )
+
+ on_navigation_failed = wait_for_event(NAVIGATION_FAILED_EVENT)
+ await bidi_session.browsing_context.navigate(
+ context=new_tab["context"], url=page_url, wait="none"
+ )
+ event = await wait_for_future_safe(on_navigation_failed)
+
+ contexts = await bidi_session.browsing_context.get_tree(root=new_tab["context"])
+ iframe_context = contexts[0]["children"][0]["context"]
+
+ started_event_for_iframe = next(
+ event for event in events if event["context"] == iframe_context
+ )
+
+ # Make sure that the iframe navigation was blocked.
+ assert_navigation_info(
+ event,
+ {
+ "context": iframe_context,
+ "navigation": started_event_for_iframe["navigation"],
+ "url": iframe_url,
+ },
+ )
+
+ remove_listener()
+
+
+@pytest.mark.parametrize(
+ "header_value",
+ [
+ "SAMEORIGIN",
+ "DENY",
+ ],
+)
+async def test_with_x_frame_options_header(
+ bidi_session,
+ subscribe_events,
+ inline,
+ new_tab,
+ wait_for_event,
+ wait_for_future_safe,
+ header_value
+):
+ iframe_url = inline(
+ "<div>foo</div>",
+ parameters={"pipe": f"header(X-Frame-Options, {header_value})"},
+ )
+ page_url = inline(f"""<iframe src={iframe_url}></iframe>""", domain="alt")
+ await subscribe_events(events=[NAVIGATION_FAILED_EVENT, NAVIGATION_STARTED_EVENT])
+
+ # Track all received browsingContext.navigationStarted events in the events array.
+ events = []
+
+ async def on_event(method, data):
+ events.append(data)
+
+ remove_listener = bidi_session.add_event_listener(
+ NAVIGATION_STARTED_EVENT, on_event
+ )
+
+ on_navigation_failed = wait_for_event(NAVIGATION_FAILED_EVENT)
+ await bidi_session.browsing_context.navigate(
+ context=new_tab["context"], url=page_url, wait="none"
+ )
+ event = await wait_for_future_safe(on_navigation_failed)
+
+ contexts = await bidi_session.browsing_context.get_tree(root=new_tab["context"])
+ iframe_context = contexts[0]["children"][0]["context"]
+
+ started_event_for_iframe = next(
+ event for event in events if event["context"] == iframe_context
+ )
+
+ # Make sure that the iframe navigation was blocked.
+ assert_navigation_info(
+ event,
+ {
+ "context": iframe_context,
+ "navigation": started_event_for_iframe["navigation"],
+ "url": iframe_url,
+ },
+ )
+
+ remove_listener()
+
+
+async def test_with_new_navigation(
+ bidi_session,
+ subscribe_events,
+ inline,
+ url,
+ new_tab,
+ wait_for_event,
+ wait_for_future_safe,
+):
+ slow_page_url = url(
+ "/webdriver/tests/bidi/browsing_context/support/empty.html?pipe=trickle(d10)"
+ )
+ await subscribe_events(events=[NAVIGATION_FAILED_EVENT])
+
+ result = await bidi_session.browsing_context.navigate(
+ context=new_tab["context"], url=slow_page_url, wait="none"
+ )
+ on_navigation_failed = wait_for_event(NAVIGATION_FAILED_EVENT)
+ second_url = inline("<div>foo</div>")
+
+ # Trigger the second navigation which should fail the first one.
+ await bidi_session.browsing_context.navigate(
+ context=new_tab["context"], url=second_url, wait="none"
+ )
+
+ event = await wait_for_future_safe(on_navigation_failed)
+
+ # Make sure that the first navigation failed.
+ assert_navigation_info(
+ event,
+ {
+ "context": new_tab["context"],
+ "navigation": result["navigation"],
+ "url": slow_page_url,
+ },
+ )
+
+
+async def test_with_new_navigation_inside_page(
+ bidi_session,
+ subscribe_events,
+ inline,
+ new_tab,
+ wait_for_event,
+ wait_for_future_safe,
+):
+ second_url = inline("<div>foo</div>")
+ slow_page_url = inline(
+ f"""
+<!DOCTYPE html>
+<html>
+ <body>
+ <img src="/webdriver/tests/bidi/browsing_context/support/empty.svg?pipe=trickle(d10)" />
+ <script>
+ location.href = "{second_url}"
+ </script>
+ <img src="/webdriver/tests/bidi/browsing_context/support/empty.svg?pipe=trickle(d10)" />
+ </body>
+</html>
+"""
+ )
+ await subscribe_events(events=["browsingContext"])
+ on_navigation_failed = wait_for_event(NAVIGATION_FAILED_EVENT)
+
+ result = await bidi_session.browsing_context.navigate(
+ context=new_tab["context"], url=slow_page_url, wait="none"
+ )
+
+ event = await wait_for_future_safe(on_navigation_failed)
+
+ # Make sure that the first navigation failed.
+ assert_navigation_info(
+ event,
+ {
+ "context": new_tab["context"],
+ "navigation": result["navigation"],
+ "url": slow_page_url,
+ },
+ )
+
+
+@pytest.mark.parametrize("type_hint", ["tab", "window"])
+async def test_close_context(
+ bidi_session,
+ subscribe_events,
+ url,
+ wait_for_event,
+ wait_for_future_safe,
+ type_hint,
+):
+ new_context = await bidi_session.browsing_context.create(type_hint=type_hint)
+ slow_page_url = url(
+ "/webdriver/tests/bidi/browsing_context/support/empty.html?pipe=trickle(d10)"
+ )
+ await subscribe_events(events=[NAVIGATION_FAILED_EVENT])
+
+ result = await bidi_session.browsing_context.navigate(
+ context=new_context["context"], url=slow_page_url, wait="none"
+ )
+
+ on_navigation_failed = wait_for_event(NAVIGATION_FAILED_EVENT)
+ await bidi_session.browsing_context.close(context=new_context["context"])
+ event = await wait_for_future_safe(on_navigation_failed)
+
+ # Make sure that the navigation failed.
+ assert_navigation_info(
+ event,
+ {
+ "context": new_context["context"],
+ "navigation": result["navigation"],
+ "url": slow_page_url,
+ },
+ )
+
+
+async def test_close_iframe(
+ bidi_session,
+ subscribe_events,
+ inline,
+ url,
+ new_tab,
+ wait_for_event,
+ wait_for_future_safe,
+):
+ iframe_url = inline("<div>foo</div>")
+ page_url = inline(f"<iframe src={iframe_url}></iframe")
+
+ await subscribe_events(events=[NAVIGATION_FAILED_EVENT])
+
+ result = await bidi_session.browsing_context.navigate(
+ context=new_tab["context"], url=page_url, wait="complete"
+ )
+
+ contexts = await bidi_session.browsing_context.get_tree(root=new_tab["context"])
+ iframe_context = contexts[0]["children"][0]["context"]
+
+ slow_page_url = url(
+ "/webdriver/tests/bidi/browsing_context/support/empty.html?pipe=trickle(d10)"
+ )
+ # Navigate in the iframe.
+ result = await bidi_session.browsing_context.navigate(
+ context=iframe_context, url=slow_page_url, wait="none"
+ )
+
+ on_navigation_failed = wait_for_event(NAVIGATION_FAILED_EVENT)
+ # Reload the top context to destroy the iframe.
+ await bidi_session.browsing_context.reload(context=new_tab["context"], wait="none")
+ event = await wait_for_future_safe(on_navigation_failed)
+
+ # Make sure that the iframe navigation failed.
+ assert_navigation_info(
+ event,
+ {
+ "context": iframe_context,
+ "navigation": result["navigation"],
+ "url": slow_page_url,
+ },
+ )
+
+
+@pytest.mark.capabilities({"unhandledPromptBehavior": {"beforeUnload": "ignore"}})
+async def test_with_beforeunload_prompt(
+ bidi_session,
+ new_tab,
+ wait_for_event,
+ wait_for_future_safe,
+ url,
+ subscribe_events,
+ setup_beforeunload_page,
+):
+ await subscribe_events(
+ events=[
+ NAVIGATION_FAILED_EVENT,
+ NAVIGATION_STARTED_EVENT,
+ USER_PROMPT_OPENED_EVENT,
+ ]
+ )
+ await setup_beforeunload_page(new_tab)
+ target_url = url("/webdriver/tests/support/html/default.html", domain="alt")
+
+ on_navigation_started = wait_for_event(NAVIGATION_STARTED_EVENT)
+ on_prompt_opened = wait_for_event(USER_PROMPT_OPENED_EVENT)
+
+ asyncio.ensure_future(
+ bidi_session.browsing_context.navigate(
+ context=new_tab["context"], url=target_url, wait="none"
+ )
+ )
+
+ # Wait for the navigation to start.
+ navigation_started_event = await wait_for_future_safe(on_navigation_started)
+
+ # Wait for the prompt to open.
+ await wait_for_future_safe(on_prompt_opened)
+
+ on_navigation_failed = wait_for_event(NAVIGATION_FAILED_EVENT)
+ # Stay on the page to fail the started navigation.
+ await bidi_session.browsing_context.handle_user_prompt(
+ context=new_tab["context"], accept=False
+ )
+
+ event = await wait_for_future_safe(on_navigation_failed)
+
+ # Make sure that the first navigation failed.
+ assert_navigation_info(
+ event,
+ {
+ "context": new_tab["context"],
+ "navigation": navigation_started_event["navigation"],
+ "url": target_url,
+ },
+ )
diff --git a/tests/wpt/tests/webdriver/tests/bidi/browsing_context/navigation_started/navigation_started.py b/tests/wpt/tests/webdriver/tests/bidi/browsing_context/navigation_started/navigation_started.py
index af91f0110aa..bc711814d3a 100644
--- a/tests/wpt/tests/webdriver/tests/bidi/browsing_context/navigation_started/navigation_started.py
+++ b/tests/wpt/tests/webdriver/tests/bidi/browsing_context/navigation_started/navigation_started.py
@@ -1,3 +1,4 @@
+import asyncio
import pytest
from tests.support.sync import AsyncPoll
@@ -17,6 +18,7 @@ PAGE_REDIRECT_HTTP_EQUIV = (
"/webdriver/tests/bidi/network/support/redirect_http_equiv.html"
)
PAGE_REDIRECTED_HTML = "/webdriver/tests/bidi/network/support/redirected.html"
+USER_PROMPT_OPENED_EVENT = "browsingContext.userPromptOpened"
async def test_unsubscribe(bidi_session):
@@ -461,3 +463,76 @@ async def test_navigate_history_pushstate(
event = await wait_for_future_safe(on_entry)
assert event["navigation"] == result["navigation"]
+
+
+@pytest.mark.capabilities({"unhandledPromptBehavior": {"beforeUnload": "ignore"}})
+async def test_with_beforeunload_prompt(
+ bidi_session,
+ new_tab,
+ wait_for_event,
+ wait_for_future_safe,
+ url,
+ subscribe_events,
+ setup_beforeunload_page,
+):
+ await subscribe_events(events=[NAVIGATION_STARTED_EVENT])
+ await setup_beforeunload_page(new_tab)
+ target_url = url("/webdriver/tests/support/html/default.html", domain="alt")
+
+ on_navigation_started = wait_for_event(NAVIGATION_STARTED_EVENT)
+ result = await bidi_session.browsing_context.navigate(
+ context=new_tab["context"], url=target_url, wait="none"
+ )
+
+ event = await wait_for_future_safe(on_navigation_started)
+
+ assert event["context"] == new_tab["context"]
+ assert event["navigation"] == result["navigation"]
+ assert event["url"] == target_url
+
+
+@pytest.mark.capabilities({"unhandledPromptBehavior": {"beforeUnload": "ignore"}})
+async def test_with_accepted_beforeunload_prompt(
+ bidi_session,
+ new_tab,
+ wait_for_event,
+ wait_for_future_safe,
+ url,
+ subscribe_events,
+ setup_beforeunload_page,
+):
+ await subscribe_events(events=[NAVIGATION_STARTED_EVENT, USER_PROMPT_OPENED_EVENT])
+ await setup_beforeunload_page(new_tab)
+ target_url = url("/webdriver/tests/support/html/default.html", domain="alt")
+
+ # Track all received browsingContext.navigationStarted events in the events array
+ events = []
+
+ async def on_event(method, data):
+ events.append(data)
+
+ remove_listener = bidi_session.add_event_listener(
+ NAVIGATION_STARTED_EVENT, on_event
+ )
+
+ on_user_prompt_opened = wait_for_event(USER_PROMPT_OPENED_EVENT)
+ task = asyncio.ensure_future(
+ bidi_session.browsing_context.navigate(
+ context=new_tab["context"], url=target_url, wait="complete"
+ )
+ )
+
+ await wait_for_future_safe(on_user_prompt_opened)
+
+ await bidi_session.browsing_context.handle_user_prompt(
+ context=new_tab["context"], accept=True
+ )
+
+ result = await task
+
+ assert len(events) == 1
+ assert events[0]["context"] == new_tab["context"]
+ assert events[0]["navigation"] == result["navigation"]
+ assert events[0]["url"] == target_url
+
+ remove_listener()
diff --git a/tests/wpt/tests/webdriver/tests/bidi/browsing_context/reload/wait.py b/tests/wpt/tests/webdriver/tests/bidi/browsing_context/reload/wait.py
index 1024b787f08..a9f113a2a9a 100644
--- a/tests/wpt/tests/webdriver/tests/bidi/browsing_context/reload/wait.py
+++ b/tests/wpt/tests/webdriver/tests/bidi/browsing_context/reload/wait.py
@@ -3,6 +3,8 @@
import asyncio
import pytest
+from ... import any_string
+
pytestmark = pytest.mark.asyncio
@@ -171,3 +173,18 @@ async def test_slow_script_blocks_domContentLoaded(bidi_session, inline,
remove_listener_2()
remove_listener_1()
+
+
+@pytest.mark.capabilities({"unhandledPromptBehavior": {"beforeUnload": "ignore"}})
+async def test_wait_none_with_beforeunload_prompt(
+ bidi_session, new_tab, setup_beforeunload_page, url
+):
+ page_url = url("/webdriver/tests/support/html/beforeunload.html")
+ await setup_beforeunload_page(new_tab)
+
+ result = await bidi_session.browsing_context.reload(
+ context=new_tab["context"], wait="none"
+ )
+
+ assert result["url"] == page_url
+ any_string(result["navigation"])
diff --git a/tests/wpt/tests/webdriver/tests/bidi/integration/cookies_with_network_events.py b/tests/wpt/tests/webdriver/tests/bidi/integration/cookies_with_network_events.py
index 30ba8e3bd7b..625628f0360 100644
--- a/tests/wpt/tests/webdriver/tests/bidi/integration/cookies_with_network_events.py
+++ b/tests/wpt/tests/webdriver/tests/bidi/integration/cookies_with_network_events.py
@@ -1,7 +1,12 @@
+import os
import pytest
+from urllib.parse import urlparse
from webdriver.bidi.modules.script import ContextTarget
-from webdriver.bidi.modules.storage import BrowsingContextPartitionDescriptor
+from webdriver.bidi.modules.storage import (
+ BrowsingContextPartitionDescriptor,
+ StorageKeyPartitionDescriptor,
+)
from .. import assert_cookies
@@ -110,6 +115,7 @@ async def test_fetch(
fetch,
wait_for_future_safe,
url,
+ origin,
domain_1,
):
# Clean up cookies in case some other tests failed before cleaning up.
@@ -124,9 +130,10 @@ async def test_fetch(
cookie_name = "foo"
cookie_value = "bar"
+ path = "/webdriver/tests/support/http_handlers"
# Add `Access-Control-Allow-Origin` header for cross-origin request to work.
request_url = url(
- "/webdriver/tests/support/http_handlers/headers.py?header=Access-Control-Allow-Origin:*",
+ f"{path}/headers.py?header=Access-Control-Allow-Origin:*",
domain=domain_1,
)
@@ -145,7 +152,8 @@ async def test_fetch(
await wait_for_future_safe(on_before_request_sent)
result = await bidi_session.storage.get_cookies(
- partition=BrowsingContextPartitionDescriptor(new_tab["context"])
+ partition=StorageKeyPartitionDescriptor(source_origin=origin(domain=domain_1)),
+ filter={"path": path},
)
assert_cookies(result["cookies"], events[0]["request"]["cookies"])
@@ -162,6 +170,7 @@ async def test_image(
wait_for_future_safe,
url,
inline,
+ origin,
domain_1,
):
# Clean up cookies in case some other tests failed before cleaning up.
@@ -194,8 +203,10 @@ async def test_image(
)
await wait_for_future_safe(on_before_request_sent)
+ image_path = os.path.dirname(urlparse(image_url).path.replace("/", os.sep))
result = await bidi_session.storage.get_cookies(
- partition=BrowsingContextPartitionDescriptor(new_tab["context"])
+ partition=StorageKeyPartitionDescriptor(source_origin=origin(domain=domain_1)),
+ filter={"path": image_path}
)
# Find the network event which belongs to the image.
diff --git a/tests/wpt/tests/webdriver/tests/bidi/network/__init__.py b/tests/wpt/tests/webdriver/tests/bidi/network/__init__.py
index 00fc5e3c71b..60a39741f83 100644
--- a/tests/wpt/tests/webdriver/tests/bidi/network/__init__.py
+++ b/tests/wpt/tests/webdriver/tests/bidi/network/__init__.py
@@ -2,6 +2,7 @@ from .. import (
any_bool,
any_dict,
any_int,
+ any_number,
any_int_or_null,
any_list,
any_string,
@@ -27,19 +28,19 @@ def assert_headers(event_headers, expected_headers):
def assert_timing_info(timing_info):
recursive_compare(
{
- "timeOrigin": any_int,
- "requestTime": any_int,
- "redirectStart": any_int,
- "redirectEnd": any_int,
- "fetchStart": any_int,
- "dnsStart": any_int,
- "dnsEnd": any_int,
- "connectStart": any_int,
- "connectEnd": any_int,
- "tlsStart": any_int,
- "requestStart": any_int,
- "responseStart": any_int,
- "responseEnd": any_int,
+ "timeOrigin": any_number,
+ "requestTime": any_number,
+ "redirectStart": any_number,
+ "redirectEnd": any_number,
+ "fetchStart": any_number,
+ "dnsStart": any_number,
+ "dnsEnd": any_number,
+ "connectStart": any_number,
+ "connectEnd": any_number,
+ "tlsStart": any_number,
+ "requestStart": any_number,
+ "responseStart": any_number,
+ "responseEnd": any_number,
},
timing_info,
)
diff --git a/tests/wpt/tests/webdriver/tests/bidi/network/auth_required/auth_required.py b/tests/wpt/tests/webdriver/tests/bidi/network/auth_required/auth_required.py
index 4f5c836280d..8ae53905642 100644
--- a/tests/wpt/tests/webdriver/tests/bidi/network/auth_required/auth_required.py
+++ b/tests/wpt/tests/webdriver/tests/bidi/network/auth_required/auth_required.py
@@ -1,8 +1,15 @@
+import asyncio
import pytest
+from webdriver.bidi.modules.network import AuthCredentials
+from webdriver.error import TimeoutException
-import asyncio
+from tests.support.sync import AsyncPoll
-from .. import assert_response_event, AUTH_REQUIRED_EVENT, PAGE_EMPTY_HTML
+from .. import (
+ assert_response_event,
+ AUTH_REQUIRED_EVENT,
+ PAGE_EMPTY_HTML,
+)
@pytest.mark.asyncio
@@ -78,3 +85,44 @@ async def test_no_authentication(
assert len(events) == 0
remove_listener()
+
+
+@pytest.mark.asyncio
+async def test_with_wrong_credentials(setup_blocked_request, bidi_session):
+ # Setup unique username / password because browsers cache credentials.
+ username = "test_with_wrong_credentials"
+ password = "test_with_wrong_credentials_password"
+ request = await setup_blocked_request(
+ "authRequired", username=username, password=password
+ )
+
+ # Track all received network.authRequired events in the events array
+ events = []
+
+ async def on_event(method, data):
+ events.append(data)
+
+ remove_listener = bidi_session.add_event_listener(AUTH_REQUIRED_EVENT, on_event)
+ wait = AsyncPoll(bidi_session, timeout=1)
+
+ wrong_credentials = AuthCredentials(username=username, password="wrong_password")
+ await bidi_session.network.continue_with_auth(
+ request=request, action="provideCredentials", credentials=wrong_credentials
+ )
+
+ # We expect to get authRequired event after providing wrong credentials
+ await wait.until(lambda _: len(events) > 0)
+
+ await bidi_session.network.continue_with_auth(
+ request=request, action="provideCredentials", credentials=wrong_credentials
+ )
+
+ # We expect to get another authRequired event after providing wrong credentials
+ await wait.until(lambda _: len(events) > 1)
+
+ # Check no other authRequired event was received
+ wait = AsyncPoll(bidi_session, timeout=1)
+ with pytest.raises(TimeoutException):
+ await wait.until(lambda _: len(events) > 2)
+
+ remove_listener()
diff --git a/tests/wpt/tests/webdriver/tests/bidi/network/before_request_sent/before_request_sent.py b/tests/wpt/tests/webdriver/tests/bidi/network/before_request_sent/before_request_sent.py
index 3ef51b2d61c..f8d1f7ba786 100644
--- a/tests/wpt/tests/webdriver/tests/bidi/network/before_request_sent/before_request_sent.py
+++ b/tests/wpt/tests/webdriver/tests/bidi/network/before_request_sent/before_request_sent.py
@@ -476,7 +476,7 @@ async def test_navigate_data_url(
events = network_events[BEFORE_REQUEST_SENT_EVENT]
on_before_request_sent = wait_for_event(BEFORE_REQUEST_SENT_EVENT)
- await bidi_session.browsing_context.navigate(
+ result = await bidi_session.browsing_context.navigate(
context=top_context["context"], url=page_url, wait="complete"
)
await wait_for_future_safe(on_before_request_sent)
@@ -487,7 +487,9 @@ async def test_navigate_data_url(
events[0],
expected_request={"method": "GET", "url": page_url},
redirect_count=0,
+ navigation=result["navigation"],
)
+ assert events[0]["navigation"] is not None
@pytest.mark.parametrize(
@@ -513,3 +515,4 @@ async def test_fetch_data_url(
expected_request={"method": "GET", "url": fetch_url},
redirect_count=0,
)
+ assert events[0]["navigation"] is None
diff --git a/tests/wpt/tests/webdriver/tests/bidi/network/conftest.py b/tests/wpt/tests/webdriver/tests/bidi/network/conftest.py
index 591e3b42d6e..6928334b7d9 100644
--- a/tests/wpt/tests/webdriver/tests/bidi/network/conftest.py
+++ b/tests/wpt/tests/webdriver/tests/bidi/network/conftest.py
@@ -1,7 +1,7 @@
import asyncio
import pytest_asyncio
-from webdriver.bidi.error import NoSuchInterceptException
+from webdriver.bidi.error import NoSuchInterceptException, NoSuchRequestException
from tests.support.sync import AsyncPoll
from . import PAGE_EMPTY_TEXT
@@ -66,6 +66,14 @@ async def setup_blocked_request(
Returns the `request` id of the intercepted request.
"""
+ # Keep track of blocked requests in order to cancel them with failRequest
+ # on test teardown, in case the test did not handle the request.
+ blocked_requests = []
+
+ # Blocked auth requests need to resumed using continueWithAuth, they cannot
+ # rely on failRequest
+ blocked_auth_requests = []
+
async def setup_blocked_request(
phase,
context=top_context,
@@ -107,10 +115,7 @@ async def setup_blocked_request(
async def on_event(method, data):
events.append(data)
- remove_listener = bidi_session.add_event_listener(
- f"network.{phase}", on_event
- )
-
+ remove_listener = bidi_session.add_event_listener(f"network.{phase}", on_event)
network_event = wait_for_event(f"network.{phase}")
if navigate:
@@ -125,7 +130,6 @@ async def setup_blocked_request(
else:
asyncio.ensure_future(fetch(blocked_url, context=context, **kwargs))
-
# Wait for the first blocked request. When testing a navigation where
# navigate_url is different from blocked_url, non-blocked events will
# be received before the blocked request.
@@ -135,6 +139,30 @@ async def setup_blocked_request(
[blocked_event] = [e for e in events if e["isBlocked"] is True]
request = blocked_event["request"]["request"]
+ if phase == "authRequired":
+ blocked_auth_requests.append(request)
+ else:
+ blocked_requests.append(request)
+
return request
- return setup_blocked_request
+ yield setup_blocked_request
+
+ # Cleanup unhandled blocked requests on teardown.
+ for request in blocked_requests:
+ try:
+ await bidi_session.network.fail_request(request=request)
+ except NoSuchRequestException:
+ # Nothing to do here the request was probably handled during the test.
+ pass
+
+ # Cleanup unhandled blocked auth requests on teardown.
+ for request in blocked_auth_requests:
+ try:
+ await bidi_session.network.continue_with_auth(
+ request=request, action="cancel"
+ )
+ except NoSuchRequestException:
+ # Nothing to do here the request was probably handled during the test.
+ pass
+
diff --git a/tests/wpt/tests/webdriver/tests/bidi/network/fetch_error/fetch_error.py b/tests/wpt/tests/webdriver/tests/bidi/network/fetch_error/fetch_error.py
index 025da87c928..de6567100a9 100644
--- a/tests/wpt/tests/webdriver/tests/bidi/network/fetch_error/fetch_error.py
+++ b/tests/wpt/tests/webdriver/tests/bidi/network/fetch_error/fetch_error.py
@@ -20,7 +20,7 @@ from .. import (
async def test_subscribe_status(
bidi_session,
subscribe_events,
- top_context,
+ new_tab,
wait_for_event,
wait_for_future_safe,
url,
@@ -29,7 +29,7 @@ async def test_subscribe_status(
await subscribe_events(events=[FETCH_ERROR_EVENT])
await bidi_session.browsing_context.navigate(
- context=top_context["context"],
+ context=new_tab["context"],
url=url(PAGE_EMPTY_HTML),
wait="complete",
)
@@ -43,7 +43,7 @@ async def test_subscribe_status(
remove_listener = bidi_session.add_event_listener(FETCH_ERROR_EVENT, on_event)
on_fetch_error = wait_for_event(FETCH_ERROR_EVENT)
- asyncio.ensure_future(fetch(PAGE_INVALID_URL))
+ asyncio.ensure_future(fetch(PAGE_INVALID_URL, context=new_tab))
await wait_for_future_safe(on_fetch_error)
assert len(events) == 1
@@ -58,7 +58,7 @@ async def test_subscribe_status(
# Fetch the invalid url again, with an additional parameter to bypass the
# cache and check no new event is received.
- asyncio.ensure_future(fetch(PAGE_INVALID_URL))
+ asyncio.ensure_future(fetch(PAGE_INVALID_URL, context=new_tab))
await asyncio.sleep(0.5)
assert len(events) == 1
@@ -67,13 +67,16 @@ async def test_subscribe_status(
@pytest.mark.asyncio
async def test_aborted_request(
+ new_tab,
wait_for_event,
wait_for_future_safe,
setup_network_test,
url,
fetch,
):
- network_events = await setup_network_test(events=[FETCH_ERROR_EVENT])
+ network_events = await setup_network_test(
+ events=[FETCH_ERROR_EVENT], context=new_tab["context"]
+ )
events = network_events[FETCH_ERROR_EVENT]
# Prepare a slow url
@@ -81,29 +84,33 @@ async def test_aborted_request(
"/webdriver/tests/bidi/browsing_context/support/empty.txt?pipe=trickle(d10)"
)
on_fetch_error = wait_for_event(FETCH_ERROR_EVENT)
- asyncio.ensure_future(fetch(PAGE_INVALID_URL, timeout_in_seconds=0))
+ asyncio.ensure_future(
+ fetch(PAGE_INVALID_URL, context=new_tab, timeout_in_seconds=0)
+ )
fetch_error_event = await wait_for_future_safe(on_fetch_error)
@pytest.mark.asyncio
async def test_iframe_load(
bidi_session,
- top_context,
+ new_tab,
setup_network_test,
inline,
):
- network_events = await setup_network_test(events=[FETCH_ERROR_EVENT])
+ network_events = await setup_network_test(
+ events=[FETCH_ERROR_EVENT], context=new_tab["context"]
+ )
events = network_events[FETCH_ERROR_EVENT]
await bidi_session.browsing_context.navigate(
- context=top_context["context"],
+ context=new_tab["context"],
url=inline(f"<iframe src='{PAGE_INVALID_URL}'></iframe>"),
)
wait = AsyncPoll(bidi_session, timeout=2)
await wait.until(lambda _: len(events) >= 1)
- contexts = await bidi_session.browsing_context.get_tree(root=top_context["context"])
+ contexts = await bidi_session.browsing_context.get_tree(root=new_tab["context"])
frame_context = contexts[0]["children"][0]
assert len(events) == 1
@@ -117,17 +124,17 @@ async def test_iframe_load(
@pytest.mark.asyncio
async def test_navigation_id(
bidi_session,
- top_context,
+ new_tab,
wait_for_event,
url,
fetch,
setup_network_test,
wait_for_future_safe,
):
- await setup_network_test(events=[FETCH_ERROR_EVENT])
+ await setup_network_test(events=[FETCH_ERROR_EVENT], context=new_tab["context"])
on_fetch_error = wait_for_event(FETCH_ERROR_EVENT)
- asyncio.ensure_future(fetch(PAGE_INVALID_URL))
+ asyncio.ensure_future(fetch(PAGE_INVALID_URL, context=new_tab))
fetch_error_event = await wait_for_future_safe(on_fetch_error)
expected_request = {"method": "GET", "url": PAGE_INVALID_URL}
@@ -140,7 +147,7 @@ async def test_navigation_id(
on_fetch_error = wait_for_event(FETCH_ERROR_EVENT)
result = await bidi_session.browsing_context.navigate(
- context=top_context["context"],
+ context=new_tab["context"],
url=PAGE_INVALID_URL,
)
fetch_error_event = await wait_for_future_safe(on_fetch_error)
@@ -169,6 +176,7 @@ async def test_navigation_id(
@pytest.mark.asyncio
async def test_request_method(
bidi_session,
+ new_tab,
wait_for_event,
wait_for_future_safe,
fetch,
@@ -176,10 +184,12 @@ async def test_request_method(
method,
has_preflight,
):
- network_events = await setup_network_test(events=[FETCH_ERROR_EVENT])
+ network_events = await setup_network_test(
+ events=[FETCH_ERROR_EVENT], context=new_tab["context"]
+ )
events = network_events[FETCH_ERROR_EVENT]
- asyncio.ensure_future(fetch(PAGE_INVALID_URL, method=method))
+ asyncio.ensure_future(fetch(PAGE_INVALID_URL, context=new_tab, method=method))
# Requests which might update the server will also fail the CORS preflight
# request which uses the OPTIONS method.
@@ -207,7 +217,7 @@ async def test_request_method(
@pytest.mark.asyncio
async def test_redirect_fetch(
- bidi_session, wait_for_event, url, fetch, setup_network_test
+ bidi_session, new_tab, wait_for_event, url, fetch, setup_network_test
):
redirect_url = url(
f"/webdriver/tests/support/http_handlers/redirect.py?location={PAGE_INVALID_URL}"
@@ -217,12 +227,13 @@ async def test_redirect_fetch(
events=[
FETCH_ERROR_EVENT,
RESPONSE_COMPLETED_EVENT,
- ]
+ ],
+ context=new_tab["context"],
)
on_fetch_error = wait_for_event(FETCH_ERROR_EVENT)
on_response_completed = wait_for_event(RESPONSE_COMPLETED_EVENT)
- asyncio.ensure_future(fetch(redirect_url))
+ asyncio.ensure_future(fetch(redirect_url, context=new_tab))
# Wait until we receive two events, one for the initial request and one for
# the redirection.
@@ -250,7 +261,7 @@ async def test_redirect_fetch(
@pytest.mark.asyncio
async def test_redirect_navigation(
- bidi_session, top_context, wait_for_event, url, setup_network_test
+ bidi_session, new_tab, wait_for_event, url, setup_network_test
):
redirect_url = url(
f"/webdriver/tests/support/http_handlers/redirect.py?location={PAGE_INVALID_URL}"
@@ -260,14 +271,15 @@ async def test_redirect_navigation(
events=[
FETCH_ERROR_EVENT,
RESPONSE_COMPLETED_EVENT,
- ]
+ ],
+ context=new_tab["context"],
)
on_fetch_error = wait_for_event(FETCH_ERROR_EVENT)
on_response_completed = wait_for_event(RESPONSE_COMPLETED_EVENT)
result = await bidi_session.browsing_context.navigate(
- context=top_context["context"],
+ context=new_tab["context"],
url=redirect_url,
)
diff --git a/tests/wpt/tests/webdriver/tests/bidi/network/response_completed/response_completed.py b/tests/wpt/tests/webdriver/tests/bidi/network/response_completed/response_completed.py
index 51333a0195f..ba916390ea2 100644
--- a/tests/wpt/tests/webdriver/tests/bidi/network/response_completed/response_completed.py
+++ b/tests/wpt/tests/webdriver/tests/bidi/network/response_completed/response_completed.py
@@ -459,7 +459,7 @@ async def test_navigate_data_url(
events = network_events[RESPONSE_COMPLETED_EVENT]
on_response_completed = wait_for_event(RESPONSE_COMPLETED_EVENT)
- await bidi_session.browsing_context.navigate(
+ result = await bidi_session.browsing_context.navigate(
context=top_context["context"], url=page_url, wait="complete"
)
await wait_for_future_safe(on_response_completed)
@@ -481,7 +481,9 @@ async def test_navigate_data_url(
"url": page_url,
},
redirect_count=0,
+ navigation=result["navigation"],
)
+ assert events[0]["navigation"] is not None
@pytest.mark.parametrize(
@@ -518,3 +520,4 @@ async def test_fetch_data_url(
},
redirect_count=0,
)
+ assert events[0]["navigation"] is None
diff --git a/tests/wpt/tests/webdriver/tests/bidi/network/response_started/response_started.py b/tests/wpt/tests/webdriver/tests/bidi/network/response_started/response_started.py
index 17ec9ffe31b..d2d987d8e4a 100644
--- a/tests/wpt/tests/webdriver/tests/bidi/network/response_started/response_started.py
+++ b/tests/wpt/tests/webdriver/tests/bidi/network/response_started/response_started.py
@@ -428,7 +428,7 @@ async def test_navigate_data_url(
events = network_events[RESPONSE_STARTED_EVENT]
on_response_started = wait_for_event(RESPONSE_STARTED_EVENT)
- await bidi_session.browsing_context.navigate(
+ result = await bidi_session.browsing_context.navigate(
context=top_context["context"], url=page_url, wait="complete"
)
await wait_for_future_safe(on_response_started)
@@ -450,7 +450,9 @@ async def test_navigate_data_url(
"url": page_url,
},
redirect_count=0,
+ navigation=result["navigation"],
)
+ assert events[0]["navigation"] is not None
@pytest.mark.parametrize(
@@ -487,3 +489,4 @@ async def test_fetch_data_url(
},
redirect_count=0,
)
+ assert events[0]["navigation"] is None
diff --git a/tests/wpt/tests/webdriver/tests/bidi/storage/conftest.py b/tests/wpt/tests/webdriver/tests/bidi/storage/conftest.py
deleted file mode 100644
index 0941411fab8..00000000000
--- a/tests/wpt/tests/webdriver/tests/bidi/storage/conftest.py
+++ /dev/null
@@ -1,11 +0,0 @@
-from urllib.parse import urlunsplit
-
-import pytest
-
-
-@pytest.fixture
-def origin(server_config, domain_value):
- def origin(protocol="https", domain="", subdomain=""):
- return urlunsplit((protocol, domain_value(domain, subdomain), "", "", ""))
-
- return origin
diff --git a/tests/wpt/tests/webdriver/tests/classic/element_click/scroll_into_view.py b/tests/wpt/tests/webdriver/tests/classic/element_click/scroll_into_view.py
index 041f0dee6a3..1b9c671efab 100644
--- a/tests/wpt/tests/webdriver/tests/classic/element_click/scroll_into_view.py
+++ b/tests/wpt/tests/webdriver/tests/classic/element_click/scroll_into_view.py
@@ -19,6 +19,14 @@ def assert_one_click(session):
def test_scroll_into_view(session, inline):
+ original_handle = session.window_handle
+
+ # Use a new tab to close the virtual keyboard that might have opened by
+ # clicking the input field.
+ new_handle = session.new_window()
+
+ session.window_handle = new_handle
+
session.url = inline("""
<input type=text value=Federer
style="position: absolute; left: 0vh; top: 500vh">""")
@@ -36,6 +44,9 @@ def test_scroll_into_view(session, inline):
Math.floor(rect.right) <= window.innerWidth;
""", args=(element,)) is True
+ session.window.close()
+
+ session.window_handle = original_handle
@pytest.mark.parametrize("offset", range(9, 0, -1))
def test_partially_visible_does_not_scroll(session, offset, inline):
diff --git a/tests/wpt/tests/webdriver/tests/support/fixtures_bidi.py b/tests/wpt/tests/webdriver/tests/support/fixtures_bidi.py
index 7c88abcd2e0..9f3c31d3d57 100644
--- a/tests/wpt/tests/webdriver/tests/support/fixtures_bidi.py
+++ b/tests/wpt/tests/webdriver/tests/support/fixtures_bidi.py
@@ -3,6 +3,7 @@ import base64
import copy
import json
from typing import Any, Coroutine, Mapping
+from urllib.parse import urlunsplit
import pytest
import pytest_asyncio
@@ -623,8 +624,11 @@ async def setup_network_test(
top_context,
url,
):
- """Navigate the current top level context to the provided url and subscribe
- to network.beforeRequestSent.
+ """Navigate the provided top level context to the provided url and subscribe
+ to network events for the provided set of contexts.
+
+ By default, the test context is top_context["context"], test_url is
+ empty.html and contexts is None (meaning we will subscribe to all contexts).
Returns an `events` dictionary in which the captured network events will be added.
The keys of the dictionary are network event names (eg. "network.beforeRequestSent"),
@@ -632,24 +636,29 @@ async def setup_network_test(
"""
listeners = []
- async def _setup_network_test(events, test_url=url("/webdriver/tests/bidi/network/support/empty.html"), contexts=None):
+ async def _setup_network_test(
+ events,
+ test_url=url("/webdriver/tests/bidi/network/support/empty.html"),
+ context=top_context["context"],
+ contexts=None,
+ ):
nonlocal listeners
# Listen for network.responseCompleted for the initial navigation to
# make sure this event will not be captured unexpectedly by the tests.
await bidi_session.session.subscribe(
- events=["network.responseCompleted"], contexts=[top_context["context"]]
+ events=["network.responseCompleted"], contexts=[context]
)
on_response_completed = wait_for_event("network.responseCompleted")
await bidi_session.browsing_context.navigate(
- context=top_context["context"],
+ context=context,
url=test_url,
wait="complete",
)
await wait_for_future_safe(on_response_completed)
await bidi_session.session.unsubscribe(
- events=["network.responseCompleted"], contexts=[top_context["context"]]
+ events=["network.responseCompleted"], contexts=[context]
)
await subscribe_events(events, contexts)
@@ -670,3 +679,11 @@ async def setup_network_test(
# cleanup
for remove_listener in listeners:
remove_listener()
+
+
+@pytest.fixture
+def origin(server_config, domain_value):
+ def origin(protocol="https", domain="", subdomain=""):
+ return urlunsplit((protocol, domain_value(domain, subdomain), "", "", ""))
+
+ return origin
diff --git a/tests/wpt/tests/webnn/META.yml b/tests/wpt/tests/webnn/META.yml
index 3f87fc8042d..6b22a19db92 100644
--- a/tests/wpt/tests/webnn/META.yml
+++ b/tests/wpt/tests/webnn/META.yml
@@ -1,4 +1,4 @@
-spec: https://webmachinelearning.github.io/webnn/
+spec: https://www.w3.org/TR/webnn/
suggested_reviewers:
- dontcallmedom
- Honry \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/conformance_tests/abs.https.any.js b/tests/wpt/tests/webnn/conformance_tests/abs.https.any.js
new file mode 100644
index 00000000000..ca9f3d3ca94
--- /dev/null
+++ b/tests/wpt/tests/webnn/conformance_tests/abs.https.any.js
@@ -0,0 +1,320 @@
+// META: title=test WebNN API element-wise abs operation
+// META: global=window,dedicatedworker
+// META: variant=?cpu
+// META: variant=?gpu
+// META: variant=?npu
+// META: script=../resources/utils.js
+// META: timeout=long
+
+'use strict';
+
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-unary
+// Compute the absolute value of the input tensor, element-wise.
+//
+// MLOperand abs(MLOperand input);
+
+
+const getAbsPrecisionTolerance = (graphResources) => {
+ const toleranceValueDict = {float32: 0, float16: 0};
+ const expectedDataType =
+ getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs);
+ return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]};
+};
+
+const absTests = [
+ // abs tests
+ {
+ 'name': 'abs float32 positive 0D scalar',
+ 'graph': {
+ 'inputs': {
+ 'absInput': {
+ 'data': [49.837242126464844],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'abs',
+ 'arguments': [{'input': 'absInput'}],
+ 'outputs': 'absOutput'
+ }],
+ 'expectedOutputs': {
+ 'absOutput': {
+ 'data': [49.837242126464844],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'abs float32 negative 0D scalar',
+ 'graph': {
+ 'inputs': {
+ 'absInput': {
+ 'data': [-91.03521728515625],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'abs',
+ 'arguments': [{'input': 'absInput'}],
+ 'outputs': 'absOutput'
+ }],
+ 'expectedOutputs': {
+ 'absOutput': {
+ 'data': [91.03521728515625],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'abs float32 1D constant tensor',
+ 'graph': {
+ 'inputs': {
+ 'absInput': {
+ 'data': [
+ 49.837242126464844, 82.09291076660156, 3.1989054679870605,
+ 85.20904541015625, 88.94609069824219, -91.03521728515625,
+ 31.4484920501709, -29.31110954284668, -92.4477310180664,
+ -15.520709991455078, 80.91279602050781, -38.2097053527832,
+ 53.064762115478516, 99.6537094116211, -21.285049438476562,
+ 90.01982879638672, 18.32451820373535, -33.06915283203125,
+ 30.097660064697266, -74.21503448486328, 95.60974884033203,
+ 6.614287376403809, 31.2832088470459, -53.206058502197266
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'abs',
+ 'arguments': [{'input': 'absInput'}],
+ 'outputs': 'absOutput'
+ }],
+ 'expectedOutputs': {
+ 'absOutput': {
+ 'data': [
+ 49.837242126464844, 82.09291076660156, 3.1989054679870605,
+ 85.20904541015625, 88.94609069824219, 91.03521728515625,
+ 31.4484920501709, 29.31110954284668, 92.4477310180664,
+ 15.520709991455078, 80.91279602050781, 38.2097053527832,
+ 53.064762115478516, 99.6537094116211, 21.285049438476562,
+ 90.01982879638672, 18.32451820373535, 33.06915283203125,
+ 30.097660064697266, 74.21503448486328, 95.60974884033203,
+ 6.614287376403809, 31.2832088470459, 53.206058502197266
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'abs float32 1D tensor',
+ 'graph': {
+ 'inputs': {
+ 'absInput': {
+ 'data': [
+ 49.837242126464844, 82.09291076660156, 3.1989054679870605,
+ 85.20904541015625, 88.94609069824219, -91.03521728515625,
+ 31.4484920501709, -29.31110954284668, -92.4477310180664,
+ -15.520709991455078, 80.91279602050781, -38.2097053527832,
+ 53.064762115478516, 99.6537094116211, -21.285049438476562,
+ 90.01982879638672, 18.32451820373535, -33.06915283203125,
+ 30.097660064697266, -74.21503448486328, 95.60974884033203,
+ 6.614287376403809, 31.2832088470459, -53.206058502197266
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'abs',
+ 'arguments': [{'input': 'absInput'}],
+ 'outputs': 'absOutput'
+ }],
+ 'expectedOutputs': {
+ 'absOutput': {
+ 'data': [
+ 49.837242126464844, 82.09291076660156, 3.1989054679870605,
+ 85.20904541015625, 88.94609069824219, 91.03521728515625,
+ 31.4484920501709, 29.31110954284668, 92.4477310180664,
+ 15.520709991455078, 80.91279602050781, 38.2097053527832,
+ 53.064762115478516, 99.6537094116211, 21.285049438476562,
+ 90.01982879638672, 18.32451820373535, 33.06915283203125,
+ 30.097660064697266, 74.21503448486328, 95.60974884033203,
+ 6.614287376403809, 31.2832088470459, 53.206058502197266
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'abs float32 2D tensor',
+ 'graph': {
+ 'inputs': {
+ 'absInput': {
+ 'data': [
+ 49.837242126464844, 82.09291076660156, 3.1989054679870605,
+ 85.20904541015625, 88.94609069824219, -91.03521728515625,
+ 31.4484920501709, -29.31110954284668, -92.4477310180664,
+ -15.520709991455078, 80.91279602050781, -38.2097053527832,
+ 53.064762115478516, 99.6537094116211, -21.285049438476562,
+ 90.01982879638672, 18.32451820373535, -33.06915283203125,
+ 30.097660064697266, -74.21503448486328, 95.60974884033203,
+ 6.614287376403809, 31.2832088470459, -53.206058502197266
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'abs',
+ 'arguments': [{'input': 'absInput'}],
+ 'outputs': 'absOutput'
+ }],
+ 'expectedOutputs': {
+ 'absOutput': {
+ 'data': [
+ 49.837242126464844, 82.09291076660156, 3.1989054679870605,
+ 85.20904541015625, 88.94609069824219, 91.03521728515625,
+ 31.4484920501709, 29.31110954284668, 92.4477310180664,
+ 15.520709991455078, 80.91279602050781, 38.2097053527832,
+ 53.064762115478516, 99.6537094116211, 21.285049438476562,
+ 90.01982879638672, 18.32451820373535, 33.06915283203125,
+ 30.097660064697266, 74.21503448486328, 95.60974884033203,
+ 6.614287376403809, 31.2832088470459, 53.206058502197266
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'abs float32 3D tensor',
+ 'graph': {
+ 'inputs': {
+ 'absInput': {
+ 'data': [
+ 49.837242126464844, 82.09291076660156, 3.1989054679870605,
+ 85.20904541015625, 88.94609069824219, -91.03521728515625,
+ 31.4484920501709, -29.31110954284668, -92.4477310180664,
+ -15.520709991455078, 80.91279602050781, -38.2097053527832,
+ 53.064762115478516, 99.6537094116211, -21.285049438476562,
+ 90.01982879638672, 18.32451820373535, -33.06915283203125,
+ 30.097660064697266, -74.21503448486328, 95.60974884033203,
+ 6.614287376403809, 31.2832088470459, -53.206058502197266
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'abs',
+ 'arguments': [{'input': 'absInput'}],
+ 'outputs': 'absOutput'
+ }],
+ 'expectedOutputs': {
+ 'absOutput': {
+ 'data': [
+ 49.837242126464844, 82.09291076660156, 3.1989054679870605,
+ 85.20904541015625, 88.94609069824219, 91.03521728515625,
+ 31.4484920501709, 29.31110954284668, 92.4477310180664,
+ 15.520709991455078, 80.91279602050781, 38.2097053527832,
+ 53.064762115478516, 99.6537094116211, 21.285049438476562,
+ 90.01982879638672, 18.32451820373535, 33.06915283203125,
+ 30.097660064697266, 74.21503448486328, 95.60974884033203,
+ 6.614287376403809, 31.2832088470459, 53.206058502197266
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'abs float32 4D tensor',
+ 'graph': {
+ 'inputs': {
+ 'absInput': {
+ 'data': [
+ 49.837242126464844, 82.09291076660156, 3.1989054679870605,
+ 85.20904541015625, 88.94609069824219, -91.03521728515625,
+ 31.4484920501709, -29.31110954284668, -92.4477310180664,
+ -15.520709991455078, 80.91279602050781, -38.2097053527832,
+ 53.064762115478516, 99.6537094116211, -21.285049438476562,
+ 90.01982879638672, 18.32451820373535, -33.06915283203125,
+ 30.097660064697266, -74.21503448486328, 95.60974884033203,
+ 6.614287376403809, 31.2832088470459, -53.206058502197266
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'abs',
+ 'arguments': [{'input': 'absInput'}],
+ 'outputs': 'absOutput'
+ }],
+ 'expectedOutputs': {
+ 'absOutput': {
+ 'data': [
+ 49.837242126464844, 82.09291076660156, 3.1989054679870605,
+ 85.20904541015625, 88.94609069824219, 91.03521728515625,
+ 31.4484920501709, 29.31110954284668, 92.4477310180664,
+ 15.520709991455078, 80.91279602050781, 38.2097053527832,
+ 53.064762115478516, 99.6537094116211, 21.285049438476562,
+ 90.01982879638672, 18.32451820373535, 33.06915283203125,
+ 30.097660064697266, 74.21503448486328, 95.60974884033203,
+ 6.614287376403809, 31.2832088470459, 53.206058502197266
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'abs float32 5D tensor',
+ 'graph': {
+ 'inputs': {
+ 'absInput': {
+ 'data': [
+ 49.837242126464844, 82.09291076660156, 3.1989054679870605,
+ 85.20904541015625, 88.94609069824219, -91.03521728515625,
+ 31.4484920501709, -29.31110954284668, -92.4477310180664,
+ -15.520709991455078, 80.91279602050781, -38.2097053527832,
+ 53.064762115478516, 99.6537094116211, -21.285049438476562,
+ 90.01982879638672, 18.32451820373535, -33.06915283203125,
+ 30.097660064697266, -74.21503448486328, 95.60974884033203,
+ 6.614287376403809, 31.2832088470459, -53.206058502197266
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 1, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'abs',
+ 'arguments': [{'input': 'absInput'}],
+ 'outputs': 'absOutput'
+ }],
+ 'expectedOutputs': {
+ 'absOutput': {
+ 'data': [
+ 49.837242126464844, 82.09291076660156, 3.1989054679870605,
+ 85.20904541015625, 88.94609069824219, 91.03521728515625,
+ 31.4484920501709, 29.31110954284668, 92.4477310180664,
+ 15.520709991455078, 80.91279602050781, 38.2097053527832,
+ 53.064762115478516, 99.6537094116211, 21.285049438476562,
+ 90.01982879638672, 18.32451820373535, 33.06915283203125,
+ 30.097660064697266, 74.21503448486328, 95.60974884033203,
+ 6.614287376403809, 31.2832088470459, 53.206058502197266
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 1, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ absTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getAbsPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/add.https.any.js b/tests/wpt/tests/webnn/conformance_tests/add.https.any.js
index 60fef8e0b4a..17c04d1d2c1 100644
--- a/tests/wpt/tests/webnn/conformance_tests/add.https.any.js
+++ b/tests/wpt/tests/webnn/conformance_tests/add.https.any.js
@@ -1,4 +1,4 @@
-// META: title=test WebNN API element-wise binary operations
+// META: title=test WebNN API element-wise add operation
// META: global=window,dedicatedworker
// META: variant=?cpu
// META: variant=?gpu
@@ -8,6 +8,582 @@
'use strict';
-// https://webmachinelearning.github.io/webnn/#api-mlgraphbuilder-binary
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-binary
+// Compute the element-wise binary addition of the two input tensors.
+// MLOperand add(MLOperand a, MLOperand b);
-runWebNNConformanceTests('add', buildOperationWithTwoInputs);
+
+const getAddPrecisionTolerance = (graphResources) => {
+ const toleranceValueDict = {float32: 1, float16: 1};
+ const expectedDataType =
+ getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs);
+ return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]};
+};
+
+const addTests = [
+ {
+ 'name': 'add float32 1D constant tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ -43.333316802978516, -67.89795684814453, 26.462739944458008,
+ 36.74276351928711, -65.1773910522461, -87.70664978027344,
+ 65.27881622314453, -74.05226135253906, -13.827810287475586,
+ 6.981486797332764, 99.83751678466797, 55.802337646484375,
+ -75.57196044921875, 11.499507904052734, 17.110109329223633,
+ 95.81167602539062, 57.4474983215332, -57.175872802734375,
+ 27.719053268432617, -18.219209671020508, 52.653099060058594,
+ -69.99455261230469, 39.8216552734375, -29.986528396606445
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'inputB': {
+ 'data': [
+ -59.749725341796875, -44.81494140625, -87.93879699707031,
+ 1.8843363523483276, 84.89464569091797, 47.553653717041016,
+ 85.64292907714844, 43.02861404418945, -60.25821304321289,
+ 15.60616683959961, 70.60614776611328, -7.454866409301758,
+ -30.20689582824707, -97.69825744628906, -0.00984330102801323,
+ -77.67960357666016, 30.196685791015625, -59.19007110595703,
+ 89.3588638305664, 28.6798095703125, -29.72130584716797,
+ -90.6352310180664, 28.2818546295166, 27.662540435791016
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'add',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ -103.08303833007812, -112.71289825439453, -61.47605895996094,
+ 38.627098083496094, 19.717254638671875, -40.15299606323242,
+ 150.9217529296875, -31.02364730834961, -74.08602142333984,
+ 22.58765411376953, 170.44366455078125, 48.34747314453125,
+ -105.77885437011719, -86.19874572753906, 17.100265502929688,
+ 18.13207244873047, 87.64418029785156, -116.3659439086914,
+ 117.07791900634766, 10.460599899291992, 22.931793212890625,
+ -160.62979125976562, 68.10350799560547, -2.3239879608154297
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'add float32 1D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ -43.333316802978516, -67.89795684814453, 26.462739944458008,
+ 36.74276351928711, -65.1773910522461, -87.70664978027344,
+ 65.27881622314453, -74.05226135253906, -13.827810287475586,
+ 6.981486797332764, 99.83751678466797, 55.802337646484375,
+ -75.57196044921875, 11.499507904052734, 17.110109329223633,
+ 95.81167602539062, 57.4474983215332, -57.175872802734375,
+ 27.719053268432617, -18.219209671020508, 52.653099060058594,
+ -69.99455261230469, 39.8216552734375, -29.986528396606445
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -59.749725341796875, -44.81494140625, -87.93879699707031,
+ 1.8843363523483276, 84.89464569091797, 47.553653717041016,
+ 85.64292907714844, 43.02861404418945, -60.25821304321289,
+ 15.60616683959961, 70.60614776611328, -7.454866409301758,
+ -30.20689582824707, -97.69825744628906, -0.00984330102801323,
+ -77.67960357666016, 30.196685791015625, -59.19007110595703,
+ 89.3588638305664, 28.6798095703125, -29.72130584716797,
+ -90.6352310180664, 28.2818546295166, 27.662540435791016
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'add',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ -103.08303833007812, -112.71289825439453, -61.47605895996094,
+ 38.627098083496094, 19.717254638671875, -40.15299606323242,
+ 150.9217529296875, -31.02364730834961, -74.08602142333984,
+ 22.58765411376953, 170.44366455078125, 48.34747314453125,
+ -105.77885437011719, -86.19874572753906, 17.100265502929688,
+ 18.13207244873047, 87.64418029785156, -116.3659439086914,
+ 117.07791900634766, 10.460599899291992, 22.931793212890625,
+ -160.62979125976562, 68.10350799560547, -2.3239879608154297
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'add float32 2D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ -43.333316802978516, -67.89795684814453, 26.462739944458008,
+ 36.74276351928711, -65.1773910522461, -87.70664978027344,
+ 65.27881622314453, -74.05226135253906, -13.827810287475586,
+ 6.981486797332764, 99.83751678466797, 55.802337646484375,
+ -75.57196044921875, 11.499507904052734, 17.110109329223633,
+ 95.81167602539062, 57.4474983215332, -57.175872802734375,
+ 27.719053268432617, -18.219209671020508, 52.653099060058594,
+ -69.99455261230469, 39.8216552734375, -29.986528396606445
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -59.749725341796875, -44.81494140625, -87.93879699707031,
+ 1.8843363523483276, 84.89464569091797, 47.553653717041016,
+ 85.64292907714844, 43.02861404418945, -60.25821304321289,
+ 15.60616683959961, 70.60614776611328, -7.454866409301758,
+ -30.20689582824707, -97.69825744628906, -0.00984330102801323,
+ -77.67960357666016, 30.196685791015625, -59.19007110595703,
+ 89.3588638305664, 28.6798095703125, -29.72130584716797,
+ -90.6352310180664, 28.2818546295166, 27.662540435791016
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'add',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ -103.08303833007812, -112.71289825439453, -61.47605895996094,
+ 38.627098083496094, 19.717254638671875, -40.15299606323242,
+ 150.9217529296875, -31.02364730834961, -74.08602142333984,
+ 22.58765411376953, 170.44366455078125, 48.34747314453125,
+ -105.77885437011719, -86.19874572753906, 17.100265502929688,
+ 18.13207244873047, 87.64418029785156, -116.3659439086914,
+ 117.07791900634766, 10.460599899291992, 22.931793212890625,
+ -160.62979125976562, 68.10350799560547, -2.3239879608154297
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'add float32 3D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ -43.333316802978516, -67.89795684814453, 26.462739944458008,
+ 36.74276351928711, -65.1773910522461, -87.70664978027344,
+ 65.27881622314453, -74.05226135253906, -13.827810287475586,
+ 6.981486797332764, 99.83751678466797, 55.802337646484375,
+ -75.57196044921875, 11.499507904052734, 17.110109329223633,
+ 95.81167602539062, 57.4474983215332, -57.175872802734375,
+ 27.719053268432617, -18.219209671020508, 52.653099060058594,
+ -69.99455261230469, 39.8216552734375, -29.986528396606445
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -59.749725341796875, -44.81494140625, -87.93879699707031,
+ 1.8843363523483276, 84.89464569091797, 47.553653717041016,
+ 85.64292907714844, 43.02861404418945, -60.25821304321289,
+ 15.60616683959961, 70.60614776611328, -7.454866409301758,
+ -30.20689582824707, -97.69825744628906, -0.00984330102801323,
+ -77.67960357666016, 30.196685791015625, -59.19007110595703,
+ 89.3588638305664, 28.6798095703125, -29.72130584716797,
+ -90.6352310180664, 28.2818546295166, 27.662540435791016
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'add',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ -103.08303833007812, -112.71289825439453, -61.47605895996094,
+ 38.627098083496094, 19.717254638671875, -40.15299606323242,
+ 150.9217529296875, -31.02364730834961, -74.08602142333984,
+ 22.58765411376953, 170.44366455078125, 48.34747314453125,
+ -105.77885437011719, -86.19874572753906, 17.100265502929688,
+ 18.13207244873047, 87.64418029785156, -116.3659439086914,
+ 117.07791900634766, 10.460599899291992, 22.931793212890625,
+ -160.62979125976562, 68.10350799560547, -2.3239879608154297
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'add float32 4D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ -43.333316802978516, -67.89795684814453, 26.462739944458008,
+ 36.74276351928711, -65.1773910522461, -87.70664978027344,
+ 65.27881622314453, -74.05226135253906, -13.827810287475586,
+ 6.981486797332764, 99.83751678466797, 55.802337646484375,
+ -75.57196044921875, 11.499507904052734, 17.110109329223633,
+ 95.81167602539062, 57.4474983215332, -57.175872802734375,
+ 27.719053268432617, -18.219209671020508, 52.653099060058594,
+ -69.99455261230469, 39.8216552734375, -29.986528396606445
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -59.749725341796875, -44.81494140625, -87.93879699707031,
+ 1.8843363523483276, 84.89464569091797, 47.553653717041016,
+ 85.64292907714844, 43.02861404418945, -60.25821304321289,
+ 15.60616683959961, 70.60614776611328, -7.454866409301758,
+ -30.20689582824707, -97.69825744628906, -0.00984330102801323,
+ -77.67960357666016, 30.196685791015625, -59.19007110595703,
+ 89.3588638305664, 28.6798095703125, -29.72130584716797,
+ -90.6352310180664, 28.2818546295166, 27.662540435791016
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'add',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ -103.08303833007812, -112.71289825439453, -61.47605895996094,
+ 38.627098083496094, 19.717254638671875, -40.15299606323242,
+ 150.9217529296875, -31.02364730834961, -74.08602142333984,
+ 22.58765411376953, 170.44366455078125, 48.34747314453125,
+ -105.77885437011719, -86.19874572753906, 17.100265502929688,
+ 18.13207244873047, 87.64418029785156, -116.3659439086914,
+ 117.07791900634766, 10.460599899291992, 22.931793212890625,
+ -160.62979125976562, 68.10350799560547, -2.3239879608154297
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'add float32 5D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ -43.333316802978516, -67.89795684814453, 26.462739944458008,
+ 36.74276351928711, -65.1773910522461, -87.70664978027344,
+ 65.27881622314453, -74.05226135253906, -13.827810287475586,
+ 6.981486797332764, 99.83751678466797, 55.802337646484375,
+ -75.57196044921875, 11.499507904052734, 17.110109329223633,
+ 95.81167602539062, 57.4474983215332, -57.175872802734375,
+ 27.719053268432617, -18.219209671020508, 52.653099060058594,
+ -69.99455261230469, 39.8216552734375, -29.986528396606445
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 2, 3], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -59.749725341796875, -44.81494140625, -87.93879699707031,
+ 1.8843363523483276, 84.89464569091797, 47.553653717041016,
+ 85.64292907714844, 43.02861404418945, -60.25821304321289,
+ 15.60616683959961, 70.60614776611328, -7.454866409301758,
+ -30.20689582824707, -97.69825744628906, -0.00984330102801323,
+ -77.67960357666016, 30.196685791015625, -59.19007110595703,
+ 89.3588638305664, 28.6798095703125, -29.72130584716797,
+ -90.6352310180664, 28.2818546295166, 27.662540435791016
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'add',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ -103.08303833007812, -112.71289825439453, -61.47605895996094,
+ 38.627098083496094, 19.717254638671875, -40.15299606323242,
+ 150.9217529296875, -31.02364730834961, -74.08602142333984,
+ 22.58765411376953, 170.44366455078125, 48.34747314453125,
+ -105.77885437011719, -86.19874572753906, 17.100265502929688,
+ 18.13207244873047, 87.64418029785156, -116.3659439086914,
+ 117.07791900634766, 10.460599899291992, 22.931793212890625,
+ -160.62979125976562, 68.10350799560547, -2.3239879608154297
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'add float32 broadcast 1D to 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [-59.361572265625],
+ 'descriptor': {'dimensions': [1], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -43.333316802978516, -67.89795684814453, 26.462739944458008,
+ 36.74276351928711, -65.1773910522461, -87.70664978027344,
+ 65.27881622314453, -74.05226135253906, -13.827810287475586,
+ 6.981486797332764, 99.83751678466797, 55.802337646484375,
+ -75.57196044921875, 11.499507904052734, 17.110109329223633,
+ 95.81167602539062, 57.4474983215332, -57.175872802734375,
+ 27.719053268432617, -18.219209671020508, 52.653099060058594,
+ -69.99455261230469, 39.8216552734375, -29.986528396606445
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'add',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ -102.69488525390625, -127.25952911376953, -32.898834228515625,
+ -22.61880874633789, -124.5389633178711, -147.06822204589844,
+ 5.917243957519531, -133.41383361816406, -73.18938446044922,
+ -52.38008499145508, 40.47594451904297, -3.559234619140625,
+ -134.93353271484375, -47.862064361572266, -42.25146484375,
+ 36.450103759765625, -1.9140739440917969, -116.53744506835938,
+ -31.642518997192383, -77.58078002929688, -6.708473205566406,
+ -129.3561248779297, -19.5399169921875, -89.34809875488281
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'add float32 broadcast 2D to 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ -43.333316802978516, -67.89795684814453, 26.462739944458008,
+ 36.74276351928711, -65.1773910522461, -87.70664978027344,
+ 65.27881622314453, -74.05226135253906, -13.827810287475586,
+ 6.981486797332764, 99.83751678466797, 55.802337646484375,
+ -75.57196044921875, 11.499507904052734, 17.110109329223633,
+ 95.81167602539062, 57.4474983215332, -57.175872802734375,
+ 27.719053268432617, -18.219209671020508, 52.653099060058594,
+ -69.99455261230469, 39.8216552734375, -29.986528396606445
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -17.981124877929688, -70.45854187011719, -12.762019157409668,
+ 24.254032135009766, -68.12599182128906, 30.62627410888672
+ ],
+ 'descriptor': {'dimensions': [2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'add',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ -61.3144416809082, -138.35650634765625, 13.70072078704834,
+ 60.996795654296875, -133.30337524414062, -57.08037567138672,
+ 47.297691345214844, -144.51080322265625, -26.589828491210938,
+ 31.235519409179688, 31.711524963378906, 86.4286117553711,
+ -93.55308532714844, -58.95903396606445, 4.348090171813965,
+ 120.06570434570312, -10.67849349975586, -26.549598693847656,
+ 9.73792839050293, -88.67774963378906, 39.89107894897461,
+ -45.74052047729492, -28.304336547851562, 0.6397457122802734
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'add float32 broadcast 3D to 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ -43.333316802978516, -67.89795684814453, 26.462739944458008,
+ 36.74276351928711, -65.1773910522461, -87.70664978027344,
+ 65.27881622314453, -74.05226135253906, -13.827810287475586,
+ 6.981486797332764, 99.83751678466797, 55.802337646484375,
+ -75.57196044921875, 11.499507904052734, 17.110109329223633,
+ 95.81167602539062, 57.4474983215332, -57.175872802734375,
+ 27.719053268432617, -18.219209671020508, 52.653099060058594,
+ -69.99455261230469, 39.8216552734375, -29.986528396606445
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -32.34067153930664, 43.12499237060547, 78.6887435913086,
+ -54.49899673461914
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'add',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ -75.67398834228516, -100.23863220214844, -5.877931594848633,
+ 79.86775207519531, -22.052398681640625, -44.58165740966797,
+ 143.96755981445312, 4.636482238769531, 64.86093139648438,
+ -47.51750946044922, 45.33852005004883, 1.3033409118652344,
+ -107.91262817382812, -20.841163635253906, -15.230562210083008,
+ 138.93667602539062, 100.57249450683594, -14.050880432128906,
+ 106.40779876708984, 60.46953582763672, 131.3418426513672,
+ -124.49354553222656, -14.67734146118164, -84.48552703857422
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'add float32 broadcast 4D to 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [-59.361572265625],
+ 'descriptor': {'dimensions': [1, 1, 1, 1], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -43.333316802978516, -67.89795684814453, 26.462739944458008,
+ 36.74276351928711, -65.1773910522461, -87.70664978027344,
+ 65.27881622314453, -74.05226135253906, -13.827810287475586,
+ 6.981486797332764, 99.83751678466797, 55.802337646484375,
+ -75.57196044921875, 11.499507904052734, 17.110109329223633,
+ 95.81167602539062, 57.4474983215332, -57.175872802734375,
+ 27.719053268432617, -18.219209671020508, 52.653099060058594,
+ -69.99455261230469, 39.8216552734375, -29.986528396606445
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'add',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ -102.69488525390625, -127.25952911376953, -32.898834228515625,
+ -22.61880874633789, -124.5389633178711, -147.06822204589844,
+ 5.917243957519531, -133.41383361816406, -73.18938446044922,
+ -52.38008499145508, 40.47594451904297, -3.559234619140625,
+ -134.93353271484375, -47.862064361572266, -42.25146484375,
+ 36.450103759765625, -1.9140739440917969, -116.53744506835938,
+ -31.642518997192383, -77.58078002929688, -6.708473205566406,
+ -129.3561248779297, -19.5399169921875, -89.34809875488281
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'add float32 large inputs',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': 89.32998657226562,
+ 'descriptor': {'dimensions': [6000, 6000], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'inputB': {
+ 'data': 77.24720764160156,
+ 'descriptor': {'dimensions': [6000, 6000], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'add',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': 166.5771942138672,
+ 'descriptor': {'dimensions': [6000, 6000], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'add float32 with special character names',
+ 'graph': {
+ 'inputs': {
+ '12-L#!.☺': {
+ 'data': [89.32998657226562],
+ 'descriptor': {'dimensions': [1], 'dataType': 'float32'},
+ 'constant': true
+ },
+ '🤦🏼‍♂️124DS#!F': {
+ 'data': [77.24720764160156],
+ 'descriptor': {'dimensions': [1], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'add',
+ 'arguments': [{'a': '12-L#!.☺'}, {'b': '🤦🏼‍♂️124DS#!F'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [166.5771942138672],
+ 'descriptor': {'dimensions': [1], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ addTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getAddPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/arg_min_max.https.any.js b/tests/wpt/tests/webnn/conformance_tests/arg_min_max.https.any.js
index dd6cd6d9181..e730f5135e8 100644
--- a/tests/wpt/tests/webnn/conformance_tests/arg_min_max.https.any.js
+++ b/tests/wpt/tests/webnn/conformance_tests/arg_min_max.https.any.js
@@ -8,6 +8,602 @@
'use strict';
-// https://webmachinelearning.github.io/webnn/#api-mlgraphbuilder-argminmax
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-argminmax
+// Return the index location of the minimum or maximum values of all the input
+// values along the axis.
+//
+// dictionary MLArgMinMaxOptions {
+// boolean keepDimensions = false;
+// };
+//
+// MLOperand argMin(MLOperand input, [EnforceRange] unsigned long axis,
+// optional MLArgMinMaxOptions options = {});
+// MLOperand argMax(MLOperand input, [EnforceRange] unsigned long axis,
+// optional MLArgMinMaxOptions options = {});
-runWebNNConformanceTests(['argMin', 'argMax'], buildOperationWithSingleInput);
+
+const getArgMinMaxPrecisionTolerance = (graphResources) => {
+ const toleranceValueDict = {int64: 0};
+ const expectedDataType =
+ getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs);
+ return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]};
+};
+
+const argMinMaxTests = [
+ // argMin tests
+ {
+ 'name': 'argMin float32 1D constant tensor, axis=0, default options',
+ 'graph': {
+ 'inputs': {
+ 'argminInput': {
+ 'data': [
+ 3.8301241397857666, -24.986488342285156, 5.29998254776001,
+ -48.54866027832031, 40.308868408203125, 60.184295654296875,
+ -82.78385925292969, -96.50904083251953, 71.87028503417969,
+ 38.86639404296875, -39.14372634887695, 31.444366455078125,
+ -82.78385925292969, -96.50904083251953, -25.533889770507812,
+ -16.14226531982422, 66.63677215576172, 82.51197814941406,
+ -82.78385925292969, -96.50904083251953, 39.76872634887695,
+ 42.1504020690918, 82.66864013671875, 85.45269012451172
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'argMin',
+ 'arguments': [{'input': 'argminInput'}, {'axis': 0}],
+ 'outputs': 'argminOutput'
+ }],
+ 'expectedOutputs': {
+ 'argminOutput':
+ {'data': [7], 'descriptor': {'dimensions': [], 'dataType': 'int32'}}
+ }
+ }
+ },
+ {
+ 'name': 'argMin float32 1D tensor, axis=0, default options',
+ 'graph': {
+ 'inputs': {
+ 'argminInput': {
+ 'data': [
+ 3.8301241397857666, -24.986488342285156, 5.29998254776001,
+ -48.54866027832031, 40.308868408203125, 60.184295654296875,
+ -82.78385925292969, -96.50904083251953, 71.87028503417969,
+ 38.86639404296875, -39.14372634887695, 31.444366455078125,
+ -82.78385925292969, -96.50904083251953, -25.533889770507812,
+ -16.14226531982422, 66.63677215576172, 82.51197814941406,
+ -82.78385925292969, -96.50904083251953, 39.76872634887695,
+ 42.1504020690918, 82.66864013671875, 85.45269012451172
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'argMin',
+ 'arguments': [{'input': 'argminInput'}, {'axis': 0}],
+ 'outputs': 'argminOutput'
+ }],
+ 'expectedOutputs': {
+ 'argminOutput':
+ {'data': [7], 'descriptor': {'dimensions': [], 'dataType': 'int32'}}
+ }
+ }
+ },
+ {
+ 'name': 'argMin float32 2D tensor, axis=0, default options',
+ 'graph': {
+ 'inputs': {
+ 'argminInput': {
+ 'data': [
+ 3.8301241397857666, -24.986488342285156, 5.29998254776001,
+ -48.54866027832031, 40.308868408203125, 60.184295654296875,
+ -82.78385925292969, -96.50904083251953, 71.87028503417969,
+ 38.86639404296875, -39.14372634887695, 31.444366455078125,
+ -82.78385925292969, -96.50904083251953, -25.533889770507812,
+ -16.14226531982422, 66.63677215576172, 82.51197814941406,
+ -82.78385925292969, -96.50904083251953, 39.76872634887695,
+ 42.1504020690918, 82.66864013671875, 85.45269012451172
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'argMin',
+ 'arguments': [{'input': 'argminInput'}, {'axis': 0}],
+ 'outputs': 'argminOutput'
+ }],
+ 'expectedOutputs': {
+ 'argminOutput': {
+ 'data': [1, 1, 2, 0, 1, 1],
+ 'descriptor': {'dimensions': [6], 'dataType': 'int32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'argMin float32 3D tensor, axis=0, default options',
+ 'graph': {
+ 'inputs': {
+ 'argminInput': {
+ 'data': [
+ 3.8301241397857666, -24.986488342285156, 5.29998254776001,
+ -48.54866027832031, 40.308868408203125, 60.184295654296875,
+ -82.78385925292969, -96.50904083251953, 71.87028503417969,
+ 38.86639404296875, -39.14372634887695, 31.444366455078125,
+ -82.78385925292969, -96.50904083251953, -25.533889770507812,
+ -16.14226531982422, 66.63677215576172, 82.51197814941406,
+ -82.78385925292969, -96.50904083251953, 39.76872634887695,
+ 42.1504020690918, 82.66864013671875, 85.45269012451172
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'argMin',
+ 'arguments': [{'input': 'argminInput'}, {'axis': 0}],
+ 'outputs': 'argminOutput'
+ }],
+ 'expectedOutputs': {
+ 'argminOutput': {
+ 'data': [1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0],
+ 'descriptor': {'dimensions': [3, 4], 'dataType': 'int32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'argMin float32 4D tensor, axis=0, default options',
+ 'graph': {
+ 'inputs': {
+ 'argminInput': {
+ 'data': [
+ 3.8301241397857666, -24.986488342285156, 5.29998254776001,
+ -48.54866027832031, 40.308868408203125, 60.184295654296875,
+ -82.78385925292969, -96.50904083251953, 71.87028503417969,
+ 38.86639404296875, -39.14372634887695, 31.444366455078125,
+ -82.78385925292969, -96.50904083251953, -25.533889770507812,
+ -16.14226531982422, 66.63677215576172, 82.51197814941406,
+ -82.78385925292969, -96.50904083251953, 39.76872634887695,
+ 42.1504020690918, 82.66864013671875, 85.45269012451172
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'argMin',
+ 'arguments': [{'input': 'argminInput'}, {'axis': 0}],
+ 'outputs': 'argminOutput'
+ }],
+ 'expectedOutputs': {
+ 'argminOutput': {
+ 'data': [1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0],
+ 'descriptor': {'dimensions': [1, 4, 3], 'dataType': 'int32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'argMin float32 5D tensor, axis=0, default options',
+ 'graph': {
+ 'inputs': {
+ 'argminInput': {
+ 'data': [
+ 3.8301241397857666, -24.986488342285156, 5.29998254776001,
+ -48.54866027832031, 40.308868408203125, 60.184295654296875,
+ -82.78385925292969, -96.50904083251953, 71.87028503417969,
+ 38.86639404296875, -39.14372634887695, 31.444366455078125,
+ -82.78385925292969, -96.50904083251953, -25.533889770507812,
+ -16.14226531982422, 66.63677215576172, 82.51197814941406,
+ -82.78385925292969, -96.50904083251953, 39.76872634887695,
+ 42.1504020690918, 82.66864013671875, 85.45269012451172
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 1, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'argMin',
+ 'arguments': [{'input': 'argminInput'}, {'axis': 0}],
+ 'outputs': 'argminOutput'
+ }],
+ 'expectedOutputs': {
+ 'argminOutput': {
+ 'data': [1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0],
+ 'descriptor': {'dimensions': [1, 4, 1, 3], 'dataType': 'int32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'argMin float32 4D tensor, axis=2',
+ 'graph': {
+ 'inputs': {
+ 'argminInput': {
+ 'data': [
+ 3.8301241397857666, -24.986488342285156, 5.29998254776001,
+ -48.54866027832031, 40.308868408203125, 60.184295654296875,
+ -82.78385925292969, -96.50904083251953, 71.87028503417969,
+ 38.86639404296875, -39.14372634887695, 31.444366455078125,
+ -82.78385925292969, -96.50904083251953, -25.533889770507812,
+ -16.14226531982422, 66.63677215576172, 82.51197814941406,
+ -82.78385925292969, -96.50904083251953, 39.76872634887695,
+ 42.1504020690918, 82.66864013671875, 85.45269012451172
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'argMin',
+ 'arguments': [{'input': 'argminInput'}, {'axis': 2}],
+ 'outputs': 'argminOutput'
+ }],
+ 'expectedOutputs': {
+ 'argminOutput': {
+ 'data': [2, 2, 0, 0, 0, 0],
+ 'descriptor': {'dimensions': [2, 1, 3], 'dataType': 'int32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'argMin float32 4D tensor, axis=0, options.keepDimensions=true',
+ 'graph': {
+ 'inputs': {
+ 'argminInput': {
+ 'data': [
+ 3.8301241397857666, -24.986488342285156, 5.29998254776001,
+ -48.54866027832031, 40.308868408203125, 60.184295654296875,
+ -82.78385925292969, -96.50904083251953, 71.87028503417969,
+ 38.86639404296875, -39.14372634887695, 31.444366455078125,
+ -82.78385925292969, -96.50904083251953, -25.533889770507812,
+ -16.14226531982422, 66.63677215576172, 82.51197814941406,
+ -82.78385925292969, -96.50904083251953, 39.76872634887695,
+ 42.1504020690918, 82.66864013671875, 85.45269012451172
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'argMin',
+ 'arguments': [
+ {'input': 'argminInput'}, {'axis': 0},
+ {'options': {'keepDimensions': true}}
+ ],
+ 'outputs': 'argminOutput'
+ }],
+ 'expectedOutputs': {
+ 'argminOutput': {
+ 'data': [1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0],
+ 'descriptor': {'dimensions': [1, 1, 4, 3], 'dataType': 'int32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'argMin float32 4D tensor, axis=0, options.keepDimensions=false',
+ 'graph': {
+ 'inputs': {
+ 'argminInput': {
+ 'data': [
+ 3.8301241397857666, -24.986488342285156, 5.29998254776001,
+ -48.54866027832031, 40.308868408203125, 60.184295654296875,
+ -82.78385925292969, -96.50904083251953, 71.87028503417969,
+ 38.86639404296875, -39.14372634887695, 31.444366455078125,
+ -82.78385925292969, -96.50904083251953, -25.533889770507812,
+ -16.14226531982422, 66.63677215576172, 82.51197814941406,
+ -82.78385925292969, -96.50904083251953, 39.76872634887695,
+ 42.1504020690918, 82.66864013671875, 85.45269012451172
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'argMin',
+ 'arguments': [
+ {'input': 'argminInput'}, {'axis': 0},
+ {'options': {'keepDimensions': false}}
+ ],
+ 'outputs': 'argminOutput'
+ }],
+ 'expectedOutputs': {
+ 'argminOutput': {
+ 'data': [1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0],
+ 'descriptor': {'dimensions': [1, 4, 3], 'dataType': 'int32'}
+ }
+ }
+ }
+ },
+
+ // argMax tests
+ {
+ 'name': 'argMax float32 1D constant tensor, axis=0, default options',
+ 'graph': {
+ 'inputs': {
+ 'argmaxInput': {
+ 'data': [
+ -51.09362030029297, -6.53970193862915, 73.8133773803711,
+ 88.46114349365234, -5.294266700744629, -79.20668029785156,
+ -41.70176696777344, 73.8133773803711, 88.46114349365234,
+ -84.94000244140625, -61.48894119262695, -98.3387451171875,
+ -51.09362030029297, -6.53970193862915, 73.8133773803711,
+ 88.46114349365234, -5.294266700744629, -79.20668029785156,
+ -41.70176696777344, 73.8133773803711, 88.46114349365234,
+ -84.94000244140625, -61.48894119262695, -98.3387451171875
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'argMax',
+ 'arguments': [{'input': 'argmaxInput'}, {'axis': 0}],
+ 'outputs': 'argmaxOutput'
+ }],
+ 'expectedOutputs': {
+ 'argmaxOutput':
+ {'data': [3], 'descriptor': {'dimensions': [], 'dataType': 'int32'}}
+ }
+ }
+ },
+ {
+ 'name': 'argMax float32 1D tensor, axis=0, default options',
+ 'graph': {
+ 'inputs': {
+ 'argmaxInput': {
+ 'data': [
+ -51.09362030029297, -6.53970193862915, 73.8133773803711,
+ 88.46114349365234, -5.294266700744629, -79.20668029785156,
+ -41.70176696777344, 73.8133773803711, 88.46114349365234,
+ -84.94000244140625, -61.48894119262695, -98.3387451171875,
+ -51.09362030029297, -6.53970193862915, 73.8133773803711,
+ 88.46114349365234, -5.294266700744629, -79.20668029785156,
+ -41.70176696777344, 73.8133773803711, 88.46114349365234,
+ -84.94000244140625, -61.48894119262695, -98.3387451171875
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'argMax',
+ 'arguments': [{'input': 'argmaxInput'}, {'axis': 0}],
+ 'outputs': 'argmaxOutput'
+ }],
+ 'expectedOutputs': {
+ 'argmaxOutput':
+ {'data': [3], 'descriptor': {'dimensions': [], 'dataType': 'int32'}}
+ }
+ }
+ },
+ {
+ 'name': 'argMax float32 2D tensor, axis=0, default options',
+ 'graph': {
+ 'inputs': {
+ 'argmaxInput': {
+ 'data': [
+ -51.09362030029297, -6.53970193862915, 73.8133773803711,
+ 88.46114349365234, -5.294266700744629, -79.20668029785156,
+ -41.70176696777344, 73.8133773803711, 88.46114349365234,
+ -84.94000244140625, -61.48894119262695, -98.3387451171875,
+ -51.09362030029297, -6.53970193862915, 73.8133773803711,
+ 88.46114349365234, -5.294266700744629, -79.20668029785156,
+ -41.70176696777344, 73.8133773803711, 88.46114349365234,
+ -84.94000244140625, -61.48894119262695, -98.3387451171875
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'argMax',
+ 'arguments': [{'input': 'argmaxInput'}, {'axis': 0}],
+ 'outputs': 'argmaxOutput'
+ }],
+ 'expectedOutputs': {
+ 'argmaxOutput': {
+ 'data': [1, 1, 1, 0, 0, 0],
+ 'descriptor': {'dimensions': [6], 'dataType': 'int32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'argMax float32 3D tensor, axis=0, default options',
+ 'graph': {
+ 'inputs': {
+ 'argmaxInput': {
+ 'data': [
+ -51.09362030029297, -6.53970193862915, 73.8133773803711,
+ 88.46114349365234, -5.294266700744629, -79.20668029785156,
+ -41.70176696777344, 73.8133773803711, 88.46114349365234,
+ -84.94000244140625, -61.48894119262695, -98.3387451171875,
+ -51.09362030029297, -6.53970193862915, 73.8133773803711,
+ 88.46114349365234, -5.294266700744629, -79.20668029785156,
+ -41.70176696777344, 73.8133773803711, 88.46114349365234,
+ -84.94000244140625, -61.48894119262695, -98.3387451171875
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'argMax',
+ 'arguments': [{'input': 'argmaxInput'}, {'axis': 0}],
+ 'outputs': 'argmaxOutput'
+ }],
+ 'expectedOutputs': {
+ 'argmaxOutput': {
+ 'data': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
+ 'descriptor': {'dimensions': [3, 4], 'dataType': 'int32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'argMax float32 4D tensor, axis=0, default options',
+ 'graph': {
+ 'inputs': {
+ 'argmaxInput': {
+ 'data': [
+ -51.09362030029297, -6.53970193862915, 73.8133773803711,
+ 88.46114349365234, -5.294266700744629, -79.20668029785156,
+ -41.70176696777344, 73.8133773803711, 88.46114349365234,
+ -84.94000244140625, -61.48894119262695, -98.3387451171875,
+ -51.09362030029297, -6.53970193862915, 73.8133773803711,
+ 88.46114349365234, -5.294266700744629, -79.20668029785156,
+ -41.70176696777344, 73.8133773803711, 88.46114349365234,
+ -84.94000244140625, -61.48894119262695, -98.3387451171875
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'argMax',
+ 'arguments': [{'input': 'argmaxInput'}, {'axis': 0}],
+ 'outputs': 'argmaxOutput'
+ }],
+ 'expectedOutputs': {
+ 'argmaxOutput': {
+ 'data': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
+ 'descriptor': {'dimensions': [1, 4, 3], 'dataType': 'int32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'argMax float32 5D tensor, axis=0, default options',
+ 'graph': {
+ 'inputs': {
+ 'argmaxInput': {
+ 'data': [
+ -51.09362030029297, -6.53970193862915, 73.8133773803711,
+ 88.46114349365234, -5.294266700744629, -79.20668029785156,
+ -41.70176696777344, 73.8133773803711, 88.46114349365234,
+ -84.94000244140625, -61.48894119262695, -98.3387451171875,
+ -51.09362030029297, -6.53970193862915, 73.8133773803711,
+ 88.46114349365234, -5.294266700744629, -79.20668029785156,
+ -41.70176696777344, 73.8133773803711, 88.46114349365234,
+ -84.94000244140625, -61.48894119262695, -98.3387451171875
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 1, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'argMax',
+ 'arguments': [{'input': 'argmaxInput'}, {'axis': 0}],
+ 'outputs': 'argmaxOutput'
+ }],
+ 'expectedOutputs': {
+ 'argmaxOutput': {
+ 'data': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
+ 'descriptor': {'dimensions': [1, 4, 1, 3], 'dataType': 'int32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'argMax float32 4D tensor, axis=2',
+ 'graph': {
+ 'inputs': {
+ 'argmaxInput': {
+ 'data': [
+ -51.09362030029297, -6.53970193862915, 73.8133773803711,
+ 88.46114349365234, -5.294266700744629, -79.20668029785156,
+ -41.70176696777344, 73.8133773803711, 88.46114349365234,
+ -84.94000244140625, -61.48894119262695, -98.3387451171875,
+ -51.09362030029297, -6.53970193862915, 73.8133773803711,
+ 88.46114349365234, -5.294266700744629, -79.20668029785156,
+ -41.70176696777344, 73.8133773803711, 88.46114349365234,
+ -84.94000244140625, -61.48894119262695, -98.3387451171875
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'argMax',
+ 'arguments': [{'input': 'argmaxInput'}, {'axis': 2}],
+ 'outputs': 'argmaxOutput'
+ }],
+ 'expectedOutputs': {
+ 'argmaxOutput': {
+ 'data': [1, 2, 2, 1, 2, 2],
+ 'descriptor': {'dimensions': [2, 1, 3], 'dataType': 'int32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'argMax float32 4D tensor, axis=3, options.keepDimensions=true',
+ 'graph': {
+ 'inputs': {
+ 'argmaxInput': {
+ 'data': [
+ -51.09362030029297, -6.53970193862915, 73.8133773803711,
+ 88.46114349365234, -5.294266700744629, -79.20668029785156,
+ -41.70176696777344, 73.8133773803711, 88.46114349365234,
+ -84.94000244140625, -61.48894119262695, -98.3387451171875,
+ -51.09362030029297, -6.53970193862915, 73.8133773803711,
+ 88.46114349365234, -5.294266700744629, -79.20668029785156,
+ -41.70176696777344, 73.8133773803711, 88.46114349365234,
+ -84.94000244140625, -61.48894119262695, -98.3387451171875
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'argMax',
+ 'arguments': [
+ {'input': 'argmaxInput'}, {'axis': 3},
+ {'options': {'keepDimensions': true}}
+ ],
+ 'outputs': 'argmaxOutput'
+ }],
+ 'expectedOutputs': {
+ 'argmaxOutput': {
+ 'data': [2, 0, 2, 1, 2, 0, 2, 1],
+ 'descriptor': {'dimensions': [2, 1, 4, 1], 'dataType': 'int32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'argMax float32 4D tensor, axis=3, options.keepDimensions=false',
+ 'graph': {
+ 'inputs': {
+ 'argmaxInput': {
+ 'data': [
+ -51.09362030029297, -6.53970193862915, 73.8133773803711,
+ 88.46114349365234, -5.294266700744629, -79.20668029785156,
+ -41.70176696777344, 73.8133773803711, 88.46114349365234,
+ -84.94000244140625, -61.48894119262695, -98.3387451171875,
+ -51.09362030029297, -6.53970193862915, 73.8133773803711,
+ 88.46114349365234, -5.294266700744629, -79.20668029785156,
+ -41.70176696777344, 73.8133773803711, 88.46114349365234,
+ -84.94000244140625, -61.48894119262695, -98.3387451171875
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'argMax',
+ 'arguments': [
+ {'input': 'argmaxInput'}, {'axis': 3},
+ {'options': {'keepDimensions': false}}
+ ],
+ 'outputs': 'argmaxOutput'
+ }],
+ 'expectedOutputs': {
+ 'argmaxOutput': {
+ 'data': [2, 0, 2, 1, 2, 0, 2, 1],
+ 'descriptor': {'dimensions': [2, 1, 4], 'dataType': 'int32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ argMinMaxTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getArgMinMaxPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/batch_normalization.https.any.js b/tests/wpt/tests/webnn/conformance_tests/batch_normalization.https.any.js
index 569881f94f6..08dda14db28 100644
--- a/tests/wpt/tests/webnn/conformance_tests/batch_normalization.https.any.js
+++ b/tests/wpt/tests/webnn/conformance_tests/batch_normalization.https.any.js
@@ -8,6 +8,711 @@
'use strict';
-// https://webmachinelearning.github.io/webnn/#api-mlgraphbuilder-batchnorm
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-batchnorm
+// Normalize the values of the input tensor using Batch-Normalization.
+//
+// dictionary MLBatchNormalizationOptions {
+// MLOperand scale;
+// MLOperand bias;
+// [EnforceRange] unsigned long axis = 1;
+// double epsilon = 1e-5;
+// };
+//
+// MLOperand batchNormalization(
+// MLOperand input, MLOperand mean, MLOperand, variance,
+// optional MLBatchNormalizationOptions options = {});
-runWebNNConformanceTests('batchNormalization', buildBatchNorm);
+
+const getBatchNormPrecisionTolerance = (graphResources) => {
+ const toleranceValueDict = {float32: 6, float16: 6};
+ const expectedDataType =
+ getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs);
+ return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]};
+};
+
+const batchNormTests = [
+ {
+ 'name':
+ 'batchNormalization float32 2D tensor (mean and variance are non-constant) default options',
+ 'graph': {
+ 'inputs': {
+ 'bnInput': {
+ 'data': [
+ -41.30733108520508, 64.08863830566406, -63.376670837402344,
+ -46.790367126464844, 83.02227020263672, -80.08049011230469,
+ -62.144378662109375, -0.10012771934270859, -40.90216064453125,
+ 56.96306228637695, 37.37249755859375, 57.046478271484375,
+ 82.05680084228516, -86.1164321899414, 76.8831787109375,
+ 97.03362274169922, -21.35103988647461, -96.93824005126953,
+ -9.359310150146484, 80.20824432373047, -85.36802673339844,
+ 62.35185241699219, -68.4724349975586, -12.10716724395752
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ },
+ 'bnMean': {
+ 'data': [
+ -7.814267635345459, -95.64129638671875, 38.15440368652344,
+ -55.95203399658203, -87.86500549316406, -41.63645553588867
+ ],
+ 'descriptor': {'dimensions': [6], 'dataType': 'float32'}
+ },
+ 'bnVariance': {
+ 'data': [
+ 60.31186294555664, 26.43260383605957, 53.275634765625,
+ 40.146121978759766, 59.41098403930664, 35.99981689453125
+ ],
+ 'descriptor': {'dimensions': [6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'batchNormalization',
+ 'arguments': [
+ {'input': 'bnInput'}, {'mean': 'bnMean'}, {'variance': 'bnVariance'}
+ ],
+ 'outputs': 'bnOutput'
+ }],
+ 'expectedOutputs': {
+ 'bnOutput': {
+ 'data': [
+ -4.312741756439209, 31.068212509155273, -13.910240173339844,
+ 1.4459478855133057, 22.170541763305664, -6.407354354858398,
+ -6.995829105377197, 18.583200454711914, -10.831125259399414,
+ 17.820920944213867, 16.2480411529541, 16.447195053100586,
+ 11.57226848602295, 1.8526301383972168, 5.306026458740234,
+ 24.145092010498047, 8.629376411437988, -9.216986656188965,
+ -0.1989477425813675, 34.203548431396484, -16.923160552978516,
+ 18.671411514282227, 2.5159497261047363, 4.921559810638428
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'batchNormalization float32 2D constant tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'bnInput': {
+ 'data': [
+ -41.30733108520508, 64.08863830566406, -63.376670837402344,
+ -46.790367126464844, 83.02227020263672, -80.08049011230469,
+ -62.144378662109375, -0.10012771934270859, -40.90216064453125,
+ 56.96306228637695, 37.37249755859375, 57.046478271484375,
+ 82.05680084228516, -86.1164321899414, 76.8831787109375,
+ 97.03362274169922, -21.35103988647461, -96.93824005126953,
+ -9.359310150146484, 80.20824432373047, -85.36802673339844,
+ 62.35185241699219, -68.4724349975586, -12.10716724395752
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'bnMean': {
+ 'data': [
+ -7.814267635345459, -95.64129638671875, 38.15440368652344,
+ -55.95203399658203, -87.86500549316406, -41.63645553588867
+ ],
+ 'descriptor': {'dimensions': [6], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'bnVariance': {
+ 'data': [
+ 60.31186294555664, 26.43260383605957, 53.275634765625,
+ 40.146121978759766, 59.41098403930664, 35.99981689453125
+ ],
+ 'descriptor': {'dimensions': [6], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'batchNormalization',
+ 'arguments': [
+ {'input': 'bnInput'}, {'mean': 'bnMean'}, {'variance': 'bnVariance'}
+ ],
+ 'outputs': 'bnOutput'
+ }],
+ 'expectedOutputs': {
+ 'bnOutput': {
+ 'data': [
+ -4.312741756439209, 31.068212509155273, -13.910240173339844,
+ 1.4459478855133057, 22.170541763305664, -6.407354354858398,
+ -6.995829105377197, 18.583200454711914, -10.831125259399414,
+ 17.820920944213867, 16.2480411529541, 16.447195053100586,
+ 11.57226848602295, 1.8526301383972168, 5.306026458740234,
+ 24.145092010498047, 8.629376411437988, -9.216986656188965,
+ -0.1989477425813675, 34.203548431396484, -16.923160552978516,
+ 18.671411514282227, 2.5159497261047363, 4.921559810638428
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'batchNormalization float32 2D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'bnInput': {
+ 'data': [
+ -41.30733108520508, 64.08863830566406, -63.376670837402344,
+ -46.790367126464844, 83.02227020263672, -80.08049011230469,
+ -62.144378662109375, -0.10012771934270859, -40.90216064453125,
+ 56.96306228637695, 37.37249755859375, 57.046478271484375,
+ 82.05680084228516, -86.1164321899414, 76.8831787109375,
+ 97.03362274169922, -21.35103988647461, -96.93824005126953,
+ -9.359310150146484, 80.20824432373047, -85.36802673339844,
+ 62.35185241699219, -68.4724349975586, -12.10716724395752
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ },
+ 'bnMean': {
+ 'data': [
+ -7.814267635345459, -95.64129638671875, 38.15440368652344,
+ -55.95203399658203, -87.86500549316406, -41.63645553588867
+ ],
+ 'descriptor': {'dimensions': [6], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'bnVariance': {
+ 'data': [
+ 60.31186294555664, 26.43260383605957, 53.275634765625,
+ 40.146121978759766, 59.41098403930664, 35.99981689453125
+ ],
+ 'descriptor': {'dimensions': [6], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'batchNormalization',
+ 'arguments': [
+ {'input': 'bnInput'}, {'mean': 'bnMean'}, {'variance': 'bnVariance'}
+ ],
+ 'outputs': 'bnOutput'
+ }],
+ 'expectedOutputs': {
+ 'bnOutput': {
+ 'data': [
+ -4.312741756439209, 31.068212509155273, -13.910240173339844,
+ 1.4459478855133057, 22.170541763305664, -6.407354354858398,
+ -6.995829105377197, 18.583200454711914, -10.831125259399414,
+ 17.820920944213867, 16.2480411529541, 16.447195053100586,
+ 11.57226848602295, 1.8526301383972168, 5.306026458740234,
+ 24.145092010498047, 8.629376411437988, -9.216986656188965,
+ -0.1989477425813675, 34.203548431396484, -16.923160552978516,
+ 18.671411514282227, 2.5159497261047363, 4.921559810638428
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'batchNormalization float32 3D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'bnInput': {
+ 'data': [
+ -41.30733108520508, 64.08863830566406, -63.376670837402344,
+ -46.790367126464844, 83.02227020263672, -80.08049011230469,
+ -62.144378662109375, -0.10012771934270859, -40.90216064453125,
+ 56.96306228637695, 37.37249755859375, 57.046478271484375,
+ 82.05680084228516, -86.1164321899414, 76.8831787109375,
+ 97.03362274169922, -21.35103988647461, -96.93824005126953,
+ -9.359310150146484, 80.20824432373047, -85.36802673339844,
+ 62.35185241699219, -68.4724349975586, -12.10716724395752
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ },
+ 'bnMean': {
+ 'data': [12.810380935668945, 63.13715362548828, -61.62983322143555],
+ 'descriptor': {'dimensions': [3], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'bnVariance': {
+ 'data': [18.358240127563477, 41.847232818603516, 16.12828254699707],
+ 'descriptor': {'dimensions': [3], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'batchNormalization',
+ 'arguments': [
+ {'input': 'bnInput'}, {'mean': 'bnMean'}, {'variance': 'bnVariance'}
+ ],
+ 'outputs': 'bnOutput'
+ }],
+ 'expectedOutputs': {
+ 'bnOutput': {
+ 'data': [
+ -12.630594253540039, 11.967890739440918, -17.781383514404297,
+ -13.910285949707031, 3.0739352703094482, -22.139259338378906,
+ -19.36661148071289, -9.775517463684082, 5.161267280578613,
+ 29.53006935119629, 24.651947021484375, 29.550840377807617,
+ 16.161500930786133, -23.088642120361328, 14.954023361206055,
+ 19.656957626342773, -13.06058406829834, -24.745210647583008,
+ -11.206846237182617, 2.638929843902588, -5.910898208618164,
+ 30.871898651123047, -1.7038332223892212, 12.331327438354492
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'batchNormalization float32 4D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'bnInput': {
+ 'data': [
+ -41.30733108520508, 64.08863830566406, -63.376670837402344,
+ -46.790367126464844, 83.02227020263672, -80.08049011230469,
+ -62.144378662109375, -0.10012771934270859, -40.90216064453125,
+ 56.96306228637695, 37.37249755859375, 57.046478271484375,
+ 82.05680084228516, -86.1164321899414, 76.8831787109375,
+ 97.03362274169922, -21.35103988647461, -96.93824005126953,
+ -9.359310150146484, 80.20824432373047, -85.36802673339844,
+ 62.35185241699219, -68.4724349975586, -12.10716724395752
+ ],
+ 'descriptor': {'dimensions': [2, 3, 2, 2], 'dataType': 'float32'}
+ },
+ 'bnMean': {
+ 'data': [51.629150390625, 99.36075592041016, -96.1473617553711],
+ 'descriptor': {'dimensions': [3], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'bnVariance': {
+ 'data': [30.448015213012695, 86.36219024658203, 73.88455200195312],
+ 'descriptor': {'dimensions': [3], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'batchNormalization',
+ 'arguments': [
+ {'input': 'bnInput'}, {'mean': 'bnMean'}, {'variance': 'bnVariance'}
+ ],
+ 'outputs': 'bnOutput'
+ }],
+ 'expectedOutputs': {
+ 'bnOutput': {
+ 'data': [
+ -16.842504501342773, 2.2579827308654785, -20.842041015625,
+ -17.836172103881836, -1.7581257820129395, -19.30902862548828,
+ -17.37898826599121, -10.702629089355469, 6.4271392822265625,
+ 17.812623977661133, 15.533489227294922, 17.822328567504883,
+ 5.514280319213867, -24.963077545166016, 4.576685905456543,
+ 8.228469848632812, -12.989363670349121, -21.123029708862305,
+ -11.698976516723633, -2.0609331130981445, 1.2540507316589355,
+ 18.43954849243164, 3.2196571826934814, 9.777103424072266
+ ],
+ 'descriptor': {'dimensions': [2, 3, 2, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'batchNormalization float32 5D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'bnInput': {
+ 'data': [
+ -41.30733108520508, 64.08863830566406, -63.376670837402344,
+ -46.790367126464844, 83.02227020263672, -80.08049011230469,
+ -62.144378662109375, -0.10012771934270859, -40.90216064453125,
+ 56.96306228637695, 37.37249755859375, 57.046478271484375,
+ 82.05680084228516, -86.1164321899414, 76.8831787109375,
+ 97.03362274169922, -21.35103988647461, -96.93824005126953,
+ -9.359310150146484, 80.20824432373047, -85.36802673339844,
+ 62.35185241699219, -68.4724349975586, -12.10716724395752
+ ],
+ 'descriptor': {'dimensions': [6, 1, 1, 2, 2], 'dataType': 'float32'}
+ },
+ 'bnMean': {
+ 'data': [35.4078254699707],
+ 'descriptor': {'dimensions': [1], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'bnVariance': {
+ 'data': [40.93109893798828],
+ 'descriptor': {'dimensions': [1], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'batchNormalization',
+ 'arguments': [
+ {'input': 'bnInput'}, {'mean': 'bnMean'}, {'variance': 'bnVariance'}
+ ],
+ 'outputs': 'bnOutput'
+ }],
+ 'expectedOutputs': {
+ 'bnOutput': {
+ 'data': [
+ -11.990972518920898, 4.4829583168029785, -15.440524101257324,
+ -12.847999572753906, 7.442382335662842, -18.051416397094727,
+ -15.247910499572754, -5.550075531005859, -11.927642822265625,
+ 3.369194269180298, 0.30708834528923035, 3.382232427597046,
+ 7.291474342346191, -18.99486541748047, 6.4828104972839355,
+ 9.632428169250488, -8.871702194213867, -20.686368942260742,
+ -6.99733304977417, 7.002535343170166, -18.877885818481445,
+ 4.211489677429199, -16.237018585205078, -7.42683744430542
+ ],
+ 'descriptor': {'dimensions': [6, 1, 1, 2, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'batchNormalization float32 4D NCHW tensor options.axis=1',
+ 'graph': {
+ 'inputs': {
+ 'bnInput': {
+ 'data': [
+ -41.30733108520508, 64.08863830566406, -63.376670837402344,
+ -46.790367126464844, 83.02227020263672, -80.08049011230469,
+ -62.144378662109375, -0.10012771934270859, -40.90216064453125,
+ 56.96306228637695, 37.37249755859375, 57.046478271484375,
+ 82.05680084228516, -86.1164321899414, 76.8831787109375,
+ 97.03362274169922, -21.35103988647461, -96.93824005126953,
+ -9.359310150146484, 80.20824432373047, -85.36802673339844,
+ 62.35185241699219, -68.4724349975586, -12.10716724395752
+ ],
+ 'descriptor': {'dimensions': [2, 3, 2, 2], 'dataType': 'float32'}
+ },
+ 'bnMean': {
+ 'data': [51.629150390625, 99.36075592041016, -96.1473617553711],
+ 'descriptor': {'dimensions': [3], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'bnVariance': {
+ 'data': [30.448015213012695, 86.36219024658203, 73.88455200195312],
+ 'descriptor': {'dimensions': [3], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'batchNormalization',
+ 'arguments': [
+ {'input': 'bnInput'}, {'mean': 'bnMean'}, {'variance': 'bnVariance'},
+ {'options': {'axis': 1}}
+ ],
+ 'outputs': 'bnOutput'
+ }],
+ 'expectedOutputs': {
+ 'bnOutput': {
+ 'data': [
+ -16.842504501342773, 2.2579827308654785, -20.842041015625,
+ -17.836172103881836, -1.7581257820129395, -19.30902862548828,
+ -17.37898826599121, -10.702629089355469, 6.4271392822265625,
+ 17.812623977661133, 15.533489227294922, 17.822328567504883,
+ 5.514280319213867, -24.963077545166016, 4.576685905456543,
+ 8.228469848632812, -12.989363670349121, -21.123029708862305,
+ -11.698976516723633, -2.0609331130981445, 1.2540507316589355,
+ 18.43954849243164, 3.2196571826934814, 9.777103424072266
+ ],
+ 'descriptor': {'dimensions': [2, 3, 2, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'batchNormalization float32 4D NHWC tensor options.axis=3',
+ 'graph': {
+ 'inputs': {
+ 'bnInput': {
+ 'data': [
+ -41.30733108520508, 83.02227020263672, -40.90216064453125,
+ 64.08863830566406, -80.08049011230469, 56.96306228637695,
+ -63.376670837402344, -62.144378662109375, 37.37249755859375,
+ -46.790367126464844, -0.10012771934270859, 57.046478271484375,
+ 82.05680084228516, -21.35103988647461, -85.36802673339844,
+ -86.1164321899414, -96.93824005126953, 62.35185241699219,
+ 76.8831787109375, -9.359310150146484, -68.4724349975586,
+ 97.03362274169922, 80.20824432373047, -12.10716724395752
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ },
+ 'bnMean': {
+ 'data': [51.629150390625, 99.36075592041016, -96.1473617553711],
+ 'descriptor': {'dimensions': [3], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'bnVariance': {
+ 'data': [30.448015213012695, 86.36219024658203, 73.88455200195312],
+ 'descriptor': {'dimensions': [3], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'batchNormalization',
+ 'arguments': [
+ {'input': 'bnInput'}, {'mean': 'bnMean'}, {'variance': 'bnVariance'},
+ {'options': {'axis': 3}}
+ ],
+ 'outputs': 'bnOutput'
+ }],
+ 'expectedOutputs': {
+ 'bnOutput': {
+ 'data': [
+ -16.842504501342773, -1.7581257820129395, 6.4271392822265625,
+ 2.2579827308654785, -19.30902862548828, 17.812623977661133,
+ -20.842041015625, -17.37898826599121, 15.533489227294922,
+ -17.836172103881836, -10.702629089355469, 17.822328567504883,
+ 5.514280319213867, -12.989363670349121, 1.2540507316589355,
+ -24.963077545166016, -21.123029708862305, 18.43954849243164,
+ 4.576685905456543, -11.698976516723633, 3.2196571826934814,
+ 8.228469848632812, -2.0609331130981445, 9.777103424072266
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'batchNormalization float32 4D NCHW tensor options.scale',
+ 'graph': {
+ 'inputs': {
+ 'bnInput': {
+ 'data': [
+ -41.30733108520508, 64.08863830566406, -63.376670837402344,
+ -46.790367126464844, 83.02227020263672, -80.08049011230469,
+ -62.144378662109375, -0.10012771934270859, -40.90216064453125,
+ 56.96306228637695, 37.37249755859375, 57.046478271484375,
+ 82.05680084228516, -86.1164321899414, 76.8831787109375,
+ 97.03362274169922, -21.35103988647461, -96.93824005126953,
+ -9.359310150146484, 80.20824432373047, -85.36802673339844,
+ 62.35185241699219, -68.4724349975586, -12.10716724395752
+ ],
+ 'descriptor': {'dimensions': [2, 3, 2, 2], 'dataType': 'float32'}
+ },
+ 'bnMean': {
+ 'data': [51.629150390625, 99.36075592041016, -96.1473617553711],
+ 'descriptor': {'dimensions': [3], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'bnVariance': {
+ 'data': [30.448015213012695, 86.36219024658203, 73.88455200195312],
+ 'descriptor': {'dimensions': [3], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'bnScale': {
+ 'data': [65.50171661376953, -71.007568359375, -5.569730758666992],
+ 'descriptor': {'dimensions': [3], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'batchNormalization',
+ 'arguments': [
+ {'input': 'bnInput'}, {'mean': 'bnMean'}, {'variance': 'bnVariance'},
+ {'options': {'scale': 'bnScale'}}
+ ],
+ 'outputs': 'bnOutput'
+ }],
+ 'expectedOutputs': {
+ 'bnOutput': {
+ 'data': [
+ -1103.212890625, 147.90174865722656, -1365.189453125,
+ -1168.2999267578125, 124.84024047851562, 1371.087158203125,
+ 1234.0396728515625, 759.9676513671875, -35.79743576049805,
+ -99.2115249633789, -86.51734924316406, -99.26557159423828,
+ 361.19482421875, -1635.1243896484375, 299.78076171875,
+ 538.9788818359375, 922.3430786132812, 1499.89501953125,
+ 830.7158813476562, 146.3418426513672, -6.984724998474121,
+ -102.70331573486328, -17.9326229095459, -54.455833435058594
+ ],
+ 'descriptor': {'dimensions': [2, 3, 2, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'batchNormalization float32 4D NCHW tensor options.bias',
+ 'graph': {
+ 'inputs': {
+ 'bnInput': {
+ 'data': [
+ -41.30733108520508, 64.08863830566406, -63.376670837402344,
+ -46.790367126464844, 83.02227020263672, -80.08049011230469,
+ -62.144378662109375, -0.10012771934270859, -40.90216064453125,
+ 56.96306228637695, 37.37249755859375, 57.046478271484375,
+ 82.05680084228516, -86.1164321899414, 76.8831787109375,
+ 97.03362274169922, -21.35103988647461, -96.93824005126953,
+ -9.359310150146484, 80.20824432373047, -85.36802673339844,
+ 62.35185241699219, -68.4724349975586, -12.10716724395752
+ ],
+ 'descriptor': {'dimensions': [2, 3, 2, 2], 'dataType': 'float32'}
+ },
+ 'bnMean': {
+ 'data': [51.629150390625, 99.36075592041016, -96.1473617553711],
+ 'descriptor': {'dimensions': [3], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'bnVariance': {
+ 'data': [30.448015213012695, 86.36219024658203, 73.88455200195312],
+ 'descriptor': {'dimensions': [3], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'bnBias': {
+ 'data': [64.2044677734375, 75.28591918945312, -84.57243347167969],
+ 'descriptor': {'dimensions': [3], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'batchNormalization',
+ 'arguments': [
+ {'input': 'bnInput'}, {'mean': 'bnMean'}, {'variance': 'bnVariance'},
+ {'options': {'bias': 'bnBias'}}
+ ],
+ 'outputs': 'bnOutput'
+ }],
+ 'expectedOutputs': {
+ 'bnOutput': {
+ 'data': [
+ 47.36196517944336, 66.46244812011719, 43.3624267578125,
+ 46.36829376220703, 73.52779388427734, 55.976890563964844,
+ 57.90693283081055, 64.58329010009766, -78.14529418945312,
+ -66.75981140136719, -69.03894805908203, -66.75010681152344,
+ 69.71875, 39.241390228271484, 68.7811508178711,
+ 72.43293762207031, 62.29655456542969, 54.16288757324219,
+ 63.586944580078125, 73.22498321533203, -83.3183822631836,
+ -66.13288879394531, -81.35277557373047, -74.79533386230469
+ ],
+ 'descriptor': {'dimensions': [2, 3, 2, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'batchNormalization float32 4D NCHW tensor options.epsilon',
+ 'graph': {
+ 'inputs': {
+ 'bnInput': {
+ 'data': [
+ -41.30733108520508, 64.08863830566406, -63.376670837402344,
+ -46.790367126464844, 83.02227020263672, -80.08049011230469,
+ -62.144378662109375, -0.10012771934270859, -40.90216064453125,
+ 56.96306228637695, 37.37249755859375, 57.046478271484375,
+ 82.05680084228516, -86.1164321899414, 76.8831787109375,
+ 97.03362274169922, -21.35103988647461, -96.93824005126953,
+ -9.359310150146484, 80.20824432373047, -85.36802673339844,
+ 62.35185241699219, -68.4724349975586, -12.10716724395752
+ ],
+ 'descriptor': {'dimensions': [2, 3, 2, 2], 'dataType': 'float32'}
+ },
+ 'bnMean': {
+ 'data': [51.629150390625, 99.36075592041016, -96.1473617553711],
+ 'descriptor': {'dimensions': [3], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'bnVariance': {
+ 'data': [30.448015213012695, 86.36219024658203, 73.88455200195312],
+ 'descriptor': {'dimensions': [3], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'batchNormalization',
+ 'arguments': [
+ {'input': 'bnInput'}, {'mean': 'bnMean'}, {'variance': 'bnVariance'},
+ {'options': {'epsilon': 0.000001}}
+ ],
+ 'outputs': 'bnOutput'
+ }],
+ 'expectedOutputs': {
+ 'bnOutput': {
+ 'data': [
+ -16.842506408691406, 2.2579832077026367, -20.842044830322266,
+ -17.8361759185791, -1.758125901222229, -19.309030532836914,
+ -17.37898826599121, -10.702629089355469, 6.427139759063721,
+ 17.812625885009766, 15.533490180969238, 17.822330474853516,
+ 5.514281272888184, -24.96308135986328, 4.576686382293701,
+ 8.228470802307129, -12.989363670349121, -21.123031616210938,
+ -11.698976516723633, -2.0609331130981445, 1.254050850868225,
+ 18.43954849243164, 3.2196574211120605, 9.777103424072266
+ ],
+ 'descriptor': {'dimensions': [2, 3, 2, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'batchNormalization float32 4D NHWC tensor all options',
+ 'graph': {
+ 'inputs': {
+ 'bnInput': {
+ 'data': [
+ -41.30733108520508, 83.02227020263672, -40.90216064453125,
+ 64.08863830566406, -80.08049011230469, 56.96306228637695,
+ -63.376670837402344, -62.144378662109375, 37.37249755859375,
+ -46.790367126464844, -0.10012771934270859, 57.046478271484375,
+ 82.05680084228516, -21.35103988647461, -85.36802673339844,
+ -86.1164321899414, -96.93824005126953, 62.35185241699219,
+ 76.8831787109375, -9.359310150146484, -68.4724349975586,
+ 97.03362274169922, 80.20824432373047, -12.10716724395752
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ },
+ 'bnMean': {
+ 'data': [51.629150390625, 99.36075592041016, -96.1473617553711],
+ 'descriptor': {'dimensions': [3], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'bnVariance': {
+ 'data': [30.448015213012695, 86.36219024658203, 73.88455200195312],
+ 'descriptor': {'dimensions': [3], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'bnScale': {
+ 'data': [65.50171661376953, -71.007568359375, -5.569730758666992],
+ 'descriptor': {'dimensions': [3], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'bnBias': {
+ 'data': [64.2044677734375, 75.28591918945312, -84.57243347167969],
+ 'descriptor': {'dimensions': [3], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'batchNormalization',
+ 'arguments': [
+ {'input': 'bnInput'}, {'mean': 'bnMean'}, {'variance': 'bnVariance'},
+ {
+ 'options': {
+ 'scale': 'bnScale',
+ 'bias': 'bnBias',
+ 'axis': 3,
+ 'epsilon': 0.000001
+ }
+ }
+ ],
+ 'outputs': 'bnOutput'
+ }],
+ 'expectedOutputs': {
+ 'bnOutput': {
+ 'data': [
+ -1039.0085734071204, 200.12613597546277, -120.36987167541395,
+ 212.10626540432202, 1446.3732126569944, -183.78396479879416,
+ -1300.9852072279227, 1309.3257094058545, -171.08979404258523,
+ -1104.0956031373803, 835.2536189871761, -183.83801576309426,
+ 425.3993215144054, 997.6290832897452, -91.55716013805052,
+ -1570.920072497096, 1575.1810627320297, -187.2757593197739,
+ 363.98524710447384, 906.0018322105, -102.5050592863526,
+ 603.1834043179756, 221.6277675074517, -139.02827100419768
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ batchNormTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getBatchNormPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/buffer.https.any.js b/tests/wpt/tests/webnn/conformance_tests/buffer.https.any.js
index bc838ee7680..2242ccdc7a0 100644
--- a/tests/wpt/tests/webnn/conformance_tests/buffer.https.any.js
+++ b/tests/wpt/tests/webnn/conformance_tests/buffer.https.any.js
@@ -9,7 +9,1038 @@
'use strict';
-// https://webmachinelearning.github.io/webnn/#api-mlbuffer
+// https://www.w3.org/TR/webnn/#api-mlbuffer
+
+const bytesPerDataType = (dataType) => {
+ if (dataType === 'int8' || dataType === 'uint8') {
+ return 1;
+ } else if (dataType === 'float16') {
+ return 2;
+ } else if (
+ dataType === 'float32' || dataType === 'int32' || dataType === 'uint32') {
+ return 4;
+ } else if (dataType === 'int64' || dataType === 'uint64') {
+ return 8;
+ } else {
+ throw new AssertionError(`Data type '${dataType}' is not supported`);
+ }
+};
+
+const sizeOfDescriptor = (descriptor) => {
+ return descriptor.dimensions.reduce(
+ (accumulator, currentValue) => accumulator * currentValue,
+ bytesPerDataType(descriptor.dataType));
+};
+
+const getDescriptorFromBuffer = (buffer) => {
+ return {dataType: buffer.dataType, dimensions: buffer.shape};
+};
+
+
+/**
+ * WebNN destroy buffer twice test.
+ * @param {String} testName - The name of the test operation.
+ */
+const testDestroyWebNNBuffer = (testName) => {
+ let mlContext;
+ promise_setup(async () => {
+ try {
+ mlContext = await navigator.ml.createContext(contextOptions);
+ } catch (e) {
+ throw new AssertionError(
+ `Unable to create context for ${variant} variant. ${e}`);
+ }
+
+ try {
+ const mlBuffer =
+ await mlContext.createBuffer({dataType: 'int32', dimensions: [2, 3]});
+ } catch (e) {
+ throw new AssertionError(
+ `Unable to create buffer for ${variant} variant. ${e}`);
+ }
+ });
+ promise_test(async () => {
+ let mlBuffer =
+ await mlContext.createBuffer({dataType: 'int32', dimensions: [2, 3]});
+ mlBuffer.destroy();
+ mlBuffer.destroy();
+ }, `${testName}`);
+};
+
+/**
+ * WebNN create buffer test.
+ * @param {String} testName - The name of the test operation.
+ * @param {MLBufferDescriptor} bufferDescriptor - The intended buffer specs.
+ */
+const testCreateWebNNBuffer = (testName, bufferDescriptor) => {
+ let mlContext;
+
+ promise_setup(async () => {
+ try {
+ mlContext = await navigator.ml.createContext(contextOptions);
+ } catch (e) {
+ throw new AssertionError(
+ `Unable to create context for ${variant} variant. ${e}`);
+ }
+ });
+ promise_test(async t => {
+ if (!mlContext.opSupportLimits().input.dataTypes.includes(
+ bufferDescriptor.dataType)) {
+ await promise_rejects_js(
+ t, TypeError, mlContext.createBuffer(bufferDescriptor));
+ return;
+ }
+
+ const mlBuffer = await mlContext.createBuffer(bufferDescriptor);
+ assert_equals(
+ mlBuffer.dataType, bufferDescriptor.dataType,
+ 'buffer data types do not match');
+ assert_array_equals(
+ mlBuffer.shape, bufferDescriptor.dimensions,
+ 'buffer shapes do not match');
+ }, `${testName} / ${bufferDescriptor.dataType}`);
+};
+
+/**
+ * Same as above, but expect creating the buffer to fail.
+ * @param {String} testName - The name of the test operation.
+ * @param {MLBufferDescriptor} bufferDescriptor - The intended buffer specs.
+ */
+const testCreateWebNNBufferFails = (testName, bufferDescriptor) => {
+ let mlContext;
+
+ promise_setup(async () => {
+ try {
+ mlContext = await navigator.ml.createContext(contextOptions);
+ } catch (e) {
+ throw new AssertionError(
+ `Unable to create context for ${variant} variant. ${e}`);
+ }
+ });
+ promise_test(async t => {
+ await promise_rejects_js(
+ t, TypeError, mlContext.createBuffer(bufferDescriptor));
+ }, `${testName} / ${bufferDescriptor.dataType}`);
+};
+
+/**
+ * Asserts the buffer data in MLBuffer matches expected.
+ * @param {MLContext} mlContext - The context used to create the buffer.
+ * @param {MLBuffer} mlBuffer - The buffer to read and compare data.
+ * @param {Array} expected - Array of the expected data in the buffer.
+ */
+const assert_buffer_data_equals = async (mlContext, mlBuffer, expected) => {
+ const actual = await mlContext.readBuffer(mlBuffer);
+ assert_array_equals(
+ new expected.constructor(actual), expected,
+ 'Read buffer data equals expected data.');
+};
+
+/**
+ * WebNN write buffer operation test.
+ * @param {String} testName - The name of the test operation.
+ */
+const testWriteWebNNBuffer = (testName) => {
+ let mlContext;
+ promise_setup(async () => {
+ try {
+ mlContext = await navigator.ml.createContext(contextOptions);
+ } catch (e) {
+ throw new AssertionError(
+ `Unable to create context for ${variant} variant. ${e}`);
+ }
+
+ try {
+ const mlBuffer =
+ await mlContext.createBuffer({dataType: 'int32', dimensions: [2, 3]});
+ } catch (e) {
+ throw new AssertionError(
+ `Unable to create buffer for ${variant} variant. ${e}`);
+ }
+ });
+
+ promise_test(async () => {
+ const bufferDescriptor = {dataType: 'int32', dimensions: [1]};
+ let mlBuffer = await mlContext.createBuffer(bufferDescriptor);
+
+ const bufferByteLength = sizeOfDescriptor(bufferDescriptor);
+ let arrayBuffer = new ArrayBuffer(bufferByteLength);
+
+ // Writing with a size that goes past that source buffer length.
+ assert_throws_js(
+ TypeError,
+ () => mlContext.writeBuffer(
+ mlBuffer, new Uint8Array(arrayBuffer), /*srcOffset=*/ 0,
+ /*srcSize=*/ bufferByteLength + 1));
+ assert_throws_js(
+ TypeError,
+ () => mlContext.writeBuffer(
+ mlBuffer, new Uint8Array(arrayBuffer), /*srcOffset=*/ 3,
+ /*srcSize=*/ bufferByteLength));
+
+ // Writing with a source offset that is out of range of the source size.
+ assert_throws_js(
+ TypeError,
+ () => mlContext.writeBuffer(
+ mlBuffer, new Uint8Array(arrayBuffer),
+ /*srcOffset=*/ bufferByteLength + 1));
+
+ // Writing with a source offset that is out of range of implicit copy size.
+ assert_throws_js(
+ TypeError,
+ () => mlContext.writeBuffer(
+ mlBuffer, new Uint8Array(arrayBuffer),
+ /*srcOffset=*/ bufferByteLength + 1, /*srcSize=*/ undefined));
+
+ assert_throws_js(
+ TypeError,
+ () => mlContext.writeBuffer(
+ mlBuffer, new Uint8Array(arrayBuffer), /*srcOffset=*/ undefined,
+ /*srcSize=*/ bufferByteLength + 1));
+
+ assert_throws_js(
+ TypeError,
+ () => mlContext.writeBuffer(
+ mlBuffer, Uint8Array.from([0xEE, 0xEE, 0xEE, 0xEE, 0xEE])));
+ }, `${testName} / error`);
+
+ promise_test(async () => {
+ const bufferDescriptor = {dataType: 'int32', dimensions: [2, 2]};
+ let mlBuffer = await mlContext.createBuffer(bufferDescriptor);
+
+ // Writing data to a destroyed MLBuffer should throw.
+ mlBuffer.destroy();
+
+ assert_throws_dom(
+ 'InvalidStateError',
+ () => mlContext.writeBuffer(
+ mlBuffer, new Uint8Array(sizeOfDescriptor(bufferDescriptor))));
+ }, `${testName} / destroy`);
+
+ promise_test(async () => {
+ const bufferDescriptor = {dataType: 'int32', dimensions: [2, 3]};
+ let mlBuffer = await mlContext.createBuffer(bufferDescriptor);
+
+ let anotherMLContext = await navigator.ml.createContext(contextOptions);
+ let anotherMLBuffer = await anotherMLContext.createBuffer(bufferDescriptor);
+
+ let inputData =
+ new Uint8Array(sizeOfDescriptor(bufferDescriptor)).fill(0xAA);
+ assert_throws_js(
+ TypeError, () => mlContext.writeBuffer(anotherMLBuffer, inputData));
+ assert_throws_js(
+ TypeError, () => anotherMLContext.writeBuffer(mlBuffer, inputData));
+ }, `${testName} / context_mismatch`);
+};
+
+/**
+ * WebNN read buffer operation test.
+ * @param {String} testName - The name of the test operation.
+ */
+const testReadWebNNBuffer = (testName) => {
+ let mlContext;
+ promise_setup(async () => {
+ try {
+ mlContext = await navigator.ml.createContext(contextOptions);
+ } catch (e) {
+ throw new AssertionError(
+ `Unable to create context for ${variant} variant. ${e}`);
+ }
+
+ try {
+ const mlBuffer =
+ await mlContext.createBuffer({dataType: 'int32', dimensions: [2, 3]});
+ } catch (e) {
+ throw new AssertionError(
+ `Unable to create buffer for ${variant} variant. ${e}`);
+ }
+ });
+
+ promise_test(async t => {
+ let mlBuffer =
+ await mlContext.createBuffer({dataType: 'int32', dimensions: [2, 2]});
+
+ // Reading a destroyed MLBuffer should reject.
+ mlBuffer.destroy();
+
+ await promise_rejects_dom(
+ t, 'InvalidStateError', mlContext.readBuffer(mlBuffer));
+ }, `${testName} / read_after_destroy`);
+
+ promise_test(async t => {
+ let mlBuffer =
+ await mlContext.createBuffer({dataType: 'int32', dimensions: [2, 3]});
+
+ let promise = mlContext.readBuffer(mlBuffer);
+ let anotherPromise = mlContext.readBuffer(mlBuffer);
+
+ mlBuffer.destroy();
+
+ await promise_rejects_dom(t, 'InvalidStateError', promise);
+ await promise_rejects_dom(t, 'InvalidStateError', anotherPromise);
+ }, `${testName} / read_before_destroy`);
+
+ promise_test(async () => {
+ let mlBuffer =
+ await mlContext.createBuffer({dataType: 'int32', dimensions: [1]});
+
+ // Initialize the buffer.
+ mlContext.writeBuffer(mlBuffer, Uint8Array.from([0xAA, 0xAA, 0xAA, 0xAA]));
+
+ mlContext.writeBuffer(mlBuffer, Uint32Array.from([0xBBBBBBBB]));
+ await assert_buffer_data_equals(
+ mlContext, mlBuffer, Uint32Array.from([0xBBBBBBBB]));
+ ;
+ }, `${testName} / full_size`);
+
+ promise_test(async () => {
+ let mlBuffer =
+ await mlContext.createBuffer({dataType: 'int32', dimensions: [1]});
+
+ // Initialize the buffer.
+ mlContext.writeBuffer(mlBuffer, Uint8Array.from([0xAA, 0xAA, 0xAA, 0xAA]));
+
+ // Writing to the remainder of the buffer from source offset.
+ mlContext.writeBuffer(
+ mlBuffer, Uint8Array.from([0xCC, 0xCC, 0xBB, 0xBB]),
+ /*srcOffset=*/ 2);
+ await assert_buffer_data_equals(
+ mlContext, mlBuffer, Uint8Array.from([0xBB, 0xBB, 0xAA, 0xAA]));
+ }, `${testName} / src_offset_only`);
+
+ promise_test(async () => {
+ let mlBuffer =
+ await mlContext.createBuffer({dataType: 'int32', dimensions: [1]});
+
+ // Initialize the buffer.
+ mlContext.writeBuffer(mlBuffer, Uint8Array.from([0xAA, 0xAA, 0xAA, 0xAA]));
+
+ // Writing with both a source offset and size.
+ mlContext.writeBuffer(
+ mlBuffer, Uint8Array.from([0xDD, 0xDD, 0xCC, 0xDD]),
+ /*srcOffset=*/ 2, /*srcSize=*/ 1);
+ await assert_buffer_data_equals(
+ mlContext, mlBuffer, Uint8Array.from([0xCC, 0xAA, 0xAA, 0xAA]));
+ }, `${testName} / src_offset_and_size`);
+
+ promise_test(async () => {
+ let mlBuffer =
+ await mlContext.createBuffer({dataType: 'int32', dimensions: [1]});
+
+ // Initialize the buffer.
+ mlContext.writeBuffer(mlBuffer, Uint8Array.from([0xAA, 0xAA, 0xAA, 0xAA]));
+
+ // Using an offset allows a larger source buffer to fit.
+ mlContext.writeBuffer(
+ mlBuffer, Uint8Array.from([0xEE, 0xEE, 0xEE, 0xEE, 0xEE]),
+ /*srcOffset=*/ 1);
+ await assert_buffer_data_equals(
+ mlContext, mlBuffer, Uint8Array.from([0xEE, 0xEE, 0xEE, 0xEE]));
+ }, `${testName} / larger_src_data`);
+
+ promise_test(async () => {
+ let mlBuffer =
+ await mlContext.createBuffer({dataType: 'int32', dimensions: [1]});
+
+ const inputData = [0xAA, 0xAA, 0xAA, 0xAA];
+
+ // Writing with a source offset of undefined should be treated as 0.
+ mlContext.writeBuffer(
+ mlBuffer, Uint8Array.from(inputData), /*srcOffset=*/ undefined,
+ /*srcSize=*/ inputData.length);
+ await assert_buffer_data_equals(
+ mlContext, mlBuffer, Uint8Array.from(inputData));
+ }, `${testName} / no_src_offset`);
+
+ promise_test(async t => {
+ const bufferDescriptor = {dataType: 'int32', dimensions: [2, 3]};
+ let mlBuffer = await mlContext.createBuffer(bufferDescriptor);
+
+ let anotherMLContext = await navigator.ml.createContext(contextOptions);
+ let anotherMLBuffer = await anotherMLContext.createBuffer(bufferDescriptor);
+
+ await promise_rejects_js(
+ t, TypeError, mlContext.readBuffer(anotherMLBuffer));
+ await promise_rejects_js(
+ t, TypeError, anotherMLContext.readBuffer(mlBuffer));
+ }, `${testName} / context_mismatch`);
+};
+
+/**
+ * WebNN dispatch buffer operation test.
+ * @param {String} testName - The name of the test operation.
+ */
+const testDispatchWebNNBuffer = (testName) => {
+ let mlContext;
+ let mlGraph;
+ const shape = [3, 5];
+ let inputs = {};
+ let outputs = {};
+ promise_setup(async () => {
+ try {
+ mlContext = await navigator.ml.createContext(contextOptions);
+ } catch (e) {
+ throw new AssertionError(
+ `Unable to create context for ${variant} variant. ${e}`);
+ }
+ // Construct a simple graph: A = B + C, with two outputs.
+ const builder = new MLGraphBuilder(mlContext);
+ const bufferDescriptor = {dataType: 'float32', dimensions: shape};
+ const lhsOperand = builder.input('lhs', bufferDescriptor);
+ const rhsOperand = builder.input('rhs', bufferDescriptor);
+ const output1Operand = builder.add(lhsOperand, rhsOperand);
+ const output2Operand = builder.add(lhsOperand, rhsOperand);
+ mlGraph = await builder.build(
+ {'output1': output1Operand, 'output2': output2Operand});
+
+ try {
+ const mlBuffer =
+ await mlContext.createBuffer({dataType: 'int32', dimensions: [2, 3]});
+ } catch (e) {
+ throw new AssertionError(
+ `Unable to create buffer for ${variant} variant. ${e}`);
+ }
+
+ inputs = {
+ 'lhs': await mlContext.createBuffer(bufferDescriptor),
+ 'rhs': await mlContext.createBuffer(bufferDescriptor),
+ };
+ outputs = {
+ 'output1': await mlContext.createBuffer(bufferDescriptor),
+ 'output2': await mlContext.createBuffer(bufferDescriptor),
+ };
+ });
+
+ promise_test(async () => {
+ let anotherMLContext = await navigator.ml.createContext(contextOptions);
+
+ // Control case, same context.
+ mlContext.dispatch(mlGraph, inputs, outputs);
+
+ // Test the wrong context being used for inputs.
+ const lhsBuffer = await anotherMLContext.createBuffer(
+ getDescriptorFromBuffer(inputs['lhs']));
+ assert_throws_js(
+ TypeError,
+ () => mlContext.dispatch(
+ mlGraph, {
+ 'lhs': lhsBuffer,
+ 'rhs': inputs['rhs'],
+ },
+ outputs));
+
+ // Test the wrong context being used for outputs.
+ const outputBuffer1 = await anotherMLContext.createBuffer(
+ getDescriptorFromBuffer(outputs['output1']));
+ assert_throws_js(TypeError, () => mlContext.dispatch(mlGraph, inputs, {
+ 'output1': outputBuffer1,
+ 'output2': outputs['output2'],
+ }));
+ }, `${testName} / context_mismatch`);
+
+ promise_test(async () => {
+ // Control case, valid buffers.
+ mlContext.dispatch(mlGraph, inputs, outputs);
+
+ // Input is a different shape.
+ const lhsBuffer = await mlContext.createBuffer({
+ dataType: inputs['lhs'].dataType,
+ // Input rank is too high.
+ dimensions: inputs['lhs'].shape.concat([2])
+ });
+
+ assert_throws_js(
+ TypeError,
+ () => mlContext.dispatch(
+ mlGraph, {
+ 'lhs': lhsBuffer,
+ 'rhs': inputs['rhs'],
+ },
+ outputs));
+
+ const rhsBuffer = await mlContext.createBuffer({
+ dataType: inputs['rhs'].dataType,
+ // Input rank is too low.
+ dimensions: inputs['rhs'].shape.slice(1)
+ });
+
+ assert_throws_js(
+ TypeError,
+ () => mlContext.dispatch(
+ mlGraph, {
+ 'lhs': inputs['lhs'],
+ 'rhs': rhsBuffer,
+ },
+ outputs));
+
+ // Output is a different shape. Dimension value is too large.
+ let output1WrongShape = [...outputs['output1'].shape];
+ output1WrongShape[0] += 2;
+ const outputBuffer1 = await mlContext.createBuffer(
+ {dataType: outputs['output1'].dataType, dimensions: output1WrongShape});
+
+ assert_throws_js(TypeError, () => mlContext.dispatch(mlGraph, inputs, {
+ 'output1': outputBuffer1,
+ 'output2': outputs['output2'],
+ }));
+
+ // Output is a different shape. Dimension value is too small.
+ let output2WrongShape = [...outputs['output2'].shape];
+ output2WrongShape[1] -= 1;
+ const outputBuffer2 = await mlContext.createBuffer(
+ {dataType: outputs['output2'].dataType, dimensions: output2WrongShape});
+
+ assert_throws_js(TypeError, () => mlContext.dispatch(mlGraph, inputs, {
+ 'output1': outputs['output1'],
+ 'output2': outputBuffer2,
+ }));
+ }, `${testName} / invalid shape`);
+
+ promise_test(async () => {
+ // Control case, valid buffers.
+ mlContext.dispatch(mlGraph, inputs, outputs);
+
+ // Inputs are a different data type.
+ const inputWrongDataType = 'int32';
+ assert_not_equals(inputs['lhs'].dataType, inputWrongDataType);
+ assert_not_equals(inputs['rhs'].dataType, inputWrongDataType);
+ assert_throws_js(
+ TypeError,
+ () => mlContext.dispatch(
+ mlGraph, {
+ 'lhs': mlContext.createBuffer({
+ dataType: inputWrongDataType,
+ dimensions: inputs['lhs'].shape
+ }),
+ 'rhs': inputs['rhs'],
+ },
+ outputs));
+
+ assert_throws_js(
+ TypeError,
+ () => mlContext.dispatch(
+ mlGraph, {
+ 'lhs': inputs['lhs'],
+ 'rhs': mlContext.createBuffer({
+ dataType: inputWrongDataType,
+ dimensions: inputs['rhs'].shape
+ }),
+ },
+ outputs));
+
+ // Outputs are a different data type.
+ const outputWrongDataType = 'int32';
+ assert_not_equals(outputs['output1'].dataType, outputWrongDataType);
+ assert_not_equals(outputs['output2'].dataType, outputWrongDataType);
+ const outputBuffer1 = await mlContext.createBuffer(
+ {dataType: outputWrongDataType, dimensions: outputs['output1'].shape});
+
+ assert_throws_js(TypeError, () => mlContext.dispatch(mlGraph, inputs, {
+ 'output1': outputBuffer1,
+ 'output2': outputs['output2'],
+ }));
+
+ const outputBuffer2 = await mlContext.createBuffer(
+ {dataType: outputWrongDataType, dimensions: outputs['output2'].shape});
+
+ assert_throws_js(TypeError, () => mlContext.dispatch(mlGraph, inputs, {
+ 'output1': outputs['output1'],
+ 'output2': outputBuffer2,
+ }));
+ }, `${testName} / invalid data type`);
+
+ promise_test(async () => {
+ // Control case, valid names.
+ mlContext.dispatch(mlGraph, inputs, outputs);
+
+ // No names is invalid.
+ assert_throws_js(TypeError, () => mlContext.dispatch(mlGraph, {}, {}));
+
+ // Input name is invalid.
+ assert_throws_js(
+ TypeError,
+ () => mlContext.dispatch(
+ mlGraph, {
+ 'aDifferentInputName': inputs['lhs'],
+ 'rhs': inputs['rhs'],
+ },
+ outputs));
+
+ assert_throws_js(
+ TypeError,
+ () => mlContext.dispatch(
+ mlGraph, {
+ 'lhs': inputs['lhs'],
+ 'aDifferentInputName': inputs['rhs'],
+ },
+ outputs));
+
+ // Output name is invalid.
+ assert_throws_js(TypeError, () => mlContext.dispatch(mlGraph, inputs, {
+ 'aDifferentOutputName': outputs['output1'],
+ 'output2': outputs['output2'],
+ }));
+
+ assert_throws_js(TypeError, () => mlContext.dispatch(mlGraph, inputs, {
+ 'output1': outputs['output1'],
+ 'aDifferentOutputName': outputs['output2'],
+ }));
+
+ // Too few named inputs is invalid.
+ assert_throws_js(
+ TypeError,
+ () => mlContext.dispatch(
+ mlGraph, {
+ 'lhs': inputs['lhs'],
+ },
+ outputs));
+
+ // Too many named inputs is invalid.
+ const anotherRhsBuffer =
+ await mlContext.createBuffer(getDescriptorFromBuffer(inputs['rhs']));
+ assert_throws_js(
+ TypeError,
+ () => mlContext.dispatch(
+ mlGraph, {
+ 'lhs': inputs['lhs'],
+ 'rhs': inputs['rhs'],
+ 'aDifferentInputName': anotherRhsBuffer,
+ },
+ outputs));
+
+ // Too few named outputs is invalid.
+ assert_throws_js(TypeError, () => mlContext.dispatch(mlGraph, inputs, {
+ 'output1': outputs['output1']
+ }));
+
+ // Too many named outputs is invalid.
+ const anotherOutputBuffer2 = await mlContext.createBuffer(
+ getDescriptorFromBuffer(outputs['output2']));
+ assert_throws_js(TypeError, () => mlContext.dispatch(mlGraph, inputs, {
+ 'output1': outputs['output1'],
+ 'output2': outputs['output2'],
+ 'aDifferentOutputName': anotherOutputBuffer2,
+ }));
+ }, `${testName} / invalid_name`);
+
+ promise_test(async () => {
+ // Control case, valid buffers.
+ mlContext.dispatch(mlGraph, inputs, outputs);
+
+ // Same buffer used as outputs more than once is invalid.
+ assert_throws_js(TypeError, () => mlContext.dispatch(mlGraph, inputs, {
+ 'output1': outputs['output1'],
+ 'output2': outputs['output1'],
+ }));
+
+ // Same buffer used as input and output is invalid.
+ assert_throws_js(TypeError, () => mlContext.dispatch(mlGraph, inputs, {
+ 'output1': inputs['lhs'],
+ 'output2': outputs['output2'],
+ }));
+
+ assert_throws_js(
+ TypeError,
+ () => mlContext.dispatch(
+ mlGraph, {
+ 'lhs': outputs['output1'],
+ 'rhs': inputs['rhs'],
+ },
+ outputs));
+
+ // Buffer that does not exist is invalid.
+ assert_throws_js(
+ TypeError,
+ () => mlContext.dispatch(
+ mlGraph, {
+ 'lhs': undefined,
+ 'rhs': inputs['rhs'],
+ },
+ outputs));
+
+ assert_throws_js(TypeError, () => mlContext.dispatch(mlGraph, inputs, {
+ 'output1': undefined,
+ 'output2': outputs['output2'],
+ }));
+ }, `${testName} / invalid_buffer`);
+
+ promise_test(async () => {
+ const dispatchInputs = {
+ 'lhs':
+ await mlContext.createBuffer(getDescriptorFromBuffer(inputs['lhs'])),
+ 'rhs':
+ await mlContext.createBuffer(getDescriptorFromBuffer(inputs['rhs'])),
+ };
+
+ const dispatch1Outputs = {
+ 'output1': await mlContext.createBuffer(
+ getDescriptorFromBuffer(outputs['output1'])),
+ 'output2': await mlContext.createBuffer(
+ getDescriptorFromBuffer(outputs['output2'])),
+ };
+
+ const dispatch2Outputs = {
+ 'output1': await mlContext.createBuffer(
+ getDescriptorFromBuffer(outputs['output1'])),
+ 'output2': await mlContext.createBuffer(
+ getDescriptorFromBuffer(outputs['output2'])),
+ };
+
+ // Initialize inputs
+ const inputData =
+ new TypedArrayDict['float32'](sizeOfShape(shape)).fill(1.0);
+ mlContext.writeBuffer(dispatchInputs['lhs'], inputData);
+ mlContext.writeBuffer(dispatchInputs['rhs'], inputData);
+
+ // Output_1 = LHS + RHS = 1 + 1 = 2
+ mlContext.dispatch(mlGraph, dispatchInputs, dispatch1Outputs);
+
+ // Output_2 = LHS + RHS = 1 + 1 = 2
+ mlContext.dispatch(mlGraph, dispatchInputs, dispatch2Outputs);
+
+ await assert_buffer_data_equals(
+ mlContext, dispatch1Outputs['output1'],
+ new Float32Array(sizeOfShape(shape)).fill(2.0));
+
+ await assert_buffer_data_equals(
+ mlContext, dispatch1Outputs['output2'],
+ new Float32Array(sizeOfShape(shape)).fill(2.0));
+
+ await assert_buffer_data_equals(
+ mlContext, dispatch2Outputs['output1'],
+ new Float32Array(sizeOfShape(shape)).fill(2.0));
+
+ await assert_buffer_data_equals(
+ mlContext, dispatch2Outputs['output2'],
+ new Float32Array(sizeOfShape(shape)).fill(2.0));
+ }, `${testName} / same_inputs`);
+
+ promise_test(async () => {
+ const dispatch1Inputs = {
+ 'lhs':
+ await mlContext.createBuffer(getDescriptorFromBuffer(inputs['lhs'])),
+ 'rhs':
+ await mlContext.createBuffer(getDescriptorFromBuffer(inputs['rhs'])),
+ };
+
+ const dispatch2Inputs = {
+ 'lhs':
+ await mlContext.createBuffer(getDescriptorFromBuffer(inputs['lhs'])),
+ 'rhs':
+ await mlContext.createBuffer(getDescriptorFromBuffer(inputs['rhs'])),
+ };
+
+ const dispatchOutputs = {
+ 'output1': await mlContext.createBuffer(
+ getDescriptorFromBuffer(outputs['output1'])),
+ 'output2': await mlContext.createBuffer(
+ getDescriptorFromBuffer(outputs['output2'])),
+ };
+
+ // Initialize inputs
+ const input1Data =
+ new TypedArrayDict['float32'](sizeOfShape(shape)).fill(1.0);
+ mlContext.writeBuffer(dispatch1Inputs['lhs'], input1Data);
+ mlContext.writeBuffer(dispatch1Inputs['rhs'], input1Data);
+
+ const input2Data =
+ new TypedArrayDict['float32'](sizeOfShape(shape)).fill(2.0);
+ mlContext.writeBuffer(dispatch2Inputs['lhs'], input2Data);
+ mlContext.writeBuffer(dispatch2Inputs['rhs'], input2Data);
+
+ // Output = LHS_1 + RHS_1 = 1 + 1 = 2
+ mlContext.dispatch(mlGraph, dispatch1Inputs, dispatchOutputs);
+
+ // Output = LHS_2 + RHS_2 = 2 + 2 = 4
+ mlContext.dispatch(mlGraph, dispatch2Inputs, dispatchOutputs);
+
+ await assert_buffer_data_equals(
+ mlContext, dispatchOutputs['output1'],
+ new Float32Array(sizeOfShape(shape)).fill(4.0));
+
+ await assert_buffer_data_equals(
+ mlContext, dispatchOutputs['output2'],
+ new Float32Array(sizeOfShape(shape)).fill(4.0));
+ }, `${testName} / same_outputs`);
+
+ promise_test(async () => {
+ const dispatchInputs = {
+ 'lhs':
+ await mlContext.createBuffer(getDescriptorFromBuffer(inputs['lhs'])),
+ 'rhs':
+ await mlContext.createBuffer(getDescriptorFromBuffer(inputs['rhs'])),
+ };
+
+ const dispatchOutputs = {
+ 'output1': await mlContext.createBuffer(
+ getDescriptorFromBuffer(outputs['output1'])),
+ 'output2': await mlContext.createBuffer(
+ getDescriptorFromBuffer(outputs['output2'])),
+ };
+
+ // Initialize inputs
+ const inputData =
+ new TypedArrayDict['float32'](sizeOfShape(shape)).fill(1.0);
+ mlContext.writeBuffer(dispatchInputs['lhs'], inputData);
+ mlContext.writeBuffer(dispatchInputs['rhs'], inputData);
+
+ // Output = LHS + RHS = 1 + 1 = 2
+ mlContext.dispatch(mlGraph, dispatchInputs, dispatchOutputs);
+ mlContext.dispatch(mlGraph, dispatchInputs, dispatchOutputs);
+
+ await assert_buffer_data_equals(
+ mlContext, dispatchOutputs['output1'],
+ new Float32Array(sizeOfShape(shape)).fill(2.0));
+
+ await assert_buffer_data_equals(
+ mlContext, dispatchOutputs['output2'],
+ new Float32Array(sizeOfShape(shape)).fill(2.0));
+ }, `${testName} / same_inputs_and_outputs`);
+
+ promise_test(async () => {
+ const dispatchInputs = {
+ 'lhs':
+ await mlContext.createBuffer(getDescriptorFromBuffer(inputs['lhs'])),
+ 'rhs':
+ await mlContext.createBuffer(getDescriptorFromBuffer(inputs['rhs'])),
+ };
+
+ const dispatch1Outputs = {
+ 'output1': await mlContext.createBuffer(
+ getDescriptorFromBuffer(outputs['output1'])),
+ 'output2': await mlContext.createBuffer(
+ getDescriptorFromBuffer(outputs['output2'])),
+ };
+
+ const dispatch2Outputs = {
+ 'output1': await mlContext.createBuffer(
+ getDescriptorFromBuffer(outputs['output1'])),
+ 'output2': await mlContext.createBuffer(
+ getDescriptorFromBuffer(outputs['output2'])),
+ };
+
+ // Initialize inputs
+ const inputData =
+ new TypedArrayDict['float32'](sizeOfShape(shape)).fill(1.0);
+ mlContext.writeBuffer(dispatchInputs['lhs'], inputData);
+ mlContext.writeBuffer(dispatchInputs['rhs'], inputData);
+
+ // Output_1 = LHS + RHS = 1 + 1 = 2
+ mlContext.dispatch(mlGraph, dispatchInputs, dispatch1Outputs);
+
+ // Output_2 = Output_1_LHS + Output_1_RHS = 2 + 2 = 4
+ mlContext.dispatch(
+ mlGraph, {
+ 'lhs': dispatch1Outputs['output1'],
+ 'rhs': dispatch1Outputs['output2'],
+ },
+ dispatch2Outputs);
+
+ // Output_1 = Output_2_LHS + Output_2_RHS = 4 + 4 = 8
+ mlContext.dispatch(
+ mlGraph, {
+ 'lhs': dispatch2Outputs['output1'],
+ 'rhs': dispatch2Outputs['output2'],
+ },
+ dispatch1Outputs);
+
+ await assert_buffer_data_equals(
+ mlContext, dispatch1Outputs['output1'],
+ new Float32Array(sizeOfShape(shape)).fill(8));
+
+ await assert_buffer_data_equals(
+ mlContext, dispatch1Outputs['output2'],
+ new Float32Array(sizeOfShape(shape)).fill(8));
+ }, `${testName} / outputs_as_inputs`);
+
+ promise_test(async () => {
+ // Construct a simple graph: OUTPUT = LHS - RHS.
+ const builder = new MLGraphBuilder(mlContext);
+ const operandType = {dataType: 'float32', dimensions: shape};
+ const lhsOperand = builder.input('lhs', operandType);
+ const rhsOperand = builder.input('rhs', operandType);
+ const graph =
+ await builder.build({'output': builder.sub(lhsOperand, rhsOperand)});
+
+ const lhsBuffer =
+ await mlContext.createBuffer(getDescriptorFromBuffer(inputs['lhs']));
+ const rhsBuffer =
+ await mlContext.createBuffer(getDescriptorFromBuffer(inputs['rhs']));
+
+ const dispatchOutputs = {
+ 'output': await mlContext.createBuffer(
+ getDescriptorFromBuffer(outputs['output1']))
+ };
+
+ // Initialize inputs
+ mlContext.writeBuffer(
+ lhsBuffer, new TypedArrayDict['float32'](sizeOfShape(shape)).fill(5.0));
+ mlContext.writeBuffer(
+ rhsBuffer, new TypedArrayDict['float32'](sizeOfShape(shape)).fill(3.0));
+
+ // Output = LHS - RHS = 5 - 3 = 2
+ mlContext.dispatch(
+ graph, {
+ 'lhs': lhsBuffer,
+ 'rhs': rhsBuffer,
+ },
+ dispatchOutputs);
+
+ await assert_buffer_data_equals(
+ mlContext, dispatchOutputs['output'],
+ new Float32Array(sizeOfShape(shape)).fill(2));
+
+ // Output = RHS - LHS = 3 - 5 = -2
+ mlContext.dispatch(
+ graph, {
+ 'lhs': rhsBuffer,
+ 'rhs': lhsBuffer,
+ },
+ dispatchOutputs);
+
+ await assert_buffer_data_equals(
+ mlContext, dispatchOutputs['output'],
+ new Float32Array(sizeOfShape(shape)).fill(-2));
+ }, `${testName} / same name diff input buffers`);
+
+ promise_test(async () => {
+ const dispatchInputs = {
+ 'lhs':
+ await mlContext.createBuffer(getDescriptorFromBuffer(inputs['lhs'])),
+ 'rhs':
+ await mlContext.createBuffer(getDescriptorFromBuffer(inputs['rhs'])),
+ };
+
+ const outputBuffer1 = await mlContext.createBuffer(
+ getDescriptorFromBuffer(outputs['output1']));
+ const outputBuffer2 = await mlContext.createBuffer(
+ getDescriptorFromBuffer(outputs['output2']));
+
+ // Initialize inputs
+ const inputData1 =
+ new TypedArrayDict['float32'](sizeOfShape(shape)).fill(1.0);
+ mlContext.writeBuffer(dispatchInputs['lhs'], inputData1);
+ mlContext.writeBuffer(dispatchInputs['rhs'], inputData1);
+
+ // Output = LHS + RHS = 1 + 1 = 2
+ mlContext.dispatch(mlGraph, dispatchInputs, {
+ 'output1': outputBuffer1,
+ 'output2': outputBuffer2,
+ });
+
+ // Output = LHS + RHS = 2 + 2 = 4
+ const inputData2 =
+ new TypedArrayDict['float32'](sizeOfShape(shape)).fill(2.0);
+ mlContext.writeBuffer(dispatchInputs['lhs'], inputData2);
+ mlContext.writeBuffer(dispatchInputs['rhs'], inputData2);
+
+ mlContext.dispatch(mlGraph, dispatchInputs, {
+ 'output1': outputBuffer1,
+ 'output2': await mlContext.createBuffer(
+ getDescriptorFromBuffer(outputs['output2'])),
+ });
+
+ // Ensure the last dispatch() did not modify the original second output
+ // buffer.
+ await assert_buffer_data_equals(
+ mlContext, outputBuffer2, new Float32Array(sizeOfShape(shape)).fill(2));
+ }, `${testName} / same name diff outputs buffers`);
+
+ promise_test(async () => {
+ const dispatchInputs = {
+ 'lhs':
+ await mlContext.createBuffer(getDescriptorFromBuffer(inputs['lhs'])),
+ 'rhs':
+ await mlContext.createBuffer(getDescriptorFromBuffer(inputs['rhs'])),
+ };
+
+ const dispatchOutputs = {
+ 'output1': await mlContext.createBuffer(
+ getDescriptorFromBuffer(outputs['output1'])),
+ 'output2': await mlContext.createBuffer(
+ getDescriptorFromBuffer(outputs['output2'])),
+ };
+
+ // Initialize inputs
+ const inputData =
+ new TypedArrayDict['float32'](sizeOfShape(shape)).fill(1.0);
+ mlContext.writeBuffer(dispatchInputs['lhs'], inputData);
+ mlContext.writeBuffer(dispatchInputs['rhs'], inputData);
+
+ // Output = LHS + RHS = 1 + 1 = 2
+ mlContext.dispatch(mlGraph, dispatchInputs, dispatchOutputs);
+
+ // Check destroyed input buffers cannot be re-used in subsequent dispatches.
+ dispatchInputs['lhs'].destroy();
+ dispatchInputs['lhs'] =
+ await mlContext.createBuffer(getDescriptorFromBuffer(inputs['lhs']));
+
+ const newInputData =
+ new TypedArrayDict['float32'](sizeOfShape(shape)).fill(2.0);
+ mlContext.writeBuffer(dispatchInputs['lhs'], newInputData);
+
+ // Output = LHS + RHS = 2 + 1 = 3
+ mlContext.dispatch(mlGraph, dispatchInputs, dispatchOutputs);
+
+ await assert_buffer_data_equals(
+ mlContext, dispatchOutputs['output1'],
+ new Float32Array(sizeOfShape(shape)).fill(3));
+
+ dispatchInputs['rhs'].destroy();
+ dispatchInputs['rhs'] =
+ await mlContext.createBuffer(getDescriptorFromBuffer(inputs['rhs']));
+ mlContext.writeBuffer(dispatchInputs['rhs'], newInputData);
+
+ // Output = LHS + RHS = 2 + 2 = 4
+ mlContext.dispatch(mlGraph, dispatchInputs, dispatchOutputs);
+
+ await assert_buffer_data_equals(
+ mlContext, dispatchOutputs['output1'],
+ new Float32Array(sizeOfShape(shape)).fill(4));
+ }, `${testName} / same name diff inputs buffers destroy`);
+
+ promise_test(async () => {
+ const dispatchInputs = {
+ 'lhs':
+ await mlContext.createBuffer(getDescriptorFromBuffer(inputs['lhs'])),
+ 'rhs':
+ await mlContext.createBuffer(getDescriptorFromBuffer(inputs['rhs'])),
+ };
+
+ const dispatchOutputs = {
+ 'output1': await mlContext.createBuffer(
+ getDescriptorFromBuffer(outputs['output1'])),
+ 'output2': await mlContext.createBuffer(
+ getDescriptorFromBuffer(outputs['output2'])),
+ };
+
+ // Initialize inputs
+ const inputData =
+ new TypedArrayDict['float32'](sizeOfShape(shape)).fill(1.0);
+ mlContext.writeBuffer(dispatchInputs['lhs'], inputData);
+ mlContext.writeBuffer(dispatchInputs['rhs'], inputData);
+
+ // Output = LHS + RHS = 1 + 1 = 2
+ mlContext.dispatch(mlGraph, dispatchInputs, dispatchOutputs);
+
+ // Check destroyed output buffers cannot be re-used in subsequent
+ // dispatches.
+ dispatchOutputs['output1'].destroy();
+ dispatchOutputs['output1'] = await mlContext.createBuffer(
+ getDescriptorFromBuffer(outputs['output1']));
+
+ const newInputData =
+ new TypedArrayDict['float32'](sizeOfShape(shape)).fill(2.0);
+ mlContext.writeBuffer(dispatchInputs['lhs'], newInputData);
+
+ // Output = LHS + RHS = 2 + 1 = 3
+ mlContext.dispatch(mlGraph, dispatchInputs, dispatchOutputs);
+
+ await assert_buffer_data_equals(
+ mlContext, dispatchOutputs['output1'],
+ new Float32Array(sizeOfShape(shape)).fill(3));
+ }, `${testName} / same name diff outputs buffers destroy`);
+};
if (navigator.ml) {
testCreateWebNNBuffer('create', {dataType: 'float16', dimensions: [2, 3]});
diff --git a/tests/wpt/tests/webnn/conformance_tests/cast.https.any.js b/tests/wpt/tests/webnn/conformance_tests/cast.https.any.js
index 29f197a1aa6..a4223736f61 100644
--- a/tests/wpt/tests/webnn/conformance_tests/cast.https.any.js
+++ b/tests/wpt/tests/webnn/conformance_tests/cast.https.any.js
@@ -8,6 +8,1418 @@
'use strict';
-// https://webmachinelearning.github.io/webnn/#api-mlgraphbuilder-cast
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-cast
+// Cast each element in the input tensor to the target data type.
+// MLOperand cast(MLOperand input, MLOperandDataType type);
-runWebNNConformanceTests('cast', buildCast);
+
+const getCastPrecisionTolerance = (graphResources) => {
+ const toleranceValueDict = {
+ float32: 1,
+ float16: 1,
+ int32: 0,
+ uint32: 0,
+ int64: 0,
+ int8: 0,
+ uint8: 0
+ };
+ const expectedDataType =
+ getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs);
+ return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]};
+};
+
+const castTests = [
+ {
+ 'name': 'cast float32 0D tensor to int32',
+ 'graph': {
+ 'inputs': {
+ 'castInput': {
+ 'data': [84.77753448486328],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'cast',
+ 'arguments': [{'input': 'castInput'}, {'type': 'int32'}],
+ 'outputs': 'castOutput'
+ }],
+ 'expectedOutputs': {
+ 'castOutput': {
+ 'data': [84],
+ 'descriptor': {'dimensions': [], 'dataType': 'int32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'cast float32 1D tensor to int32',
+ 'graph': {
+ 'inputs': {
+ 'castInput': {
+ 'data': [
+ 102.1578369140625, -43.5,
+ 52.84621810913086, -99.9583511352539,
+ 6.729493141174316, 92.66157531738281,
+ -10.377813339233398, 106.65289306640625,
+ -7.126272678375244, 91.51563262939453,
+ -50.87134552001953, 83.38890075683594,
+ 72.9759750366211, -31.015382766723633,
+ 79.94034576416016, 41.5,
+ 35.727149963378906, -2.5,
+ -96.05252838134766, -86.76212310791016,
+ -27.49382972717285, -23.836687088012695,
+ 70.77123260498047, 83.5
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'cast',
+ 'arguments': [{'input': 'castInput'}, {'type': 'int32'}],
+ 'outputs': 'castOutput'
+ }],
+ 'expectedOutputs': {
+ 'castOutput': {
+ 'data': [
+ 102, -43, 52, -99, 6, 92, -10, 106, -7, 91, -50, 83,
+ 72, -31, 79, 41, 35, -2, -96, -86, -27, -23, 70, 83
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'int32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'cast float32 2D tensor to int32',
+ 'graph': {
+ 'inputs': {
+ 'castInput': {
+ 'data': [
+ 102.1578369140625, -43.5,
+ 52.84621810913086, -99.9583511352539,
+ 6.729493141174316, 92.66157531738281,
+ -10.377813339233398, 106.65289306640625,
+ -7.126272678375244, 91.51563262939453,
+ -50.87134552001953, 83.38890075683594,
+ 72.9759750366211, -31.015382766723633,
+ 79.94034576416016, 41.5,
+ 35.727149963378906, -2.5,
+ -96.05252838134766, -86.76212310791016,
+ -27.49382972717285, -23.836687088012695,
+ 70.77123260498047, 83.5
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'cast',
+ 'arguments': [{'input': 'castInput'}, {'type': 'int32'}],
+ 'outputs': 'castOutput'
+ }],
+ 'expectedOutputs': {
+ 'castOutput': {
+ 'data': [
+ 102, -43, 52, -99, 6, 92, -10, 106, -7, 91, -50, 83,
+ 72, -31, 79, 41, 35, -2, -96, -86, -27, -23, 70, 83
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'int32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'cast float32 3D tensor to int32',
+ 'graph': {
+ 'inputs': {
+ 'castInput': {
+ 'data': [
+ 102.1578369140625, -43.5,
+ 52.84621810913086, -99.9583511352539,
+ 6.729493141174316, 92.66157531738281,
+ -10.377813339233398, 106.65289306640625,
+ -7.126272678375244, 91.51563262939453,
+ -50.87134552001953, 83.38890075683594,
+ 72.9759750366211, -31.015382766723633,
+ 79.94034576416016, 41.5,
+ 35.727149963378906, -2.5,
+ -96.05252838134766, -86.76212310791016,
+ -27.49382972717285, -23.836687088012695,
+ 70.77123260498047, 83.5
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'cast',
+ 'arguments': [{'input': 'castInput'}, {'type': 'int32'}],
+ 'outputs': 'castOutput'
+ }],
+ 'expectedOutputs': {
+ 'castOutput': {
+ 'data': [
+ 102, -43, 52, -99, 6, 92, -10, 106, -7, 91, -50, 83,
+ 72, -31, 79, 41, 35, -2, -96, -86, -27, -23, 70, 83
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'int32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'cast float32 4D tensor to int32',
+ 'graph': {
+ 'inputs': {
+ 'castInput': {
+ 'data': [
+ 102.1578369140625, -43.5,
+ 52.84621810913086, -99.9583511352539,
+ 6.729493141174316, 92.66157531738281,
+ -10.377813339233398, 106.65289306640625,
+ -7.126272678375244, 91.51563262939453,
+ -50.87134552001953, 83.38890075683594,
+ 72.9759750366211, -31.015382766723633,
+ 79.94034576416016, 41.5,
+ 35.727149963378906, -2.5,
+ -96.05252838134766, -86.76212310791016,
+ -27.49382972717285, -23.836687088012695,
+ 70.77123260498047, 83.5
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'cast',
+ 'arguments': [{'input': 'castInput'}, {'type': 'int32'}],
+ 'outputs': 'castOutput'
+ }],
+ 'expectedOutputs': {
+ 'castOutput': {
+ 'data': [
+ 102, -43, 52, -99, 6, 92, -10, 106, -7, 91, -50, 83,
+ 72, -31, 79, 41, 35, -2, -96, -86, -27, -23, 70, 83
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'int32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'cast float32 5D tensor to int32',
+ 'graph': {
+ 'inputs': {
+ 'castInput': {
+ 'data': [
+ 102.1578369140625, -43.5,
+ 52.84621810913086, -99.9583511352539,
+ 6.729493141174316, 92.66157531738281,
+ -10.377813339233398, 106.65289306640625,
+ -7.126272678375244, 91.51563262939453,
+ -50.87134552001953, 83.38890075683594,
+ 72.9759750366211, -31.015382766723633,
+ 79.94034576416016, 41.5,
+ 35.727149963378906, -2.5,
+ -96.05252838134766, -86.76212310791016,
+ -27.49382972717285, -23.836687088012695,
+ 70.77123260498047, 83.5
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 1, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'cast',
+ 'arguments': [{'input': 'castInput'}, {'type': 'int32'}],
+ 'outputs': 'castOutput'
+ }],
+ 'expectedOutputs': {
+ 'castOutput': {
+ 'data': [
+ 102, -43, 52, -99, 6, 92, -10, 106, -7, 91, -50, 83,
+ 72, -31, 79, 41, 35, -2, -96, -86, -27, -23, 70, 83
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 1, 3], 'dataType': 'int32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'cast float32 4D tensor to float16',
+ 'graph': {
+ 'inputs': {
+ 'castInput': {
+ 'data': [
+ 102.1578369140625, 43.60371780395508, 52.84621810913086,
+ 99.9583511352539, 6.729493141174316, 92.66157531738281,
+ 10.377813339233398, 106.65289306640625, 7.126272678375244,
+ 91.51563262939453, 50.87134552001953, 83.38890075683594,
+ 72.9759750366211, 31.015382766723633, 79.94034576416016,
+ 41.844703674316406, 35.727149963378906, 2.614182949066162,
+ 96.05252838134766, 86.76212310791016, 27.49382972717285,
+ 23.836687088012695, 70.77123260498047, 83.8347396850586
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'cast',
+ 'arguments': [{'input': 'castInput'}, {'type': 'float16'}],
+ 'outputs': 'castOutput'
+ }],
+ 'expectedOutputs': {
+ 'castOutput': {
+ 'data': [
+ 102.1875, 43.59375, 52.84375, 99.9375, 6.73046875, 92.6875,
+ 10.375, 106.625, 7.125, 91.5, 50.875, 83.375,
+ 73, 31.015625, 79.9375, 41.84375, 35.71875, 2.61328125,
+ 96.0625, 86.75, 27.5, 23.84375, 70.75, 83.8125
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float16'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'cast float32 4D tensor to uint32',
+ 'graph': {
+ 'inputs': {
+ 'castInput': {
+ 'data': [
+ 102.1578369140625, 43.60371780395508, 52.84621810913086,
+ 99.9583511352539, 6.729493141174316, 92.66157531738281,
+ 10.377813339233398, 106.65289306640625, 7.126272678375244,
+ 91.51563262939453, 50.87134552001953, 83.38890075683594,
+ 72.9759750366211, 31.015382766723633, 79.94034576416016,
+ 41.844703674316406, 35.727149963378906, 2.614182949066162,
+ 96.05252838134766, 86.76212310791016, 27.49382972717285,
+ 23.836687088012695, 70.77123260498047, 83.8347396850586
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'cast',
+ 'arguments': [{'input': 'castInput'}, {'type': 'uint32'}],
+ 'outputs': 'castOutput'
+ }],
+ 'expectedOutputs': {
+ 'castOutput': {
+ 'data': [
+ 102, 43, 52, 99, 6, 92, 10, 106, 7, 91, 50, 83,
+ 72, 31, 79, 41, 35, 2, 96, 86, 27, 23, 70, 83
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'cast float32 4D tensor to int64',
+ 'graph': {
+ 'inputs': {
+ 'castInput': {
+ 'data': [
+ 102.1578369140625, 43.60371780395508, 52.84621810913086,
+ 99.9583511352539, 6.729493141174316, 92.66157531738281,
+ 10.377813339233398, 106.65289306640625, 7.126272678375244,
+ 91.51563262939453, 50.87134552001953, 83.38890075683594,
+ 72.9759750366211, 31.015382766723633, 79.94034576416016,
+ 41.844703674316406, 35.727149963378906, 2.614182949066162,
+ 96.05252838134766, 86.76212310791016, 27.49382972717285,
+ 23.836687088012695, 70.77123260498047, 83.8347396850586
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'cast',
+ 'arguments': [{'input': 'castInput'}, {'type': 'int64'}],
+ 'outputs': 'castOutput'
+ }],
+ 'expectedOutputs': {
+ 'castOutput': {
+ 'data': [
+ '102', '43', '52', '99', '6', '92', '10', '106',
+ '7', '91', '50', '83', '72', '31', '79', '41',
+ '35', '2', '96', '86', '27', '23', '70', '83'
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'int64'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'cast float32 4D tensor to int8',
+ 'graph': {
+ 'inputs': {
+ 'castInput': {
+ 'data': [
+ 102.1578369140625, 43.60371780395508, 52.84621810913086,
+ 99.9583511352539, 6.729493141174316, 92.66157531738281,
+ 10.377813339233398, 106.65289306640625, 7.126272678375244,
+ 91.51563262939453, 50.87134552001953, 83.38890075683594,
+ 72.9759750366211, 31.015382766723633, 79.94034576416016,
+ 41.844703674316406, 35.727149963378906, 2.614182949066162,
+ 96.05252838134766, 86.76212310791016, 27.49382972717285,
+ 23.836687088012695, 70.77123260498047, 83.8347396850586
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'cast',
+ 'arguments': [{'input': 'castInput'}, {'type': 'int8'}],
+ 'outputs': 'castOutput'
+ }],
+ 'expectedOutputs': {
+ 'castOutput': {
+ 'data': [
+ 102, 43, 52, 99, 6, 92, 10, 106, 7, 91, 50, 83,
+ 72, 31, 79, 41, 35, 2, 96, 86, 27, 23, 70, 83
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'int8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'cast float32 4D tensor to uint8',
+ 'graph': {
+ 'inputs': {
+ 'castInput': {
+ 'data': [
+ 102.1578369140625, 43.60371780395508, 52.84621810913086,
+ 99.9583511352539, 6.729493141174316, 92.66157531738281,
+ 10.377813339233398, 106.65289306640625, 7.126272678375244,
+ 91.51563262939453, 50.87134552001953, 83.38890075683594,
+ 72.9759750366211, 31.015382766723633, 79.94034576416016,
+ 41.844703674316406, 35.727149963378906, 2.614182949066162,
+ 96.05252838134766, 86.76212310791016, 27.49382972717285,
+ 23.836687088012695, 70.77123260498047, 83.8347396850586
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'cast',
+ 'arguments': [{'input': 'castInput'}, {'type': 'uint8'}],
+ 'outputs': 'castOutput'
+ }],
+ 'expectedOutputs': {
+ 'castOutput': {
+ 'data': [
+ 102, 43, 52, 99, 6, 92, 10, 106, 7, 91, 50, 83,
+ 72, 31, 79, 41, 35, 2, 96, 86, 27, 23, 70, 83
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'cast float16 4D tensor to float32',
+ 'graph': {
+ 'inputs': {
+ 'castInput': {
+ 'data': [
+ 3.103515625, 32.40625, 62.15625, 51.75, 87.0625, 106.25,
+ 125.375, 112.9375, 70.8125, 39.1875, 10.3515625, 21.234375,
+ 99.75, 16.125, 115.625, 66, 49.375, 115.75,
+ 77, 57.15625, 61.6875, 12.9296875, 101.25, 123.9375
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float16'}
+ }
+ },
+ 'operators': [{
+ 'name': 'cast',
+ 'arguments': [{'input': 'castInput'}, {'type': 'float32'}],
+ 'outputs': 'castOutput'
+ }],
+ 'expectedOutputs': {
+ 'castOutput': {
+ 'data': [
+ 3.103515625, 32.40625, 62.15625, 51.75, 87.0625, 106.25,
+ 125.375, 112.9375, 70.8125, 39.1875, 10.3515625, 21.234375,
+ 99.75, 16.125, 115.625, 66, 49.375, 115.75,
+ 77, 57.15625, 61.6875, 12.9296875, 101.25, 123.9375
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'cast float16 4D tensor to int32',
+ 'graph': {
+ 'inputs': {
+ 'castInput': {
+ 'data': [
+ 3.103515625, 32.40625, 62.15625, 51.75, 87.0625, 106.25,
+ 125.375, 112.9375, 70.8125, 39.1875, 10.3515625, 21.234375,
+ 99.75, 16.125, 115.625, 66, 49.375, 115.75,
+ 77, 57.15625, 61.6875, 12.9296875, 101.25, 123.9375
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float16'}
+ }
+ },
+ 'operators': [{
+ 'name': 'cast',
+ 'arguments': [{'input': 'castInput'}, {'type': 'int32'}],
+ 'outputs': 'castOutput'
+ }],
+ 'expectedOutputs': {
+ 'castOutput': {
+ 'data': [
+ 3, 32, 62, 51, 87, 106, 125, 112, 70, 39, 10, 21,
+ 99, 16, 115, 66, 49, 115, 77, 57, 61, 12, 101, 123
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'int32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'cast float16 4D tensor to uint32',
+ 'graph': {
+ 'inputs': {
+ 'castInput': {
+ 'data': [
+ 3.103515625, 32.40625, 62.15625, 51.75, 87.0625, 106.25,
+ 125.375, 112.9375, 70.8125, 39.1875, 10.3515625, 21.234375,
+ 99.75, 16.125, 115.625, 66, 49.375, 115.75,
+ 77, 57.15625, 61.6875, 12.9296875, 101.25, 123.9375
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float16'}
+ }
+ },
+ 'operators': [{
+ 'name': 'cast',
+ 'arguments': [{'input': 'castInput'}, {'type': 'uint32'}],
+ 'outputs': 'castOutput'
+ }],
+ 'expectedOutputs': {
+ 'castOutput': {
+ 'data': [
+ 3, 32, 62, 51, 87, 106, 125, 112, 70, 39, 10, 21,
+ 99, 16, 115, 66, 49, 115, 77, 57, 61, 12, 101, 123
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'cast float16 4D tensor to int64',
+ 'graph': {
+ 'inputs': {
+ 'castInput': {
+ 'data': [
+ 3.103515625, 32.40625, 62.15625, 51.75, 87.0625, 106.25,
+ 125.375, 112.9375, 70.8125, 39.1875, 10.3515625, 21.234375,
+ 99.75, 16.125, 115.625, 66, 49.375, 115.75,
+ 77, 57.15625, 61.6875, 12.9296875, 101.25, 123.9375
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float16'}
+ }
+ },
+ 'operators': [{
+ 'name': 'cast',
+ 'arguments': [{'input': 'castInput'}, {'type': 'int64'}],
+ 'outputs': 'castOutput'
+ }],
+ 'expectedOutputs': {
+ 'castOutput': {
+ 'data': [
+ '3', '32', '62', '51', '87', '106', '125', '112',
+ '70', '39', '10', '21', '99', '16', '115', '66',
+ '49', '115', '77', '57', '61', '12', '101', '123'
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'int64'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'cast float16 4D tensor to int8',
+ 'graph': {
+ 'inputs': {
+ 'castInput': {
+ 'data': [
+ 3.103515625, 32.40625, 62.15625, 51.75, 87.0625, 106.25,
+ 125.375, 112.9375, 70.8125, 39.1875, 10.3515625, 21.234375,
+ 99.75, 16.125, 115.625, 66, 49.375, 115.75,
+ 77, 57.15625, 61.6875, 12.9296875, 101.25, 123.9375
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float16'}
+ }
+ },
+ 'operators': [{
+ 'name': 'cast',
+ 'arguments': [{'input': 'castInput'}, {'type': 'int8'}],
+ 'outputs': 'castOutput'
+ }],
+ 'expectedOutputs': {
+ 'castOutput': {
+ 'data': [
+ 3, 32, 62, 51, 87, 106, 125, 112, 70, 39, 10, 21,
+ 99, 16, 115, 66, 49, 115, 77, 57, 61, 12, 101, 123
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'int8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'cast float16 4D tensor to uint8',
+ 'graph': {
+ 'inputs': {
+ 'castInput': {
+ 'data': [
+ 3.103515625, 32.40625, 62.15625, 51.75, 87.0625, 106.25,
+ 125.375, 112.9375, 70.8125, 39.1875, 10.3515625, 21.234375,
+ 99.75, 16.125, 115.625, 66, 49.375, 115.75,
+ 77, 57.15625, 61.6875, 12.9296875, 101.25, 123.9375
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float16'}
+ }
+ },
+ 'operators': [{
+ 'name': 'cast',
+ 'arguments': [{'input': 'castInput'}, {'type': 'uint8'}],
+ 'outputs': 'castOutput'
+ }],
+ 'expectedOutputs': {
+ 'castOutput': {
+ 'data': [
+ 3, 32, 62, 51, 87, 106, 125, 112, 70, 39, 10, 21,
+ 99, 16, 115, 66, 49, 115, 77, 57, 61, 12, 101, 123
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'cast int32 4D tensor to float32',
+ 'graph': {
+ 'inputs': {
+ 'castInput': {
+ 'data': [
+ 45, 55, 11, 21, 78, 104, 102, 66, 41, 110, 92, 69,
+ 48, 23, 58, 12, 33, 24, 101, 87, 49, 118, 1, 77
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'int32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'cast',
+ 'arguments': [{'input': 'castInput'}, {'type': 'float32'}],
+ 'outputs': 'castOutput'
+ }],
+ 'expectedOutputs': {
+ 'castOutput': {
+ 'data': [
+ 45, 55, 11, 21, 78, 104, 102, 66, 41, 110, 92, 69,
+ 48, 23, 58, 12, 33, 24, 101, 87, 49, 118, 1, 77
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'cast int32 4D tensor to float16',
+ 'graph': {
+ 'inputs': {
+ 'castInput': {
+ 'data': [
+ 45, 55, 11, 21, 78, 104, 102, 66, 41, 110, 92, 69,
+ 48, 23, 58, 12, 33, 24, 101, 87, 49, 118, 1, 77
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'int32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'cast',
+ 'arguments': [{'input': 'castInput'}, {'type': 'float16'}],
+ 'outputs': 'castOutput'
+ }],
+ 'expectedOutputs': {
+ 'castOutput': {
+ 'data': [
+ 45, 55, 11, 21, 78, 104, 102, 66, 41, 110, 92, 69,
+ 48, 23, 58, 12, 33, 24, 101, 87, 49, 118, 1, 77
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float16'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'cast int32 4D tensor to int64',
+ 'graph': {
+ 'inputs': {
+ 'castInput': {
+ 'data': [
+ 45, 55, 11, 21, 78, 104, 102, 66, 41, 110, 92, 69,
+ 48, 23, 58, 12, 33, 24, 101, 87, 49, 118, 1, 77
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'int32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'cast',
+ 'arguments': [{'input': 'castInput'}, {'type': 'int64'}],
+ 'outputs': 'castOutput'
+ }],
+ 'expectedOutputs': {
+ 'castOutput': {
+ 'data': [
+ '45', '55', '11', '21', '78', '104', '102', '66',
+ '41', '110', '92', '69', '48', '23', '58', '12',
+ '33', '24', '101', '87', '49', '118', '1', '77'
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'int64'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'cast int32 4D tensor to int8',
+ 'graph': {
+ 'inputs': {
+ 'castInput': {
+ 'data': [
+ 45, 55, 11, 21, 78, 104, 102, 66, 41, 110, 92, 69,
+ 48, 23, 58, 12, 33, 24, 101, 87, 49, 118, 1, 77
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'int32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'cast',
+ 'arguments': [{'input': 'castInput'}, {'type': 'int8'}],
+ 'outputs': 'castOutput'
+ }],
+ 'expectedOutputs': {
+ 'castOutput': {
+ 'data': [
+ 45, 55, 11, 21, 78, 104, 102, 66, 41, 110, 92, 69,
+ 48, 23, 58, 12, 33, 24, 101, 87, 49, 118, 1, 77
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'int8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'cast int32 4D tensor to uint8',
+ 'graph': {
+ 'inputs': {
+ 'castInput': {
+ 'data': [
+ 45, 55, 11, 21, 78, 104, 102, 66, 41, 110, 92, 69,
+ 48, 23, 58, 12, 33, 24, 101, 87, 49, 118, 1, 77
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'int32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'cast',
+ 'arguments': [{'input': 'castInput'}, {'type': 'uint8'}],
+ 'outputs': 'castOutput'
+ }],
+ 'expectedOutputs': {
+ 'castOutput': {
+ 'data': [
+ 45, 55, 11, 21, 78, 104, 102, 66, 41, 110, 92, 69,
+ 48, 23, 58, 12, 33, 24, 101, 87, 49, 118, 1, 77
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'cast uint32 4D tensor to float32',
+ 'graph': {
+ 'inputs': {
+ 'castInput': {
+ 'data': [
+ 34, 83, 113, 31, 62, 80, 8, 40, 104, 42, 6, 91,
+ 93, 21, 40, 21, 51, 110, 115, 12, 122, 68, 57, 72
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'cast',
+ 'arguments': [{'input': 'castInput'}, {'type': 'float32'}],
+ 'outputs': 'castOutput'
+ }],
+ 'expectedOutputs': {
+ 'castOutput': {
+ 'data': [
+ 34, 83, 113, 31, 62, 80, 8, 40, 104, 42, 6, 91,
+ 93, 21, 40, 21, 51, 110, 115, 12, 122, 68, 57, 72
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'cast uint32 4D tensor to float16',
+ 'graph': {
+ 'inputs': {
+ 'castInput': {
+ 'data': [
+ 34, 83, 113, 31, 62, 80, 8, 40, 104, 42, 6, 91,
+ 93, 21, 40, 21, 51, 110, 115, 12, 122, 68, 57, 72
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'cast',
+ 'arguments': [{'input': 'castInput'}, {'type': 'float16'}],
+ 'outputs': 'castOutput'
+ }],
+ 'expectedOutputs': {
+ 'castOutput': {
+ 'data': [
+ 34, 83, 113, 31, 62, 80, 8, 40, 104, 42, 6, 91,
+ 93, 21, 40, 21, 51, 110, 115, 12, 122, 68, 57, 72
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float16'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'cast uint32 4D tensor to int32',
+ 'graph': {
+ 'inputs': {
+ 'castInput': {
+ 'data': [
+ 34, 83, 113, 31, 62, 80, 8, 40, 104, 42, 6, 91,
+ 93, 21, 40, 21, 51, 110, 115, 12, 122, 68, 57, 72
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'cast',
+ 'arguments': [{'input': 'castInput'}, {'type': 'int32'}],
+ 'outputs': 'castOutput'
+ }],
+ 'expectedOutputs': {
+ 'castOutput': {
+ 'data': [
+ 34, 83, 113, 31, 62, 80, 8, 40, 104, 42, 6, 91,
+ 93, 21, 40, 21, 51, 110, 115, 12, 122, 68, 57, 72
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'int32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'cast uint32 4D tensor to int64',
+ 'graph': {
+ 'inputs': {
+ 'castInput': {
+ 'data': [
+ 34, 83, 113, 31, 62, 80, 8, 40, 104, 42, 6, 91,
+ 93, 21, 40, 21, 51, 110, 115, 12, 122, 68, 57, 72
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'cast',
+ 'arguments': [{'input': 'castInput'}, {'type': 'int64'}],
+ 'outputs': 'castOutput'
+ }],
+ 'expectedOutputs': {
+ 'castOutput': {
+ 'data': [
+ '34', '83', '113', '31', '62', '80', '8', '40',
+ '104', '42', '6', '91', '93', '21', '40', '21',
+ '51', '110', '115', '12', '122', '68', '57', '72'
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'int64'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'cast uint32 4D tensor to int8',
+ 'graph': {
+ 'inputs': {
+ 'castInput': {
+ 'data': [
+ 34, 83, 113, 31, 62, 80, 8, 40, 104, 42, 6, 91,
+ 93, 21, 40, 21, 51, 110, 115, 12, 122, 68, 57, 72
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'cast',
+ 'arguments': [{'input': 'castInput'}, {'type': 'int8'}],
+ 'outputs': 'castOutput'
+ }],
+ 'expectedOutputs': {
+ 'castOutput': {
+ 'data': [
+ 34, 83, 113, 31, 62, 80, 8, 40, 104, 42, 6, 91,
+ 93, 21, 40, 21, 51, 110, 115, 12, 122, 68, 57, 72
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'int8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'cast uint32 4D tensor to uint8',
+ 'graph': {
+ 'inputs': {
+ 'castInput': {
+ 'data': [
+ 34, 83, 113, 31, 62, 80, 8, 40, 104, 42, 6, 91,
+ 93, 21, 40, 21, 51, 110, 115, 12, 122, 68, 57, 72
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'cast',
+ 'arguments': [{'input': 'castInput'}, {'type': 'uint8'}],
+ 'outputs': 'castOutput'
+ }],
+ 'expectedOutputs': {
+ 'castOutput': {
+ 'data': [
+ 34, 83, 113, 31, 62, 80, 8, 40, 104, 42, 6, 91,
+ 93, 21, 40, 21, 51, 110, 115, 12, 122, 68, 57, 72
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'cast int64 4D tensor to float32',
+ 'graph': {
+ 'inputs': {
+ 'castInput': {
+ 'data': [
+ 50, 1, 28, 20, 102, 86, 70, 38, 50, 19, 11, 4,
+ 56, 77, 40, 80, 45, 127, 4, 87, 125, 26, 63, 11
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'int64'}
+ }
+ },
+ 'operators': [{
+ 'name': 'cast',
+ 'arguments': [{'input': 'castInput'}, {'type': 'float32'}],
+ 'outputs': 'castOutput'
+ }],
+ 'expectedOutputs': {
+ 'castOutput': {
+ 'data': [
+ 50, 1, 28, 20, 102, 86, 70, 38, 50, 19, 11, 4,
+ 56, 77, 40, 80, 45, 127, 4, 87, 125, 26, 63, 11
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'cast int64 4D tensor to float16',
+ 'graph': {
+ 'inputs': {
+ 'castInput': {
+ 'data': [
+ 50, 1, 28, 20, 102, 86, 70, 38, 50, 19, 11, 4,
+ 56, 77, 40, 80, 45, 127, 4, 87, 125, 26, 63, 11
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'int64'}
+ }
+ },
+ 'operators': [{
+ 'name': 'cast',
+ 'arguments': [{'input': 'castInput'}, {'type': 'float16'}],
+ 'outputs': 'castOutput'
+ }],
+ 'expectedOutputs': {
+ 'castOutput': {
+ 'data': [
+ 50, 1, 28, 20, 102, 86, 70, 38, 50, 19, 11, 4,
+ 56, 77, 40, 80, 45, 127, 4, 87, 125, 26, 63, 11
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float16'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'cast int64 4D tensor to int32',
+ 'graph': {
+ 'inputs': {
+ 'castInput': {
+ 'data': [
+ 50, 1, 28, 20, 102, 86, 70, 38, 50, 19, 11, 4,
+ 56, 77, 40, 80, 45, 127, 4, 87, 125, 26, 63, 11
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'int64'}
+ }
+ },
+ 'operators': [{
+ 'name': 'cast',
+ 'arguments': [{'input': 'castInput'}, {'type': 'int32'}],
+ 'outputs': 'castOutput'
+ }],
+ 'expectedOutputs': {
+ 'castOutput': {
+ 'data': [
+ 50, 1, 28, 20, 102, 86, 70, 38, 50, 19, 11, 4,
+ 56, 77, 40, 80, 45, 127, 4, 87, 125, 26, 63, 11
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'int32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'cast int64 4D tensor to uint32',
+ 'graph': {
+ 'inputs': {
+ 'castInput': {
+ 'data': [
+ 50, 1, 28, 20, 102, 86, 70, 38, 50, 19, 11, 4,
+ 56, 77, 40, 80, 45, 127, 4, 87, 125, 26, 63, 11
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'int64'}
+ }
+ },
+ 'operators': [{
+ 'name': 'cast',
+ 'arguments': [{'input': 'castInput'}, {'type': 'uint32'}],
+ 'outputs': 'castOutput'
+ }],
+ 'expectedOutputs': {
+ 'castOutput': {
+ 'data': [
+ 50, 1, 28, 20, 102, 86, 70, 38, 50, 19, 11, 4,
+ 56, 77, 40, 80, 45, 127, 4, 87, 125, 26, 63, 11
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'cast int64 4D tensor to int8',
+ 'graph': {
+ 'inputs': {
+ 'castInput': {
+ 'data': [
+ 50, 1, 28, 20, 102, 86, 70, 38, 50, 19, 11, 4,
+ 56, 77, 40, 80, 45, 127, 4, 87, 125, 26, 63, 11
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'int64'}
+ }
+ },
+ 'operators': [{
+ 'name': 'cast',
+ 'arguments': [{'input': 'castInput'}, {'type': 'int8'}],
+ 'outputs': 'castOutput'
+ }],
+ 'expectedOutputs': {
+ 'castOutput': {
+ 'data': [
+ 50, 1, 28, 20, 102, 86, 70, 38, 50, 19, 11, 4,
+ 56, 77, 40, 80, 45, 127, 4, 87, 125, 26, 63, 11
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'int8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'cast int64 4D tensor to uint8',
+ 'graph': {
+ 'inputs': {
+ 'castInput': {
+ 'data': [
+ 50, 1, 28, 20, 102, 86, 70, 38, 50, 19, 11, 4,
+ 56, 77, 40, 80, 45, 127, 4, 87, 125, 26, 63, 11
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'int64'}
+ }
+ },
+ 'operators': [{
+ 'name': 'cast',
+ 'arguments': [{'input': 'castInput'}, {'type': 'uint8'}],
+ 'outputs': 'castOutput'
+ }],
+ 'expectedOutputs': {
+ 'castOutput': {
+ 'data': [
+ 50, 1, 28, 20, 102, 86, 70, 38, 50, 19, 11, 4,
+ 56, 77, 40, 80, 45, 127, 4, 87, 125, 26, 63, 11
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'cast int8 4D tensor to float32',
+ 'graph': {
+ 'inputs': {
+ 'castInput': {
+ 'data': [
+ 123, 17, 31, 77, 88, 44, 84, 40, 14, 64, 109, 4,
+ 2, 0, 45, 47, 72, 88, 82, 4, 73, 36, 65, 117
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'int8'}
+ }
+ },
+ 'operators': [{
+ 'name': 'cast',
+ 'arguments': [{'input': 'castInput'}, {'type': 'float32'}],
+ 'outputs': 'castOutput'
+ }],
+ 'expectedOutputs': {
+ 'castOutput': {
+ 'data': [
+ 123, 17, 31, 77, 88, 44, 84, 40, 14, 64, 109, 4,
+ 2, 0, 45, 47, 72, 88, 82, 4, 73, 36, 65, 117
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'cast int8 4D tensor to float16',
+ 'graph': {
+ 'inputs': {
+ 'castInput': {
+ 'data': [
+ 123, 17, 31, 77, 88, 44, 84, 40, 14, 64, 109, 4,
+ 2, 0, 45, 47, 72, 88, 82, 4, 73, 36, 65, 117
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'int8'}
+ }
+ },
+ 'operators': [{
+ 'name': 'cast',
+ 'arguments': [{'input': 'castInput'}, {'type': 'float16'}],
+ 'outputs': 'castOutput'
+ }],
+ 'expectedOutputs': {
+ 'castOutput': {
+ 'data': [
+ 123, 17, 31, 77, 88, 44, 84, 40, 14, 64, 109, 4,
+ 2, 0, 45, 47, 72, 88, 82, 4, 73, 36, 65, 117
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float16'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'cast int8 4D tensor to int32',
+ 'graph': {
+ 'inputs': {
+ 'castInput': {
+ 'data': [
+ 123, 17, 31, 77, 88, 44, 84, 40, 14, 64, 109, 4,
+ 2, 0, 45, 47, 72, 88, 82, 4, 73, 36, 65, 117
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'int8'}
+ }
+ },
+ 'operators': [{
+ 'name': 'cast',
+ 'arguments': [{'input': 'castInput'}, {'type': 'int32'}],
+ 'outputs': 'castOutput'
+ }],
+ 'expectedOutputs': {
+ 'castOutput': {
+ 'data': [
+ 123, 17, 31, 77, 88, 44, 84, 40, 14, 64, 109, 4,
+ 2, 0, 45, 47, 72, 88, 82, 4, 73, 36, 65, 117
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'int32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'cast int8 4D tensor to uint32',
+ 'graph': {
+ 'inputs': {
+ 'castInput': {
+ 'data': [
+ 123, 17, 31, 77, 88, 44, 84, 40, 14, 64, 109, 4,
+ 2, 0, 45, 47, 72, 88, 82, 4, 73, 36, 65, 117
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'int8'}
+ }
+ },
+ 'operators': [{
+ 'name': 'cast',
+ 'arguments': [{'input': 'castInput'}, {'type': 'uint32'}],
+ 'outputs': 'castOutput'
+ }],
+ 'expectedOutputs': {
+ 'castOutput': {
+ 'data': [
+ 123, 17, 31, 77, 88, 44, 84, 40, 14, 64, 109, 4,
+ 2, 0, 45, 47, 72, 88, 82, 4, 73, 36, 65, 117
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'cast int8 4D tensor to int64',
+ 'graph': {
+ 'inputs': {
+ 'castInput': {
+ 'data': [
+ 123, 17, 31, 77, 88, 44, 84, 40, 14, 64, 109, 4,
+ 2, 0, 45, 47, 72, 88, 82, 4, 73, 36, 65, 117
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'int8'}
+ }
+ },
+ 'operators': [{
+ 'name': 'cast',
+ 'arguments': [{'input': 'castInput'}, {'type': 'int64'}],
+ 'outputs': 'castOutput'
+ }],
+ 'expectedOutputs': {
+ 'castOutput': {
+ 'data': [
+ '123', '17', '31', '77', '88', '44', '84', '40',
+ '14', '64', '109', '4', '2', '0', '45', '47',
+ '72', '88', '82', '4', '73', '36', '65', '117'
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'int64'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'cast int8 4D tensor to uint8',
+ 'graph': {
+ 'inputs': {
+ 'castInput': {
+ 'data': [
+ 123, 17, 31, 77, 88, 44, 84, 40, 14, 64, 109, 4,
+ 2, 0, 45, 47, 72, 88, 82, 4, 73, 36, 65, 117
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'int8'}
+ }
+ },
+ 'operators': [{
+ 'name': 'cast',
+ 'arguments': [{'input': 'castInput'}, {'type': 'uint8'}],
+ 'outputs': 'castOutput'
+ }],
+ 'expectedOutputs': {
+ 'castOutput': {
+ 'data': [
+ 123, 17, 31, 77, 88, 44, 84, 40, 14, 64, 109, 4,
+ 2, 0, 45, 47, 72, 88, 82, 4, 73, 36, 65, 117
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'cast uint8 4D tensor to float32',
+ 'graph': {
+ 'inputs': {
+ 'castInput': {
+ 'data': [
+ 10, 112, 121, 120, 22, 105, 41, 30, 75, 121, 55, 47,
+ 121, 24, 16, 33, 97, 24, 3, 37, 45, 6, 56, 57
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint8'}
+ }
+ },
+ 'operators': [{
+ 'name': 'cast',
+ 'arguments': [{'input': 'castInput'}, {'type': 'float32'}],
+ 'outputs': 'castOutput'
+ }],
+ 'expectedOutputs': {
+ 'castOutput': {
+ 'data': [
+ 10, 112, 121, 120, 22, 105, 41, 30, 75, 121, 55, 47,
+ 121, 24, 16, 33, 97, 24, 3, 37, 45, 6, 56, 57
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'cast uint8 4D tensor to float16',
+ 'graph': {
+ 'inputs': {
+ 'castInput': {
+ 'data': [
+ 10, 112, 121, 120, 22, 105, 41, 30, 75, 121, 55, 47,
+ 121, 24, 16, 33, 97, 24, 3, 37, 45, 6, 56, 57
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint8'}
+ }
+ },
+ 'operators': [{
+ 'name': 'cast',
+ 'arguments': [{'input': 'castInput'}, {'type': 'float16'}],
+ 'outputs': 'castOutput'
+ }],
+ 'expectedOutputs': {
+ 'castOutput': {
+ 'data': [
+ 10, 112, 121, 120, 22, 105, 41, 30, 75, 121, 55, 47,
+ 121, 24, 16, 33, 97, 24, 3, 37, 45, 6, 56, 57
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float16'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'cast uint8 4D tensor to int32',
+ 'graph': {
+ 'inputs': {
+ 'castInput': {
+ 'data': [
+ 10, 112, 121, 120, 22, 105, 41, 30, 75, 121, 55, 47,
+ 121, 24, 16, 33, 97, 24, 3, 37, 45, 6, 56, 57
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint8'}
+ }
+ },
+ 'operators': [{
+ 'name': 'cast',
+ 'arguments': [{'input': 'castInput'}, {'type': 'int32'}],
+ 'outputs': 'castOutput'
+ }],
+ 'expectedOutputs': {
+ 'castOutput': {
+ 'data': [
+ 10, 112, 121, 120, 22, 105, 41, 30, 75, 121, 55, 47,
+ 121, 24, 16, 33, 97, 24, 3, 37, 45, 6, 56, 57
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'int32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'cast uint8 4D tensor to uint32',
+ 'graph': {
+ 'inputs': {
+ 'castInput': {
+ 'data': [
+ 10, 112, 121, 120, 22, 105, 41, 30, 75, 121, 55, 47,
+ 121, 24, 16, 33, 97, 24, 3, 37, 45, 6, 56, 57
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint8'}
+ }
+ },
+ 'operators': [{
+ 'name': 'cast',
+ 'arguments': [{'input': 'castInput'}, {'type': 'uint32'}],
+ 'outputs': 'castOutput'
+ }],
+ 'expectedOutputs': {
+ 'castOutput': {
+ 'data': [
+ 10, 112, 121, 120, 22, 105, 41, 30, 75, 121, 55, 47,
+ 121, 24, 16, 33, 97, 24, 3, 37, 45, 6, 56, 57
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'cast uint8 4D tensor to int64',
+ 'graph': {
+ 'inputs': {
+ 'castInput': {
+ 'data': [
+ 10, 112, 121, 120, 22, 105, 41, 30, 75, 121, 55, 47,
+ 121, 24, 16, 33, 97, 24, 3, 37, 45, 6, 56, 57
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint8'}
+ }
+ },
+ 'operators': [{
+ 'name': 'cast',
+ 'arguments': [{'input': 'castInput'}, {'type': 'int64'}],
+ 'outputs': 'castOutput'
+ }],
+ 'expectedOutputs': {
+ 'castOutput': {
+ 'data': [
+ '10', '112', '121', '120', '22', '105', '41', '30',
+ '75', '121', '55', '47', '121', '24', '16', '33',
+ '97', '24', '3', '37', '45', '6', '56', '57'
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'int64'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'cast uint8 4D tensor to int8',
+ 'graph': {
+ 'inputs': {
+ 'castInput': {
+ 'data': [
+ 10, 112, 121, 120, 22, 105, 41, 30, 75, 121, 55, 47,
+ 121, 24, 16, 33, 97, 24, 3, 37, 45, 6, 56, 57
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint8'}
+ }
+ },
+ 'operators': [{
+ 'name': 'cast',
+ 'arguments': [{'input': 'castInput'}, {'type': 'int8'}],
+ 'outputs': 'castOutput'
+ }],
+ 'expectedOutputs': {
+ 'castOutput': {
+ 'data': [
+ 10, 112, 121, 120, 22, 105, 41, 30, 75, 121, 55, 47,
+ 121, 24, 16, 33, 97, 24, 3, 37, 45, 6, 56, 57
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'int8'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ castTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getCastPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/ceil.https.any.js b/tests/wpt/tests/webnn/conformance_tests/ceil.https.any.js
new file mode 100644
index 00000000000..2e490bd1ecb
--- /dev/null
+++ b/tests/wpt/tests/webnn/conformance_tests/ceil.https.any.js
@@ -0,0 +1,260 @@
+// META: title=test WebNN API element-wise ceil operation
+// META: global=window,dedicatedworker
+// META: variant=?cpu
+// META: variant=?gpu
+// META: variant=?npu
+// META: script=../resources/utils.js
+// META: timeout=long
+
+'use strict';
+
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-unary
+// Compute the ceiling of the input tensor, element-wise.
+//
+// MLOperand ceil(MLOperand input);
+
+
+const getCeilPrecisionTolerance = (graphResources) => {
+ const toleranceValueDict = {float32: 0, float16: 0};
+ const expectedDataType =
+ getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs);
+ return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]};
+};
+
+const ceilTests = [
+ {
+ 'name': 'ceil float32 0D scalar',
+ 'graph': {
+ 'inputs': {
+ 'ceilInput': {
+ 'data': [67.38941955566406],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'ceil',
+ 'arguments': [{'input': 'ceilInput'}],
+ 'outputs': 'ceilOutput'
+ }],
+ 'expectedOutputs': {
+ 'ceilOutput': {
+ 'data': [68],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'ceil float32 1D constant tensor',
+ 'graph': {
+ 'inputs': {
+ 'ceilInput': {
+ 'data': [
+ 67.38941955566406, 36.78218460083008, 99.10649108886719,
+ -22.58710479736328, 32.70173645019531, 17.68880844116211,
+ 5.631034851074219, 12.965238571166992, 83.1319351196289,
+ -29.292461395263672, 19.84463119506836, 65.2790298461914,
+ 26.31110954284668, 24.285673141479492, -48.39767074584961,
+ -5.617412567138672, 61.53380584716797, -87.81197357177734,
+ 69.71428680419922, 5.0031023025512695, 84.36833953857422,
+ -9.390542030334473, -27.856616973876953, -34.895931243896484
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'ceil',
+ 'arguments': [{'input': 'ceilInput'}],
+ 'outputs': 'ceilOutput'
+ }],
+ 'expectedOutputs': {
+ 'ceilOutput': {
+ 'data': [
+ 68, 37, 100, -22, 33, 18, 6, 13, 84, -29, 20, 66,
+ 27, 25, -48, -5, 62, -87, 70, 6, 85, -9, -27, -34
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'ceil float32 1D tensor',
+ 'graph': {
+ 'inputs': {
+ 'ceilInput': {
+ 'data': [
+ 67.38941955566406, 36.78218460083008, 99.10649108886719,
+ -22.58710479736328, 32.70173645019531, 17.68880844116211,
+ 5.631034851074219, 12.965238571166992, 83.1319351196289,
+ -29.292461395263672, 19.84463119506836, 65.2790298461914,
+ 26.31110954284668, 24.285673141479492, -48.39767074584961,
+ -5.617412567138672, 61.53380584716797, -87.81197357177734,
+ 69.71428680419922, 5.0031023025512695, 84.36833953857422,
+ -9.390542030334473, -27.856616973876953, -34.895931243896484
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'ceil',
+ 'arguments': [{'input': 'ceilInput'}],
+ 'outputs': 'ceilOutput'
+ }],
+ 'expectedOutputs': {
+ 'ceilOutput': {
+ 'data': [
+ 68, 37, 100, -22, 33, 18, 6, 13, 84, -29, 20, 66,
+ 27, 25, -48, -5, 62, -87, 70, 6, 85, -9, -27, -34
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'ceil float32 2D tensor',
+ 'graph': {
+ 'inputs': {
+ 'ceilInput': {
+ 'data': [
+ 67.38941955566406, 36.78218460083008, 99.10649108886719,
+ -22.58710479736328, 32.70173645019531, 17.68880844116211,
+ 5.631034851074219, 12.965238571166992, 83.1319351196289,
+ -29.292461395263672, 19.84463119506836, 65.2790298461914,
+ 26.31110954284668, 24.285673141479492, -48.39767074584961,
+ -5.617412567138672, 61.53380584716797, -87.81197357177734,
+ 69.71428680419922, 5.0031023025512695, 84.36833953857422,
+ -9.390542030334473, -27.856616973876953, -34.895931243896484
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'ceil',
+ 'arguments': [{'input': 'ceilInput'}],
+ 'outputs': 'ceilOutput'
+ }],
+ 'expectedOutputs': {
+ 'ceilOutput': {
+ 'data': [
+ 68, 37, 100, -22, 33, 18, 6, 13, 84, -29, 20, 66,
+ 27, 25, -48, -5, 62, -87, 70, 6, 85, -9, -27, -34
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'ceil float32 3D tensor',
+ 'graph': {
+ 'inputs': {
+ 'ceilInput': {
+ 'data': [
+ 67.38941955566406, 36.78218460083008, 99.10649108886719,
+ -22.58710479736328, 32.70173645019531, 17.68880844116211,
+ 5.631034851074219, 12.965238571166992, 83.1319351196289,
+ -29.292461395263672, 19.84463119506836, 65.2790298461914,
+ 26.31110954284668, 24.285673141479492, -48.39767074584961,
+ -5.617412567138672, 61.53380584716797, -87.81197357177734,
+ 69.71428680419922, 5.0031023025512695, 84.36833953857422,
+ -9.390542030334473, -27.856616973876953, -34.895931243896484
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'ceil',
+ 'arguments': [{'input': 'ceilInput'}],
+ 'outputs': 'ceilOutput'
+ }],
+ 'expectedOutputs': {
+ 'ceilOutput': {
+ 'data': [
+ 68, 37, 100, -22, 33, 18, 6, 13, 84, -29, 20, 66,
+ 27, 25, -48, -5, 62, -87, 70, 6, 85, -9, -27, -34
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'ceil float32 4D tensor',
+ 'graph': {
+ 'inputs': {
+ 'ceilInput': {
+ 'data': [
+ 67.38941955566406, 36.78218460083008, 99.10649108886719,
+ -22.58710479736328, 32.70173645019531, 17.68880844116211,
+ 5.631034851074219, 12.965238571166992, 83.1319351196289,
+ -29.292461395263672, 19.84463119506836, 65.2790298461914,
+ 26.31110954284668, 24.285673141479492, -48.39767074584961,
+ -5.617412567138672, 61.53380584716797, -87.81197357177734,
+ 69.71428680419922, 5.0031023025512695, 84.36833953857422,
+ -9.390542030334473, -27.856616973876953, -34.895931243896484
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'ceil',
+ 'arguments': [{'input': 'ceilInput'}],
+ 'outputs': 'ceilOutput'
+ }],
+ 'expectedOutputs': {
+ 'ceilOutput': {
+ 'data': [
+ 68, 37, 100, -22, 33, 18, 6, 13, 84, -29, 20, 66,
+ 27, 25, -48, -5, 62, -87, 70, 6, 85, -9, -27, -34
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'ceil float32 5D tensor',
+ 'graph': {
+ 'inputs': {
+ 'ceilInput': {
+ 'data': [
+ 67.38941955566406, 36.78218460083008, 99.10649108886719,
+ -22.58710479736328, 32.70173645019531, 17.68880844116211,
+ 5.631034851074219, 12.965238571166992, 83.1319351196289,
+ -29.292461395263672, 19.84463119506836, 65.2790298461914,
+ 26.31110954284668, 24.285673141479492, -48.39767074584961,
+ -5.617412567138672, 61.53380584716797, -87.81197357177734,
+ 69.71428680419922, 5.0031023025512695, 84.36833953857422,
+ -9.390542030334473, -27.856616973876953, -34.895931243896484
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 1, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'ceil',
+ 'arguments': [{'input': 'ceilInput'}],
+ 'outputs': 'ceilOutput'
+ }],
+ 'expectedOutputs': {
+ 'ceilOutput': {
+ 'data': [
+ 68, 37, 100, -22, 33, 18, 6, 13, 84, -29, 20, 66,
+ 27, 25, -48, -5, 62, -87, 70, 6, 85, -9, -27, -34
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 1, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ ceilTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getCeilPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/clamp.https.any.js b/tests/wpt/tests/webnn/conformance_tests/clamp.https.any.js
index 15777271872..5ccbe3b8e64 100644
--- a/tests/wpt/tests/webnn/conformance_tests/clamp.https.any.js
+++ b/tests/wpt/tests/webnn/conformance_tests/clamp.https.any.js
@@ -8,6 +8,911 @@
'use strict';
-// https://webmachinelearning.github.io/webnn/#api-mlgraphbuilder-clamp
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-clamp
+// Clamp the input tensor element-wise within a range specified by the minimum
+// and maximum values.
+//
+// dictionary MLClampOptions {
+// MLNumber minValue;
+// MLNumber maxValue;
+// };
+//
+// MLOperand clamp(MLOperand input, optional MLClampOptions options = {});
-runWebNNConformanceTests('clamp', buildOperationWithSingleInput);
+
+const getClampPrecisionTolerance = (graphResources) => {
+ const toleranceValueDict = {float32: 0, float16: 0};
+ const expectedDataType =
+ getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs);
+ return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]};
+};
+
+const clampTests = [
+ {
+ 'name': 'clamp float32 1D constant tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'clampInput': {
+ 'data': [
+ -9.817828178405762, -6.024064064025879, -4.0725626945495605,
+ -6.575078010559082, -7.755683898925781, 9.524681091308594,
+ 3.7292487621307373, 6.481687068939209, -1.537420630455017,
+ -7.34310245513916, 7.880751132965088, -2.0564088821411133,
+ 6.3438639640808105, 5.525737762451172, 0.8433118462562561,
+ -8.199960708618164, -7.786487102508545, 9.280223846435547,
+ -2.3130595684051514, 9.549695014953613, 5.788925647735596,
+ 5.549378395080566, 7.409400463104248, -2.123614549636841
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'clamp',
+ 'arguments': [{'input': 'clampInput'}],
+ 'outputs': 'clampOutput'
+ }],
+ 'expectedOutputs': {
+ 'clampOutput': {
+ 'data': [
+ -9.817828178405762, -6.024064064025879, -4.0725626945495605,
+ -6.575078010559082, -7.755683898925781, 9.524681091308594,
+ 3.7292487621307373, 6.481687068939209, -1.537420630455017,
+ -7.34310245513916, 7.880751132965088, -2.0564088821411133,
+ 6.3438639640808105, 5.525737762451172, 0.8433118462562561,
+ -8.199960708618164, -7.786487102508545, 9.280223846435547,
+ -2.3130595684051514, 9.549695014953613, 5.788925647735596,
+ 5.549378395080566, 7.409400463104248, -2.123614549636841
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'clamp float32 1D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'clampInput': {
+ 'data': [
+ -9.817828178405762, -6.024064064025879, -4.0725626945495605,
+ -6.575078010559082, -7.755683898925781, 9.524681091308594,
+ 3.7292487621307373, 6.481687068939209, -1.537420630455017,
+ -7.34310245513916, 7.880751132965088, -2.0564088821411133,
+ 6.3438639640808105, 5.525737762451172, 0.8433118462562561,
+ -8.199960708618164, -7.786487102508545, 9.280223846435547,
+ -2.3130595684051514, 9.549695014953613, 5.788925647735596,
+ 5.549378395080566, 7.409400463104248, -2.123614549636841
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'clamp',
+ 'arguments': [{'input': 'clampInput'}],
+ 'outputs': 'clampOutput'
+ }],
+ 'expectedOutputs': {
+ 'clampOutput': {
+ 'data': [
+ -9.817828178405762, -6.024064064025879, -4.0725626945495605,
+ -6.575078010559082, -7.755683898925781, 9.524681091308594,
+ 3.7292487621307373, 6.481687068939209, -1.537420630455017,
+ -7.34310245513916, 7.880751132965088, -2.0564088821411133,
+ 6.3438639640808105, 5.525737762451172, 0.8433118462562561,
+ -8.199960708618164, -7.786487102508545, 9.280223846435547,
+ -2.3130595684051514, 9.549695014953613, 5.788925647735596,
+ 5.549378395080566, 7.409400463104248, -2.123614549636841
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'clamp float32 2D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'clampInput': {
+ 'data': [
+ -9.817828178405762, -6.024064064025879, -4.0725626945495605,
+ -6.575078010559082, -7.755683898925781, 9.524681091308594,
+ 3.7292487621307373, 6.481687068939209, -1.537420630455017,
+ -7.34310245513916, 7.880751132965088, -2.0564088821411133,
+ 6.3438639640808105, 5.525737762451172, 0.8433118462562561,
+ -8.199960708618164, -7.786487102508545, 9.280223846435547,
+ -2.3130595684051514, 9.549695014953613, 5.788925647735596,
+ 5.549378395080566, 7.409400463104248, -2.123614549636841
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'clamp',
+ 'arguments': [{'input': 'clampInput'}],
+ 'outputs': 'clampOutput'
+ }],
+ 'expectedOutputs': {
+ 'clampOutput': {
+ 'data': [
+ -9.817828178405762, -6.024064064025879, -4.0725626945495605,
+ -6.575078010559082, -7.755683898925781, 9.524681091308594,
+ 3.7292487621307373, 6.481687068939209, -1.537420630455017,
+ -7.34310245513916, 7.880751132965088, -2.0564088821411133,
+ 6.3438639640808105, 5.525737762451172, 0.8433118462562561,
+ -8.199960708618164, -7.786487102508545, 9.280223846435547,
+ -2.3130595684051514, 9.549695014953613, 5.788925647735596,
+ 5.549378395080566, 7.409400463104248, -2.123614549636841
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'clamp float32 3D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'clampInput': {
+ 'data': [
+ -9.817828178405762, -6.024064064025879, -4.0725626945495605,
+ -6.575078010559082, -7.755683898925781, 9.524681091308594,
+ 3.7292487621307373, 6.481687068939209, -1.537420630455017,
+ -7.34310245513916, 7.880751132965088, -2.0564088821411133,
+ 6.3438639640808105, 5.525737762451172, 0.8433118462562561,
+ -8.199960708618164, -7.786487102508545, 9.280223846435547,
+ -2.3130595684051514, 9.549695014953613, 5.788925647735596,
+ 5.549378395080566, 7.409400463104248, -2.123614549636841
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'clamp',
+ 'arguments': [{'input': 'clampInput'}],
+ 'outputs': 'clampOutput'
+ }],
+ 'expectedOutputs': {
+ 'clampOutput': {
+ 'data': [
+ -9.817828178405762, -6.024064064025879, -4.0725626945495605,
+ -6.575078010559082, -7.755683898925781, 9.524681091308594,
+ 3.7292487621307373, 6.481687068939209, -1.537420630455017,
+ -7.34310245513916, 7.880751132965088, -2.0564088821411133,
+ 6.3438639640808105, 5.525737762451172, 0.8433118462562561,
+ -8.199960708618164, -7.786487102508545, 9.280223846435547,
+ -2.3130595684051514, 9.549695014953613, 5.788925647735596,
+ 5.549378395080566, 7.409400463104248, -2.123614549636841
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'clamp float32 4D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'clampInput': {
+ 'data': [
+ -9.817828178405762, -6.024064064025879, -4.0725626945495605,
+ -6.575078010559082, -7.755683898925781, 9.524681091308594,
+ 3.7292487621307373, 6.481687068939209, -1.537420630455017,
+ -7.34310245513916, 7.880751132965088, -2.0564088821411133,
+ 6.3438639640808105, 5.525737762451172, 0.8433118462562561,
+ -8.199960708618164, -7.786487102508545, 9.280223846435547,
+ -2.3130595684051514, 9.549695014953613, 5.788925647735596,
+ 5.549378395080566, 7.409400463104248, -2.123614549636841
+ ],
+ 'descriptor': {'dimensions': [3, 2, 2, 2], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'clamp',
+ 'arguments': [{'input': 'clampInput'}],
+ 'outputs': 'clampOutput'
+ }],
+ 'expectedOutputs': {
+ 'clampOutput': {
+ 'data': [
+ -9.817828178405762, -6.024064064025879, -4.0725626945495605,
+ -6.575078010559082, -7.755683898925781, 9.524681091308594,
+ 3.7292487621307373, 6.481687068939209, -1.537420630455017,
+ -7.34310245513916, 7.880751132965088, -2.0564088821411133,
+ 6.3438639640808105, 5.525737762451172, 0.8433118462562561,
+ -8.199960708618164, -7.786487102508545, 9.280223846435547,
+ -2.3130595684051514, 9.549695014953613, 5.788925647735596,
+ 5.549378395080566, 7.409400463104248, -2.123614549636841
+ ],
+ 'descriptor': {'dimensions': [3, 2, 2, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'clamp float32 5D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'clampInput': {
+ 'data': [
+ -9.817828178405762, -6.024064064025879, -4.0725626945495605,
+ -6.575078010559082, -7.755683898925781, 9.524681091308594,
+ 3.7292487621307373, 6.481687068939209, -1.537420630455017,
+ -7.34310245513916, 7.880751132965088, -2.0564088821411133,
+ 6.3438639640808105, 5.525737762451172, 0.8433118462562561,
+ -8.199960708618164, -7.786487102508545, 9.280223846435547,
+ -2.3130595684051514, 9.549695014953613, 5.788925647735596,
+ 5.549378395080566, 7.409400463104248, -2.123614549636841
+ ],
+ 'descriptor': {'dimensions': [4, 1, 1, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'clamp',
+ 'arguments': [{'input': 'clampInput'}],
+ 'outputs': 'clampOutput'
+ }],
+ 'expectedOutputs': {
+ 'clampOutput': {
+ 'data': [
+ -9.817828178405762, -6.024064064025879, -4.0725626945495605,
+ -6.575078010559082, -7.755683898925781, 9.524681091308594,
+ 3.7292487621307373, 6.481687068939209, -1.537420630455017,
+ -7.34310245513916, 7.880751132965088, -2.0564088821411133,
+ 6.3438639640808105, 5.525737762451172, 0.8433118462562561,
+ -8.199960708618164, -7.786487102508545, 9.280223846435547,
+ -2.3130595684051514, 9.549695014953613, 5.788925647735596,
+ 5.549378395080566, 7.409400463104248, -2.123614549636841
+ ],
+ 'descriptor': {'dimensions': [4, 1, 1, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'clamp float32 4D tensor default options.maxValue and specified negative options.minValue',
+ 'graph': {
+ 'inputs': {
+ 'clampInput': {
+ 'data': [
+ -9.817828178405762, -6.024064064025879, -4.0725626945495605,
+ -6.575078010559082, -7.755683898925781, 9.524681091308594,
+ 3.7292487621307373, 6.481687068939209, -1.537420630455017,
+ -7.34310245513916, 7.880751132965088, -2.0564088821411133,
+ 6.3438639640808105, 5.525737762451172, 0.8433118462562561,
+ -8.199960708618164, -7.786487102508545, 9.280223846435547,
+ -2.3130595684051514, 9.549695014953613, 5.788925647735596,
+ 5.549378395080566, 7.409400463104248, -2.123614549636841
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'clamp',
+ 'arguments': [{'input': 'clampInput'}, {'options': {'minValue': -1}}],
+ 'outputs': 'clampOutput'
+ }],
+ 'expectedOutputs': {
+ 'clampOutput': {
+ 'data': [
+ -1,
+ -1,
+ -1,
+ -1,
+ -1,
+ 9.524681091308594,
+ 3.7292487621307373,
+ 6.481687068939209,
+ -1,
+ -1,
+ 7.880751132965088,
+ -1,
+ 6.3438639640808105,
+ 5.525737762451172,
+ 0.8433118462562561,
+ -1,
+ -1,
+ 9.280223846435547,
+ -1,
+ 9.549695014953613,
+ 5.788925647735596,
+ 5.549378395080566,
+ 7.409400463104248,
+ -1
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'clamp float32 3D tensor default options.maxValue and specified options.minValue=0.0',
+ 'graph': {
+ 'inputs': {
+ 'clampInput': {
+ 'data': [
+ -9.817828178405762, -6.024064064025879, -4.0725626945495605,
+ -6.575078010559082, -7.755683898925781, 9.524681091308594,
+ 3.7292487621307373, 6.481687068939209, -1.537420630455017,
+ -7.34310245513916, 7.880751132965088, -2.0564088821411133,
+ 6.3438639640808105, 5.525737762451172, 0.8433118462562561,
+ -8.199960708618164, -7.786487102508545, 9.280223846435547,
+ -2.3130595684051514, 9.549695014953613, 5.788925647735596,
+ 5.549378395080566, 7.409400463104248, -2.123614549636841
+ ],
+ 'descriptor': {'dimensions': [6, 2, 2], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'clamp',
+ 'arguments': [{'input': 'clampInput'}, {'options': {'minValue': 0}}],
+ 'outputs': 'clampOutput'
+ }],
+ 'expectedOutputs': {
+ 'clampOutput': {
+ 'data': [
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 9.524681091308594,
+ 3.7292487621307373,
+ 6.481687068939209,
+ 0,
+ 0,
+ 7.880751132965088,
+ 0,
+ 6.3438639640808105,
+ 5.525737762451172,
+ 0.8433118462562561,
+ 0,
+ 0,
+ 9.280223846435547,
+ 0,
+ 9.549695014953613,
+ 5.788925647735596,
+ 5.549378395080566,
+ 7.409400463104248,
+ 0
+ ],
+ 'descriptor': {'dimensions': [6, 2, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'clamp float32 2D tensor default options.maxValue and specified positive options.minValue',
+ 'graph': {
+ 'inputs': {
+ 'clampInput': {
+ 'data': [
+ -9.817828178405762, -6.024064064025879, -4.0725626945495605,
+ -6.575078010559082, -7.755683898925781, 9.524681091308594,
+ 3.7292487621307373, 6.481687068939209, -1.537420630455017,
+ -7.34310245513916, 7.880751132965088, -2.0564088821411133,
+ 6.3438639640808105, 5.525737762451172, 0.8433118462562561,
+ -8.199960708618164, -7.786487102508545, 9.280223846435547,
+ -2.3130595684051514, 9.549695014953613, 5.788925647735596,
+ 5.549378395080566, 7.409400463104248, -2.123614549636841
+ ],
+ 'descriptor': {'dimensions': [3, 8], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'clamp',
+ 'arguments': [{'input': 'clampInput'}, {'options': {'minValue': 1}}],
+ 'outputs': 'clampOutput'
+ }],
+ 'expectedOutputs': {
+ 'clampOutput': {
+ 'data': [
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 9.524681091308594,
+ 3.7292487621307373,
+ 6.481687068939209,
+ 1,
+ 1,
+ 7.880751132965088,
+ 1,
+ 6.3438639640808105,
+ 5.525737762451172,
+ 1,
+ 1,
+ 1,
+ 9.280223846435547,
+ 1,
+ 9.549695014953613,
+ 5.788925647735596,
+ 5.549378395080566,
+ 7.409400463104248,
+ 1
+ ],
+ 'descriptor': {'dimensions': [3, 8], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'clamp float32 5D tensor default options.minValue and specified negative options.maxValue',
+ 'graph': {
+ 'inputs': {
+ 'clampInput': {
+ 'data': [
+ -9.817828178405762, -6.024064064025879, -4.0725626945495605,
+ -6.575078010559082, -7.755683898925781, 9.524681091308594,
+ 3.7292487621307373, 6.481687068939209, -1.537420630455017,
+ -7.34310245513916, 7.880751132965088, -2.0564088821411133,
+ 6.3438639640808105, 5.525737762451172, 0.8433118462562561,
+ -8.199960708618164, -7.786487102508545, 9.280223846435547,
+ -2.3130595684051514, 9.549695014953613, 5.788925647735596,
+ 5.549378395080566, 7.409400463104248, -2.123614549636841
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'clamp',
+ 'arguments': [{'input': 'clampInput'}, {'options': {'maxValue': -2}}],
+ 'outputs': 'clampOutput'
+ }],
+ 'expectedOutputs': {
+ 'clampOutput': {
+ 'data': [
+ -9.817828178405762,
+ -6.024064064025879,
+ -4.0725626945495605,
+ -6.575078010559082,
+ -7.755683898925781,
+ -2,
+ -2,
+ -2,
+ -2,
+ -7.34310245513916,
+ -2,
+ -2.0564088821411133,
+ -2,
+ -2,
+ -2,
+ -8.199960708618164,
+ -7.786487102508545,
+ -2,
+ -2.3130595684051514,
+ -2,
+ -2,
+ -2,
+ -2,
+ -2.123614549636841
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'clamp float32 1D tensor default options.minValue and specified options.maxValue=0.0',
+ 'graph': {
+ 'inputs': {
+ 'clampInput': {
+ 'data': [
+ -9.817828178405762, -6.024064064025879, -4.0725626945495605,
+ -6.575078010559082, -7.755683898925781, 9.524681091308594,
+ 3.7292487621307373, 6.481687068939209, -1.537420630455017,
+ -7.34310245513916, 7.880751132965088, -2.0564088821411133,
+ 6.3438639640808105, 5.525737762451172, 0.8433118462562561,
+ -8.199960708618164, -7.786487102508545, 9.280223846435547,
+ -2.3130595684051514, 9.549695014953613, 5.788925647735596,
+ 5.549378395080566, 7.409400463104248, -2.123614549636841
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'clamp',
+ 'arguments': [{'input': 'clampInput'}, {'options': {'maxValue': 0}}],
+ 'outputs': 'clampOutput'
+ }],
+ 'expectedOutputs': {
+ 'clampOutput': {
+ 'data': [
+ -9.817828178405762,
+ -6.024064064025879,
+ -4.0725626945495605,
+ -6.575078010559082,
+ -7.755683898925781,
+ 0,
+ 0,
+ 0,
+ -1.537420630455017,
+ -7.34310245513916,
+ 0,
+ -2.0564088821411133,
+ 0,
+ 0,
+ 0,
+ -8.199960708618164,
+ -7.786487102508545,
+ 0,
+ -2.3130595684051514,
+ 0,
+ 0,
+ 0,
+ 0,
+ -2.123614549636841
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'clamp float32 3D tensor default options.minValue and specified positive options.maxValue',
+ 'graph': {
+ 'inputs': {
+ 'clampInput': {
+ 'data': [
+ -9.817828178405762, -6.024064064025879, -4.0725626945495605,
+ -6.575078010559082, -7.755683898925781, 9.524681091308594,
+ 3.7292487621307373, 6.481687068939209, -1.537420630455017,
+ -7.34310245513916, 7.880751132965088, -2.0564088821411133,
+ 6.3438639640808105, 5.525737762451172, 0.8433118462562561,
+ -8.199960708618164, -7.786487102508545, 9.280223846435547,
+ -2.3130595684051514, 9.549695014953613, 5.788925647735596,
+ 5.549378395080566, 7.409400463104248, -2.123614549636841
+ ],
+ 'descriptor': {'dimensions': [3, 4, 2], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'clamp',
+ 'arguments': [{'input': 'clampInput'}, {'options': {'maxValue': 3}}],
+ 'outputs': 'clampOutput'
+ }],
+ 'expectedOutputs': {
+ 'clampOutput': {
+ 'data': [
+ -9.817828178405762,
+ -6.024064064025879,
+ -4.0725626945495605,
+ -6.575078010559082,
+ -7.755683898925781,
+ 3,
+ 3,
+ 3,
+ -1.537420630455017,
+ -7.34310245513916,
+ 3,
+ -2.0564088821411133,
+ 3,
+ 3,
+ 0.8433118462562561,
+ -8.199960708618164,
+ -7.786487102508545,
+ 3,
+ -2.3130595684051514,
+ 3,
+ 3,
+ 3,
+ 3,
+ -2.123614549636841
+ ],
+ 'descriptor': {'dimensions': [3, 4, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'clamp float32 5D tensor specified both negative options.minValue and options.maxValue',
+ 'graph': {
+ 'inputs': {
+ 'clampInput': {
+ 'data': [
+ -9.817828178405762, -6.024064064025879, -4.0725626945495605,
+ -6.575078010559082, -7.755683898925781, 9.524681091308594,
+ 3.7292487621307373, 6.481687068939209, -1.537420630455017,
+ -7.34310245513916, 7.880751132965088, -2.0564088821411133,
+ 6.3438639640808105, 5.525737762451172, 0.8433118462562561,
+ -8.199960708618164, -7.786487102508545, 9.280223846435547,
+ -2.3130595684051514, 9.549695014953613, 5.788925647735596,
+ 5.549378395080566, 7.409400463104248, -2.123614549636841
+ ],
+ 'descriptor': {'dimensions': [3, 2, 1, 1, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'clamp',
+ 'arguments': [
+ {'input': 'clampInput'}, {'options': {'minValue': -8, 'maxValue': -1}}
+ ],
+ 'outputs': 'clampOutput'
+ }],
+ 'expectedOutputs': {
+ 'clampOutput': {
+ 'data': [
+ -8,
+ -6.024064064025879,
+ -4.0725626945495605,
+ -6.575078010559082,
+ -7.755683898925781,
+ -1,
+ -1,
+ -1,
+ -1.537420630455017,
+ -7.34310245513916,
+ -1,
+ -2.0564088821411133,
+ -1,
+ -1,
+ -1,
+ -8,
+ -7.786487102508545,
+ -1,
+ -2.3130595684051514,
+ -1,
+ -1,
+ -1,
+ -1,
+ -2.123614549636841
+ ],
+ 'descriptor': {'dimensions': [3, 2, 1, 1, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'clamp float32 4D tensor specified negative options.minValue and options.maxValue=0.0',
+ 'graph': {
+ 'inputs': {
+ 'clampInput': {
+ 'data': [
+ -9.817828178405762, -6.024064064025879, -4.0725626945495605,
+ -6.575078010559082, -7.755683898925781, 9.524681091308594,
+ 3.7292487621307373, 6.481687068939209, -1.537420630455017,
+ -7.34310245513916, 7.880751132965088, -2.0564088821411133,
+ 6.3438639640808105, 5.525737762451172, 0.8433118462562561,
+ -8.199960708618164, -7.786487102508545, 9.280223846435547,
+ -2.3130595684051514, 9.549695014953613, 5.788925647735596,
+ 5.549378395080566, 7.409400463104248, -2.123614549636841
+ ],
+ 'descriptor': {'dimensions': [1, 4, 3, 2], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'clamp',
+ 'arguments': [
+ {'input': 'clampInput'}, {'options': {'minValue': -6, 'maxValue': 0}}
+ ],
+ 'outputs': 'clampOutput'
+ }],
+ 'expectedOutputs': {
+ 'clampOutput': {
+ 'data': [
+ -6,
+ -6,
+ -4.0725626945495605,
+ -6,
+ -6,
+ 0,
+ 0,
+ 0,
+ -1.537420630455017,
+ -6,
+ 0,
+ -2.0564088821411133,
+ 0,
+ 0,
+ 0,
+ -6,
+ -6,
+ 0,
+ -2.3130595684051514,
+ 0,
+ 0,
+ 0,
+ 0,
+ -2.123614549636841
+ ],
+ 'descriptor': {'dimensions': [1, 4, 3, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'clamp float32 3D tensor specified negative options.minValue and positive options.maxValue',
+ 'graph': {
+ 'inputs': {
+ 'clampInput': {
+ 'data': [
+ -9.817828178405762, -6.024064064025879, -4.0725626945495605,
+ -6.575078010559082, -7.755683898925781, 9.524681091308594,
+ 3.7292487621307373, 6.481687068939209, -1.537420630455017,
+ -7.34310245513916, 7.880751132965088, -2.0564088821411133,
+ 6.3438639640808105, 5.525737762451172, 0.8433118462562561,
+ -8.199960708618164, -7.786487102508545, 9.280223846435547,
+ -2.3130595684051514, 9.549695014953613, 5.788925647735596,
+ 5.549378395080566, 7.409400463104248, -2.123614549636841
+ ],
+ 'descriptor': {'dimensions': [2, 6, 2], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'clamp',
+ 'arguments': [
+ {'input': 'clampInput'}, {'options': {'minValue': -3, 'maxValue': 4}}
+ ],
+ 'outputs': 'clampOutput'
+ }],
+ 'expectedOutputs': {
+ 'clampOutput': {
+ 'data': [
+ -3,
+ -3,
+ -3,
+ -3,
+ -3,
+ 4,
+ 3.7292487621307373,
+ 4,
+ -1.537420630455017,
+ -3,
+ 4,
+ -2.0564088821411133,
+ 4,
+ 4,
+ 0.8433118462562561,
+ -3,
+ -3,
+ 4,
+ -2.3130595684051514,
+ 4,
+ 4,
+ 4,
+ 4,
+ -2.123614549636841
+ ],
+ 'descriptor': {'dimensions': [2, 6, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'clamp float32 2D tensor specified options.minValue=0.0 and positive options.maxValue',
+ 'graph': {
+ 'inputs': {
+ 'clampInput': {
+ 'data': [
+ -9.817828178405762, -6.024064064025879, -4.0725626945495605,
+ -6.575078010559082, -7.755683898925781, 9.524681091308594,
+ 3.7292487621307373, 6.481687068939209, -1.537420630455017,
+ -7.34310245513916, 7.880751132965088, -2.0564088821411133,
+ 6.3438639640808105, 5.525737762451172, 0.8433118462562561,
+ -8.199960708618164, -7.786487102508545, 9.280223846435547,
+ -2.3130595684051514, 9.549695014953613, 5.788925647735596,
+ 5.549378395080566, 7.409400463104248, -2.123614549636841
+ ],
+ 'descriptor': {'dimensions': [6, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'clamp',
+ 'arguments': [
+ {'input': 'clampInput'}, {'options': {'minValue': 0, 'maxValue': 6}}
+ ],
+ 'outputs': 'clampOutput'
+ }],
+ 'expectedOutputs': {
+ 'clampOutput': {
+ 'data': [
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 6,
+ 3.7292487621307373,
+ 6,
+ 0,
+ 0,
+ 6,
+ 0,
+ 6,
+ 5.525737762451172,
+ 0.8433118462562561,
+ 0,
+ 0,
+ 6,
+ 0,
+ 6,
+ 5.788925647735596,
+ 5.549378395080566,
+ 6,
+ 0
+ ],
+ 'descriptor': {'dimensions': [6, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'clamp float32 1D tensor specified both positive options.minValue and options.maxValue',
+ 'graph': {
+ 'inputs': {
+ 'clampInput': {
+ 'data': [
+ -9.817828178405762, -6.024064064025879, -4.0725626945495605,
+ -6.575078010559082, -7.755683898925781, 9.524681091308594,
+ 3.7292487621307373, 6.481687068939209, -1.537420630455017,
+ -7.34310245513916, 7.880751132965088, -2.0564088821411133,
+ 6.3438639640808105, 5.525737762451172, 0.8433118462562561,
+ -8.199960708618164, -7.786487102508545, 9.280223846435547,
+ -2.3130595684051514, 9.549695014953613, 5.788925647735596,
+ 5.549378395080566, 7.409400463104248, -2.123614549636841
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'clamp',
+ 'arguments': [
+ {'input': 'clampInput'}, {'options': {'minValue': 2, 'maxValue': 7}}
+ ],
+ 'outputs': 'clampOutput'
+ }],
+ 'expectedOutputs': {
+ 'clampOutput': {
+ 'data': [
+ 2,
+ 2,
+ 2,
+ 2,
+ 2,
+ 7,
+ 3.7292487621307373,
+ 6.481687068939209,
+ 2,
+ 2,
+ 7,
+ 2,
+ 6.3438639640808105,
+ 5.525737762451172,
+ 2,
+ 2,
+ 2,
+ 7,
+ 2,
+ 7,
+ 5.788925647735596,
+ 5.549378395080566,
+ 7,
+ 2
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ clampTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getClampPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/compute-arraybufferview-with-bigger-arraybuffer.https.any.js b/tests/wpt/tests/webnn/conformance_tests/compute-arraybufferview-with-bigger-arraybuffer.https.any.js
index 1380b604dac..e1e647ee50c 100644
--- a/tests/wpt/tests/webnn/conformance_tests/compute-arraybufferview-with-bigger-arraybuffer.https.any.js
+++ b/tests/wpt/tests/webnn/conformance_tests/compute-arraybufferview-with-bigger-arraybuffer.https.any.js
@@ -15,21 +15,18 @@ if (navigator.ml) {
const contextOptions = kContextOptionsForVariant[variant];
let context;
- let builder;
promise_setup(async () => {
- let supported = false;
try {
context = await navigator.ml.createContext(contextOptions);
- supported = true;
} catch (e) {
+ throw new AssertionError(
+ `Unable to create context for ${variant} variant. ${e}`);
}
- assert_implements(
- supported, `Unable to create context for ${variant} variant`);
- builder = new MLGraphBuilder(context);
});
promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
const a = builder.input('a', {dataType: 'float32', dimensions: [2]});
const b = builder.relu(a);
const graph = await builder.build({b});
@@ -45,6 +42,7 @@ if (navigator.ml) {
}, 'Test compute() working for input ArrayBufferView created from bigger ArrayBuffer');
promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
const a = builder.input('a', {dataType: 'float32', dimensions: [2]});
const b = builder.relu(a);
const graph = await builder.build({b});
diff --git a/tests/wpt/tests/webnn/conformance_tests/concat.https.any.js b/tests/wpt/tests/webnn/conformance_tests/concat.https.any.js
index 3898ee7d6d8..6beb089e84e 100644
--- a/tests/wpt/tests/webnn/conformance_tests/concat.https.any.js
+++ b/tests/wpt/tests/webnn/conformance_tests/concat.https.any.js
@@ -8,6 +8,2432 @@
'use strict';
-// https://webmachinelearning.github.io/webnn/#api-mlgraphbuilder-concat
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-concat
+// Concatenates the input tensors along a given axis.
+//
+// MLOperand concat(
+// sequence<MLOperand> inputs, [EnforceRange] unsigned long axis);
-runWebNNConformanceTests('concat', buildConcat);
+
+const getConcatPrecisionTolerance = (graphResources) => {
+ const toleranceValueDict = {float32: 0, float16: 0};
+ const expectedDataType =
+ getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs);
+ return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]};
+};
+
+const buildGraphAndComputeWithConcat =
+ async (context, builder, graphResources) => {
+ const graphInputs = graphResources.inputs;
+ const operator = graphResources.operators[0];
+
+ const inputOperands = [];
+ const inputNameArray =
+ operator.arguments[0][Object.keys(operator.arguments[0])[0]];
+ for (const inputName of inputNameArray) {
+ const operand =
+ createOperand(context, builder, inputName, graphInputs[inputName]);
+ inputOperands.push(operand);
+ }
+
+ let outputOperand = builder[operator.name](
+ inputOperands,
+ operator.arguments[1][Object.keys(operator.arguments[1])[0]]);
+ const outputOperandName = Object.keys(graphResources.expectedOutputs)[0];
+ const expectedDescriptor =
+ graphResources.expectedOutputs[outputOperandName].descriptor;
+ if (!context.opSupportLimits().output.dataTypes.includes(
+ expectedDescriptor.dataType)) {
+ const compatibleType = findCompatibleType(
+ expectedDescriptor.dataType,
+ context.opSupportLimits().output.dataTypes);
+ outputOperand = builder.cast(outputOperand, compatibleType);
+ expectedDescriptor.castedType = compatibleType;
+ }
+
+ assertDescriptorsEquals(outputOperand, expectedDescriptor);
+
+ const namedOutputOperand = {};
+ namedOutputOperand[outputOperandName] = outputOperand;
+
+ // Compile the constructed graph.
+ const graph = await builder.build(namedOutputOperand);
+
+ const inputs = {};
+ prepareInputsForGraph(inputs, graphInputs);
+
+ const outputs = {};
+ prepareOutputsForGraph(outputs, graphResources.expectedOutputs);
+
+ // Execute the compiled graph.
+ const result = await context.compute(graph, inputs, outputs);
+ return result;
+};
+
+const concatTests = [
+ {
+ 'name': 'concat two float32 1D constant tensors of same shape along axis 0',
+ 'graph': {
+ 'inputs': {
+ 'concatInput1': {
+ 'data': [
+ -0.3944413363933563, 0.861982524394989, 0.337996244430542,
+ -0.990639865398407, 0.576785683631897, 0.32276400923728943,
+ -0.44735023379325867, 0.11028251051902771, -0.5945112705230713,
+ -0.402848482131958, -0.9531654119491577, -0.6731740236282349
+ ],
+ 'descriptor': {'dimensions': [12], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'concatInput2': {
+ 'data': [
+ 0.49189892411231995, -0.15864109992980957, -0.3418811559677124,
+ -0.9158143401145935, -0.7206121683120728, -0.7993468642234802,
+ 0.6653800010681152, 0.03886038810014725, 0.5182055234909058,
+ -0.8742017149925232, -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [12], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'concat',
+ 'arguments':
+ [{'inputs': ['concatInput1', 'concatInput2']}, {'axis': 0}],
+ 'outputs': 'concatOutput'
+ }],
+ 'expectedOutputs': {
+ 'concatOutput': {
+ 'data': [
+ -0.3944413363933563, 0.861982524394989, 0.337996244430542,
+ -0.990639865398407, 0.576785683631897, 0.32276400923728943,
+ -0.44735023379325867, 0.11028251051902771, -0.5945112705230713,
+ -0.402848482131958, -0.9531654119491577, -0.6731740236282349,
+ 0.49189892411231995, -0.15864109992980957, -0.3418811559677124,
+ -0.9158143401145935, -0.7206121683120728, -0.7993468642234802,
+ 0.6653800010681152, 0.03886038810014725, 0.5182055234909058,
+ -0.8742017149925232, -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'concat two float32 1D tensors of same shape along axis 0',
+ 'graph': {
+ 'inputs': {
+ 'concatInput1': {
+ 'data': [
+ -0.3944413363933563, 0.861982524394989, 0.337996244430542,
+ -0.990639865398407, 0.576785683631897, 0.32276400923728943,
+ -0.44735023379325867, 0.11028251051902771, -0.5945112705230713,
+ -0.402848482131958, -0.9531654119491577, -0.6731740236282349
+ ],
+ 'descriptor': {'dimensions': [12], 'dataType': 'float32'}
+ },
+ 'concatInput2': {
+ 'data': [
+ 0.49189892411231995, -0.15864109992980957, -0.3418811559677124,
+ -0.9158143401145935, -0.7206121683120728, -0.7993468642234802,
+ 0.6653800010681152, 0.03886038810014725, 0.5182055234909058,
+ -0.8742017149925232, -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [12], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'concat',
+ 'arguments':
+ [{'inputs': ['concatInput1', 'concatInput2']}, {'axis': 0}],
+ 'outputs': 'concatOutput'
+ }],
+ 'expectedOutputs': {
+ 'concatOutput': {
+ 'data': [
+ -0.3944413363933563, 0.861982524394989, 0.337996244430542,
+ -0.990639865398407, 0.576785683631897, 0.32276400923728943,
+ -0.44735023379325867, 0.11028251051902771, -0.5945112705230713,
+ -0.402848482131958, -0.9531654119491577, -0.6731740236282349,
+ 0.49189892411231995, -0.15864109992980957, -0.3418811559677124,
+ -0.9158143401145935, -0.7206121683120728, -0.7993468642234802,
+ 0.6653800010681152, 0.03886038810014725, 0.5182055234909058,
+ -0.8742017149925232, -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'concat two float16 1D tensors of same shape along axis 0',
+ 'graph': {
+ 'inputs': {
+ 'concatInput1': {
+ 'data': [
+ -0.3944413363933563, 0.861982524394989, 0.337996244430542,
+ -0.990639865398407, 0.576785683631897, 0.32276400923728943,
+ -0.44735023379325867, 0.11028251051902771, -0.5945112705230713,
+ -0.402848482131958, -0.9531654119491577, -0.6731740236282349
+ ],
+ 'descriptor': {'dimensions': [12], 'dataType': 'float16'}
+ },
+ 'concatInput2': {
+ 'data': [
+ 0.49189892411231995, -0.15864109992980957, -0.3418811559677124,
+ -0.9158143401145935, -0.7206121683120728, -0.7993468642234802,
+ 0.6653800010681152, 0.03886038810014725, 0.5182055234909058,
+ -0.8742017149925232, -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [12], 'dataType': 'float16'}
+ }
+ },
+ 'operators': [{
+ 'name': 'concat',
+ 'arguments':
+ [{'inputs': ['concatInput1', 'concatInput2']}, {'axis': 0}],
+ 'outputs': 'concatOutput'
+ }],
+ 'expectedOutputs': {
+ 'concatOutput': {
+ 'data': [
+ -0.39453125, 0.86181640625, 0.337890625, -0.99072265625,
+ 0.57666015625, 0.32275390625, -0.447265625, 0.11029052734375,
+ -0.5947265625, -0.40283203125, -0.953125, -0.67333984375,
+ 0.491943359375, -0.15869140625, -0.341796875, -0.916015625,
+ -0.720703125, -0.79931640625, 0.66552734375, 0.038848876953125,
+ 0.51806640625, -0.8740234375, -0.47900390625, 0.12115478515625
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float16'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'concat three float32 1D tensors of different 1st dimension along axis 0',
+ 'graph': {
+ 'inputs': {
+ 'concatInput1': {
+ 'data': [
+ -0.3944413363933563, 0.861982524394989, 0.337996244430542,
+ -0.990639865398407
+ ],
+ 'descriptor': {'dimensions': [4], 'dataType': 'float32'}
+ },
+ 'concatInput2': {
+ 'data': [
+ 0.576785683631897, 0.32276400923728943, -0.44735023379325867,
+ 0.11028251051902771, -0.5945112705230713, -0.402848482131958,
+ -0.9531654119491577, -0.6731740236282349
+ ],
+ 'descriptor': {'dimensions': [8], 'dataType': 'float32'}
+ },
+ 'concatInput3': {
+ 'data': [
+ 0.49189892411231995, -0.15864109992980957, -0.3418811559677124,
+ -0.9158143401145935, -0.7206121683120728, -0.7993468642234802,
+ 0.6653800010681152, 0.03886038810014725, 0.5182055234909058,
+ -0.8742017149925232, -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [12], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'concat',
+ 'arguments': [
+ {'inputs': ['concatInput1', 'concatInput2', 'concatInput3']},
+ {'axis': 0}
+ ],
+ 'outputs': 'concatOutput'
+ }],
+ 'expectedOutputs': {
+ 'concatOutput': {
+ 'data': [
+ -0.3944413363933563, 0.861982524394989, 0.337996244430542,
+ -0.990639865398407, 0.576785683631897, 0.32276400923728943,
+ -0.44735023379325867, 0.11028251051902771, -0.5945112705230713,
+ -0.402848482131958, -0.9531654119491577, -0.6731740236282349,
+ 0.49189892411231995, -0.15864109992980957, -0.3418811559677124,
+ -0.9158143401145935, -0.7206121683120728, -0.7993468642234802,
+ 0.6653800010681152, 0.03886038810014725, 0.5182055234909058,
+ -0.8742017149925232, -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'concat three float16 1D tensors of different 1st dimension along axis 0',
+ 'graph': {
+ 'inputs': {
+ 'concatInput1': {
+ 'data': [
+ -0.3944413363933563, 0.861982524394989, 0.337996244430542,
+ -0.990639865398407
+ ],
+ 'descriptor': {'dimensions': [4], 'dataType': 'float16'}
+ },
+ 'concatInput2': {
+ 'data': [
+ 0.576785683631897, 0.32276400923728943, -0.44735023379325867,
+ 0.11028251051902771, -0.5945112705230713, -0.402848482131958,
+ -0.9531654119491577, -0.6731740236282349
+ ],
+ 'descriptor': {'dimensions': [8], 'dataType': 'float16'}
+ },
+ 'concatInput3': {
+ 'data': [
+ 0.49189892411231995, -0.15864109992980957, -0.3418811559677124,
+ -0.9158143401145935, -0.7206121683120728, -0.7993468642234802,
+ 0.6653800010681152, 0.03886038810014725, 0.5182055234909058,
+ -0.8742017149925232, -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [12], 'dataType': 'float16'}
+ }
+ },
+ 'operators': [{
+ 'name': 'concat',
+ 'arguments': [
+ {'inputs': ['concatInput1', 'concatInput2', 'concatInput3']},
+ {'axis': 0}
+ ],
+ 'outputs': 'concatOutput'
+ }],
+ 'expectedOutputs': {
+ 'concatOutput': {
+ 'data': [
+ -0.39453125, 0.86181640625, 0.337890625, -0.99072265625,
+ 0.57666015625, 0.32275390625, -0.447265625, 0.11029052734375,
+ -0.5947265625, -0.40283203125, -0.953125, -0.67333984375,
+ 0.491943359375, -0.15869140625, -0.341796875, -0.916015625,
+ -0.720703125, -0.79931640625, 0.66552734375, 0.038848876953125,
+ 0.51806640625, -0.8740234375, -0.47900390625, 0.12115478515625
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float16'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'concat four float32 1D tensors of same 1st dimension along axis 0',
+ 'graph': {
+ 'inputs': {
+ 'concatInput1': {
+ 'data': [
+ -0.3944413363933563, 0.861982524394989, 0.337996244430542,
+ -0.990639865398407, 0.576785683631897, 0.32276400923728943
+ ],
+ 'descriptor': {'dimensions': [6], 'dataType': 'float32'}
+ },
+ 'concatInput2': {
+ 'data': [
+ -0.44735023379325867, 0.11028251051902771, -0.5945112705230713,
+ -0.402848482131958, -0.9531654119491577, -0.6731740236282349
+ ],
+ 'descriptor': {'dimensions': [6], 'dataType': 'float32'}
+ },
+ 'concatInput3': {
+ 'data': [
+ 0.49189892411231995, -0.15864109992980957, -0.3418811559677124,
+ -0.9158143401145935, -0.7206121683120728, -0.7993468642234802
+ ],
+ 'descriptor': {'dimensions': [6], 'dataType': 'float32'}
+ },
+ 'concatInput4': {
+ 'data': [
+ 0.6653800010681152, 0.03886038810014725, 0.5182055234909058,
+ -0.8742017149925232, -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'concat',
+ 'arguments': [
+ {
+ 'inputs':
+ ['concatInput1', 'concatInput2', 'concatInput3', 'concatInput4']
+ },
+ {'axis': 0}
+ ],
+ 'outputs': 'concatOutput'
+ }],
+ 'expectedOutputs': {
+ 'concatOutput': {
+ 'data': [
+ -0.3944413363933563, 0.861982524394989, 0.337996244430542,
+ -0.990639865398407, 0.576785683631897, 0.32276400923728943,
+ -0.44735023379325867, 0.11028251051902771, -0.5945112705230713,
+ -0.402848482131958, -0.9531654119491577, -0.6731740236282349,
+ 0.49189892411231995, -0.15864109992980957, -0.3418811559677124,
+ -0.9158143401145935, -0.7206121683120728, -0.7993468642234802,
+ 0.6653800010681152, 0.03886038810014725, 0.5182055234909058,
+ -0.8742017149925232, -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'concat four float16 1D tensors of same 1st dimension along axis 0',
+ 'graph': {
+ 'inputs': {
+ 'concatInput1': {
+ 'data': [
+ -0.3944413363933563, 0.861982524394989, 0.337996244430542,
+ -0.990639865398407, 0.576785683631897, 0.32276400923728943
+ ],
+ 'descriptor': {'dimensions': [6], 'dataType': 'float16'}
+ },
+ 'concatInput2': {
+ 'data': [
+ -0.44735023379325867, 0.11028251051902771, -0.5945112705230713,
+ -0.402848482131958, -0.9531654119491577, -0.6731740236282349
+ ],
+ 'descriptor': {'dimensions': [6], 'dataType': 'float16'}
+ },
+ 'concatInput3': {
+ 'data': [
+ 0.49189892411231995, -0.15864109992980957, -0.3418811559677124,
+ -0.9158143401145935, -0.7206121683120728, -0.7993468642234802
+ ],
+ 'descriptor': {'dimensions': [6], 'dataType': 'float16'}
+ },
+ 'concatInput4': {
+ 'data': [
+ 0.6653800010681152, 0.03886038810014725, 0.5182055234909058,
+ -0.8742017149925232, -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [6], 'dataType': 'float16'}
+ }
+ },
+ 'operators': [{
+ 'name': 'concat',
+ 'arguments': [
+ {
+ 'inputs':
+ ['concatInput1', 'concatInput2', 'concatInput3', 'concatInput4']
+ },
+ {'axis': 0}
+ ],
+ 'outputs': 'concatOutput'
+ }],
+ 'expectedOutputs': {
+ 'concatOutput': {
+ 'data': [
+ -0.39453125, 0.86181640625, 0.337890625, -0.99072265625,
+ 0.57666015625, 0.32275390625, -0.447265625, 0.11029052734375,
+ -0.5947265625, -0.40283203125, -0.953125, -0.67333984375,
+ 0.491943359375, -0.15869140625, -0.341796875, -0.916015625,
+ -0.720703125, -0.79931640625, 0.66552734375, 0.038848876953125,
+ 0.51806640625, -0.8740234375, -0.47900390625, 0.12115478515625
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float16'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'concat four float32 1D tensors of different 1st dimension along axis 0',
+ 'graph': {
+ 'inputs': {
+ 'concatInput1': {
+ 'data': [-0.3944413363933563, 0.861982524394989],
+ 'descriptor': {'dimensions': [2], 'dataType': 'float32'}
+ },
+ 'concatInput2': {
+ 'data': [
+ 0.337996244430542, -0.990639865398407, 0.576785683631897,
+ 0.32276400923728943
+ ],
+ 'descriptor': {'dimensions': [4], 'dataType': 'float32'}
+ },
+ 'concatInput3': {
+ 'data': [
+ -0.44735023379325867, 0.11028251051902771, -0.5945112705230713,
+ -0.402848482131958, -0.9531654119491577, -0.6731740236282349,
+ 0.49189892411231995, -0.15864109992980957
+ ],
+ 'descriptor': {'dimensions': [8], 'dataType': 'float32'}
+ },
+ 'concatInput4': {
+ 'data': [
+ -0.3418811559677124, -0.9158143401145935, -0.7206121683120728,
+ -0.7993468642234802, 0.6653800010681152, 0.03886038810014725,
+ 0.5182055234909058, -0.8742017149925232, -0.4790218770503998,
+ 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [10], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'concat',
+ 'arguments': [
+ {
+ 'inputs':
+ ['concatInput1', 'concatInput2', 'concatInput3', 'concatInput4']
+ },
+ {'axis': 0}
+ ],
+ 'outputs': 'concatOutput'
+ }],
+ 'expectedOutputs': {
+ 'concatOutput': {
+ 'data': [
+ -0.3944413363933563, 0.861982524394989, 0.337996244430542,
+ -0.990639865398407, 0.576785683631897, 0.32276400923728943,
+ -0.44735023379325867, 0.11028251051902771, -0.5945112705230713,
+ -0.402848482131958, -0.9531654119491577, -0.6731740236282349,
+ 0.49189892411231995, -0.15864109992980957, -0.3418811559677124,
+ -0.9158143401145935, -0.7206121683120728, -0.7993468642234802,
+ 0.6653800010681152, 0.03886038810014725, 0.5182055234909058,
+ -0.8742017149925232, -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'concat four float16 1D tensors of different 1st dimension along axis 0',
+ 'graph': {
+ 'inputs': {
+ 'concatInput1': {
+ 'data': [-0.3944413363933563, 0.861982524394989],
+ 'descriptor': {'dimensions': [2], 'dataType': 'float16'}
+ },
+ 'concatInput2': {
+ 'data': [
+ 0.337996244430542, -0.990639865398407, 0.576785683631897,
+ 0.32276400923728943
+ ],
+ 'descriptor': {'dimensions': [4], 'dataType': 'float16'}
+ },
+ 'concatInput3': {
+ 'data': [
+ -0.44735023379325867, 0.11028251051902771, -0.5945112705230713,
+ -0.402848482131958, -0.9531654119491577, -0.6731740236282349,
+ 0.49189892411231995, -0.15864109992980957
+ ],
+ 'descriptor': {'dimensions': [8], 'dataType': 'float16'}
+ },
+ 'concatInput4': {
+ 'data': [
+ -0.3418811559677124, -0.9158143401145935, -0.7206121683120728,
+ -0.7993468642234802, 0.6653800010681152, 0.03886038810014725,
+ 0.5182055234909058, -0.8742017149925232, -0.4790218770503998,
+ 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [10], 'dataType': 'float16'}
+ }
+ },
+ 'operators': [{
+ 'name': 'concat',
+ 'arguments': [
+ {
+ 'inputs':
+ ['concatInput1', 'concatInput2', 'concatInput3', 'concatInput4']
+ },
+ {'axis': 0}
+ ],
+ 'outputs': 'concatOutput'
+ }],
+ 'expectedOutputs': {
+ 'concatOutput': {
+ 'data': [
+ -0.39453125, 0.86181640625, 0.337890625, -0.99072265625,
+ 0.57666015625, 0.32275390625, -0.447265625, 0.11029052734375,
+ -0.5947265625, -0.40283203125, -0.953125, -0.67333984375,
+ 0.491943359375, -0.15869140625, -0.341796875, -0.916015625,
+ -0.720703125, -0.79931640625, 0.66552734375, 0.038848876953125,
+ 0.51806640625, -0.8740234375, -0.47900390625, 0.12115478515625
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float16'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'concat two float32 2D tensors of same shape along axis 0',
+ 'graph': {
+ 'inputs': {
+ 'concatInput1': {
+ 'data': [
+ -0.3944413363933563, 0.861982524394989, 0.337996244430542,
+ -0.990639865398407, 0.576785683631897, 0.32276400923728943,
+ -0.44735023379325867, 0.11028251051902771, -0.5945112705230713,
+ -0.402848482131958, -0.9531654119491577, -0.6731740236282349
+ ],
+ 'descriptor': {'dimensions': [2, 6], 'dataType': 'float32'}
+ },
+ 'concatInput2': {
+ 'data': [
+ 0.49189892411231995, -0.15864109992980957, -0.3418811559677124,
+ -0.9158143401145935, -0.7206121683120728, -0.7993468642234802,
+ 0.6653800010681152, 0.03886038810014725, 0.5182055234909058,
+ -0.8742017149925232, -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [2, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'concat',
+ 'arguments':
+ [{'inputs': ['concatInput1', 'concatInput2']}, {'axis': 0}],
+ 'outputs': 'concatOutput'
+ }],
+ 'expectedOutputs': {
+ 'concatOutput': {
+ 'data': [
+ -0.3944413363933563, 0.861982524394989, 0.337996244430542,
+ -0.990639865398407, 0.576785683631897, 0.32276400923728943,
+ -0.44735023379325867, 0.11028251051902771, -0.5945112705230713,
+ -0.402848482131958, -0.9531654119491577, -0.6731740236282349,
+ 0.49189892411231995, -0.15864109992980957, -0.3418811559677124,
+ -0.9158143401145935, -0.7206121683120728, -0.7993468642234802,
+ 0.6653800010681152, 0.03886038810014725, 0.5182055234909058,
+ -0.8742017149925232, -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'concat two float16 2D tensors of same shape along axis 0',
+ 'graph': {
+ 'inputs': {
+ 'concatInput1': {
+ 'data': [
+ -0.3944413363933563, 0.861982524394989, 0.337996244430542,
+ -0.990639865398407, 0.576785683631897, 0.32276400923728943,
+ -0.44735023379325867, 0.11028251051902771, -0.5945112705230713,
+ -0.402848482131958, -0.9531654119491577, -0.6731740236282349
+ ],
+ 'descriptor': {'dimensions': [2, 6], 'dataType': 'float16'}
+ },
+ 'concatInput2': {
+ 'data': [
+ 0.49189892411231995, -0.15864109992980957, -0.3418811559677124,
+ -0.9158143401145935, -0.7206121683120728, -0.7993468642234802,
+ 0.6653800010681152, 0.03886038810014725, 0.5182055234909058,
+ -0.8742017149925232, -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [2, 6], 'dataType': 'float16'}
+ }
+ },
+ 'operators': [{
+ 'name': 'concat',
+ 'arguments':
+ [{'inputs': ['concatInput1', 'concatInput2']}, {'axis': 0}],
+ 'outputs': 'concatOutput'
+ }],
+ 'expectedOutputs': {
+ 'concatOutput': {
+ 'data': [
+ -0.39453125, 0.86181640625, 0.337890625, -0.99072265625,
+ 0.57666015625, 0.32275390625, -0.447265625, 0.11029052734375,
+ -0.5947265625, -0.40283203125, -0.953125, -0.67333984375,
+ 0.491943359375, -0.15869140625, -0.341796875, -0.916015625,
+ -0.720703125, -0.79931640625, 0.66552734375, 0.038848876953125,
+ 0.51806640625, -0.8740234375, -0.47900390625, 0.12115478515625
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float16'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'concat two float32 2D tensors of same others dimensions except different 1st dimension along axis 0',
+ 'graph': {
+ 'inputs': {
+ 'concatInput1': {
+ 'data': [
+ -0.3944413363933563, 0.861982524394989, 0.337996244430542,
+ -0.990639865398407, 0.576785683631897, 0.32276400923728943
+ ],
+ 'descriptor': {'dimensions': [1, 6], 'dataType': 'float32'}
+ },
+ 'concatInput2': {
+ 'data': [
+ -0.44735023379325867, 0.11028251051902771, -0.5945112705230713,
+ -0.402848482131958, -0.9531654119491577, -0.6731740236282349,
+ 0.49189892411231995, -0.15864109992980957, -0.3418811559677124,
+ -0.9158143401145935, -0.7206121683120728, -0.7993468642234802,
+ 0.6653800010681152, 0.03886038810014725, 0.5182055234909058,
+ -0.8742017149925232, -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [3, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'concat',
+ 'arguments':
+ [{'inputs': ['concatInput1', 'concatInput2']}, {'axis': 0}],
+ 'outputs': 'concatOutput'
+ }],
+ 'expectedOutputs': {
+ 'concatOutput': {
+ 'data': [
+ -0.3944413363933563, 0.861982524394989, 0.337996244430542,
+ -0.990639865398407, 0.576785683631897, 0.32276400923728943,
+ -0.44735023379325867, 0.11028251051902771, -0.5945112705230713,
+ -0.402848482131958, -0.9531654119491577, -0.6731740236282349,
+ 0.49189892411231995, -0.15864109992980957, -0.3418811559677124,
+ -0.9158143401145935, -0.7206121683120728, -0.7993468642234802,
+ 0.6653800010681152, 0.03886038810014725, 0.5182055234909058,
+ -0.8742017149925232, -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'concat two float16 2D tensors of same others dimensions except different 1st dimension along axis 0',
+ 'graph': {
+ 'inputs': {
+ 'concatInput1': {
+ 'data': [
+ -0.3944413363933563, 0.861982524394989, 0.337996244430542,
+ -0.990639865398407, 0.576785683631897, 0.32276400923728943
+ ],
+ 'descriptor': {'dimensions': [1, 6], 'dataType': 'float16'}
+ },
+ 'concatInput2': {
+ 'data': [
+ -0.44735023379325867, 0.11028251051902771, -0.5945112705230713,
+ -0.402848482131958, -0.9531654119491577, -0.6731740236282349,
+ 0.49189892411231995, -0.15864109992980957, -0.3418811559677124,
+ -0.9158143401145935, -0.7206121683120728, -0.7993468642234802,
+ 0.6653800010681152, 0.03886038810014725, 0.5182055234909058,
+ -0.8742017149925232, -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [3, 6], 'dataType': 'float16'}
+ }
+ },
+ 'operators': [{
+ 'name': 'concat',
+ 'arguments':
+ [{'inputs': ['concatInput1', 'concatInput2']}, {'axis': 0}],
+ 'outputs': 'concatOutput'
+ }],
+ 'expectedOutputs': {
+ 'concatOutput': {
+ 'data': [
+ -0.39453125, 0.86181640625, 0.337890625, -0.99072265625,
+ 0.57666015625, 0.32275390625, -0.447265625, 0.11029052734375,
+ -0.5947265625, -0.40283203125, -0.953125, -0.67333984375,
+ 0.491943359375, -0.15869140625, -0.341796875, -0.916015625,
+ -0.720703125, -0.79931640625, 0.66552734375, 0.038848876953125,
+ 0.51806640625, -0.8740234375, -0.47900390625, 0.12115478515625
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float16'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'concat four float32 2D tensors of same shape along axis 0',
+ 'graph': {
+ 'inputs': {
+ 'concatInput1': {
+ 'data': [
+ -0.3944413363933563, 0.861982524394989, 0.337996244430542,
+ -0.990639865398407, 0.576785683631897, 0.32276400923728943
+ ],
+ 'descriptor': {'dimensions': [3, 2], 'dataType': 'float32'}
+ },
+ 'concatInput2': {
+ 'data': [
+ -0.44735023379325867, 0.11028251051902771, -0.5945112705230713,
+ -0.402848482131958, -0.9531654119491577, -0.6731740236282349
+ ],
+ 'descriptor': {'dimensions': [3, 2], 'dataType': 'float32'}
+ },
+ 'concatInput3': {
+ 'data': [
+ 0.49189892411231995, -0.15864109992980957, -0.3418811559677124,
+ -0.9158143401145935, -0.7206121683120728, -0.7993468642234802
+ ],
+ 'descriptor': {'dimensions': [3, 2], 'dataType': 'float32'}
+ },
+ 'concatInput4': {
+ 'data': [
+ 0.6653800010681152, 0.03886038810014725, 0.5182055234909058,
+ -0.8742017149925232, -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [3, 2], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'concat',
+ 'arguments': [
+ {
+ 'inputs':
+ ['concatInput1', 'concatInput2', 'concatInput3', 'concatInput4']
+ },
+ {'axis': 0}
+ ],
+ 'outputs': 'concatOutput'
+ }],
+ 'expectedOutputs': {
+ 'concatOutput': {
+ 'data': [
+ -0.3944413363933563, 0.861982524394989, 0.337996244430542,
+ -0.990639865398407, 0.576785683631897, 0.32276400923728943,
+ -0.44735023379325867, 0.11028251051902771, -0.5945112705230713,
+ -0.402848482131958, -0.9531654119491577, -0.6731740236282349,
+ 0.49189892411231995, -0.15864109992980957, -0.3418811559677124,
+ -0.9158143401145935, -0.7206121683120728, -0.7993468642234802,
+ 0.6653800010681152, 0.03886038810014725, 0.5182055234909058,
+ -0.8742017149925232, -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [12, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'concat four float16 2D tensors of same shape along axis 0',
+ 'graph': {
+ 'inputs': {
+ 'concatInput1': {
+ 'data': [
+ -0.3944413363933563, 0.861982524394989, 0.337996244430542,
+ -0.990639865398407, 0.576785683631897, 0.32276400923728943
+ ],
+ 'descriptor': {'dimensions': [3, 2], 'dataType': 'float16'}
+ },
+ 'concatInput2': {
+ 'data': [
+ -0.44735023379325867, 0.11028251051902771, -0.5945112705230713,
+ -0.402848482131958, -0.9531654119491577, -0.6731740236282349
+ ],
+ 'descriptor': {'dimensions': [3, 2], 'dataType': 'float16'}
+ },
+ 'concatInput3': {
+ 'data': [
+ 0.49189892411231995, -0.15864109992980957, -0.3418811559677124,
+ -0.9158143401145935, -0.7206121683120728, -0.7993468642234802
+ ],
+ 'descriptor': {'dimensions': [3, 2], 'dataType': 'float16'}
+ },
+ 'concatInput4': {
+ 'data': [
+ 0.6653800010681152, 0.03886038810014725, 0.5182055234909058,
+ -0.8742017149925232, -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [3, 2], 'dataType': 'float16'}
+ }
+ },
+ 'operators': [{
+ 'name': 'concat',
+ 'arguments': [
+ {
+ 'inputs':
+ ['concatInput1', 'concatInput2', 'concatInput3', 'concatInput4']
+ },
+ {'axis': 0}
+ ],
+ 'outputs': 'concatOutput'
+ }],
+ 'expectedOutputs': {
+ 'concatOutput': {
+ 'data': [
+ -0.39453125, 0.86181640625, 0.337890625, -0.99072265625,
+ 0.57666015625, 0.32275390625, -0.447265625, 0.11029052734375,
+ -0.5947265625, -0.40283203125, -0.953125, -0.67333984375,
+ 0.491943359375, -0.15869140625, -0.341796875, -0.916015625,
+ -0.720703125, -0.79931640625, 0.66552734375, 0.038848876953125,
+ 0.51806640625, -0.8740234375, -0.47900390625, 0.12115478515625
+ ],
+ 'descriptor': {'dimensions': [12, 2], 'dataType': 'float16'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'concat two float32 2D tensors of same others dimensions except different 2nd dimension along axis 1',
+ 'graph': {
+ 'inputs': {
+ 'concatInput1': {
+ 'data': [
+ -0.3944413363933563, 0.861982524394989, 0.337996244430542,
+ -0.990639865398407, 0.576785683631897, 0.32276400923728943,
+ -0.44735023379325867, 0.11028251051902771, -0.5945112705230713,
+ -0.402848482131958, -0.9531654119491577, -0.6731740236282349,
+ 0.49189892411231995, -0.15864109992980957, -0.3418811559677124,
+ -0.9158143401145935, -0.7206121683120728, -0.7993468642234802,
+ 0.6653800010681152, 0.03886038810014725
+ ],
+ 'descriptor': {'dimensions': [2, 10], 'dataType': 'float32'}
+ },
+ 'concatInput2': {
+ 'data': [
+ 0.5182055234909058, -0.8742017149925232, -0.4790218770503998,
+ 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [2, 2], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'concat',
+ 'arguments':
+ [{'inputs': ['concatInput1', 'concatInput2']}, {'axis': 1}],
+ 'outputs': 'concatOutput'
+ }],
+ 'expectedOutputs': {
+ 'concatOutput': {
+ 'data': [
+ -0.3944413363933563, 0.861982524394989, 0.337996244430542,
+ -0.990639865398407, 0.576785683631897, 0.32276400923728943,
+ -0.44735023379325867, 0.11028251051902771, -0.5945112705230713,
+ -0.402848482131958, 0.5182055234909058, -0.8742017149925232,
+ -0.9531654119491577, -0.6731740236282349, 0.49189892411231995,
+ -0.15864109992980957, -0.3418811559677124, -0.9158143401145935,
+ -0.7206121683120728, -0.7993468642234802, 0.6653800010681152,
+ 0.03886038810014725, -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [2, 12], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'concat two float16 2D tensors of same others dimensions except different 2nd dimension along axis 1',
+ 'graph': {
+ 'inputs': {
+ 'concatInput1': {
+ 'data': [
+ -0.3944413363933563, 0.861982524394989, 0.337996244430542,
+ -0.990639865398407, 0.576785683631897, 0.32276400923728943,
+ -0.44735023379325867, 0.11028251051902771, -0.5945112705230713,
+ -0.402848482131958, -0.9531654119491577, -0.6731740236282349,
+ 0.49189892411231995, -0.15864109992980957, -0.3418811559677124,
+ -0.9158143401145935, -0.7206121683120728, -0.7993468642234802,
+ 0.6653800010681152, 0.03886038810014725
+ ],
+ 'descriptor': {'dimensions': [2, 10], 'dataType': 'float16'}
+ },
+ 'concatInput2': {
+ 'data': [
+ 0.5182055234909058, -0.8742017149925232, -0.4790218770503998,
+ 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [2, 2], 'dataType': 'float16'}
+ }
+ },
+ 'operators': [{
+ 'name': 'concat',
+ 'arguments':
+ [{'inputs': ['concatInput1', 'concatInput2']}, {'axis': 1}],
+ 'outputs': 'concatOutput'
+ }],
+ 'expectedOutputs': {
+ 'concatOutput': {
+ 'data': [
+ -0.39453125, 0.86181640625, 0.337890625, -0.99072265625,
+ 0.57666015625, 0.32275390625, -0.447265625, 0.11029052734375,
+ -0.5947265625, -0.40283203125, 0.51806640625, -0.8740234375,
+ -0.953125, -0.67333984375, 0.491943359375, -0.15869140625,
+ -0.341796875, -0.916015625, -0.720703125, -0.79931640625,
+ 0.66552734375, 0.038848876953125, -0.47900390625, 0.12115478515625
+ ],
+ 'descriptor': {'dimensions': [2, 12], 'dataType': 'float16'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'concat three float32 2D tensors of same shape along axis 1',
+ 'graph': {
+ 'inputs': {
+ 'concatInput1': {
+ 'data': [
+ -0.3944413363933563, 0.861982524394989, 0.337996244430542,
+ -0.990639865398407, 0.576785683631897, 0.32276400923728943,
+ -0.44735023379325867, 0.11028251051902771
+ ],
+ 'descriptor': {'dimensions': [4, 2], 'dataType': 'float32'}
+ },
+ 'concatInput2': {
+ 'data': [
+ -0.5945112705230713, -0.402848482131958, -0.9531654119491577,
+ -0.6731740236282349, 0.49189892411231995, -0.15864109992980957,
+ -0.3418811559677124, -0.9158143401145935
+ ],
+ 'descriptor': {'dimensions': [4, 2], 'dataType': 'float32'}
+ },
+ 'concatInput3': {
+ 'data': [
+ -0.7206121683120728, -0.7993468642234802, 0.6653800010681152,
+ 0.03886038810014725, 0.5182055234909058, -0.8742017149925232,
+ -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [4, 2], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'concat',
+ 'arguments': [
+ {'inputs': ['concatInput1', 'concatInput2', 'concatInput3']},
+ {'axis': 1}
+ ],
+ 'outputs': 'concatOutput'
+ }],
+ 'expectedOutputs': {
+ 'concatOutput': {
+ 'data': [
+ -0.3944413363933563, 0.861982524394989, -0.5945112705230713,
+ -0.402848482131958, -0.7206121683120728, -0.7993468642234802,
+ 0.337996244430542, -0.990639865398407, -0.9531654119491577,
+ -0.6731740236282349, 0.6653800010681152, 0.03886038810014725,
+ 0.576785683631897, 0.32276400923728943, 0.49189892411231995,
+ -0.15864109992980957, 0.5182055234909058, -0.8742017149925232,
+ -0.44735023379325867, 0.11028251051902771, -0.3418811559677124,
+ -0.9158143401145935, -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'concat three float16 2D tensors of same shape along axis 1',
+ 'graph': {
+ 'inputs': {
+ 'concatInput1': {
+ 'data': [
+ -0.3944413363933563, 0.861982524394989, 0.337996244430542,
+ -0.990639865398407, 0.576785683631897, 0.32276400923728943,
+ -0.44735023379325867, 0.11028251051902771
+ ],
+ 'descriptor': {'dimensions': [4, 2], 'dataType': 'float16'}
+ },
+ 'concatInput2': {
+ 'data': [
+ -0.5945112705230713, -0.402848482131958, -0.9531654119491577,
+ -0.6731740236282349, 0.49189892411231995, -0.15864109992980957,
+ -0.3418811559677124, -0.9158143401145935
+ ],
+ 'descriptor': {'dimensions': [4, 2], 'dataType': 'float16'}
+ },
+ 'concatInput3': {
+ 'data': [
+ -0.7206121683120728, -0.7993468642234802, 0.6653800010681152,
+ 0.03886038810014725, 0.5182055234909058, -0.8742017149925232,
+ -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [4, 2], 'dataType': 'float16'}
+ }
+ },
+ 'operators': [{
+ 'name': 'concat',
+ 'arguments': [
+ {'inputs': ['concatInput1', 'concatInput2', 'concatInput3']},
+ {'axis': 1}
+ ],
+ 'outputs': 'concatOutput'
+ }],
+ 'expectedOutputs': {
+ 'concatOutput': {
+ 'data': [
+ -0.39453125, 0.86181640625, -0.5947265625, -0.40283203125,
+ -0.720703125, -0.79931640625, 0.337890625, -0.99072265625,
+ -0.953125, -0.67333984375, 0.66552734375, 0.038848876953125,
+ 0.57666015625, 0.32275390625, 0.491943359375, -0.15869140625,
+ 0.51806640625, -0.8740234375, -0.447265625, 0.11029052734375,
+ -0.341796875, -0.916015625, -0.47900390625, 0.12115478515625
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float16'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'concat four float32 2D tensors of same others dimensions except different 2nd dimension along axis 1',
+ 'graph': {
+ 'inputs': {
+ 'concatInput1': {
+ 'data': [-0.3944413363933563, 0.861982524394989, 0.337996244430542],
+ 'descriptor': {'dimensions': [3, 1], 'dataType': 'float32'}
+ },
+ 'concatInput2': {
+ 'data': [
+ -0.990639865398407, 0.576785683631897, 0.32276400923728943,
+ -0.44735023379325867, 0.11028251051902771, -0.5945112705230713
+ ],
+ 'descriptor': {'dimensions': [3, 2], 'dataType': 'float32'}
+ },
+ 'concatInput3': {
+ 'data': [
+ -0.402848482131958, -0.9531654119491577, -0.6731740236282349,
+ 0.49189892411231995, -0.15864109992980957, -0.3418811559677124
+ ],
+ 'descriptor': {'dimensions': [3, 2], 'dataType': 'float32'}
+ },
+ 'concatInput4': {
+ 'data': [
+ -0.9158143401145935, -0.7206121683120728, -0.7993468642234802,
+ 0.6653800010681152, 0.03886038810014725, 0.5182055234909058,
+ -0.8742017149925232, -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [3, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'concat',
+ 'arguments': [
+ {
+ 'inputs':
+ ['concatInput1', 'concatInput2', 'concatInput3', 'concatInput4']
+ },
+ {'axis': 1}
+ ],
+ 'outputs': 'concatOutput'
+ }],
+ 'expectedOutputs': {
+ 'concatOutput': {
+ 'data': [
+ -0.3944413363933563, -0.990639865398407, 0.576785683631897,
+ -0.402848482131958, -0.9531654119491577, -0.9158143401145935,
+ -0.7206121683120728, -0.7993468642234802, 0.861982524394989,
+ 0.32276400923728943, -0.44735023379325867, -0.6731740236282349,
+ 0.49189892411231995, 0.6653800010681152, 0.03886038810014725,
+ 0.5182055234909058, 0.337996244430542, 0.11028251051902771,
+ -0.5945112705230713, -0.15864109992980957, -0.3418811559677124,
+ -0.8742017149925232, -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [3, 8], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'concat four float16 2D tensors of same others dimensions except different 2nd dimension along axis 1',
+ 'graph': {
+ 'inputs': {
+ 'concatInput1': {
+ 'data': [-0.3944413363933563, 0.861982524394989, 0.337996244430542],
+ 'descriptor': {'dimensions': [3, 1], 'dataType': 'float16'}
+ },
+ 'concatInput2': {
+ 'data': [
+ -0.990639865398407, 0.576785683631897, 0.32276400923728943,
+ -0.44735023379325867, 0.11028251051902771, -0.5945112705230713
+ ],
+ 'descriptor': {'dimensions': [3, 2], 'dataType': 'float16'}
+ },
+ 'concatInput3': {
+ 'data': [
+ -0.402848482131958, -0.9531654119491577, -0.6731740236282349,
+ 0.49189892411231995, -0.15864109992980957, -0.3418811559677124
+ ],
+ 'descriptor': {'dimensions': [3, 2], 'dataType': 'float16'}
+ },
+ 'concatInput4': {
+ 'data': [
+ -0.9158143401145935, -0.7206121683120728, -0.7993468642234802,
+ 0.6653800010681152, 0.03886038810014725, 0.5182055234909058,
+ -0.8742017149925232, -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [3, 3], 'dataType': 'float16'}
+ }
+ },
+ 'operators': [{
+ 'name': 'concat',
+ 'arguments': [
+ {
+ 'inputs':
+ ['concatInput1', 'concatInput2', 'concatInput3', 'concatInput4']
+ },
+ {'axis': 1}
+ ],
+ 'outputs': 'concatOutput'
+ }],
+ 'expectedOutputs': {
+ 'concatOutput': {
+ 'data': [
+ -0.39453125, -0.99072265625, 0.57666015625,
+ -0.40283203125, -0.953125, -0.916015625,
+ -0.720703125, -0.79931640625, 0.86181640625,
+ 0.32275390625, -0.447265625, -0.67333984375,
+ 0.491943359375, 0.66552734375, 0.038848876953125,
+ 0.51806640625, 0.337890625, 0.11029052734375,
+ -0.5947265625, -0.15869140625, -0.341796875,
+ -0.8740234375, -0.47900390625, 0.12115478515625
+ ],
+ 'descriptor': {'dimensions': [3, 8], 'dataType': 'float16'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'concat two float32 3D tensors of same others dimensions except different 1st dimension along axis 0',
+ 'graph': {
+ 'inputs': {
+ 'concatInput1': {
+ 'data': [
+ -0.3944413363933563, 0.861982524394989, 0.337996244430542,
+ -0.990639865398407, 0.576785683631897, 0.32276400923728943
+ ],
+ 'descriptor': {'dimensions': [2, 1, 3], 'dataType': 'float32'}
+ },
+ 'concatInput2': {
+ 'data': [
+ -0.44735023379325867, 0.11028251051902771, -0.5945112705230713,
+ -0.402848482131958, -0.9531654119491577, -0.6731740236282349,
+ 0.49189892411231995, -0.15864109992980957, -0.3418811559677124,
+ -0.9158143401145935, -0.7206121683120728, -0.7993468642234802,
+ 0.6653800010681152, 0.03886038810014725, 0.5182055234909058,
+ -0.8742017149925232, -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [6, 1, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'concat',
+ 'arguments':
+ [{'inputs': ['concatInput1', 'concatInput2']}, {'axis': 0}],
+ 'outputs': 'concatOutput'
+ }],
+ 'expectedOutputs': {
+ 'concatOutput': {
+ 'data': [
+ -0.3944413363933563, 0.861982524394989, 0.337996244430542,
+ -0.990639865398407, 0.576785683631897, 0.32276400923728943,
+ -0.44735023379325867, 0.11028251051902771, -0.5945112705230713,
+ -0.402848482131958, -0.9531654119491577, -0.6731740236282349,
+ 0.49189892411231995, -0.15864109992980957, -0.3418811559677124,
+ -0.9158143401145935, -0.7206121683120728, -0.7993468642234802,
+ 0.6653800010681152, 0.03886038810014725, 0.5182055234909058,
+ -0.8742017149925232, -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [8, 1, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'concat two float16 3D tensors of same others dimensions except different 1st dimension along axis 0',
+ 'graph': {
+ 'inputs': {
+ 'concatInput1': {
+ 'data': [
+ -0.3944413363933563, 0.861982524394989, 0.337996244430542,
+ -0.990639865398407, 0.576785683631897, 0.32276400923728943
+ ],
+ 'descriptor': {'dimensions': [2, 1, 3], 'dataType': 'float16'}
+ },
+ 'concatInput2': {
+ 'data': [
+ -0.44735023379325867, 0.11028251051902771, -0.5945112705230713,
+ -0.402848482131958, -0.9531654119491577, -0.6731740236282349,
+ 0.49189892411231995, -0.15864109992980957, -0.3418811559677124,
+ -0.9158143401145935, -0.7206121683120728, -0.7993468642234802,
+ 0.6653800010681152, 0.03886038810014725, 0.5182055234909058,
+ -0.8742017149925232, -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [6, 1, 3], 'dataType': 'float16'}
+ }
+ },
+ 'operators': [{
+ 'name': 'concat',
+ 'arguments':
+ [{'inputs': ['concatInput1', 'concatInput2']}, {'axis': 0}],
+ 'outputs': 'concatOutput'
+ }],
+ 'expectedOutputs': {
+ 'concatOutput': {
+ 'data': [
+ -0.39453125, 0.86181640625, 0.337890625, -0.99072265625,
+ 0.57666015625, 0.32275390625, -0.447265625, 0.11029052734375,
+ -0.5947265625, -0.40283203125, -0.953125, -0.67333984375,
+ 0.491943359375, -0.15869140625, -0.341796875, -0.916015625,
+ -0.720703125, -0.79931640625, 0.66552734375, 0.038848876953125,
+ 0.51806640625, -0.8740234375, -0.47900390625, 0.12115478515625
+ ],
+ 'descriptor': {'dimensions': [8, 1, 3], 'dataType': 'float16'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'concat four float32 3D tensors of same others dimensions except different 2nd dimension along axis 1',
+ 'graph': {
+ 'inputs': {
+ 'concatInput1': {
+ 'data': [-0.3944413363933563, 0.861982524394989, 0.337996244430542],
+ 'descriptor': {'dimensions': [3, 1, 1], 'dataType': 'float32'}
+ },
+ 'concatInput2': {
+ 'data': [
+ -0.990639865398407, 0.576785683631897, 0.32276400923728943,
+ -0.44735023379325867, 0.11028251051902771, -0.5945112705230713
+ ],
+ 'descriptor': {'dimensions': [3, 2, 1], 'dataType': 'float32'}
+ },
+ 'concatInput3': {
+ 'data': [
+ -0.402848482131958, -0.9531654119491577, -0.6731740236282349,
+ 0.49189892411231995, -0.15864109992980957, -0.3418811559677124
+ ],
+ 'descriptor': {'dimensions': [3, 2, 1], 'dataType': 'float32'}
+ },
+ 'concatInput4': {
+ 'data': [
+ -0.9158143401145935, -0.7206121683120728, -0.7993468642234802,
+ 0.6653800010681152, 0.03886038810014725, 0.5182055234909058,
+ -0.8742017149925232, -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [3, 3, 1], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'concat',
+ 'arguments': [
+ {
+ 'inputs':
+ ['concatInput1', 'concatInput2', 'concatInput3', 'concatInput4']
+ },
+ {'axis': 1}
+ ],
+ 'outputs': 'concatOutput'
+ }],
+ 'expectedOutputs': {
+ 'concatOutput': {
+ 'data': [
+ -0.3944413363933563, -0.990639865398407, 0.576785683631897,
+ -0.402848482131958, -0.9531654119491577, -0.9158143401145935,
+ -0.7206121683120728, -0.7993468642234802, 0.861982524394989,
+ 0.32276400923728943, -0.44735023379325867, -0.6731740236282349,
+ 0.49189892411231995, 0.6653800010681152, 0.03886038810014725,
+ 0.5182055234909058, 0.337996244430542, 0.11028251051902771,
+ -0.5945112705230713, -0.15864109992980957, -0.3418811559677124,
+ -0.8742017149925232, -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [3, 8, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'concat four float16 3D tensors of same others dimensions except different 2nd dimension along axis 1',
+ 'graph': {
+ 'inputs': {
+ 'concatInput1': {
+ 'data': [-0.3944413363933563, 0.861982524394989, 0.337996244430542],
+ 'descriptor': {'dimensions': [3, 1, 1], 'dataType': 'float16'}
+ },
+ 'concatInput2': {
+ 'data': [
+ -0.990639865398407, 0.576785683631897, 0.32276400923728943,
+ -0.44735023379325867, 0.11028251051902771, -0.5945112705230713
+ ],
+ 'descriptor': {'dimensions': [3, 2, 1], 'dataType': 'float16'}
+ },
+ 'concatInput3': {
+ 'data': [
+ -0.402848482131958, -0.9531654119491577, -0.6731740236282349,
+ 0.49189892411231995, -0.15864109992980957, -0.3418811559677124
+ ],
+ 'descriptor': {'dimensions': [3, 2, 1], 'dataType': 'float16'}
+ },
+ 'concatInput4': {
+ 'data': [
+ -0.9158143401145935, -0.7206121683120728, -0.7993468642234802,
+ 0.6653800010681152, 0.03886038810014725, 0.5182055234909058,
+ -0.8742017149925232, -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [3, 3, 1], 'dataType': 'float16'}
+ }
+ },
+ 'operators': [{
+ 'name': 'concat',
+ 'arguments': [
+ {
+ 'inputs':
+ ['concatInput1', 'concatInput2', 'concatInput3', 'concatInput4']
+ },
+ {'axis': 1}
+ ],
+ 'outputs': 'concatOutput'
+ }],
+ 'expectedOutputs': {
+ 'concatOutput': {
+ 'data': [
+ -0.39453125, -0.99072265625, 0.57666015625,
+ -0.40283203125, -0.953125, -0.916015625,
+ -0.720703125, -0.79931640625, 0.86181640625,
+ 0.32275390625, -0.447265625, -0.67333984375,
+ 0.491943359375, 0.66552734375, 0.038848876953125,
+ 0.51806640625, 0.337890625, 0.11029052734375,
+ -0.5947265625, -0.15869140625, -0.341796875,
+ -0.8740234375, -0.47900390625, 0.12115478515625
+ ],
+ 'descriptor': {'dimensions': [3, 8, 1], 'dataType': 'float16'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'concat three float32 3D tensors of same shape along axis 2',
+ 'graph': {
+ 'inputs': {
+ 'concatInput1': {
+ 'data': [
+ -0.3944413363933563, 0.861982524394989, 0.337996244430542,
+ -0.990639865398407, 0.576785683631897, 0.32276400923728943,
+ -0.44735023379325867, 0.11028251051902771
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2], 'dataType': 'float32'}
+ },
+ 'concatInput2': {
+ 'data': [
+ -0.5945112705230713, -0.402848482131958, -0.9531654119491577,
+ -0.6731740236282349, 0.49189892411231995, -0.15864109992980957,
+ -0.3418811559677124, -0.9158143401145935
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2], 'dataType': 'float32'}
+ },
+ 'concatInput3': {
+ 'data': [
+ -0.7206121683120728, -0.7993468642234802, 0.6653800010681152,
+ 0.03886038810014725, 0.5182055234909058, -0.8742017149925232,
+ -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'concat',
+ 'arguments': [
+ {'inputs': ['concatInput1', 'concatInput2', 'concatInput3']},
+ {'axis': 2}
+ ],
+ 'outputs': 'concatOutput'
+ }],
+ 'expectedOutputs': {
+ 'concatOutput': {
+ 'data': [
+ -0.3944413363933563, 0.861982524394989, -0.5945112705230713,
+ -0.402848482131958, -0.7206121683120728, -0.7993468642234802,
+ 0.337996244430542, -0.990639865398407, -0.9531654119491577,
+ -0.6731740236282349, 0.6653800010681152, 0.03886038810014725,
+ 0.576785683631897, 0.32276400923728943, 0.49189892411231995,
+ -0.15864109992980957, 0.5182055234909058, -0.8742017149925232,
+ -0.44735023379325867, 0.11028251051902771, -0.3418811559677124,
+ -0.9158143401145935, -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [2, 2, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'concat three float16 3D tensors of same shape along axis 2',
+ 'graph': {
+ 'inputs': {
+ 'concatInput1': {
+ 'data': [
+ -0.3944413363933563, 0.861982524394989, 0.337996244430542,
+ -0.990639865398407, 0.576785683631897, 0.32276400923728943,
+ -0.44735023379325867, 0.11028251051902771
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2], 'dataType': 'float16'}
+ },
+ 'concatInput2': {
+ 'data': [
+ -0.5945112705230713, -0.402848482131958, -0.9531654119491577,
+ -0.6731740236282349, 0.49189892411231995, -0.15864109992980957,
+ -0.3418811559677124, -0.9158143401145935
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2], 'dataType': 'float16'}
+ },
+ 'concatInput3': {
+ 'data': [
+ -0.7206121683120728, -0.7993468642234802, 0.6653800010681152,
+ 0.03886038810014725, 0.5182055234909058, -0.8742017149925232,
+ -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2], 'dataType': 'float16'}
+ }
+ },
+ 'operators': [{
+ 'name': 'concat',
+ 'arguments': [
+ {'inputs': ['concatInput1', 'concatInput2', 'concatInput3']},
+ {'axis': 2}
+ ],
+ 'outputs': 'concatOutput'
+ }],
+ 'expectedOutputs': {
+ 'concatOutput': {
+ 'data': [
+ -0.39453125, 0.86181640625, -0.5947265625, -0.40283203125,
+ -0.720703125, -0.79931640625, 0.337890625, -0.99072265625,
+ -0.953125, -0.67333984375, 0.66552734375, 0.038848876953125,
+ 0.57666015625, 0.32275390625, 0.491943359375, -0.15869140625,
+ 0.51806640625, -0.8740234375, -0.447265625, 0.11029052734375,
+ -0.341796875, -0.916015625, -0.47900390625, 0.12115478515625
+ ],
+ 'descriptor': {'dimensions': [2, 2, 6], 'dataType': 'float16'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'concat two float32 4D tensors of same others dimensions except different 1st dimension along axis 0',
+ 'graph': {
+ 'inputs': {
+ 'concatInput1': {
+ 'data': [
+ -0.3944413363933563, 0.861982524394989, 0.337996244430542,
+ -0.990639865398407, 0.576785683631897, 0.32276400923728943
+ ],
+ 'descriptor': {'dimensions': [1, 3, 1, 2], 'dataType': 'float32'}
+ },
+ 'concatInput2': {
+ 'data': [
+ -0.44735023379325867, 0.11028251051902771, -0.5945112705230713,
+ -0.402848482131958, -0.9531654119491577, -0.6731740236282349,
+ 0.49189892411231995, -0.15864109992980957, -0.3418811559677124,
+ -0.9158143401145935, -0.7206121683120728, -0.7993468642234802,
+ 0.6653800010681152, 0.03886038810014725, 0.5182055234909058,
+ -0.8742017149925232, -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [3, 3, 1, 2], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'concat',
+ 'arguments':
+ [{'inputs': ['concatInput1', 'concatInput2']}, {'axis': 0}],
+ 'outputs': 'concatOutput'
+ }],
+ 'expectedOutputs': {
+ 'concatOutput': {
+ 'data': [
+ -0.3944413363933563, 0.861982524394989, 0.337996244430542,
+ -0.990639865398407, 0.576785683631897, 0.32276400923728943,
+ -0.44735023379325867, 0.11028251051902771, -0.5945112705230713,
+ -0.402848482131958, -0.9531654119491577, -0.6731740236282349,
+ 0.49189892411231995, -0.15864109992980957, -0.3418811559677124,
+ -0.9158143401145935, -0.7206121683120728, -0.7993468642234802,
+ 0.6653800010681152, 0.03886038810014725, 0.5182055234909058,
+ -0.8742017149925232, -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [4, 3, 1, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'concat two float16 4D tensors of same others dimensions except different 1st dimension along axis 0',
+ 'graph': {
+ 'inputs': {
+ 'concatInput1': {
+ 'data': [
+ -0.3944413363933563, 0.861982524394989, 0.337996244430542,
+ -0.990639865398407, 0.576785683631897, 0.32276400923728943
+ ],
+ 'descriptor': {'dimensions': [1, 3, 1, 2], 'dataType': 'float16'}
+ },
+ 'concatInput2': {
+ 'data': [
+ -0.44735023379325867, 0.11028251051902771, -0.5945112705230713,
+ -0.402848482131958, -0.9531654119491577, -0.6731740236282349,
+ 0.49189892411231995, -0.15864109992980957, -0.3418811559677124,
+ -0.9158143401145935, -0.7206121683120728, -0.7993468642234802,
+ 0.6653800010681152, 0.03886038810014725, 0.5182055234909058,
+ -0.8742017149925232, -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [3, 3, 1, 2], 'dataType': 'float16'}
+ }
+ },
+ 'operators': [{
+ 'name': 'concat',
+ 'arguments':
+ [{'inputs': ['concatInput1', 'concatInput2']}, {'axis': 0}],
+ 'outputs': 'concatOutput'
+ }],
+ 'expectedOutputs': {
+ 'concatOutput': {
+ 'data': [
+ -0.39453125, 0.86181640625, 0.337890625, -0.99072265625,
+ 0.57666015625, 0.32275390625, -0.447265625, 0.11029052734375,
+ -0.5947265625, -0.40283203125, -0.953125, -0.67333984375,
+ 0.491943359375, -0.15869140625, -0.341796875, -0.916015625,
+ -0.720703125, -0.79931640625, 0.66552734375, 0.038848876953125,
+ 0.51806640625, -0.8740234375, -0.47900390625, 0.12115478515625
+ ],
+ 'descriptor': {'dimensions': [4, 3, 1, 2], 'dataType': 'float16'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'concat three float32 4D tensors of same shape along axis 1',
+ 'graph': {
+ 'inputs': {
+ 'concatInput1': {
+ 'data': [
+ -0.3944413363933563, 0.861982524394989, 0.337996244430542,
+ -0.990639865398407, 0.576785683631897, 0.32276400923728943,
+ -0.44735023379325867, 0.11028251051902771
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 2], 'dataType': 'float32'}
+ },
+ 'concatInput2': {
+ 'data': [
+ -0.5945112705230713, -0.402848482131958, -0.9531654119491577,
+ -0.6731740236282349, 0.49189892411231995, -0.15864109992980957,
+ -0.3418811559677124, -0.9158143401145935
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 2], 'dataType': 'float32'}
+ },
+ 'concatInput3': {
+ 'data': [
+ -0.7206121683120728, -0.7993468642234802, 0.6653800010681152,
+ 0.03886038810014725, 0.5182055234909058, -0.8742017149925232,
+ -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 2], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'concat',
+ 'arguments': [
+ {'inputs': ['concatInput1', 'concatInput2', 'concatInput3']},
+ {'axis': 1}
+ ],
+ 'outputs': 'concatOutput'
+ }],
+ 'expectedOutputs': {
+ 'concatOutput': {
+ 'data': [
+ -0.3944413363933563, 0.861982524394989, 0.337996244430542,
+ -0.990639865398407, -0.5945112705230713, -0.402848482131958,
+ -0.9531654119491577, -0.6731740236282349, -0.7206121683120728,
+ -0.7993468642234802, 0.6653800010681152, 0.03886038810014725,
+ 0.576785683631897, 0.32276400923728943, -0.44735023379325867,
+ 0.11028251051902771, 0.49189892411231995, -0.15864109992980957,
+ -0.3418811559677124, -0.9158143401145935, 0.5182055234909058,
+ -0.8742017149925232, -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [2, 6, 1, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'concat three float16 4D tensors of same shape along axis 1',
+ 'graph': {
+ 'inputs': {
+ 'concatInput1': {
+ 'data': [
+ -0.3944413363933563, 0.861982524394989, 0.337996244430542,
+ -0.990639865398407, 0.576785683631897, 0.32276400923728943,
+ -0.44735023379325867, 0.11028251051902771
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 2], 'dataType': 'float16'}
+ },
+ 'concatInput2': {
+ 'data': [
+ -0.5945112705230713, -0.402848482131958, -0.9531654119491577,
+ -0.6731740236282349, 0.49189892411231995, -0.15864109992980957,
+ -0.3418811559677124, -0.9158143401145935
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 2], 'dataType': 'float16'}
+ },
+ 'concatInput3': {
+ 'data': [
+ -0.7206121683120728, -0.7993468642234802, 0.6653800010681152,
+ 0.03886038810014725, 0.5182055234909058, -0.8742017149925232,
+ -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 2], 'dataType': 'float16'}
+ }
+ },
+ 'operators': [{
+ 'name': 'concat',
+ 'arguments': [
+ {'inputs': ['concatInput1', 'concatInput2', 'concatInput3']},
+ {'axis': 1}
+ ],
+ 'outputs': 'concatOutput'
+ }],
+ 'expectedOutputs': {
+ 'concatOutput': {
+ 'data': [
+ -0.39453125, 0.86181640625, 0.337890625, -0.99072265625,
+ -0.5947265625, -0.40283203125, -0.953125, -0.67333984375,
+ -0.720703125, -0.79931640625, 0.66552734375, 0.038848876953125,
+ 0.57666015625, 0.32275390625, -0.447265625, 0.11029052734375,
+ 0.491943359375, -0.15869140625, -0.341796875, -0.916015625,
+ 0.51806640625, -0.8740234375, -0.47900390625, 0.12115478515625
+ ],
+ 'descriptor': {'dimensions': [2, 6, 1, 2], 'dataType': 'float16'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'concat three float32 4D tensors of same others dimensions except different 3rd dimension along axis 2',
+ 'graph': {
+ 'inputs': {
+ 'concatInput1': {
+ 'data': [
+ -0.3944413363933563, 0.861982524394989, 0.337996244430542,
+ -0.990639865398407
+ ],
+ 'descriptor': {'dimensions': [1, 2, 2, 1], 'dataType': 'float32'}
+ },
+ 'concatInput2': {
+ 'data': [
+ 0.576785683631897, 0.32276400923728943, -0.44735023379325867,
+ 0.11028251051902771, -0.5945112705230713, -0.402848482131958,
+ -0.9531654119491577, -0.6731740236282349, 0.49189892411231995,
+ -0.15864109992980957, -0.3418811559677124, -0.9158143401145935,
+ -0.7206121683120728, -0.7993468642234802, 0.6653800010681152,
+ 0.03886038810014725
+ ],
+ 'descriptor': {'dimensions': [1, 2, 8, 1], 'dataType': 'float32'}
+ },
+ 'concatInput3': {
+ 'data': [
+ 0.5182055234909058, -0.8742017149925232, -0.4790218770503998,
+ 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [1, 2, 2, 1], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'concat',
+ 'arguments': [
+ {'inputs': ['concatInput1', 'concatInput2', 'concatInput3']},
+ {'axis': 2}
+ ],
+ 'outputs': 'concatOutput'
+ }],
+ 'expectedOutputs': {
+ 'concatOutput': {
+ 'data': [
+ -0.3944413363933563, 0.861982524394989, 0.576785683631897,
+ 0.32276400923728943, -0.44735023379325867, 0.11028251051902771,
+ -0.5945112705230713, -0.402848482131958, -0.9531654119491577,
+ -0.6731740236282349, 0.5182055234909058, -0.8742017149925232,
+ 0.337996244430542, -0.990639865398407, 0.49189892411231995,
+ -0.15864109992980957, -0.3418811559677124, -0.9158143401145935,
+ -0.7206121683120728, -0.7993468642234802, 0.6653800010681152,
+ 0.03886038810014725, -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [1, 2, 12, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'concat three float16 4D tensors of same others dimensions except different 3rd dimension along axis 2',
+ 'graph': {
+ 'inputs': {
+ 'concatInput1': {
+ 'data': [
+ -0.3944413363933563, 0.861982524394989, 0.337996244430542,
+ -0.990639865398407
+ ],
+ 'descriptor': {'dimensions': [1, 2, 2, 1], 'dataType': 'float16'}
+ },
+ 'concatInput2': {
+ 'data': [
+ 0.576785683631897, 0.32276400923728943, -0.44735023379325867,
+ 0.11028251051902771, -0.5945112705230713, -0.402848482131958,
+ -0.9531654119491577, -0.6731740236282349, 0.49189892411231995,
+ -0.15864109992980957, -0.3418811559677124, -0.9158143401145935,
+ -0.7206121683120728, -0.7993468642234802, 0.6653800010681152,
+ 0.03886038810014725
+ ],
+ 'descriptor': {'dimensions': [1, 2, 8, 1], 'dataType': 'float16'}
+ },
+ 'concatInput3': {
+ 'data': [
+ 0.5182055234909058, -0.8742017149925232, -0.4790218770503998,
+ 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [1, 2, 2, 1], 'dataType': 'float16'}
+ }
+ },
+ 'operators': [{
+ 'name': 'concat',
+ 'arguments': [
+ {'inputs': ['concatInput1', 'concatInput2', 'concatInput3']},
+ {'axis': 2}
+ ],
+ 'outputs': 'concatOutput'
+ }],
+ 'expectedOutputs': {
+ 'concatOutput': {
+ 'data': [
+ -0.39453125, 0.86181640625, 0.57666015625, 0.32275390625,
+ -0.447265625, 0.11029052734375, -0.5947265625, -0.40283203125,
+ -0.953125, -0.67333984375, 0.51806640625, -0.8740234375,
+ 0.337890625, -0.99072265625, 0.491943359375, -0.15869140625,
+ -0.341796875, -0.916015625, -0.720703125, -0.79931640625,
+ 0.66552734375, 0.038848876953125, -0.47900390625, 0.12115478515625
+ ],
+ 'descriptor': {'dimensions': [1, 2, 12, 1], 'dataType': 'float16'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'concat four float32 4D tensors of same others dimensions except different 4th dimension along axis 3',
+ 'graph': {
+ 'inputs': {
+ 'concatInput1': {
+ 'data': [-0.3944413363933563, 0.861982524394989, 0.337996244430542],
+ 'descriptor': {'dimensions': [1, 3, 1, 1], 'dataType': 'float32'}
+ },
+ 'concatInput2': {
+ 'data': [-0.990639865398407, 0.576785683631897, 0.32276400923728943],
+ 'descriptor': {'dimensions': [1, 3, 1, 1], 'dataType': 'float32'}
+ },
+ 'concatInput3': {
+ 'data': [
+ -0.44735023379325867, 0.11028251051902771, -0.5945112705230713,
+ -0.402848482131958, -0.9531654119491577, -0.6731740236282349
+ ],
+ 'descriptor': {'dimensions': [1, 3, 1, 2], 'dataType': 'float32'}
+ },
+ 'concatInput4': {
+ 'data': [
+ 0.49189892411231995, -0.15864109992980957, -0.3418811559677124,
+ -0.9158143401145935, -0.7206121683120728, -0.7993468642234802,
+ 0.6653800010681152, 0.03886038810014725, 0.5182055234909058,
+ -0.8742017149925232, -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [1, 3, 1, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'concat',
+ 'arguments': [
+ {
+ 'inputs':
+ ['concatInput1', 'concatInput2', 'concatInput3', 'concatInput4']
+ },
+ {'axis': 3}
+ ],
+ 'outputs': 'concatOutput'
+ }],
+ 'expectedOutputs': {
+ 'concatOutput': {
+ 'data': [
+ -0.3944413363933563, -0.990639865398407, -0.44735023379325867,
+ 0.11028251051902771, 0.49189892411231995, -0.15864109992980957,
+ -0.3418811559677124, -0.9158143401145935, 0.861982524394989,
+ 0.576785683631897, -0.5945112705230713, -0.402848482131958,
+ -0.7206121683120728, -0.7993468642234802, 0.6653800010681152,
+ 0.03886038810014725, 0.337996244430542, 0.32276400923728943,
+ -0.9531654119491577, -0.6731740236282349, 0.5182055234909058,
+ -0.8742017149925232, -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [1, 3, 1, 8], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'concat four float16 4D tensors of same others dimensions except different 4th dimension along axis 3',
+ 'graph': {
+ 'inputs': {
+ 'concatInput1': {
+ 'data': [-0.3944413363933563, 0.861982524394989, 0.337996244430542],
+ 'descriptor': {'dimensions': [1, 3, 1, 1], 'dataType': 'float16'}
+ },
+ 'concatInput2': {
+ 'data': [-0.990639865398407, 0.576785683631897, 0.32276400923728943],
+ 'descriptor': {'dimensions': [1, 3, 1, 1], 'dataType': 'float16'}
+ },
+ 'concatInput3': {
+ 'data': [
+ -0.44735023379325867, 0.11028251051902771, -0.5945112705230713,
+ -0.402848482131958, -0.9531654119491577, -0.6731740236282349
+ ],
+ 'descriptor': {'dimensions': [1, 3, 1, 2], 'dataType': 'float16'}
+ },
+ 'concatInput4': {
+ 'data': [
+ 0.49189892411231995, -0.15864109992980957, -0.3418811559677124,
+ -0.9158143401145935, -0.7206121683120728, -0.7993468642234802,
+ 0.6653800010681152, 0.03886038810014725, 0.5182055234909058,
+ -0.8742017149925232, -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [1, 3, 1, 4], 'dataType': 'float16'}
+ }
+ },
+ 'operators': [{
+ 'name': 'concat',
+ 'arguments': [
+ {
+ 'inputs':
+ ['concatInput1', 'concatInput2', 'concatInput3', 'concatInput4']
+ },
+ {'axis': 3}
+ ],
+ 'outputs': 'concatOutput'
+ }],
+ 'expectedOutputs': {
+ 'concatOutput': {
+ 'data': [
+ -0.39453125, -0.99072265625, -0.447265625, 0.11029052734375,
+ 0.491943359375, -0.15869140625, -0.341796875, -0.916015625,
+ 0.86181640625, 0.57666015625, -0.5947265625, -0.40283203125,
+ -0.720703125, -0.79931640625, 0.66552734375, 0.038848876953125,
+ 0.337890625, 0.32275390625, -0.953125, -0.67333984375,
+ 0.51806640625, -0.8740234375, -0.47900390625, 0.12115478515625
+ ],
+ 'descriptor': {'dimensions': [1, 3, 1, 8], 'dataType': 'float16'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'concat four float32 5D tensors of same shape along axis 0',
+ 'graph': {
+ 'inputs': {
+ 'concatInput1': {
+ 'data': [
+ -0.3944413363933563, 0.861982524394989, 0.337996244430542,
+ -0.990639865398407, 0.576785683631897, 0.32276400923728943
+ ],
+ 'descriptor': {'dimensions': [1, 2, 1, 1, 3], 'dataType': 'float32'}
+ },
+ 'concatInput2': {
+ 'data': [
+ -0.44735023379325867, 0.11028251051902771, -0.5945112705230713,
+ -0.402848482131958, -0.9531654119491577, -0.6731740236282349
+ ],
+ 'descriptor': {'dimensions': [1, 2, 1, 1, 3], 'dataType': 'float32'}
+ },
+ 'concatInput3': {
+ 'data': [
+ 0.49189892411231995, -0.15864109992980957, -0.3418811559677124,
+ -0.9158143401145935, -0.7206121683120728, -0.7993468642234802
+ ],
+ 'descriptor': {'dimensions': [1, 2, 1, 1, 3], 'dataType': 'float32'}
+ },
+ 'concatInput4': {
+ 'data': [
+ 0.6653800010681152, 0.03886038810014725, 0.5182055234909058,
+ -0.8742017149925232, -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [1, 2, 1, 1, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'concat',
+ 'arguments': [
+ {
+ 'inputs':
+ ['concatInput1', 'concatInput2', 'concatInput3', 'concatInput4']
+ },
+ {'axis': 0}
+ ],
+ 'outputs': 'concatOutput'
+ }],
+ 'expectedOutputs': {
+ 'concatOutput': {
+ 'data': [
+ -0.3944413363933563, 0.861982524394989, 0.337996244430542,
+ -0.990639865398407, 0.576785683631897, 0.32276400923728943,
+ -0.44735023379325867, 0.11028251051902771, -0.5945112705230713,
+ -0.402848482131958, -0.9531654119491577, -0.6731740236282349,
+ 0.49189892411231995, -0.15864109992980957, -0.3418811559677124,
+ -0.9158143401145935, -0.7206121683120728, -0.7993468642234802,
+ 0.6653800010681152, 0.03886038810014725, 0.5182055234909058,
+ -0.8742017149925232, -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [4, 2, 1, 1, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'concat four float16 5D tensors of same shape along axis 0',
+ 'graph': {
+ 'inputs': {
+ 'concatInput1': {
+ 'data': [
+ -0.3944413363933563, 0.861982524394989, 0.337996244430542,
+ -0.990639865398407, 0.576785683631897, 0.32276400923728943
+ ],
+ 'descriptor': {'dimensions': [1, 2, 1, 1, 3], 'dataType': 'float16'}
+ },
+ 'concatInput2': {
+ 'data': [
+ -0.44735023379325867, 0.11028251051902771, -0.5945112705230713,
+ -0.402848482131958, -0.9531654119491577, -0.6731740236282349
+ ],
+ 'descriptor': {'dimensions': [1, 2, 1, 1, 3], 'dataType': 'float16'}
+ },
+ 'concatInput3': {
+ 'data': [
+ 0.49189892411231995, -0.15864109992980957, -0.3418811559677124,
+ -0.9158143401145935, -0.7206121683120728, -0.7993468642234802
+ ],
+ 'descriptor': {'dimensions': [1, 2, 1, 1, 3], 'dataType': 'float16'}
+ },
+ 'concatInput4': {
+ 'data': [
+ 0.6653800010681152, 0.03886038810014725, 0.5182055234909058,
+ -0.8742017149925232, -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [1, 2, 1, 1, 3], 'dataType': 'float16'}
+ }
+ },
+ 'operators': [{
+ 'name': 'concat',
+ 'arguments': [
+ {
+ 'inputs':
+ ['concatInput1', 'concatInput2', 'concatInput3', 'concatInput4']
+ },
+ {'axis': 0}
+ ],
+ 'outputs': 'concatOutput'
+ }],
+ 'expectedOutputs': {
+ 'concatOutput': {
+ 'data': [
+ -0.39453125, 0.86181640625, 0.337890625, -0.99072265625,
+ 0.57666015625, 0.32275390625, -0.447265625, 0.11029052734375,
+ -0.5947265625, -0.40283203125, -0.953125, -0.67333984375,
+ 0.491943359375, -0.15869140625, -0.341796875, -0.916015625,
+ -0.720703125, -0.79931640625, 0.66552734375, 0.038848876953125,
+ 0.51806640625, -0.8740234375, -0.47900390625, 0.12115478515625
+ ],
+ 'descriptor': {'dimensions': [4, 2, 1, 1, 3], 'dataType': 'float16'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'concat two float32 5D tensors of same others dimensions except different 2nd dimension along axis 1',
+ 'graph': {
+ 'inputs': {
+ 'concatInput1': {
+ 'data': [
+ -0.3944413363933563, 0.861982524394989, 0.337996244430542,
+ -0.990639865398407, 0.576785683631897, 0.32276400923728943
+ ],
+ 'descriptor': {'dimensions': [1, 2, 3, 1, 1], 'dataType': 'float32'}
+ },
+ 'concatInput2': {
+ 'data': [
+ -0.44735023379325867, 0.11028251051902771, -0.5945112705230713,
+ -0.402848482131958, -0.9531654119491577, -0.6731740236282349,
+ 0.49189892411231995, -0.15864109992980957, -0.3418811559677124,
+ -0.9158143401145935, -0.7206121683120728, -0.7993468642234802,
+ 0.6653800010681152, 0.03886038810014725, 0.5182055234909058,
+ -0.8742017149925232, -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [1, 6, 3, 1, 1], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'concat',
+ 'arguments':
+ [{'inputs': ['concatInput1', 'concatInput2']}, {'axis': 1}],
+ 'outputs': 'concatOutput'
+ }],
+ 'expectedOutputs': {
+ 'concatOutput': {
+ 'data': [
+ -0.3944413363933563, 0.861982524394989, 0.337996244430542,
+ -0.990639865398407, 0.576785683631897, 0.32276400923728943,
+ -0.44735023379325867, 0.11028251051902771, -0.5945112705230713,
+ -0.402848482131958, -0.9531654119491577, -0.6731740236282349,
+ 0.49189892411231995, -0.15864109992980957, -0.3418811559677124,
+ -0.9158143401145935, -0.7206121683120728, -0.7993468642234802,
+ 0.6653800010681152, 0.03886038810014725, 0.5182055234909058,
+ -0.8742017149925232, -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [1, 8, 3, 1, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'concat two float16 5D tensors of same others dimensions except different 2nd dimension along axis 1',
+ 'graph': {
+ 'inputs': {
+ 'concatInput1': {
+ 'data': [
+ -0.3944413363933563, 0.861982524394989, 0.337996244430542,
+ -0.990639865398407, 0.576785683631897, 0.32276400923728943
+ ],
+ 'descriptor': {'dimensions': [1, 2, 3, 1, 1], 'dataType': 'float16'}
+ },
+ 'concatInput2': {
+ 'data': [
+ -0.44735023379325867, 0.11028251051902771, -0.5945112705230713,
+ -0.402848482131958, -0.9531654119491577, -0.6731740236282349,
+ 0.49189892411231995, -0.15864109992980957, -0.3418811559677124,
+ -0.9158143401145935, -0.7206121683120728, -0.7993468642234802,
+ 0.6653800010681152, 0.03886038810014725, 0.5182055234909058,
+ -0.8742017149925232, -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [1, 6, 3, 1, 1], 'dataType': 'float16'}
+ }
+ },
+ 'operators': [{
+ 'name': 'concat',
+ 'arguments':
+ [{'inputs': ['concatInput1', 'concatInput2']}, {'axis': 1}],
+ 'outputs': 'concatOutput'
+ }],
+ 'expectedOutputs': {
+ 'concatOutput': {
+ 'data': [
+ -0.39453125, 0.86181640625, 0.337890625, -0.99072265625,
+ 0.57666015625, 0.32275390625, -0.447265625, 0.11029052734375,
+ -0.5947265625, -0.40283203125, -0.953125, -0.67333984375,
+ 0.491943359375, -0.15869140625, -0.341796875, -0.916015625,
+ -0.720703125, -0.79931640625, 0.66552734375, 0.038848876953125,
+ 0.51806640625, -0.8740234375, -0.47900390625, 0.12115478515625
+ ],
+ 'descriptor': {'dimensions': [1, 8, 3, 1, 1], 'dataType': 'float16'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'concat three float32 5D tensors of same others dimensions except different 3rd dimension along axis 2',
+ 'graph': {
+ 'inputs': {
+ 'concatInput1': {
+ 'data': [
+ -0.3944413363933563, 0.861982524394989, 0.337996244430542,
+ -0.990639865398407
+ ],
+ 'descriptor': {'dimensions': [1, 2, 1, 1, 2], 'dataType': 'float32'}
+ },
+ 'concatInput2': {
+ 'data': [
+ 0.576785683631897, 0.32276400923728943, -0.44735023379325867,
+ 0.11028251051902771, -0.5945112705230713, -0.402848482131958,
+ -0.9531654119491577, -0.6731740236282349
+ ],
+ 'descriptor': {'dimensions': [1, 2, 2, 1, 2], 'dataType': 'float32'}
+ },
+ 'concatInput3': {
+ 'data': [
+ 0.49189892411231995, -0.15864109992980957, -0.3418811559677124,
+ -0.9158143401145935, -0.7206121683120728, -0.7993468642234802,
+ 0.6653800010681152, 0.03886038810014725, 0.5182055234909058,
+ -0.8742017149925232, -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [1, 2, 3, 1, 2], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'concat',
+ 'arguments': [
+ {'inputs': ['concatInput1', 'concatInput2', 'concatInput3']},
+ {'axis': 2}
+ ],
+ 'outputs': 'concatOutput'
+ }],
+ 'expectedOutputs': {
+ 'concatOutput': {
+ 'data': [
+ -0.3944413363933563, 0.861982524394989, 0.576785683631897,
+ 0.32276400923728943, -0.44735023379325867, 0.11028251051902771,
+ 0.49189892411231995, -0.15864109992980957, -0.3418811559677124,
+ -0.9158143401145935, -0.7206121683120728, -0.7993468642234802,
+ 0.337996244430542, -0.990639865398407, -0.5945112705230713,
+ -0.402848482131958, -0.9531654119491577, -0.6731740236282349,
+ 0.6653800010681152, 0.03886038810014725, 0.5182055234909058,
+ -0.8742017149925232, -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [1, 2, 6, 1, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'concat three float16 5D tensors of same others dimensions except different 3rd dimension along axis 2',
+ 'graph': {
+ 'inputs': {
+ 'concatInput1': {
+ 'data': [
+ -0.3944413363933563, 0.861982524394989, 0.337996244430542,
+ -0.990639865398407
+ ],
+ 'descriptor': {'dimensions': [1, 2, 1, 1, 2], 'dataType': 'float16'}
+ },
+ 'concatInput2': {
+ 'data': [
+ 0.576785683631897, 0.32276400923728943, -0.44735023379325867,
+ 0.11028251051902771, -0.5945112705230713, -0.402848482131958,
+ -0.9531654119491577, -0.6731740236282349
+ ],
+ 'descriptor': {'dimensions': [1, 2, 2, 1, 2], 'dataType': 'float16'}
+ },
+ 'concatInput3': {
+ 'data': [
+ 0.49189892411231995, -0.15864109992980957, -0.3418811559677124,
+ -0.9158143401145935, -0.7206121683120728, -0.7993468642234802,
+ 0.6653800010681152, 0.03886038810014725, 0.5182055234909058,
+ -0.8742017149925232, -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [1, 2, 3, 1, 2], 'dataType': 'float16'}
+ }
+ },
+ 'operators': [{
+ 'name': 'concat',
+ 'arguments': [
+ {'inputs': ['concatInput1', 'concatInput2', 'concatInput3']},
+ {'axis': 2}
+ ],
+ 'outputs': 'concatOutput'
+ }],
+ 'expectedOutputs': {
+ 'concatOutput': {
+ 'data': [
+ -0.39453125, 0.86181640625, 0.57666015625, 0.32275390625,
+ -0.447265625, 0.11029052734375, 0.491943359375, -0.15869140625,
+ -0.341796875, -0.916015625, -0.720703125, -0.79931640625,
+ 0.337890625, -0.99072265625, -0.5947265625, -0.40283203125,
+ -0.953125, -0.67333984375, 0.66552734375, 0.038848876953125,
+ 0.51806640625, -0.8740234375, -0.47900390625, 0.12115478515625
+ ],
+ 'descriptor': {'dimensions': [1, 2, 6, 1, 2], 'dataType': 'float16'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'concat two float32 5D tensors of same others dimensions except different 4th dimension along axis 3',
+ 'graph': {
+ 'inputs': {
+ 'concatInput1': {
+ 'data': [
+ -0.3944413363933563, 0.861982524394989, 0.337996244430542,
+ -0.990639865398407, 0.576785683631897, 0.32276400923728943
+ ],
+ 'descriptor': {'dimensions': [3, 1, 1, 1, 2], 'dataType': 'float32'}
+ },
+ 'concatInput2': {
+ 'data': [
+ -0.44735023379325867, 0.11028251051902771, -0.5945112705230713,
+ -0.402848482131958, -0.9531654119491577, -0.6731740236282349,
+ 0.49189892411231995, -0.15864109992980957, -0.3418811559677124,
+ -0.9158143401145935, -0.7206121683120728, -0.7993468642234802,
+ 0.6653800010681152, 0.03886038810014725, 0.5182055234909058,
+ -0.8742017149925232, -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [3, 1, 1, 3, 2], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'concat',
+ 'arguments':
+ [{'inputs': ['concatInput1', 'concatInput2']}, {'axis': 3}],
+ 'outputs': 'concatOutput'
+ }],
+ 'expectedOutputs': {
+ 'concatOutput': {
+ 'data': [
+ -0.3944413363933563, 0.861982524394989, -0.44735023379325867,
+ 0.11028251051902771, -0.5945112705230713, -0.402848482131958,
+ -0.9531654119491577, -0.6731740236282349, 0.337996244430542,
+ -0.990639865398407, 0.49189892411231995, -0.15864109992980957,
+ -0.3418811559677124, -0.9158143401145935, -0.7206121683120728,
+ -0.7993468642234802, 0.576785683631897, 0.32276400923728943,
+ 0.6653800010681152, 0.03886038810014725, 0.5182055234909058,
+ -0.8742017149925232, -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [3, 1, 1, 4, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'concat two float16 5D tensors of same others dimensions except different 4th dimension along axis 3',
+ 'graph': {
+ 'inputs': {
+ 'concatInput1': {
+ 'data': [
+ -0.3944413363933563, 0.861982524394989, 0.337996244430542,
+ -0.990639865398407, 0.576785683631897, 0.32276400923728943
+ ],
+ 'descriptor': {'dimensions': [3, 1, 1, 1, 2], 'dataType': 'float16'}
+ },
+ 'concatInput2': {
+ 'data': [
+ -0.44735023379325867, 0.11028251051902771, -0.5945112705230713,
+ -0.402848482131958, -0.9531654119491577, -0.6731740236282349,
+ 0.49189892411231995, -0.15864109992980957, -0.3418811559677124,
+ -0.9158143401145935, -0.7206121683120728, -0.7993468642234802,
+ 0.6653800010681152, 0.03886038810014725, 0.5182055234909058,
+ -0.8742017149925232, -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [3, 1, 1, 3, 2], 'dataType': 'float16'}
+ }
+ },
+ 'operators': [{
+ 'name': 'concat',
+ 'arguments':
+ [{'inputs': ['concatInput1', 'concatInput2']}, {'axis': 3}],
+ 'outputs': 'concatOutput'
+ }],
+ 'expectedOutputs': {
+ 'concatOutput': {
+ 'data': [
+ -0.39453125, 0.86181640625, -0.447265625, 0.11029052734375,
+ -0.5947265625, -0.40283203125, -0.953125, -0.67333984375,
+ 0.337890625, -0.99072265625, 0.491943359375, -0.15869140625,
+ -0.341796875, -0.916015625, -0.720703125, -0.79931640625,
+ 0.57666015625, 0.32275390625, 0.66552734375, 0.038848876953125,
+ 0.51806640625, -0.8740234375, -0.47900390625, 0.12115478515625
+ ],
+ 'descriptor': {'dimensions': [3, 1, 1, 4, 2], 'dataType': 'float16'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'concat two float32 5D tensors of same others dimensions except different 5th dimension along axis 4',
+ 'graph': {
+ 'inputs': {
+ 'concatInput1': {
+ 'data': [
+ -0.3944413363933563, 0.861982524394989, 0.337996244430542,
+ -0.990639865398407, 0.576785683631897, 0.32276400923728943,
+ -0.44735023379325867, 0.11028251051902771
+ ],
+ 'descriptor': {'dimensions': [1, 2, 1, 1, 4], 'dataType': 'float32'}
+ },
+ 'concatInput2': {
+ 'data': [
+ -0.5945112705230713, -0.402848482131958, -0.9531654119491577,
+ -0.6731740236282349, 0.49189892411231995, -0.15864109992980957,
+ -0.3418811559677124, -0.9158143401145935, -0.7206121683120728,
+ -0.7993468642234802, 0.6653800010681152, 0.03886038810014725,
+ 0.5182055234909058, -0.8742017149925232, -0.4790218770503998,
+ 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [1, 2, 1, 1, 8], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'concat',
+ 'arguments':
+ [{'inputs': ['concatInput1', 'concatInput2']}, {'axis': 4}],
+ 'outputs': 'concatOutput'
+ }],
+ 'expectedOutputs': {
+ 'concatOutput': {
+ 'data': [
+ -0.3944413363933563, 0.861982524394989, 0.337996244430542,
+ -0.990639865398407, -0.5945112705230713, -0.402848482131958,
+ -0.9531654119491577, -0.6731740236282349, 0.49189892411231995,
+ -0.15864109992980957, -0.3418811559677124, -0.9158143401145935,
+ 0.576785683631897, 0.32276400923728943, -0.44735023379325867,
+ 0.11028251051902771, -0.7206121683120728, -0.7993468642234802,
+ 0.6653800010681152, 0.03886038810014725, 0.5182055234909058,
+ -0.8742017149925232, -0.4790218770503998, 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [1, 2, 1, 1, 12], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'concat two float16 5D tensors of same others dimensions except different 5th dimension along axis 4',
+ 'graph': {
+ 'inputs': {
+ 'concatInput1': {
+ 'data': [
+ -0.3944413363933563, 0.861982524394989, 0.337996244430542,
+ -0.990639865398407, 0.576785683631897, 0.32276400923728943,
+ -0.44735023379325867, 0.11028251051902771
+ ],
+ 'descriptor': {'dimensions': [1, 2, 1, 1, 4], 'dataType': 'float16'}
+ },
+ 'concatInput2': {
+ 'data': [
+ -0.5945112705230713, -0.402848482131958, -0.9531654119491577,
+ -0.6731740236282349, 0.49189892411231995, -0.15864109992980957,
+ -0.3418811559677124, -0.9158143401145935, -0.7206121683120728,
+ -0.7993468642234802, 0.6653800010681152, 0.03886038810014725,
+ 0.5182055234909058, -0.8742017149925232, -0.4790218770503998,
+ 0.1211843192577362
+ ],
+ 'descriptor': {'dimensions': [1, 2, 1, 1, 8], 'dataType': 'float16'}
+ }
+ },
+ 'operators': [{
+ 'name': 'concat',
+ 'arguments':
+ [{'inputs': ['concatInput1', 'concatInput2']}, {'axis': 4}],
+ 'outputs': 'concatOutput'
+ }],
+ 'expectedOutputs': {
+ 'concatOutput': {
+ 'data': [
+ -0.39453125, 0.86181640625, 0.337890625, -0.99072265625,
+ -0.5947265625, -0.40283203125, -0.953125, -0.67333984375,
+ 0.491943359375, -0.15869140625, -0.341796875, -0.916015625,
+ 0.57666015625, 0.32275390625, -0.447265625, 0.11029052734375,
+ -0.720703125, -0.79931640625, 0.66552734375, 0.038848876953125,
+ 0.51806640625, -0.8740234375, -0.47900390625, 0.12115478515625
+ ],
+ 'descriptor': {'dimensions': [1, 2, 1, 1, 12], 'dataType': 'float16'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ concatTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndComputeWithConcat, getConcatPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/constant.https.any.js b/tests/wpt/tests/webnn/conformance_tests/constant.https.any.js
deleted file mode 100644
index acc24e7772b..00000000000
--- a/tests/wpt/tests/webnn/conformance_tests/constant.https.any.js
+++ /dev/null
@@ -1,13 +0,0 @@
-// META: title=test WebNN API constant
-// META: global=window,dedicatedworker
-// META: variant=?cpu
-// META: variant=?gpu
-// META: variant=?npu
-// META: script=../resources/utils.js
-// META: timeout=long
-
-'use strict';
-
-// https://webmachinelearning.github.io/webnn/#api-mlgraphbuilder-constant-range
-
-runWebNNConformanceTests('constant', buildConstantRange);
diff --git a/tests/wpt/tests/webnn/conformance_tests/conv2d.https.any.js b/tests/wpt/tests/webnn/conformance_tests/conv2d.https.any.js
index f6e5ec0fa1d..b3354728634 100644
--- a/tests/wpt/tests/webnn/conformance_tests/conv2d.https.any.js
+++ b/tests/wpt/tests/webnn/conformance_tests/conv2d.https.any.js
@@ -8,6 +8,1111 @@
'use strict';
-// https://webmachinelearning.github.io/webnn/#api-mlgraphbuilder-conv2d
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-conv2d
+// Compute a 2-D convolution given 4-D input and filter tensors.
+//
+// enum MLConv2dFilterOperandLayout {
+// "oihw",
+// "hwio",
+// "ohwi",
+// "ihwo"
+// };
+//
+// dictionary MLConv2dOptions {
+// sequence<[EnforceRange] unsigned long> padding;
+// sequence<[EnforceRange] unsigned long> strides;
+// sequence<[EnforceRange] unsigned long> dilations;
+// [EnforceRange] unsigned long groups = 1;
+// MLInputOperandLayout inputLayout = "nchw";
+// MLConv2dFilterOperandLayout filterLayout = "oihw";
+// MLOperand bias;
+// };
+//
+// MLOperand conv2d(
+// MLOperand input, MLOperand filter,
+// optional MLConv2dOptions options = {});
-runWebNNConformanceTests('conv2d', buildConv2d);
+
+const conv2dTests = [
+ {
+ 'name':
+ 'conv2d float32 4D both input and filter non-constant tensors default options',
+ 'graph': {
+ 'inputs': {
+ 'conv2dInput': {
+ 'data': [
+ 0.6124474406242371, 0.8857858777046204, 0.13667134940624237,
+ 0.5645291209220886, 0.8965172171592712, 0.36792829632759094,
+ 0.6811466217041016, 0.0479511022567749, 0.33355462551116943,
+ 0.19882695376873016, 0.41167140007019043, 0.07934240251779556,
+ 0.4272463321685791, 0.535800576210022, 0.5910806059837341,
+ 0.28415432572364807, 0.4147258698940277, 0.026906268671154976,
+ 0.3621256649494171, 0.9945681691169739, 0.07184549421072006,
+ 0.12204372137784958, 0.8422137498855591, 0.4537501037120819,
+ 0.21529443562030792
+ ],
+ 'descriptor': {'dimensions': [1, 1, 5, 5], 'dataType': 'float32'}
+ },
+ 'conv2dFilter': {
+ 'data': [
+ 0.3804761469364166, 0.5280312299728394, 0.21947036683559418,
+ 0.36689770221710205, 0.33974137902259827, 0.4200059771537781,
+ 0.3805030882358551, 0.19443586468696594, 0.5686976909637451
+ ],
+ 'descriptor': {'dimensions': [1, 1, 3, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'conv2d',
+ 'arguments': [{'input': 'conv2dInput'}, {'filter': 'conv2dFilter'}],
+ 'outputs': 'conv2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'conv2dOutput': {
+ 'data': [
+ 1.5323282480239868, 1.3573521375656128, 1.3641656637191772,
+ 1.071682333946228, 1.1259644031524658, 1.4713115692138672,
+ 1.078782320022583, 1.155018925666809, 1.656954288482666
+ ],
+ 'descriptor': {'dimensions': [1, 1, 3, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'conv2d float32 4D both input and filter constant tensors default options',
+ 'graph': {
+ 'inputs': {
+ 'conv2dInput': {
+ 'data': [
+ 0.6124474406242371, 0.8857858777046204, 0.13667134940624237,
+ 0.5645291209220886, 0.8965172171592712, 0.36792829632759094,
+ 0.6811466217041016, 0.0479511022567749, 0.33355462551116943,
+ 0.19882695376873016, 0.41167140007019043, 0.07934240251779556,
+ 0.4272463321685791, 0.535800576210022, 0.5910806059837341,
+ 0.28415432572364807, 0.4147258698940277, 0.026906268671154976,
+ 0.3621256649494171, 0.9945681691169739, 0.07184549421072006,
+ 0.12204372137784958, 0.8422137498855591, 0.4537501037120819,
+ 0.21529443562030792
+ ],
+ 'descriptor': {'dimensions': [1, 1, 5, 5], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'conv2dFilter': {
+ 'data': [
+ 0.3804761469364166, 0.5280312299728394, 0.21947036683559418,
+ 0.36689770221710205, 0.33974137902259827, 0.4200059771537781,
+ 0.3805030882358551, 0.19443586468696594, 0.5686976909637451
+ ],
+ 'descriptor': {'dimensions': [1, 1, 3, 3], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'conv2d',
+ 'arguments': [{'input': 'conv2dInput'}, {'filter': 'conv2dFilter'}],
+ 'outputs': 'conv2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'conv2dOutput': {
+ 'data': [
+ 1.5323282480239868, 1.3573521375656128, 1.3641656637191772,
+ 1.071682333946228, 1.1259644031524658, 1.4713115692138672,
+ 1.078782320022583, 1.155018925666809, 1.656954288482666
+ ],
+ 'descriptor': {'dimensions': [1, 1, 3, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'conv2d float32 4D input and filter tensors default options',
+ 'graph': {
+ 'inputs': {
+ 'conv2dInput': {
+ 'data': [
+ 0.6124474406242371, 0.8857858777046204, 0.13667134940624237,
+ 0.5645291209220886, 0.8965172171592712, 0.36792829632759094,
+ 0.6811466217041016, 0.0479511022567749, 0.33355462551116943,
+ 0.19882695376873016, 0.41167140007019043, 0.07934240251779556,
+ 0.4272463321685791, 0.535800576210022, 0.5910806059837341,
+ 0.28415432572364807, 0.4147258698940277, 0.026906268671154976,
+ 0.3621256649494171, 0.9945681691169739, 0.07184549421072006,
+ 0.12204372137784958, 0.8422137498855591, 0.4537501037120819,
+ 0.21529443562030792
+ ],
+ 'descriptor': {'dimensions': [1, 1, 5, 5], 'dataType': 'float32'}
+ },
+ 'conv2dFilter': {
+ 'data': [
+ 0.3804761469364166, 0.5280312299728394, 0.21947036683559418,
+ 0.36689770221710205, 0.33974137902259827, 0.4200059771537781,
+ 0.3805030882358551, 0.19443586468696594, 0.5686976909637451
+ ],
+ 'descriptor': {'dimensions': [1, 1, 3, 3], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'conv2d',
+ 'arguments': [{'input': 'conv2dInput'}, {'filter': 'conv2dFilter'}],
+ 'outputs': 'conv2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'conv2dOutput': {
+ 'data': [
+ 1.5323282480239868, 1.3573521375656128, 1.3641656637191772,
+ 1.071682333946228, 1.1259644031524658, 1.4713115692138672,
+ 1.078782320022583, 1.155018925666809, 1.656954288482666
+ ],
+ 'descriptor': {'dimensions': [1, 1, 3, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'conv2d float32 4D input and filter tensors options.padding',
+ 'graph': {
+ 'inputs': {
+ 'conv2dInput': {
+ 'data': [
+ 0.6124474406242371, 0.8857858777046204, 0.13667134940624237,
+ 0.5645291209220886, 0.8965172171592712, 0.36792829632759094,
+ 0.6811466217041016, 0.0479511022567749, 0.33355462551116943,
+ 0.19882695376873016, 0.41167140007019043, 0.07934240251779556,
+ 0.4272463321685791, 0.535800576210022, 0.5910806059837341,
+ 0.28415432572364807, 0.4147258698940277, 0.026906268671154976,
+ 0.3621256649494171, 0.9945681691169739, 0.07184549421072006,
+ 0.12204372137784958, 0.8422137498855591, 0.4537501037120819,
+ 0.21529443562030792
+ ],
+ 'descriptor': {'dimensions': [1, 1, 5, 5], 'dataType': 'float32'}
+ },
+ 'conv2dFilter': {
+ 'data': [
+ 0.3804761469364166, 0.5280312299728394, 0.21947036683559418,
+ 0.36689770221710205, 0.33974137902259827, 0.4200059771537781,
+ 0.3805030882358551, 0.19443586468696594, 0.5686976909637451
+ ],
+ 'descriptor': {'dimensions': [1, 1, 3, 3], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'conv2d',
+ 'arguments': [
+ {'input': 'conv2dInput'}, {'filter': 'conv2dFilter'},
+ {'options': {'padding': [1, 1, 1, 1]}}
+ ],
+ 'outputs': 'conv2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'conv2dOutput': {
+ 'data': [
+ 1.0390141010284424, 0.882753312587738, 1.0667248964309692,
+ 0.8146538734436035, 0.6772860884666443, 1.0540467500686646,
+ 1.5323282480239868, 1.3573521375656128, 1.3641656637191772,
+ 1.1969101428985596, 0.8080586791038513, 1.071682333946228,
+ 1.1259644031524658, 1.4713115692138672, 0.960464596748352,
+ 0.5888903141021729, 1.078782320022583, 1.155018925666809,
+ 1.656954288482666, 1.2012416124343872, 0.3167303800582886,
+ 0.7545653581619263, 0.7729666829109192, 0.9733180403709412,
+ 0.9025675058364868
+ ],
+ 'descriptor': {'dimensions': [1, 1, 5, 5], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'conv2d float32 4D input and filter tensors options.strides',
+ 'graph': {
+ 'inputs': {
+ 'conv2dInput': {
+ 'data': [
+ 0.6124474406242371, 0.8857858777046204, 0.13667134940624237,
+ 0.5645291209220886, 0.8965172171592712, 0.36792829632759094,
+ 0.6811466217041016, 0.0479511022567749, 0.33355462551116943,
+ 0.19882695376873016, 0.41167140007019043, 0.07934240251779556,
+ 0.4272463321685791, 0.535800576210022, 0.5910806059837341,
+ 0.28415432572364807, 0.4147258698940277, 0.026906268671154976,
+ 0.3621256649494171, 0.9945681691169739, 0.07184549421072006,
+ 0.12204372137784958, 0.8422137498855591, 0.4537501037120819,
+ 0.21529443562030792
+ ],
+ 'descriptor': {'dimensions': [1, 1, 5, 5], 'dataType': 'float32'}
+ },
+ 'conv2dFilter': {
+ 'data': [
+ 0.3804761469364166, 0.5280312299728394, 0.21947036683559418,
+ 0.36689770221710205, 0.33974137902259827, 0.4200059771537781,
+ 0.3805030882358551, 0.19443586468696594, 0.5686976909637451
+ ],
+ 'descriptor': {'dimensions': [1, 1, 3, 3], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'conv2d',
+ 'arguments': [
+ {'input': 'conv2dInput'}, {'filter': 'conv2dFilter'},
+ {'options': {'strides': [2, 2]}}
+ ],
+ 'outputs': 'conv2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'conv2dOutput': {
+ 'data': [
+ 1.5323282480239868, 1.3641656637191772, 1.078782320022583,
+ 1.656954288482666
+ ],
+ 'descriptor': {'dimensions': [1, 1, 2, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'conv2d float32 4D input and filter tensors options.dilations',
+ 'graph': {
+ 'inputs': {
+ 'conv2dInput': {
+ 'data': [
+ 0.6124474406242371, 0.8857858777046204, 0.13667134940624237,
+ 0.5645291209220886, 0.8965172171592712, 0.36792829632759094,
+ 0.6811466217041016, 0.0479511022567749, 0.33355462551116943,
+ 0.19882695376873016, 0.41167140007019043, 0.07934240251779556,
+ 0.4272463321685791, 0.535800576210022, 0.5910806059837341,
+ 0.28415432572364807, 0.4147258698940277, 0.026906268671154976,
+ 0.3621256649494171, 0.9945681691169739, 0.07184549421072006,
+ 0.12204372137784958, 0.8422137498855591, 0.4537501037120819,
+ 0.21529443562030792
+ ],
+ 'descriptor': {'dimensions': [1, 1, 5, 5], 'dataType': 'float32'}
+ },
+ 'conv2dFilter': {
+ 'data': [
+ 0.3804761469364166, 0.5280312299728394, 0.21947036683559418,
+ 0.36689770221710205, 0.33974137902259827, 0.4200059771537781,
+ 0.3805030882358551, 0.19443586468696594, 0.5686976909637451
+ ],
+ 'descriptor': {'dimensions': [1, 1, 3, 3], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'conv2d',
+ 'arguments': [
+ {'input': 'conv2dInput'}, {'filter': 'conv2dFilter'},
+ {'options': {'dilations': [2, 2]}}
+ ],
+ 'outputs': 'conv2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'conv2dOutput': {
+ 'data': [1.3599307537078857],
+ 'descriptor': {'dimensions': [1, 1, 1, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'depthwise conv2d float32 4D input and filter tensors options.groups= input_channels',
+ 'graph': {
+ 'inputs': {
+ 'conv2dInput': {
+ 'data': [
+ 0.8444867730140686, 0.9432409405708313, 0.6556113362312317,
+ 0.6982811689376831, 0.9994443655014038, 0.23663610219955444,
+ 0.36740678548812866, 0.2619246542453766, 0.6254158616065979,
+ 0.8403863906860352, 0.3783077001571655, 0.4543924033641815,
+ 0.25327208638191223, 0.5780375599861145, 0.5414554476737976,
+ 0.37846308946609497
+ ],
+ 'descriptor': {'dimensions': [1, 4, 2, 2], 'dataType': 'float32'}
+ },
+ 'conv2dFilter': {
+ 'data': [
+ 0.27221617102622986, 0.281202495098114, 0.854483962059021,
+ 0.1796930730342865, 0.7762278318405151, 0.5140685439109802,
+ 0.6374202966690063, 0.12801742553710938, 0.8373776078224182,
+ 0.5726001858711243, 0.09855203330516815, 0.5929878950119019,
+ 0.5900803804397583, 0.9690897464752197, 0.23175589740276337,
+ 0.14805112779140472
+ ],
+ 'descriptor': {'dimensions': [4, 1, 2, 2], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'conv2d',
+ 'arguments': [
+ {'input': 'conv2dInput'}, {'filter': 'conv2dFilter'},
+ {'options': {'groups': 4}}
+ ],
+ 'outputs': 'conv2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'conv2dOutput': {
+ 'data': [
+ 1.1808103322982788, 1.165167212486267, 1.311646819114685,
+ 0.8911385536193848
+ ],
+ 'descriptor': {'dimensions': [1, 4, 1, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'conv2d float32 4D input and filter tensors options.inputLayout=\'nchw\'',
+ 'graph': {
+ 'inputs': {
+ 'conv2dInput': {
+ 'data': [
+ 0.7529087066650391, 0.7520291805267334, 0.5949527621269226,
+ 0.2163185328245163, 0.07589349150657654, 0.151067852973938,
+ 0.1212485060095787, 0.5364335179328918, 0.5937089920043945,
+ 0.991003155708313, 0.3630942404270172, 0.9289674162864685,
+ 0.22727376222610474, 0.5414124131202698, 0.08445341885089874,
+ 0.6765284538269043, 0.6193256378173828, 0.3929215967655182
+ ],
+ 'descriptor': {'dimensions': [2, 1, 3, 3], 'dataType': 'float32'}
+ },
+ 'conv2dFilter': {
+ 'data': [
+ 0.14543837308883667, 0.9671129584312439, 0.10836050659418106,
+ 0.3202308118343353, 0.6952692270278931, 0.5070913434028625,
+ 0.08139707148075104, 0.5303338766098022, 0.3072136342525482,
+ 0.43241235613822937, 0.9849002361297607, 0.4281076192855835
+ ],
+ 'descriptor': {'dimensions': [3, 1, 2, 2], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'conv2d',
+ 'arguments': [
+ {'input': 'conv2dInput'}, {'filter': 'conv2dFilter'},
+ {'options': {'inputLayout': 'nchw'}}
+ ],
+ 'outputs': 'conv2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'conv2dOutput': {
+ 'data': [
+ 0.8845428228378296, 0.7413608431816101, 0.2897796928882599,
+ 0.4053896367549896, 0.9626783132553101, 0.9108520746231079,
+ 0.4832426905632019, 0.4878997206687927, 0.8020333051681519,
+ 0.6277193427085876, 0.4483422338962555, 0.8711439371109009,
+ 0.6932874917984009, 1.0369365215301514, 0.8282973766326904,
+ 0.35335418581962585, 1.1787647008895874, 0.8123774528503418,
+ 0.816078782081604, 0.6780439019203186, 0.9170808792114258,
+ 1.082636833190918, 1.2353861331939697, 0.9810346961021423
+ ],
+ 'descriptor': {'dimensions': [2, 3, 2, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'conv2d float32 4D input and filter tensors options.inputLayout=\'nhwc\'',
+ 'graph': {
+ 'inputs': {
+ 'conv2dInput': {
+ 'data': [
+ 0.7529087066650391, 0.7520291805267334, 0.5949527621269226,
+ 0.2163185328245163, 0.07589349150657654, 0.151067852973938,
+ 0.1212485060095787, 0.5364335179328918, 0.5937089920043945,
+ 0.991003155708313, 0.3630942404270172, 0.9289674162864685,
+ 0.22727376222610474, 0.5414124131202698, 0.08445341885089874,
+ 0.6765284538269043, 0.6193256378173828, 0.3929215967655182
+ ],
+ 'descriptor': {'dimensions': [2, 3, 3, 1], 'dataType': 'float32'}
+ },
+ 'conv2dFilter': {
+ 'data': [
+ 0.14543837308883667, 0.9671129584312439, 0.10836050659418106,
+ 0.3202308118343353, 0.6952692270278931, 0.5070913434028625,
+ 0.08139707148075104, 0.5303338766098022, 0.3072136342525482,
+ 0.43241235613822937, 0.9849002361297607, 0.4281076192855835
+ ],
+ 'descriptor': {'dimensions': [3, 1, 2, 2], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'conv2d',
+ 'arguments': [
+ {'input': 'conv2dInput'}, {'filter': 'conv2dFilter'},
+ {'options': {'inputLayout': 'nhwc'}}
+ ],
+ 'outputs': 'conv2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'conv2dOutput': {
+ 'data': [
+ 0.8845428228378296, 0.9626783132553101, 0.8020333051681519,
+ 0.7413608431816101, 0.9108520746231079, 0.6277193427085876,
+ 0.2897796928882599, 0.4832426905632019, 0.4483422338962555,
+ 0.4053896367549896, 0.4878997206687927, 0.8711439371109009,
+ 0.6932874917984009, 1.1787647008895874, 0.9170808792114258,
+ 1.0369365215301514, 0.8123774528503418, 1.082636833190918,
+ 0.8282973766326904, 0.816078782081604, 1.2353861331939697,
+ 0.35335418581962585, 0.6780439019203186, 0.9810346961021423
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'conv2d float32 4D input and filter tensors options.filterLayout=\'oihw\'',
+ 'graph': {
+ 'inputs': {
+ 'conv2dInput': {
+ 'data': [
+ 0.7529087066650391, 0.7520291805267334, 0.5949527621269226,
+ 0.2163185328245163, 0.07589349150657654, 0.151067852973938,
+ 0.1212485060095787, 0.5364335179328918, 0.5937089920043945,
+ 0.991003155708313, 0.3630942404270172, 0.9289674162864685,
+ 0.22727376222610474, 0.5414124131202698, 0.08445341885089874,
+ 0.6765284538269043, 0.6193256378173828, 0.3929215967655182
+ ],
+ 'descriptor': {'dimensions': [2, 1, 3, 3], 'dataType': 'float32'}
+ },
+ 'conv2dFilter': {
+ 'data': [
+ 0.14543837308883667, 0.9671129584312439, 0.10836050659418106,
+ 0.3202308118343353, 0.6952692270278931, 0.5070913434028625,
+ 0.08139707148075104, 0.5303338766098022, 0.3072136342525482,
+ 0.43241235613822937, 0.9849002361297607, 0.4281076192855835
+ ],
+ 'descriptor': {'dimensions': [3, 1, 2, 2], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'conv2d',
+ 'arguments': [
+ {'input': 'conv2dInput'}, {'filter': 'conv2dFilter'},
+ {'options': {'filterLayout': 'oihw'}}
+ ],
+ 'outputs': 'conv2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'conv2dOutput': {
+ 'data': [
+ 0.8845428228378296, 0.7413608431816101, 0.2897796928882599,
+ 0.4053896367549896, 0.9626783132553101, 0.9108520746231079,
+ 0.4832426905632019, 0.4878997206687927, 0.8020333051681519,
+ 0.6277193427085876, 0.4483422338962555, 0.8711439371109009,
+ 0.6932874917984009, 1.0369365215301514, 0.8282973766326904,
+ 0.35335418581962585, 1.1787647008895874, 0.8123774528503418,
+ 0.816078782081604, 0.6780439019203186, 0.9170808792114258,
+ 1.082636833190918, 1.2353861331939697, 0.9810346961021423
+ ],
+ 'descriptor': {'dimensions': [2, 3, 2, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'conv2d float32 4D input and filter tensors options.filterLayout=\'hwio\'',
+ 'graph': {
+ 'inputs': {
+ 'conv2dInput': {
+ 'data': [
+ 0.7529087066650391, 0.7520291805267334, 0.5949527621269226,
+ 0.2163185328245163, 0.07589349150657654, 0.151067852973938,
+ 0.1212485060095787, 0.5364335179328918, 0.5937089920043945,
+ 0.991003155708313, 0.3630942404270172, 0.9289674162864685,
+ 0.22727376222610474, 0.5414124131202698, 0.08445341885089874,
+ 0.6765284538269043, 0.6193256378173828, 0.3929215967655182
+ ],
+ 'descriptor': {'dimensions': [2, 1, 3, 3], 'dataType': 'float32'}
+ },
+ 'conv2dFilter': {
+ 'data': [
+ 0.14543837308883667, 0.6952692270278931, 0.3072136342525482,
+ 0.9671129584312439, 0.5070913434028625, 0.43241235613822937,
+ 0.10836050659418106, 0.08139707148075104, 0.9849002361297607,
+ 0.3202308118343353, 0.5303338766098022, 0.4281076192855835
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 3], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'conv2d',
+ 'arguments': [
+ {'input': 'conv2dInput'}, {'filter': 'conv2dFilter'},
+ {'options': {'filterLayout': 'hwio'}}
+ ],
+ 'outputs': 'conv2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'conv2dOutput': {
+ 'data': [
+ 0.8845428228378296, 0.7413608431816101, 0.2897796928882599,
+ 0.4053896367549896, 0.9626783132553101, 0.9108520746231079,
+ 0.4832426905632019, 0.4878997206687927, 0.8020333051681519,
+ 0.6277193427085876, 0.4483422338962555, 0.8711439371109009,
+ 0.6932874917984009, 1.0369365215301514, 0.8282973766326904,
+ 0.35335418581962585, 1.1787647008895874, 0.8123774528503418,
+ 0.816078782081604, 0.6780439019203186, 0.9170808792114258,
+ 1.082636833190918, 1.2353861331939697, 0.9810346961021423
+ ],
+ 'descriptor': {'dimensions': [2, 3, 2, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'conv2d float32 4D input and filter tensors options.filterLayout=\'ohwi\'',
+ 'graph': {
+ 'inputs': {
+ 'conv2dInput': {
+ 'data': [
+ 0.7529087066650391, 0.7520291805267334, 0.5949527621269226,
+ 0.2163185328245163, 0.07589349150657654, 0.151067852973938,
+ 0.1212485060095787, 0.5364335179328918, 0.5937089920043945,
+ 0.991003155708313, 0.3630942404270172, 0.9289674162864685,
+ 0.22727376222610474, 0.5414124131202698, 0.08445341885089874,
+ 0.6765284538269043, 0.6193256378173828, 0.3929215967655182
+ ],
+ 'descriptor': {'dimensions': [2, 1, 3, 3], 'dataType': 'float32'}
+ },
+ 'conv2dFilter': {
+ 'data': [
+ 0.14543837308883667, 0.9671129584312439, 0.10836050659418106,
+ 0.3202308118343353, 0.6952692270278931, 0.5070913434028625,
+ 0.08139707148075104, 0.5303338766098022, 0.3072136342525482,
+ 0.43241235613822937, 0.9849002361297607, 0.4281076192855835
+ ],
+ 'descriptor': {'dimensions': [3, 2, 2, 1], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'conv2d',
+ 'arguments': [
+ {'input': 'conv2dInput'}, {'filter': 'conv2dFilter'},
+ {'options': {'filterLayout': 'ohwi'}}
+ ],
+ 'outputs': 'conv2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'conv2dOutput': {
+ 'data': [
+ 0.8845428228378296, 0.7413608431816101, 0.2897796928882599,
+ 0.4053896367549896, 0.9626783132553101, 0.9108520746231079,
+ 0.4832426905632019, 0.4878997206687927, 0.8020333051681519,
+ 0.6277193427085876, 0.4483422338962555, 0.8711439371109009,
+ 0.6932874917984009, 1.0369365215301514, 0.8282973766326904,
+ 0.35335418581962585, 1.1787647008895874, 0.8123774528503418,
+ 0.816078782081604, 0.6780439019203186, 0.9170808792114258,
+ 1.082636833190918, 1.2353861331939697, 0.9810346961021423
+ ],
+ 'descriptor': {'dimensions': [2, 3, 2, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'conv2d float32 4D input and filter tensors options.filterLayout=\'ihwo\'',
+ 'graph': {
+ 'inputs': {
+ 'conv2dInput': {
+ 'data': [
+ 0.7529087066650391, 0.7520291805267334, 0.5949527621269226,
+ 0.2163185328245163, 0.07589349150657654, 0.151067852973938,
+ 0.1212485060095787, 0.5364335179328918, 0.5937089920043945,
+ 0.991003155708313, 0.3630942404270172, 0.9289674162864685,
+ 0.22727376222610474, 0.5414124131202698, 0.08445341885089874,
+ 0.6765284538269043, 0.6193256378173828, 0.3929215967655182
+ ],
+ 'descriptor': {'dimensions': [2, 1, 3, 3], 'dataType': 'float32'}
+ },
+ 'conv2dFilter': {
+ 'data': [
+ 0.14543837308883667, 0.6952692270278931, 0.3072136342525482,
+ 0.9671129584312439, 0.5070913434028625, 0.43241235613822937,
+ 0.10836050659418106, 0.08139707148075104, 0.9849002361297607,
+ 0.3202308118343353, 0.5303338766098022, 0.4281076192855835
+ ],
+ 'descriptor': {'dimensions': [1, 2, 2, 3], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'conv2d',
+ 'arguments': [
+ {'input': 'conv2dInput'}, {'filter': 'conv2dFilter'},
+ {'options': {'filterLayout': 'ihwo'}}
+ ],
+ 'outputs': 'conv2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'conv2dOutput': {
+ 'data': [
+ 0.8845428228378296, 0.7413608431816101, 0.2897796928882599,
+ 0.4053896367549896, 0.9626783132553101, 0.9108520746231079,
+ 0.4832426905632019, 0.4878997206687927, 0.8020333051681519,
+ 0.6277193427085876, 0.4483422338962555, 0.8711439371109009,
+ 0.6932874917984009, 1.0369365215301514, 0.8282973766326904,
+ 0.35335418581962585, 1.1787647008895874, 0.8123774528503418,
+ 0.816078782081604, 0.6780439019203186, 0.9170808792114258,
+ 1.082636833190918, 1.2353861331939697, 0.9810346961021423
+ ],
+ 'descriptor': {'dimensions': [2, 3, 2, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'conv2d float32 4D input and filter tensors options.inputLayout=\'nhwc\' and options.filterLayout=\'oihw\'',
+ 'graph': {
+ 'inputs': {
+ 'conv2dInput': {
+ 'data': [
+ 0.7529087066650391, 0.7520291805267334, 0.5949527621269226,
+ 0.2163185328245163, 0.07589349150657654, 0.151067852973938,
+ 0.1212485060095787, 0.5364335179328918, 0.5937089920043945,
+ 0.991003155708313, 0.3630942404270172, 0.9289674162864685,
+ 0.22727376222610474, 0.5414124131202698, 0.08445341885089874,
+ 0.6765284538269043, 0.6193256378173828, 0.3929215967655182
+ ],
+ 'descriptor': {'dimensions': [2, 3, 3, 1], 'dataType': 'float32'}
+ },
+ 'conv2dFilter': {
+ 'data': [
+ 0.14543837308883667, 0.9671129584312439, 0.10836050659418106,
+ 0.3202308118343353, 0.6952692270278931, 0.5070913434028625,
+ 0.08139707148075104, 0.5303338766098022, 0.3072136342525482,
+ 0.43241235613822937, 0.9849002361297607, 0.4281076192855835
+ ],
+ 'descriptor': {'dimensions': [3, 1, 2, 2], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'conv2d',
+ 'arguments': [
+ {'input': 'conv2dInput'}, {'filter': 'conv2dFilter'},
+ {'options': {'inputLayout': 'nhwc', 'filterLayout': 'oihw'}}
+ ],
+ 'outputs': 'conv2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'conv2dOutput': {
+ 'data': [
+ 0.8845428228378296, 0.9626783132553101, 0.8020333051681519,
+ 0.7413608431816101, 0.9108520746231079, 0.6277193427085876,
+ 0.2897796928882599, 0.4832426905632019, 0.4483422338962555,
+ 0.4053896367549896, 0.4878997206687927, 0.8711439371109009,
+ 0.6932874917984009, 1.1787647008895874, 0.9170808792114258,
+ 1.0369365215301514, 0.8123774528503418, 1.082636833190918,
+ 0.8282973766326904, 0.816078782081604, 1.2353861331939697,
+ 0.35335418581962585, 0.6780439019203186, 0.9810346961021423
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'conv2d float32 4D input and filter tensors options.inputLayout=\'nhwc\' and options.filterLayout=\'hwio\'',
+ 'graph': {
+ 'inputs': {
+ 'conv2dInput': {
+ 'data': [
+ 0.7529087066650391, 0.7520291805267334, 0.5949527621269226,
+ 0.2163185328245163, 0.07589349150657654, 0.151067852973938,
+ 0.1212485060095787, 0.5364335179328918, 0.5937089920043945,
+ 0.991003155708313, 0.3630942404270172, 0.9289674162864685,
+ 0.22727376222610474, 0.5414124131202698, 0.08445341885089874,
+ 0.6765284538269043, 0.6193256378173828, 0.3929215967655182
+ ],
+ 'descriptor': {'dimensions': [2, 3, 3, 1], 'dataType': 'float32'}
+ },
+ 'conv2dFilter': {
+ 'data': [
+ 0.14543837308883667, 0.6952692270278931, 0.3072136342525482,
+ 0.9671129584312439, 0.5070913434028625, 0.43241235613822937,
+ 0.10836050659418106, 0.08139707148075104, 0.9849002361297607,
+ 0.3202308118343353, 0.5303338766098022, 0.4281076192855835
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 3], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'conv2d',
+ 'arguments': [
+ {'input': 'conv2dInput'}, {'filter': 'conv2dFilter'},
+ {'options': {'inputLayout': 'nhwc', 'filterLayout': 'hwio'}}
+ ],
+ 'outputs': 'conv2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'conv2dOutput': {
+ 'data': [
+ 0.8845428228378296, 0.9626783132553101, 0.8020333051681519,
+ 0.7413608431816101, 0.9108520746231079, 0.6277193427085876,
+ 0.2897796928882599, 0.4832426905632019, 0.4483422338962555,
+ 0.4053896367549896, 0.4878997206687927, 0.8711439371109009,
+ 0.6932874917984009, 1.1787647008895874, 0.9170808792114258,
+ 1.0369365215301514, 0.8123774528503418, 1.082636833190918,
+ 0.8282973766326904, 0.816078782081604, 1.2353861331939697,
+ 0.35335418581962585, 0.6780439019203186, 0.9810346961021423
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'conv2d float32 4D input and filter tensors options.inputLayout=\'nhwc\' and options.filterLayout=\'ohwi\'',
+ 'graph': {
+ 'inputs': {
+ 'conv2dInput': {
+ 'data': [
+ 0.7529087066650391, 0.7520291805267334, 0.5949527621269226,
+ 0.2163185328245163, 0.07589349150657654, 0.151067852973938,
+ 0.1212485060095787, 0.5364335179328918, 0.5937089920043945,
+ 0.991003155708313, 0.3630942404270172, 0.9289674162864685,
+ 0.22727376222610474, 0.5414124131202698, 0.08445341885089874,
+ 0.6765284538269043, 0.6193256378173828, 0.3929215967655182
+ ],
+ 'descriptor': {'dimensions': [2, 3, 3, 1], 'dataType': 'float32'}
+ },
+ 'conv2dFilter': {
+ 'data': [
+ 0.14543837308883667, 0.9671129584312439, 0.10836050659418106,
+ 0.3202308118343353, 0.6952692270278931, 0.5070913434028625,
+ 0.08139707148075104, 0.5303338766098022, 0.3072136342525482,
+ 0.43241235613822937, 0.9849002361297607, 0.4281076192855835
+ ],
+ 'descriptor': {'dimensions': [3, 2, 2, 1], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'conv2d',
+ 'arguments': [
+ {'input': 'conv2dInput'}, {'filter': 'conv2dFilter'},
+ {'options': {'inputLayout': 'nhwc', 'filterLayout': 'ohwi'}}
+ ],
+ 'outputs': 'conv2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'conv2dOutput': {
+ 'data': [
+ 0.8845428228378296, 0.9626783132553101, 0.8020333051681519,
+ 0.7413608431816101, 0.9108520746231079, 0.6277193427085876,
+ 0.2897796928882599, 0.4832426905632019, 0.4483422338962555,
+ 0.4053896367549896, 0.4878997206687927, 0.8711439371109009,
+ 0.6932874917984009, 1.1787647008895874, 0.9170808792114258,
+ 1.0369365215301514, 0.8123774528503418, 1.082636833190918,
+ 0.8282973766326904, 0.816078782081604, 1.2353861331939697,
+ 0.35335418581962585, 0.6780439019203186, 0.9810346961021423
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'conv2d float32 4D input and filter tensors options.inputLayout=\'nhwc\' and options.filterLayout=\'ihwo\'',
+ 'graph': {
+ 'inputs': {
+ 'conv2dInput': {
+ 'data': [
+ 0.7529087066650391, 0.7520291805267334, 0.5949527621269226,
+ 0.2163185328245163, 0.07589349150657654, 0.151067852973938,
+ 0.1212485060095787, 0.5364335179328918, 0.5937089920043945,
+ 0.991003155708313, 0.3630942404270172, 0.9289674162864685,
+ 0.22727376222610474, 0.5414124131202698, 0.08445341885089874,
+ 0.6765284538269043, 0.6193256378173828, 0.3929215967655182
+ ],
+ 'descriptor': {'dimensions': [2, 3, 3, 1], 'dataType': 'float32'}
+ },
+ 'conv2dFilter': {
+ 'data': [
+ 0.14543837308883667, 0.6952692270278931, 0.3072136342525482,
+ 0.9671129584312439, 0.5070913434028625, 0.43241235613822937,
+ 0.10836050659418106, 0.08139707148075104, 0.9849002361297607,
+ 0.3202308118343353, 0.5303338766098022, 0.4281076192855835
+ ],
+ 'descriptor': {'dimensions': [1, 2, 2, 3], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'conv2d',
+ 'arguments': [
+ {'input': 'conv2dInput'}, {'filter': 'conv2dFilter'},
+ {'options': {'inputLayout': 'nhwc', 'filterLayout': 'ihwo'}}
+ ],
+ 'outputs': 'conv2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'conv2dOutput': {
+ 'data': [
+ 0.8845428228378296, 0.9626783132553101, 0.8020333051681519,
+ 0.7413608431816101, 0.9108520746231079, 0.6277193427085876,
+ 0.2897796928882599, 0.4832426905632019, 0.4483422338962555,
+ 0.4053896367549896, 0.4878997206687927, 0.8711439371109009,
+ 0.6932874917984009, 1.1787647008895874, 0.9170808792114258,
+ 1.0369365215301514, 0.8123774528503418, 1.082636833190918,
+ 0.8282973766326904, 0.816078782081604, 1.2353861331939697,
+ 0.35335418581962585, 0.6780439019203186, 0.9810346961021423
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'conv2d float32 4D input and filter tensors 1D options.bias',
+ 'graph': {
+ 'inputs': {
+ 'conv2dInput': {
+ 'data': [
+ 0.7529087066650391, 0.7520291805267334, 0.5949527621269226,
+ 0.2163185328245163, 0.07589349150657654, 0.151067852973938,
+ 0.1212485060095787, 0.5364335179328918, 0.5937089920043945,
+ 0.991003155708313, 0.3630942404270172, 0.9289674162864685,
+ 0.22727376222610474, 0.5414124131202698, 0.08445341885089874,
+ 0.6765284538269043, 0.6193256378173828, 0.3929215967655182
+ ],
+ 'descriptor': {'dimensions': [2, 1, 3, 3], 'dataType': 'float32'}
+ },
+ 'conv2dFilter': {
+ 'data': [
+ 0.14543837308883667, 0.9671129584312439, 0.10836050659418106,
+ 0.3202308118343353, 0.6952692270278931, 0.5070913434028625,
+ 0.08139707148075104, 0.5303338766098022, 0.3072136342525482,
+ 0.43241235613822937, 0.9849002361297607, 0.4281076192855835
+ ],
+ 'descriptor': {'dimensions': [3, 1, 2, 2], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'conv2dBias': {
+ 'data': [0.8135762214660645, 0.8394582867622375, 0.49444812536239624],
+ 'descriptor': {'dimensions': [3], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'conv2d',
+ 'arguments': [
+ {'input': 'conv2dInput'}, {'filter': 'conv2dFilter'},
+ {'options': {'bias': 'conv2dBias'}}
+ ],
+ 'outputs': 'conv2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'conv2dOutput': {
+ 'data': [
+ 1.698119044303894, 1.5549371242523193, 1.103355884552002,
+ 1.2189658880233765, 1.8021366596221924, 1.7503103017807007,
+ 1.3227009773254395, 1.3273580074310303, 1.2964813709259033,
+ 1.1221674680709839, 0.9427903890609741, 1.365592122077942,
+ 1.5068637132644653, 1.8505127429962158, 1.6418735980987549,
+ 1.1669304370880127, 2.0182230472564697, 1.6518357992172241,
+ 1.6555371284484863, 1.5175021886825562, 1.4115289449691772,
+ 1.577085018157959, 1.7298341989517212, 1.4754828214645386
+ ],
+ 'descriptor': {'dimensions': [2, 3, 2, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'conv2d float32 4D input and filter tensors all options',
+ 'graph': {
+ 'inputs': {
+ 'conv2dInput': {
+ 'data': [
+ 0.09971386939287186, 0.5374298095703125, 0.30570074915885925,
+ 0.7222362160682678, 0.5066556334495544, 0.3238430619239807,
+ 0.8721967935562134, 0.20989856123924255, 0.5052645802497864,
+ 0.026870572939515114, 0.5497115850448608, 0.06430311501026154,
+ 0.1560668647289276, 0.11970008909702301, 0.036145713180303574,
+ 0.41425615549087524, 0.2417246550321579, 0.6771785020828247,
+ 0.2087000161409378, 0.10979551076889038, 0.745035707950592,
+ 0.7443592548370361, 0.7873413562774658, 0.5887080430984497,
+ 0.11018028855323792, 0.9045036435127258, 0.11725221574306488,
+ 0.8508669137954712, 0.4244919717311859, 0.02537914551794529,
+ 0.747390866279602, 0.4645859897136688, 0.030408121645450592,
+ 0.4244018793106079, 0.3847547769546509, 0.7581132650375366,
+ 0.9901952147483826, 0.03716852888464928, 0.014496322721242905,
+ 0.8263142108917236, 0.21072064340114594, 0.6569713950157166,
+ 0.25842806696891785, 0.4802338480949402, 0.9704219102859497,
+ 0.2968284785747528, 0.7524365782737732, 0.029636209830641747,
+ 0.09028015285730362, 0.77818763256073
+ ],
+ 'descriptor': {'dimensions': [1, 2, 5, 5], 'dataType': 'float32'}
+ },
+ 'conv2dFilter': {
+ 'data': [
+ 0.6385681629180908, 0.07764163613319397, 0.1291629821062088,
+ 0.45633891224861145, 0.40438535809516907, 0.5943626761436462,
+ 0.14241264760494232, 0.9036700129508972
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 2], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'conv2dBias': {
+ 'data': [0.542375385761261, 0.8406118750572205],
+ 'descriptor': {'dimensions': [2], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'conv2d',
+ 'arguments': [
+ {'input': 'conv2dInput'}, {'filter': 'conv2dFilter'}, {
+ 'options': {
+ 'padding': [1, 0, 0, 1],
+ 'strides': [1, 1],
+ 'dilations': [1, 1],
+ 'groups': 2,
+ 'inputLayout': 'nchw',
+ 'filterLayout': 'hwio',
+ 'bias': 'conv2dBias'
+ }
+ }
+ ],
+ 'outputs': 'conv2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'conv2dOutput': {
+ 'data': [
+ 0.6592350006103516, 0.8032397627830505, 0.7688518762588501,
+ 0.9065912961959839, 0.7472594976425171, 0.9306347966194153,
+ 1.3076419830322266, 0.987708330154419, 1.277161955833435,
+ 0.8767756223678589, 1.0932797193527222, 1.1746727228164673,
+ 0.8218293786048889, 0.9220445156097412, 0.5741508603096008,
+ 1.103653073310852, 0.7977840900421143, 0.9610581398010254,
+ 0.7235122323036194, 0.6098566055297852, 1.2454158067703247,
+ 1.1973347663879395, 1.4039851427078247, 0.9435820579528809,
+ 0.6570426225662231, 1.4841723442077637, 1.6792051792144775,
+ 1.729936122894287, 1.115848422050476, 0.8556963205337524,
+ 1.828399419784546, 1.5416107177734375, 1.5019794702529907,
+ 1.4850915670394897, 1.0712661743164062, 2.4560532569885254,
+ 1.5126826763153076, 1.0718353986740112, 1.8044731616973877,
+ 1.3616151809692383, 2.07026743888855, 1.5584666728973389,
+ 1.4376858472824097, 2.3811910152435303, 1.4815508127212524,
+ 2.0131523609161377, 1.4835525751113892, 1.1790242195129395,
+ 2.0776233673095703, 1.378482699394226
+ ],
+ 'descriptor': {'dimensions': [1, 2, 5, 5], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'conv2d float32 4D input and filter tensors, both negative input tensor and options.bias',
+ 'graph': {
+ 'inputs': {
+ 'conv2dInput': {
+ 'data': [
+ -0.8073334693908691, -0.8839999437332153, -0.7700487375259399,
+ -0.5646049380302429, -0.39717939496040344, -0.10841356962919235,
+ -0.5519214868545532, -0.3954172134399414, -0.057589758187532425,
+ -0.5144240856170654, -0.21321901679039001, -0.950609028339386,
+ -0.8043696880340576, -0.8646378517150879, -0.9607220888137817,
+ -0.3264438509941101, -0.06884296983480453, -0.3203399181365967,
+ -0.2692728042602539, -0.3430887758731842, -0.8989502191543579,
+ -0.9038569331169128, -0.6369403004646301, -0.20070797204971313,
+ -0.7870702147483826, -0.3467883765697479, -0.060042694211006165,
+ -0.14985208213329315, -0.6482332348823547, -0.8934088349342346,
+ -0.8149284720420837, -0.6423668265342712, -0.032736241817474365,
+ -0.6608918905258179, -0.5843491554260254, -0.09921254217624664,
+ -0.16602523624897003, -0.9508541822433472, -0.3051462769508362,
+ -0.6210587024688721, -0.5400903820991516, -0.42009180784225464,
+ -0.18824540078639984, -0.3588937520980835, -0.7114293575286865,
+ -0.3751019835472107, -0.7108227610588074, -0.36050301790237427,
+ -0.5468712449073792, -0.032261595129966736
+ ],
+ 'descriptor': {'dimensions': [1, 2, 5, 5], 'dataType': 'float32'}
+ },
+ 'conv2dFilter': {
+ 'data': [
+ 0.6385681629180908, 0.07764163613319397, 0.1291629821062088,
+ 0.45633891224861145, 0.40438535809516907, 0.5943626761436462,
+ 0.14241264760494232, 0.9036700129508972
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 2], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'conv2dBias': {
+ 'data': [-0.37496936321258545, -0.4363507032394409],
+ 'descriptor': {'dimensions': [2], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'conv2d',
+ 'arguments': [
+ {'input': 'conv2dInput'}, {'filter': 'conv2dFilter'}, {
+ 'options': {
+ 'padding': [1, 0, 0, 1],
+ 'groups': 2,
+ 'filterLayout': 'hwio',
+ 'bias': 'conv2dBias'
+ }
+ }
+ ],
+ 'outputs': 'conv2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'conv2dOutput': {
+ 'data': [
+ -0.8273359537124634, -0.8421106934547424, -0.7667726874351501,
+ -0.6598507165908813, -0.5355829000473022, -1.1271283626556396,
+ -1.3184267282485962, -1.1077264547348022, -0.8833579421043396,
+ -0.8366210460662842, -0.7370880246162415, -1.2774468660354614,
+ -1.0833193063735962, -0.9646547436714172, -1.091966152191162,
+ -0.7757209539413452, -1.1593523025512695, -1.1681820154190063,
+ -1.2089394330978394, -1.127195954322815, -1.0845609903335571,
+ -0.9165211915969849, -0.9004610180854797, -0.78448486328125,
+ -0.9123346209526062, -0.6967275738716125, -0.6074546575546265,
+ -1.1112061738967896, -1.6289831399917603, -0.9673595428466797,
+ -1.5555264949798584, -0.9207774996757507, -1.3604848384857178,
+ -1.8152461051940918, -0.8530317544937134, -1.0017603635787964,
+ -1.4591015577316284, -1.5813868045806885, -1.4969244003295898,
+ -0.8508546352386475, -1.2204514741897583, -1.3029515743255615,
+ -1.0856342315673828, -1.5996664762496948, -0.9074177742004395,
+ -1.5352842807769775, -1.303133249282837, -1.3232042789459229,
+ -1.1430623531341553, -0.5107623338699341
+ ],
+ 'descriptor': {'dimensions': [1, 2, 5, 5], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ conv2dTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getConv2dPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/conv_transpose2d.https.any.js b/tests/wpt/tests/webnn/conformance_tests/conv_transpose2d.https.any.js
index 9e741a45d09..a76f180b556 100644
--- a/tests/wpt/tests/webnn/conformance_tests/conv_transpose2d.https.any.js
+++ b/tests/wpt/tests/webnn/conformance_tests/conv_transpose2d.https.any.js
@@ -8,6 +8,1483 @@
'use strict';
-// https://webmachinelearning.github.io/webnn/#api-mlgraphbuilder-convtranspose2d
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-convtranspose2d
+// Compute a 2-D transposed convolution given 4-D input and filter tensors.
+//
+// enum MLConvTranspose2dFilterOperandLayout {
+// "iohw",
+// "hwoi",
+// "ohwi"
+// };
+//
+// dictionary MLConvTranspose2dOptions {
+// sequence<[EnforceRange] unsigned long> padding;
+// sequence<[EnforceRange] unsigned long> strides;
+// sequence<[EnforceRange] unsigned long> dilations;
+// sequence<[EnforceRange] unsigned long> outputPadding;
+// sequence<[EnforceRange] unsigned long> outputSizes;
+// [EnforceRange] unsigned long groups = 1;
+// MLInputOperandLayout inputLayout = "nchw";
+// MLConvTranspose2dFilterOperandLayout filterLayout = "iohw";
+// MLOperand bias;
+// };
+//
+// MLOperand convTranspose2d(
+// MLOperand input, MLOperand filter,
+// optional MLConvTranspose2dOptions options = {});
-runWebNNConformanceTests('convTranspose2d', buildConvTranspose2d);
+
+const convTranspose2dTests = [
+ {
+ 'name':
+ 'convTranspose2d float32 4D both input and filter non-constant tensors default options',
+ 'graph': {
+ 'inputs': {
+ 'convTranspose2dInput': {
+ 'data': [
+ 0.5872158408164978, 0.6077792048454285, 0.017289165407419205,
+ 0.2614607512950897
+ ],
+ 'descriptor': {'dimensions': [1, 1, 2, 2], 'dataType': 'float32'}
+ },
+ 'convTranspose2dFilter': {
+ 'data': [
+ 0.3292713165283203, 0.5866857171058655, 0.29701370000839233,
+ 0.0033378428779542446
+ ],
+ 'descriptor': {'dimensions': [1, 1, 2, 2], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'convTranspose2d',
+ 'arguments': [
+ {'input': 'convTranspose2dInput'}, {'filter': 'convTranspose2dFilter'}
+ ],
+ 'outputs': 'convTranspose2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'convTranspose2dOutput': {
+ 'data': [
+ 0.1933533400297165, 0.5446354150772095, 0.3565753698348999,
+ 0.18010397255420685, 0.2787136137485504, 0.15542395412921906,
+ 0.0051351189613342285, 0.07771513611078262, 0.0008727149106562138
+ ],
+ 'descriptor': {'dimensions': [1, 1, 3, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'convTranspose2d float32 4D both input and filter constant tensors default options',
+ 'graph': {
+ 'inputs': {
+ 'convTranspose2dInput': {
+ 'data': [
+ 0.5872158408164978, 0.6077792048454285, 0.017289165407419205,
+ 0.2614607512950897
+ ],
+ 'descriptor': {'dimensions': [1, 1, 2, 2], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'convTranspose2dFilter': {
+ 'data': [
+ 0.3292713165283203, 0.5866857171058655, 0.29701370000839233,
+ 0.0033378428779542446
+ ],
+ 'descriptor': {'dimensions': [1, 1, 2, 2], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'convTranspose2d',
+ 'arguments': [
+ {'input': 'convTranspose2dInput'}, {'filter': 'convTranspose2dFilter'}
+ ],
+ 'outputs': 'convTranspose2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'convTranspose2dOutput': {
+ 'data': [
+ 0.1933533400297165, 0.5446354150772095, 0.3565753698348999,
+ 0.18010397255420685, 0.2787136137485504, 0.15542395412921906,
+ 0.0051351189613342285, 0.07771513611078262, 0.0008727149106562138
+ ],
+ 'descriptor': {'dimensions': [1, 1, 3, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'convTranspose2d float32 4D input and filter tensors default options',
+ 'graph': {
+ 'inputs': {
+ 'convTranspose2dInput': {
+ 'data': [
+ 0.5872158408164978, 0.6077792048454285, 0.017289165407419205,
+ 0.2614607512950897
+ ],
+ 'descriptor': {'dimensions': [1, 1, 2, 2], 'dataType': 'float32'}
+ },
+ 'convTranspose2dFilter': {
+ 'data': [
+ 0.3292713165283203, 0.5866857171058655, 0.29701370000839233,
+ 0.0033378428779542446
+ ],
+ 'descriptor': {'dimensions': [1, 1, 2, 2], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'convTranspose2d',
+ 'arguments': [
+ {'input': 'convTranspose2dInput'}, {'filter': 'convTranspose2dFilter'}
+ ],
+ 'outputs': 'convTranspose2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'convTranspose2dOutput': {
+ 'data': [
+ 0.1933533400297165, 0.5446354150772095, 0.3565753698348999,
+ 0.18010397255420685, 0.2787136137485504, 0.15542395412921906,
+ 0.0051351189613342285, 0.07771513611078262, 0.0008727149106562138
+ ],
+ 'descriptor': {'dimensions': [1, 1, 3, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'convTranspose2d float32 4D input and filter tensors options.groups',
+ 'graph': {
+ 'inputs': {
+ 'convTranspose2dInput': {
+ 'data': [
+ 0.8161798119544983, 0.5442776083946228, 0.7910669445991516,
+ 0.36564111709594727, 0.25429198145866394, 0.20815767347812653,
+ 0.7023073434829712, 0.5734469890594482
+ ],
+ 'descriptor': {'dimensions': [1, 2, 2, 2], 'dataType': 'float32'}
+ },
+ 'convTranspose2dFilter': {
+ 'data': [
+ 0.09232201427221298, 0.31896016001701355, 0.5445202589035034,
+ 0.6582807898521423, 0.9634373188018799, 0.012118860147893429,
+ 0.9230011701583862, 0.4781944155693054
+ ],
+ 'descriptor': {'dimensions': [2, 1, 2, 2], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'convTranspose2d',
+ 'arguments': [
+ {'input': 'convTranspose2dInput'},
+ {'filter': 'convTranspose2dFilter'}, {'options': {'groups': 2}}
+ ],
+ 'outputs': 'convTranspose2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'convTranspose2dOutput': {
+ 'data': [
+ 0.07535136491060257, 0.3105776607990265, 0.1736028790473938,
+ 0.5174593329429626, 1.1197212934494019, 0.4749124348163605,
+ 0.4307519793510437, 0.7198431491851807, 0.24069452285766602,
+ 0.2449943870306015, 0.20362859964370728, 0.002522633643820882,
+ 0.9113409519195557, 0.8747221827507019, 0.10648936033248901,
+ 0.6482304930686951, 0.865131676197052, 0.2742191553115845
+ ],
+ 'descriptor': {'dimensions': [1, 2, 3, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'convTranspose2d float32 4D input and filter tensors options.groups=2 options.strides=[2, 2]',
+ 'graph': {
+ 'inputs': {
+ 'convTranspose2dInput': {
+ 'data': [
+ 0.8161798119544983, 0.5442776083946228, 0.7910669445991516,
+ 0.36564111709594727, 0.25429198145866394, 0.20815767347812653,
+ 0.7023073434829712, 0.5734469890594482
+ ],
+ 'descriptor': {'dimensions': [1, 2, 2, 2], 'dataType': 'float32'}
+ },
+ 'convTranspose2dFilter': {
+ 'data': [
+ 0.09232201427221298, 0.31896016001701355, 0.5445202589035034,
+ 0.6582807898521423, 0.9634373188018799, 0.012118860147893429,
+ 0.9230011701583862, 0.4781944155693054
+ ],
+ 'descriptor': {'dimensions': [2, 1, 2, 2], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'convTranspose2d',
+ 'arguments': [
+ {'input': 'convTranspose2dInput'},
+ {'filter': 'convTranspose2dFilter'},
+ {'options': {'strides': [2, 2], 'groups': 2}}
+ ],
+ 'outputs': 'convTranspose2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'convTranspose2dOutput': {
+ 'data': [
+ 0.07535136491060257, 0.26032882928848267, 0.050248805433511734,
+ 0.1736028790473938, 0.44442644715309143, 0.537275493144989,
+ 0.29637017846107483, 0.3582874834537506, 0.07303289324045181,
+ 0.2523188292980194, 0.03375672549009323, 0.11662495136260986,
+ 0.4307519793510437, 0.5207441449165344, 0.19909898936748505,
+ 0.24069452285766602, 0.2449943870306015, 0.0030817289371043444,
+ 0.20054687559604645, 0.002522633643820882, 0.23471179604530334,
+ 0.12160100787878036, 0.19212977588176727, 0.09953983873128891,
+ 0.6766291260719299, 0.008511164225637913, 0.5524802207946777,
+ 0.00694952392950654, 0.6482304930686951, 0.3358394503593445,
+ 0.5292922258377075, 0.2742191553115845
+ ],
+ 'descriptor': {'dimensions': [1, 2, 4, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'convTranspose2d float32 4D input and filter tensors options.padding',
+ 'graph': {
+ 'inputs': {
+ 'convTranspose2dInput': {
+ 'data': [
+ 0.5872158408164978, 0.6077792048454285, 0.017289165407419205,
+ 0.2614607512950897
+ ],
+ 'descriptor': {'dimensions': [1, 1, 2, 2], 'dataType': 'float32'}
+ },
+ 'convTranspose2dFilter': {
+ 'data': [
+ 0.3292713165283203, 0.5866857171058655, 0.29701370000839233,
+ 0.0033378428779542446
+ ],
+ 'descriptor': {'dimensions': [1, 1, 2, 2], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'convTranspose2d',
+ 'arguments': [
+ {'input': 'convTranspose2dInput'},
+ {'filter': 'convTranspose2dFilter'},
+ {'options': {'padding': [1, 1, 1, 1]}}
+ ],
+ 'outputs': 'convTranspose2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'convTranspose2dOutput': {
+ 'data': [0.2787136137485504],
+ 'descriptor': {'dimensions': [1, 1, 1, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'convTranspose2d options.padding is the same upper padding',
+ 'graph': {
+ 'inputs': {
+ 'convTranspose2dInput': {
+ 'data': [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5],
+ 'descriptor': {'dimensions': [1, 3, 3, 1], 'dataType': 'float32'}
+ },
+ 'convTranspose2dFilter': {
+ 'data': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
+ 'descriptor': {'dimensions': [2, 3, 3, 1], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'convTranspose2d',
+ 'arguments': [
+ {'input': 'convTranspose2dInput'},
+ {'filter': 'convTranspose2dFilter'}, {
+ 'options': {
+ 'outputSizes': [6, 6],
+ 'groups': 1,
+ 'strides': [2, 2],
+ 'dilations': [1, 1],
+ 'padding': [0, 1, 0, 1],
+ 'filterLayout': 'ohwi',
+ 'inputLayout': 'nhwc'
+ }
+ }
+ ],
+ 'outputs': 'convTranspose2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'convTranspose2dOutput': {
+ 'data': [
+ 0.5, 0.5, 0.5, 0.5, 1, 1, 0.5, 0.5, 1, 1, 0.5, 0.5,
+ 0.5, 0.5, 0.5, 0.5, 1, 1, 0.5, 0.5, 1, 1, 0.5, 0.5,
+ 1, 1, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1,
+ 0.5, 0.5, 0.5, 0.5, 1, 1, 0.5, 0.5, 1, 1, 0.5, 0.5,
+ 1, 1, 1, 1, 2, 2, 1, 1, 2, 2, 1, 1,
+ 0.5, 0.5, 0.5, 0.5, 1, 1, 0.5, 0.5, 1, 1, 0.5, 0.5
+ ],
+ 'descriptor': {'dimensions': [1, 6, 6, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'convTranspose2d float32 4D input and filter tensors options.strides',
+ 'graph': {
+ 'inputs': {
+ 'convTranspose2dInput': {
+ 'data': [
+ 0.05605664849281311, 0.7114229798316956, 0.6529743671417236,
+ 0.38622909784317017, 0.3870837390422821, 0.9461629390716553,
+ 0.09573192149400711, 0.9234652519226074, 0.636277973651886
+ ],
+ 'descriptor': {'dimensions': [1, 1, 3, 3], 'dataType': 'float32'}
+ },
+ 'convTranspose2dFilter': {
+ 'data': [
+ 0.8614422678947449, 0.6267672777175903, 0.6366490125656128,
+ 0.8382642269134521, 0.11884837597608566, 0.9921330213546753,
+ 0.3285411298274994, 0.8742373585700989, 0.7205492258071899,
+ 0.9801966547966003, 0.06169835478067398, 0.3220160901546478,
+ 0.7498031854629517, 0.3930714726448059, 0.13811933994293213,
+ 0.28385090827941895, 0.4235861301422119, 0.1448512077331543
+ ],
+ 'descriptor': {'dimensions': [1, 2, 3, 3], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'convTranspose2d',
+ 'arguments': [
+ {'input': 'convTranspose2dInput'},
+ {'filter': 'convTranspose2dFilter'}, {'options': {'strides': [3, 2]}}
+ ],
+ 'outputs': 'convTranspose2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'convTranspose2dOutput': {
+ 'data': [
+ 0.04828956723213196, 0.03513447195291519, 0.6485382318496704,
+ 0.4458966553211212, 1.015426516532898, 0.4092629551887512,
+ 0.4157154858112335, 0.0469902828335762, 0.0066622416488826275,
+ 0.6519761085510254, 0.08455146849155426, 1.2531912326812744,
+ 0.07760494202375412, 0.6478374600410461, 0.018416915088891983,
+ 0.04900681599974632, 0.27412328124046326, 0.6219525337219238,
+ 0.7271442413330078, 0.5708546042442322, 0.4705001711845398,
+ 0.3327140808105469, 0.24207575619220734, 0.5793426632881165,
+ 0.24261142313480377, 1.0615012645721436, 0.593023955821991,
+ 0.6023737192153931, 0.32376202940940857, 0.04590269923210144,
+ 0.7076690793037415, 0.0460042729973793, 1.177173137664795,
+ 0.11244992911815643, 0.9387195110321045, 0.12689214944839478,
+ 0.3376559019088745, 0.40547001361846924, 0.3384030759334564,
+ 0.5897663235664368, 0.8271709680557251, 0.6817569732666016,
+ 0.08246752619743347, 0.06000163406133652, 0.8564596176147461,
+ 0.5787978172302246, 1.1360399723052979, 0.39879822731018066,
+ 0.4050857424736023, 0.0802486464381218, 0.011377583257853985,
+ 0.8690866827964783, 0.1097523421049118, 1.4495694637298584,
+ 0.0756206065416336, 0.6312723755836487, 0.03145187348127365,
+ 0.08369242399930954, 0.37237587571144104, 0.8073278069496155,
+ 0.8744456768035889, 0.556257963180542, 0.45846959948539734,
+ 0.05494653806090355, 0.0034586030524224043, 0.7153855562210083,
+ 0.04389362782239914, 0.869132936000824, 0.04028744250535965,
+ 0.21026825904846191, 0.04203145205974579, 0.02203426882624626,
+ 0.5411697030067444, 0.2796400785446167, 0.5878635048866272,
+ 0.25666558742523193, 0.0901883915066719, 0.015911730006337166,
+ 0.023744819685816765, 0.21005792915821075, 0.30134889483451843,
+ 0.2883978486061096, 0.27659088373184204, 0.09458412230014801,
+ 0.3785804808139801, 0.02382970042526722, 0.5037901997566223,
+ 0.0238824300467968, 1.0520728826522827, 0.05837669596076012,
+ 0.3046796917915344, 0.2895958125591278, 0.15181563794612885,
+ 0.3435823321342468, 0.15215156972408295, 0.7628997564315796,
+ 0.37190964818000793, 0.13068340718746185, 0.1096314787864685,
+ 0.16360129415988922, 0.16581982374191284, 0.16396330296993256,
+ 0.3246387541294098, 0.400781512260437, 0.13705284893512726,
+ 0.09383610635995865, 0.00590650225058198, 0.9360047578811646,
+ 0.05697628855705261, 0.9210482239723206, 0.03925730288028717,
+ 0.20489174127578735, 0.07178010046482086, 0.03762948885560036,
+ 0.7056396007537842, 0.36298784613609314, 0.6046316623687744,
+ 0.2501027286052704, 0.08788229525089264, 0.027173593640327454,
+ 0.04055071249604225, 0.27599334716796875, 0.3911670744419098,
+ 0.3143731355667114, 0.26951852440834045, 0.09216563403606415
+ ],
+ 'descriptor': {'dimensions': [1, 2, 9, 7], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'convTranspose2d float32 4D input and filter tensors options.dilations',
+ 'graph': {
+ 'inputs': {
+ 'convTranspose2dInput': {
+ 'data': [
+ 0.3194596767425537, 0.9762163758277893, 0.4131408631801605,
+ 0.47982943058013916, 0.76741623878479, 0.9083173871040344,
+ 0.6205142140388489, 0.6580719947814941, 0.6553052067756653
+ ],
+ 'descriptor': {'dimensions': [1, 1, 3, 3], 'dataType': 'float32'}
+ },
+ 'convTranspose2dFilter': {
+ 'data': [
+ 0.6835425496101379, 0.9641214609146118, 0.8272836804389954,
+ 0.5771222710609436
+ ],
+ 'descriptor': {'dimensions': [1, 1, 2, 2], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'convTranspose2d',
+ 'arguments': [
+ {'input': 'convTranspose2dInput'},
+ {'filter': 'convTranspose2dFilter'},
+ {'options': {'dilations': [2, 2]}}
+ ],
+ 'outputs': 'convTranspose2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'convTranspose2dOutput': {
+ 'data': [
+ 0.21836428344249725, 0.6672854423522949, 0.590397298336029,
+ 0.9411911368370056, 0.39831796288490295, 0.3279838263988495,
+ 0.5245616436004639, 1.0834873914718628, 0.7398824691772461,
+ 0.8757283091545105, 0.6884316205978394, 1.2574280500411987,
+ 1.5723320245742798, 1.1978574991226196, 0.8702266216278076,
+ 0.39695504307746887, 0.6348709464073181, 1.0283564329147339,
+ 0.44289299845695496, 0.5242102146148682, 0.5133413076400757,
+ 0.5444121956825256, 0.9002358913421631, 0.37978801131248474,
+ 0.3781912326812744
+ ],
+ 'descriptor': {'dimensions': [1, 1, 5, 5], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'convTranspose2d float32 4D input and filter tensors options.outputPadding',
+ 'graph': {
+ 'inputs': {
+ 'convTranspose2dInput': {
+ 'data': [
+ 0.05605664849281311, 0.7114229798316956, 0.6529743671417236,
+ 0.38622909784317017, 0.3870837390422821, 0.9461629390716553,
+ 0.09573192149400711, 0.9234652519226074, 0.636277973651886
+ ],
+ 'descriptor': {'dimensions': [1, 1, 3, 3], 'dataType': 'float32'}
+ },
+ 'convTranspose2dFilter': {
+ 'data': [
+ 0.8614422678947449, 0.6267672777175903, 0.6366490125656128,
+ 0.8382642269134521, 0.11884837597608566, 0.9921330213546753,
+ 0.3285411298274994, 0.8742373585700989, 0.7205492258071899,
+ 0.9801966547966003, 0.06169835478067398, 0.3220160901546478,
+ 0.7498031854629517, 0.3930714726448059, 0.13811933994293213,
+ 0.28385090827941895, 0.4235861301422119, 0.1448512077331543
+ ],
+ 'descriptor': {'dimensions': [1, 2, 3, 3], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'convTranspose2d',
+ 'arguments': [
+ {'input': 'convTranspose2dInput'},
+ {'filter': 'convTranspose2dFilter'},
+ {'options': {'strides': [3, 2], 'outputPadding': [1, 1]}}
+ ],
+ 'outputs': 'convTranspose2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'convTranspose2dOutput': {
+ 'data': [
+ 0.04828956723213196,
+ 0.03513447195291519,
+ 0.6485382318496704,
+ 0.4458966553211212,
+ 1.015426516532898,
+ 0.4092629551887512,
+ 0.4157154858112335,
+ 0,
+ 0.0469902828335762,
+ 0.0066622416488826275,
+ 0.6519761085510254,
+ 0.08455146849155426,
+ 1.2531912326812744,
+ 0.07760494202375412,
+ 0.6478374600410461,
+ 0,
+ 0.018416915088891983,
+ 0.04900681599974632,
+ 0.27412328124046326,
+ 0.6219525337219238,
+ 0.7271442413330078,
+ 0.5708546042442322,
+ 0.4705001711845398,
+ 0,
+ 0.3327140808105469,
+ 0.24207575619220734,
+ 0.5793426632881165,
+ 0.24261142313480377,
+ 1.0615012645721436,
+ 0.593023955821991,
+ 0.6023737192153931,
+ 0,
+ 0.32376202940940857,
+ 0.04590269923210144,
+ 0.7076690793037415,
+ 0.0460042729973793,
+ 1.177173137664795,
+ 0.11244992911815643,
+ 0.9387195110321045,
+ 0,
+ 0.12689214944839478,
+ 0.3376559019088745,
+ 0.40547001361846924,
+ 0.3384030759334564,
+ 0.5897663235664368,
+ 0.8271709680557251,
+ 0.6817569732666016,
+ 0,
+ 0.08246752619743347,
+ 0.06000163406133652,
+ 0.8564596176147461,
+ 0.5787978172302246,
+ 1.1360399723052979,
+ 0.39879822731018066,
+ 0.4050857424736023,
+ 0,
+ 0.0802486464381218,
+ 0.011377583257853985,
+ 0.8690866827964783,
+ 0.1097523421049118,
+ 1.4495694637298584,
+ 0.0756206065416336,
+ 0.6312723755836487,
+ 0,
+ 0.03145187348127365,
+ 0.08369242399930954,
+ 0.37237587571144104,
+ 0.8073278069496155,
+ 0.8744456768035889,
+ 0.556257963180542,
+ 0.45846959948539734,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0.05494653806090355,
+ 0.0034586030524224043,
+ 0.7153855562210083,
+ 0.04389362782239914,
+ 0.869132936000824,
+ 0.04028744250535965,
+ 0.21026825904846191,
+ 0,
+ 0.04203145205974579,
+ 0.02203426882624626,
+ 0.5411697030067444,
+ 0.2796400785446167,
+ 0.5878635048866272,
+ 0.25666558742523193,
+ 0.0901883915066719,
+ 0,
+ 0.015911730006337166,
+ 0.023744819685816765,
+ 0.21005792915821075,
+ 0.30134889483451843,
+ 0.2883978486061096,
+ 0.27659088373184204,
+ 0.09458412230014801,
+ 0,
+ 0.3785804808139801,
+ 0.02382970042526722,
+ 0.5037901997566223,
+ 0.0238824300467968,
+ 1.0520728826522827,
+ 0.05837669596076012,
+ 0.3046796917915344,
+ 0,
+ 0.2895958125591278,
+ 0.15181563794612885,
+ 0.3435823321342468,
+ 0.15215156972408295,
+ 0.7628997564315796,
+ 0.37190964818000793,
+ 0.13068340718746185,
+ 0,
+ 0.1096314787864685,
+ 0.16360129415988922,
+ 0.16581982374191284,
+ 0.16396330296993256,
+ 0.3246387541294098,
+ 0.400781512260437,
+ 0.13705284893512726,
+ 0,
+ 0.09383610635995865,
+ 0.00590650225058198,
+ 0.9360047578811646,
+ 0.05697628855705261,
+ 0.9210482239723206,
+ 0.03925730288028717,
+ 0.20489174127578735,
+ 0,
+ 0.07178010046482086,
+ 0.03762948885560036,
+ 0.7056396007537842,
+ 0.36298784613609314,
+ 0.6046316623687744,
+ 0.2501027286052704,
+ 0.08788229525089264,
+ 0,
+ 0.027173593640327454,
+ 0.04055071249604225,
+ 0.27599334716796875,
+ 0.3911670744419098,
+ 0.3143731355667114,
+ 0.26951852440834045,
+ 0.09216563403606415,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0
+ ],
+ 'descriptor': {'dimensions': [1, 2, 10, 8], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'convTranspose2d float32 4D input and filter tensors options.outputSizes',
+ 'graph': {
+ 'inputs': {
+ 'convTranspose2dInput': {
+ 'data': [
+ 0.05605664849281311, 0.7114229798316956, 0.6529743671417236,
+ 0.38622909784317017, 0.3870837390422821, 0.9461629390716553,
+ 0.09573192149400711, 0.9234652519226074, 0.636277973651886
+ ],
+ 'descriptor': {'dimensions': [1, 1, 3, 3], 'dataType': 'float32'}
+ },
+ 'convTranspose2dFilter': {
+ 'data': [
+ 0.8614422678947449, 0.6267672777175903, 0.6366490125656128,
+ 0.8382642269134521, 0.11884837597608566, 0.9921330213546753,
+ 0.3285411298274994, 0.8742373585700989, 0.7205492258071899,
+ 0.9801966547966003, 0.06169835478067398, 0.3220160901546478,
+ 0.7498031854629517, 0.3930714726448059, 0.13811933994293213,
+ 0.28385090827941895, 0.4235861301422119, 0.1448512077331543
+ ],
+ 'descriptor': {'dimensions': [1, 2, 3, 3], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'convTranspose2d',
+ 'arguments': [
+ {'input': 'convTranspose2dInput'},
+ {'filter': 'convTranspose2dFilter'},
+ {'options': {'strides': [3, 2], 'outputSizes': [10, 8]}}
+ ],
+ 'outputs': 'convTranspose2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'convTranspose2dOutput': {
+ 'data': [
+ 0.04828956723213196,
+ 0.03513447195291519,
+ 0.6485382318496704,
+ 0.4458966553211212,
+ 1.015426516532898,
+ 0.4092629551887512,
+ 0.4157154858112335,
+ 0,
+ 0.0469902828335762,
+ 0.0066622416488826275,
+ 0.6519761085510254,
+ 0.08455146849155426,
+ 1.2531912326812744,
+ 0.07760494202375412,
+ 0.6478374600410461,
+ 0,
+ 0.018416915088891983,
+ 0.04900681599974632,
+ 0.27412328124046326,
+ 0.6219525337219238,
+ 0.7271442413330078,
+ 0.5708546042442322,
+ 0.4705001711845398,
+ 0,
+ 0.3327140808105469,
+ 0.24207575619220734,
+ 0.5793426632881165,
+ 0.24261142313480377,
+ 1.0615012645721436,
+ 0.593023955821991,
+ 0.6023737192153931,
+ 0,
+ 0.32376202940940857,
+ 0.04590269923210144,
+ 0.7076690793037415,
+ 0.0460042729973793,
+ 1.177173137664795,
+ 0.11244992911815643,
+ 0.9387195110321045,
+ 0,
+ 0.12689214944839478,
+ 0.3376559019088745,
+ 0.40547001361846924,
+ 0.3384030759334564,
+ 0.5897663235664368,
+ 0.8271709680557251,
+ 0.6817569732666016,
+ 0,
+ 0.08246752619743347,
+ 0.06000163406133652,
+ 0.8564596176147461,
+ 0.5787978172302246,
+ 1.1360399723052979,
+ 0.39879822731018066,
+ 0.4050857424736023,
+ 0,
+ 0.0802486464381218,
+ 0.011377583257853985,
+ 0.8690866827964783,
+ 0.1097523421049118,
+ 1.4495694637298584,
+ 0.0756206065416336,
+ 0.6312723755836487,
+ 0,
+ 0.03145187348127365,
+ 0.08369242399930954,
+ 0.37237587571144104,
+ 0.8073278069496155,
+ 0.8744456768035889,
+ 0.556257963180542,
+ 0.45846959948539734,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0.05494653806090355,
+ 0.0034586030524224043,
+ 0.7153855562210083,
+ 0.04389362782239914,
+ 0.869132936000824,
+ 0.04028744250535965,
+ 0.21026825904846191,
+ 0,
+ 0.04203145205974579,
+ 0.02203426882624626,
+ 0.5411697030067444,
+ 0.2796400785446167,
+ 0.5878635048866272,
+ 0.25666558742523193,
+ 0.0901883915066719,
+ 0,
+ 0.015911730006337166,
+ 0.023744819685816765,
+ 0.21005792915821075,
+ 0.30134889483451843,
+ 0.2883978486061096,
+ 0.27659088373184204,
+ 0.09458412230014801,
+ 0,
+ 0.3785804808139801,
+ 0.02382970042526722,
+ 0.5037901997566223,
+ 0.0238824300467968,
+ 1.0520728826522827,
+ 0.05837669596076012,
+ 0.3046796917915344,
+ 0,
+ 0.2895958125591278,
+ 0.15181563794612885,
+ 0.3435823321342468,
+ 0.15215156972408295,
+ 0.7628997564315796,
+ 0.37190964818000793,
+ 0.13068340718746185,
+ 0,
+ 0.1096314787864685,
+ 0.16360129415988922,
+ 0.16581982374191284,
+ 0.16396330296993256,
+ 0.3246387541294098,
+ 0.400781512260437,
+ 0.13705284893512726,
+ 0,
+ 0.09383610635995865,
+ 0.00590650225058198,
+ 0.9360047578811646,
+ 0.05697628855705261,
+ 0.9210482239723206,
+ 0.03925730288028717,
+ 0.20489174127578735,
+ 0,
+ 0.07178010046482086,
+ 0.03762948885560036,
+ 0.7056396007537842,
+ 0.36298784613609314,
+ 0.6046316623687744,
+ 0.2501027286052704,
+ 0.08788229525089264,
+ 0,
+ 0.027173593640327454,
+ 0.04055071249604225,
+ 0.27599334716796875,
+ 0.3911670744419098,
+ 0.3143731355667114,
+ 0.26951852440834045,
+ 0.09216563403606415,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0
+ ],
+ 'descriptor': {'dimensions': [1, 2, 10, 8], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'convTranspose2d float32 4D input and filter tensors options.inputLayout=nchw',
+ 'graph': {
+ 'inputs': {
+ 'convTranspose2dInput': {
+ 'data': [
+ 0.05605664849281311, 0.7114229798316956, 0.6529743671417236,
+ 0.38622909784317017, 0.3870837390422821, 0.9461629390716553,
+ 0.09573192149400711, 0.9234652519226074, 0.636277973651886
+ ],
+ 'descriptor': {'dimensions': [1, 1, 3, 3], 'dataType': 'float32'}
+ },
+ 'convTranspose2dFilter': {
+ 'data': [
+ 0.8614422678947449, 0.6267672777175903, 0.6366490125656128,
+ 0.8382642269134521, 0.11884837597608566, 0.9921330213546753,
+ 0.3285411298274994, 0.8742373585700989, 0.7205492258071899,
+ 0.9801966547966003, 0.06169835478067398, 0.3220160901546478,
+ 0.7498031854629517, 0.3930714726448059, 0.13811933994293213,
+ 0.28385090827941895, 0.4235861301422119, 0.1448512077331543
+ ],
+ 'descriptor': {'dimensions': [1, 2, 3, 3], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'convTranspose2d',
+ 'arguments': [
+ {'input': 'convTranspose2dInput'},
+ {'filter': 'convTranspose2dFilter'},
+ {'options': {'inputLayout': 'nchw'}}
+ ],
+ 'outputs': 'convTranspose2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'convTranspose2dOutput': {
+ 'data': [
+ 0.04828956723213196, 0.6479843258857727, 1.0440847873687744,
+ 0.8621897101402283, 0.4157154858112335, 0.3797043561935425,
+ 1.1785486936569214, 1.9911006689071655, 1.6228916645050049,
+ 1.2502111196517944, 0.4246464669704437, 1.5086332559585571,
+ 3.287064790725708, 2.5666797161102295, 1.8143054246902466,
+ 0.20714078843593597, 1.2503143548965454, 1.6656538248062134,
+ 2.097904920578003, 1.313029408454895, 0.03145187348127365,
+ 0.38708874583244324, 1.0853508710861206, 1.2216601371765137,
+ 0.45846959948539734, 0.05494653806090355, 0.7007930278778076,
+ 0.7019880414009094, 0.26937708258628845, 0.21026825904846191,
+ 0.4206119179725647, 0.9587093591690063, 1.8526650667190552,
+ 0.5379507541656494, 0.39486807584762573, 0.3993436396121979,
+ 1.5788191556930542, 2.121230363845825, 1.141642689704895,
+ 0.4301592707633972, 0.18141157925128937, 1.0035220384597778,
+ 1.3417718410491943, 0.8345021605491638, 0.2249351441860199,
+ 0.027173593640327454, 0.3026771545410156, 0.5856420397758484,
+ 0.40328359603881836, 0.09216563403606415
+ ],
+ 'descriptor': {'dimensions': [1, 2, 5, 5], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'convTranspose2d float32 4D input and filter tensors options.inputLayout=nhwc',
+ 'graph': {
+ 'inputs': {
+ 'convTranspose2dInput': {
+ 'data': [
+ 0.05605664849281311, 0.7114229798316956, 0.6529743671417236,
+ 0.38622909784317017, 0.3870837390422821, 0.9461629390716553,
+ 0.09573192149400711, 0.9234652519226074, 0.636277973651886
+ ],
+ 'descriptor': {'dimensions': [1, 3, 3, 1], 'dataType': 'float32'}
+ },
+ 'convTranspose2dFilter': {
+ 'data': [
+ 0.8614422678947449, 0.6267672777175903, 0.6366490125656128,
+ 0.8382642269134521, 0.11884837597608566, 0.9921330213546753,
+ 0.3285411298274994, 0.8742373585700989, 0.7205492258071899,
+ 0.9801966547966003, 0.06169835478067398, 0.3220160901546478,
+ 0.7498031854629517, 0.3930714726448059, 0.13811933994293213,
+ 0.28385090827941895, 0.4235861301422119, 0.1448512077331543
+ ],
+ 'descriptor': {'dimensions': [1, 2, 3, 3], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'convTranspose2d',
+ 'arguments': [
+ {'input': 'convTranspose2dInput'},
+ {'filter': 'convTranspose2dFilter'},
+ {'options': {'inputLayout': 'nhwc'}}
+ ],
+ 'outputs': 'convTranspose2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'convTranspose2dOutput': {
+ 'data': [
+ 0.04828956723213196, 0.05494653806090355, 0.6479843258857727,
+ 0.7007930278778076, 1.0440847873687744, 0.7019880414009094,
+ 0.8621897101402283, 0.26937708258628845, 0.4157154858112335,
+ 0.21026825904846191, 0.3797043561935425, 0.4206119179725647,
+ 1.1785486936569214, 0.9587093591690063, 1.9911006689071655,
+ 1.8526650667190552, 1.6228916645050049, 0.5379507541656494,
+ 1.2502111196517944, 0.39486807584762573, 0.4246464669704437,
+ 0.3993436396121979, 1.5086332559585571, 1.5788191556930542,
+ 3.287064790725708, 2.121230363845825, 2.5666797161102295,
+ 1.141642689704895, 1.8143054246902466, 0.4301592707633972,
+ 0.20714078843593597, 0.18141157925128937, 1.2503143548965454,
+ 1.0035220384597778, 1.6656538248062134, 1.3417718410491943,
+ 2.097904920578003, 0.8345021605491638, 1.313029408454895,
+ 0.2249351441860199, 0.03145187348127365, 0.027173593640327454,
+ 0.38708874583244324, 0.3026771545410156, 1.0853508710861206,
+ 0.5856420397758484, 1.2216601371765137, 0.40328359603881836,
+ 0.45846959948539734, 0.09216563403606415
+ ],
+ 'descriptor': {'dimensions': [1, 5, 5, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'convTranspose2d float32 4D input and filter tensors options.filterLayout=iohw',
+ 'graph': {
+ 'inputs': {
+ 'convTranspose2dInput': {
+ 'data': [
+ 0.05605664849281311, 0.7114229798316956, 0.6529743671417236,
+ 0.38622909784317017, 0.3870837390422821, 0.9461629390716553,
+ 0.09573192149400711, 0.9234652519226074, 0.636277973651886
+ ],
+ 'descriptor': {'dimensions': [1, 1, 3, 3], 'dataType': 'float32'}
+ },
+ 'convTranspose2dFilter': {
+ 'data': [
+ 0.8614422678947449, 0.6267672777175903, 0.6366490125656128,
+ 0.8382642269134521, 0.11884837597608566, 0.9921330213546753,
+ 0.3285411298274994, 0.8742373585700989, 0.7205492258071899,
+ 0.9801966547966003, 0.06169835478067398, 0.3220160901546478,
+ 0.7498031854629517, 0.3930714726448059, 0.13811933994293213,
+ 0.28385090827941895, 0.4235861301422119, 0.1448512077331543
+ ],
+ 'descriptor': {'dimensions': [1, 2, 3, 3], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'convTranspose2d',
+ 'arguments': [
+ {'input': 'convTranspose2dInput'},
+ {'filter': 'convTranspose2dFilter'},
+ {'options': {'filterLayout': 'iohw'}}
+ ],
+ 'outputs': 'convTranspose2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'convTranspose2dOutput': {
+ 'data': [
+ 0.04828956723213196, 0.6479843258857727, 1.0440847873687744,
+ 0.8621897101402283, 0.4157154858112335, 0.3797043561935425,
+ 1.1785486936569214, 1.9911006689071655, 1.6228916645050049,
+ 1.2502111196517944, 0.4246464669704437, 1.5086332559585571,
+ 3.287064790725708, 2.5666797161102295, 1.8143054246902466,
+ 0.20714078843593597, 1.2503143548965454, 1.6656538248062134,
+ 2.097904920578003, 1.313029408454895, 0.03145187348127365,
+ 0.38708874583244324, 1.0853508710861206, 1.2216601371765137,
+ 0.45846959948539734, 0.05494653806090355, 0.7007930278778076,
+ 0.7019880414009094, 0.26937708258628845, 0.21026825904846191,
+ 0.4206119179725647, 0.9587093591690063, 1.8526650667190552,
+ 0.5379507541656494, 0.39486807584762573, 0.3993436396121979,
+ 1.5788191556930542, 2.121230363845825, 1.141642689704895,
+ 0.4301592707633972, 0.18141157925128937, 1.0035220384597778,
+ 1.3417718410491943, 0.8345021605491638, 0.2249351441860199,
+ 0.027173593640327454, 0.3026771545410156, 0.5856420397758484,
+ 0.40328359603881836, 0.09216563403606415
+ ],
+ 'descriptor': {'dimensions': [1, 2, 5, 5], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'convTranspose2d float32 4D input and filter tensors options.filterLayout=hwoi',
+ 'graph': {
+ 'inputs': {
+ 'convTranspose2dInput': {
+ 'data': [
+ 0.05605664849281311, 0.7114229798316956, 0.6529743671417236,
+ 0.38622909784317017, 0.3870837390422821, 0.9461629390716553,
+ 0.09573192149400711, 0.9234652519226074, 0.636277973651886
+ ],
+ 'descriptor': {'dimensions': [1, 1, 3, 3], 'dataType': 'float32'}
+ },
+ 'convTranspose2dFilter': {
+ 'data': [
+ 0.8614422678947449, 0.9801966547966003, 0.6267672777175903,
+ 0.06169835478067398, 0.6366490125656128, 0.3220160901546478,
+ 0.8382642269134521, 0.7498031854629517, 0.11884837597608566,
+ 0.3930714726448059, 0.9921330213546753, 0.13811933994293213,
+ 0.3285411298274994, 0.28385090827941895, 0.8742373585700989,
+ 0.4235861301422119, 0.7205492258071899, 0.1448512077331543
+ ],
+ 'descriptor': {'dimensions': [3, 3, 2, 1], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'convTranspose2d',
+ 'arguments': [
+ {'input': 'convTranspose2dInput'},
+ {'filter': 'convTranspose2dFilter'},
+ {'options': {'filterLayout': 'hwoi'}}
+ ],
+ 'outputs': 'convTranspose2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'convTranspose2dOutput': {
+ 'data': [
+ 0.04828956723213196, 0.6479843258857727, 1.0440847873687744,
+ 0.8621897101402283, 0.4157154858112335, 0.3797043561935425,
+ 1.1785486936569214, 1.9911006689071655, 1.6228916645050049,
+ 1.2502111196517944, 0.4246464669704437, 1.5086332559585571,
+ 3.287064790725708, 2.5666797161102295, 1.8143054246902466,
+ 0.20714078843593597, 1.2503143548965454, 1.6656538248062134,
+ 2.097904920578003, 1.313029408454895, 0.03145187348127365,
+ 0.38708874583244324, 1.0853508710861206, 1.2216601371765137,
+ 0.45846959948539734, 0.05494653806090355, 0.7007930278778076,
+ 0.7019880414009094, 0.26937708258628845, 0.21026825904846191,
+ 0.4206119179725647, 0.9587093591690063, 1.8526650667190552,
+ 0.5379507541656494, 0.39486807584762573, 0.3993436396121979,
+ 1.5788191556930542, 2.121230363845825, 1.141642689704895,
+ 0.4301592707633972, 0.18141157925128937, 1.0035220384597778,
+ 1.3417718410491943, 0.8345021605491638, 0.2249351441860199,
+ 0.027173593640327454, 0.3026771545410156, 0.5856420397758484,
+ 0.40328359603881836, 0.09216563403606415
+ ],
+ 'descriptor': {'dimensions': [1, 2, 5, 5], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'convTranspose2d float32 4D input and filter tensors options.filterLayout=ohwi',
+ 'graph': {
+ 'inputs': {
+ 'convTranspose2dInput': {
+ 'data': [
+ 0.05605664849281311, 0.7114229798316956, 0.6529743671417236,
+ 0.38622909784317017, 0.3870837390422821, 0.9461629390716553,
+ 0.09573192149400711, 0.9234652519226074, 0.636277973651886
+ ],
+ 'descriptor': {'dimensions': [1, 1, 3, 3], 'dataType': 'float32'}
+ },
+ 'convTranspose2dFilter': {
+ 'data': [
+ 0.8614422678947449, 0.6267672777175903, 0.6366490125656128,
+ 0.8382642269134521, 0.11884837597608566, 0.9921330213546753,
+ 0.3285411298274994, 0.8742373585700989, 0.7205492258071899,
+ 0.9801966547966003, 0.06169835478067398, 0.3220160901546478,
+ 0.7498031854629517, 0.3930714726448059, 0.13811933994293213,
+ 0.28385090827941895, 0.4235861301422119, 0.1448512077331543
+ ],
+ 'descriptor': {'dimensions': [2, 3, 3, 1], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'convTranspose2d',
+ 'arguments': [
+ {'input': 'convTranspose2dInput'},
+ {'filter': 'convTranspose2dFilter'},
+ {'options': {'filterLayout': 'ohwi'}}
+ ],
+ 'outputs': 'convTranspose2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'convTranspose2dOutput': {
+ 'data': [
+ 0.04828956723213196, 0.6479843258857727, 1.0440847873687744,
+ 0.8621897101402283, 0.4157154858112335, 0.3797043561935425,
+ 1.1785486936569214, 1.9911006689071655, 1.6228916645050049,
+ 1.2502111196517944, 0.4246464669704437, 1.5086332559585571,
+ 3.287064790725708, 2.5666797161102295, 1.8143054246902466,
+ 0.20714078843593597, 1.2503143548965454, 1.6656538248062134,
+ 2.097904920578003, 1.313029408454895, 0.03145187348127365,
+ 0.38708874583244324, 1.0853508710861206, 1.2216601371765137,
+ 0.45846959948539734, 0.05494653806090355, 0.7007930278778076,
+ 0.7019880414009094, 0.26937708258628845, 0.21026825904846191,
+ 0.4206119179725647, 0.9587093591690063, 1.8526650667190552,
+ 0.5379507541656494, 0.39486807584762573, 0.3993436396121979,
+ 1.5788191556930542, 2.121230363845825, 1.141642689704895,
+ 0.4301592707633972, 0.18141157925128937, 1.0035220384597778,
+ 1.3417718410491943, 0.8345021605491638, 0.2249351441860199,
+ 0.027173593640327454, 0.3026771545410156, 0.5856420397758484,
+ 0.40328359603881836, 0.09216563403606415
+ ],
+ 'descriptor': {'dimensions': [1, 2, 5, 5], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'convTranspose2d float32 4D input and filter tensors options.inputLayout=nhwc options.filterLayout=iohw',
+ 'graph': {
+ 'inputs': {
+ 'convTranspose2dInput': {
+ 'data': [
+ 0.05605664849281311, 0.7114229798316956, 0.6529743671417236,
+ 0.38622909784317017, 0.3870837390422821, 0.9461629390716553,
+ 0.09573192149400711, 0.9234652519226074, 0.636277973651886
+ ],
+ 'descriptor': {'dimensions': [1, 3, 3, 1], 'dataType': 'float32'}
+ },
+ 'convTranspose2dFilter': {
+ 'data': [
+ 0.8614422678947449, 0.6267672777175903, 0.6366490125656128,
+ 0.8382642269134521, 0.11884837597608566, 0.9921330213546753,
+ 0.3285411298274994, 0.8742373585700989, 0.7205492258071899,
+ 0.9801966547966003, 0.06169835478067398, 0.3220160901546478,
+ 0.7498031854629517, 0.3930714726448059, 0.13811933994293213,
+ 0.28385090827941895, 0.4235861301422119, 0.1448512077331543
+ ],
+ 'descriptor': {'dimensions': [1, 2, 3, 3], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'convTranspose2d',
+ 'arguments': [
+ {'input': 'convTranspose2dInput'},
+ {'filter': 'convTranspose2dFilter'},
+ {'options': {'inputLayout': 'nhwc', 'filterLayout': 'iohw'}}
+ ],
+ 'outputs': 'convTranspose2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'convTranspose2dOutput': {
+ 'data': [
+ 0.04828956723213196, 0.05494653806090355, 0.6479843258857727,
+ 0.7007930278778076, 1.0440847873687744, 0.7019880414009094,
+ 0.8621897101402283, 0.26937708258628845, 0.4157154858112335,
+ 0.21026825904846191, 0.3797043561935425, 0.4206119179725647,
+ 1.1785486936569214, 0.9587093591690063, 1.9911006689071655,
+ 1.8526650667190552, 1.6228916645050049, 0.5379507541656494,
+ 1.2502111196517944, 0.39486807584762573, 0.4246464669704437,
+ 0.3993436396121979, 1.5086332559585571, 1.5788191556930542,
+ 3.287064790725708, 2.121230363845825, 2.5666797161102295,
+ 1.141642689704895, 1.8143054246902466, 0.4301592707633972,
+ 0.20714078843593597, 0.18141157925128937, 1.2503143548965454,
+ 1.0035220384597778, 1.6656538248062134, 1.3417718410491943,
+ 2.097904920578003, 0.8345021605491638, 1.313029408454895,
+ 0.2249351441860199, 0.03145187348127365, 0.027173593640327454,
+ 0.38708874583244324, 0.3026771545410156, 1.0853508710861206,
+ 0.5856420397758484, 1.2216601371765137, 0.40328359603881836,
+ 0.45846959948539734, 0.09216563403606415
+ ],
+ 'descriptor': {'dimensions': [1, 5, 5, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'convTranspose2d float32 4D input and filter tensors options.inputLayout=nhwc options.filterLayout=hwoi',
+ 'graph': {
+ 'inputs': {
+ 'convTranspose2dInput': {
+ 'data': [
+ 0.05605664849281311, 0.7114229798316956, 0.6529743671417236,
+ 0.38622909784317017, 0.3870837390422821, 0.9461629390716553,
+ 0.09573192149400711, 0.9234652519226074, 0.636277973651886
+ ],
+ 'descriptor': {'dimensions': [1, 3, 3, 1], 'dataType': 'float32'}
+ },
+ 'convTranspose2dFilter': {
+ 'data': [
+ 0.8614422678947449, 0.9801966547966003, 0.6267672777175903,
+ 0.06169835478067398, 0.6366490125656128, 0.3220160901546478,
+ 0.8382642269134521, 0.7498031854629517, 0.11884837597608566,
+ 0.3930714726448059, 0.9921330213546753, 0.13811933994293213,
+ 0.3285411298274994, 0.28385090827941895, 0.8742373585700989,
+ 0.4235861301422119, 0.7205492258071899, 0.1448512077331543
+ ],
+ 'descriptor': {'dimensions': [3, 3, 2, 1], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'convTranspose2d',
+ 'arguments': [
+ {'input': 'convTranspose2dInput'},
+ {'filter': 'convTranspose2dFilter'},
+ {'options': {'inputLayout': 'nhwc', 'filterLayout': 'hwoi'}}
+ ],
+ 'outputs': 'convTranspose2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'convTranspose2dOutput': {
+ 'data': [
+ 0.04828956723213196, 0.05494653806090355, 0.6479843258857727,
+ 0.7007930278778076, 1.0440847873687744, 0.7019880414009094,
+ 0.8621897101402283, 0.26937708258628845, 0.4157154858112335,
+ 0.21026825904846191, 0.3797043561935425, 0.4206119179725647,
+ 1.1785486936569214, 0.9587093591690063, 1.9911006689071655,
+ 1.8526650667190552, 1.6228916645050049, 0.5379507541656494,
+ 1.2502111196517944, 0.39486807584762573, 0.4246464669704437,
+ 0.3993436396121979, 1.5086332559585571, 1.5788191556930542,
+ 3.287064790725708, 2.121230363845825, 2.5666797161102295,
+ 1.141642689704895, 1.8143054246902466, 0.4301592707633972,
+ 0.20714078843593597, 0.18141157925128937, 1.2503143548965454,
+ 1.0035220384597778, 1.6656538248062134, 1.3417718410491943,
+ 2.097904920578003, 0.8345021605491638, 1.313029408454895,
+ 0.2249351441860199, 0.03145187348127365, 0.027173593640327454,
+ 0.38708874583244324, 0.3026771545410156, 1.0853508710861206,
+ 0.5856420397758484, 1.2216601371765137, 0.40328359603881836,
+ 0.45846959948539734, 0.09216563403606415
+ ],
+ 'descriptor': {'dimensions': [1, 5, 5, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'convTranspose2d float32 4D input and filter tensors options.inputLayout=nhwc options.filterLayout=ohwi',
+ 'graph': {
+ 'inputs': {
+ 'convTranspose2dInput': {
+ 'data': [
+ 0.05605664849281311, 0.7114229798316956, 0.6529743671417236,
+ 0.38622909784317017, 0.3870837390422821, 0.9461629390716553,
+ 0.09573192149400711, 0.9234652519226074, 0.636277973651886
+ ],
+ 'descriptor': {'dimensions': [1, 3, 3, 1], 'dataType': 'float32'}
+ },
+ 'convTranspose2dFilter': {
+ 'data': [
+ 0.8614422678947449, 0.6267672777175903, 0.6366490125656128,
+ 0.8382642269134521, 0.11884837597608566, 0.9921330213546753,
+ 0.3285411298274994, 0.8742373585700989, 0.7205492258071899,
+ 0.9801966547966003, 0.06169835478067398, 0.3220160901546478,
+ 0.7498031854629517, 0.3930714726448059, 0.13811933994293213,
+ 0.28385090827941895, 0.4235861301422119, 0.1448512077331543
+ ],
+ 'descriptor': {'dimensions': [2, 3, 3, 1], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'convTranspose2d',
+ 'arguments': [
+ {'input': 'convTranspose2dInput'},
+ {'filter': 'convTranspose2dFilter'},
+ {'options': {'inputLayout': 'nhwc', 'filterLayout': 'ohwi'}}
+ ],
+ 'outputs': 'convTranspose2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'convTranspose2dOutput': {
+ 'data': [
+ 0.04828956723213196, 0.05494653806090355, 0.6479843258857727,
+ 0.7007930278778076, 1.0440847873687744, 0.7019880414009094,
+ 0.8621897101402283, 0.26937708258628845, 0.4157154858112335,
+ 0.21026825904846191, 0.3797043561935425, 0.4206119179725647,
+ 1.1785486936569214, 0.9587093591690063, 1.9911006689071655,
+ 1.8526650667190552, 1.6228916645050049, 0.5379507541656494,
+ 1.2502111196517944, 0.39486807584762573, 0.4246464669704437,
+ 0.3993436396121979, 1.5086332559585571, 1.5788191556930542,
+ 3.287064790725708, 2.121230363845825, 2.5666797161102295,
+ 1.141642689704895, 1.8143054246902466, 0.4301592707633972,
+ 0.20714078843593597, 0.18141157925128937, 1.2503143548965454,
+ 1.0035220384597778, 1.6656538248062134, 1.3417718410491943,
+ 2.097904920578003, 0.8345021605491638, 1.313029408454895,
+ 0.2249351441860199, 0.03145187348127365, 0.027173593640327454,
+ 0.38708874583244324, 0.3026771545410156, 1.0853508710861206,
+ 0.5856420397758484, 1.2216601371765137, 0.40328359603881836,
+ 0.45846959948539734, 0.09216563403606415
+ ],
+ 'descriptor': {'dimensions': [1, 5, 5, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'convTranspose2d float32 4D input and filter tensors options.bias',
+ 'graph': {
+ 'inputs': {
+ 'convTranspose2dInput': {
+ 'data': [
+ 0.1109575480222702, 0.8681362271308899, 0.7342095971107483,
+ 0.43077003955841064, 0.5981627106666565, 0.12321650236845016,
+ 0.1610974818468094, 0.0884026437997818, 0.29100972414016724
+ ],
+ 'descriptor': {'dimensions': [1, 1, 3, 3], 'dataType': 'float32'}
+ },
+ 'convTranspose2dFilter': {
+ 'data': [
+ 0.6161394715309143, 0.26224616169929504, 0.7951397895812988,
+ 0.8730561137199402, 0.8309102058410645, 0.854960560798645,
+ 0.5552039742469788, 0.840092122554779, 0.85308438539505
+ ],
+ 'descriptor': {'dimensions': [1, 1, 3, 3], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'convTranspose2dBias': {
+ 'data': [0.451673686504364],
+ 'descriptor': {'dimensions': [1], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'convTranspose2d',
+ 'arguments': [
+ {'input': 'convTranspose2dInput'},
+ {'filter': 'convTranspose2dFilter'},
+ {'options': {'bias': 'convTranspose2dBias'}}
+ ],
+ 'outputs': 'convTranspose2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'convTranspose2dOutput': {
+ 'data': [
+ 0.5200390219688416, 1.01566481590271, 1.2199413776397705,
+ 1.3345069885253906, 1.0354729890823364, 0.8139602541923523,
+ 1.7833205461502075, 2.484194278717041, 2.311894178390503,
+ 1.1773682832717896, 0.9886226654052734, 2.0037572383880615,
+ 2.9867470264434814, 2.5694668292999268, 1.41475510597229,
+ 0.8314860463142395, 1.3567005395889282, 1.8553334474563599,
+ 1.3828538656234741, 0.8055896162986755, 0.5411156415939331,
+ 0.6360918879508972, 0.8249395489692688, 0.7715635895729065,
+ 0.6999295353889465
+ ],
+ 'descriptor': {'dimensions': [1, 1, 5, 5], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'convTranspose2d float32 4D input and filter tensors, both negative input tensor and options.bias',
+ 'graph': {
+ 'inputs': {
+ 'convTranspose2dInput': {
+ 'data': [
+ -0.10889056324958801, -0.29801905155181885, -0.3907785713672638,
+ -0.5624061226844788, -0.7322093844413757, -0.8421320915222168,
+ -0.30598655343055725, -0.976659893989563, -0.014158561825752258
+ ],
+ 'descriptor': {'dimensions': [1, 1, 3, 3], 'dataType': 'float32'}
+ },
+ 'convTranspose2dFilter': {
+ 'data': [
+ 0.6161394715309143, 0.26224616169929504, 0.7951397895812988,
+ 0.8730561137199402, 0.8309102058410645, 0.854960560798645,
+ 0.5552039742469788, 0.840092122554779, 0.85308438539505
+ ],
+ 'descriptor': {'dimensions': [1, 1, 3, 3], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'convTranspose2dBias': {
+ 'data': [-0.8457866311073303],
+ 'descriptor': {'dimensions': [1], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'convTranspose2d',
+ 'arguments': [
+ {'input': 'convTranspose2dInput'},
+ {'filter': 'convTranspose2dFilter'},
+ {'options': {'bias': 'convTranspose2dBias'}}
+ ],
+ 'outputs': 'convTranspose2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'convTranspose2dOutput': {
+ 'data': [
+ -0.9128783941268921, -1.0579640865325928, -1.2512983083724976,
+ -1.1852335929870605, -1.1565102338790894, -1.2873748540878296,
+ -1.7950842380523682, -2.6857638359069824, -2.2283377647399902,
+ -1.8494995832443237, -1.5857856273651123, -2.8912975788116455,
+ -3.738619565963745, -3.5343525409698486, -1.910401463508606,
+ -1.425180196762085, -2.8317112922668457, -3.49372935295105,
+ -3.0246617794036865, -1.5763013362884521, -1.0156716108322144,
+ -1.645089030265808, -1.935164213180542, -1.6908544301986694,
+ -0.8578650951385498
+ ],
+ 'descriptor': {'dimensions': [1, 1, 5, 5], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ convTranspose2dTests.forEach((test) => {
+ // reuse getConv2dPrecisionTolerance method for convTranspose2d tests
+ webnn_conformance_test(
+ buildGraphAndCompute, getConv2dPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/cos.https.any.js b/tests/wpt/tests/webnn/conformance_tests/cos.https.any.js
new file mode 100644
index 00000000000..5ad92e7014a
--- /dev/null
+++ b/tests/wpt/tests/webnn/conformance_tests/cos.https.any.js
@@ -0,0 +1,297 @@
+// META: title=test WebNN API element-wise cos operation
+// META: global=window,dedicatedworker
+// META: variant=?cpu
+// META: variant=?gpu
+// META: variant=?npu
+// META: script=../resources/utils.js
+// META: timeout=long
+
+'use strict';
+
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-unary
+// Compute the cosine of the input tensor, element-wise.
+//
+// MLOperand cos(MLOperand input);
+
+
+const getCosPrecisionTolerance = (graphResources) => {
+ const toleranceValueDict = {float32: 1 / 1024, float16: 1 / 512};
+ const expectedDataType =
+ getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs);
+ return {metricType: 'ATOL', value: toleranceValueDict[expectedDataType]};
+};
+
+const cosTests = [
+ {
+ 'name': 'cos float32 0D scalar',
+ 'graph': {
+ 'inputs': {
+ 'cosInput': {
+ 'data': [85.56369018554688],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'cos',
+ 'arguments': [{'input': 'cosInput'}],
+ 'outputs': 'cosOutput'
+ }],
+ 'expectedOutputs': {
+ 'cosOutput': {
+ 'data': [-0.7380040884017944],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'cos float32 1D constant tensor',
+ 'graph': {
+ 'inputs': {
+ 'cosInput': {
+ 'data': [
+ 85.56369018554688, -45.09983825683594, -94.67750549316406,
+ 83.49029541015625, -31.367904663085938, 70.18042755126953,
+ -90.36229705810547, -83.00758361816406, 61.51649475097656,
+ -32.51877975463867, -48.3765869140625, -58.02735900878906,
+ 89.79197692871094, -84.53326416015625, -58.23252487182617,
+ -76.14168548583984, -59.058876037597656, 77.38546752929688,
+ -98.67289733886719, -63.6115608215332, 26.85724639892578,
+ 83.70417022705078, 76.56607055664062, -47.83436584472656
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'cos',
+ 'arguments': [{'input': 'cosInput'}],
+ 'outputs': 'cosOutput'
+ }],
+ 'expectedOutputs': {
+ 'cosOutput': {
+ 'data': [
+ -0.7380040884017944, 0.43789437413215637, 0.9090799689292908,
+ -0.23584702610969543, 0.9988471865653992, 0.48416373133659363,
+ -0.7358400821685791, 0.24218930304050446, 0.25266921520233154,
+ 0.4510514736175537, -0.31276169419288635, 0.09197491407394409,
+ -0.2537800967693329, -0.9583188891410828, -0.11282006651163101,
+ 0.736129879951477, -0.80721116065979, -0.4045141637325287,
+ -0.283336341381073, 0.7111190557479858, -0.1531042903661728,
+ -0.43673399090766907, 0.39213326573371887, -0.7580515146255493
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'cos float32 1D tensor',
+ 'graph': {
+ 'inputs': {
+ 'cosInput': {
+ 'data': [
+ 85.56369018554688, -45.09983825683594, -94.67750549316406,
+ 83.49029541015625, -31.367904663085938, 70.18042755126953,
+ -90.36229705810547, -83.00758361816406, 61.51649475097656,
+ -32.51877975463867, -48.3765869140625, -58.02735900878906,
+ 89.79197692871094, -84.53326416015625, -58.23252487182617,
+ -76.14168548583984, -59.058876037597656, 77.38546752929688,
+ -98.67289733886719, -63.6115608215332, 26.85724639892578,
+ 83.70417022705078, 76.56607055664062, -47.83436584472656
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'cos',
+ 'arguments': [{'input': 'cosInput'}],
+ 'outputs': 'cosOutput'
+ }],
+ 'expectedOutputs': {
+ 'cosOutput': {
+ 'data': [
+ -0.7380040884017944, 0.43789437413215637, 0.9090799689292908,
+ -0.23584702610969543, 0.9988471865653992, 0.48416373133659363,
+ -0.7358400821685791, 0.24218930304050446, 0.25266921520233154,
+ 0.4510514736175537, -0.31276169419288635, 0.09197491407394409,
+ -0.2537800967693329, -0.9583188891410828, -0.11282006651163101,
+ 0.736129879951477, -0.80721116065979, -0.4045141637325287,
+ -0.283336341381073, 0.7111190557479858, -0.1531042903661728,
+ -0.43673399090766907, 0.39213326573371887, -0.7580515146255493
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'cos float32 2D tensor',
+ 'graph': {
+ 'inputs': {
+ 'cosInput': {
+ 'data': [
+ 85.56369018554688, -45.09983825683594, -94.67750549316406,
+ 83.49029541015625, -31.367904663085938, 70.18042755126953,
+ -90.36229705810547, -83.00758361816406, 61.51649475097656,
+ -32.51877975463867, -48.3765869140625, -58.02735900878906,
+ 89.79197692871094, -84.53326416015625, -58.23252487182617,
+ -76.14168548583984, -59.058876037597656, 77.38546752929688,
+ -98.67289733886719, -63.6115608215332, 26.85724639892578,
+ 83.70417022705078, 76.56607055664062, -47.83436584472656
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'cos',
+ 'arguments': [{'input': 'cosInput'}],
+ 'outputs': 'cosOutput'
+ }],
+ 'expectedOutputs': {
+ 'cosOutput': {
+ 'data': [
+ -0.7380040884017944, 0.43789437413215637, 0.9090799689292908,
+ -0.23584702610969543, 0.9988471865653992, 0.48416373133659363,
+ -0.7358400821685791, 0.24218930304050446, 0.25266921520233154,
+ 0.4510514736175537, -0.31276169419288635, 0.09197491407394409,
+ -0.2537800967693329, -0.9583188891410828, -0.11282006651163101,
+ 0.736129879951477, -0.80721116065979, -0.4045141637325287,
+ -0.283336341381073, 0.7111190557479858, -0.1531042903661728,
+ -0.43673399090766907, 0.39213326573371887, -0.7580515146255493
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'cos float32 3D tensor',
+ 'graph': {
+ 'inputs': {
+ 'cosInput': {
+ 'data': [
+ 85.56369018554688, -45.09983825683594, -94.67750549316406,
+ 83.49029541015625, -31.367904663085938, 70.18042755126953,
+ -90.36229705810547, -83.00758361816406, 61.51649475097656,
+ -32.51877975463867, -48.3765869140625, -58.02735900878906,
+ 89.79197692871094, -84.53326416015625, -58.23252487182617,
+ -76.14168548583984, -59.058876037597656, 77.38546752929688,
+ -98.67289733886719, -63.6115608215332, 26.85724639892578,
+ 83.70417022705078, 76.56607055664062, -47.83436584472656
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'cos',
+ 'arguments': [{'input': 'cosInput'}],
+ 'outputs': 'cosOutput'
+ }],
+ 'expectedOutputs': {
+ 'cosOutput': {
+ 'data': [
+ -0.7380040884017944, 0.43789437413215637, 0.9090799689292908,
+ -0.23584702610969543, 0.9988471865653992, 0.48416373133659363,
+ -0.7358400821685791, 0.24218930304050446, 0.25266921520233154,
+ 0.4510514736175537, -0.31276169419288635, 0.09197491407394409,
+ -0.2537800967693329, -0.9583188891410828, -0.11282006651163101,
+ 0.736129879951477, -0.80721116065979, -0.4045141637325287,
+ -0.283336341381073, 0.7111190557479858, -0.1531042903661728,
+ -0.43673399090766907, 0.39213326573371887, -0.7580515146255493
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'cos float32 4D tensor',
+ 'graph': {
+ 'inputs': {
+ 'cosInput': {
+ 'data': [
+ 85.56369018554688, -45.09983825683594, -94.67750549316406,
+ 83.49029541015625, -31.367904663085938, 70.18042755126953,
+ -90.36229705810547, -83.00758361816406, 61.51649475097656,
+ -32.51877975463867, -48.3765869140625, -58.02735900878906,
+ 89.79197692871094, -84.53326416015625, -58.23252487182617,
+ -76.14168548583984, -59.058876037597656, 77.38546752929688,
+ -98.67289733886719, -63.6115608215332, 26.85724639892578,
+ 83.70417022705078, 76.56607055664062, -47.83436584472656
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'cos',
+ 'arguments': [{'input': 'cosInput'}],
+ 'outputs': 'cosOutput'
+ }],
+ 'expectedOutputs': {
+ 'cosOutput': {
+ 'data': [
+ -0.7380040884017944, 0.43789437413215637, 0.9090799689292908,
+ -0.23584702610969543, 0.9988471865653992, 0.48416373133659363,
+ -0.7358400821685791, 0.24218930304050446, 0.25266921520233154,
+ 0.4510514736175537, -0.31276169419288635, 0.09197491407394409,
+ -0.2537800967693329, -0.9583188891410828, -0.11282006651163101,
+ 0.736129879951477, -0.80721116065979, -0.4045141637325287,
+ -0.283336341381073, 0.7111190557479858, -0.1531042903661728,
+ -0.43673399090766907, 0.39213326573371887, -0.7580515146255493
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'cos float32 5D tensor',
+ 'graph': {
+ 'inputs': {
+ 'cosInput': {
+ 'data': [
+ 85.56369018554688, -45.09983825683594, -94.67750549316406,
+ 83.49029541015625, -31.367904663085938, 70.18042755126953,
+ -90.36229705810547, -83.00758361816406, 61.51649475097656,
+ -32.51877975463867, -48.3765869140625, -58.02735900878906,
+ 89.79197692871094, -84.53326416015625, -58.23252487182617,
+ -76.14168548583984, -59.058876037597656, 77.38546752929688,
+ -98.67289733886719, -63.6115608215332, 26.85724639892578,
+ 83.70417022705078, 76.56607055664062, -47.83436584472656
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 1, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'cos',
+ 'arguments': [{'input': 'cosInput'}],
+ 'outputs': 'cosOutput'
+ }],
+ 'expectedOutputs': {
+ 'cosOutput': {
+ 'data': [
+ -0.7380040884017944, 0.43789437413215637, 0.9090799689292908,
+ -0.23584702610969543, 0.9988471865653992, 0.48416373133659363,
+ -0.7358400821685791, 0.24218930304050446, 0.25266921520233154,
+ 0.4510514736175537, -0.31276169419288635, 0.09197491407394409,
+ -0.2537800967693329, -0.9583188891410828, -0.11282006651163101,
+ 0.736129879951477, -0.80721116065979, -0.4045141637325287,
+ -0.283336341381073, 0.7111190557479858, -0.1531042903661728,
+ -0.43673399090766907, 0.39213326573371887, -0.7580515146255493
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 1, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ cosTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getCosPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/div.https.any.js b/tests/wpt/tests/webnn/conformance_tests/div.https.any.js
index 65438e6c519..69183ee1097 100644
--- a/tests/wpt/tests/webnn/conformance_tests/div.https.any.js
+++ b/tests/wpt/tests/webnn/conformance_tests/div.https.any.js
@@ -1,4 +1,4 @@
-// META: title=test WebNN API element-wise binary operations
+// META: title=test WebNN API element-wise div operation
// META: global=window,dedicatedworker
// META: variant=?cpu
// META: variant=?gpu
@@ -8,6 +8,528 @@
'use strict';
-// https://webmachinelearning.github.io/webnn/#api-mlgraphbuilder-binary
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-binary
+// Compute the element-wise binary division of the two input tensors.
+// MLOperand div(MLOperand a, MLOperand b);
-runWebNNConformanceTests('div', buildOperationWithTwoInputs);
+
+const getDivPrecisionTolerance = (graphResources) => {
+ const toleranceValueDict = {float32: 2, float16: 2};
+ const expectedDataType =
+ getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs);
+ return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]};
+};
+
+const divTests = [
+ {
+ 'name': 'div float32 1D constant tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 60.42374038696289, -86.92247772216797, -19.496112823486328,
+ -15.150615692138672, 13.455190658569336, 45.433597564697266,
+ 61.082862854003906, 70.71882629394531, -31.278579711914062,
+ 56.08354187011719, 38.992767333984375, -3.27536940574646,
+ 32.28932189941406, -3.676541805267334, 88.4349136352539,
+ 14.369060516357422, 13.943194389343262, 16.861190795898438,
+ 4.816806316375732, 44.15916442871094, -13.083211898803711,
+ 44.56599807739258, -34.892784118652344, -74.09375
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'inputB': {
+ 'data': [
+ -95.0290298461914, 62.804866790771484, -85.32865905761719,
+ -68.20919799804688, 79.45568084716797, -68.69049072265625,
+ -94.46466827392578, -10.000411033630371, 18.318864822387695,
+ -3.6232800483703613, -5.957828044891357, 89.49882507324219,
+ 94.9579086303711, -79.0005874633789, -79.87596893310547,
+ 74.99787139892578, 25.865373611450195, 91.5443344116211,
+ 81.65287017822266, 48.2148323059082, 63.370121002197266,
+ 10.626384735107422, 46.126625061035156, 77.22327423095703
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'div',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ -0.6358450651168823, -1.3840086460113525, 0.22848258912563324,
+ 0.22211983799934387, 0.16934208571910858, -0.6614248752593994,
+ -0.6466212868690491, -7.071591854095459, -1.7074518203735352,
+ -15.478666305541992, -6.544795513153076, -0.036596786230802536,
+ 0.3400382697582245, 0.046538159251213074, -1.1071529388427734,
+ 0.19159291684627533, 0.5390679836273193, 0.18418607115745544,
+ 0.058991268277168274, 0.9158834218978882, -0.20645710825920105,
+ 4.193900108337402, -0.7564564943313599, -0.9594743251800537
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'div float32 1D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 60.42374038696289, -86.92247772216797, -19.496112823486328,
+ -15.150615692138672, 13.455190658569336, 45.433597564697266,
+ 61.082862854003906, 70.71882629394531, -31.278579711914062,
+ 56.08354187011719, 38.992767333984375, -3.27536940574646,
+ 32.28932189941406, -3.676541805267334, 88.4349136352539,
+ 14.369060516357422, 13.943194389343262, 16.861190795898438,
+ 4.816806316375732, 44.15916442871094, -13.083211898803711,
+ 44.56599807739258, -34.892784118652344, -74.09375
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -95.0290298461914, 62.804866790771484, -85.32865905761719,
+ -68.20919799804688, 79.45568084716797, -68.69049072265625,
+ -94.46466827392578, -10.000411033630371, 18.318864822387695,
+ -3.6232800483703613, -5.957828044891357, 89.49882507324219,
+ 94.9579086303711, -79.0005874633789, -79.87596893310547,
+ 74.99787139892578, 25.865373611450195, 91.5443344116211,
+ 81.65287017822266, 48.2148323059082, 63.370121002197266,
+ 10.626384735107422, 46.126625061035156, 77.22327423095703
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'div',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ -0.6358450651168823, -1.3840086460113525, 0.22848258912563324,
+ 0.22211983799934387, 0.16934208571910858, -0.6614248752593994,
+ -0.6466212868690491, -7.071591854095459, -1.7074518203735352,
+ -15.478666305541992, -6.544795513153076, -0.036596786230802536,
+ 0.3400382697582245, 0.046538159251213074, -1.1071529388427734,
+ 0.19159291684627533, 0.5390679836273193, 0.18418607115745544,
+ 0.058991268277168274, 0.9158834218978882, -0.20645710825920105,
+ 4.193900108337402, -0.7564564943313599, -0.9594743251800537
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'div float32 2D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 60.42374038696289, -86.92247772216797, -19.496112823486328,
+ -15.150615692138672, 13.455190658569336, 45.433597564697266,
+ 61.082862854003906, 70.71882629394531, -31.278579711914062,
+ 56.08354187011719, 38.992767333984375, -3.27536940574646,
+ 32.28932189941406, -3.676541805267334, 88.4349136352539,
+ 14.369060516357422, 13.943194389343262, 16.861190795898438,
+ 4.816806316375732, 44.15916442871094, -13.083211898803711,
+ 44.56599807739258, -34.892784118652344, -74.09375
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -95.0290298461914, 62.804866790771484, -85.32865905761719,
+ -68.20919799804688, 79.45568084716797, -68.69049072265625,
+ -94.46466827392578, -10.000411033630371, 18.318864822387695,
+ -3.6232800483703613, -5.957828044891357, 89.49882507324219,
+ 94.9579086303711, -79.0005874633789, -79.87596893310547,
+ 74.99787139892578, 25.865373611450195, 91.5443344116211,
+ 81.65287017822266, 48.2148323059082, 63.370121002197266,
+ 10.626384735107422, 46.126625061035156, 77.22327423095703
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'div',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ -0.6358450651168823, -1.3840086460113525, 0.22848258912563324,
+ 0.22211983799934387, 0.16934208571910858, -0.6614248752593994,
+ -0.6466212868690491, -7.071591854095459, -1.7074518203735352,
+ -15.478666305541992, -6.544795513153076, -0.036596786230802536,
+ 0.3400382697582245, 0.046538159251213074, -1.1071529388427734,
+ 0.19159291684627533, 0.5390679836273193, 0.18418607115745544,
+ 0.058991268277168274, 0.9158834218978882, -0.20645710825920105,
+ 4.193900108337402, -0.7564564943313599, -0.9594743251800537
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'div float32 3D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 60.42374038696289, -86.92247772216797, -19.496112823486328,
+ -15.150615692138672, 13.455190658569336, 45.433597564697266,
+ 61.082862854003906, 70.71882629394531, -31.278579711914062,
+ 56.08354187011719, 38.992767333984375, -3.27536940574646,
+ 32.28932189941406, -3.676541805267334, 88.4349136352539,
+ 14.369060516357422, 13.943194389343262, 16.861190795898438,
+ 4.816806316375732, 44.15916442871094, -13.083211898803711,
+ 44.56599807739258, -34.892784118652344, -74.09375
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -95.0290298461914, 62.804866790771484, -85.32865905761719,
+ -68.20919799804688, 79.45568084716797, -68.69049072265625,
+ -94.46466827392578, -10.000411033630371, 18.318864822387695,
+ -3.6232800483703613, -5.957828044891357, 89.49882507324219,
+ 94.9579086303711, -79.0005874633789, -79.87596893310547,
+ 74.99787139892578, 25.865373611450195, 91.5443344116211,
+ 81.65287017822266, 48.2148323059082, 63.370121002197266,
+ 10.626384735107422, 46.126625061035156, 77.22327423095703
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'div',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ -0.6358450651168823, -1.3840086460113525, 0.22848258912563324,
+ 0.22211983799934387, 0.16934208571910858, -0.6614248752593994,
+ -0.6466212868690491, -7.071591854095459, -1.7074518203735352,
+ -15.478666305541992, -6.544795513153076, -0.036596786230802536,
+ 0.3400382697582245, 0.046538159251213074, -1.1071529388427734,
+ 0.19159291684627533, 0.5390679836273193, 0.18418607115745544,
+ 0.058991268277168274, 0.9158834218978882, -0.20645710825920105,
+ 4.193900108337402, -0.7564564943313599, -0.9594743251800537
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'div float32 4D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 60.42374038696289, -86.92247772216797, -19.496112823486328,
+ -15.150615692138672, 13.455190658569336, 45.433597564697266,
+ 61.082862854003906, 70.71882629394531, -31.278579711914062,
+ 56.08354187011719, 38.992767333984375, -3.27536940574646,
+ 32.28932189941406, -3.676541805267334, 88.4349136352539,
+ 14.369060516357422, 13.943194389343262, 16.861190795898438,
+ 4.816806316375732, 44.15916442871094, -13.083211898803711,
+ 44.56599807739258, -34.892784118652344, -74.09375
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -95.0290298461914, 62.804866790771484, -85.32865905761719,
+ -68.20919799804688, 79.45568084716797, -68.69049072265625,
+ -94.46466827392578, -10.000411033630371, 18.318864822387695,
+ -3.6232800483703613, -5.957828044891357, 89.49882507324219,
+ 94.9579086303711, -79.0005874633789, -79.87596893310547,
+ 74.99787139892578, 25.865373611450195, 91.5443344116211,
+ 81.65287017822266, 48.2148323059082, 63.370121002197266,
+ 10.626384735107422, 46.126625061035156, 77.22327423095703
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'div',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ -0.6358450651168823, -1.3840086460113525, 0.22848258912563324,
+ 0.22211983799934387, 0.16934208571910858, -0.6614248752593994,
+ -0.6466212868690491, -7.071591854095459, -1.7074518203735352,
+ -15.478666305541992, -6.544795513153076, -0.036596786230802536,
+ 0.3400382697582245, 0.046538159251213074, -1.1071529388427734,
+ 0.19159291684627533, 0.5390679836273193, 0.18418607115745544,
+ 0.058991268277168274, 0.9158834218978882, -0.20645710825920105,
+ 4.193900108337402, -0.7564564943313599, -0.9594743251800537
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'div float32 5D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 60.42374038696289, -86.92247772216797, -19.496112823486328,
+ -15.150615692138672, 13.455190658569336, 45.433597564697266,
+ 61.082862854003906, 70.71882629394531, -31.278579711914062,
+ 56.08354187011719, 38.992767333984375, -3.27536940574646,
+ 32.28932189941406, -3.676541805267334, 88.4349136352539,
+ 14.369060516357422, 13.943194389343262, 16.861190795898438,
+ 4.816806316375732, 44.15916442871094, -13.083211898803711,
+ 44.56599807739258, -34.892784118652344, -74.09375
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 2, 3], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -95.0290298461914, 62.804866790771484, -85.32865905761719,
+ -68.20919799804688, 79.45568084716797, -68.69049072265625,
+ -94.46466827392578, -10.000411033630371, 18.318864822387695,
+ -3.6232800483703613, -5.957828044891357, 89.49882507324219,
+ 94.9579086303711, -79.0005874633789, -79.87596893310547,
+ 74.99787139892578, 25.865373611450195, 91.5443344116211,
+ 81.65287017822266, 48.2148323059082, 63.370121002197266,
+ 10.626384735107422, 46.126625061035156, 77.22327423095703
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'div',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ -0.6358450651168823, -1.3840086460113525, 0.22848258912563324,
+ 0.22211983799934387, 0.16934208571910858, -0.6614248752593994,
+ -0.6466212868690491, -7.071591854095459, -1.7074518203735352,
+ -15.478666305541992, -6.544795513153076, -0.036596786230802536,
+ 0.3400382697582245, 0.046538159251213074, -1.1071529388427734,
+ 0.19159291684627533, 0.5390679836273193, 0.18418607115745544,
+ 0.058991268277168274, 0.9158834218978882, -0.20645710825920105,
+ 4.193900108337402, -0.7564564943313599, -0.9594743251800537
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'div float32 broadcast 1D to 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [-41.827415466308594],
+ 'descriptor': {'dimensions': [1], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 60.42374038696289, -86.92247772216797, -19.496112823486328,
+ -15.150615692138672, 13.455190658569336, 45.433597564697266,
+ 61.082862854003906, 70.71882629394531, -31.278579711914062,
+ 56.08354187011719, 38.992767333984375, -3.27536940574646,
+ 32.28932189941406, -3.676541805267334, 88.4349136352539,
+ 14.369060516357422, 13.943194389343262, 16.861190795898438,
+ 4.816806316375732, 44.15916442871094, -13.083211898803711,
+ 44.56599807739258, -34.892784118652344, -74.09375
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'div',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ -0.6922348141670227, 0.48120367527008057, 2.145423412322998,
+ 2.7607734203338623, -3.10864520072937, -0.9206274151802063,
+ -0.6847651600837708, -0.5914608240127563, 1.337254285812378,
+ -0.7458055019378662, -1.0726968050003052, 12.770289421081543,
+ -1.2953946590423584, 11.376836776733398, -0.4729740023612976,
+ -2.910935878753662, -2.999844551086426, -2.48069167137146,
+ -8.683640480041504, -0.9471967220306396, 3.1970295906066895,
+ -0.9385499358177185, 1.19874107837677, 0.5645201802253723
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'div float32 broadcast 2D to 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 60.42374038696289, -86.92247772216797, -19.496112823486328,
+ -15.150615692138672, 13.455190658569336, 45.433597564697266,
+ 61.082862854003906, 70.71882629394531, -31.278579711914062,
+ 56.08354187011719, 38.992767333984375, -3.27536940574646,
+ 32.28932189941406, -3.676541805267334, 88.4349136352539,
+ 14.369060516357422, 13.943194389343262, 16.861190795898438,
+ 4.816806316375732, 44.15916442871094, -13.083211898803711,
+ 44.56599807739258, -34.892784118652344, -74.09375
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 97.32406616210938, 36.325218200683594, 26.037858963012695,
+ 99.47166442871094, 10.395523071289062, -30.788942337036133
+ ],
+ 'descriptor': {'dimensions': [2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'div',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 0.6208509802818298, -2.3928961753845215, -0.7487602233886719,
+ -0.15231086313724518, 1.2943254709243774, -1.4756466150283813,
+ 0.627623438835144, 1.946824550628662, -1.2012730836868286,
+ 0.5638142228126526, 3.7509193420410156, 0.106381356716156,
+ 0.33177119493484497, -0.10121183097362518, 3.396397352218628,
+ 0.14445380866527557, 1.3412691354751587, -0.5476378798484802,
+ 0.049492448568344116, 1.2156614065170288, -0.5024688243865967,
+ 0.4480270743370056, -3.356520175933838, 2.4065051078796387
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'div float32 broadcast 3D to 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 60.42374038696289, -86.92247772216797, -19.496112823486328,
+ -15.150615692138672, 13.455190658569336, 45.433597564697266,
+ 61.082862854003906, 70.71882629394531, -31.278579711914062,
+ 56.08354187011719, 38.992767333984375, -3.27536940574646,
+ 32.28932189941406, -3.676541805267334, 88.4349136352539,
+ 14.369060516357422, 13.943194389343262, 16.861190795898438,
+ 4.816806316375732, 44.15916442871094, -13.083211898803711,
+ 44.56599807739258, -34.892784118652344, -74.09375
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 75.08295440673828, -46.22666931152344, 15.761880874633789,
+ 8.9222993850708
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'div',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 0.8047597408294678, -1.1576858758926392, -0.2596609592437744,
+ 0.3277462124824524, -0.2910698652267456, -0.9828438758850098,
+ 3.8753535747528076, 4.48669958114624, -1.9844446182250977,
+ 6.285772323608398, 4.370259761810303, -0.36709925532341003,
+ 0.4300486445426941, -0.04896639660000801, 1.177829384803772,
+ -0.3108392059803009, -0.30162662267684937, -0.36475029587745667,
+ 0.3055984377861023, 2.801643133163452, -0.830053985118866,
+ 4.994900703430176, -3.910738945007324, -8.304333686828613
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'div float32 broadcast 4D to 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [-41.827415466308594],
+ 'descriptor': {'dimensions': [1, 1, 1, 1], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 60.42374038696289, -86.92247772216797, -19.496112823486328,
+ -15.150615692138672, 13.455190658569336, 45.433597564697266,
+ 61.082862854003906, 70.71882629394531, -31.278579711914062,
+ 56.08354187011719, 38.992767333984375, -3.27536940574646,
+ 32.28932189941406, -3.676541805267334, 88.4349136352539,
+ 14.369060516357422, 13.943194389343262, 16.861190795898438,
+ 4.816806316375732, 44.15916442871094, -13.083211898803711,
+ 44.56599807739258, -34.892784118652344, -74.09375
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'div',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ -0.6922348141670227, 0.48120367527008057, 2.145423412322998,
+ 2.7607734203338623, -3.10864520072937, -0.9206274151802063,
+ -0.6847651600837708, -0.5914608240127563, 1.337254285812378,
+ -0.7458055019378662, -1.0726968050003052, 12.770289421081543,
+ -1.2953946590423584, 11.376836776733398, -0.4729740023612976,
+ -2.910935878753662, -2.999844551086426, -2.48069167137146,
+ -8.683640480041504, -0.9471967220306396, 3.1970295906066895,
+ -0.9385499358177185, 1.19874107837677, 0.5645201802253723
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ divTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getDivPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/elementwise_unary.https.any.js b/tests/wpt/tests/webnn/conformance_tests/elementwise_unary.https.any.js
deleted file mode 100644
index 54406005e89..00000000000
--- a/tests/wpt/tests/webnn/conformance_tests/elementwise_unary.https.any.js
+++ /dev/null
@@ -1,18 +0,0 @@
-// META: title=test WebNN API element-wise unary operations
-// META: global=window,dedicatedworker
-// META: variant=?cpu
-// META: variant=?gpu
-// META: variant=?npu
-// META: script=../resources/utils.js
-// META: timeout=long
-
-'use strict';
-
-// https://webmachinelearning.github.io/webnn/#api-mlgraphbuilder-unary
-
-runWebNNConformanceTests(
- [
- 'abs', 'ceil', 'cos', 'erf', 'exp', 'floor', 'identity', 'log', 'neg',
- 'reciprocal', 'sin', 'sqrt', 'tan'
- ],
- buildOperationWithSingleInput);
diff --git a/tests/wpt/tests/webnn/conformance_tests/elu.https.any.js b/tests/wpt/tests/webnn/conformance_tests/elu.https.any.js
index b16cf04b624..75b982944ba 100644
--- a/tests/wpt/tests/webnn/conformance_tests/elu.https.any.js
+++ b/tests/wpt/tests/webnn/conformance_tests/elu.https.any.js
@@ -8,6 +8,400 @@
'use strict';
-// https://webmachinelearning.github.io/webnn/#api-mlgraphbuilder-elu
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-elu
+// Calculate the exponential linear unit function (ELU) on the input tensor
+// element-wise. The calculation follows the expression
+// max(0, x) + alpha * (exp(min(0, x)) - 1).
+//
+// dictionary MLEluOptions {
+// double alpha = 1;
+// };
+//
+// MLOperand elu(MLOperand input, optional MLEluOptions options = {});
-runWebNNConformanceTests('elu', buildOperationWithSingleInput);
+
+const getEluPrecisionTolerance = (graphResources) => {
+ const toleranceValueDict = {float32: 18, float16: 18};
+ const expectedDataType =
+ getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs);
+ return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]};
+};
+
+const eluTests = [
+ {
+ 'name': 'elu float32 positive 0D scalar default options',
+ 'graph': {
+ 'inputs': {
+ 'eluInput': {
+ 'data': [4.721739768981934],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'elu',
+ 'arguments': [{'input': 'eluInput'}],
+ 'outputs': 'eluOutput'
+ }],
+ 'expectedOutputs': {
+ 'eluOutput': {
+ 'data': [4.721739768981934],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'elu float32 negative 0D scalar default options',
+ 'graph': {
+ 'inputs': {
+ 'eluInput': {
+ 'data': [-3.8663666248321533],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'elu',
+ 'arguments': [{'input': 'eluInput'}],
+ 'outputs': 'eluOutput'
+ }],
+ 'expectedOutputs': {
+ 'eluOutput': {
+ 'data': [-0.9790657162666321],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'elu float32 1D constant tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'eluInput': {
+ 'data': [
+ 4.721739768981934, 0.3768780529499054, 1.4189997911453247,
+ -3.8663666248321533, 1.3590080738067627, -3.8641843795776367,
+ 7.839725494384766, -6.69080114364624, 0.5456406474113464,
+ 5.776711463928223, 7.263273239135742, -7.419948101043701,
+ 5.665064334869385, -6.712906837463379, -3.334894895553589,
+ -1.2103675603866577, 7.255547046661377, 8.903468132019043,
+ -4.01986026763916, 7.114678382873535, -0.11212847381830215,
+ -3.688840866088867, 6.135150909423828, -9.895182609558105
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'elu',
+ 'arguments': [{'input': 'eluInput'}],
+ 'outputs': 'eluOutput'
+ }],
+ 'expectedOutputs': {
+ 'eluOutput': {
+ 'data': [
+ 4.721739768981934, 0.3768780529499054, 1.4189997911453247,
+ -0.9790657162666321, 1.3590080738067627, -0.9790199995040894,
+ 7.839725494384766, -0.9987577199935913, 0.5456406474113464,
+ 5.776711463928223, 7.263273239135742, -0.999400794506073,
+ 5.665064334869385, -0.9987848997116089, -0.9643816947937012,
+ -0.7019122838973999, 7.255547046661377, 8.903468132019043,
+ -0.982044517993927, 7.114678382873535, -0.10607059299945831,
+ -0.9749990105628967, 6.135150909423828, -0.99994957447052
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'elu float32 1D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'eluInput': {
+ 'data': [
+ 4.721739768981934, 0.3768780529499054, 1.4189997911453247,
+ -3.8663666248321533, 1.3590080738067627, -3.8641843795776367,
+ 7.839725494384766, -6.69080114364624, 0.5456406474113464,
+ 5.776711463928223, 7.263273239135742, -7.419948101043701,
+ 5.665064334869385, -6.712906837463379, -3.334894895553589,
+ -1.2103675603866577, 7.255547046661377, 8.903468132019043,
+ -4.01986026763916, 7.114678382873535, -0.11212847381830215,
+ -3.688840866088867, 6.135150909423828, -9.895182609558105
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'elu',
+ 'arguments': [{'input': 'eluInput'}],
+ 'outputs': 'eluOutput'
+ }],
+ 'expectedOutputs': {
+ 'eluOutput': {
+ 'data': [
+ 4.721739768981934, 0.3768780529499054, 1.4189997911453247,
+ -0.9790657162666321, 1.3590080738067627, -0.9790199995040894,
+ 7.839725494384766, -0.9987577199935913, 0.5456406474113464,
+ 5.776711463928223, 7.263273239135742, -0.999400794506073,
+ 5.665064334869385, -0.9987848997116089, -0.9643816947937012,
+ -0.7019122838973999, 7.255547046661377, 8.903468132019043,
+ -0.982044517993927, 7.114678382873535, -0.10607059299945831,
+ -0.9749990105628967, 6.135150909423828, -0.99994957447052
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'elu float32 2D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'eluInput': {
+ 'data': [
+ 4.721739768981934, 0.3768780529499054, 1.4189997911453247,
+ -3.8663666248321533, 1.3590080738067627, -3.8641843795776367,
+ 7.839725494384766, -6.69080114364624, 0.5456406474113464,
+ 5.776711463928223, 7.263273239135742, -7.419948101043701,
+ 5.665064334869385, -6.712906837463379, -3.334894895553589,
+ -1.2103675603866577, 7.255547046661377, 8.903468132019043,
+ -4.01986026763916, 7.114678382873535, -0.11212847381830215,
+ -3.688840866088867, 6.135150909423828, -9.895182609558105
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'elu',
+ 'arguments': [{'input': 'eluInput'}],
+ 'outputs': 'eluOutput'
+ }],
+ 'expectedOutputs': {
+ 'eluOutput': {
+ 'data': [
+ 4.721739768981934, 0.3768780529499054, 1.4189997911453247,
+ -0.9790657162666321, 1.3590080738067627, -0.9790199995040894,
+ 7.839725494384766, -0.9987577199935913, 0.5456406474113464,
+ 5.776711463928223, 7.263273239135742, -0.999400794506073,
+ 5.665064334869385, -0.9987848997116089, -0.9643816947937012,
+ -0.7019122838973999, 7.255547046661377, 8.903468132019043,
+ -0.982044517993927, 7.114678382873535, -0.10607059299945831,
+ -0.9749990105628967, 6.135150909423828, -0.99994957447052
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'elu float32 3D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'eluInput': {
+ 'data': [
+ 4.721739768981934, 0.3768780529499054, 1.4189997911453247,
+ -3.8663666248321533, 1.3590080738067627, -3.8641843795776367,
+ 7.839725494384766, -6.69080114364624, 0.5456406474113464,
+ 5.776711463928223, 7.263273239135742, -7.419948101043701,
+ 5.665064334869385, -6.712906837463379, -3.334894895553589,
+ -1.2103675603866577, 7.255547046661377, 8.903468132019043,
+ -4.01986026763916, 7.114678382873535, -0.11212847381830215,
+ -3.688840866088867, 6.135150909423828, -9.895182609558105
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'elu',
+ 'arguments': [{'input': 'eluInput'}],
+ 'outputs': 'eluOutput'
+ }],
+ 'expectedOutputs': {
+ 'eluOutput': {
+ 'data': [
+ 4.721739768981934, 0.3768780529499054, 1.4189997911453247,
+ -0.9790657162666321, 1.3590080738067627, -0.9790199995040894,
+ 7.839725494384766, -0.9987577199935913, 0.5456406474113464,
+ 5.776711463928223, 7.263273239135742, -0.999400794506073,
+ 5.665064334869385, -0.9987848997116089, -0.9643816947937012,
+ -0.7019122838973999, 7.255547046661377, 8.903468132019043,
+ -0.982044517993927, 7.114678382873535, -0.10607059299945831,
+ -0.9749990105628967, 6.135150909423828, -0.99994957447052
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'elu float32 4D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'eluInput': {
+ 'data': [
+ 4.721739768981934, 0.3768780529499054, 1.4189997911453247,
+ -3.8663666248321533, 1.3590080738067627, -3.8641843795776367,
+ 7.839725494384766, -6.69080114364624, 0.5456406474113464,
+ 5.776711463928223, 7.263273239135742, -7.419948101043701,
+ 5.665064334869385, -6.712906837463379, -3.334894895553589,
+ -1.2103675603866577, 7.255547046661377, 8.903468132019043,
+ -4.01986026763916, 7.114678382873535, -0.11212847381830215,
+ -3.688840866088867, 6.135150909423828, -9.895182609558105
+ ],
+ 'descriptor': {'dimensions': [1, 2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'elu',
+ 'arguments': [{'input': 'eluInput'}],
+ 'outputs': 'eluOutput'
+ }],
+ 'expectedOutputs': {
+ 'eluOutput': {
+ 'data': [
+ 4.721739768981934, 0.3768780529499054, 1.4189997911453247,
+ -0.9790657162666321, 1.3590080738067627, -0.9790199995040894,
+ 7.839725494384766, -0.9987577199935913, 0.5456406474113464,
+ 5.776711463928223, 7.263273239135742, -0.999400794506073,
+ 5.665064334869385, -0.9987848997116089, -0.9643816947937012,
+ -0.7019122838973999, 7.255547046661377, 8.903468132019043,
+ -0.982044517993927, 7.114678382873535, -0.10607059299945831,
+ -0.9749990105628967, 6.135150909423828, -0.99994957447052
+ ],
+ 'descriptor': {'dimensions': [1, 2, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'elu float32 5D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'eluInput': {
+ 'data': [
+ 4.721739768981934, 0.3768780529499054, 1.4189997911453247,
+ -3.8663666248321533, 1.3590080738067627, -3.8641843795776367,
+ 7.839725494384766, -6.69080114364624, 0.5456406474113464,
+ 5.776711463928223, 7.263273239135742, -7.419948101043701,
+ 5.665064334869385, -6.712906837463379, -3.334894895553589,
+ -1.2103675603866577, 7.255547046661377, 8.903468132019043,
+ -4.01986026763916, 7.114678382873535, -0.11212847381830215,
+ -3.688840866088867, 6.135150909423828, -9.895182609558105
+ ],
+ 'descriptor': {'dimensions': [1, 2, 1, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'elu',
+ 'arguments': [{'input': 'eluInput'}],
+ 'outputs': 'eluOutput'
+ }],
+ 'expectedOutputs': {
+ 'eluOutput': {
+ 'data': [
+ 4.721739768981934, 0.3768780529499054, 1.4189997911453247,
+ -0.9790657162666321, 1.3590080738067627, -0.9790199995040894,
+ 7.839725494384766, -0.9987577199935913, 0.5456406474113464,
+ 5.776711463928223, 7.263273239135742, -0.999400794506073,
+ 5.665064334869385, -0.9987848997116089, -0.9643816947937012,
+ -0.7019122838973999, 7.255547046661377, 8.903468132019043,
+ -0.982044517993927, 7.114678382873535, -0.10607059299945831,
+ -0.9749990105628967, 6.135150909423828, -0.99994957447052
+ ],
+ 'descriptor': {'dimensions': [1, 2, 1, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'elu float32 4D tensor positive options.alpha',
+ 'graph': {
+ 'inputs': {
+ 'eluInput': {
+ 'data': [
+ 4.721739768981934, 0.3768780529499054, 1.4189997911453247,
+ -3.8663666248321533, 1.3590080738067627, -3.8641843795776367,
+ 7.839725494384766, -6.69080114364624, 0.5456406474113464,
+ 5.776711463928223, 7.263273239135742, -7.419948101043701,
+ 5.665064334869385, -6.712906837463379, -3.334894895553589,
+ -1.2103675603866577, 7.255547046661377, 8.903468132019043,
+ -4.01986026763916, 7.114678382873535, -0.11212847381830215,
+ -3.688840866088867, 6.135150909423828, -9.895182609558105
+ ],
+ 'descriptor': {'dimensions': [1, 2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'elu',
+ 'arguments':
+ [{'input': 'eluInput'}, {'options': {'alpha': 0.3607245505146506}}],
+ 'outputs': 'eluOutput'
+ }],
+ 'expectedOutputs': {
+ 'eluOutput': {
+ 'data': [
+ 4.721739768981934, 0.3768780529499054, 1.4189997911453247,
+ -0.35317301750183105, 1.3590080738067627, -0.35315653681755066,
+ 7.839725494384766, -0.36027640104293823, 0.5456406474113464,
+ 5.776711463928223, 7.263273239135742, -0.36050841212272644,
+ 5.665064334869385, -0.3602862060070038, -0.3478761315345764,
+ -0.25319698452949524, 7.255547046661377, 8.903468132019043,
+ -0.3542475700378418, 7.114678382873535, -0.0382622666656971,
+ -0.3517060875892639, 6.135150909423828, -0.3607063591480255
+ ],
+ 'descriptor': {'dimensions': [1, 2, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'elu float32 4D tensor negative options.alpha',
+ 'graph': {
+ 'inputs': {
+ 'eluInput': {
+ 'data': [
+ 4.721739768981934, 0.3768780529499054, 1.4189997911453247,
+ -3.8663666248321533, 1.3590080738067627, -3.8641843795776367,
+ 7.839725494384766, -6.69080114364624, 0.5456406474113464,
+ 5.776711463928223, 7.263273239135742, -7.419948101043701,
+ 5.665064334869385, -6.712906837463379, -3.334894895553589,
+ -1.2103675603866577, 7.255547046661377, 8.903468132019043,
+ -4.01986026763916, 7.114678382873535, -0.11212847381830215,
+ -3.688840866088867, 6.135150909423828, -9.895182609558105
+ ],
+ 'descriptor': {'dimensions': [1, 2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'elu',
+ 'arguments':
+ [{'input': 'eluInput'}, {'options': {'alpha': -3.468180406374035}}],
+ 'outputs': 'eluOutput'
+ }],
+ 'expectedOutputs': {
+ 'eluOutput': {
+ 'data': [
+ 4.721739768981934, 0.3768780529499054, 1.4189997911453247,
+ 3.3955764770507812, 1.3590080738067627, 3.3954179286956787,
+ 7.839725494384766, 3.463871955871582, 0.5456406474113464,
+ 5.776711463928223, 7.263273239135742, 3.466102361679077,
+ 5.665064334869385, 3.463966131210327, 3.34464955329895,
+ 2.434358596801758, 7.255547046661377, 8.903468132019043,
+ 3.40590763092041, 7.114678382873535, 0.3678719699382782,
+ 3.381472587585449, 6.135150909423828, 3.468005657196045
+ ],
+ 'descriptor': {'dimensions': [1, 2, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ eluTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getEluPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/equal.https.any.js b/tests/wpt/tests/webnn/conformance_tests/equal.https.any.js
index 4b8c6c646d8..c763786d4af 100644
--- a/tests/wpt/tests/webnn/conformance_tests/equal.https.any.js
+++ b/tests/wpt/tests/webnn/conformance_tests/equal.https.any.js
@@ -1,4 +1,4 @@
-// META: title=test WebNN API element-wise binary operations
+// META: title=test WebNN API element-wise equal operation
// META: global=window,dedicatedworker
// META: variant=?cpu
// META: variant=?gpu
@@ -8,6 +8,531 @@
'use strict';
-// https://webmachinelearning.github.io/webnn/#dom-mlgraphbuilder-equal
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-logical
+// Compare if the values of the two input tensors are equal, element-wise.
+//
+// MLOperand equal(MLOperand a, MLOperand b);
-runWebNNConformanceTests('equal', buildOperationWithTwoInputs);
+
+const getEqualPrecisionTolerance = (graphResources) => {
+ const toleranceValueDict = {uint8: 0};
+ const expectedDataType =
+ getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs);
+ return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]};
+};
+
+const equalTests = [
+ {
+ 'name': 'equal float32 0D scalar',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [-0.6285496950149536],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [-4.4166412353515625],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'equal',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output':
+ {'data': [0], 'descriptor': {'dimensions': [], 'dataType': 'uint8'}}
+ }
+ }
+ },
+ {
+ 'name': 'equal float32 1D constant tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 2.80570650100708, 5.588105201721191, 2.855226516723633,
+ 4.996258735656738, 0.9727277755737305, -4.742599964141846,
+ 2.80570650100708, 5.588105201721191, -5.107602119445801,
+ 6.624142169952393, -2.3207247257232666, -7.053895950317383,
+ 2.80570650100708, 5.588105201721191, 4.980423927307129,
+ -5.440841197967529, 1.1459590196609497, 7.774532794952393,
+ 2.80570650100708, 5.588105201721191, -6.245251178741455,
+ -2.8490731716156006, -2.6951117515563965, 5.817563056945801
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'inputB': {
+ 'data': [
+ 2.80570650100708, 5.588105201721191, -4.839719772338867,
+ 4.996258735656738, 0.9727277755737305, -6.173707485198975,
+ 2.80570650100708, 5.588105201721191, 7.767369747161865,
+ -4.308907985687256, -5.895479679107666, -8.53209114074707,
+ 2.80570650100708, 5.588105201721191, 0.17833954095840454,
+ -4.479541778564453, 0.6819732189178467, -6.6875128746032715,
+ 2.80570650100708, 5.588105201721191, -9.041799545288086,
+ -1.9728281497955322, -3.011512279510498, 3.6268343925476074
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'equal',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0,
+ 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'equal float32 1D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 2.80570650100708, 5.588105201721191, 2.855226516723633,
+ 4.996258735656738, 0.9727277755737305, -4.742599964141846,
+ 2.80570650100708, 5.588105201721191, -5.107602119445801,
+ 6.624142169952393, -2.3207247257232666, -7.053895950317383,
+ 2.80570650100708, 5.588105201721191, 4.980423927307129,
+ -5.440841197967529, 1.1459590196609497, 7.774532794952393,
+ 2.80570650100708, 5.588105201721191, -6.245251178741455,
+ -2.8490731716156006, -2.6951117515563965, 5.817563056945801
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 2.80570650100708, 5.588105201721191, -4.839719772338867,
+ 4.996258735656738, 0.9727277755737305, -6.173707485198975,
+ 2.80570650100708, 5.588105201721191, 7.767369747161865,
+ -4.308907985687256, -5.895479679107666, -8.53209114074707,
+ 2.80570650100708, 5.588105201721191, 0.17833954095840454,
+ -4.479541778564453, 0.6819732189178467, -6.6875128746032715,
+ 2.80570650100708, 5.588105201721191, -9.041799545288086,
+ -1.9728281497955322, -3.011512279510498, 3.6268343925476074
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'equal',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0,
+ 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'equal float32 2D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 2.80570650100708, 5.588105201721191, 2.855226516723633,
+ 4.996258735656738, 0.9727277755737305, -4.742599964141846,
+ 2.80570650100708, 5.588105201721191, -5.107602119445801,
+ 6.624142169952393, -2.3207247257232666, -7.053895950317383,
+ 2.80570650100708, 5.588105201721191, 4.980423927307129,
+ -5.440841197967529, 1.1459590196609497, 7.774532794952393,
+ 2.80570650100708, 5.588105201721191, -6.245251178741455,
+ -2.8490731716156006, -2.6951117515563965, 5.817563056945801
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 2.80570650100708, 5.588105201721191, -4.839719772338867,
+ 4.996258735656738, 0.9727277755737305, -6.173707485198975,
+ 2.80570650100708, 5.588105201721191, 7.767369747161865,
+ -4.308907985687256, -5.895479679107666, -8.53209114074707,
+ 2.80570650100708, 5.588105201721191, 0.17833954095840454,
+ -4.479541778564453, 0.6819732189178467, -6.6875128746032715,
+ 2.80570650100708, 5.588105201721191, -9.041799545288086,
+ -1.9728281497955322, -3.011512279510498, 3.6268343925476074
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'equal',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0,
+ 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'equal float32 3D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 2.80570650100708, 5.588105201721191, 2.855226516723633,
+ 4.996258735656738, 0.9727277755737305, -4.742599964141846,
+ 2.80570650100708, 5.588105201721191, -5.107602119445801,
+ 6.624142169952393, -2.3207247257232666, -7.053895950317383,
+ 2.80570650100708, 5.588105201721191, 4.980423927307129,
+ -5.440841197967529, 1.1459590196609497, 7.774532794952393,
+ 2.80570650100708, 5.588105201721191, -6.245251178741455,
+ -2.8490731716156006, -2.6951117515563965, 5.817563056945801
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 2.80570650100708, 5.588105201721191, -4.839719772338867,
+ 4.996258735656738, 0.9727277755737305, -6.173707485198975,
+ 2.80570650100708, 5.588105201721191, 7.767369747161865,
+ -4.308907985687256, -5.895479679107666, -8.53209114074707,
+ 2.80570650100708, 5.588105201721191, 0.17833954095840454,
+ -4.479541778564453, 0.6819732189178467, -6.6875128746032715,
+ 2.80570650100708, 5.588105201721191, -9.041799545288086,
+ -1.9728281497955322, -3.011512279510498, 3.6268343925476074
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'equal',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0,
+ 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'equal float32 4D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 2.80570650100708, 5.588105201721191, 2.855226516723633,
+ 4.996258735656738, 0.9727277755737305, -4.742599964141846,
+ 2.80570650100708, 5.588105201721191, -5.107602119445801,
+ 6.624142169952393, -2.3207247257232666, -7.053895950317383,
+ 2.80570650100708, 5.588105201721191, 4.980423927307129,
+ -5.440841197967529, 1.1459590196609497, 7.774532794952393,
+ 2.80570650100708, 5.588105201721191, -6.245251178741455,
+ -2.8490731716156006, -2.6951117515563965, 5.817563056945801
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 2.80570650100708, 5.588105201721191, -4.839719772338867,
+ 4.996258735656738, 0.9727277755737305, -6.173707485198975,
+ 2.80570650100708, 5.588105201721191, 7.767369747161865,
+ -4.308907985687256, -5.895479679107666, -8.53209114074707,
+ 2.80570650100708, 5.588105201721191, 0.17833954095840454,
+ -4.479541778564453, 0.6819732189178467, -6.6875128746032715,
+ 2.80570650100708, 5.588105201721191, -9.041799545288086,
+ -1.9728281497955322, -3.011512279510498, 3.6268343925476074
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'equal',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0,
+ 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'equal float32 5D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 2.80570650100708, 5.588105201721191, 2.855226516723633,
+ 4.996258735656738, 0.9727277755737305, -4.742599964141846,
+ 2.80570650100708, 5.588105201721191, -5.107602119445801,
+ 6.624142169952393, -2.3207247257232666, -7.053895950317383,
+ 2.80570650100708, 5.588105201721191, 4.980423927307129,
+ -5.440841197967529, 1.1459590196609497, 7.774532794952393,
+ 2.80570650100708, 5.588105201721191, -6.245251178741455,
+ -2.8490731716156006, -2.6951117515563965, 5.817563056945801
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 2, 3], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 2.80570650100708, 5.588105201721191, -4.839719772338867,
+ 4.996258735656738, 0.9727277755737305, -6.173707485198975,
+ 2.80570650100708, 5.588105201721191, 7.767369747161865,
+ -4.308907985687256, -5.895479679107666, -8.53209114074707,
+ 2.80570650100708, 5.588105201721191, 0.17833954095840454,
+ -4.479541778564453, 0.6819732189178467, -6.6875128746032715,
+ 2.80570650100708, 5.588105201721191, -9.041799545288086,
+ -1.9728281497955322, -3.011512279510498, 3.6268343925476074
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'equal',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0,
+ 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 2, 3], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'equal float32 broadcast 0D to 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [2.80570650100708],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 2.80570650100708, 5.588105201721191, 2.855226516723633,
+ 4.996258735656738, 0.9727277755737305, -4.742599964141846,
+ 2.80570650100708, 5.588105201721191, -5.107602119445801,
+ 6.624142169952393, -2.3207247257232666, -7.053895950317383,
+ 2.80570650100708, 5.588105201721191, 4.980423927307129,
+ -5.440841197967529, 1.1459590196609497, 7.774532794952393,
+ 2.80570650100708, 5.588105201721191, -6.245251178741455,
+ -2.8490731716156006, -2.6951117515563965, 5.817563056945801
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'equal',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'equal float32 broadcast 1D to 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [2.80570650100708],
+ 'descriptor': {'dimensions': [1], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 2.80570650100708, 5.588105201721191, 2.855226516723633,
+ 4.996258735656738, 0.9727277755737305, -4.742599964141846,
+ 2.80570650100708, 5.588105201721191, -5.107602119445801,
+ 6.624142169952393, -2.3207247257232666, -7.053895950317383,
+ 2.80570650100708, 5.588105201721191, 4.980423927307129,
+ -5.440841197967529, 1.1459590196609497, 7.774532794952393,
+ 2.80570650100708, 5.588105201721191, -6.245251178741455,
+ -2.8490731716156006, -2.6951117515563965, 5.817563056945801
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'equal',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'equal float32 broadcast 2D to 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 2.80570650100708, 5.588105201721191, 2.855226516723633,
+ 4.996258735656738, 0.9727277755737305, -4.742599964141846,
+ 2.80570650100708, 5.588105201721191, -5.107602119445801,
+ 6.624142169952393, -2.3207247257232666, -7.053895950317383,
+ 2.80570650100708, 5.588105201721191, 4.980423927307129,
+ -5.440841197967529, 1.1459590196609497, 7.774532794952393,
+ 2.80570650100708, 5.588105201721191, -6.245251178741455,
+ -2.8490731716156006, -2.6951117515563965, 5.817563056945801
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 2.80570650100708, 5.588105201721191, -4.9622955322265625,
+ -2.863192081451416, -3.011512279510498, 3.6268343925476074
+ ],
+ 'descriptor': {'dimensions': [2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'equal',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,
+ 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'equal float32 broadcast 3D to 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 2.80570650100708, 5.588105201721191, 2.855226516723633,
+ 4.996258735656738, 0.9727277755737305, -4.742599964141846,
+ 2.80570650100708, 5.588105201721191, -5.107602119445801,
+ 6.624142169952393, -2.3207247257232666, -7.053895950317383,
+ 2.80570650100708, 5.588105201721191, 4.980423927307129,
+ -5.440841197967529, 1.1459590196609497, 7.774532794952393,
+ 2.80570650100708, 5.588105201721191, -6.245251178741455,
+ -2.8490731716156006, -2.6951117515563965, 5.817563056945801
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 2.80570650100708, 5.588105201721191, -9.041799545288086,
+ 3.6268343925476074
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'equal',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'equal float32 broadcast 4D to 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [2.80570650100708],
+ 'descriptor': {'dimensions': [1, 1, 1, 1], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 2.80570650100708, 5.588105201721191, 2.855226516723633,
+ 4.996258735656738, 0.9727277755737305, -4.742599964141846,
+ 2.80570650100708, 5.588105201721191, -5.107602119445801,
+ 6.624142169952393, -2.3207247257232666, -7.053895950317383,
+ 2.80570650100708, 5.588105201721191, 4.980423927307129,
+ -5.440841197967529, 1.1459590196609497, 7.774532794952393,
+ 2.80570650100708, 5.588105201721191, -6.245251178741455,
+ -2.8490731716156006, -2.6951117515563965, 5.817563056945801
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'equal',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
+ 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint8'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ equalTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getEqualPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/erf.https.any.js b/tests/wpt/tests/webnn/conformance_tests/erf.https.any.js
new file mode 100644
index 00000000000..78fc81ea74a
--- /dev/null
+++ b/tests/wpt/tests/webnn/conformance_tests/erf.https.any.js
@@ -0,0 +1,297 @@
+// META: title=test WebNN API element-wise erf operation
+// META: global=window,dedicatedworker
+// META: variant=?cpu
+// META: variant=?gpu
+// META: variant=?npu
+// META: script=../resources/utils.js
+// META: timeout=long
+
+'use strict';
+
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-unary
+// Compute the error function of the input tensor, element-wise.
+//
+// MLOperand erf(MLOperand input);
+
+
+const getErfPrecisionTolerance = (graphResources) => {
+ const toleranceValueDict = {float32: 1 / 1024, float16: 1 / 512};
+ const expectedDataType =
+ getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs);
+ return {metricType: 'ATOL', value: toleranceValueDict[expectedDataType]};
+};
+
+const erfTests = [
+ {
+ 'name': 'erf float32 0D scalar',
+ 'graph': {
+ 'inputs': {
+ 'erfInput': {
+ 'data': [-0.004352752584964037],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'erf',
+ 'arguments': [{'input': 'erfInput'}],
+ 'outputs': 'erfOutput'
+ }],
+ 'expectedOutputs': {
+ 'erfOutput': {
+ 'data': [-0.004911554511636496],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'erf float32 1D constant tensor',
+ 'graph': {
+ 'inputs': {
+ 'erfInput': {
+ 'data': [
+ -0.5883062481880188, -0.5323766469955444, 0.1279870569705963,
+ 0.5772181749343872, 0.904577910900116, -0.49856746196746826,
+ 0.9843886494636536, 0.21642258763313293, 0.25235170125961304,
+ -0.1491669863462448, 0.9136939644813538, -0.5736439824104309,
+ 0.7404468059539795, 0.5202203392982483, -0.16549505293369293,
+ 0.8005731701850891, 0.4001320004463196, -0.7489422559738159,
+ -0.8946002721786499, -0.3920256197452545, 0.6854220628738403,
+ -0.6744900345802307, -0.439808189868927, 0.2709762454032898
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'erf',
+ 'arguments': [{'input': 'erfInput'}],
+ 'outputs': 'erfOutput'
+ }],
+ 'expectedOutputs': {
+ 'erfOutput': {
+ 'data': [
+ -0.5945858955383301, -0.5484867095947266, 0.14363321661949158,
+ 0.5856771469116211, 0.7991966009140015, -0.5192402005195618,
+ 0.8361185789108276, 0.2404468059539795, 0.27881762385368347,
+ -0.16707675158977509, 0.8036975860595703, -0.5827808976173401,
+ 0.7049695253372192, 0.5380884408950806, -0.1850501298904419,
+ 0.742441713809967, 0.4285193383693695, -0.710474967956543,
+ -0.7941843867301941, -0.4207003712654114, 0.6676210165023804,
+ -0.6598520874977112, -0.46604686975479126, 0.29844197630882263
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'erf float32 1D tensor',
+ 'graph': {
+ 'inputs': {
+ 'erfInput': {
+ 'data': [
+ -0.5883062481880188, -0.5323766469955444, 0.1279870569705963,
+ 0.5772181749343872, 0.904577910900116, -0.49856746196746826,
+ 0.9843886494636536, 0.21642258763313293, 0.25235170125961304,
+ -0.1491669863462448, 0.9136939644813538, -0.5736439824104309,
+ 0.7404468059539795, 0.5202203392982483, -0.16549505293369293,
+ 0.8005731701850891, 0.4001320004463196, -0.7489422559738159,
+ -0.8946002721786499, -0.3920256197452545, 0.6854220628738403,
+ -0.6744900345802307, -0.439808189868927, 0.2709762454032898
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'erf',
+ 'arguments': [{'input': 'erfInput'}],
+ 'outputs': 'erfOutput'
+ }],
+ 'expectedOutputs': {
+ 'erfOutput': {
+ 'data': [
+ -0.5945858955383301, -0.5484867095947266, 0.14363321661949158,
+ 0.5856771469116211, 0.7991966009140015, -0.5192402005195618,
+ 0.8361185789108276, 0.2404468059539795, 0.27881762385368347,
+ -0.16707675158977509, 0.8036975860595703, -0.5827808976173401,
+ 0.7049695253372192, 0.5380884408950806, -0.1850501298904419,
+ 0.742441713809967, 0.4285193383693695, -0.710474967956543,
+ -0.7941843867301941, -0.4207003712654114, 0.6676210165023804,
+ -0.6598520874977112, -0.46604686975479126, 0.29844197630882263
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'erf float32 2D tensor',
+ 'graph': {
+ 'inputs': {
+ 'erfInput': {
+ 'data': [
+ -0.5883062481880188, -0.5323766469955444, 0.1279870569705963,
+ 0.5772181749343872, 0.904577910900116, -0.49856746196746826,
+ 0.9843886494636536, 0.21642258763313293, 0.25235170125961304,
+ -0.1491669863462448, 0.9136939644813538, -0.5736439824104309,
+ 0.7404468059539795, 0.5202203392982483, -0.16549505293369293,
+ 0.8005731701850891, 0.4001320004463196, -0.7489422559738159,
+ -0.8946002721786499, -0.3920256197452545, 0.6854220628738403,
+ -0.6744900345802307, -0.439808189868927, 0.2709762454032898
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'erf',
+ 'arguments': [{'input': 'erfInput'}],
+ 'outputs': 'erfOutput'
+ }],
+ 'expectedOutputs': {
+ 'erfOutput': {
+ 'data': [
+ -0.5945858955383301, -0.5484867095947266, 0.14363321661949158,
+ 0.5856771469116211, 0.7991966009140015, -0.5192402005195618,
+ 0.8361185789108276, 0.2404468059539795, 0.27881762385368347,
+ -0.16707675158977509, 0.8036975860595703, -0.5827808976173401,
+ 0.7049695253372192, 0.5380884408950806, -0.1850501298904419,
+ 0.742441713809967, 0.4285193383693695, -0.710474967956543,
+ -0.7941843867301941, -0.4207003712654114, 0.6676210165023804,
+ -0.6598520874977112, -0.46604686975479126, 0.29844197630882263
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'erf float32 3D tensor',
+ 'graph': {
+ 'inputs': {
+ 'erfInput': {
+ 'data': [
+ -0.5883062481880188, -0.5323766469955444, 0.1279870569705963,
+ 0.5772181749343872, 0.904577910900116, -0.49856746196746826,
+ 0.9843886494636536, 0.21642258763313293, 0.25235170125961304,
+ -0.1491669863462448, 0.9136939644813538, -0.5736439824104309,
+ 0.7404468059539795, 0.5202203392982483, -0.16549505293369293,
+ 0.8005731701850891, 0.4001320004463196, -0.7489422559738159,
+ -0.8946002721786499, -0.3920256197452545, 0.6854220628738403,
+ -0.6744900345802307, -0.439808189868927, 0.2709762454032898
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'erf',
+ 'arguments': [{'input': 'erfInput'}],
+ 'outputs': 'erfOutput'
+ }],
+ 'expectedOutputs': {
+ 'erfOutput': {
+ 'data': [
+ -0.5945858955383301, -0.5484867095947266, 0.14363321661949158,
+ 0.5856771469116211, 0.7991966009140015, -0.5192402005195618,
+ 0.8361185789108276, 0.2404468059539795, 0.27881762385368347,
+ -0.16707675158977509, 0.8036975860595703, -0.5827808976173401,
+ 0.7049695253372192, 0.5380884408950806, -0.1850501298904419,
+ 0.742441713809967, 0.4285193383693695, -0.710474967956543,
+ -0.7941843867301941, -0.4207003712654114, 0.6676210165023804,
+ -0.6598520874977112, -0.46604686975479126, 0.29844197630882263
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'erf float32 4D tensor',
+ 'graph': {
+ 'inputs': {
+ 'erfInput': {
+ 'data': [
+ -0.5883062481880188, -0.5323766469955444, 0.1279870569705963,
+ 0.5772181749343872, 0.904577910900116, -0.49856746196746826,
+ 0.9843886494636536, 0.21642258763313293, 0.25235170125961304,
+ -0.1491669863462448, 0.9136939644813538, -0.5736439824104309,
+ 0.7404468059539795, 0.5202203392982483, -0.16549505293369293,
+ 0.8005731701850891, 0.4001320004463196, -0.7489422559738159,
+ -0.8946002721786499, -0.3920256197452545, 0.6854220628738403,
+ -0.6744900345802307, -0.439808189868927, 0.2709762454032898
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'erf',
+ 'arguments': [{'input': 'erfInput'}],
+ 'outputs': 'erfOutput'
+ }],
+ 'expectedOutputs': {
+ 'erfOutput': {
+ 'data': [
+ -0.5945858955383301, -0.5484867095947266, 0.14363321661949158,
+ 0.5856771469116211, 0.7991966009140015, -0.5192402005195618,
+ 0.8361185789108276, 0.2404468059539795, 0.27881762385368347,
+ -0.16707675158977509, 0.8036975860595703, -0.5827808976173401,
+ 0.7049695253372192, 0.5380884408950806, -0.1850501298904419,
+ 0.742441713809967, 0.4285193383693695, -0.710474967956543,
+ -0.7941843867301941, -0.4207003712654114, 0.6676210165023804,
+ -0.6598520874977112, -0.46604686975479126, 0.29844197630882263
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'erf float32 5D tensor',
+ 'graph': {
+ 'inputs': {
+ 'erfInput': {
+ 'data': [
+ -0.5883062481880188, -0.5323766469955444, 0.1279870569705963,
+ 0.5772181749343872, 0.904577910900116, -0.49856746196746826,
+ 0.9843886494636536, 0.21642258763313293, 0.25235170125961304,
+ -0.1491669863462448, 0.9136939644813538, -0.5736439824104309,
+ 0.7404468059539795, 0.5202203392982483, -0.16549505293369293,
+ 0.8005731701850891, 0.4001320004463196, -0.7489422559738159,
+ -0.8946002721786499, -0.3920256197452545, 0.6854220628738403,
+ -0.6744900345802307, -0.439808189868927, 0.2709762454032898
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 1, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'erf',
+ 'arguments': [{'input': 'erfInput'}],
+ 'outputs': 'erfOutput'
+ }],
+ 'expectedOutputs': {
+ 'erfOutput': {
+ 'data': [
+ -0.5945858955383301, -0.5484867095947266, 0.14363321661949158,
+ 0.5856771469116211, 0.7991966009140015, -0.5192402005195618,
+ 0.8361185789108276, 0.2404468059539795, 0.27881762385368347,
+ -0.16707675158977509, 0.8036975860595703, -0.5827808976173401,
+ 0.7049695253372192, 0.5380884408950806, -0.1850501298904419,
+ 0.742441713809967, 0.4285193383693695, -0.710474967956543,
+ -0.7941843867301941, -0.4207003712654114, 0.6676210165023804,
+ -0.6598520874977112, -0.46604686975479126, 0.29844197630882263
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 1, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ erfTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getErfPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/exp.https.any.js b/tests/wpt/tests/webnn/conformance_tests/exp.https.any.js
new file mode 100644
index 00000000000..9d67712ee60
--- /dev/null
+++ b/tests/wpt/tests/webnn/conformance_tests/exp.https.any.js
@@ -0,0 +1,297 @@
+// META: title=test WebNN API element-wise exp operation
+// META: global=window,dedicatedworker
+// META: variant=?cpu
+// META: variant=?gpu
+// META: variant=?npu
+// META: script=../resources/utils.js
+// META: timeout=long
+
+'use strict';
+
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-unary
+// Compute the exponential of the input tensor, element-wise.
+//
+// MLOperand exp(MLOperand input);
+
+
+const getExpPrecisionTolerance = (graphResources) => {
+ const toleranceValueDict = {float32: 32, float16: 1};
+ const expectedDataType =
+ getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs);
+ return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]};
+};
+
+const expTests = [
+ {
+ 'name': 'exp float32 0D scalar',
+ 'graph': {
+ 'inputs': {
+ 'expInput': {
+ 'data': [0.3421436548233032],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'exp',
+ 'arguments': [{'input': 'expInput'}],
+ 'outputs': 'expOutput'
+ }],
+ 'expectedOutputs': {
+ 'expOutput': {
+ 'data': [1.4079625606536865],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'exp float32 1D constant tensor',
+ 'graph': {
+ 'inputs': {
+ 'expInput': {
+ 'data': [
+ 0.3421436548233032, -3.310965061187744, -3.6967575550079346,
+ -5.105378150939941, 5.47104024887085, -0.06790750473737717,
+ 2.7373435497283936, -3.5470757484436035, 5.339224815368652,
+ -1.2636781930923462, -0.9162953495979309, -9.088432312011719,
+ -4.016050815582275, 4.670352935791016, 7.326992034912109,
+ 8.294342994689941, -7.345414161682129, -0.9275799989700317,
+ -1.7085379362106323, -9.73737907409668, -1.9747875928878784,
+ 8.203149795532227, -7.267597675323486, -3.5890684127807617
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'exp',
+ 'arguments': [{'input': 'expInput'}],
+ 'outputs': 'expOutput'
+ }],
+ 'expectedOutputs': {
+ 'expOutput': {
+ 'data': [
+ 1.4079625606536865, 0.03648095205426216, 0.024803820997476578,
+ 0.006064045242965221, 237.70733642578125, 0.9343469142913818,
+ 15.44589900970459, 0.02880876138806343, 208.35113525390625,
+ 0.2826126217842102, 0.39999815821647644, 0.00011296502634650096,
+ 0.018024004995822906, 106.73540496826172, 1520.8004150390625,
+ 4001.173583984375, 0.0006455459515564144, 0.3955096900463104,
+ 0.18113042414188385, 0.0000590350573475007, 0.1387907862663269,
+ 3652.4365234375, 0.0006977862794883549, 0.02762405201792717
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'exp float32 1D tensor',
+ 'graph': {
+ 'inputs': {
+ 'expInput': {
+ 'data': [
+ 0.3421436548233032, -3.310965061187744, -3.6967575550079346,
+ -5.105378150939941, 5.47104024887085, -0.06790750473737717,
+ 2.7373435497283936, -3.5470757484436035, 5.339224815368652,
+ -1.2636781930923462, -0.9162953495979309, -9.088432312011719,
+ -4.016050815582275, 4.670352935791016, 7.326992034912109,
+ 8.294342994689941, -7.345414161682129, -0.9275799989700317,
+ -1.7085379362106323, -9.73737907409668, -1.9747875928878784,
+ 8.203149795532227, -7.267597675323486, -3.5890684127807617
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'exp',
+ 'arguments': [{'input': 'expInput'}],
+ 'outputs': 'expOutput'
+ }],
+ 'expectedOutputs': {
+ 'expOutput': {
+ 'data': [
+ 1.4079625606536865, 0.03648095205426216, 0.024803820997476578,
+ 0.006064045242965221, 237.70733642578125, 0.9343469142913818,
+ 15.44589900970459, 0.02880876138806343, 208.35113525390625,
+ 0.2826126217842102, 0.39999815821647644, 0.00011296502634650096,
+ 0.018024004995822906, 106.73540496826172, 1520.8004150390625,
+ 4001.173583984375, 0.0006455459515564144, 0.3955096900463104,
+ 0.18113042414188385, 0.0000590350573475007, 0.1387907862663269,
+ 3652.4365234375, 0.0006977862794883549, 0.02762405201792717
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'exp float32 2D tensor',
+ 'graph': {
+ 'inputs': {
+ 'expInput': {
+ 'data': [
+ 0.3421436548233032, -3.310965061187744, -3.6967575550079346,
+ -5.105378150939941, 5.47104024887085, -0.06790750473737717,
+ 2.7373435497283936, -3.5470757484436035, 5.339224815368652,
+ -1.2636781930923462, -0.9162953495979309, -9.088432312011719,
+ -4.016050815582275, 4.670352935791016, 7.326992034912109,
+ 8.294342994689941, -7.345414161682129, -0.9275799989700317,
+ -1.7085379362106323, -9.73737907409668, -1.9747875928878784,
+ 8.203149795532227, -7.267597675323486, -3.5890684127807617
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'exp',
+ 'arguments': [{'input': 'expInput'}],
+ 'outputs': 'expOutput'
+ }],
+ 'expectedOutputs': {
+ 'expOutput': {
+ 'data': [
+ 1.4079625606536865, 0.03648095205426216, 0.024803820997476578,
+ 0.006064045242965221, 237.70733642578125, 0.9343469142913818,
+ 15.44589900970459, 0.02880876138806343, 208.35113525390625,
+ 0.2826126217842102, 0.39999815821647644, 0.00011296502634650096,
+ 0.018024004995822906, 106.73540496826172, 1520.8004150390625,
+ 4001.173583984375, 0.0006455459515564144, 0.3955096900463104,
+ 0.18113042414188385, 0.0000590350573475007, 0.1387907862663269,
+ 3652.4365234375, 0.0006977862794883549, 0.02762405201792717
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'exp float32 3D tensor',
+ 'graph': {
+ 'inputs': {
+ 'expInput': {
+ 'data': [
+ 0.3421436548233032, -3.310965061187744, -3.6967575550079346,
+ -5.105378150939941, 5.47104024887085, -0.06790750473737717,
+ 2.7373435497283936, -3.5470757484436035, 5.339224815368652,
+ -1.2636781930923462, -0.9162953495979309, -9.088432312011719,
+ -4.016050815582275, 4.670352935791016, 7.326992034912109,
+ 8.294342994689941, -7.345414161682129, -0.9275799989700317,
+ -1.7085379362106323, -9.73737907409668, -1.9747875928878784,
+ 8.203149795532227, -7.267597675323486, -3.5890684127807617
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'exp',
+ 'arguments': [{'input': 'expInput'}],
+ 'outputs': 'expOutput'
+ }],
+ 'expectedOutputs': {
+ 'expOutput': {
+ 'data': [
+ 1.4079625606536865, 0.03648095205426216, 0.024803820997476578,
+ 0.006064045242965221, 237.70733642578125, 0.9343469142913818,
+ 15.44589900970459, 0.02880876138806343, 208.35113525390625,
+ 0.2826126217842102, 0.39999815821647644, 0.00011296502634650096,
+ 0.018024004995822906, 106.73540496826172, 1520.8004150390625,
+ 4001.173583984375, 0.0006455459515564144, 0.3955096900463104,
+ 0.18113042414188385, 0.0000590350573475007, 0.1387907862663269,
+ 3652.4365234375, 0.0006977862794883549, 0.02762405201792717
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'exp float32 4D tensor',
+ 'graph': {
+ 'inputs': {
+ 'expInput': {
+ 'data': [
+ 0.3421436548233032, -3.310965061187744, -3.6967575550079346,
+ -5.105378150939941, 5.47104024887085, -0.06790750473737717,
+ 2.7373435497283936, -3.5470757484436035, 5.339224815368652,
+ -1.2636781930923462, -0.9162953495979309, -9.088432312011719,
+ -4.016050815582275, 4.670352935791016, 7.326992034912109,
+ 8.294342994689941, -7.345414161682129, -0.9275799989700317,
+ -1.7085379362106323, -9.73737907409668, -1.9747875928878784,
+ 8.203149795532227, -7.267597675323486, -3.5890684127807617
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'exp',
+ 'arguments': [{'input': 'expInput'}],
+ 'outputs': 'expOutput'
+ }],
+ 'expectedOutputs': {
+ 'expOutput': {
+ 'data': [
+ 1.4079625606536865, 0.03648095205426216, 0.024803820997476578,
+ 0.006064045242965221, 237.70733642578125, 0.9343469142913818,
+ 15.44589900970459, 0.02880876138806343, 208.35113525390625,
+ 0.2826126217842102, 0.39999815821647644, 0.00011296502634650096,
+ 0.018024004995822906, 106.73540496826172, 1520.8004150390625,
+ 4001.173583984375, 0.0006455459515564144, 0.3955096900463104,
+ 0.18113042414188385, 0.0000590350573475007, 0.1387907862663269,
+ 3652.4365234375, 0.0006977862794883549, 0.02762405201792717
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'exp float32 5D tensor',
+ 'graph': {
+ 'inputs': {
+ 'expInput': {
+ 'data': [
+ 0.3421436548233032, -3.310965061187744, -3.6967575550079346,
+ -5.105378150939941, 5.47104024887085, -0.06790750473737717,
+ 2.7373435497283936, -3.5470757484436035, 5.339224815368652,
+ -1.2636781930923462, -0.9162953495979309, -9.088432312011719,
+ -4.016050815582275, 4.670352935791016, 7.326992034912109,
+ 8.294342994689941, -7.345414161682129, -0.9275799989700317,
+ -1.7085379362106323, -9.73737907409668, -1.9747875928878784,
+ 8.203149795532227, -7.267597675323486, -3.5890684127807617
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 1, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'exp',
+ 'arguments': [{'input': 'expInput'}],
+ 'outputs': 'expOutput'
+ }],
+ 'expectedOutputs': {
+ 'expOutput': {
+ 'data': [
+ 1.4079625606536865, 0.03648095205426216, 0.024803820997476578,
+ 0.006064045242965221, 237.70733642578125, 0.9343469142913818,
+ 15.44589900970459, 0.02880876138806343, 208.35113525390625,
+ 0.2826126217842102, 0.39999815821647644, 0.00011296502634650096,
+ 0.018024004995822906, 106.73540496826172, 1520.8004150390625,
+ 4001.173583984375, 0.0006455459515564144, 0.3955096900463104,
+ 0.18113042414188385, 0.0000590350573475007, 0.1387907862663269,
+ 3652.4365234375, 0.0006977862794883549, 0.02762405201792717
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 1, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ expTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getExpPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/expand.https.any.js b/tests/wpt/tests/webnn/conformance_tests/expand.https.any.js
index 1535bb76a90..6f94795370f 100644
--- a/tests/wpt/tests/webnn/conformance_tests/expand.https.any.js
+++ b/tests/wpt/tests/webnn/conformance_tests/expand.https.any.js
@@ -8,7 +8,724 @@
'use strict';
-// https://webmachinelearning.github.io/webnn/#api-mlgraphbuilder-expand
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-expand
+// Expand any dimension of size 1 of the input tensor to a larger size according
+// to the new shape.
+//
+// MLOperand expand(
+// MLOperand input, sequence<[EnforceRange] unsigned long> newShape);
-// Reuse buildReshape method
-runWebNNConformanceTests('expand', buildReshape);
+
+const getExpandPrecisionTolerance = (graphResources) => {
+ const toleranceValueDict = {float32: 0, float16: 0};
+ const expectedDataType =
+ getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs);
+ return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]};
+};
+
+const expandTests = [
+ {
+ 'name': 'expand float32 0D scalar to 1D',
+ 'graph': {
+ 'inputs': {
+ 'expandInput': {
+ 'data': [-6.461850643157959],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'expand',
+ 'arguments': [{'input': 'expandInput'}, {'newShape': [24]}],
+ 'outputs': 'expandOutput'
+ }],
+ 'expectedOutputs': {
+ 'expandOutput': {
+ 'data': [
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'expand float32 0D scalar to 2D',
+ 'graph': {
+ 'inputs': {
+ 'expandInput': {
+ 'data': [-6.461850643157959],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'expand',
+ 'arguments': [{'input': 'expandInput'}, {'newShape': [4, 6]}],
+ 'outputs': 'expandOutput'
+ }],
+ 'expectedOutputs': {
+ 'expandOutput': {
+ 'data': [
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'expand float32 0D scalar to 3D',
+ 'graph': {
+ 'inputs': {
+ 'expandInput': {
+ 'data': [-6.461850643157959],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'expand',
+ 'arguments': [{'input': 'expandInput'}, {'newShape': [2, 3, 4]}],
+ 'outputs': 'expandOutput'
+ }],
+ 'expectedOutputs': {
+ 'expandOutput': {
+ 'data': [
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'expand float32 0D scalar to 4D',
+ 'graph': {
+ 'inputs': {
+ 'expandInput': {
+ 'data': [-6.461850643157959],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'expand',
+ 'arguments': [{'input': 'expandInput'}, {'newShape': [2, 2, 2, 3]}],
+ 'outputs': 'expandOutput'
+ }],
+ 'expectedOutputs': {
+ 'expandOutput': {
+ 'data': [
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'expand float32 0D scalar to 5D',
+ 'graph': {
+ 'inputs': {
+ 'expandInput': {
+ 'data': [-6.461850643157959],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'expand',
+ 'arguments': [{'input': 'expandInput'}, {'newShape': [2, 2, 3, 1, 2]}],
+ 'outputs': 'expandOutput'
+ }],
+ 'expectedOutputs': {
+ 'expandOutput': {
+ 'data': [
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959
+ ],
+ 'descriptor': {'dimensions': [2, 2, 3, 1, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'expand float32 1D constant tensor to 1D',
+ 'graph': {
+ 'inputs': {
+ 'expandInput': {
+ 'data': [-6.461850643157959],
+ 'descriptor': {'dimensions': [1], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'expand',
+ 'arguments': [{'input': 'expandInput'}, {'newShape': [24]}],
+ 'outputs': 'expandOutput'
+ }],
+ 'expectedOutputs': {
+ 'expandOutput': {
+ 'data': [
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'expand float32 1D tensor to 1D',
+ 'graph': {
+ 'inputs': {
+ 'expandInput': {
+ 'data': [-6.461850643157959],
+ 'descriptor': {'dimensions': [1], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'expand',
+ 'arguments': [{'input': 'expandInput'}, {'newShape': [24]}],
+ 'outputs': 'expandOutput'
+ }],
+ 'expectedOutputs': {
+ 'expandOutput': {
+ 'data': [
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'expand float32 1D tensor to 2D',
+ 'graph': {
+ 'inputs': {
+ 'expandInput': {
+ 'data': [-6.461850643157959],
+ 'descriptor': {'dimensions': [1], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'expand',
+ 'arguments': [{'input': 'expandInput'}, {'newShape': [4, 6]}],
+ 'outputs': 'expandOutput'
+ }],
+ 'expectedOutputs': {
+ 'expandOutput': {
+ 'data': [
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'expand float32 1D tensor to 3D',
+ 'graph': {
+ 'inputs': {
+ 'expandInput': {
+ 'data': [-6.461850643157959],
+ 'descriptor': {'dimensions': [1], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'expand',
+ 'arguments': [{'input': 'expandInput'}, {'newShape': [2, 3, 4]}],
+ 'outputs': 'expandOutput'
+ }],
+ 'expectedOutputs': {
+ 'expandOutput': {
+ 'data': [
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'expand float32 1D tensor to 4D',
+ 'graph': {
+ 'inputs': {
+ 'expandInput': {
+ 'data': [-6.461850643157959],
+ 'descriptor': {'dimensions': [1], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'expand',
+ 'arguments': [{'input': 'expandInput'}, {'newShape': [2, 2, 2, 3]}],
+ 'outputs': 'expandOutput'
+ }],
+ 'expectedOutputs': {
+ 'expandOutput': {
+ 'data': [
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'expand float32 1D tensor to 5D',
+ 'graph': {
+ 'inputs': {
+ 'expandInput': {
+ 'data': [-6.461850643157959],
+ 'descriptor': {'dimensions': [1], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'expand',
+ 'arguments': [{'input': 'expandInput'}, {'newShape': [2, 2, 3, 1, 2]}],
+ 'outputs': 'expandOutput'
+ }],
+ 'expectedOutputs': {
+ 'expandOutput': {
+ 'data': [
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959
+ ],
+ 'descriptor': {'dimensions': [2, 2, 3, 1, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'expand float32 2D tensor to 2D (1st dimension)',
+ 'graph': {
+ 'inputs': {
+ 'expandInput': {
+ 'data': [
+ 10.898762702941895, -29.391416549682617, -73.74250793457031,
+ 22.456905364990234, -97.5792465209961, -76.95013427734375
+ ],
+ 'descriptor': {'dimensions': [1, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'expand',
+ 'arguments': [{'input': 'expandInput'}, {'newShape': [4, 6]}],
+ 'outputs': 'expandOutput'
+ }],
+ 'expectedOutputs': {
+ 'expandOutput': {
+ 'data': [
+ 10.898762702941895, -29.391416549682617, -73.74250793457031,
+ 22.456905364990234, -97.5792465209961, -76.95013427734375,
+ 10.898762702941895, -29.391416549682617, -73.74250793457031,
+ 22.456905364990234, -97.5792465209961, -76.95013427734375,
+ 10.898762702941895, -29.391416549682617, -73.74250793457031,
+ 22.456905364990234, -97.5792465209961, -76.95013427734375,
+ 10.898762702941895, -29.391416549682617, -73.74250793457031,
+ 22.456905364990234, -97.5792465209961, -76.95013427734375
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'expand float32 2D tensor to 2D (2nd dimension)',
+ 'graph': {
+ 'inputs': {
+ 'expandInput': {
+ 'data': [
+ 4.965915679931641, 66.14382934570312, 75.28175354003906,
+ 49.998130798339844
+ ],
+ 'descriptor': {'dimensions': [4, 1], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'expand',
+ 'arguments': [{'input': 'expandInput'}, {'newShape': [4, 6]}],
+ 'outputs': 'expandOutput'
+ }],
+ 'expectedOutputs': {
+ 'expandOutput': {
+ 'data': [
+ 4.965915679931641, 4.965915679931641, 4.965915679931641,
+ 4.965915679931641, 4.965915679931641, 4.965915679931641,
+ 66.14382934570312, 66.14382934570312, 66.14382934570312,
+ 66.14382934570312, 66.14382934570312, 66.14382934570312,
+ 75.28175354003906, 75.28175354003906, 75.28175354003906,
+ 75.28175354003906, 75.28175354003906, 75.28175354003906,
+ 49.998130798339844, 49.998130798339844, 49.998130798339844,
+ 49.998130798339844, 49.998130798339844, 49.998130798339844
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'expand float32 2D tensor to 2D (all dimensions)',
+ 'graph': {
+ 'inputs': {
+ 'expandInput': {
+ 'data': [-6.461850643157959],
+ 'descriptor': {'dimensions': [1, 1], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'expand',
+ 'arguments': [{'input': 'expandInput'}, {'newShape': [4, 6]}],
+ 'outputs': 'expandOutput'
+ }],
+ 'expectedOutputs': {
+ 'expandOutput': {
+ 'data': [
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'expand float32 2D tensor to 3D',
+ 'graph': {
+ 'inputs': {
+ 'expandInput': {
+ 'data': [
+ 4.965915679931641, 66.14382934570312, 75.28175354003906,
+ 49.998130798339844
+ ],
+ 'descriptor': {'dimensions': [4, 1], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'expand',
+ 'arguments': [{'input': 'expandInput'}, {'newShape': [2, 4, 3]}],
+ 'outputs': 'expandOutput'
+ }],
+ 'expectedOutputs': {
+ 'expandOutput': {
+ 'data': [
+ 4.965915679931641, 4.965915679931641, 4.965915679931641,
+ 66.14382934570312, 66.14382934570312, 66.14382934570312,
+ 75.28175354003906, 75.28175354003906, 75.28175354003906,
+ 49.998130798339844, 49.998130798339844, 49.998130798339844,
+ 4.965915679931641, 4.965915679931641, 4.965915679931641,
+ 66.14382934570312, 66.14382934570312, 66.14382934570312,
+ 75.28175354003906, 75.28175354003906, 75.28175354003906,
+ 49.998130798339844, 49.998130798339844, 49.998130798339844
+ ],
+ 'descriptor': {'dimensions': [2, 4, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'expand float32 2D tensor to 4D',
+ 'graph': {
+ 'inputs': {
+ 'expandInput': {
+ 'data': [
+ 10.898762702941895, -29.391416549682617, -73.74250793457031,
+ 22.456905364990234, -97.5792465209961, -76.95013427734375
+ ],
+ 'descriptor': {'dimensions': [1, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'expand',
+ 'arguments': [{'input': 'expandInput'}, {'newShape': [2, 1, 2, 6]}],
+ 'outputs': 'expandOutput'
+ }],
+ 'expectedOutputs': {
+ 'expandOutput': {
+ 'data': [
+ 10.898762702941895, -29.391416549682617, -73.74250793457031,
+ 22.456905364990234, -97.5792465209961, -76.95013427734375,
+ 10.898762702941895, -29.391416549682617, -73.74250793457031,
+ 22.456905364990234, -97.5792465209961, -76.95013427734375,
+ 10.898762702941895, -29.391416549682617, -73.74250793457031,
+ 22.456905364990234, -97.5792465209961, -76.95013427734375,
+ 10.898762702941895, -29.391416549682617, -73.74250793457031,
+ 22.456905364990234, -97.5792465209961, -76.95013427734375
+ ],
+ 'descriptor': {'dimensions': [2, 1, 2, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'expand float32 2D tensor to 5D',
+ 'graph': {
+ 'inputs': {
+ 'expandInput': {
+ 'data': [-6.461850643157959],
+ 'descriptor': {'dimensions': [1, 1], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'expand',
+ 'arguments': [{'input': 'expandInput'}, {'newShape': [2, 1, 3, 2, 2]}],
+ 'outputs': 'expandOutput'
+ }],
+ 'expectedOutputs': {
+ 'expandOutput': {
+ 'data': [
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959,
+ -6.461850643157959, -6.461850643157959, -6.461850643157959
+ ],
+ 'descriptor': {'dimensions': [2, 1, 3, 2, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'expand float32 3D tensor to 3D',
+ 'graph': {
+ 'inputs': {
+ 'expandInput': {
+ 'data': [21.694129943847656, -72.82571411132812],
+ 'descriptor': {'dimensions': [1, 2, 1], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'expand',
+ 'arguments': [{'input': 'expandInput'}, {'newShape': [2, 2, 6]}],
+ 'outputs': 'expandOutput'
+ }],
+ 'expectedOutputs': {
+ 'expandOutput': {
+ 'data': [
+ 21.694129943847656, 21.694129943847656, 21.694129943847656,
+ 21.694129943847656, 21.694129943847656, 21.694129943847656,
+ -72.82571411132812, -72.82571411132812, -72.82571411132812,
+ -72.82571411132812, -72.82571411132812, -72.82571411132812,
+ 21.694129943847656, 21.694129943847656, 21.694129943847656,
+ 21.694129943847656, 21.694129943847656, 21.694129943847656,
+ -72.82571411132812, -72.82571411132812, -72.82571411132812,
+ -72.82571411132812, -72.82571411132812, -72.82571411132812
+ ],
+ 'descriptor': {'dimensions': [2, 2, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'expand float32 3D tensor to 4D',
+ 'graph': {
+ 'inputs': {
+ 'expandInput': {
+ 'data': [21.694129943847656, -72.82571411132812],
+ 'descriptor': {'dimensions': [1, 2, 1], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'expand',
+ 'arguments': [{'input': 'expandInput'}, {'newShape': [2, 2, 2, 3]}],
+ 'outputs': 'expandOutput'
+ }],
+ 'expectedOutputs': {
+ 'expandOutput': {
+ 'data': [
+ 21.694129943847656, 21.694129943847656, 21.694129943847656,
+ -72.82571411132812, -72.82571411132812, -72.82571411132812,
+ 21.694129943847656, 21.694129943847656, 21.694129943847656,
+ -72.82571411132812, -72.82571411132812, -72.82571411132812,
+ 21.694129943847656, 21.694129943847656, 21.694129943847656,
+ -72.82571411132812, -72.82571411132812, -72.82571411132812,
+ 21.694129943847656, 21.694129943847656, 21.694129943847656,
+ -72.82571411132812, -72.82571411132812, -72.82571411132812
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'expand float32 3D tensor to 5D',
+ 'graph': {
+ 'inputs': {
+ 'expandInput': {
+ 'data': [21.694129943847656, -72.82571411132812],
+ 'descriptor': {'dimensions': [1, 2, 1], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'expand',
+ 'arguments': [{'input': 'expandInput'}, {'newShape': [2, 1, 2, 2, 3]}],
+ 'outputs': 'expandOutput'
+ }],
+ 'expectedOutputs': {
+ 'expandOutput': {
+ 'data': [
+ 21.694129943847656, 21.694129943847656, 21.694129943847656,
+ -72.82571411132812, -72.82571411132812, -72.82571411132812,
+ 21.694129943847656, 21.694129943847656, 21.694129943847656,
+ -72.82571411132812, -72.82571411132812, -72.82571411132812,
+ 21.694129943847656, 21.694129943847656, 21.694129943847656,
+ -72.82571411132812, -72.82571411132812, -72.82571411132812,
+ 21.694129943847656, 21.694129943847656, 21.694129943847656,
+ -72.82571411132812, -72.82571411132812, -72.82571411132812
+ ],
+ 'descriptor': {'dimensions': [2, 1, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'expand float32 4D tensor to 4D',
+ 'graph': {
+ 'inputs': {
+ 'expandInput': {
+ 'data': [12.799123764038086, -26.550199508666992],
+ 'descriptor': {'dimensions': [2, 1, 1, 1], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'expand',
+ 'arguments': [{'input': 'expandInput'}, {'newShape': [2, 3, 2, 2]}],
+ 'outputs': 'expandOutput'
+ }],
+ 'expectedOutputs': {
+ 'expandOutput': {
+ 'data': [
+ 12.799123764038086, 12.799123764038086, 12.799123764038086,
+ 12.799123764038086, 12.799123764038086, 12.799123764038086,
+ 12.799123764038086, 12.799123764038086, 12.799123764038086,
+ 12.799123764038086, 12.799123764038086, 12.799123764038086,
+ -26.550199508666992, -26.550199508666992, -26.550199508666992,
+ -26.550199508666992, -26.550199508666992, -26.550199508666992,
+ -26.550199508666992, -26.550199508666992, -26.550199508666992,
+ -26.550199508666992, -26.550199508666992, -26.550199508666992
+ ],
+ 'descriptor': {'dimensions': [2, 3, 2, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'expand float32 4D tensor to 5D',
+ 'graph': {
+ 'inputs': {
+ 'expandInput': {
+ 'data': [12.799123764038086, -26.550199508666992],
+ 'descriptor': {'dimensions': [2, 1, 1, 1], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'expand',
+ 'arguments': [{'input': 'expandInput'}, {'newShape': [2, 2, 3, 1, 2]}],
+ 'outputs': 'expandOutput'
+ }],
+ 'expectedOutputs': {
+ 'expandOutput': {
+ 'data': [
+ 12.799123764038086, 12.799123764038086, 12.799123764038086,
+ 12.799123764038086, 12.799123764038086, 12.799123764038086,
+ -26.550199508666992, -26.550199508666992, -26.550199508666992,
+ -26.550199508666992, -26.550199508666992, -26.550199508666992,
+ 12.799123764038086, 12.799123764038086, 12.799123764038086,
+ 12.799123764038086, 12.799123764038086, 12.799123764038086,
+ -26.550199508666992, -26.550199508666992, -26.550199508666992,
+ -26.550199508666992, -26.550199508666992, -26.550199508666992
+ ],
+ 'descriptor': {'dimensions': [2, 2, 3, 1, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ expandTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getExpandPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/floor.https.any.js b/tests/wpt/tests/webnn/conformance_tests/floor.https.any.js
new file mode 100644
index 00000000000..4cca407cd4c
--- /dev/null
+++ b/tests/wpt/tests/webnn/conformance_tests/floor.https.any.js
@@ -0,0 +1,261 @@
+// META: title=test WebNN API element-wise floor operation
+// META: global=window,dedicatedworker
+// META: variant=?cpu
+// META: variant=?gpu
+// META: variant=?npu
+// META: script=../resources/utils.js
+// META: timeout=long
+
+'use strict';
+
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-unary
+// Compute the floor of the input tensor, element-wise.
+//
+// MLOperand floor(MLOperand input);
+
+
+const getFloorPrecisionTolerance = (graphResources) => {
+ const toleranceValueDict = {float32: 0, float16: 0};
+ const expectedDataType =
+ getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs);
+ return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]};
+};
+
+const floorTests = [
+ {
+ 'name': 'floor float32 0D scalar',
+ 'graph': {
+ 'inputs': {
+ 'floorInput': {
+ 'data': [89.69458770751953],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'floor',
+ 'arguments': [{'input': 'floorInput'}],
+ 'outputs': 'floorOutput'
+ }],
+ 'expectedOutputs': {
+ 'floorOutput': {
+ 'data': [89],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'floor float32 1D constant tensor',
+ 'graph': {
+ 'inputs': {
+ 'floorInput': {
+ 'data': [
+ 89.69458770751953, -79.67150115966797, -66.80949401855469,
+ -71.88439178466797, 86.33935546875, 6.823808670043945,
+ 24.908447265625, 0.9734055399894714, 19.948184967041016,
+ 0.8437776565551758, -24.752939224243164, 77.76482391357422,
+ -33.644466400146484, 80.7762451171875, 44.47844314575195,
+ -37.65005874633789, -83.78780364990234, 65.840087890625,
+ -39.83677673339844, 32.5257568359375, -21.213542938232422,
+ -80.30911254882812, 16.674850463867188, -72.88893127441406
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'floor',
+ 'arguments': [{'input': 'floorInput'}],
+ 'outputs': 'floorOutput'
+ }],
+ 'expectedOutputs': {
+ 'floorOutput': {
+ 'data': [
+ 89, -80, -67, -72, 86, 6, 24, 0, 19, 0, -25, 77,
+ -34, 80, 44, -38, -84, 65, -40, 32, -22, -81, 16, -73
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'floor float32 1D tensor',
+ 'graph': {
+ 'inputs': {
+ 'floorInput': {
+ 'data': [
+ 89.69458770751953, -79.67150115966797, -66.80949401855469,
+ -71.88439178466797, 86.33935546875, 6.823808670043945,
+ 24.908447265625, 0.9734055399894714, 19.948184967041016,
+ 0.8437776565551758, -24.752939224243164, 77.76482391357422,
+ -33.644466400146484, 80.7762451171875, 44.47844314575195,
+ -37.65005874633789, -83.78780364990234, 65.840087890625,
+ -39.83677673339844, 32.5257568359375, -21.213542938232422,
+ -80.30911254882812, 16.674850463867188, -72.88893127441406
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'floor',
+ 'arguments': [{'input': 'floorInput'}],
+ 'outputs': 'floorOutput'
+ }],
+ 'expectedOutputs': {
+ 'floorOutput': {
+ 'data': [
+ 89, -80, -67, -72, 86, 6, 24, 0, 19, 0, -25, 77,
+ -34, 80, 44, -38, -84, 65, -40, 32, -22, -81, 16, -73
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'floor float32 2D tensor',
+ 'graph': {
+ 'inputs': {
+ 'floorInput': {
+ 'data': [
+ 89.69458770751953, -79.67150115966797, -66.80949401855469,
+ -71.88439178466797, 86.33935546875, 6.823808670043945,
+ 24.908447265625, 0.9734055399894714, 19.948184967041016,
+ 0.8437776565551758, -24.752939224243164, 77.76482391357422,
+ -33.644466400146484, 80.7762451171875, 44.47844314575195,
+ -37.65005874633789, -83.78780364990234, 65.840087890625,
+ -39.83677673339844, 32.5257568359375, -21.213542938232422,
+ -80.30911254882812, 16.674850463867188, -72.88893127441406
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'floor',
+ 'arguments': [{'input': 'floorInput'}],
+ 'outputs': 'floorOutput'
+ }],
+ 'expectedOutputs': {
+ 'floorOutput': {
+ 'data': [
+ 89, -80, -67, -72, 86, 6, 24, 0, 19, 0, -25, 77,
+ -34, 80, 44, -38, -84, 65, -40, 32, -22, -81, 16, -73
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'floor float32 3D tensor',
+ 'graph': {
+ 'inputs': {
+ 'floorInput': {
+ 'data': [
+ 89.69458770751953, -79.67150115966797, -66.80949401855469,
+ -71.88439178466797, 86.33935546875, 6.823808670043945,
+ 24.908447265625, 0.9734055399894714, 19.948184967041016,
+ 0.8437776565551758, -24.752939224243164, 77.76482391357422,
+ -33.644466400146484, 80.7762451171875, 44.47844314575195,
+ -37.65005874633789, -83.78780364990234, 65.840087890625,
+ -39.83677673339844, 32.5257568359375, -21.213542938232422,
+ -80.30911254882812, 16.674850463867188, -72.88893127441406
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'floor',
+ 'arguments': [{'input': 'floorInput'}],
+ 'outputs': 'floorOutput'
+ }],
+ 'expectedOutputs': {
+ 'floorOutput': {
+ 'data': [
+ 89, -80, -67, -72, 86, 6, 24, 0, 19, 0, -25, 77,
+ -34, 80, 44, -38, -84, 65, -40, 32, -22, -81, 16, -73
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'floor float32 4D tensor',
+ 'graph': {
+ 'inputs': {
+ 'floorInput': {
+ 'data': [
+ 89.69458770751953, -79.67150115966797, -66.80949401855469,
+ -71.88439178466797, 86.33935546875, 6.823808670043945,
+ 24.908447265625, 0.9734055399894714, 19.948184967041016,
+ 0.8437776565551758, -24.752939224243164, 77.76482391357422,
+ -33.644466400146484, 80.7762451171875, 44.47844314575195,
+ -37.65005874633789, -83.78780364990234, 65.840087890625,
+ -39.83677673339844, 32.5257568359375, -21.213542938232422,
+ -80.30911254882812, 16.674850463867188, -72.88893127441406
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'floor',
+ 'arguments': [{'input': 'floorInput'}],
+ 'outputs': 'floorOutput'
+ }],
+ 'expectedOutputs': {
+ 'floorOutput': {
+ 'data': [
+ 89, -80, -67, -72, 86, 6, 24, 0, 19, 0, -25, 77,
+ -34, 80, 44, -38, -84, 65, -40, 32, -22, -81, 16, -73
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'floor float32 5D tensor',
+ 'graph': {
+ 'inputs': {
+ 'floorInput': {
+ 'data': [
+ 89.69458770751953, -79.67150115966797, -66.80949401855469,
+ -71.88439178466797, 86.33935546875, 6.823808670043945,
+ 24.908447265625, 0.9734055399894714, 19.948184967041016,
+ 0.8437776565551758, -24.752939224243164, 77.76482391357422,
+ -33.644466400146484, 80.7762451171875, 44.47844314575195,
+ -37.65005874633789, -83.78780364990234, 65.840087890625,
+ -39.83677673339844, 32.5257568359375, -21.213542938232422,
+ -80.30911254882812, 16.674850463867188, -72.88893127441406
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 1, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'floor',
+ 'arguments': [{'input': 'floorInput'}],
+ 'outputs': 'floorOutput'
+ }],
+ 'expectedOutputs': {
+ 'floorOutput': {
+ 'data': [
+ 89, -80, -67, -72, 86, 6, 24, 0, 19, 0, -25, 77,
+ -34, 80, 44, -38, -84, 65, -40, 32, -22, -81, 16, -73
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 1, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ floorTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getFloorPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/gather.https.any.js b/tests/wpt/tests/webnn/conformance_tests/gather.https.any.js
index 68d33bbf748..3befa3818fc 100644
--- a/tests/wpt/tests/webnn/conformance_tests/gather.https.any.js
+++ b/tests/wpt/tests/webnn/conformance_tests/gather.https.any.js
@@ -8,6 +8,968 @@
'use strict';
-// https://webmachinelearning.github.io/webnn/#api-mlgraphbuilder-gather
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-gather
+// Gather values of the input tensor along an axis according to the indices.
+//
+// dictionary MLGatherOptions {
+// [EnforceRange] unsigned long axis = 0;
+// };
+//
+// MLOperand gather(
+// MLOperand input, MLOperand indices,
+// optional MLGatherOptions options = {});
-runWebNNConformanceTests('gather', buildOperationWithTwoInputs);
+
+const getGatherPrecisionTolerance = (graphResources) => {
+ const toleranceValueDict = {float32: 0, float16: 0};
+ const expectedDataType =
+ getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs);
+ return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]};
+};
+
+const gatherTests = [
+ {
+ 'name':
+ 'gather float32 1D tensor and uint32 0D scalar indices default options',
+ 'graph': {
+ 'inputs': {
+ 'gatherInput': {
+ 'data': [
+ -66.05901336669922, -68.9197006225586, -77.02045440673828,
+ -26.158037185668945, 89.0337142944336, -45.89653396606445,
+ 43.84803771972656, 48.81806945800781, 51.79948425292969,
+ 41.94132614135742, -1.1303654909133911, -50.42131042480469,
+ 90.2870101928711, 55.620765686035156, 44.92119598388672,
+ 56.828636169433594, 10.829925537109375, -19.693084716796875,
+ -37.696800231933594, 43.11057662963867, 0.9129875898361206,
+ -7.699817180633545, 25.76774024963379, 73.60064697265625
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ },
+ 'gatherIndices': {
+ 'data': [4],
+ 'descriptor': {'dimensions': [], 'dataType': 'uint32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'gather',
+ 'arguments': [{'input': 'gatherInput'}, {'indices': 'gatherIndices'}],
+ 'outputs': 'gatherOutput'
+ }],
+ 'expectedOutputs': {
+ 'gatherOutput': {
+ 'data': [89.0337142944336],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'gather float32 1D tensor and int32 0D scalar indices default options',
+ 'graph': {
+ 'inputs': {
+ 'gatherInput': {
+ 'data': [
+ -66.05901336669922, -68.9197006225586, -77.02045440673828,
+ -26.158037185668945, 89.0337142944336, -45.89653396606445,
+ 43.84803771972656, 48.81806945800781, 51.79948425292969,
+ 41.94132614135742, -1.1303654909133911, -50.42131042480469,
+ 90.2870101928711, 55.620765686035156, 44.92119598388672,
+ 56.828636169433594, 10.829925537109375, -19.693084716796875,
+ -37.696800231933594, 43.11057662963867, 0.9129875898361206,
+ -7.699817180633545, 25.76774024963379, 73.60064697265625
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ },
+ 'gatherIndices': {
+ 'data': [4],
+ 'descriptor': {'dimensions': [], 'dataType': 'int32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'gather',
+ 'arguments': [{'input': 'gatherInput'}, {'indices': 'gatherIndices'}],
+ 'outputs': 'gatherOutput'
+ }],
+ 'expectedOutputs': {
+ 'gatherOutput': {
+ 'data': [89.0337142944336],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'gather float32 1D tensor and int64 0D scalar indices default options',
+ 'graph': {
+ 'inputs': {
+ 'gatherInput': {
+ 'data': [
+ -66.05901336669922, -68.9197006225586, -77.02045440673828,
+ -26.158037185668945, 89.0337142944336, -45.89653396606445,
+ 43.84803771972656, 48.81806945800781, 51.79948425292969,
+ 41.94132614135742, -1.1303654909133911, -50.42131042480469,
+ 90.2870101928711, 55.620765686035156, 44.92119598388672,
+ 56.828636169433594, 10.829925537109375, -19.693084716796875,
+ -37.696800231933594, 43.11057662963867, 0.9129875898361206,
+ -7.699817180633545, 25.76774024963379, 73.60064697265625
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ },
+ 'gatherIndices': {
+ 'data': [0],
+ 'descriptor': {'dimensions': [], 'dataType': 'int64'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'gather',
+ 'arguments': [{'input': 'gatherInput'}, {'indices': 'gatherIndices'}],
+ 'outputs': 'gatherOutput'
+ }],
+ 'expectedOutputs': {
+ 'gatherOutput': {
+ 'data': [-66.05901336669922],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'gather float32 1D tensor and int64 1D indices default options',
+ 'graph': {
+ 'inputs': {
+ 'gatherInput': {
+ 'data': [
+ -66.05901336669922, -68.9197006225586, -77.02045440673828,
+ -26.158037185668945, 89.0337142944336, -45.89653396606445,
+ 43.84803771972656, 48.81806945800781, 51.79948425292969,
+ 41.94132614135742, -1.1303654909133911, -50.42131042480469,
+ 90.2870101928711, 55.620765686035156, 44.92119598388672,
+ 56.828636169433594, 10.829925537109375, -19.693084716796875,
+ -37.696800231933594, 43.11057662963867, 0.9129875898361206,
+ -7.699817180633545, 25.76774024963379, 73.60064697265625
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ },
+ 'gatherIndices': {
+ 'data': [16, 20, 6, 11, 17, 19, 13, 17],
+ 'descriptor': {'dimensions': [8], 'dataType': 'int64'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'gather',
+ 'arguments': [{'input': 'gatherInput'}, {'indices': 'gatherIndices'}],
+ 'outputs': 'gatherOutput'
+ }],
+ 'expectedOutputs': {
+ 'gatherOutput': {
+ 'data': [
+ 10.829925537109375, 0.9129875898361206, 43.84803771972656,
+ -50.42131042480469, -19.693084716796875, 43.11057662963867,
+ 55.620765686035156, -19.693084716796875
+ ],
+ 'descriptor': {'dimensions': [8], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'gather float32 1D tensor and int64 2D indices default options',
+ 'graph': {
+ 'inputs': {
+ 'gatherInput': {
+ 'data': [
+ -66.05901336669922, -68.9197006225586, -77.02045440673828,
+ -26.158037185668945, 89.0337142944336, -45.89653396606445,
+ 43.84803771972656, 48.81806945800781, 51.79948425292969,
+ 41.94132614135742, -1.1303654909133911, -50.42131042480469,
+ 90.2870101928711, 55.620765686035156, 44.92119598388672,
+ 56.828636169433594, 10.829925537109375, -19.693084716796875,
+ -37.696800231933594, 43.11057662963867, 0.9129875898361206,
+ -7.699817180633545, 25.76774024963379, 73.60064697265625
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ },
+ 'gatherIndices': {
+ 'data': [14, 9, 21, 17],
+ 'descriptor': {'dimensions': [2, 2], 'dataType': 'int64'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'gather',
+ 'arguments': [{'input': 'gatherInput'}, {'indices': 'gatherIndices'}],
+ 'outputs': 'gatherOutput'
+ }],
+ 'expectedOutputs': {
+ 'gatherOutput': {
+ 'data': [
+ 44.92119598388672, 41.94132614135742, -7.699817180633545,
+ -19.693084716796875
+ ],
+ 'descriptor': {'dimensions': [2, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'gather float32 1D tensor and int64 3D indices default options',
+ 'graph': {
+ 'inputs': {
+ 'gatherInput': {
+ 'data': [
+ -66.05901336669922, -68.9197006225586, -77.02045440673828,
+ -26.158037185668945, 89.0337142944336, -45.89653396606445,
+ 43.84803771972656, 48.81806945800781, 51.79948425292969,
+ 41.94132614135742, -1.1303654909133911, -50.42131042480469,
+ 90.2870101928711, 55.620765686035156, 44.92119598388672,
+ 56.828636169433594, 10.829925537109375, -19.693084716796875,
+ -37.696800231933594, 43.11057662963867, 0.9129875898361206,
+ -7.699817180633545, 25.76774024963379, 73.60064697265625
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ },
+ 'gatherIndices': {
+ 'data':
+ [17, 19, 14, 16, 13, 0, 5, 15, 18, 18, 6, 20, 7, 22, 5, 1, 4, 19],
+ 'descriptor': {'dimensions': [2, 3, 3], 'dataType': 'int64'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'gather',
+ 'arguments': [{'input': 'gatherInput'}, {'indices': 'gatherIndices'}],
+ 'outputs': 'gatherOutput'
+ }],
+ 'expectedOutputs': {
+ 'gatherOutput': {
+ 'data': [
+ -19.693084716796875, 43.11057662963867, 44.92119598388672,
+ 10.829925537109375, 55.620765686035156, -66.05901336669922,
+ -45.89653396606445, 56.828636169433594, -37.696800231933594,
+ -37.696800231933594, 43.84803771972656, 0.9129875898361206,
+ 48.81806945800781, 25.76774024963379, -45.89653396606445,
+ -68.9197006225586, 89.0337142944336, 43.11057662963867
+ ],
+ 'descriptor': {'dimensions': [2, 3, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'gather float32 1D tensor and int64 4D indices default options',
+ 'graph': {
+ 'inputs': {
+ 'gatherInput': {
+ 'data': [
+ -66.05901336669922, -68.9197006225586, -77.02045440673828,
+ -26.158037185668945, 89.0337142944336, -45.89653396606445,
+ 43.84803771972656, 48.81806945800781, 51.79948425292969,
+ 41.94132614135742, -1.1303654909133911, -50.42131042480469,
+ 90.2870101928711, 55.620765686035156, 44.92119598388672,
+ 56.828636169433594, 10.829925537109375, -19.693084716796875,
+ -37.696800231933594, 43.11057662963867, 0.9129875898361206,
+ -7.699817180633545, 25.76774024963379, 73.60064697265625
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ },
+ 'gatherIndices': {
+ 'data': [18, 18, 22, 11, 8, 15, 12, 11, 7, 13, 7, 7],
+ 'descriptor': {'dimensions': [1, 2, 2, 3], 'dataType': 'int64'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'gather',
+ 'arguments': [{'input': 'gatherInput'}, {'indices': 'gatherIndices'}],
+ 'outputs': 'gatherOutput'
+ }],
+ 'expectedOutputs': {
+ 'gatherOutput': {
+ 'data': [
+ -37.696800231933594, -37.696800231933594, 25.76774024963379,
+ -50.42131042480469, 51.79948425292969, 56.828636169433594,
+ 90.2870101928711, -50.42131042480469, 48.81806945800781,
+ 55.620765686035156, 48.81806945800781, 48.81806945800781
+ ],
+ 'descriptor': {'dimensions': [1, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'gather float32 2D tensor and 0D scalar indices default options',
+ 'graph': {
+ 'inputs': {
+ 'gatherInput': {
+ 'data': [
+ -66.05901336669922, -68.9197006225586, -77.02045440673828,
+ -26.158037185668945, 89.0337142944336, -45.89653396606445,
+ 43.84803771972656, 48.81806945800781, 51.79948425292969,
+ 41.94132614135742, -1.1303654909133911, -50.42131042480469,
+ 90.2870101928711, 55.620765686035156, 44.92119598388672,
+ 56.828636169433594, 10.829925537109375, -19.693084716796875,
+ -37.696800231933594, 43.11057662963867, 0.9129875898361206,
+ -7.699817180633545, 25.76774024963379, 73.60064697265625
+ ],
+ 'descriptor': {'dimensions': [12, 2], 'dataType': 'float32'}
+ },
+ 'gatherIndices': {
+ 'data': [11],
+ 'descriptor': {'dimensions': [], 'dataType': 'int64'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'gather',
+ 'arguments': [{'input': 'gatherInput'}, {'indices': 'gatherIndices'}],
+ 'outputs': 'gatherOutput'
+ }],
+ 'expectedOutputs': {
+ 'gatherOutput': {
+ 'data': [25.76774024963379, 73.60064697265625],
+ 'descriptor': {'dimensions': [2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'gather float32 2D tensor and 1D indices default options',
+ 'graph': {
+ 'inputs': {
+ 'gatherInput': {
+ 'data': [
+ -66.05901336669922, -68.9197006225586, -77.02045440673828,
+ -26.158037185668945, 89.0337142944336, -45.89653396606445,
+ 43.84803771972656, 48.81806945800781, 51.79948425292969,
+ 41.94132614135742, -1.1303654909133911, -50.42131042480469,
+ 90.2870101928711, 55.620765686035156, 44.92119598388672,
+ 56.828636169433594, 10.829925537109375, -19.693084716796875,
+ -37.696800231933594, 43.11057662963867, 0.9129875898361206,
+ -7.699817180633545, 25.76774024963379, 73.60064697265625
+ ],
+ 'descriptor': {'dimensions': [12, 2], 'dataType': 'float32'}
+ },
+ 'gatherIndices': {
+ 'data': [1, 10, 9, 0, 3, 5, 3, 8],
+ 'descriptor': {'dimensions': [8], 'dataType': 'int64'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'gather',
+ 'arguments': [{'input': 'gatherInput'}, {'indices': 'gatherIndices'}],
+ 'outputs': 'gatherOutput'
+ }],
+ 'expectedOutputs': {
+ 'gatherOutput': {
+ 'data': [
+ -77.02045440673828, -26.158037185668945, 0.9129875898361206,
+ -7.699817180633545, -37.696800231933594, 43.11057662963867,
+ -66.05901336669922, -68.9197006225586, 43.84803771972656,
+ 48.81806945800781, -1.1303654909133911, -50.42131042480469,
+ 43.84803771972656, 48.81806945800781, 10.829925537109375,
+ -19.693084716796875
+ ],
+ 'descriptor': {'dimensions': [8, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'gather float32 2D tensor and 2D indices default options',
+ 'graph': {
+ 'inputs': {
+ 'gatherInput': {
+ 'data': [
+ -66.05901336669922, -68.9197006225586, -77.02045440673828,
+ -26.158037185668945, 89.0337142944336, -45.89653396606445,
+ 43.84803771972656, 48.81806945800781, 51.79948425292969,
+ 41.94132614135742, -1.1303654909133911, -50.42131042480469,
+ 90.2870101928711, 55.620765686035156, 44.92119598388672,
+ 56.828636169433594, 10.829925537109375, -19.693084716796875,
+ -37.696800231933594, 43.11057662963867, 0.9129875898361206,
+ -7.699817180633545, 25.76774024963379, 73.60064697265625
+ ],
+ 'descriptor': {'dimensions': [12, 2], 'dataType': 'float32'}
+ },
+ 'gatherIndices': {
+ 'data': [4, 8, 9, 10],
+ 'descriptor': {'dimensions': [2, 2], 'dataType': 'int64'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'gather',
+ 'arguments': [{'input': 'gatherInput'}, {'indices': 'gatherIndices'}],
+ 'outputs': 'gatherOutput'
+ }],
+ 'expectedOutputs': {
+ 'gatherOutput': {
+ 'data': [
+ 51.79948425292969, 41.94132614135742, 10.829925537109375,
+ -19.693084716796875, -37.696800231933594, 43.11057662963867,
+ 0.9129875898361206, -7.699817180633545
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'gather float32 2D tensor and 3D indices default options',
+ 'graph': {
+ 'inputs': {
+ 'gatherInput': {
+ 'data': [
+ -66.05901336669922, -68.9197006225586, -77.02045440673828,
+ -26.158037185668945, 89.0337142944336, -45.89653396606445,
+ 43.84803771972656, 48.81806945800781, 51.79948425292969,
+ 41.94132614135742, -1.1303654909133911, -50.42131042480469,
+ 90.2870101928711, 55.620765686035156, 44.92119598388672,
+ 56.828636169433594, 10.829925537109375, -19.693084716796875,
+ -37.696800231933594, 43.11057662963867, 0.9129875898361206,
+ -7.699817180633545, 25.76774024963379, 73.60064697265625
+ ],
+ 'descriptor': {'dimensions': [12, 2], 'dataType': 'float32'}
+ },
+ 'gatherIndices': {
+ 'data': [8, 2, 2, 3, 4, 1, 2, 2, 7, 11, 4, 11, 6, 6, 7, 3, 11, 10],
+ 'descriptor': {'dimensions': [2, 3, 3], 'dataType': 'int64'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'gather',
+ 'arguments': [{'input': 'gatherInput'}, {'indices': 'gatherIndices'}],
+ 'outputs': 'gatherOutput'
+ }],
+ 'expectedOutputs': {
+ 'gatherOutput': {
+ 'data': [
+ 10.829925537109375, -19.693084716796875, 89.0337142944336,
+ -45.89653396606445, 89.0337142944336, -45.89653396606445,
+ 43.84803771972656, 48.81806945800781, 51.79948425292969,
+ 41.94132614135742, -77.02045440673828, -26.158037185668945,
+ 89.0337142944336, -45.89653396606445, 89.0337142944336,
+ -45.89653396606445, 44.92119598388672, 56.828636169433594,
+ 25.76774024963379, 73.60064697265625, 51.79948425292969,
+ 41.94132614135742, 25.76774024963379, 73.60064697265625,
+ 90.2870101928711, 55.620765686035156, 90.2870101928711,
+ 55.620765686035156, 44.92119598388672, 56.828636169433594,
+ 43.84803771972656, 48.81806945800781, 25.76774024963379,
+ 73.60064697265625, 0.9129875898361206, -7.699817180633545
+ ],
+ 'descriptor': {'dimensions': [2, 3, 3, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'gather float32 2D tensor and 4D indices default options',
+ 'graph': {
+ 'inputs': {
+ 'gatherInput': {
+ 'data': [
+ -66.05901336669922, -68.9197006225586, -77.02045440673828,
+ -26.158037185668945, 89.0337142944336, -45.89653396606445,
+ 43.84803771972656, 48.81806945800781, 51.79948425292969,
+ 41.94132614135742, -1.1303654909133911, -50.42131042480469,
+ 90.2870101928711, 55.620765686035156, 44.92119598388672,
+ 56.828636169433594, 10.829925537109375, -19.693084716796875,
+ -37.696800231933594, 43.11057662963867, 0.9129875898361206,
+ -7.699817180633545, 25.76774024963379, 73.60064697265625
+ ],
+ 'descriptor': {'dimensions': [12, 2], 'dataType': 'float32'}
+ },
+ 'gatherIndices': {
+ 'data': [6, 9, 7, 3, 4, 7, 4, 3, 7, 7, 6, 0],
+ 'descriptor': {'dimensions': [1, 2, 2, 3], 'dataType': 'int64'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'gather',
+ 'arguments': [{'input': 'gatherInput'}, {'indices': 'gatherIndices'}],
+ 'outputs': 'gatherOutput'
+ }],
+ 'expectedOutputs': {
+ 'gatherOutput': {
+ 'data': [
+ 90.2870101928711, 55.620765686035156, -37.696800231933594,
+ 43.11057662963867, 44.92119598388672, 56.828636169433594,
+ 43.84803771972656, 48.81806945800781, 51.79948425292969,
+ 41.94132614135742, 44.92119598388672, 56.828636169433594,
+ 51.79948425292969, 41.94132614135742, 43.84803771972656,
+ 48.81806945800781, 44.92119598388672, 56.828636169433594,
+ 44.92119598388672, 56.828636169433594, 90.2870101928711,
+ 55.620765686035156, -66.05901336669922, -68.9197006225586
+ ],
+ 'descriptor': {'dimensions': [1, 2, 2, 3, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'gather float32 3D tensor and 2D indices default options',
+ 'graph': {
+ 'inputs': {
+ 'gatherInput': {
+ 'data': [
+ -66.05901336669922, -68.9197006225586, -77.02045440673828,
+ -26.158037185668945, 89.0337142944336, -45.89653396606445,
+ 43.84803771972656, 48.81806945800781, 51.79948425292969,
+ 41.94132614135742, -1.1303654909133911, -50.42131042480469,
+ 90.2870101928711, 55.620765686035156, 44.92119598388672,
+ 56.828636169433594, 10.829925537109375, -19.693084716796875,
+ -37.696800231933594, 43.11057662963867, 0.9129875898361206,
+ -7.699817180633545, 25.76774024963379, 73.60064697265625
+ ],
+ 'descriptor': {'dimensions': [3, 4, 2], 'dataType': 'float32'}
+ },
+ 'gatherIndices': {
+ 'data': [2, 1, 1, 1],
+ 'descriptor': {'dimensions': [2, 2], 'dataType': 'int64'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'gather',
+ 'arguments': [{'input': 'gatherInput'}, {'indices': 'gatherIndices'}],
+ 'outputs': 'gatherOutput'
+ }],
+ 'expectedOutputs': {
+ 'gatherOutput': {
+ 'data': [
+ 10.829925537109375, -19.693084716796875, -37.696800231933594,
+ 43.11057662963867, 0.9129875898361206, -7.699817180633545,
+ 25.76774024963379, 73.60064697265625, 51.79948425292969,
+ 41.94132614135742, -1.1303654909133911, -50.42131042480469,
+ 90.2870101928711, 55.620765686035156, 44.92119598388672,
+ 56.828636169433594, 51.79948425292969, 41.94132614135742,
+ -1.1303654909133911, -50.42131042480469, 90.2870101928711,
+ 55.620765686035156, 44.92119598388672, 56.828636169433594,
+ 51.79948425292969, 41.94132614135742, -1.1303654909133911,
+ -50.42131042480469, 90.2870101928711, 55.620765686035156,
+ 44.92119598388672, 56.828636169433594
+ ],
+ 'descriptor': {'dimensions': [2, 2, 4, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'gather float32 4D tensor and 2D indices default options',
+ 'graph': {
+ 'inputs': {
+ 'gatherInput': {
+ 'data': [
+ -66.05901336669922, -68.9197006225586, -77.02045440673828,
+ -26.158037185668945, 89.0337142944336, -45.89653396606445,
+ 43.84803771972656, 48.81806945800781, 51.79948425292969,
+ 41.94132614135742, -1.1303654909133911, -50.42131042480469,
+ 90.2870101928711, 55.620765686035156, 44.92119598388672,
+ 56.828636169433594, 10.829925537109375, -19.693084716796875,
+ -37.696800231933594, 43.11057662963867, 0.9129875898361206,
+ -7.699817180633545, 25.76774024963379, 73.60064697265625
+ ],
+ 'descriptor': {'dimensions': [8, 1, 1, 3], 'dataType': 'float32'}
+ },
+ 'gatherIndices': {
+ 'data': [0, 0, 7, 4],
+ 'descriptor': {'dimensions': [2, 2], 'dataType': 'int64'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'gather',
+ 'arguments': [{'input': 'gatherInput'}, {'indices': 'gatherIndices'}],
+ 'outputs': 'gatherOutput'
+ }],
+ 'expectedOutputs': {
+ 'gatherOutput': {
+ 'data': [
+ -66.05901336669922, -68.9197006225586, -77.02045440673828,
+ -66.05901336669922, -68.9197006225586, -77.02045440673828,
+ -7.699817180633545, 25.76774024963379, 73.60064697265625,
+ 90.2870101928711, 55.620765686035156, 44.92119598388672
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 1, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'gather float32 5D tensor and 1D indices default options',
+ 'graph': {
+ 'inputs': {
+ 'gatherInput': {
+ 'data': [
+ -66.05901336669922, -68.9197006225586, -77.02045440673828,
+ -26.158037185668945, 89.0337142944336, -45.89653396606445,
+ 43.84803771972656, 48.81806945800781, 51.79948425292969,
+ 41.94132614135742, -1.1303654909133911, -50.42131042480469,
+ 90.2870101928711, 55.620765686035156, 44.92119598388672,
+ 56.828636169433594, 10.829925537109375, -19.693084716796875,
+ -37.696800231933594, 43.11057662963867, 0.9129875898361206,
+ -7.699817180633545, 25.76774024963379, 73.60064697265625
+ ],
+ 'descriptor': {'dimensions': [4, 2, 1, 1, 3], 'dataType': 'float32'}
+ },
+ 'gatherIndices': {
+ 'data': [3, 2, 2],
+ 'descriptor': {'dimensions': [3], 'dataType': 'int64'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'gather',
+ 'arguments': [{'input': 'gatherInput'}, {'indices': 'gatherIndices'}],
+ 'outputs': 'gatherOutput'
+ }],
+ 'expectedOutputs': {
+ 'gatherOutput': {
+ 'data': [
+ -37.696800231933594, 43.11057662963867, 0.9129875898361206,
+ -7.699817180633545, 25.76774024963379, 73.60064697265625,
+ 90.2870101928711, 55.620765686035156, 44.92119598388672,
+ 56.828636169433594, 10.829925537109375, -19.693084716796875,
+ 90.2870101928711, 55.620765686035156, 44.92119598388672,
+ 56.828636169433594, 10.829925537109375, -19.693084716796875
+ ],
+ 'descriptor': {'dimensions': [3, 2, 1, 1, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'gather float32 3D tensor and 1D indices options.axis=1',
+ 'graph': {
+ 'inputs': {
+ 'gatherInput': {
+ 'data': [
+ -66.05901336669922, -68.9197006225586, -77.02045440673828,
+ -26.158037185668945, 89.0337142944336, -45.89653396606445,
+ 43.84803771972656, 48.81806945800781, 51.79948425292969,
+ 41.94132614135742, -1.1303654909133911, -50.42131042480469,
+ 90.2870101928711, 55.620765686035156, 44.92119598388672,
+ 56.828636169433594, 10.829925537109375, -19.693084716796875,
+ -37.696800231933594, 43.11057662963867, 0.9129875898361206,
+ -7.699817180633545, 25.76774024963379, 73.60064697265625
+ ],
+ 'descriptor': {'dimensions': [3, 4, 2], 'dataType': 'float32'}
+ },
+ 'gatherIndices': {
+ 'data': [1, 1, 2],
+ 'descriptor': {'dimensions': [3], 'dataType': 'int64'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'gather',
+ 'arguments': [
+ {'input': 'gatherInput'}, {'indices': 'gatherIndices'},
+ {'options': {'axis': 1}}
+ ],
+ 'outputs': 'gatherOutput'
+ }],
+ 'expectedOutputs': {
+ 'gatherOutput': {
+ 'data': [
+ -77.02045440673828, -26.158037185668945, -77.02045440673828,
+ -26.158037185668945, 89.0337142944336, -45.89653396606445,
+ -1.1303654909133911, -50.42131042480469, -1.1303654909133911,
+ -50.42131042480469, 90.2870101928711, 55.620765686035156,
+ -37.696800231933594, 43.11057662963867, -37.696800231933594,
+ 43.11057662963867, 0.9129875898361206, -7.699817180633545
+ ],
+ 'descriptor': {'dimensions': [3, 3, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'gather float32 3D tensor and 2D indices options.axis=2',
+ 'graph': {
+ 'inputs': {
+ 'gatherInput': {
+ 'data': [
+ -66.05901336669922, -68.9197006225586, -77.02045440673828,
+ -26.158037185668945, 89.0337142944336, -45.89653396606445,
+ 43.84803771972656, 48.81806945800781, 51.79948425292969,
+ 41.94132614135742, -1.1303654909133911, -50.42131042480469,
+ 90.2870101928711, 55.620765686035156, 44.92119598388672,
+ 56.828636169433594, 10.829925537109375, -19.693084716796875,
+ -37.696800231933594, 43.11057662963867, 0.9129875898361206,
+ -7.699817180633545, 25.76774024963379, 73.60064697265625
+ ],
+ 'descriptor': {'dimensions': [3, 4, 2], 'dataType': 'float32'}
+ },
+ 'gatherIndices': {
+ 'data': [0, 0, 0, 1],
+ 'descriptor': {'dimensions': [2, 2], 'dataType': 'int64'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'gather',
+ 'arguments': [
+ {'input': 'gatherInput'}, {'indices': 'gatherIndices'},
+ {'options': {'axis': 2}}
+ ],
+ 'outputs': 'gatherOutput'
+ }],
+ 'expectedOutputs': {
+ 'gatherOutput': {
+ 'data': [
+ -66.05901336669922, -66.05901336669922, -66.05901336669922,
+ -68.9197006225586, -77.02045440673828, -77.02045440673828,
+ -77.02045440673828, -26.158037185668945, 89.0337142944336,
+ 89.0337142944336, 89.0337142944336, -45.89653396606445,
+ 43.84803771972656, 43.84803771972656, 43.84803771972656,
+ 48.81806945800781, 51.79948425292969, 51.79948425292969,
+ 51.79948425292969, 41.94132614135742, -1.1303654909133911,
+ -1.1303654909133911, -1.1303654909133911, -50.42131042480469,
+ 90.2870101928711, 90.2870101928711, 90.2870101928711,
+ 55.620765686035156, 44.92119598388672, 44.92119598388672,
+ 44.92119598388672, 56.828636169433594, 10.829925537109375,
+ 10.829925537109375, 10.829925537109375, -19.693084716796875,
+ -37.696800231933594, -37.696800231933594, -37.696800231933594,
+ 43.11057662963867, 0.9129875898361206, 0.9129875898361206,
+ 0.9129875898361206, -7.699817180633545, 25.76774024963379,
+ 25.76774024963379, 25.76774024963379, 73.60064697265625
+ ],
+ 'descriptor': {'dimensions': [3, 4, 2, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'gather float32 4D tensor and 2D indices explict options.axis=0',
+ 'graph': {
+ 'inputs': {
+ 'gatherInput': {
+ 'data': [
+ -66.05901336669922, -68.9197006225586, -77.02045440673828,
+ -26.158037185668945, 89.0337142944336, -45.89653396606445,
+ 43.84803771972656, 48.81806945800781, 51.79948425292969,
+ 41.94132614135742, -1.1303654909133911, -50.42131042480469,
+ 90.2870101928711, 55.620765686035156, 44.92119598388672,
+ 56.828636169433594, 10.829925537109375, -19.693084716796875,
+ -37.696800231933594, 43.11057662963867, 0.9129875898361206,
+ -7.699817180633545, 25.76774024963379, 73.60064697265625
+ ],
+ 'descriptor': {'dimensions': [8, 1, 1, 3], 'dataType': 'float32'}
+ },
+ 'gatherIndices': {
+ 'data': [0, 0, 7, 4],
+ 'descriptor': {'dimensions': [2, 2], 'dataType': 'int64'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'gather',
+ 'arguments': [
+ {'input': 'gatherInput'}, {'indices': 'gatherIndices'},
+ {'options': {'axis': 0}}
+ ],
+ 'outputs': 'gatherOutput'
+ }],
+ 'expectedOutputs': {
+ 'gatherOutput': {
+ 'data': [
+ -66.05901336669922, -68.9197006225586, -77.02045440673828,
+ -66.05901336669922, -68.9197006225586, -77.02045440673828,
+ -7.699817180633545, 25.76774024963379, 73.60064697265625,
+ 90.2870101928711, 55.620765686035156, 44.92119598388672
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 1, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'gather float32 5D tensor and 0D scalar indices options.axis=4',
+ 'graph': {
+ 'inputs': {
+ 'gatherInput': {
+ 'data': [
+ -66.05901336669922, -68.9197006225586, -77.02045440673828,
+ -26.158037185668945, 89.0337142944336, -45.89653396606445,
+ 43.84803771972656, 48.81806945800781, 51.79948425292969,
+ 41.94132614135742, -1.1303654909133911, -50.42131042480469,
+ 90.2870101928711, 55.620765686035156, 44.92119598388672,
+ 56.828636169433594, 10.829925537109375, -19.693084716796875,
+ -37.696800231933594, 43.11057662963867, 0.9129875898361206,
+ -7.699817180633545, 25.76774024963379, 73.60064697265625
+ ],
+ 'descriptor': {'dimensions': [4, 2, 1, 1, 3], 'dataType': 'float32'}
+ },
+ 'gatherIndices': {
+ 'data': [1],
+ 'descriptor': {'dimensions': [], 'dataType': 'int64'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'gather',
+ 'arguments': [
+ {'input': 'gatherInput'}, {'indices': 'gatherIndices'},
+ {'options': {'axis': 4}}
+ ],
+ 'outputs': 'gatherOutput'
+ }],
+ 'expectedOutputs': {
+ 'gatherOutput': {
+ 'data': [
+ -68.9197006225586, 89.0337142944336, 48.81806945800781,
+ -1.1303654909133911, 55.620765686035156, 10.829925537109375,
+ 43.11057662963867, 25.76774024963379
+ ],
+ 'descriptor': {'dimensions': [4, 2, 1, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'gather float32 2D tensor and int32 0D negative indices default options',
+ 'graph': {
+ 'inputs': {
+ 'gatherInput': {
+ 'data': [
+ -66.05901336669922, -68.9197006225586, -77.02045440673828,
+ -26.158037185668945, 89.0337142944336, -45.89653396606445,
+ 43.84803771972656, 48.81806945800781, 51.79948425292969,
+ 41.94132614135742, -1.1303654909133911, -50.42131042480469,
+ 90.2870101928711, 55.620765686035156, 44.92119598388672,
+ 56.828636169433594, 10.829925537109375, -19.693084716796875,
+ -37.696800231933594, 43.11057662963867, 0.9129875898361206,
+ -7.699817180633545, 25.76774024963379, 73.60064697265625
+ ],
+ 'descriptor': {'dimensions': [2, 12], 'dataType': 'float32'}
+ },
+ 'gatherIndices': {
+ 'data': [-2],
+ 'descriptor': {'dimensions': [], 'dataType': 'int32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'gather',
+ 'arguments': [{'input': 'gatherInput'}, {'indices': 'gatherIndices'}],
+ 'outputs': 'gatherOutput'
+ }],
+ 'expectedOutputs': {
+ 'gatherOutput': {
+ 'data': [
+ -66.05901336669922, -68.9197006225586, -77.02045440673828,
+ -26.158037185668945, 89.0337142944336, -45.89653396606445,
+ 43.84803771972656, 48.81806945800781, 51.79948425292969,
+ 41.94132614135742, -1.1303654909133911, -50.42131042480469
+ ],
+ 'descriptor': {'dimensions': [12], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'gather float32 2D tensor and int32 0D out-of-bound positive indices default options',
+ 'graph': {
+ 'inputs': {
+ 'gatherInput': {
+ 'data': [
+ -66.05901336669922, -68.9197006225586, -77.02045440673828,
+ -26.158037185668945, 89.0337142944336, -45.89653396606445,
+ 43.84803771972656, 48.81806945800781, 51.79948425292969,
+ 41.94132614135742, -1.1303654909133911, -50.42131042480469,
+ 90.2870101928711, 55.620765686035156, 44.92119598388672,
+ 56.828636169433594, 10.829925537109375, -19.693084716796875,
+ -37.696800231933594, 43.11057662963867, 0.9129875898361206,
+ -7.699817180633545, 25.76774024963379, 73.60064697265625
+ ],
+ 'descriptor': {'dimensions': [2, 12], 'dataType': 'float32'}
+ },
+ 'gatherIndices': {
+ 'data': [10],
+ 'descriptor': {'dimensions': [], 'dataType': 'int32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'gather',
+ 'arguments': [{'input': 'gatherInput'}, {'indices': 'gatherIndices'}],
+ 'outputs': 'gatherOutput'
+ }],
+ 'expectedOutputs': {
+ 'gatherOutput': {
+ 'data': [
+ 90.2870101928711, 55.620765686035156, 44.92119598388672,
+ 56.828636169433594, 10.829925537109375, -19.693084716796875,
+ -37.696800231933594, 43.11057662963867, 0.9129875898361206,
+ -7.699817180633545, 25.76774024963379, 73.60064697265625
+ ],
+ 'descriptor': {'dimensions': [12], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'gather float32 2D tensor and int32 0D out-of-bound negative indices default options',
+ 'graph': {
+ 'inputs': {
+ 'gatherInput': {
+ 'data': [
+ -66.05901336669922, -68.9197006225586, -77.02045440673828,
+ -26.158037185668945, 89.0337142944336, -45.89653396606445,
+ 43.84803771972656, 48.81806945800781, 51.79948425292969,
+ 41.94132614135742, -1.1303654909133911, -50.42131042480469,
+ 90.2870101928711, 55.620765686035156, 44.92119598388672,
+ 56.828636169433594, 10.829925537109375, -19.693084716796875,
+ -37.696800231933594, 43.11057662963867, 0.9129875898361206,
+ -7.699817180633545, 25.76774024963379, 73.60064697265625
+ ],
+ 'descriptor': {'dimensions': [2, 12], 'dataType': 'float32'}
+ },
+ 'gatherIndices': {
+ 'data': [-10],
+ 'descriptor': {'dimensions': [], 'dataType': 'int32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'gather',
+ 'arguments': [{'input': 'gatherInput'}, {'indices': 'gatherIndices'}],
+ 'outputs': 'gatherOutput'
+ }],
+ 'expectedOutputs': {
+ 'gatherOutput': {
+ 'data': [
+ -66.05901336669922, -68.9197006225586, -77.02045440673828,
+ -26.158037185668945, 89.0337142944336, -45.89653396606445,
+ 43.84803771972656, 48.81806945800781, 51.79948425292969,
+ 41.94132614135742, -1.1303654909133911, -50.42131042480469
+ ],
+ 'descriptor': {'dimensions': [12], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ gatherTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getGatherPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/gelu.https.any.js b/tests/wpt/tests/webnn/conformance_tests/gelu.https.any.js
index 67287c3ad3f..446c5bc4eff 100644
--- a/tests/wpt/tests/webnn/conformance_tests/gelu.https.any.js
+++ b/tests/wpt/tests/webnn/conformance_tests/gelu.https.any.js
@@ -8,6 +8,513 @@
'use strict';
-// https://webmachinelearning.github.io/webnn/#api-mlgraphbuilder-gelu
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-gelu-method
+// Compute the gaussian error linear unit function (GELU) of the input tensor.
+// The calculation follows the expression 0.5 * x * (1 + erf(x / sqrt(2))).
+//
+// MLOperand gelu(MLOperand input);
-runWebNNConformanceTests('gelu', buildOperationWithSingleInput);
+
+const getGeluPrecisionTolerance = (graphResources) => {
+ const toleranceValueDict = {float32: 18, float16: 18};
+ const expectedDataType =
+ getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs);
+ return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]};
+};
+
+const geluTests = [
+ {
+ 'name': 'gelu float32 0D scalar',
+ 'graph': {
+ 'inputs': {
+ 'geluInput': {
+ 'data': [-0.044885843992233276],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'gelu',
+ 'arguments': [{'input': 'geluInput'}],
+ 'outputs': 'geluOutput'
+ }],
+ 'expectedOutputs': {
+ 'geluOutput': {
+ 'data': [-0.021639423444867134],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'gelu float16 0D scalar',
+ 'graph': {
+ 'inputs': {
+ 'geluInput': {
+ 'data': [-0.044891357421875],
+ 'descriptor': {'dimensions': [], 'dataType': 'float16'}
+ }
+ },
+ 'operators': [{
+ 'name': 'gelu',
+ 'arguments': [{'input': 'geluInput'}],
+ 'outputs': 'geluOutput'
+ }],
+ 'expectedOutputs': {
+ 'geluOutput': {
+ 'data': [-0.021636962890625],
+ 'descriptor': {'dimensions': [], 'dataType': 'float16'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'gelu float32 1D tensor',
+ 'graph': {
+ 'inputs': {
+ 'geluInput': {
+ 'data': [
+ 0.878292441368103, -0.09706497937440872, 0.1367187649011612,
+ 0.46406492590904236, -0.26635801792144775, -0.8252315521240234,
+ 0.8530909419059753, 0.3846154808998108, 0.6772316694259644,
+ -0.4811072051525116, 0.2983909249305725, 0.6777864098548889,
+ -0.526228129863739, 0.3497541546821594, -0.12918996810913086,
+ 0.5853934288024902, -0.8950720429420471, 0.028302494436502457,
+ -0.09901237487792969, -0.8838679790496826, -0.596120297908783,
+ 0.31863871216773987, 0.4794037640094757, -0.06489315629005432
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'gelu',
+ 'arguments': [{'input': 'geluInput'}],
+ 'outputs': 'geluOutput'
+ }],
+ 'expectedOutputs': {
+ 'geluOutput': {
+ 'data': [
+ 0.7115113139152527, -0.0447796992957592, 0.07579325884580612,
+ 0.3149605691432953, -0.10520657151937485, -0.16885890066623688,
+ 0.6851989030838013, 0.24989959597587585, 0.508513331413269,
+ -0.1516546905040741, 0.18419598042964935, 0.509049117565155,
+ -0.15753419697284698, 0.22270187735557556, -0.05795508995652199,
+ 0.42198580503463745, -0.1659233123064041, 0.014470770955085754,
+ -0.04560155048966408, -0.1665063202381134, -0.1642593890428543,
+ 0.19914908707141876, 0.3279957175254822, -0.030767757445573807
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'gelu float32 1D constant tensor',
+ 'graph': {
+ 'inputs': {
+ 'geluInput': {
+ 'data': [
+ 0.878292441368103, -0.09706497937440872, 0.1367187649011612,
+ 0.46406492590904236, -0.26635801792144775, -0.8252315521240234,
+ 0.8530909419059753, 0.3846154808998108, 0.6772316694259644,
+ -0.4811072051525116, 0.2983909249305725, 0.6777864098548889,
+ -0.526228129863739, 0.3497541546821594, -0.12918996810913086,
+ 0.5853934288024902, -0.8950720429420471, 0.028302494436502457,
+ -0.09901237487792969, -0.8838679790496826, -0.596120297908783,
+ 0.31863871216773987, 0.4794037640094757, -0.06489315629005432
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'gelu',
+ 'arguments': [{'input': 'geluInput'}],
+ 'outputs': 'geluOutput'
+ }],
+ 'expectedOutputs': {
+ 'geluOutput': {
+ 'data': [
+ 0.7115113139152527, -0.0447796992957592, 0.07579325884580612,
+ 0.3149605691432953, -0.10520657151937485, -0.16885890066623688,
+ 0.6851989030838013, 0.24989959597587585, 0.508513331413269,
+ -0.1516546905040741, 0.18419598042964935, 0.509049117565155,
+ -0.15753419697284698, 0.22270187735557556, -0.05795508995652199,
+ 0.42198580503463745, -0.1659233123064041, 0.014470770955085754,
+ -0.04560155048966408, -0.1665063202381134, -0.1642593890428543,
+ 0.19914908707141876, 0.3279957175254822, -0.030767757445573807
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'gelu float16 1D tensor',
+ 'graph': {
+ 'inputs': {
+ 'geluInput': {
+ 'data': [
+ 0.87841796875, -0.0970458984375, 0.13671875,
+ 0.464111328125, -0.266357421875, -0.8251953125,
+ 0.85302734375, 0.384521484375, 0.67724609375,
+ -0.481201171875, 0.29833984375, 0.677734375,
+ -0.5263671875, 0.349853515625, -0.129150390625,
+ 0.58544921875, -0.89501953125, 0.0283050537109375,
+ -0.0989990234375, -0.8837890625, -0.59619140625,
+ 0.318603515625, 0.4794921875, -0.06488037109375
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float16'}
+ }
+ },
+ 'operators': [{
+ 'name': 'gelu',
+ 'arguments': [{'input': 'geluInput'}],
+ 'outputs': 'geluOutput'
+ }],
+ 'expectedOutputs': {
+ 'geluOutput': {
+ 'data': [
+ 0.71142578125, -0.044769287109375, 0.0758056640625,
+ 0.31494140625, -0.105224609375, -0.1688232421875,
+ 0.68505859375, 0.2498779296875, 0.50830078125,
+ -0.151611328125, 0.1842041015625, 0.5087890625,
+ -0.1575927734375, 0.2227783203125, -0.057952880859375,
+ 0.422119140625, -0.1658935546875, 0.01447296142578125,
+ -0.04559326171875, -0.16650390625, -0.164306640625,
+ 0.1990966796875, 0.328125, -0.03076171875
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float16'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'gelu float32 2D tensor',
+ 'graph': {
+ 'inputs': {
+ 'geluInput': {
+ 'data': [
+ 0.878292441368103, -0.09706497937440872, 0.1367187649011612,
+ 0.46406492590904236, -0.26635801792144775, -0.8252315521240234,
+ 0.8530909419059753, 0.3846154808998108, 0.6772316694259644,
+ -0.4811072051525116, 0.2983909249305725, 0.6777864098548889,
+ -0.526228129863739, 0.3497541546821594, -0.12918996810913086,
+ 0.5853934288024902, -0.8950720429420471, 0.028302494436502457,
+ -0.09901237487792969, -0.8838679790496826, -0.596120297908783,
+ 0.31863871216773987, 0.4794037640094757, -0.06489315629005432
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'gelu',
+ 'arguments': [{'input': 'geluInput'}],
+ 'outputs': 'geluOutput'
+ }],
+ 'expectedOutputs': {
+ 'geluOutput': {
+ 'data': [
+ 0.7115113139152527, -0.0447796992957592, 0.07579325884580612,
+ 0.3149605691432953, -0.10520657151937485, -0.16885890066623688,
+ 0.6851989030838013, 0.24989959597587585, 0.508513331413269,
+ -0.1516546905040741, 0.18419598042964935, 0.509049117565155,
+ -0.15753419697284698, 0.22270187735557556, -0.05795508995652199,
+ 0.42198580503463745, -0.1659233123064041, 0.014470770955085754,
+ -0.04560155048966408, -0.1665063202381134, -0.1642593890428543,
+ 0.19914908707141876, 0.3279957175254822, -0.030767757445573807
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'gelu float16 2D tensor',
+ 'graph': {
+ 'inputs': {
+ 'geluInput': {
+ 'data': [
+ 0.87841796875, -0.0970458984375, 0.13671875,
+ 0.464111328125, -0.266357421875, -0.8251953125,
+ 0.85302734375, 0.384521484375, 0.67724609375,
+ -0.481201171875, 0.29833984375, 0.677734375,
+ -0.5263671875, 0.349853515625, -0.129150390625,
+ 0.58544921875, -0.89501953125, 0.0283050537109375,
+ -0.0989990234375, -0.8837890625, -0.59619140625,
+ 0.318603515625, 0.4794921875, -0.06488037109375
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float16'}
+ }
+ },
+ 'operators': [{
+ 'name': 'gelu',
+ 'arguments': [{'input': 'geluInput'}],
+ 'outputs': 'geluOutput'
+ }],
+ 'expectedOutputs': {
+ 'geluOutput': {
+ 'data': [
+ 0.71142578125, -0.044769287109375, 0.0758056640625,
+ 0.31494140625, -0.105224609375, -0.1688232421875,
+ 0.68505859375, 0.2498779296875, 0.50830078125,
+ -0.151611328125, 0.1842041015625, 0.5087890625,
+ -0.1575927734375, 0.2227783203125, -0.057952880859375,
+ 0.422119140625, -0.1658935546875, 0.01447296142578125,
+ -0.04559326171875, -0.16650390625, -0.164306640625,
+ 0.1990966796875, 0.328125, -0.03076171875
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float16'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'gelu float32 3D tensor',
+ 'graph': {
+ 'inputs': {
+ 'geluInput': {
+ 'data': [
+ 0.878292441368103, -0.09706497937440872, 0.1367187649011612,
+ 0.46406492590904236, -0.26635801792144775, -0.8252315521240234,
+ 0.8530909419059753, 0.3846154808998108, 0.6772316694259644,
+ -0.4811072051525116, 0.2983909249305725, 0.6777864098548889,
+ -0.526228129863739, 0.3497541546821594, -0.12918996810913086,
+ 0.5853934288024902, -0.8950720429420471, 0.028302494436502457,
+ -0.09901237487792969, -0.8838679790496826, -0.596120297908783,
+ 0.31863871216773987, 0.4794037640094757, -0.06489315629005432
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'gelu',
+ 'arguments': [{'input': 'geluInput'}],
+ 'outputs': 'geluOutput'
+ }],
+ 'expectedOutputs': {
+ 'geluOutput': {
+ 'data': [
+ 0.7115113139152527, -0.0447796992957592, 0.07579325884580612,
+ 0.3149605691432953, -0.10520657151937485, -0.16885890066623688,
+ 0.6851989030838013, 0.24989959597587585, 0.508513331413269,
+ -0.1516546905040741, 0.18419598042964935, 0.509049117565155,
+ -0.15753419697284698, 0.22270187735557556, -0.05795508995652199,
+ 0.42198580503463745, -0.1659233123064041, 0.014470770955085754,
+ -0.04560155048966408, -0.1665063202381134, -0.1642593890428543,
+ 0.19914908707141876, 0.3279957175254822, -0.030767757445573807
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'gelu float16 3D tensor',
+ 'graph': {
+ 'inputs': {
+ 'geluInput': {
+ 'data': [
+ 0.87841796875, -0.0970458984375, 0.13671875,
+ 0.464111328125, -0.266357421875, -0.8251953125,
+ 0.85302734375, 0.384521484375, 0.67724609375,
+ -0.481201171875, 0.29833984375, 0.677734375,
+ -0.5263671875, 0.349853515625, -0.129150390625,
+ 0.58544921875, -0.89501953125, 0.0283050537109375,
+ -0.0989990234375, -0.8837890625, -0.59619140625,
+ 0.318603515625, 0.4794921875, -0.06488037109375
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float16'}
+ }
+ },
+ 'operators': [{
+ 'name': 'gelu',
+ 'arguments': [{'input': 'geluInput'}],
+ 'outputs': 'geluOutput'
+ }],
+ 'expectedOutputs': {
+ 'geluOutput': {
+ 'data': [
+ 0.71142578125, -0.044769287109375, 0.0758056640625,
+ 0.31494140625, -0.105224609375, -0.1688232421875,
+ 0.68505859375, 0.2498779296875, 0.50830078125,
+ -0.151611328125, 0.1842041015625, 0.5087890625,
+ -0.1575927734375, 0.2227783203125, -0.057952880859375,
+ 0.422119140625, -0.1658935546875, 0.01447296142578125,
+ -0.04559326171875, -0.16650390625, -0.164306640625,
+ 0.1990966796875, 0.328125, -0.03076171875
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float16'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'gelu float32 4D tensor',
+ 'graph': {
+ 'inputs': {
+ 'geluInput': {
+ 'data': [
+ 0.878292441368103, -0.09706497937440872, 0.1367187649011612,
+ 0.46406492590904236, -0.26635801792144775, -0.8252315521240234,
+ 0.8530909419059753, 0.3846154808998108, 0.6772316694259644,
+ -0.4811072051525116, 0.2983909249305725, 0.6777864098548889,
+ -0.526228129863739, 0.3497541546821594, -0.12918996810913086,
+ 0.5853934288024902, -0.8950720429420471, 0.028302494436502457,
+ -0.09901237487792969, -0.8838679790496826, -0.596120297908783,
+ 0.31863871216773987, 0.4794037640094757, -0.06489315629005432
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'gelu',
+ 'arguments': [{'input': 'geluInput'}],
+ 'outputs': 'geluOutput'
+ }],
+ 'expectedOutputs': {
+ 'geluOutput': {
+ 'data': [
+ 0.7115113139152527, -0.0447796992957592, 0.07579325884580612,
+ 0.3149605691432953, -0.10520657151937485, -0.16885890066623688,
+ 0.6851989030838013, 0.24989959597587585, 0.508513331413269,
+ -0.1516546905040741, 0.18419598042964935, 0.509049117565155,
+ -0.15753419697284698, 0.22270187735557556, -0.05795508995652199,
+ 0.42198580503463745, -0.1659233123064041, 0.014470770955085754,
+ -0.04560155048966408, -0.1665063202381134, -0.1642593890428543,
+ 0.19914908707141876, 0.3279957175254822, -0.030767757445573807
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'gelu float16 4D tensor',
+ 'graph': {
+ 'inputs': {
+ 'geluInput': {
+ 'data': [
+ 0.87841796875, -0.0970458984375, 0.13671875,
+ 0.464111328125, -0.266357421875, -0.8251953125,
+ 0.85302734375, 0.384521484375, 0.67724609375,
+ -0.481201171875, 0.29833984375, 0.677734375,
+ -0.5263671875, 0.349853515625, -0.129150390625,
+ 0.58544921875, -0.89501953125, 0.0283050537109375,
+ -0.0989990234375, -0.8837890625, -0.59619140625,
+ 0.318603515625, 0.4794921875, -0.06488037109375
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float16'}
+ }
+ },
+ 'operators': [{
+ 'name': 'gelu',
+ 'arguments': [{'input': 'geluInput'}],
+ 'outputs': 'geluOutput'
+ }],
+ 'expectedOutputs': {
+ 'geluOutput': {
+ 'data': [
+ 0.71142578125, -0.044769287109375, 0.0758056640625,
+ 0.31494140625, -0.105224609375, -0.1688232421875,
+ 0.68505859375, 0.2498779296875, 0.50830078125,
+ -0.151611328125, 0.1842041015625, 0.5087890625,
+ -0.1575927734375, 0.2227783203125, -0.057952880859375,
+ 0.422119140625, -0.1658935546875, 0.01447296142578125,
+ -0.04559326171875, -0.16650390625, -0.164306640625,
+ 0.1990966796875, 0.328125, -0.03076171875
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float16'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'gelu float32 5D tensor',
+ 'graph': {
+ 'inputs': {
+ 'geluInput': {
+ 'data': [
+ 0.878292441368103, -0.09706497937440872, 0.1367187649011612,
+ 0.46406492590904236, -0.26635801792144775, -0.8252315521240234,
+ 0.8530909419059753, 0.3846154808998108, 0.6772316694259644,
+ -0.4811072051525116, 0.2983909249305725, 0.6777864098548889,
+ -0.526228129863739, 0.3497541546821594, -0.12918996810913086,
+ 0.5853934288024902, -0.8950720429420471, 0.028302494436502457,
+ -0.09901237487792969, -0.8838679790496826, -0.596120297908783,
+ 0.31863871216773987, 0.4794037640094757, -0.06489315629005432
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 1, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'gelu',
+ 'arguments': [{'input': 'geluInput'}],
+ 'outputs': 'geluOutput'
+ }],
+ 'expectedOutputs': {
+ 'geluOutput': {
+ 'data': [
+ 0.7115113139152527, -0.0447796992957592, 0.07579325884580612,
+ 0.3149605691432953, -0.10520657151937485, -0.16885890066623688,
+ 0.6851989030838013, 0.24989959597587585, 0.508513331413269,
+ -0.1516546905040741, 0.18419598042964935, 0.509049117565155,
+ -0.15753419697284698, 0.22270187735557556, -0.05795508995652199,
+ 0.42198580503463745, -0.1659233123064041, 0.014470770955085754,
+ -0.04560155048966408, -0.1665063202381134, -0.1642593890428543,
+ 0.19914908707141876, 0.3279957175254822, -0.030767757445573807
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 1, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'gelu float16 5D tensor',
+ 'graph': {
+ 'inputs': {
+ 'geluInput': {
+ 'data': [
+ 0.87841796875, -0.0970458984375, 0.13671875,
+ 0.464111328125, -0.266357421875, -0.8251953125,
+ 0.85302734375, 0.384521484375, 0.67724609375,
+ -0.481201171875, 0.29833984375, 0.677734375,
+ -0.5263671875, 0.349853515625, -0.129150390625,
+ 0.58544921875, -0.89501953125, 0.0283050537109375,
+ -0.0989990234375, -0.8837890625, -0.59619140625,
+ 0.318603515625, 0.4794921875, -0.06488037109375
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 1, 3], 'dataType': 'float16'}
+ }
+ },
+ 'operators': [{
+ 'name': 'gelu',
+ 'arguments': [{'input': 'geluInput'}],
+ 'outputs': 'geluOutput'
+ }],
+ 'expectedOutputs': {
+ 'geluOutput': {
+ 'data': [
+ 0.71142578125, -0.044769287109375, 0.0758056640625,
+ 0.31494140625, -0.105224609375, -0.1688232421875,
+ 0.68505859375, 0.2498779296875, 0.50830078125,
+ -0.151611328125, 0.1842041015625, 0.5087890625,
+ -0.1575927734375, 0.2227783203125, -0.057952880859375,
+ 0.422119140625, -0.1658935546875, 0.01447296142578125,
+ -0.04559326171875, -0.16650390625, -0.164306640625,
+ 0.1990966796875, 0.328125, -0.03076171875
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 1, 3], 'dataType': 'float16'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ geluTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getGeluPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/gemm.https.any.js b/tests/wpt/tests/webnn/conformance_tests/gemm.https.any.js
index 0af471753e0..70b2ecb5e1e 100644
--- a/tests/wpt/tests/webnn/conformance_tests/gemm.https.any.js
+++ b/tests/wpt/tests/webnn/conformance_tests/gemm.https.any.js
@@ -8,6 +8,1295 @@
'use strict';
-// https://webmachinelearning.github.io/webnn/#api-mlgraphbuilder-gemm
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-gemm
+// Calculate the general matrix multiplication of the Basic Linear Algebra
+// Subprograms. The calculation follows the expression alpha * A * B + beta * C
+//
+// dictionary MLGemmOptions {
+// MLOperand c;
+// double alpha = 1.0;
+// double beta = 1.0;
+// boolean aTranspose = false;
+// boolean bTranspose = false;
+// };
+//
+// MLOperand gemm(
+// MLOperand a, MLOperand b, optional MLGemmOptions options = {});
-runWebNNConformanceTests('gemm', buildGemm);
+
+const getGemmPrecisionTolerance = (graphResources) => {
+ // GEMM : alpha * (A x B) + beta * C
+ // An upper bound for the worst serial ordering is bounded by
+ // the number of lossy operations, where matrix multiplication
+ // is a dot product (mul and add times the number of elements)
+ // plus bias operations.
+ const args = graphResources.operators[0].arguments;
+ const shapeA = graphResources.inputs[args[0][Object.keys(args[0])[0]]]
+ .descriptor.dimensions;
+ const options =
+ args.length === 3 ? {...args[2][Object.keys(args[2])[0]]} : {};
+ const width = options.aTranspose ? shapeA[0] : shapeA[1];
+ let tolerance = width * 2;
+ // default options.alpha is 1.0
+ if (options.alpha !== undefined && options.alpha !== 1.0) {
+ tolerance++;
+ }
+ if (options.c && options.beta !== 0.0) {
+ // default options.beta is 1.0
+ if (options.beta !== undefined && options.beta !== 1.0) {
+ tolerance++;
+ }
+ tolerance++;
+ }
+
+ const toleranceValueDict = {float32: tolerance, float16: tolerance};
+ const expectedDataType =
+ getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs);
+ return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]};
+};
+
+const gemmTests = [
+ {
+ 'name': 'gemm two float32 2D tensors (b is non-constant) default options',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 82.98884582519531, 90.51641082763672, 59.638519287109375,
+ 36.271873474121094, 18.9648494720459, 43.89479446411133,
+ 98.89488220214844, 91.46013641357422, 50.51683807373047,
+ 40.45679473876953, 50.76741409301758, 9.336554527282715
+ ],
+ 'descriptor': {'dimensions': [3, 4], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 25.14739227294922, 66.6923828125, 63.29909896850586,
+ 10.629964828491211, 61.32737731933594, 0.0037256532814353704,
+ 16.4991455078125, 3.036668062210083, 93.14022064208984,
+ 70.08265686035156, 75.74880981445312, 96.60688018798828,
+ 99.10041809082031, 23.2437744140625, 86.11856842041016,
+ 42.90679168701172, 34.08055114746094, 87.37654876708984,
+ 92.34209442138672, 60.32209014892578
+ ],
+ 'descriptor': {'dimensions': [4, 5], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'gemm',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'gemmOutput'
+ }],
+ 'expectedOutputs': {
+ 'gemmOutput': {
+ 'data': [
+ 8161.14697265625, 14025.82421875, 14607.5009765625,
+ 14048.5322265625, 18757.09765625, 11892.5107421875,
+ 14659.9755859375, 19125.74609375, 15034.27734375, 18273.080078125,
+ 5516.6904296875, 9259.267578125, 9167.3916015625, 6347.330078125,
+ 10868.6025390625
+ ],
+ 'descriptor': {'dimensions': [3, 5], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'gemm two float32 2D tensors default options',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 82.98884582519531, 90.51641082763672, 59.638519287109375,
+ 36.271873474121094, 18.9648494720459, 43.89479446411133,
+ 98.89488220214844, 91.46013641357422, 50.51683807373047,
+ 40.45679473876953, 50.76741409301758, 9.336554527282715
+ ],
+ 'descriptor': {'dimensions': [3, 4], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 25.14739227294922, 66.6923828125, 63.29909896850586,
+ 10.629964828491211, 61.32737731933594, 0.0037256532814353704,
+ 16.4991455078125, 3.036668062210083, 93.14022064208984,
+ 70.08265686035156, 75.74880981445312, 96.60688018798828,
+ 99.10041809082031, 23.2437744140625, 86.11856842041016,
+ 42.90679168701172, 34.08055114746094, 87.37654876708984,
+ 92.34209442138672, 60.32209014892578
+ ],
+ 'descriptor': {'dimensions': [4, 5], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'gemm',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'gemmOutput'
+ }],
+ 'expectedOutputs': {
+ 'gemmOutput': {
+ 'data': [
+ 8161.14697265625, 14025.82421875, 14607.5009765625,
+ 14048.5322265625, 18757.09765625, 11892.5107421875,
+ 14659.9755859375, 19125.74609375, 15034.27734375, 18273.080078125,
+ 5516.6904296875, 9259.267578125, 9167.3916015625, 6347.330078125,
+ 10868.6025390625
+ ],
+ 'descriptor': {'dimensions': [3, 5], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'gemm two float32 2D constant tensors options.c',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 82.98884582519531, 90.51641082763672, 59.638519287109375,
+ 36.271873474121094, 18.9648494720459, 43.89479446411133,
+ 98.89488220214844, 91.46013641357422, 50.51683807373047,
+ 40.45679473876953, 50.76741409301758, 9.336554527282715
+ ],
+ 'descriptor': {'dimensions': [3, 4], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'inputB': {
+ 'data': [
+ 25.14739227294922, 66.6923828125, 63.29909896850586,
+ 10.629964828491211, 61.32737731933594, 0.0037256532814353704,
+ 16.4991455078125, 3.036668062210083, 93.14022064208984,
+ 70.08265686035156, 75.74880981445312, 96.60688018798828,
+ 99.10041809082031, 23.2437744140625, 86.11856842041016,
+ 42.90679168701172, 34.08055114746094, 87.37654876708984,
+ 92.34209442138672, 60.32209014892578
+ ],
+ 'descriptor': {'dimensions': [4, 5], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'inputC': {
+ 'data': [
+ 82.77201843261719, 91.38520812988281, 12.651897430419922,
+ 20.12200355529785, 68.51224517822266, 35.202415466308594,
+ 13.33466625213623, 50.78546905517578, 88.61195373535156,
+ 30.577470779418945, 69.47061920166016, 7.166217803955078,
+ 28.337108612060547, 90.69412231445312, 71.23025512695312
+ ],
+ 'descriptor': {'dimensions': [3, 5], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'gemm',
+ 'arguments':
+ [{'a': 'inputA'}, {'b': 'inputB'}, {'options': {'c': 'inputC'}}],
+ 'outputs': 'gemmOutput'
+ }],
+ 'expectedOutputs': {
+ 'gemmOutput': {
+ 'data': [
+ 8243.9189453125, 14117.208984375, 14620.15234375, 14068.654296875,
+ 18825.609375, 11927.712890625, 14673.310546875, 19176.533203125,
+ 15122.8896484375, 18303.658203125, 5586.16064453125, 9266.43359375,
+ 9195.7294921875, 6438.0244140625, 10939.8330078125
+ ],
+ 'descriptor': {'dimensions': [3, 5], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'gemm two float32 2D tensors options.c',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 82.98884582519531, 90.51641082763672, 59.638519287109375,
+ 36.271873474121094, 18.9648494720459, 43.89479446411133,
+ 98.89488220214844, 91.46013641357422, 50.51683807373047,
+ 40.45679473876953, 50.76741409301758, 9.336554527282715
+ ],
+ 'descriptor': {'dimensions': [3, 4], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 25.14739227294922, 66.6923828125, 63.29909896850586,
+ 10.629964828491211, 61.32737731933594, 0.0037256532814353704,
+ 16.4991455078125, 3.036668062210083, 93.14022064208984,
+ 70.08265686035156, 75.74880981445312, 96.60688018798828,
+ 99.10041809082031, 23.2437744140625, 86.11856842041016,
+ 42.90679168701172, 34.08055114746094, 87.37654876708984,
+ 92.34209442138672, 60.32209014892578
+ ],
+ 'descriptor': {'dimensions': [4, 5], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'inputC': {
+ 'data': [
+ 82.77201843261719, 91.38520812988281, 12.651897430419922,
+ 20.12200355529785, 68.51224517822266, 35.202415466308594,
+ 13.33466625213623, 50.78546905517578, 88.61195373535156,
+ 30.577470779418945, 69.47061920166016, 7.166217803955078,
+ 28.337108612060547, 90.69412231445312, 71.23025512695312
+ ],
+ 'descriptor': {'dimensions': [3, 5], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'gemm',
+ 'arguments':
+ [{'a': 'inputA'}, {'b': 'inputB'}, {'options': {'c': 'inputC'}}],
+ 'outputs': 'gemmOutput'
+ }],
+ 'expectedOutputs': {
+ 'gemmOutput': {
+ 'data': [
+ 8243.9189453125, 14117.208984375, 14620.15234375, 14068.654296875,
+ 18825.609375, 11927.712890625, 14673.310546875, 19176.533203125,
+ 15122.8896484375, 18303.658203125, 5586.16064453125, 9266.43359375,
+ 9195.7294921875, 6438.0244140625, 10939.8330078125
+ ],
+ 'descriptor': {'dimensions': [3, 5], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'gemm two float32 2D tensors broadcast options.c [1, 5] => [3, 5]',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 82.98884582519531, 90.51641082763672, 59.638519287109375,
+ 36.271873474121094, 18.9648494720459, 43.89479446411133,
+ 98.89488220214844, 91.46013641357422, 50.51683807373047,
+ 40.45679473876953, 50.76741409301758, 9.336554527282715
+ ],
+ 'descriptor': {'dimensions': [3, 4], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 25.14739227294922, 66.6923828125, 63.29909896850586,
+ 10.629964828491211, 61.32737731933594, 0.0037256532814353704,
+ 16.4991455078125, 3.036668062210083, 93.14022064208984,
+ 70.08265686035156, 75.74880981445312, 96.60688018798828,
+ 99.10041809082031, 23.2437744140625, 86.11856842041016,
+ 42.90679168701172, 34.08055114746094, 87.37654876708984,
+ 92.34209442138672, 60.32209014892578
+ ],
+ 'descriptor': {'dimensions': [4, 5], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'inputC': {
+ 'data': [
+ 85.90813446044922, 39.3753547668457, 50.942604064941406,
+ 31.87430763244629, 31.210525512695312
+ ],
+ 'descriptor': {'dimensions': [1, 5], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'gemm',
+ 'arguments':
+ [{'a': 'inputA'}, {'b': 'inputB'}, {'options': {'c': 'inputC'}}],
+ 'outputs': 'gemmOutput'
+ }],
+ 'expectedOutputs': {
+ 'gemmOutput': {
+ 'data': [
+ 8247.0546875, 14065.19921875, 14658.443359375, 14080.40625,
+ 18788.30859375, 11978.4189453125, 14699.3505859375, 19176.689453125,
+ 15066.1513671875, 18304.291015625, 5602.5986328125, 9298.642578125,
+ 9218.3349609375, 6379.20458984375, 10899.8125
+ ],
+ 'descriptor': {'dimensions': [3, 5], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'gemm two float32 2D tensors broadcast options.c [3, 1] => [3, 5]',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 82.98884582519531, 90.51641082763672, 59.638519287109375,
+ 36.271873474121094, 18.9648494720459, 43.89479446411133,
+ 98.89488220214844, 91.46013641357422, 50.51683807373047,
+ 40.45679473876953, 50.76741409301758, 9.336554527282715
+ ],
+ 'descriptor': {'dimensions': [3, 4], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 25.14739227294922, 66.6923828125, 63.29909896850586,
+ 10.629964828491211, 61.32737731933594, 0.0037256532814353704,
+ 16.4991455078125, 3.036668062210083, 93.14022064208984,
+ 70.08265686035156, 75.74880981445312, 96.60688018798828,
+ 99.10041809082031, 23.2437744140625, 86.11856842041016,
+ 42.90679168701172, 34.08055114746094, 87.37654876708984,
+ 92.34209442138672, 60.32209014892578
+ ],
+ 'descriptor': {'dimensions': [4, 5], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'inputC': {
+ 'data': [6.20251989364624, 81.40641784667969, 73.00516510009766],
+ 'descriptor': {'dimensions': [3, 1], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'gemm',
+ 'arguments':
+ [{'a': 'inputA'}, {'b': 'inputB'}, {'options': {'c': 'inputC'}}],
+ 'outputs': 'gemmOutput'
+ }],
+ 'expectedOutputs': {
+ 'gemmOutput': {
+ 'data': [
+ 8167.349609375, 14032.0263671875, 14613.703125, 14054.734375,
+ 18763.30078125, 11973.9169921875, 14741.3818359375, 19207.154296875,
+ 15115.68359375, 18354.486328125, 5589.6953125, 9332.2724609375,
+ 9240.3974609375, 6420.33544921875, 10941.607421875
+ ],
+ 'descriptor': {'dimensions': [3, 5], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'gemm two float32 2D tensors broadcast options.c [1, 1] => [3, 5]',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 82.98884582519531, 90.51641082763672, 59.638519287109375,
+ 36.271873474121094, 18.9648494720459, 43.89479446411133,
+ 98.89488220214844, 91.46013641357422, 50.51683807373047,
+ 40.45679473876953, 50.76741409301758, 9.336554527282715
+ ],
+ 'descriptor': {'dimensions': [3, 4], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 25.14739227294922, 66.6923828125, 63.29909896850586,
+ 10.629964828491211, 61.32737731933594, 0.0037256532814353704,
+ 16.4991455078125, 3.036668062210083, 93.14022064208984,
+ 70.08265686035156, 75.74880981445312, 96.60688018798828,
+ 99.10041809082031, 23.2437744140625, 86.11856842041016,
+ 42.90679168701172, 34.08055114746094, 87.37654876708984,
+ 92.34209442138672, 60.32209014892578
+ ],
+ 'descriptor': {'dimensions': [4, 5], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'inputC': {
+ 'data': [18.78192901611328],
+ 'descriptor': {'dimensions': [1, 1], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'gemm',
+ 'arguments':
+ [{'a': 'inputA'}, {'b': 'inputB'}, {'options': {'c': 'inputC'}}],
+ 'outputs': 'gemmOutput'
+ }],
+ 'expectedOutputs': {
+ 'gemmOutput': {
+ 'data': [
+ 8179.9287109375, 14044.6064453125, 14626.2822265625,
+ 14067.314453125, 18775.87890625, 11911.29296875, 14678.7578125,
+ 19144.529296875, 15053.0595703125, 18291.86328125, 5535.47216796875,
+ 9278.048828125, 9186.173828125, 6366.1123046875, 10887.384765625
+ ],
+ 'descriptor': {'dimensions': [3, 5], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'gemm two float32 2D tensors broadcast options.c [5] => [3, 5]',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 82.98884582519531, 90.51641082763672, 59.638519287109375,
+ 36.271873474121094, 18.9648494720459, 43.89479446411133,
+ 98.89488220214844, 91.46013641357422, 50.51683807373047,
+ 40.45679473876953, 50.76741409301758, 9.336554527282715
+ ],
+ 'descriptor': {'dimensions': [3, 4], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 25.14739227294922, 66.6923828125, 63.29909896850586,
+ 10.629964828491211, 61.32737731933594, 0.0037256532814353704,
+ 16.4991455078125, 3.036668062210083, 93.14022064208984,
+ 70.08265686035156, 75.74880981445312, 96.60688018798828,
+ 99.10041809082031, 23.2437744140625, 86.11856842041016,
+ 42.90679168701172, 34.08055114746094, 87.37654876708984,
+ 92.34209442138672, 60.32209014892578
+ ],
+ 'descriptor': {'dimensions': [4, 5], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'inputC': {
+ 'data': [
+ 85.90813446044922, 39.3753547668457, 50.942604064941406,
+ 31.87430763244629, 31.210525512695312
+ ],
+ 'descriptor': {'dimensions': [5], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'gemm',
+ 'arguments':
+ [{'a': 'inputA'}, {'b': 'inputB'}, {'options': {'c': 'inputC'}}],
+ 'outputs': 'gemmOutput'
+ }],
+ 'expectedOutputs': {
+ 'gemmOutput': {
+ 'data': [
+ 8247.0546875, 14065.19921875, 14658.443359375, 14080.40625,
+ 18788.30859375, 11978.4189453125, 14699.3505859375, 19176.689453125,
+ 15066.1513671875, 18304.291015625, 5602.5986328125, 9298.642578125,
+ 9218.3349609375, 6379.20458984375, 10899.8125
+ ],
+ 'descriptor': {'dimensions': [3, 5], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'gemm two float32 2D tensors broadcast options.c [1] => [3, 5]',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 82.98884582519531, 90.51641082763672, 59.638519287109375,
+ 36.271873474121094, 18.9648494720459, 43.89479446411133,
+ 98.89488220214844, 91.46013641357422, 50.51683807373047,
+ 40.45679473876953, 50.76741409301758, 9.336554527282715
+ ],
+ 'descriptor': {'dimensions': [3, 4], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 25.14739227294922, 66.6923828125, 63.29909896850586,
+ 10.629964828491211, 61.32737731933594, 0.0037256532814353704,
+ 16.4991455078125, 3.036668062210083, 93.14022064208984,
+ 70.08265686035156, 75.74880981445312, 96.60688018798828,
+ 99.10041809082031, 23.2437744140625, 86.11856842041016,
+ 42.90679168701172, 34.08055114746094, 87.37654876708984,
+ 92.34209442138672, 60.32209014892578
+ ],
+ 'descriptor': {'dimensions': [4, 5], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'inputC': {
+ 'data': [18.78192901611328],
+ 'descriptor': {'dimensions': [1], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'gemm',
+ 'arguments':
+ [{'a': 'inputA'}, {'b': 'inputB'}, {'options': {'c': 'inputC'}}],
+ 'outputs': 'gemmOutput'
+ }],
+ 'expectedOutputs': {
+ 'gemmOutput': {
+ 'data': [
+ 8179.9287109375, 14044.6064453125, 14626.2822265625,
+ 14067.314453125, 18775.87890625, 11911.29296875, 14678.7578125,
+ 19144.529296875, 15053.0595703125, 18291.86328125, 5535.47216796875,
+ 9278.048828125, 9186.173828125, 6366.1123046875, 10887.384765625
+ ],
+ 'descriptor': {'dimensions': [3, 5], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'gemm two float32 2D tensors scalar options.c',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 82.98884582519531, 90.51641082763672, 59.638519287109375,
+ 36.271873474121094, 18.9648494720459, 43.89479446411133,
+ 98.89488220214844, 91.46013641357422, 50.51683807373047,
+ 40.45679473876953, 50.76741409301758, 9.336554527282715
+ ],
+ 'descriptor': {'dimensions': [3, 4], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 25.14739227294922, 66.6923828125, 63.29909896850586,
+ 10.629964828491211, 61.32737731933594, 0.0037256532814353704,
+ 16.4991455078125, 3.036668062210083, 93.14022064208984,
+ 70.08265686035156, 75.74880981445312, 96.60688018798828,
+ 99.10041809082031, 23.2437744140625, 86.11856842041016,
+ 42.90679168701172, 34.08055114746094, 87.37654876708984,
+ 92.34209442138672, 60.32209014892578
+ ],
+ 'descriptor': {'dimensions': [4, 5], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'inputC': {
+ 'data': [18.78192901611328],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'gemm',
+ 'arguments':
+ [{'a': 'inputA'}, {'b': 'inputB'}, {'options': {'c': 'inputC'}}],
+ 'outputs': 'gemmOutput'
+ }],
+ 'expectedOutputs': {
+ 'gemmOutput': {
+ 'data': [
+ 8179.9287109375, 14044.6064453125, 14626.2822265625,
+ 14067.314453125, 18775.87890625, 11911.29296875, 14678.7578125,
+ 19144.529296875, 15053.0595703125, 18291.86328125, 5535.47216796875,
+ 9278.048828125, 9186.173828125, 6366.1123046875, 10887.384765625
+ ],
+ 'descriptor': {'dimensions': [3, 5], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'gemm two float32 2D tensors options.alpha',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 82.98884582519531, 90.51641082763672, 59.638519287109375,
+ 36.271873474121094, 18.9648494720459, 43.89479446411133,
+ 98.89488220214844, 91.46013641357422, 50.51683807373047,
+ 40.45679473876953, 50.76741409301758, 9.336554527282715
+ ],
+ 'descriptor': {'dimensions': [3, 4], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 25.14739227294922, 66.6923828125, 63.29909896850586,
+ 10.629964828491211, 61.32737731933594, 0.0037256532814353704,
+ 16.4991455078125, 3.036668062210083, 93.14022064208984,
+ 70.08265686035156, 75.74880981445312, 96.60688018798828,
+ 99.10041809082031, 23.2437744140625, 86.11856842041016,
+ 42.90679168701172, 34.08055114746094, 87.37654876708984,
+ 92.34209442138672, 60.32209014892578
+ ],
+ 'descriptor': {'dimensions': [4, 5], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'gemm',
+ 'arguments': [
+ {'a': 'inputA'}, {'b': 'inputB'},
+ {'options': {'alpha': 74.43204170482103}}
+ ],
+ 'outputs': 'gemmOutput'
+ }],
+ 'expectedOutputs': {
+ 'gemmOutput': {
+ 'data': [
+ 607450.875, 1043970.75, 1087266.125, 1045661, 1396129.125,
+ 885183.875, 1091172, 1423568.5, 1119032, 1360102.75, 410618.53125,
+ 689186.1875, 682347.75, 472444.78125, 808972.3125
+ ],
+ 'descriptor': {'dimensions': [3, 5], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'gemm two float32 2D tensors options.beta',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 82.98884582519531, 90.51641082763672, 59.638519287109375,
+ 36.271873474121094, 18.9648494720459, 43.89479446411133,
+ 98.89488220214844, 91.46013641357422, 50.51683807373047,
+ 40.45679473876953, 50.76741409301758, 9.336554527282715
+ ],
+ 'descriptor': {'dimensions': [3, 4], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 25.14739227294922, 66.6923828125, 63.29909896850586,
+ 10.629964828491211, 61.32737731933594, 0.0037256532814353704,
+ 16.4991455078125, 3.036668062210083, 93.14022064208984,
+ 70.08265686035156, 75.74880981445312, 96.60688018798828,
+ 99.10041809082031, 23.2437744140625, 86.11856842041016,
+ 42.90679168701172, 34.08055114746094, 87.37654876708984,
+ 92.34209442138672, 60.32209014892578
+ ],
+ 'descriptor': {'dimensions': [4, 5], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'gemm',
+ 'arguments': [
+ {'a': 'inputA'}, {'b': 'inputB'},
+ {'options': {'beta': 62.01828598608989}}
+ ],
+ 'outputs': 'gemmOutput'
+ }],
+ 'expectedOutputs': {
+ 'gemmOutput': {
+ 'data': [
+ 8161.14697265625, 14025.82421875, 14607.5009765625,
+ 14048.5322265625, 18757.09765625, 11892.5107421875,
+ 14659.9755859375, 19125.74609375, 15034.27734375, 18273.080078125,
+ 5516.6904296875, 9259.267578125, 9167.3916015625, 6347.330078125,
+ 10868.6025390625
+ ],
+ 'descriptor': {'dimensions': [3, 5], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'gemm two float32 2D tensors options.c and options.beta',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 82.98884582519531, 90.51641082763672, 59.638519287109375,
+ 36.271873474121094, 18.9648494720459, 43.89479446411133,
+ 98.89488220214844, 91.46013641357422, 50.51683807373047,
+ 40.45679473876953, 50.76741409301758, 9.336554527282715
+ ],
+ 'descriptor': {'dimensions': [3, 4], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 25.14739227294922, 66.6923828125, 63.29909896850586,
+ 10.629964828491211, 61.32737731933594, 0.0037256532814353704,
+ 16.4991455078125, 3.036668062210083, 93.14022064208984,
+ 70.08265686035156, 75.74880981445312, 96.60688018798828,
+ 99.10041809082031, 23.2437744140625, 86.11856842041016,
+ 42.90679168701172, 34.08055114746094, 87.37654876708984,
+ 92.34209442138672, 60.32209014892578
+ ],
+ 'descriptor': {'dimensions': [4, 5], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'inputC': {
+ 'data': [
+ 82.77201843261719, 91.38520812988281, 12.651897430419922,
+ 20.12200355529785, 68.51224517822266, 35.202415466308594,
+ 13.33466625213623, 50.78546905517578, 88.61195373535156,
+ 30.577470779418945, 69.47061920166016, 7.166217803955078,
+ 28.337108612060547, 90.69412231445312, 71.23025512695312
+ ],
+ 'descriptor': {'dimensions': [3, 5], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'gemm',
+ 'arguments': [
+ {'a': 'inputA'}, {'b': 'inputB'},
+ {'options': {'c': 'inputC', 'beta': 62.01828598608989}}
+ ],
+ 'outputs': 'gemmOutput'
+ }],
+ 'expectedOutputs': {
+ 'gemmOutput': {
+ 'data': [
+ 13294.525390625, 19693.37890625, 15392.1494140625, 15296.4638671875,
+ 23006.109375, 14075.7041015625, 15486.96875, 22275.375,
+ 20529.83984375, 20169.443359375, 9825.138671875, 9703.7041015625,
+ 10924.810546875, 11972.0244140625, 15286.1806640625
+ ],
+ 'descriptor': {'dimensions': [3, 5], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'gemm two float32 2D tensors options.aTranspose being true',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 82.98884582519531, 18.9648494720459, 50.51683807373047,
+ 90.51641082763672, 43.89479446411133, 40.45679473876953,
+ 59.638519287109375, 98.89488220214844, 50.76741409301758,
+ 36.271873474121094, 91.46013641357422, 9.336554527282715
+ ],
+ 'descriptor': {'dimensions': [4, 3], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 25.14739227294922, 66.6923828125, 63.29909896850586,
+ 10.629964828491211, 61.32737731933594, 0.0037256532814353704,
+ 16.4991455078125, 3.036668062210083, 93.14022064208984,
+ 70.08265686035156, 75.74880981445312, 96.60688018798828,
+ 99.10041809082031, 23.2437744140625, 86.11856842041016,
+ 42.90679168701172, 34.08055114746094, 87.37654876708984,
+ 92.34209442138672, 60.32209014892578
+ ],
+ 'descriptor': {'dimensions': [4, 5], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'gemm',
+ 'arguments': [
+ {'a': 'inputA'}, {'b': 'inputB'}, {'options': {'aTranspose': true}}
+ ],
+ 'outputs': 'gemmOutput'
+ }],
+ 'expectedOutputs': {
+ 'gemmOutput': {
+ 'data': [
+ 8161.14697265625, 14025.82421875, 14607.5009765625,
+ 14048.5322265625, 18757.09765625, 11892.5107421875,
+ 14659.9755859375, 19125.74609375, 15034.27734375, 18273.080078125,
+ 5516.6904296875, 9259.267578125, 9167.3916015625, 6347.330078125,
+ 10868.6025390625
+ ],
+ 'descriptor': {'dimensions': [3, 5], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'gemm two float32 2D tensors options.aTranspose being explicit false',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 82.98884582519531, 90.51641082763672, 59.638519287109375,
+ 36.271873474121094, 18.9648494720459, 43.89479446411133,
+ 98.89488220214844, 91.46013641357422, 50.51683807373047,
+ 40.45679473876953, 50.76741409301758, 9.336554527282715
+ ],
+ 'descriptor': {'dimensions': [3, 4], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 25.14739227294922, 66.6923828125, 63.29909896850586,
+ 10.629964828491211, 61.32737731933594, 0.0037256532814353704,
+ 16.4991455078125, 3.036668062210083, 93.14022064208984,
+ 70.08265686035156, 75.74880981445312, 96.60688018798828,
+ 99.10041809082031, 23.2437744140625, 86.11856842041016,
+ 42.90679168701172, 34.08055114746094, 87.37654876708984,
+ 92.34209442138672, 60.32209014892578
+ ],
+ 'descriptor': {'dimensions': [4, 5], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'gemm',
+ 'arguments': [
+ {'a': 'inputA'}, {'b': 'inputB'}, {'options': {'aTranspose': false}}
+ ],
+ 'outputs': 'gemmOutput'
+ }],
+ 'expectedOutputs': {
+ 'gemmOutput': {
+ 'data': [
+ 8161.14697265625, 14025.82421875, 14607.5009765625,
+ 14048.5322265625, 18757.09765625, 11892.5107421875,
+ 14659.9755859375, 19125.74609375, 15034.27734375, 18273.080078125,
+ 5516.6904296875, 9259.267578125, 9167.3916015625, 6347.330078125,
+ 10868.6025390625
+ ],
+ 'descriptor': {'dimensions': [3, 5], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'gemm two float32 2D tensors options.bTranspose being true',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 82.98884582519531, 90.51641082763672, 59.638519287109375,
+ 36.271873474121094, 18.9648494720459, 43.89479446411133,
+ 98.89488220214844, 91.46013641357422, 50.51683807373047,
+ 40.45679473876953, 50.76741409301758, 9.336554527282715
+ ],
+ 'descriptor': {'dimensions': [3, 4], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 25.14739227294922, 0.0037256532814353704, 75.74880981445312,
+ 42.90679168701172, 66.6923828125, 16.4991455078125,
+ 96.60688018798828, 34.08055114746094, 63.29909896850586,
+ 3.036668062210083, 99.10041809082031, 87.37654876708984,
+ 10.629964828491211, 93.14022064208984, 23.2437744140625,
+ 92.34209442138672, 61.32737731933594, 70.08265686035156,
+ 86.11856842041016, 60.32209014892578
+ ],
+ 'descriptor': {'dimensions': [5, 4], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'gemm',
+ 'arguments': [
+ {'a': 'inputA'}, {'b': 'inputB'}, {'options': {'bTranspose': true}}
+ ],
+ 'outputs': 'gemmOutput'
+ }],
+ 'expectedOutputs': {
+ 'gemmOutput': {
+ 'data': [
+ 8161.14697265625, 14025.82421875, 14607.5009765625,
+ 14048.5322265625, 18757.09765625, 11892.5107421875,
+ 14659.9755859375, 19125.74609375, 15034.27734375, 18273.080078125,
+ 5516.6904296875, 9259.267578125, 9167.3916015625, 6347.330078125,
+ 10868.6025390625
+ ],
+ 'descriptor': {'dimensions': [3, 5], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'gemm two float32 2D tensors options.bTranspose being explicit false',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 82.98884582519531, 90.51641082763672, 59.638519287109375,
+ 36.271873474121094, 18.9648494720459, 43.89479446411133,
+ 98.89488220214844, 91.46013641357422, 50.51683807373047,
+ 40.45679473876953, 50.76741409301758, 9.336554527282715
+ ],
+ 'descriptor': {'dimensions': [3, 4], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 25.14739227294922, 66.6923828125, 63.29909896850586,
+ 10.629964828491211, 61.32737731933594, 0.0037256532814353704,
+ 16.4991455078125, 3.036668062210083, 93.14022064208984,
+ 70.08265686035156, 75.74880981445312, 96.60688018798828,
+ 99.10041809082031, 23.2437744140625, 86.11856842041016,
+ 42.90679168701172, 34.08055114746094, 87.37654876708984,
+ 92.34209442138672, 60.32209014892578
+ ],
+ 'descriptor': {'dimensions': [4, 5], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'gemm',
+ 'arguments': [
+ {'a': 'inputA'}, {'b': 'inputB'}, {'options': {'bTranspose': false}}
+ ],
+ 'outputs': 'gemmOutput'
+ }],
+ 'expectedOutputs': {
+ 'gemmOutput': {
+ 'data': [
+ 8161.14697265625, 14025.82421875, 14607.5009765625,
+ 14048.5322265625, 18757.09765625, 11892.5107421875,
+ 14659.9755859375, 19125.74609375, 15034.27734375, 18273.080078125,
+ 5516.6904296875, 9259.267578125, 9167.3916015625, 6347.330078125,
+ 10868.6025390625
+ ],
+ 'descriptor': {'dimensions': [3, 5], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'gemm two float32 2D tensors all options',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 82.98884582519531, 18.9648494720459, 50.51683807373047,
+ 90.51641082763672, 43.89479446411133, 40.45679473876953,
+ 59.638519287109375, 98.89488220214844, 50.76741409301758,
+ 36.271873474121094, 91.46013641357422, 9.336554527282715
+ ],
+ 'descriptor': {'dimensions': [4, 3], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 25.14739227294922, 0.0037256532814353704, 75.74880981445312,
+ 42.90679168701172, 66.6923828125, 16.4991455078125,
+ 96.60688018798828, 34.08055114746094, 63.29909896850586,
+ 3.036668062210083, 99.10041809082031, 87.37654876708984,
+ 10.629964828491211, 93.14022064208984, 23.2437744140625,
+ 92.34209442138672, 61.32737731933594, 70.08265686035156,
+ 86.11856842041016, 60.32209014892578
+ ],
+ 'descriptor': {'dimensions': [5, 4], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'inputC': {
+ 'data': [
+ 82.77201843261719, 91.38520812988281, 12.651897430419922,
+ 20.12200355529785, 68.51224517822266, 35.202415466308594,
+ 13.33466625213623, 50.78546905517578, 88.61195373535156,
+ 30.577470779418945, 69.47061920166016, 7.166217803955078,
+ 28.337108612060547, 90.69412231445312, 71.23025512695312
+ ],
+ 'descriptor': {'dimensions': [3, 5], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'gemm',
+ 'arguments': [
+ {'a': 'inputA'}, {'b': 'inputB'}, {
+ 'options': {
+ 'c': 'inputC',
+ 'alpha': 74.43204170482103,
+ 'beta': 62.01828598608989,
+ 'aTranspose': true,
+ 'bTranspose': true
+ }
+ }
+ ],
+ 'outputs': 'gemmOutput'
+ }],
+ 'expectedOutputs': {
+ 'gemmOutput': {
+ 'data': [
+ 612584.25, 1049638.375, 1088050.75, 1046908.875, 1400378.125,
+ 887367.0625, 1091999, 1426718.125, 1124527.625, 1361999.125, 414927,
+ 689630.625, 684105.1875, 478069.46875, 813389.875
+ ],
+ 'descriptor': {'dimensions': [3, 5], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'gemm both negative options.alpha and 1st float32 input tensor',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ -87.94973754882812, -14.765121459960938, -80.86310577392578,
+ -59.27638244628906, -28.74825096130371, -9.038779258728027,
+ -76.046630859375, -83.94807434082031, -95.02689361572266,
+ -47.89733123779297, -69.0116195678711, -86.66899108886719
+ ],
+ 'descriptor': {'dimensions': [3, 4], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 25.14739227294922, 66.6923828125, 63.29909896850586,
+ 10.629964828491211, 61.32737731933594, 0.0037256532814353704,
+ 16.4991455078125, 3.036668062210083, 93.14022064208984,
+ 70.08265686035156, 75.74880981445312, 96.60688018798828,
+ 99.10041809082031, 23.2437744140625, 86.11856842041016,
+ 42.90679168701172, 34.08055114746094, 87.37654876708984,
+ 92.34209442138672, 60.32209014892578
+ ],
+ 'descriptor': {'dimensions': [4, 5], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'inputC': {
+ 'data': [
+ 82.77201843261719, 91.38520812988281, 12.651897430419922,
+ 20.12200355529785, 68.51224517822266, 35.202415466308594,
+ 13.33466625213623, 50.78546905517578, 88.61195373535156,
+ 30.577470779418945, 69.47061920166016, 7.166217803955078,
+ 28.337108612060547, 90.69412231445312, 71.23025512695312
+ ],
+ 'descriptor': {'dimensions': [3, 5], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'gemm',
+ 'arguments': [
+ {'a': 'inputA'}, {'b': 'inputB'},
+ {'options': {'c': 'inputC', 'alpha': -22.611149749186296}}
+ ],
+ 'outputs': 'gemmOutput'
+ }],
+ 'expectedOutputs': {
+ 'gemmOutput': {
+ 'data': [
+ 246101.234375, 360542.34375, 425213.25, 218520.65625, 383734.40625,
+ 228076.8125, 277543.625, 378076, 241282.15625, 316800.71875,
+ 256391.5625, 378711.34375, 465195.8125, 341034.875, 460338.3125
+ ],
+ 'descriptor': {'dimensions': [3, 5], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'gemm both negative options.alpha and 2nd float32 input tensor',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 82.98884582519531, 90.51641082763672, 59.638519287109375,
+ 36.271873474121094, 18.9648494720459, 43.89479446411133,
+ 98.89488220214844, 91.46013641357422, 50.51683807373047,
+ 40.45679473876953, 50.76741409301758, 9.336554527282715
+ ],
+ 'descriptor': {'dimensions': [3, 4], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -64.35197448730469, -87.64981079101562, -96.04495239257812,
+ -31.07155990600586, -6.548067092895508, -64.64146423339844,
+ -14.02061653137207, -88.93306732177734, -24.179410934448242,
+ -97.31866455078125, -93.4608154296875, -39.490394592285156,
+ -94.37982177734375, -75.83335876464844, -11.403324127197266,
+ -26.2825927734375, -56.237979888916016, -46.47404861450195,
+ -89.20684051513672, -53.495323181152344
+ ],
+ 'descriptor': {'dimensions': [4, 5], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'inputC': {
+ 'data': [
+ 82.77201843261719, 91.38520812988281, 12.651897430419922,
+ 20.12200355529785, 68.51224517822266, 35.202415466308594,
+ 13.33466625213623, 50.78546905517578, 88.61195373535156,
+ 30.577470779418945, 69.47061920166016, 7.166217803955078,
+ 28.337108612060547, 90.69412231445312, 71.23025512695312
+ ],
+ 'descriptor': {'dimensions': [3, 5], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'gemm',
+ 'arguments': [
+ {'a': 'inputA'}, {'b': 'inputB'},
+ {'options': {'c': 'inputC', 'alpha': -22.611149749186296}}
+ ],
+ 'outputs': 'gemmOutput'
+ }],
+ 'expectedOutputs': {
+ 'gemmOutput': {
+ 'data': [
+ 400725.03125, 292635.75, 527642.375, 283236.40625, 270787.40625,
+ 355130.96875, 256121.421875, 436658.0625, 391465.40625,
+ 235557.03125, 245540.5625, 170154.125, 309239.4375, 163583.015625,
+ 120958.7578125
+ ],
+ 'descriptor': {'dimensions': [3, 5], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'gemm both negative options.beta and 3rd float32 input tensor (options.c)',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 82.98884582519531, 90.51641082763672, 59.638519287109375,
+ 36.271873474121094, 18.9648494720459, 43.89479446411133,
+ 98.89488220214844, 91.46013641357422, 50.51683807373047,
+ 40.45679473876953, 50.76741409301758, 9.336554527282715
+ ],
+ 'descriptor': {'dimensions': [3, 4], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 25.14739227294922, 66.6923828125, 63.29909896850586,
+ 10.629964828491211, 61.32737731933594, 0.0037256532814353704,
+ 16.4991455078125, 3.036668062210083, 93.14022064208984,
+ 70.08265686035156, 75.74880981445312, 96.60688018798828,
+ 99.10041809082031, 23.2437744140625, 86.11856842041016,
+ 42.90679168701172, 34.08055114746094, 87.37654876708984,
+ 92.34209442138672, 60.32209014892578
+ ],
+ 'descriptor': {'dimensions': [4, 5], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'inputC': {
+ 'data': [
+ -42.662681579589844, -93.6637954711914, -40.708492279052734,
+ -45.060977935791016, -87.90338897705078, -71.1618881225586,
+ -85.56422424316406, -10.049134254455566, -46.105403900146484,
+ -66.76168060302734, -25.392492294311523, -65.62987518310547,
+ -40.50155258178711, -81.5303955078125, -41.39629364013672
+ ],
+ 'descriptor': {'dimensions': [3, 5], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'gemm',
+ 'arguments': [
+ {'a': 'inputA'}, {'b': 'inputB'},
+ {'options': {'c': 'inputC', 'beta': -11.68521964935509}}
+ ],
+ 'outputs': 'gemmOutput'
+ }],
+ 'expectedOutputs': {
+ 'gemmOutput': {
+ 'data': [
+ 8659.669921875, 15120.3056640625, 15083.1884765625,
+ 14575.0791015625, 19784.267578125, 12724.052734375, 15659.8125,
+ 19243.173828125, 15573.029296875, 19053.205078125, 5813.4072265625,
+ 10026.1669921875, 9640.6611328125, 7300.03076171875,
+ 11352.3271484375
+ ],
+ 'descriptor': {'dimensions': [3, 5], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'gemm both negative options.alpha and options.beta',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 82.98884582519531, 90.51641082763672, 59.638519287109375,
+ 36.271873474121094, 18.9648494720459, 43.89479446411133,
+ 98.89488220214844, 91.46013641357422, 50.51683807373047,
+ 40.45679473876953, 50.76741409301758, 9.336554527282715
+ ],
+ 'descriptor': {'dimensions': [3, 4], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 25.14739227294922, 66.6923828125, 63.29909896850586,
+ 10.629964828491211, 61.32737731933594, 0.0037256532814353704,
+ 16.4991455078125, 3.036668062210083, 93.14022064208984,
+ 70.08265686035156, 75.74880981445312, 96.60688018798828,
+ 99.10041809082031, 23.2437744140625, 86.11856842041016,
+ 42.90679168701172, 34.08055114746094, 87.37654876708984,
+ 92.34209442138672, 60.32209014892578
+ ],
+ 'descriptor': {'dimensions': [4, 5], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'inputC': {
+ 'data': [
+ 82.77201843261719, 91.38520812988281, 12.651897430419922,
+ 20.12200355529785, 68.51224517822266, 35.202415466308594,
+ 13.33466625213623, 50.78546905517578, 88.61195373535156,
+ 30.577470779418945, 69.47061920166016, 7.166217803955078,
+ 28.337108612060547, 90.69412231445312, 71.23025512695312
+ ],
+ 'descriptor': {'dimensions': [3, 5], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'gemm',
+ 'arguments': [
+ {'a': 'inputA'}, {'b': 'inputB'}, {
+ 'options': {
+ 'c': 'inputC',
+ 'alpha': -22.611149749186296,
+ 'beta': -11.68521964935509
+ }
+ }
+ ],
+ 'outputs': 'gemmOutput'
+ }],
+ 'expectedOutputs': {
+ 'gemmOutput': {
+ 'data': [
+ -185500.109375, -318207.84375, -330440.21875, -317888.59375,
+ -424920.125, -269314.6875, -331634.71875, -433048.5625,
+ -340977.71875, -413532.65625, -125550.484375, -209446.40625,
+ -207616.390625, -144580.21875, -246583.921875
+ ],
+ 'descriptor': {'dimensions': [3, 5], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'gemm both negative options.alpha and 3rd float32 input tensor (options.c)',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 82.98884582519531, 90.51641082763672, 59.638519287109375,
+ 36.271873474121094, 18.9648494720459, 43.89479446411133,
+ 98.89488220214844, 91.46013641357422, 50.51683807373047,
+ 40.45679473876953, 50.76741409301758, 9.336554527282715
+ ],
+ 'descriptor': {'dimensions': [3, 4], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 25.14739227294922, 66.6923828125, 63.29909896850586,
+ 10.629964828491211, 61.32737731933594, 0.0037256532814353704,
+ 16.4991455078125, 3.036668062210083, 93.14022064208984,
+ 70.08265686035156, 75.74880981445312, 96.60688018798828,
+ 99.10041809082031, 23.2437744140625, 86.11856842041016,
+ 42.90679168701172, 34.08055114746094, 87.37654876708984,
+ 92.34209442138672, 60.32209014892578
+ ],
+ 'descriptor': {'dimensions': [4, 5], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'inputC': {
+ 'data': [
+ -42.662681579589844, -93.6637954711914, -40.708492279052734,
+ -45.060977935791016, -87.90338897705078, -71.1618881225586,
+ -85.56422424316406, -10.049134254455566, -46.105403900146484,
+ -66.76168060302734, -25.392492294311523, -65.62987518310547,
+ -40.50155258178711, -81.5303955078125, -41.39629364013672
+ ],
+ 'descriptor': {'dimensions': [3, 5], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'gemm',
+ 'arguments': [
+ {'a': 'inputA'}, {'b': 'inputB'},
+ {'options': {'c': 'inputC', 'alpha': -22.611149749186296}}
+ ],
+ 'outputs': 'gemmOutput'
+ }],
+ 'expectedOutputs': {
+ 'gemmOutput': {
+ 'data': [
+ -184575.5625, -317233.65625, -330333.09375, -317698.5, -424207.4375,
+ -268974.5, -331564.4375, -432465.15625, -339988.375, -413242.09375,
+ -124764.09375, -209428.296875, -207325.765625, -143601.96875,
+ -245792.984375
+ ],
+ 'descriptor': {'dimensions': [3, 5], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ gemmTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getGemmPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/greater.https.any.js b/tests/wpt/tests/webnn/conformance_tests/greater.https.any.js
index 8d642413e29..e9a63b1682a 100644
--- a/tests/wpt/tests/webnn/conformance_tests/greater.https.any.js
+++ b/tests/wpt/tests/webnn/conformance_tests/greater.https.any.js
@@ -1,4 +1,4 @@
-// META: title=test WebNN API element-wise binary operations
+// META: title=test WebNN API element-wise greater operation
// META: global=window,dedicatedworker
// META: variant=?cpu
// META: variant=?gpu
@@ -8,6 +8,531 @@
'use strict';
-// https://webmachinelearning.github.io/webnn/#dom-mlgraphbuilder-greater
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-logical
+// Compare if the values of the first input tensor is greater, element-wise.
+//
+// MLOperand greater(MLOperand a, MLOperand b);
-runWebNNConformanceTests('greater', buildOperationWithTwoInputs);
+
+const getGreaterPrecisionTolerance = (graphResources) => {
+ const toleranceValueDict = {uint8: 0};
+ const expectedDataType =
+ getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs);
+ return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]};
+};
+
+const greaterTests = [
+ {
+ 'name': 'greater float32 0D scalar',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [3.6851015090942383],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [1.723199725151062],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'greater',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output':
+ {'data': [1], 'descriptor': {'dimensions': [], 'dataType': 'uint8'}}
+ }
+ }
+ },
+ {
+ 'name': 'greater float32 1D constant tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ -5.394711494445801, -7.189248561859131, -3.1081764698028564,
+ 4.977657318115234, 5.111654281616211, -1.5386580228805542,
+ 1.414366364479065, -0.9362112283706665, -6.029961585998535,
+ -3.0134198665618896, 0.170855313539505, 7.395327091217041,
+ 7.178691864013672, -4.826237678527832, -2.020440101623535,
+ -3.267888069152832, 8.944384574890137, -5.932100772857666,
+ 0.7069857120513916, 2.7764203548431396, 0.978833794593811,
+ -6.254901885986328, 4.409034729003906, -6.775286674499512
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'inputB': {
+ 'data': [
+ -6.155234336853027, -4.023341178894043, 5.9525980949401855,
+ 2.306623697280884, -2.7692291736602783, -0.9711201190948486,
+ 1.222206711769104, 4.590261459350586, 9.101232528686523,
+ -4.997007846832275, -4.80729341506958, 8.919360160827637,
+ 0.9005027413368225, -2.8414556980133057, -2.8280413150787354,
+ 8.47984504699707, -7.84067964553833, 9.213960647583008,
+ 4.982365131378174, -2.507319211959839, -4.518013954162598,
+ 8.351094245910645, -6.161073207855225, 0.7364829182624817
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'greater',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0,
+ 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'greater float32 1D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ -5.394711494445801, -7.189248561859131, -3.1081764698028564,
+ 4.977657318115234, 5.111654281616211, -1.5386580228805542,
+ 1.414366364479065, -0.9362112283706665, -6.029961585998535,
+ -3.0134198665618896, 0.170855313539505, 7.395327091217041,
+ 7.178691864013672, -4.826237678527832, -2.020440101623535,
+ -3.267888069152832, 8.944384574890137, -5.932100772857666,
+ 0.7069857120513916, 2.7764203548431396, 0.978833794593811,
+ -6.254901885986328, 4.409034729003906, -6.775286674499512
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -6.155234336853027, -4.023341178894043, 5.9525980949401855,
+ 2.306623697280884, -2.7692291736602783, -0.9711201190948486,
+ 1.222206711769104, 4.590261459350586, 9.101232528686523,
+ -4.997007846832275, -4.80729341506958, 8.919360160827637,
+ 0.9005027413368225, -2.8414556980133057, -2.8280413150787354,
+ 8.47984504699707, -7.84067964553833, 9.213960647583008,
+ 4.982365131378174, -2.507319211959839, -4.518013954162598,
+ 8.351094245910645, -6.161073207855225, 0.7364829182624817
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'greater',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0,
+ 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'greater float32 2D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ -5.394711494445801, -7.189248561859131, -3.1081764698028564,
+ 4.977657318115234, 5.111654281616211, -1.5386580228805542,
+ 1.414366364479065, -0.9362112283706665, -6.029961585998535,
+ -3.0134198665618896, 0.170855313539505, 7.395327091217041,
+ 7.178691864013672, -4.826237678527832, -2.020440101623535,
+ -3.267888069152832, 8.944384574890137, -5.932100772857666,
+ 0.7069857120513916, 2.7764203548431396, 0.978833794593811,
+ -6.254901885986328, 4.409034729003906, -6.775286674499512
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -6.155234336853027, -4.023341178894043, 5.9525980949401855,
+ 2.306623697280884, -2.7692291736602783, -0.9711201190948486,
+ 1.222206711769104, 4.590261459350586, 9.101232528686523,
+ -4.997007846832275, -4.80729341506958, 8.919360160827637,
+ 0.9005027413368225, -2.8414556980133057, -2.8280413150787354,
+ 8.47984504699707, -7.84067964553833, 9.213960647583008,
+ 4.982365131378174, -2.507319211959839, -4.518013954162598,
+ 8.351094245910645, -6.161073207855225, 0.7364829182624817
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'greater',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0,
+ 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'greater float32 3D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ -5.394711494445801, -7.189248561859131, -3.1081764698028564,
+ 4.977657318115234, 5.111654281616211, -1.5386580228805542,
+ 1.414366364479065, -0.9362112283706665, -6.029961585998535,
+ -3.0134198665618896, 0.170855313539505, 7.395327091217041,
+ 7.178691864013672, -4.826237678527832, -2.020440101623535,
+ -3.267888069152832, 8.944384574890137, -5.932100772857666,
+ 0.7069857120513916, 2.7764203548431396, 0.978833794593811,
+ -6.254901885986328, 4.409034729003906, -6.775286674499512
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -6.155234336853027, -4.023341178894043, 5.9525980949401855,
+ 2.306623697280884, -2.7692291736602783, -0.9711201190948486,
+ 1.222206711769104, 4.590261459350586, 9.101232528686523,
+ -4.997007846832275, -4.80729341506958, 8.919360160827637,
+ 0.9005027413368225, -2.8414556980133057, -2.8280413150787354,
+ 8.47984504699707, -7.84067964553833, 9.213960647583008,
+ 4.982365131378174, -2.507319211959839, -4.518013954162598,
+ 8.351094245910645, -6.161073207855225, 0.7364829182624817
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'greater',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0,
+ 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'greater float32 4D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ -5.394711494445801, -7.189248561859131, -3.1081764698028564,
+ 4.977657318115234, 5.111654281616211, -1.5386580228805542,
+ 1.414366364479065, -0.9362112283706665, -6.029961585998535,
+ -3.0134198665618896, 0.170855313539505, 7.395327091217041,
+ 7.178691864013672, -4.826237678527832, -2.020440101623535,
+ -3.267888069152832, 8.944384574890137, -5.932100772857666,
+ 0.7069857120513916, 2.7764203548431396, 0.978833794593811,
+ -6.254901885986328, 4.409034729003906, -6.775286674499512
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -6.155234336853027, -4.023341178894043, 5.9525980949401855,
+ 2.306623697280884, -2.7692291736602783, -0.9711201190948486,
+ 1.222206711769104, 4.590261459350586, 9.101232528686523,
+ -4.997007846832275, -4.80729341506958, 8.919360160827637,
+ 0.9005027413368225, -2.8414556980133057, -2.8280413150787354,
+ 8.47984504699707, -7.84067964553833, 9.213960647583008,
+ 4.982365131378174, -2.507319211959839, -4.518013954162598,
+ 8.351094245910645, -6.161073207855225, 0.7364829182624817
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'greater',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0,
+ 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'greater float32 5D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ -5.394711494445801, -7.189248561859131, -3.1081764698028564,
+ 4.977657318115234, 5.111654281616211, -1.5386580228805542,
+ 1.414366364479065, -0.9362112283706665, -6.029961585998535,
+ -3.0134198665618896, 0.170855313539505, 7.395327091217041,
+ 7.178691864013672, -4.826237678527832, -2.020440101623535,
+ -3.267888069152832, 8.944384574890137, -5.932100772857666,
+ 0.7069857120513916, 2.7764203548431396, 0.978833794593811,
+ -6.254901885986328, 4.409034729003906, -6.775286674499512
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 2, 3], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -6.155234336853027, -4.023341178894043, 5.9525980949401855,
+ 2.306623697280884, -2.7692291736602783, -0.9711201190948486,
+ 1.222206711769104, 4.590261459350586, 9.101232528686523,
+ -4.997007846832275, -4.80729341506958, 8.919360160827637,
+ 0.9005027413368225, -2.8414556980133057, -2.8280413150787354,
+ 8.47984504699707, -7.84067964553833, 9.213960647583008,
+ 4.982365131378174, -2.507319211959839, -4.518013954162598,
+ 8.351094245910645, -6.161073207855225, 0.7364829182624817
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'greater',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0,
+ 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 2, 3], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'greater float32 broadcast 0D to 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [6.2216410636901855],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -5.394711494445801, -7.189248561859131, -3.1081764698028564,
+ 4.977657318115234, 5.111654281616211, -1.5386580228805542,
+ 1.414366364479065, -0.9362112283706665, -6.029961585998535,
+ -3.0134198665618896, 0.170855313539505, 7.395327091217041,
+ 7.178691864013672, -4.826237678527832, -2.020440101623535,
+ -3.267888069152832, 8.944384574890137, -5.932100772857666,
+ 0.7069857120513916, 2.7764203548431396, 0.978833794593811,
+ -6.254901885986328, 4.409034729003906, -6.775286674499512
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'greater',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
+ 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'greater float32 broadcast 1D to 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [6.2216410636901855],
+ 'descriptor': {'dimensions': [1], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -5.394711494445801, -7.189248561859131, -3.1081764698028564,
+ 4.977657318115234, 5.111654281616211, -1.5386580228805542,
+ 1.414366364479065, -0.9362112283706665, -6.029961585998535,
+ -3.0134198665618896, 0.170855313539505, 7.395327091217041,
+ 7.178691864013672, -4.826237678527832, -2.020440101623535,
+ -3.267888069152832, 8.944384574890137, -5.932100772857666,
+ 0.7069857120513916, 2.7764203548431396, 0.978833794593811,
+ -6.254901885986328, 4.409034729003906, -6.775286674499512
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'greater',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
+ 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'greater float32 broadcast 2D to 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ -5.394711494445801, -7.189248561859131, -3.1081764698028564,
+ 4.977657318115234, 5.111654281616211, -1.5386580228805542,
+ 1.414366364479065, -0.9362112283706665, -6.029961585998535,
+ -3.0134198665618896, 0.170855313539505, 7.395327091217041,
+ 7.178691864013672, -4.826237678527832, -2.020440101623535,
+ -3.267888069152832, 8.944384574890137, -5.932100772857666,
+ 0.7069857120513916, 2.7764203548431396, 0.978833794593811,
+ -6.254901885986328, 4.409034729003906, -6.775286674499512
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -2.684664487838745, 6.170023441314697, 9.487744331359863,
+ -2.5556411743164062, -2.0436434745788574, 8.533930778503418
+ ],
+ 'descriptor': {'dimensions': [2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'greater',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0,
+ 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'greater float32 broadcast 3D to 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ -5.394711494445801, -7.189248561859131, -3.1081764698028564,
+ 4.977657318115234, 5.111654281616211, -1.5386580228805542,
+ 1.414366364479065, -0.9362112283706665, -6.029961585998535,
+ -3.0134198665618896, 0.170855313539505, 7.395327091217041,
+ 7.178691864013672, -4.826237678527832, -2.020440101623535,
+ -3.267888069152832, 8.944384574890137, -5.932100772857666,
+ 0.7069857120513916, 2.7764203548431396, 0.978833794593811,
+ -6.254901885986328, 4.409034729003906, -6.775286674499512
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -7.099076271057129, -7.781408309936523, 8.782817840576172,
+ -8.948624610900879
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'greater',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'greater float32 broadcast 4D to 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [6.2216410636901855],
+ 'descriptor': {'dimensions': [1, 1, 1, 1], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -5.394711494445801, -7.189248561859131, -3.1081764698028564,
+ 4.977657318115234, 5.111654281616211, -1.5386580228805542,
+ 1.414366364479065, -0.9362112283706665, -6.029961585998535,
+ -3.0134198665618896, 0.170855313539505, 7.395327091217041,
+ 7.178691864013672, -4.826237678527832, -2.020440101623535,
+ -3.267888069152832, 8.944384574890137, -5.932100772857666,
+ 0.7069857120513916, 2.7764203548431396, 0.978833794593811,
+ -6.254901885986328, 4.409034729003906, -6.775286674499512
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'greater',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
+ 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint8'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ greaterTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getGreaterPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/greater_or_equal.https.any.js b/tests/wpt/tests/webnn/conformance_tests/greater_or_equal.https.any.js
index 676116aff66..2f2f572eba3 100644
--- a/tests/wpt/tests/webnn/conformance_tests/greater_or_equal.https.any.js
+++ b/tests/wpt/tests/webnn/conformance_tests/greater_or_equal.https.any.js
@@ -1,4 +1,4 @@
-// META: title=test WebNN API element-wise binary operations
+// META: title=test WebNN API element-wise greaterOrEqual operation
// META: global=window,dedicatedworker
// META: variant=?cpu
// META: variant=?gpu
@@ -8,6 +8,532 @@
'use strict';
-// https://webmachinelearning.github.io/webnn/#dom-mlgraphbuilder-greaterorequal
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-logical
+// Compare if the values of the first input tensor is greater or equal,
+// element-wise.
+//
+// MLOperand greaterOrEqual(MLOperand a, MLOperand b);
-runWebNNConformanceTests('greaterOrEqual', buildOperationWithTwoInputs);
+
+const getGreaterOrEqualPrecisionTolerance = (graphResources) => {
+ const toleranceValueDict = {uint8: 0};
+ const expectedDataType =
+ getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs);
+ return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]};
+};
+
+const greaterOrEqualTests = [
+ {
+ 'name': 'greaterOrEqual float32 0D scalar',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [0.2829853594303131],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [6.156983375549316],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'greaterOrEqual',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output':
+ {'data': [0], 'descriptor': {'dimensions': [], 'dataType': 'uint8'}}
+ }
+ }
+ },
+ {
+ 'name': 'greaterOrEqual float32 1D constant tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ -8.049108505249023, -5.522611141204834, -2.097508192062378,
+ -7.455326557159424, -5.450376510620117, 9.802918434143066,
+ -3.604517936706543, 4.088084697723389, -5.068355083465576,
+ 1.5821936130523682, 5.675583839416504, -4.34159517288208,
+ 1.694622278213501, 2.926734685897827, -7.00007438659668,
+ -2.5270822048187256, 1.4437267780303955, 7.862768650054932,
+ 5.782289028167725, 1.8712012767791748, -0.5233999490737915,
+ 0.43433287739753723, 8.93836498260498, 1.6568396091461182
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'inputB': {
+ 'data': [
+ -7.028095245361328, 1.9109991788864136, 3.5765292644500732,
+ 1.7167965173721313, 2.846137523651123, -2.311763048171997,
+ -6.086130142211914, -3.437926769256592, -3.476442813873291,
+ -2.1946563720703125, 2.9962267875671387, -5.540947914123535,
+ 5.098470211029053, 6.775498867034912, 2.4505412578582764,
+ 5.210598945617676, -9.710094451904297, -2.4130282402038574,
+ 8.678308486938477, -9.449530601501465, 0.7702168822288513,
+ -1.5186073780059814, -9.153943061828613, -4.991735935211182
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'greaterOrEqual',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1,
+ 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'greaterOrEqual float32 1D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ -8.049108505249023, -5.522611141204834, -2.097508192062378,
+ -7.455326557159424, -5.450376510620117, 9.802918434143066,
+ -3.604517936706543, 4.088084697723389, -5.068355083465576,
+ 1.5821936130523682, 5.675583839416504, -4.34159517288208,
+ 1.694622278213501, 2.926734685897827, -7.00007438659668,
+ -2.5270822048187256, 1.4437267780303955, 7.862768650054932,
+ 5.782289028167725, 1.8712012767791748, -0.5233999490737915,
+ 0.43433287739753723, 8.93836498260498, 1.6568396091461182
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -7.028095245361328, 1.9109991788864136, 3.5765292644500732,
+ 1.7167965173721313, 2.846137523651123, -2.311763048171997,
+ -6.086130142211914, -3.437926769256592, -3.476442813873291,
+ -2.1946563720703125, 2.9962267875671387, -5.540947914123535,
+ 5.098470211029053, 6.775498867034912, 2.4505412578582764,
+ 5.210598945617676, -9.710094451904297, -2.4130282402038574,
+ 8.678308486938477, -9.449530601501465, 0.7702168822288513,
+ -1.5186073780059814, -9.153943061828613, -4.991735935211182
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'greaterOrEqual',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1,
+ 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'greaterOrEqual float32 2D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ -8.049108505249023, -5.522611141204834, -2.097508192062378,
+ -7.455326557159424, -5.450376510620117, 9.802918434143066,
+ -3.604517936706543, 4.088084697723389, -5.068355083465576,
+ 1.5821936130523682, 5.675583839416504, -4.34159517288208,
+ 1.694622278213501, 2.926734685897827, -7.00007438659668,
+ -2.5270822048187256, 1.4437267780303955, 7.862768650054932,
+ 5.782289028167725, 1.8712012767791748, -0.5233999490737915,
+ 0.43433287739753723, 8.93836498260498, 1.6568396091461182
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -7.028095245361328, 1.9109991788864136, 3.5765292644500732,
+ 1.7167965173721313, 2.846137523651123, -2.311763048171997,
+ -6.086130142211914, -3.437926769256592, -3.476442813873291,
+ -2.1946563720703125, 2.9962267875671387, -5.540947914123535,
+ 5.098470211029053, 6.775498867034912, 2.4505412578582764,
+ 5.210598945617676, -9.710094451904297, -2.4130282402038574,
+ 8.678308486938477, -9.449530601501465, 0.7702168822288513,
+ -1.5186073780059814, -9.153943061828613, -4.991735935211182
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'greaterOrEqual',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1,
+ 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'greaterOrEqual float32 3D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ -8.049108505249023, -5.522611141204834, -2.097508192062378,
+ -7.455326557159424, -5.450376510620117, 9.802918434143066,
+ -3.604517936706543, 4.088084697723389, -5.068355083465576,
+ 1.5821936130523682, 5.675583839416504, -4.34159517288208,
+ 1.694622278213501, 2.926734685897827, -7.00007438659668,
+ -2.5270822048187256, 1.4437267780303955, 7.862768650054932,
+ 5.782289028167725, 1.8712012767791748, -0.5233999490737915,
+ 0.43433287739753723, 8.93836498260498, 1.6568396091461182
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -7.028095245361328, 1.9109991788864136, 3.5765292644500732,
+ 1.7167965173721313, 2.846137523651123, -2.311763048171997,
+ -6.086130142211914, -3.437926769256592, -3.476442813873291,
+ -2.1946563720703125, 2.9962267875671387, -5.540947914123535,
+ 5.098470211029053, 6.775498867034912, 2.4505412578582764,
+ 5.210598945617676, -9.710094451904297, -2.4130282402038574,
+ 8.678308486938477, -9.449530601501465, 0.7702168822288513,
+ -1.5186073780059814, -9.153943061828613, -4.991735935211182
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'greaterOrEqual',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1,
+ 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'greaterOrEqual float32 4D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ -8.049108505249023, -5.522611141204834, -2.097508192062378,
+ -7.455326557159424, -5.450376510620117, 9.802918434143066,
+ -3.604517936706543, 4.088084697723389, -5.068355083465576,
+ 1.5821936130523682, 5.675583839416504, -4.34159517288208,
+ 1.694622278213501, 2.926734685897827, -7.00007438659668,
+ -2.5270822048187256, 1.4437267780303955, 7.862768650054932,
+ 5.782289028167725, 1.8712012767791748, -0.5233999490737915,
+ 0.43433287739753723, 8.93836498260498, 1.6568396091461182
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -7.028095245361328, 1.9109991788864136, 3.5765292644500732,
+ 1.7167965173721313, 2.846137523651123, -2.311763048171997,
+ -6.086130142211914, -3.437926769256592, -3.476442813873291,
+ -2.1946563720703125, 2.9962267875671387, -5.540947914123535,
+ 5.098470211029053, 6.775498867034912, 2.4505412578582764,
+ 5.210598945617676, -9.710094451904297, -2.4130282402038574,
+ 8.678308486938477, -9.449530601501465, 0.7702168822288513,
+ -1.5186073780059814, -9.153943061828613, -4.991735935211182
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'greaterOrEqual',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1,
+ 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'greaterOrEqual float32 5D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ -8.049108505249023, -5.522611141204834, -2.097508192062378,
+ -7.455326557159424, -5.450376510620117, 9.802918434143066,
+ -3.604517936706543, 4.088084697723389, -5.068355083465576,
+ 1.5821936130523682, 5.675583839416504, -4.34159517288208,
+ 1.694622278213501, 2.926734685897827, -7.00007438659668,
+ -2.5270822048187256, 1.4437267780303955, 7.862768650054932,
+ 5.782289028167725, 1.8712012767791748, -0.5233999490737915,
+ 0.43433287739753723, 8.93836498260498, 1.6568396091461182
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 2, 3], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -7.028095245361328, 1.9109991788864136, 3.5765292644500732,
+ 1.7167965173721313, 2.846137523651123, -2.311763048171997,
+ -6.086130142211914, -3.437926769256592, -3.476442813873291,
+ -2.1946563720703125, 2.9962267875671387, -5.540947914123535,
+ 5.098470211029053, 6.775498867034912, 2.4505412578582764,
+ 5.210598945617676, -9.710094451904297, -2.4130282402038574,
+ 8.678308486938477, -9.449530601501465, 0.7702168822288513,
+ -1.5186073780059814, -9.153943061828613, -4.991735935211182
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'greaterOrEqual',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1,
+ 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 2, 3], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'greaterOrEqual float32 broadcast 0D to 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [-1.0187573432922363],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -8.049108505249023, -5.522611141204834, -2.097508192062378,
+ -7.455326557159424, -5.450376510620117, 9.802918434143066,
+ -3.604517936706543, 4.088084697723389, -5.068355083465576,
+ 1.5821936130523682, 5.675583839416504, -4.34159517288208,
+ 1.694622278213501, 2.926734685897827, -7.00007438659668,
+ -2.5270822048187256, 1.4437267780303955, 7.862768650054932,
+ 5.782289028167725, 1.8712012767791748, -0.5233999490737915,
+ 0.43433287739753723, 8.93836498260498, 1.6568396091461182
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'greaterOrEqual',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1,
+ 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'greaterOrEqual float32 broadcast 1D to 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [-1.0187573432922363],
+ 'descriptor': {'dimensions': [1], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -8.049108505249023, -5.522611141204834, -2.097508192062378,
+ -7.455326557159424, -5.450376510620117, 9.802918434143066,
+ -3.604517936706543, 4.088084697723389, -5.068355083465576,
+ 1.5821936130523682, 5.675583839416504, -4.34159517288208,
+ 1.694622278213501, 2.926734685897827, -7.00007438659668,
+ -2.5270822048187256, 1.4437267780303955, 7.862768650054932,
+ 5.782289028167725, 1.8712012767791748, -0.5233999490737915,
+ 0.43433287739753723, 8.93836498260498, 1.6568396091461182
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'greaterOrEqual',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1,
+ 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'greaterOrEqual float32 broadcast 2D to 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ -8.049108505249023, -5.522611141204834, -2.097508192062378,
+ -7.455326557159424, -5.450376510620117, 9.802918434143066,
+ -3.604517936706543, 4.088084697723389, -5.068355083465576,
+ 1.5821936130523682, 5.675583839416504, -4.34159517288208,
+ 1.694622278213501, 2.926734685897827, -7.00007438659668,
+ -2.5270822048187256, 1.4437267780303955, 7.862768650054932,
+ 5.782289028167725, 1.8712012767791748, -0.5233999490737915,
+ 0.43433287739753723, 8.93836498260498, 1.6568396091461182
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -4.19451379776001, 3.8917839527130127, -3.5139973163604736,
+ 6.279316425323486, 0.001788170775398612, -0.7928582429885864
+ ],
+ 'descriptor': {'dimensions': [2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'greaterOrEqual',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0,
+ 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'greaterOrEqual float32 broadcast 3D to 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ -8.049108505249023, -5.522611141204834, -2.097508192062378,
+ -7.455326557159424, -5.450376510620117, 9.802918434143066,
+ -3.604517936706543, 4.088084697723389, -5.068355083465576,
+ 1.5821936130523682, 5.675583839416504, -4.34159517288208,
+ 1.694622278213501, 2.926734685897827, -7.00007438659668,
+ -2.5270822048187256, 1.4437267780303955, 7.862768650054932,
+ 5.782289028167725, 1.8712012767791748, -0.5233999490737915,
+ 0.43433287739753723, 8.93836498260498, 1.6568396091461182
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -3.2823047637939453, -1.3975636959075928, 0.49053606390953064,
+ -6.882648944854736
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'greaterOrEqual',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1,
+ 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'greaterOrEqual float32 broadcast 4D to 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [-1.0187573432922363],
+ 'descriptor': {'dimensions': [1, 1, 1, 1], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -8.049108505249023, -5.522611141204834, -2.097508192062378,
+ -7.455326557159424, -5.450376510620117, 9.802918434143066,
+ -3.604517936706543, 4.088084697723389, -5.068355083465576,
+ 1.5821936130523682, 5.675583839416504, -4.34159517288208,
+ 1.694622278213501, 2.926734685897827, -7.00007438659668,
+ -2.5270822048187256, 1.4437267780303955, 7.862768650054932,
+ 5.782289028167725, 1.8712012767791748, -0.5233999490737915,
+ 0.43433287739753723, 8.93836498260498, 1.6568396091461182
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'greaterOrEqual',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1,
+ 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint8'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ greaterOrEqualTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getGreaterOrEqualPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/hard_sigmoid.https.any.js b/tests/wpt/tests/webnn/conformance_tests/hard_sigmoid.https.any.js
index cfc726a57be..a5c4d3d6dee 100644
--- a/tests/wpt/tests/webnn/conformance_tests/hard_sigmoid.https.any.js
+++ b/tests/wpt/tests/webnn/conformance_tests/hard_sigmoid.https.any.js
@@ -8,6 +8,678 @@
'use strict';
-// https://webmachinelearning.github.io/webnn/#api-mlgraphbuilder-hard-sigmoid
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-hard-sigmoid
+// Calculate the non-smooth hard sigmoid function on the input tensor, used
+// instead of the sigmoid function for faster computation.
+//
+// dictionary MLHardSigmoidOptions {
+// double alpha = 0.2;
+// double beta = 0.5;
+// };
+//
+// MLOperand hardSigmoid(
+// MLOperand input, optional MLHardSigmoidOptions options = {});
-runWebNNConformanceTests('hardSigmoid', buildOperationWithSingleInput);
+
+const getHardSigmoidPrecisionTolerance = (graphResources) => {
+ const toleranceValueDict = {float32: 2, float16: 2};
+ const expectedDataType =
+ getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs);
+ return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]};
+};
+
+const hardSigmoidTests = [
+ {
+ 'name': 'hardSigmoid float32 positive 1D constant tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'hardSigmoidInput': {
+ 'data': [
+ 0.05907066911458969, 0.7076089382171631, 0.5228404998779297,
+ 0.4231015741825104, 0.6643692851066589, 0.950294017791748,
+ 0.10918906331062317, 0.0129771139472723, 0.4755297303199768,
+ 0.5322551727294922, 0.684307873249054, 0.4662107527256012,
+ 0.3048996329307556, 0.8025872707366943, 0.2485964000225067,
+ 0.663689911365509, 0.5547611713409424, 0.554258406162262,
+ 0.7311381697654724, 0.4880960285663605, 0.7766845226287842,
+ 0.8455570340156555, 0.555302083492279, 0.5603444576263428
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'hardSigmoid',
+ 'arguments': [{'input': 'hardSigmoidInput'}],
+ 'outputs': 'hardSigmoidOutput'
+ }],
+ 'expectedOutputs': {
+ 'hardSigmoidOutput': {
+ 'data': [
+ 0.5118141174316406, 0.6415218114852905, 0.6045681238174438,
+ 0.5846202969551086, 0.6328738331794739, 0.6900588274002075,
+ 0.5218378305435181, 0.5025954246520996, 0.5951059460639954,
+ 0.6064510345458984, 0.6368615627288818, 0.5932421684265137,
+ 0.5609799027442932, 0.6605174541473389, 0.5497192740440369,
+ 0.6327379941940308, 0.6109522581100464, 0.6108517050743103,
+ 0.6462276577949524, 0.5976191759109497, 0.6553369164466858,
+ 0.669111430644989, 0.6110604405403137, 0.6120688915252686
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'hardSigmoid float32 positive 1D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'hardSigmoidInput': {
+ 'data': [
+ 0.05907066911458969, 0.7076089382171631, 0.5228404998779297,
+ 0.4231015741825104, 0.6643692851066589, 0.950294017791748,
+ 0.10918906331062317, 0.0129771139472723, 0.4755297303199768,
+ 0.5322551727294922, 0.684307873249054, 0.4662107527256012,
+ 0.3048996329307556, 0.8025872707366943, 0.2485964000225067,
+ 0.663689911365509, 0.5547611713409424, 0.554258406162262,
+ 0.7311381697654724, 0.4880960285663605, 0.7766845226287842,
+ 0.8455570340156555, 0.555302083492279, 0.5603444576263428
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'hardSigmoid',
+ 'arguments': [{'input': 'hardSigmoidInput'}],
+ 'outputs': 'hardSigmoidOutput'
+ }],
+ 'expectedOutputs': {
+ 'hardSigmoidOutput': {
+ 'data': [
+ 0.5118141174316406, 0.6415218114852905, 0.6045681238174438,
+ 0.5846202969551086, 0.6328738331794739, 0.6900588274002075,
+ 0.5218378305435181, 0.5025954246520996, 0.5951059460639954,
+ 0.6064510345458984, 0.6368615627288818, 0.5932421684265137,
+ 0.5609799027442932, 0.6605174541473389, 0.5497192740440369,
+ 0.6327379941940308, 0.6109522581100464, 0.6108517050743103,
+ 0.6462276577949524, 0.5976191759109497, 0.6553369164466858,
+ 0.669111430644989, 0.6110604405403137, 0.6120688915252686
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'hardSigmoid float32 positive 2D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'hardSigmoidInput': {
+ 'data': [
+ 0.05907066911458969, 0.7076089382171631, 0.5228404998779297,
+ 0.4231015741825104, 0.6643692851066589, 0.950294017791748,
+ 0.10918906331062317, 0.0129771139472723, 0.4755297303199768,
+ 0.5322551727294922, 0.684307873249054, 0.4662107527256012,
+ 0.3048996329307556, 0.8025872707366943, 0.2485964000225067,
+ 0.663689911365509, 0.5547611713409424, 0.554258406162262,
+ 0.7311381697654724, 0.4880960285663605, 0.7766845226287842,
+ 0.8455570340156555, 0.555302083492279, 0.5603444576263428
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'hardSigmoid',
+ 'arguments': [{'input': 'hardSigmoidInput'}],
+ 'outputs': 'hardSigmoidOutput'
+ }],
+ 'expectedOutputs': {
+ 'hardSigmoidOutput': {
+ 'data': [
+ 0.5118141174316406, 0.6415218114852905, 0.6045681238174438,
+ 0.5846202969551086, 0.6328738331794739, 0.6900588274002075,
+ 0.5218378305435181, 0.5025954246520996, 0.5951059460639954,
+ 0.6064510345458984, 0.6368615627288818, 0.5932421684265137,
+ 0.5609799027442932, 0.6605174541473389, 0.5497192740440369,
+ 0.6327379941940308, 0.6109522581100464, 0.6108517050743103,
+ 0.6462276577949524, 0.5976191759109497, 0.6553369164466858,
+ 0.669111430644989, 0.6110604405403137, 0.6120688915252686
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'hardSigmoid float32 positive 3D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'hardSigmoidInput': {
+ 'data': [
+ 0.05907066911458969, 0.7076089382171631, 0.5228404998779297,
+ 0.4231015741825104, 0.6643692851066589, 0.950294017791748,
+ 0.10918906331062317, 0.0129771139472723, 0.4755297303199768,
+ 0.5322551727294922, 0.684307873249054, 0.4662107527256012,
+ 0.3048996329307556, 0.8025872707366943, 0.2485964000225067,
+ 0.663689911365509, 0.5547611713409424, 0.554258406162262,
+ 0.7311381697654724, 0.4880960285663605, 0.7766845226287842,
+ 0.8455570340156555, 0.555302083492279, 0.5603444576263428
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'hardSigmoid',
+ 'arguments': [{'input': 'hardSigmoidInput'}],
+ 'outputs': 'hardSigmoidOutput'
+ }],
+ 'expectedOutputs': {
+ 'hardSigmoidOutput': {
+ 'data': [
+ 0.5118141174316406, 0.6415218114852905, 0.6045681238174438,
+ 0.5846202969551086, 0.6328738331794739, 0.6900588274002075,
+ 0.5218378305435181, 0.5025954246520996, 0.5951059460639954,
+ 0.6064510345458984, 0.6368615627288818, 0.5932421684265137,
+ 0.5609799027442932, 0.6605174541473389, 0.5497192740440369,
+ 0.6327379941940308, 0.6109522581100464, 0.6108517050743103,
+ 0.6462276577949524, 0.5976191759109497, 0.6553369164466858,
+ 0.669111430644989, 0.6110604405403137, 0.6120688915252686
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'hardSigmoid float32 positive 4D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'hardSigmoidInput': {
+ 'data': [
+ 0.05907066911458969, 0.7076089382171631, 0.5228404998779297,
+ 0.4231015741825104, 0.6643692851066589, 0.950294017791748,
+ 0.10918906331062317, 0.0129771139472723, 0.4755297303199768,
+ 0.5322551727294922, 0.684307873249054, 0.4662107527256012,
+ 0.3048996329307556, 0.8025872707366943, 0.2485964000225067,
+ 0.663689911365509, 0.5547611713409424, 0.554258406162262,
+ 0.7311381697654724, 0.4880960285663605, 0.7766845226287842,
+ 0.8455570340156555, 0.555302083492279, 0.5603444576263428
+ ],
+ 'descriptor': {'dimensions': [1, 2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'hardSigmoid',
+ 'arguments': [{'input': 'hardSigmoidInput'}],
+ 'outputs': 'hardSigmoidOutput'
+ }],
+ 'expectedOutputs': {
+ 'hardSigmoidOutput': {
+ 'data': [
+ 0.5118141174316406, 0.6415218114852905, 0.6045681238174438,
+ 0.5846202969551086, 0.6328738331794739, 0.6900588274002075,
+ 0.5218378305435181, 0.5025954246520996, 0.5951059460639954,
+ 0.6064510345458984, 0.6368615627288818, 0.5932421684265137,
+ 0.5609799027442932, 0.6605174541473389, 0.5497192740440369,
+ 0.6327379941940308, 0.6109522581100464, 0.6108517050743103,
+ 0.6462276577949524, 0.5976191759109497, 0.6553369164466858,
+ 0.669111430644989, 0.6110604405403137, 0.6120688915252686
+ ],
+ 'descriptor': {'dimensions': [1, 2, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'hardSigmoid float32 positive 5D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'hardSigmoidInput': {
+ 'data': [
+ 0.05907066911458969, 0.7076089382171631, 0.5228404998779297,
+ 0.4231015741825104, 0.6643692851066589, 0.950294017791748,
+ 0.10918906331062317, 0.0129771139472723, 0.4755297303199768,
+ 0.5322551727294922, 0.684307873249054, 0.4662107527256012,
+ 0.3048996329307556, 0.8025872707366943, 0.2485964000225067,
+ 0.663689911365509, 0.5547611713409424, 0.554258406162262,
+ 0.7311381697654724, 0.4880960285663605, 0.7766845226287842,
+ 0.8455570340156555, 0.555302083492279, 0.5603444576263428
+ ],
+ 'descriptor': {'dimensions': [1, 2, 1, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'hardSigmoid',
+ 'arguments': [{'input': 'hardSigmoidInput'}],
+ 'outputs': 'hardSigmoidOutput'
+ }],
+ 'expectedOutputs': {
+ 'hardSigmoidOutput': {
+ 'data': [
+ 0.5118141174316406, 0.6415218114852905, 0.6045681238174438,
+ 0.5846202969551086, 0.6328738331794739, 0.6900588274002075,
+ 0.5218378305435181, 0.5025954246520996, 0.5951059460639954,
+ 0.6064510345458984, 0.6368615627288818, 0.5932421684265137,
+ 0.5609799027442932, 0.6605174541473389, 0.5497192740440369,
+ 0.6327379941940308, 0.6109522581100464, 0.6108517050743103,
+ 0.6462276577949524, 0.5976191759109497, 0.6553369164466858,
+ 0.669111430644989, 0.6110604405403137, 0.6120688915252686
+ ],
+ 'descriptor': {'dimensions': [1, 2, 1, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'hardSigmoid float32 positive 4D tensor specified positive options.alpha default options.beta',
+ 'graph': {
+ 'inputs': {
+ 'hardSigmoidInput': {
+ 'data': [
+ 0.05907066911458969, 0.7076089382171631, 0.5228404998779297,
+ 0.4231015741825104, 0.6643692851066589, 0.950294017791748,
+ 0.10918906331062317, 0.0129771139472723, 0.4755297303199768,
+ 0.5322551727294922, 0.684307873249054, 0.4662107527256012,
+ 0.3048996329307556, 0.8025872707366943, 0.2485964000225067,
+ 0.663689911365509, 0.5547611713409424, 0.554258406162262,
+ 0.7311381697654724, 0.4880960285663605, 0.7766845226287842,
+ 0.8455570340156555, 0.555302083492279, 0.5603444576263428
+ ],
+ 'descriptor': {'dimensions': [1, 2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'hardSigmoid',
+ 'arguments': [
+ {'input': 'hardSigmoidInput'},
+ {'options': {'alpha': 0.7854232544278235}}
+ ],
+ 'outputs': 'hardSigmoidOutput'
+ }],
+ 'expectedOutputs': {
+ 'hardSigmoidOutput': {
+ 'data': [
+ 0.546395480632782,
+ 1,
+ 0.9106510877609253,
+ 0.8323138356208801,
+ 1,
+ 1,
+ 0.5857596397399902,
+ 0.5101925134658813,
+ 0.8734921216964722,
+ 0.9180455803871155,
+ 1,
+ 0.8661727905273438,
+ 0.7394752502441406,
+ 1,
+ 0.6952533721923828,
+ 1,
+ 0.9357223510742188,
+ 0.9353274703025818,
+ 1,
+ 0.8833619952201843,
+ 1,
+ 1,
+ 0.936147153377533,
+ 0.9401075839996338
+ ],
+ 'descriptor': {'dimensions': [1, 2, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'hardSigmoid float32 negative 4D tensor specified negative options.alpha default options.beta',
+ 'graph': {
+ 'inputs': {
+ 'hardSigmoidInput': {
+ 'data': [
+ -0.05907066911458969, -0.7076089382171631, -0.5228404998779297,
+ -0.4231015741825104, -0.6643692851066589, -0.950294017791748,
+ -0.10918906331062317, -0.0129771139472723, -0.4755297303199768,
+ -0.5322551727294922, -0.684307873249054, -0.4662107527256012,
+ -0.3048996329307556, -0.8025872707366943, -0.2485964000225067,
+ -0.663689911365509, -0.5547611713409424, -0.554258406162262,
+ -0.7311381697654724, -0.4880960285663605, -0.7766845226287842,
+ -0.8455570340156555, -0.555302083492279, -0.5603444576263428
+ ],
+ 'descriptor': {'dimensions': [1, 2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'hardSigmoid',
+ 'arguments': [
+ {'input': 'hardSigmoidInput'},
+ {'options': {'alpha': -0.7854232544278235}}
+ ],
+ 'outputs': 'hardSigmoidOutput'
+ }],
+ 'expectedOutputs': {
+ 'hardSigmoidOutput': {
+ 'data': [
+ 0.546395480632782,
+ 1,
+ 0.9106510877609253,
+ 0.8323138356208801,
+ 1,
+ 1,
+ 0.5857596397399902,
+ 0.5101925134658813,
+ 0.8734921216964722,
+ 0.9180455803871155,
+ 1,
+ 0.8661727905273438,
+ 0.7394752502441406,
+ 1,
+ 0.6952533721923828,
+ 1,
+ 0.9357223510742188,
+ 0.9353274703025818,
+ 1,
+ 0.8833619952201843,
+ 1,
+ 1,
+ 0.936147153377533,
+ 0.9401075839996338
+ ],
+ 'descriptor': {'dimensions': [1, 2, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'hardSigmoid float32 positive 4D tensor specified positive options.beta default options.alpha',
+ 'graph': {
+ 'inputs': {
+ 'hardSigmoidInput': {
+ 'data': [
+ 0.05907066911458969, 0.7076089382171631, 0.5228404998779297,
+ 0.4231015741825104, 0.6643692851066589, 0.950294017791748,
+ 0.10918906331062317, 0.0129771139472723, 0.4755297303199768,
+ 0.5322551727294922, 0.684307873249054, 0.4662107527256012,
+ 0.3048996329307556, 0.8025872707366943, 0.2485964000225067,
+ 0.663689911365509, 0.5547611713409424, 0.554258406162262,
+ 0.7311381697654724, 0.4880960285663605, 0.7766845226287842,
+ 0.8455570340156555, 0.555302083492279, 0.5603444576263428
+ ],
+ 'descriptor': {'dimensions': [1, 2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'hardSigmoid',
+ 'arguments': [
+ {'input': 'hardSigmoidInput'},
+ {'options': {'beta': 0.4361860418530341}}
+ ],
+ 'outputs': 'hardSigmoidOutput'
+ }],
+ 'expectedOutputs': {
+ 'hardSigmoidOutput': {
+ 'data': [
+ 0.4480001926422119, 0.577707827091217, 0.5407541394233704,
+ 0.5208063721656799, 0.5690599083900452, 0.626244843006134,
+ 0.4580238461494446, 0.4387814700603485, 0.5312919616699219,
+ 0.5426371097564697, 0.5730476379394531, 0.5294281840324402,
+ 0.4971659779548645, 0.5967035293579102, 0.48590531945228577,
+ 0.5689240097999573, 0.5471382737159729, 0.5470377206802368,
+ 0.5824136734008789, 0.533805251121521, 0.5915229320526123,
+ 0.6052974462509155, 0.5472464561462402, 0.5482549667358398
+ ],
+ 'descriptor': {'dimensions': [1, 2, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'hardSigmoid float32 negative 4D tensor specified negative options.beta default options.alpha',
+ 'graph': {
+ 'inputs': {
+ 'hardSigmoidInput': {
+ 'data': [
+ -0.05907066911458969, -0.7076089382171631, -0.5228404998779297,
+ -0.4231015741825104, -0.6643692851066589, -0.950294017791748,
+ -0.10918906331062317, -0.0129771139472723, -0.4755297303199768,
+ -0.5322551727294922, -0.684307873249054, -0.4662107527256012,
+ -0.3048996329307556, -0.8025872707366943, -0.2485964000225067,
+ -0.663689911365509, -0.5547611713409424, -0.554258406162262,
+ -0.7311381697654724, -0.4880960285663605, -0.7766845226287842,
+ -0.8455570340156555, -0.555302083492279, -0.5603444576263428
+ ],
+ 'descriptor': {'dimensions': [1, 2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'hardSigmoid',
+ 'arguments': [
+ {'input': 'hardSigmoidInput'},
+ {'options': {'beta': -0.436186041853034}}
+ ],
+ 'outputs': 'hardSigmoidOutput'
+ }],
+ 'expectedOutputs': {
+ 'hardSigmoidOutput': {
+ 'data': [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ],
+ 'descriptor': {'dimensions': [1, 2, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'hardSigmoid float32 positive 4D tensor specified all options (positive options.alpha and positive options.beta)',
+ 'graph': {
+ 'inputs': {
+ 'hardSigmoidInput': {
+ 'data': [
+ 0.05907066911458969, 0.7076089382171631, 0.5228404998779297,
+ 0.4231015741825104, 0.6643692851066589, 0.950294017791748,
+ 0.10918906331062317, 0.0129771139472723, 0.4755297303199768,
+ 0.5322551727294922, 0.684307873249054, 0.4662107527256012,
+ 0.3048996329307556, 0.8025872707366943, 0.2485964000225067,
+ 0.663689911365509, 0.5547611713409424, 0.554258406162262,
+ 0.7311381697654724, 0.4880960285663605, 0.7766845226287842,
+ 0.8455570340156555, 0.555302083492279, 0.5603444576263428
+ ],
+ 'descriptor': {'dimensions': [1, 2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'hardSigmoid',
+ 'arguments': [
+ {'input': 'hardSigmoidInput'},
+ {'options': {'alpha': 0.7854232544278235, 'beta': 0.4361860418530341}}
+ ],
+ 'outputs': 'hardSigmoidOutput'
+ }],
+ 'expectedOutputs': {
+ 'hardSigmoidOutput': {
+ 'data': [
+ 0.4825815260410309,
+ 0.9919585585594177,
+ 0.8468371629714966,
+ 0.7684998512268066,
+ 0.9579971432685852,
+ 1,
+ 0.5219456553459167,
+ 0.44637855887413025,
+ 0.8096781373023987,
+ 0.8542316555976868,
+ 0.9736573696136475,
+ 0.8023588061332703,
+ 0.6756613254547119,
+ 1,
+ 0.6314394474029541,
+ 0.9574635624885559,
+ 0.8719083666801453,
+ 0.8715134859085083,
+ 1,
+ 0.8195480108261108,
+ 1,
+ 1,
+ 0.8723332285881042,
+ 0.8762935996055603
+ ],
+ 'descriptor': {'dimensions': [1, 2, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'hardSigmoid float32 positive 4D tensor specified all options (negative options.alpha and negative options.beta)',
+ 'graph': {
+ 'inputs': {
+ 'hardSigmoidInput': {
+ 'data': [
+ 0.05907066911458969, 0.7076089382171631, 0.5228404998779297,
+ 0.4231015741825104, 0.6643692851066589, 0.950294017791748,
+ 0.10918906331062317, 0.0129771139472723, 0.4755297303199768,
+ 0.5322551727294922, 0.684307873249054, 0.4662107527256012,
+ 0.3048996329307556, 0.8025872707366943, 0.2485964000225067,
+ 0.663689911365509, 0.5547611713409424, 0.554258406162262,
+ 0.7311381697654724, 0.4880960285663605, 0.7766845226287842,
+ 0.8455570340156555, 0.555302083492279, 0.5603444576263428
+ ],
+ 'descriptor': {'dimensions': [1, 2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'hardSigmoid',
+ 'arguments': [
+ {'input': 'hardSigmoidInput'}, {
+ 'options':
+ {'alpha': -0.7854232544278235, 'beta': -0.4361860418530341}
+ }
+ ],
+ 'outputs': 'hardSigmoidOutput'
+ }],
+ 'expectedOutputs': {
+ 'hardSigmoidOutput': {
+ 'data': [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ],
+ 'descriptor': {'dimensions': [1, 2, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'hardSigmoid float32 negative 4D tensor all options (positive options.alpha and negative options.beta)',
+ 'graph': {
+ 'inputs': {
+ 'hardSigmoidInput': {
+ 'data': [
+ -0.05907066911458969, -0.7076089382171631, -0.5228404998779297,
+ -0.4231015741825104, -0.6643692851066589, -0.950294017791748,
+ -0.10918906331062317, -0.0129771139472723, -0.4755297303199768,
+ -0.5322551727294922, -0.684307873249054, -0.4662107527256012,
+ -0.3048996329307556, -0.8025872707366943, -0.2485964000225067,
+ -0.663689911365509, -0.5547611713409424, -0.554258406162262,
+ -0.7311381697654724, -0.4880960285663605, -0.7766845226287842,
+ -0.8455570340156555, -0.555302083492279, -0.5603444576263428
+ ],
+ 'descriptor': {'dimensions': [1, 2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'hardSigmoid',
+ 'arguments': [
+ {'input': 'hardSigmoidInput'}, {
+ 'options':
+ {'alpha': 0.7854232544278235, 'beta': -0.4361860418530341}
+ }
+ ],
+ 'outputs': 'hardSigmoidOutput'
+ }],
+ 'expectedOutputs': {
+ 'hardSigmoidOutput': {
+ 'data': [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ],
+ 'descriptor': {'dimensions': [1, 2, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'hardSigmoid float32 negative 4D tensor specified all options (negative options.alpha and positive options.beta)',
+ 'graph': {
+ 'inputs': {
+ 'hardSigmoidInput': {
+ 'data': [
+ -0.05907066911458969, -0.7076089382171631, -0.5228404998779297,
+ -0.4231015741825104, -0.6643692851066589, -0.950294017791748,
+ -0.10918906331062317, -0.0129771139472723, -0.4755297303199768,
+ -0.5322551727294922, -0.684307873249054, -0.4662107527256012,
+ -0.3048996329307556, -0.8025872707366943, -0.2485964000225067,
+ -0.663689911365509, -0.5547611713409424, -0.554258406162262,
+ -0.7311381697654724, -0.4880960285663605, -0.7766845226287842,
+ -0.8455570340156555, -0.555302083492279, -0.5603444576263428
+ ],
+ 'descriptor': {'dimensions': [1, 2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'hardSigmoid',
+ 'arguments': [
+ {'input': 'hardSigmoidInput'}, {
+ 'options':
+ {'alpha': -0.7854232544278235, 'beta': 0.4361860418530341}
+ }
+ ],
+ 'outputs': 'hardSigmoidOutput'
+ }],
+ 'expectedOutputs': {
+ 'hardSigmoidOutput': {
+ 'data': [
+ 0.4825815260410309,
+ 0.9919585585594177,
+ 0.8468371629714966,
+ 0.7684998512268066,
+ 0.9579971432685852,
+ 1,
+ 0.5219456553459167,
+ 0.44637855887413025,
+ 0.8096781373023987,
+ 0.8542316555976868,
+ 0.9736573696136475,
+ 0.8023588061332703,
+ 0.6756613254547119,
+ 1,
+ 0.6314394474029541,
+ 0.9574635624885559,
+ 0.8719083666801453,
+ 0.8715134859085083,
+ 1,
+ 0.8195480108261108,
+ 1,
+ 1,
+ 0.8723332285881042,
+ 0.8762935996055603
+ ],
+ 'descriptor': {'dimensions': [1, 2, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ hardSigmoidTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getHardSigmoidPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/hard_swish.https.any.js b/tests/wpt/tests/webnn/conformance_tests/hard_swish.https.any.js
index 229e1b56108..5459e5662e4 100644
--- a/tests/wpt/tests/webnn/conformance_tests/hard_swish.https.any.js
+++ b/tests/wpt/tests/webnn/conformance_tests/hard_swish.https.any.js
@@ -8,6 +8,365 @@
'use strict';
-// https://webmachinelearning.github.io/webnn/#api-mlgraphbuilder-hard-swish
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-hard-swish
+// Computes the nonlinear function y = x * max(0, min(6, (x + 3))) / 6 that is
+// introduced by MobileNetV3 on the input tensor element-wise.
+//
+// MLOperand hardSwish(MLOperand input);
-runWebNNConformanceTests('hardSwish', buildOperationWithSingleInput);
+
+const getHardSwishPrecisionTolerance = (graphResources) => {
+ const toleranceValueDict = {float32: 4, float16: 4};
+ const expectedDataType =
+ getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs);
+ return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]};
+};
+
+const hardSwishTests = [
+ {
+ 'name': 'hardSwish float32 1D constant tensor',
+ 'graph': {
+ 'inputs': {
+ 'hardSwishInput': {
+ 'data': [
+ 0.7341583371162415, 9.11885929107666, 3.545238494873047,
+ 2.621943950653076, -6.445507526397705, -1.6835596561431885,
+ 5.52318000793457, -5.958856105804443, -9.169190406799316,
+ 6.420943737030029, -3.2930312156677246, 1.041016697883606,
+ -7.2463226318359375, -0.9472730755805969, -5.7783522605896,
+ 3.1852290630340576, -7.261817932128906, 4.174602508544922,
+ 3.7802627086639404, -6.071240425109863, -9.909919738769531,
+ -7.744259357452393, -8.286120414733887, 8.083491325378418
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'hardSwish',
+ 'arguments': [{'input': 'hardSwishInput'}],
+ 'outputs': 'hardSwishOutput'
+ }],
+ 'expectedOutputs': {
+ 'hardSwishOutput': {
+ 'data': [
+ 0.4569105803966522,
+ 9.11885929107666,
+ 3.545238494873047,
+ 2.4567370414733887,
+ 0,
+ -0.3693843185901642,
+ 5.52318000793457,
+ 0,
+ 0,
+ 6.420943737030029,
+ 0,
+ 0.7011276483535767,
+ 0,
+ -0.3240821659564972,
+ 0,
+ 3.1852290630340576,
+ 0,
+ 4.174602508544922,
+ 3.7802627086639404,
+ 0,
+ 0,
+ 0,
+ 0,
+ 8.083491325378418
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'hardSwish float32 1D tensor',
+ 'graph': {
+ 'inputs': {
+ 'hardSwishInput': {
+ 'data': [
+ 0.7341583371162415, 9.11885929107666, 3.545238494873047,
+ 2.621943950653076, -6.445507526397705, -1.6835596561431885,
+ 5.52318000793457, -5.958856105804443, -9.169190406799316,
+ 6.420943737030029, -3.2930312156677246, 1.041016697883606,
+ -7.2463226318359375, -0.9472730755805969, -5.7783522605896,
+ 3.1852290630340576, -7.261817932128906, 4.174602508544922,
+ 3.7802627086639404, -6.071240425109863, -9.909919738769531,
+ -7.744259357452393, -8.286120414733887, 8.083491325378418
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'hardSwish',
+ 'arguments': [{'input': 'hardSwishInput'}],
+ 'outputs': 'hardSwishOutput'
+ }],
+ 'expectedOutputs': {
+ 'hardSwishOutput': {
+ 'data': [
+ 0.4569105803966522,
+ 9.11885929107666,
+ 3.545238494873047,
+ 2.4567370414733887,
+ 0,
+ -0.3693843185901642,
+ 5.52318000793457,
+ 0,
+ 0,
+ 6.420943737030029,
+ 0,
+ 0.7011276483535767,
+ 0,
+ -0.3240821659564972,
+ 0,
+ 3.1852290630340576,
+ 0,
+ 4.174602508544922,
+ 3.7802627086639404,
+ 0,
+ 0,
+ 0,
+ 0,
+ 8.083491325378418
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'hardSwish float32 2D tensor',
+ 'graph': {
+ 'inputs': {
+ 'hardSwishInput': {
+ 'data': [
+ 0.7341583371162415, 9.11885929107666, 3.545238494873047,
+ 2.621943950653076, -6.445507526397705, -1.6835596561431885,
+ 5.52318000793457, -5.958856105804443, -9.169190406799316,
+ 6.420943737030029, -3.2930312156677246, 1.041016697883606,
+ -7.2463226318359375, -0.9472730755805969, -5.7783522605896,
+ 3.1852290630340576, -7.261817932128906, 4.174602508544922,
+ 3.7802627086639404, -6.071240425109863, -9.909919738769531,
+ -7.744259357452393, -8.286120414733887, 8.083491325378418
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'hardSwish',
+ 'arguments': [{'input': 'hardSwishInput'}],
+ 'outputs': 'hardSwishOutput'
+ }],
+ 'expectedOutputs': {
+ 'hardSwishOutput': {
+ 'data': [
+ 0.4569105803966522,
+ 9.11885929107666,
+ 3.545238494873047,
+ 2.4567370414733887,
+ 0,
+ -0.3693843185901642,
+ 5.52318000793457,
+ 0,
+ 0,
+ 6.420943737030029,
+ 0,
+ 0.7011276483535767,
+ 0,
+ -0.3240821659564972,
+ 0,
+ 3.1852290630340576,
+ 0,
+ 4.174602508544922,
+ 3.7802627086639404,
+ 0,
+ 0,
+ 0,
+ 0,
+ 8.083491325378418
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'hardSwish float32 3D tensor',
+ 'graph': {
+ 'inputs': {
+ 'hardSwishInput': {
+ 'data': [
+ 0.7341583371162415, 9.11885929107666, 3.545238494873047,
+ 2.621943950653076, -6.445507526397705, -1.6835596561431885,
+ 5.52318000793457, -5.958856105804443, -9.169190406799316,
+ 6.420943737030029, -3.2930312156677246, 1.041016697883606,
+ -7.2463226318359375, -0.9472730755805969, -5.7783522605896,
+ 3.1852290630340576, -7.261817932128906, 4.174602508544922,
+ 3.7802627086639404, -6.071240425109863, -9.909919738769531,
+ -7.744259357452393, -8.286120414733887, 8.083491325378418
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'hardSwish',
+ 'arguments': [{'input': 'hardSwishInput'}],
+ 'outputs': 'hardSwishOutput'
+ }],
+ 'expectedOutputs': {
+ 'hardSwishOutput': {
+ 'data': [
+ 0.4569105803966522,
+ 9.11885929107666,
+ 3.545238494873047,
+ 2.4567370414733887,
+ 0,
+ -0.3693843185901642,
+ 5.52318000793457,
+ 0,
+ 0,
+ 6.420943737030029,
+ 0,
+ 0.7011276483535767,
+ 0,
+ -0.3240821659564972,
+ 0,
+ 3.1852290630340576,
+ 0,
+ 4.174602508544922,
+ 3.7802627086639404,
+ 0,
+ 0,
+ 0,
+ 0,
+ 8.083491325378418
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'hardSwish float32 4D tensor',
+ 'graph': {
+ 'inputs': {
+ 'hardSwishInput': {
+ 'data': [
+ 0.7341583371162415, 9.11885929107666, 3.545238494873047,
+ 2.621943950653076, -6.445507526397705, -1.6835596561431885,
+ 5.52318000793457, -5.958856105804443, -9.169190406799316,
+ 6.420943737030029, -3.2930312156677246, 1.041016697883606,
+ -7.2463226318359375, -0.9472730755805969, -5.7783522605896,
+ 3.1852290630340576, -7.261817932128906, 4.174602508544922,
+ 3.7802627086639404, -6.071240425109863, -9.909919738769531,
+ -7.744259357452393, -8.286120414733887, 8.083491325378418
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'hardSwish',
+ 'arguments': [{'input': 'hardSwishInput'}],
+ 'outputs': 'hardSwishOutput'
+ }],
+ 'expectedOutputs': {
+ 'hardSwishOutput': {
+ 'data': [
+ 0.4569105803966522,
+ 9.11885929107666,
+ 3.545238494873047,
+ 2.4567370414733887,
+ 0,
+ -0.3693843185901642,
+ 5.52318000793457,
+ 0,
+ 0,
+ 6.420943737030029,
+ 0,
+ 0.7011276483535767,
+ 0,
+ -0.3240821659564972,
+ 0,
+ 3.1852290630340576,
+ 0,
+ 4.174602508544922,
+ 3.7802627086639404,
+ 0,
+ 0,
+ 0,
+ 0,
+ 8.083491325378418
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'hardSwish float32 5D tensor',
+ 'graph': {
+ 'inputs': {
+ 'hardSwishInput': {
+ 'data': [
+ 0.7341583371162415, 9.11885929107666, 3.545238494873047,
+ 2.621943950653076, -6.445507526397705, -1.6835596561431885,
+ 5.52318000793457, -5.958856105804443, -9.169190406799316,
+ 6.420943737030029, -3.2930312156677246, 1.041016697883606,
+ -7.2463226318359375, -0.9472730755805969, -5.7783522605896,
+ 3.1852290630340576, -7.261817932128906, 4.174602508544922,
+ 3.7802627086639404, -6.071240425109863, -9.909919738769531,
+ -7.744259357452393, -8.286120414733887, 8.083491325378418
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 1, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'hardSwish',
+ 'arguments': [{'input': 'hardSwishInput'}],
+ 'outputs': 'hardSwishOutput'
+ }],
+ 'expectedOutputs': {
+ 'hardSwishOutput': {
+ 'data': [
+ 0.4569105803966522,
+ 9.11885929107666,
+ 3.545238494873047,
+ 2.4567370414733887,
+ 0,
+ -0.3693843185901642,
+ 5.52318000793457,
+ 0,
+ 0,
+ 6.420943737030029,
+ 0,
+ 0.7011276483535767,
+ 0,
+ -0.3240821659564972,
+ 0,
+ 3.1852290630340576,
+ 0,
+ 4.174602508544922,
+ 3.7802627086639404,
+ 0,
+ 0,
+ 0,
+ 0,
+ 8.083491325378418
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 1, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ hardSwishTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getHardSwishPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/identity.https.any.js b/tests/wpt/tests/webnn/conformance_tests/identity.https.any.js
new file mode 100644
index 00000000000..ca4239145b1
--- /dev/null
+++ b/tests/wpt/tests/webnn/conformance_tests/identity.https.any.js
@@ -0,0 +1,297 @@
+// META: title=test WebNN API element-wise identity operation
+// META: global=window,dedicatedworker
+// META: variant=?cpu
+// META: variant=?gpu
+// META: variant=?npu
+// META: script=../resources/utils.js
+// META: timeout=long
+
+'use strict';
+
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-unary
+// Copy the value of the input tensor to the output tensor, element-wise.
+//
+// MLOperand identity(MLOperand input);
+
+
+const getIdentityPrecisionTolerance = (graphResources) => {
+ const toleranceValueDict = {float32: 0, float16: 0};
+ const expectedDataType =
+ getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs);
+ return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]};
+};
+
+const identityTests = [
+ {
+ 'name': 'identity float32 0D scalar',
+ 'graph': {
+ 'inputs': {
+ 'identityInput': {
+ 'data': [-4.273642539978027],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'identity',
+ 'arguments': [{'input': 'identityInput'}],
+ 'outputs': 'identityOutput'
+ }],
+ 'expectedOutputs': {
+ 'identityOutput': {
+ 'data': [-4.273642539978027],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'identity float32 1D constant tensor',
+ 'graph': {
+ 'inputs': {
+ 'identityInput': {
+ 'data': [
+ 0.377551406621933, -0.8890897631645203, 9.965806007385254,
+ 7.964576244354248, -4.207889080047607, -3.7487030029296875,
+ -2.5114004611968994, 5.777673244476318, -4.472823619842529,
+ -8.405767440795898, -3.8579723834991455, 6.036187648773193,
+ 9.076417922973633, 7.101912021636963, 1.4166420698165894,
+ -5.644308567047119, -2.5986480712890625, -7.264847278594971,
+ -9.782458305358887, 5.496699810028076, -9.967339515686035,
+ -6.901016712188721, -2.8501904010772705, 3.279616355895996
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'identity',
+ 'arguments': [{'input': 'identityInput'}],
+ 'outputs': 'identityOutput'
+ }],
+ 'expectedOutputs': {
+ 'identityOutput': {
+ 'data': [
+ 0.377551406621933, -0.8890897631645203, 9.965806007385254,
+ 7.964576244354248, -4.207889080047607, -3.7487030029296875,
+ -2.5114004611968994, 5.777673244476318, -4.472823619842529,
+ -8.405767440795898, -3.8579723834991455, 6.036187648773193,
+ 9.076417922973633, 7.101912021636963, 1.4166420698165894,
+ -5.644308567047119, -2.5986480712890625, -7.264847278594971,
+ -9.782458305358887, 5.496699810028076, -9.967339515686035,
+ -6.901016712188721, -2.8501904010772705, 3.279616355895996
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'identity float32 1D tensor',
+ 'graph': {
+ 'inputs': {
+ 'identityInput': {
+ 'data': [
+ 0.377551406621933, -0.8890897631645203, 9.965806007385254,
+ 7.964576244354248, -4.207889080047607, -3.7487030029296875,
+ -2.5114004611968994, 5.777673244476318, -4.472823619842529,
+ -8.405767440795898, -3.8579723834991455, 6.036187648773193,
+ 9.076417922973633, 7.101912021636963, 1.4166420698165894,
+ -5.644308567047119, -2.5986480712890625, -7.264847278594971,
+ -9.782458305358887, 5.496699810028076, -9.967339515686035,
+ -6.901016712188721, -2.8501904010772705, 3.279616355895996
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'identity',
+ 'arguments': [{'input': 'identityInput'}],
+ 'outputs': 'identityOutput'
+ }],
+ 'expectedOutputs': {
+ 'identityOutput': {
+ 'data': [
+ 0.377551406621933, -0.8890897631645203, 9.965806007385254,
+ 7.964576244354248, -4.207889080047607, -3.7487030029296875,
+ -2.5114004611968994, 5.777673244476318, -4.472823619842529,
+ -8.405767440795898, -3.8579723834991455, 6.036187648773193,
+ 9.076417922973633, 7.101912021636963, 1.4166420698165894,
+ -5.644308567047119, -2.5986480712890625, -7.264847278594971,
+ -9.782458305358887, 5.496699810028076, -9.967339515686035,
+ -6.901016712188721, -2.8501904010772705, 3.279616355895996
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'identity float32 2D tensor',
+ 'graph': {
+ 'inputs': {
+ 'identityInput': {
+ 'data': [
+ 0.377551406621933, -0.8890897631645203, 9.965806007385254,
+ 7.964576244354248, -4.207889080047607, -3.7487030029296875,
+ -2.5114004611968994, 5.777673244476318, -4.472823619842529,
+ -8.405767440795898, -3.8579723834991455, 6.036187648773193,
+ 9.076417922973633, 7.101912021636963, 1.4166420698165894,
+ -5.644308567047119, -2.5986480712890625, -7.264847278594971,
+ -9.782458305358887, 5.496699810028076, -9.967339515686035,
+ -6.901016712188721, -2.8501904010772705, 3.279616355895996
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'identity',
+ 'arguments': [{'input': 'identityInput'}],
+ 'outputs': 'identityOutput'
+ }],
+ 'expectedOutputs': {
+ 'identityOutput': {
+ 'data': [
+ 0.377551406621933, -0.8890897631645203, 9.965806007385254,
+ 7.964576244354248, -4.207889080047607, -3.7487030029296875,
+ -2.5114004611968994, 5.777673244476318, -4.472823619842529,
+ -8.405767440795898, -3.8579723834991455, 6.036187648773193,
+ 9.076417922973633, 7.101912021636963, 1.4166420698165894,
+ -5.644308567047119, -2.5986480712890625, -7.264847278594971,
+ -9.782458305358887, 5.496699810028076, -9.967339515686035,
+ -6.901016712188721, -2.8501904010772705, 3.279616355895996
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'identity float32 3D tensor',
+ 'graph': {
+ 'inputs': {
+ 'identityInput': {
+ 'data': [
+ 0.377551406621933, -0.8890897631645203, 9.965806007385254,
+ 7.964576244354248, -4.207889080047607, -3.7487030029296875,
+ -2.5114004611968994, 5.777673244476318, -4.472823619842529,
+ -8.405767440795898, -3.8579723834991455, 6.036187648773193,
+ 9.076417922973633, 7.101912021636963, 1.4166420698165894,
+ -5.644308567047119, -2.5986480712890625, -7.264847278594971,
+ -9.782458305358887, 5.496699810028076, -9.967339515686035,
+ -6.901016712188721, -2.8501904010772705, 3.279616355895996
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'identity',
+ 'arguments': [{'input': 'identityInput'}],
+ 'outputs': 'identityOutput'
+ }],
+ 'expectedOutputs': {
+ 'identityOutput': {
+ 'data': [
+ 0.377551406621933, -0.8890897631645203, 9.965806007385254,
+ 7.964576244354248, -4.207889080047607, -3.7487030029296875,
+ -2.5114004611968994, 5.777673244476318, -4.472823619842529,
+ -8.405767440795898, -3.8579723834991455, 6.036187648773193,
+ 9.076417922973633, 7.101912021636963, 1.4166420698165894,
+ -5.644308567047119, -2.5986480712890625, -7.264847278594971,
+ -9.782458305358887, 5.496699810028076, -9.967339515686035,
+ -6.901016712188721, -2.8501904010772705, 3.279616355895996
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'identity float32 4D tensor',
+ 'graph': {
+ 'inputs': {
+ 'identityInput': {
+ 'data': [
+ 0.377551406621933, -0.8890897631645203, 9.965806007385254,
+ 7.964576244354248, -4.207889080047607, -3.7487030029296875,
+ -2.5114004611968994, 5.777673244476318, -4.472823619842529,
+ -8.405767440795898, -3.8579723834991455, 6.036187648773193,
+ 9.076417922973633, 7.101912021636963, 1.4166420698165894,
+ -5.644308567047119, -2.5986480712890625, -7.264847278594971,
+ -9.782458305358887, 5.496699810028076, -9.967339515686035,
+ -6.901016712188721, -2.8501904010772705, 3.279616355895996
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'identity',
+ 'arguments': [{'input': 'identityInput'}],
+ 'outputs': 'identityOutput'
+ }],
+ 'expectedOutputs': {
+ 'identityOutput': {
+ 'data': [
+ 0.377551406621933, -0.8890897631645203, 9.965806007385254,
+ 7.964576244354248, -4.207889080047607, -3.7487030029296875,
+ -2.5114004611968994, 5.777673244476318, -4.472823619842529,
+ -8.405767440795898, -3.8579723834991455, 6.036187648773193,
+ 9.076417922973633, 7.101912021636963, 1.4166420698165894,
+ -5.644308567047119, -2.5986480712890625, -7.264847278594971,
+ -9.782458305358887, 5.496699810028076, -9.967339515686035,
+ -6.901016712188721, -2.8501904010772705, 3.279616355895996
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'identity float32 5D tensor',
+ 'graph': {
+ 'inputs': {
+ 'identityInput': {
+ 'data': [
+ 0.377551406621933, -0.8890897631645203, 9.965806007385254,
+ 7.964576244354248, -4.207889080047607, -3.7487030029296875,
+ -2.5114004611968994, 5.777673244476318, -4.472823619842529,
+ -8.405767440795898, -3.8579723834991455, 6.036187648773193,
+ 9.076417922973633, 7.101912021636963, 1.4166420698165894,
+ -5.644308567047119, -2.5986480712890625, -7.264847278594971,
+ -9.782458305358887, 5.496699810028076, -9.967339515686035,
+ -6.901016712188721, -2.8501904010772705, 3.279616355895996
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 1, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'identity',
+ 'arguments': [{'input': 'identityInput'}],
+ 'outputs': 'identityOutput'
+ }],
+ 'expectedOutputs': {
+ 'identityOutput': {
+ 'data': [
+ 0.377551406621933, -0.8890897631645203, 9.965806007385254,
+ 7.964576244354248, -4.207889080047607, -3.7487030029296875,
+ -2.5114004611968994, 5.777673244476318, -4.472823619842529,
+ -8.405767440795898, -3.8579723834991455, 6.036187648773193,
+ 9.076417922973633, 7.101912021636963, 1.4166420698165894,
+ -5.644308567047119, -2.5986480712890625, -7.264847278594971,
+ -9.782458305358887, 5.496699810028076, -9.967339515686035,
+ -6.901016712188721, -2.8501904010772705, 3.279616355895996
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 1, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ identityTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getIdentityPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/instance_normalization.https.any.js b/tests/wpt/tests/webnn/conformance_tests/instance_normalization.https.any.js
index 4c5d33bbf70..5790b20d8e8 100644
--- a/tests/wpt/tests/webnn/conformance_tests/instance_normalization.https.any.js
+++ b/tests/wpt/tests/webnn/conformance_tests/instance_normalization.https.any.js
@@ -8,6 +8,357 @@
'use strict';
-// https://webmachinelearning.github.io/webnn/#api-mlgraphbuilder-instancenorm
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-instancenorm
+// Normalize the input using Instance-Normalization.
+//
+// dictionary MLInstanceNormalizationOptions {
+// MLOperand scale;
+// MLOperand bias;
+// double epsilon = 1e-5;
+// MLInputOperandLayout layout = "nchw";
+// };
+//
+// MLOperand instanceNormalization(
+// MLOperand input, optional MLInstanceNormalizationOptions options = {});
-runWebNNConformanceTests('instanceNormalization', buildLayerNorm);
+
+const getInstanceNormPrecisionTolerance = (graphResources) => {
+ // according to
+ // https://github.com/web-platform-tests/wpt/pull/43891#discussion_r1457026316
+ const toleranceValueDict = {float32: 840, float16: 8400};
+ const expectedDataType =
+ getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs);
+ return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]};
+};
+
+const instanceNormTests = [
+ {
+ 'name': 'instanceNormalization float32 4D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'instanceNormInput': {
+ 'data': [
+ -97.949951171875, 29.44037628173828, -73.92131042480469,
+ -38.11185836791992, 41.33772659301758, -59.77853012084961,
+ -74.66901397705078, -68.16508483886719, 35.82481384277344,
+ -6.948329448699951, 54.42462158203125, 47.53074645996094,
+ 66.93562316894531, 76.74034881591797, 5.6758809089660645,
+ 25.68659210205078, 37.37651062011719, 56.252689361572266,
+ -16.574905395507812, 42.949893951416016, 73.8739242553711,
+ -99.00035095214844, -33.11322784423828, -17.380685806274414
+ ],
+ 'descriptor': {'dimensions': [2, 3, 2, 2], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'instanceNormalization',
+ 'arguments': [{'input': 'instanceNormInput'}],
+ 'outputs': 'instanceNormOutput'
+ }],
+ 'expectedOutputs': {
+ 'instanceNormOutput': {
+ 'data': [
+ -1.0995290279388428, 1.5525832176208496, -0.5992818474769592,
+ 0.14622758328914642, 1.72129487991333, -0.41020718216896057,
+ -0.7240943908691406, -0.586993396282196, 0.13073226809501648,
+ -1.6633318662643433, 0.9108771681785583, 0.6217224597930908,
+ 0.7947131395339966, 1.1309205293655396, -1.3059037923812866,
+ -0.6197298169136047, 0.2657700479030609, 0.9459608793258667,
+ -1.6783342361450195, 0.46660327911376953, 1.5037200450897217,
+ -1.2981476783752441, -0.2302791178226471, 0.024706769734621048
+ ],
+ 'descriptor': {'dimensions': [2, 3, 2, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'instanceNormalization float32 4D tensor options.scale',
+ 'graph': {
+ 'inputs': {
+ 'instanceNormInput': {
+ 'data': [
+ -97.949951171875, 29.44037628173828, -73.92131042480469,
+ -38.11185836791992, 41.33772659301758, -59.77853012084961,
+ -74.66901397705078, -68.16508483886719, 35.82481384277344,
+ -6.948329448699951, 54.42462158203125, 47.53074645996094,
+ 66.93562316894531, 76.74034881591797, 5.6758809089660645,
+ 25.68659210205078, 37.37651062011719, 56.252689361572266,
+ -16.574905395507812, 42.949893951416016, 73.8739242553711,
+ -99.00035095214844, -33.11322784423828, -17.380685806274414
+ ],
+ 'descriptor': {'dimensions': [2, 3, 2, 2], 'dataType': 'float32'}
+ },
+ 'instanceNormScale': {
+ 'data': [-94.42772674560547, 66.69620513916016, -98.56572723388672],
+ 'descriptor': {'dimensions': [3], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'instanceNormalization',
+ 'arguments': [
+ {'input': 'instanceNormInput'},
+ {'options': {'scale': 'instanceNormScale'}}
+ ],
+ 'outputs': 'instanceNormOutput'
+ }],
+ 'expectedOutputs': {
+ 'instanceNormOutput': {
+ 'data': [
+ 103.8260269165039, -146.60690307617188, 56.58882141113281,
+ -13.807937622070312, 114.80384063720703, -27.359262466430664,
+ -48.29434585571289, -39.150230407714844, -12.885721206665039,
+ 163.94752502441406, -89.78126525878906, -61.2805290222168,
+ -75.04296112060547, -106.79025268554688, 123.31352996826172,
+ 58.51968002319336, 17.725852966308594, 63.09199905395508,
+ -111.93852233886719, 31.120668411254883, -148.2152557373047,
+ 127.95286560058594, 22.697628021240234, -2.4352407455444336
+ ],
+ 'descriptor': {'dimensions': [2, 3, 2, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'instanceNormalization float32 4D tensor options.bias',
+ 'graph': {
+ 'inputs': {
+ 'instanceNormInput': {
+ 'data': [
+ -97.949951171875, 29.44037628173828, -73.92131042480469,
+ -38.11185836791992, 41.33772659301758, -59.77853012084961,
+ -74.66901397705078, -68.16508483886719, 35.82481384277344,
+ -6.948329448699951, 54.42462158203125, 47.53074645996094,
+ 66.93562316894531, 76.74034881591797, 5.6758809089660645,
+ 25.68659210205078, 37.37651062011719, 56.252689361572266,
+ -16.574905395507812, 42.949893951416016, 73.8739242553711,
+ -99.00035095214844, -33.11322784423828, -17.380685806274414
+ ],
+ 'descriptor': {'dimensions': [2, 3, 2, 2], 'dataType': 'float32'}
+ },
+ 'instanceNormBias': {
+ 'data': [-33.048641204833984, 4.511423587799072, -37.93617248535156],
+ 'descriptor': {'dimensions': [3], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'instanceNormalization',
+ 'arguments': [
+ {'input': 'instanceNormInput'},
+ {'options': {'bias': 'instanceNormBias'}}
+ ],
+ 'outputs': 'instanceNormOutput'
+ }],
+ 'expectedOutputs': {
+ 'instanceNormOutput': {
+ 'data': [
+ -34.148170471191406, -31.496057510375977, -33.64792251586914,
+ -32.90241241455078, 6.232718467712402, 4.1012163162231445,
+ 3.7873291969299316, 3.9244301319122314, -37.80543899536133,
+ -39.59950256347656, -37.02529525756836, -37.314449310302734,
+ -32.253929138183594, -31.917720794677734, -34.35454559326172,
+ -33.66836929321289, 4.777193546295166, 5.4573845863342285,
+ 2.8330893516540527, 4.978026866912842, -36.43245315551758,
+ -39.23432159423828, -38.16645050048828, -37.91146469116211
+ ],
+ 'descriptor': {'dimensions': [2, 3, 2, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'instanceNormalization float32 4D tensor options.epsilon',
+ 'graph': {
+ 'inputs': {
+ 'instanceNormInput': {
+ 'data': [
+ -97.949951171875, 29.44037628173828, -73.92131042480469,
+ -38.11185836791992, 41.33772659301758, -59.77853012084961,
+ -74.66901397705078, -68.16508483886719, 35.82481384277344,
+ -6.948329448699951, 54.42462158203125, 47.53074645996094,
+ 66.93562316894531, 76.74034881591797, 5.6758809089660645,
+ 25.68659210205078, 37.37651062011719, 56.252689361572266,
+ -16.574905395507812, 42.949893951416016, 73.8739242553711,
+ -99.00035095214844, -33.11322784423828, -17.380685806274414
+ ],
+ 'descriptor': {'dimensions': [2, 3, 2, 2], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'instanceNormalization',
+ 'arguments': [
+ {'input': 'instanceNormInput'}, {'options': {'epsilon': 0.000001}}
+ ],
+ 'outputs': 'instanceNormOutput'
+ }],
+ 'expectedOutputs': {
+ 'instanceNormOutput': {
+ 'data': [
+ -1.0995290279388428, 1.5525832176208496, -0.5992818474769592,
+ 0.14622758328914642, 1.72129487991333, -0.41020718216896057,
+ -0.7240943908691406, -0.586993396282196, 0.13073226809501648,
+ -1.6633318662643433, 0.9108771681785583, 0.6217224597930908,
+ 0.7947131991386414, 1.1309205293655396, -1.3059037923812866,
+ -0.6197298765182495, 0.2657700479030609, 0.9459608793258667,
+ -1.6783342361450195, 0.46660327911376953, 1.5037200450897217,
+ -1.2981476783752441, -0.2302791178226471, 0.024706769734621048
+ ],
+ 'descriptor': {'dimensions': [2, 3, 2, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'instanceNormalization float32 4D tensor explict options.layout=\'nchw\'',
+ 'graph': {
+ 'inputs': {
+ 'instanceNormInput': {
+ 'data': [
+ -97.949951171875, 29.44037628173828, -73.92131042480469,
+ -38.11185836791992, 41.33772659301758, -59.77853012084961,
+ -74.66901397705078, -68.16508483886719, 35.82481384277344,
+ -6.948329448699951, 54.42462158203125, 47.53074645996094,
+ 66.93562316894531, 76.74034881591797, 5.6758809089660645,
+ 25.68659210205078, 37.37651062011719, 56.252689361572266,
+ -16.574905395507812, 42.949893951416016, 73.8739242553711,
+ -99.00035095214844, -33.11322784423828, -17.380685806274414
+ ],
+ 'descriptor': {'dimensions': [2, 3, 2, 2], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'instanceNormalization',
+ 'arguments':
+ [{'input': 'instanceNormInput'}, {'options': {'layout': 'nchw'}}],
+ 'outputs': 'instanceNormOutput'
+ }],
+ 'expectedOutputs': {
+ 'instanceNormOutput': {
+ 'data': [
+ -1.0995290279388428, 1.5525832176208496, -0.5992818474769592,
+ 0.14622758328914642, 1.72129487991333, -0.41020718216896057,
+ -0.7240943908691406, -0.586993396282196, 0.13073226809501648,
+ -1.6633318662643433, 0.9108771681785583, 0.6217224597930908,
+ 0.7947131395339966, 1.1309205293655396, -1.3059037923812866,
+ -0.6197298169136047, 0.2657700479030609, 0.9459608793258667,
+ -1.6783342361450195, 0.46660327911376953, 1.5037200450897217,
+ -1.2981476783752441, -0.2302791178226471, 0.024706769734621048
+ ],
+ 'descriptor': {'dimensions': [2, 3, 2, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'instanceNormalization float32 4D tensor options.layout=\'nhwc\'',
+ 'graph': {
+ 'inputs': {
+ 'instanceNormInput': {
+ 'data': [
+ -97.949951171875, 41.33772659301758, 35.82481384277344,
+ 29.44037628173828, -59.77853012084961, -6.948329448699951,
+ -73.92131042480469, -74.66901397705078, 54.42462158203125,
+ -38.11185836791992, -68.16508483886719, 47.53074645996094,
+ 66.93562316894531, 37.37651062011719, 73.8739242553711,
+ 76.74034881591797, 56.252689361572266, -99.00035095214844,
+ 5.6758809089660645, -16.574905395507812, -33.11322784423828,
+ 25.68659210205078, 42.949893951416016, -17.380685806274414
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'instanceNormalization',
+ 'arguments':
+ [{'input': 'instanceNormInput'}, {'options': {'layout': 'nhwc'}}],
+ 'outputs': 'instanceNormOutput'
+ }],
+ 'expectedOutputs': {
+ 'instanceNormOutput': {
+ 'data': [
+ -1.0995290279388428, 1.72129487991333, 0.13073226809501648,
+ 1.5525832176208496, -0.41020718216896057, -1.6633318662643433,
+ -0.5992818474769592, -0.7240943908691406, 0.9108771681785583,
+ 0.14622758328914642, -0.586993396282196, 0.6217224597930908,
+ 0.7947131395339966, 0.2657700479030609, 1.5037200450897217,
+ 1.1309205293655396, 0.9459608793258667, -1.2981476783752441,
+ -1.3059037923812866, -1.6783342361450195, -0.2302791178226471,
+ -0.6197298169136047, 0.46660327911376953, 0.024706769734621048
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'instanceNormalization float32 4D tensor all options',
+ 'graph': {
+ 'inputs': {
+ 'instanceNormInput': {
+ 'data': [
+ -97.949951171875, 41.33772659301758, 35.82481384277344,
+ 29.44037628173828, -59.77853012084961, -6.948329448699951,
+ -73.92131042480469, -74.66901397705078, 54.42462158203125,
+ -38.11185836791992, -68.16508483886719, 47.53074645996094,
+ 66.93562316894531, 37.37651062011719, 73.8739242553711,
+ 76.74034881591797, 56.252689361572266, -99.00035095214844,
+ 5.6758809089660645, -16.574905395507812, -33.11322784423828,
+ 25.68659210205078, 42.949893951416016, -17.380685806274414
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ },
+ 'instanceNormScale': {
+ 'data': [-94.42772674560547, 66.69620513916016, -98.56572723388672],
+ 'descriptor': {'dimensions': [3], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'instanceNormBias': {
+ 'data': [-33.048641204833984, 4.511423587799072, -37.93617248535156],
+ 'descriptor': {'dimensions': [3], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'instanceNormalization',
+ 'arguments': [
+ {'input': 'instanceNormInput'}, {
+ 'options': {
+ 'scale': 'instanceNormScale',
+ 'bias': 'instanceNormBias',
+ 'epsilon': 0.000001,
+ 'layout': 'nhwc'
+ }
+ }
+ ],
+ 'outputs': 'instanceNormOutput'
+ }],
+ 'expectedOutputs': {
+ 'instanceNormOutput': {
+ 'data': [
+ 70.77738189697266, 119.31526184082031, -50.821895599365234,
+ -179.65554809570312, -22.847837448120117, 126.01134490966797,
+ 23.540178298950195, -43.782920837402344, -127.71744537353516,
+ -46.8565788269043, -34.6388053894043, -99.2166976928711,
+ -108.09159851074219, 22.237276077270508, -186.15142822265625,
+ -139.83889770507812, 67.60342407226562, 90.01669311523438,
+ 90.26488494873047, -107.4271011352539, -15.238543510437012,
+ 25.471038818359375, 35.6320915222168, -40.37141418457031
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ instanceNormTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getInstanceNormPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/layer_normalization.https.any.js b/tests/wpt/tests/webnn/conformance_tests/layer_normalization.https.any.js
index f5bfb8c2cc8..84b90ca2779 100644
--- a/tests/wpt/tests/webnn/conformance_tests/layer_normalization.https.any.js
+++ b/tests/wpt/tests/webnn/conformance_tests/layer_normalization.https.any.js
@@ -8,6 +8,552 @@
'use strict';
-// https://webmachinelearning.github.io/webnn/#api-mlgraphbuilder-layernorm
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-layernorm
+// Normalize the input using Layer-Normalization.
+//
+// dictionary MLLayerNormalizationOptions {
+// MLOperand scale;
+// MLOperand bias;
+// sequence<[EnforceRange] unsigned long> axes;
+// double epsilon = 1e-5;
+// };
+//
+// MLOperand layerNormalization(
+// MLOperand input, optional MLLayerNormalizationOptions options = {});
-runWebNNConformanceTests('layerNormalization', buildLayerNorm);
+
+const getLayerNormPrecisionTolerance = (graphResources) => {
+ const toleranceValueDict = {float32: 1 / 1024, float16: 1 / 512};
+ const expectedDataType =
+ getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs);
+ return {metricType: 'ATOL', value: toleranceValueDict[expectedDataType]};
+};
+
+const layerNormTests = [
+ {
+ 'name': 'layerNormalization float32 2D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'layerNormInput': {
+ 'data': [
+ -35.51446533203125, 54.735408782958984, 19.659019470214844,
+ -15.882678031921387, 65.48657989501953, 25.818492889404297,
+ 97.55302429199219, -8.057161331176758, 62.9412956237793,
+ -48.91555404663086, 91.90644073486328, 46.67098617553711,
+ -74.85331726074219, 30.126361846923828, 26.13089370727539,
+ 59.30270767211914, -60.361995697021484, 18.55615234375,
+ -88.03730773925781, -26.5667724609375, 70.81292724609375,
+ 9.105611801147461, 56.66746139526367, 21.78444480895996
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'layerNormalization',
+ 'arguments': [{'input': 'layerNormInput'}],
+ 'outputs': 'layerNormOutput'
+ }],
+ 'expectedOutputs': {
+ 'layerNormOutput': {
+ 'data': [
+ -1.5257738828659058, 0.997844934463501, 0.017018765211105347,
+ -0.9768186211585999, 1.2984753847122192, 0.18925349414348602,
+ 1.0812907218933105, -0.915019690990448, 0.4270379841327667,
+ -1.6873507499694824, 0.9745554327964783, 0.11948632448911667,
+ -1.5086692571640015, 0.6123882532119751, 0.5316619873046875,
+ 1.2018805742263794, -1.215880036354065, 0.378618448972702,
+ -1.795186161994934, -0.6376377940177917, 1.1961140632629395,
+ 0.034106940031051636, 0.9297415614128113, 0.2728613615036011
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'layerNormalization float32 3D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'layerNormInput': {
+ 'data': [
+ -35.51446533203125, 54.735408782958984, 19.659019470214844,
+ -15.882678031921387, 65.48657989501953, 25.818492889404297,
+ 97.55302429199219, -8.057161331176758, 62.9412956237793,
+ -48.91555404663086, 91.90644073486328, 46.67098617553711,
+ -74.85331726074219, 30.126361846923828, 26.13089370727539,
+ 59.30270767211914, -60.361995697021484, 18.55615234375,
+ -88.03730773925781, -26.5667724609375, 70.81292724609375,
+ 9.105611801147461, 56.66746139526367, 21.78444480895996
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'layerNormalization',
+ 'arguments': [{'input': 'layerNormInput'}],
+ 'outputs': 'layerNormOutput'
+ }],
+ 'expectedOutputs': {
+ 'layerNormOutput': {
+ 'data': [
+ -1.4057259559631348, 0.5396455526351929, -0.21643976867198944,
+ -0.9825550317764282, 0.7713912725448608, -0.08366990834474564,
+ 1.46259605884552, -0.8138729333877563, 0.7165266871452332,
+ -1.6945916414260864, 1.3408818244934082, 0.3658137917518616,
+ -1.5234858989715576, 0.5162702202796936, 0.43863821029663086,
+ 1.0831668376922607, -1.2419193983078003, 0.29146093130111694,
+ -1.7796510457992554, -0.5852779150009155, 1.3068104982376099,
+ 0.10783683508634567, 1.0319640636444092, 0.35418668389320374
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'layerNormalization float32 4D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'layerNormInput': {
+ 'data': [
+ -35.51446533203125, 54.735408782958984, 19.659019470214844,
+ -15.882678031921387, 65.48657989501953, 25.818492889404297,
+ 97.55302429199219, -8.057161331176758, 62.9412956237793,
+ -48.91555404663086, 91.90644073486328, 46.67098617553711,
+ -74.85331726074219, 30.126361846923828, 26.13089370727539,
+ 59.30270767211914, -60.361995697021484, 18.55615234375,
+ -88.03730773925781, -26.5667724609375, 70.81292724609375,
+ 9.105611801147461, 56.66746139526367, 21.78444480895996
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'layerNormalization',
+ 'arguments': [{'input': 'layerNormInput'}],
+ 'outputs': 'layerNormOutput'
+ }],
+ 'expectedOutputs': {
+ 'layerNormOutput': {
+ 'data': [
+ -1.4057259559631348, 0.5396455526351929, -0.21643976867198944,
+ -0.9825550317764282, 0.7713912725448608, -0.08366990834474564,
+ 1.46259605884552, -0.8138729333877563, 0.7165266871452332,
+ -1.6945916414260864, 1.3408818244934082, 0.3658137917518616,
+ -1.5234858989715576, 0.5162702202796936, 0.43863821029663086,
+ 1.0831668376922607, -1.2419193983078003, 0.29146093130111694,
+ -1.7796510457992554, -0.5852779150009155, 1.3068104982376099,
+ 0.10783683508634567, 1.0319640636444092, 0.35418668389320374
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'layerNormalization float32 5D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'layerNormInput': {
+ 'data': [
+ -35.51446533203125, 54.735408782958984, 19.659019470214844,
+ -15.882678031921387, 65.48657989501953, 25.818492889404297,
+ 97.55302429199219, -8.057161331176758, 62.9412956237793,
+ -48.91555404663086, 91.90644073486328, 46.67098617553711,
+ -74.85331726074219, 30.126361846923828, 26.13089370727539,
+ 59.30270767211914, -60.361995697021484, 18.55615234375,
+ -88.03730773925781, -26.5667724609375, 70.81292724609375,
+ 9.105611801147461, 56.66746139526367, 21.78444480895996
+ ],
+ 'descriptor': {'dimensions': [2, 1, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'layerNormalization',
+ 'arguments': [{'input': 'layerNormInput'}],
+ 'outputs': 'layerNormOutput'
+ }],
+ 'expectedOutputs': {
+ 'layerNormOutput': {
+ 'data': [
+ -1.4057259559631348, 0.5396455526351929, -0.21643976867198944,
+ -0.9825550317764282, 0.7713912725448608, -0.08366990834474564,
+ 1.46259605884552, -0.8138729333877563, 0.7165266871452332,
+ -1.6945916414260864, 1.3408818244934082, 0.3658137917518616,
+ -1.5234858989715576, 0.5162702202796936, 0.43863821029663086,
+ 1.0831668376922607, -1.2419193983078003, 0.29146093130111694,
+ -1.7796510457992554, -0.5852779150009155, 1.3068104982376099,
+ 0.10783683508634567, 1.0319640636444092, 0.35418668389320374
+ ],
+ 'descriptor': {'dimensions': [2, 1, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'layerNormalization float32 4D tensor options.scale',
+ 'graph': {
+ 'inputs': {
+ 'layerNormInput': {
+ 'data': [
+ -35.51446533203125, 54.735408782958984, 19.659019470214844,
+ -15.882678031921387, 65.48657989501953, 25.818492889404297,
+ 97.55302429199219, -8.057161331176758, 62.9412956237793,
+ -48.91555404663086, 91.90644073486328, 46.67098617553711,
+ -74.85331726074219, 30.126361846923828, 26.13089370727539,
+ 59.30270767211914, -60.361995697021484, 18.55615234375,
+ -88.03730773925781, -26.5667724609375, 70.81292724609375,
+ 9.105611801147461, 56.66746139526367, 21.78444480895996
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 3], 'dataType': 'float32'}
+ },
+ 'layerNormScale': {
+ 'data': [
+ -3.8228423595428467, -5.452458381652832, 0.6776165962219238,
+ -4.027037620544434, -3.7771618366241455, -9.327335357666016,
+ 7.1816911697387695, 1.5054303407669067, 3.120894193649292,
+ 0.5214731693267822, 2.6719748973846436, -3.571370840072632
+ ],
+ 'descriptor': {'dimensions': [1, 4, 3], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'layerNormalization',
+ 'arguments': [
+ {'input': 'layerNormInput'}, {'options': {'scale': 'layerNormScale'}}
+ ],
+ 'outputs': 'layerNormOutput'
+ }],
+ 'expectedOutputs': {
+ 'layerNormOutput': {
+ 'data': [
+ 5.373868465423584, -2.942394971847534, -0.14666318893432617,
+ 3.9567861557006836, -2.9136698246002197, 0.780417263507843,
+ 10.503913879394531, -1.225229024887085, 2.236203908920288,
+ -0.8836840987205505, 3.5828025341033936, -1.3064566850662231,
+ 5.824046611785889, -2.814941883087158, 0.29722854495048523,
+ -4.3619537353515625, 4.6909308433532715, -2.7185537815093994,
+ -12.780903816223145, -0.8810951709747314, 4.0784173011779785,
+ 0.05623401328921318, 2.7573819160461426, -1.2649319171905518
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'layerNormalization float32 4D tensor options.bias',
+ 'graph': {
+ 'inputs': {
+ 'layerNormInput': {
+ 'data': [
+ -35.51446533203125, 54.735408782958984, 19.659019470214844,
+ -15.882678031921387, 65.48657989501953, 25.818492889404297,
+ 97.55302429199219, -8.057161331176758, 62.9412956237793,
+ -48.91555404663086, 91.90644073486328, 46.67098617553711,
+ -74.85331726074219, 30.126361846923828, 26.13089370727539,
+ 59.30270767211914, -60.361995697021484, 18.55615234375,
+ -88.03730773925781, -26.5667724609375, 70.81292724609375,
+ 9.105611801147461, 56.66746139526367, 21.78444480895996
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 3], 'dataType': 'float32'}
+ },
+ 'layerNormBias': {
+ 'data': [
+ 7.862982749938965, -3.6603047847747803, -6.955524444580078,
+ -6.397322654724121, 3.268958568572998, -2.7498080730438232,
+ -4.080942153930664, -7.137991905212402, 8.465653419494629,
+ 2.762545108795166, 0.8230442404747009, -3.827561378479004
+ ],
+ 'descriptor': {'dimensions': [1, 4, 3], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'layerNormalization',
+ 'arguments': [
+ {'input': 'layerNormInput'}, {'options': {'bias': 'layerNormBias'}}
+ ],
+ 'outputs': 'layerNormOutput'
+ }],
+ 'expectedOutputs': {
+ 'layerNormOutput': {
+ 'data': [
+ 6.45725679397583, -3.120659112930298, -7.171964168548584,
+ -7.37987756729126, 4.040349960327148, -2.8334779739379883,
+ -2.6183459758758545, -7.951864719390869, 9.182180404663086,
+ 1.0679534673690796, 2.163926124572754, -3.461747646331787,
+ 6.339496612548828, -3.1440346240997314, -6.516886234283447,
+ -5.314155578613281, 2.027039051055908, -2.4583470821380615,
+ -5.860593318939209, -7.723269939422607, 9.77246379852295,
+ 2.8703818321228027, 1.8550082445144653, -3.473374605178833
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'layerNormalization float32 4D tensor options.axes=[2]',
+ 'graph': {
+ 'inputs': {
+ 'layerNormInput': {
+ 'data': [
+ -35.51446533203125, 54.735408782958984, 19.659019470214844,
+ -15.882678031921387, 65.48657989501953, 25.818492889404297,
+ 97.55302429199219, -8.057161331176758, 62.9412956237793,
+ -48.91555404663086, 91.90644073486328, 46.67098617553711,
+ -74.85331726074219, 30.126361846923828, 26.13089370727539,
+ 59.30270767211914, -60.361995697021484, 18.55615234375,
+ -88.03730773925781, -26.5667724609375, 70.81292724609375,
+ 9.105611801147461, 56.66746139526367, 21.78444480895996
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'layerNormalization',
+ 'arguments': [{'input': 'layerNormInput'}, {'options': {'axes': [2]}}],
+ 'outputs': 'layerNormOutput'
+ }],
+ 'expectedOutputs': {
+ 'layerNormOutput': {
+ 'data': [
+ -0.6012066006660461, 0.10132180899381638, -1.112992763519287,
+ -0.26228588819503784, 0.3943416476249695, -0.7543209195137024,
+ 1.6960537433624268, -1.6100702285766602, 1.4073745012283325,
+ -0.8325613141059875, 1.114406704902649, 0.45993921160697937,
+ -0.8445013165473938, 0.6554933190345764, -0.3856155574321747,
+ 1.3668763637542725, -1.3111618757247925, -0.7422532439231873,
+ -1.0618212223052979, -0.5766634941101074, 1.7181260585784912,
+ 0.539446234703064, 1.2323321104049683, -0.5902572274208069
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'layerNormalization float32 4D tensor options.epsilon',
+ 'graph': {
+ 'inputs': {
+ 'layerNormInput': {
+ 'data': [
+ -35.51446533203125, 54.735408782958984, 19.659019470214844,
+ -15.882678031921387, 65.48657989501953, 25.818492889404297,
+ 97.55302429199219, -8.057161331176758, 62.9412956237793,
+ -48.91555404663086, 91.90644073486328, 46.67098617553711,
+ -74.85331726074219, 30.126361846923828, 26.13089370727539,
+ 59.30270767211914, -60.361995697021484, 18.55615234375,
+ -88.03730773925781, -26.5667724609375, 70.81292724609375,
+ 9.105611801147461, 56.66746139526367, 21.78444480895996
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'layerNormalization',
+ 'arguments':
+ [{'input': 'layerNormInput'}, {'options': {'epsilon': 0.0001}}],
+ 'outputs': 'layerNormOutput'
+ }],
+ 'expectedOutputs': {
+ 'layerNormOutput': {
+ 'data': [
+ -1.4057258367538452, 0.5396455526351929, -0.21643976867198944,
+ -0.9825550317764282, 0.7713912725448608, -0.08366990089416504,
+ 1.46259605884552, -0.8138729333877563, 0.7165266871452332,
+ -1.6945916414260864, 1.3408817052841187, 0.3658137619495392,
+ -1.5234858989715576, 0.5162702202796936, 0.43863821029663086,
+ 1.0831668376922607, -1.2419193983078003, 0.29146093130111694,
+ -1.7796509265899658, -0.5852779150009155, 1.3068104982376099,
+ 0.10783682763576508, 1.0319639444351196, 0.35418668389320374
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'layerNormalization float32 4D tensor options.scale and options.axes=[0, 2]',
+ 'graph': {
+ 'inputs': {
+ 'layerNormInput': {
+ 'data': [
+ -35.51446533203125, 54.735408782958984, 19.659019470214844,
+ -15.882678031921387, 65.48657989501953, 25.818492889404297,
+ 97.55302429199219, -8.057161331176758, 62.9412956237793,
+ -48.91555404663086, 91.90644073486328, 46.67098617553711,
+ -74.85331726074219, 30.126361846923828, 26.13089370727539,
+ 59.30270767211914, -60.361995697021484, 18.55615234375,
+ -88.03730773925781, -26.5667724609375, 70.81292724609375,
+ 9.105611801147461, 56.66746139526367, 21.78444480895996
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 3], 'dataType': 'float32'}
+ },
+ 'layerNormScale': {
+ 'data': [
+ 8.72657299041748, -5.388210773468018, -6.811323165893555,
+ 4.707905292510986, -4.705780029296875, -5.143046855926514,
+ -1.1115549802780151, 5.250569820404053
+ ],
+ 'descriptor': {'dimensions': [2, 4], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'layerNormalization',
+ 'arguments': [
+ {'input': 'layerNormInput'},
+ {'options': {'scale': 'layerNormScale', 'axes': [0, 2]}}
+ ],
+ 'outputs': 'layerNormOutput'
+ }],
+ 'expectedOutputs': {
+ 'layerNormOutput': {
+ 'data': [
+ -3.3744184970855713, 5.22746467590332, -7.580371856689453,
+ 0.3324689269065857, -4.414334774017334, 2.973374605178833,
+ -12.369945526123047, 4.680946350097656, -9.247408866882324,
+ -2.8648624420166016, 6.40486478805542, 2.4516794681549072,
+ 4.884079456329346, -0.44672244787216187, 2.521172285079956,
+ -6.083702564239502, 9.044846534729004, 4.759283065795898,
+ 1.3962621688842773, 1.185346245765686, -1.959165334701538,
+ 1.8479242324829102, 3.3530402183532715, -3.986907958984375
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'layerNormalization float32 4D tensor options.bias and options.axes=[3, 1, 2]',
+ 'graph': {
+ 'inputs': {
+ 'layerNormInput': {
+ 'data': [
+ -35.51446533203125, 54.735408782958984, 19.659019470214844,
+ -15.882678031921387, 65.48657989501953, 25.818492889404297,
+ 97.55302429199219, -8.057161331176758, 62.9412956237793,
+ -48.91555404663086, 91.90644073486328, 46.67098617553711,
+ -74.85331726074219, 30.126361846923828, 26.13089370727539,
+ 59.30270767211914, -60.361995697021484, 18.55615234375,
+ -88.03730773925781, -26.5667724609375, 70.81292724609375,
+ 9.105611801147461, 56.66746139526367, 21.78444480895996
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 3], 'dataType': 'float32'}
+ },
+ 'layerNormBias': {
+ 'data': [
+ -0.1396923065185547, -6.156772136688232, 4.363296031951904,
+ 8.8598051071167, 9.772650718688965, -3.4626545906066895,
+ 9.744950294494629, -0.3958968222141266, -8.497353553771973,
+ 6.172536849975586, -2.8930461406707764, 1.7220044136047363
+ ],
+ 'descriptor': {'dimensions': [3, 1, 4], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'layerNormalization',
+ 'arguments': [
+ {'input': 'layerNormInput'},
+ {'options': {'bias': 'layerNormBias', 'axes': [3, 1, 2]}}
+ ],
+ 'outputs': 'layerNormOutput'
+ }],
+ 'expectedOutputs': {
+ 'layerNormOutput': {
+ 'data': [
+ -1.5454182624816895, 10.312295913696289, -8.713793754577637,
+ -7.139327049255371, -2.691263198852539, 6.088866710662842,
+ 5.825891971588135, 8.931077003479004, -2.1765193939208984,
+ 7.165213584899902, 0.9449849724769592, 2.087818145751953,
+ -1.6631782054901123, 10.288921356201172, -8.058714866638184,
+ -5.073605060577393, -4.704574108123779, 6.463997840881348,
+ 2.5836451053619385, 9.159672737121582, -1.5862356424331665,
+ 8.967641830444336, 0.6360672116279602, 2.0761911869049072
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'layerNormalization float32 4D tensor all options',
+ 'graph': {
+ 'inputs': {
+ 'layerNormInput': {
+ 'data': [
+ -35.51446533203125, 54.735408782958984, 19.659019470214844,
+ -15.882678031921387, 65.48657989501953, 25.818492889404297,
+ 97.55302429199219, -8.057161331176758, 62.9412956237793,
+ -48.91555404663086, 91.90644073486328, 46.67098617553711,
+ -74.85331726074219, 30.126361846923828, 26.13089370727539,
+ 59.30270767211914, -60.361995697021484, 18.55615234375,
+ -88.03730773925781, -26.5667724609375, 70.81292724609375,
+ 9.105611801147461, 56.66746139526367, 21.78444480895996
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 3], 'dataType': 'float32'}
+ },
+ 'layerNormScale': {
+ 'data': [
+ 7.715926647186279, 1.7371079921722412, 9.13965129852295,
+ 5.758823394775391, -2.8198351860046387, -0.6866958141326904
+ ],
+ 'descriptor': {'dimensions': [2, 3, 1], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'layerNormBias': {
+ 'data': [
+ -8.710672378540039, -7.642981052398682, 4.937538146972656,
+ -2.1876745223999023, -4.067612648010254, -6.836254596710205
+ ],
+ 'descriptor': {'dimensions': [2, 3, 1], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'layerNormalization',
+ 'arguments': [
+ {'input': 'layerNormInput'}, {
+ 'options': {
+ 'scale': 'layerNormScale',
+ 'bias': 'layerNormBias',
+ 'axes': [0, 3, 1],
+ 'epsilon': 0.0001
+ }
+ }
+ ],
+ 'outputs': 'layerNormOutput'
+ }],
+ 'expectedOutputs': {
+ 'layerNormOutput': {
+ 'data': [
+ -15.487034797668457, -5.628695964813232, 8.29687786102295,
+ -14.294686317443848, -5.639192581176758, 7.11608362197876,
+ 0.7769554257392883, -8.346451759338379, 11.279659271240234,
+ -22.506288528442383, -5.173816204071045, 8.506545066833496,
+ -12.360523223876953, -5.77052116394043, -7.18900203704834,
+ 3.6336634159088135, 0.8666883707046509, -6.884884357452393,
+ -11.648612976074219, -2.117840528488159, -7.396423816680908,
+ -4.869131088256836, -5.8111701011657715, -6.714934349060059
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ layerNormTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getLayerNormPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/leaky_relu.https.any.js b/tests/wpt/tests/webnn/conformance_tests/leaky_relu.https.any.js
index 9012f02a5ed..af4ac23e444 100644
--- a/tests/wpt/tests/webnn/conformance_tests/leaky_relu.https.any.js
+++ b/tests/wpt/tests/webnn/conformance_tests/leaky_relu.https.any.js
@@ -8,6 +8,417 @@
'use strict';
-// https://webmachinelearning.github.io/webnn/#api-mlgraphbuilder-leakyrelu
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-leakyrelu
+// Calculate the leaky version of rectified linear function on the input tensor
+// element-wise. The calculation follows the expression
+// max(0, x) + alpha * min(0, x).
+//
+// dictionary MLLeakyReluOptions {
+// double alpha = 0.01;
+// };
+//
+// MLOperand leakyRelu(
+// MLOperand input, optional MLLeakyReluOptions options = {});
-runWebNNConformanceTests('leakyRelu', buildOperationWithSingleInput);
+
+const getLeakyReluPrecisionTolerance = (graphResources) => {
+ const toleranceValueDict = {float32: 1, float16: 1};
+ const expectedDataType =
+ getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs);
+ return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]};
+};
+
+const leakyReluTests = [
+ {
+ 'name': 'leakyRelu float32 1D constant tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'leakyReluInput': {
+ 'data': [
+ -19.053640365600586, 50.77590560913086, -69.54966735839844,
+ -80.57432556152344, -90.4011001586914, 76.02884674072266,
+ 66.33873748779297, -84.10186767578125, -17.19101333618164,
+ -87.47624206542969, -3.416466474533081, -22.77235984802246,
+ -2.509489059448242, 18.933284759521484, 98.61402893066406,
+ 55.3392333984375, -33.17860412597656, -46.03901290893555,
+ -61.47925567626953, 64.26514434814453, 21.469341278076172,
+ -31.514690399169922, -41.27694320678711, -65.59529113769531
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'leakyRelu',
+ 'arguments': [{'input': 'leakyReluInput'}],
+ 'outputs': 'leakyReluOutput'
+ }],
+ 'expectedOutputs': {
+ 'leakyReluOutput': {
+ 'data': [
+ -0.19053640961647034, 50.77590560913086, -0.695496678352356,
+ -0.8057432770729065, -0.9040110111236572, 76.02884674072266,
+ 66.33873748779297, -0.8410186767578125, -0.1719101369380951,
+ -0.8747624158859253, -0.0341646634042263, -0.2277235984802246,
+ -0.02509489096701145, 18.933284759521484, 98.61402893066406,
+ 55.3392333984375, -0.33178603649139404, -0.4603901207447052,
+ -0.6147925853729248, 64.26514434814453, 21.469341278076172,
+ -0.31514689326286316, -0.4127694368362427, -0.6559529304504395
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'leakyRelu float32 1D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'leakyReluInput': {
+ 'data': [
+ -19.053640365600586, 50.77590560913086, -69.54966735839844,
+ -80.57432556152344, -90.4011001586914, 76.02884674072266,
+ 66.33873748779297, -84.10186767578125, -17.19101333618164,
+ -87.47624206542969, -3.416466474533081, -22.77235984802246,
+ -2.509489059448242, 18.933284759521484, 98.61402893066406,
+ 55.3392333984375, -33.17860412597656, -46.03901290893555,
+ -61.47925567626953, 64.26514434814453, 21.469341278076172,
+ -31.514690399169922, -41.27694320678711, -65.59529113769531
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'leakyRelu',
+ 'arguments': [{'input': 'leakyReluInput'}],
+ 'outputs': 'leakyReluOutput'
+ }],
+ 'expectedOutputs': {
+ 'leakyReluOutput': {
+ 'data': [
+ -0.19053640961647034, 50.77590560913086, -0.695496678352356,
+ -0.8057432770729065, -0.9040110111236572, 76.02884674072266,
+ 66.33873748779297, -0.8410186767578125, -0.1719101369380951,
+ -0.8747624158859253, -0.0341646634042263, -0.2277235984802246,
+ -0.02509489096701145, 18.933284759521484, 98.61402893066406,
+ 55.3392333984375, -0.33178603649139404, -0.4603901207447052,
+ -0.6147925853729248, 64.26514434814453, 21.469341278076172,
+ -0.31514689326286316, -0.4127694368362427, -0.6559529304504395
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'leakyRelu float32 2D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'leakyReluInput': {
+ 'data': [
+ -19.053640365600586, 50.77590560913086, -69.54966735839844,
+ -80.57432556152344, -90.4011001586914, 76.02884674072266,
+ 66.33873748779297, -84.10186767578125, -17.19101333618164,
+ -87.47624206542969, -3.416466474533081, -22.77235984802246,
+ -2.509489059448242, 18.933284759521484, 98.61402893066406,
+ 55.3392333984375, -33.17860412597656, -46.03901290893555,
+ -61.47925567626953, 64.26514434814453, 21.469341278076172,
+ -31.514690399169922, -41.27694320678711, -65.59529113769531
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'leakyRelu',
+ 'arguments': [{'input': 'leakyReluInput'}],
+ 'outputs': 'leakyReluOutput'
+ }],
+ 'expectedOutputs': {
+ 'leakyReluOutput': {
+ 'data': [
+ -0.19053640961647034, 50.77590560913086, -0.695496678352356,
+ -0.8057432770729065, -0.9040110111236572, 76.02884674072266,
+ 66.33873748779297, -0.8410186767578125, -0.1719101369380951,
+ -0.8747624158859253, -0.0341646634042263, -0.2277235984802246,
+ -0.02509489096701145, 18.933284759521484, 98.61402893066406,
+ 55.3392333984375, -0.33178603649139404, -0.4603901207447052,
+ -0.6147925853729248, 64.26514434814453, 21.469341278076172,
+ -0.31514689326286316, -0.4127694368362427, -0.6559529304504395
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'leakyRelu float32 3D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'leakyReluInput': {
+ 'data': [
+ -19.053640365600586, 50.77590560913086, -69.54966735839844,
+ -80.57432556152344, -90.4011001586914, 76.02884674072266,
+ 66.33873748779297, -84.10186767578125, -17.19101333618164,
+ -87.47624206542969, -3.416466474533081, -22.77235984802246,
+ -2.509489059448242, 18.933284759521484, 98.61402893066406,
+ 55.3392333984375, -33.17860412597656, -46.03901290893555,
+ -61.47925567626953, 64.26514434814453, 21.469341278076172,
+ -31.514690399169922, -41.27694320678711, -65.59529113769531
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'leakyRelu',
+ 'arguments': [{'input': 'leakyReluInput'}],
+ 'outputs': 'leakyReluOutput'
+ }],
+ 'expectedOutputs': {
+ 'leakyReluOutput': {
+ 'data': [
+ -0.19053640961647034, 50.77590560913086, -0.695496678352356,
+ -0.8057432770729065, -0.9040110111236572, 76.02884674072266,
+ 66.33873748779297, -0.8410186767578125, -0.1719101369380951,
+ -0.8747624158859253, -0.0341646634042263, -0.2277235984802246,
+ -0.02509489096701145, 18.933284759521484, 98.61402893066406,
+ 55.3392333984375, -0.33178603649139404, -0.4603901207447052,
+ -0.6147925853729248, 64.26514434814453, 21.469341278076172,
+ -0.31514689326286316, -0.4127694368362427, -0.6559529304504395
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'leakyRelu float32 4D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'leakyReluInput': {
+ 'data': [
+ -19.053640365600586, 50.77590560913086, -69.54966735839844,
+ -80.57432556152344, -90.4011001586914, 76.02884674072266,
+ 66.33873748779297, -84.10186767578125, -17.19101333618164,
+ -87.47624206542969, -3.416466474533081, -22.77235984802246,
+ -2.509489059448242, 18.933284759521484, 98.61402893066406,
+ 55.3392333984375, -33.17860412597656, -46.03901290893555,
+ -61.47925567626953, 64.26514434814453, 21.469341278076172,
+ -31.514690399169922, -41.27694320678711, -65.59529113769531
+ ],
+ 'descriptor': {'dimensions': [1, 2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'leakyRelu',
+ 'arguments': [{'input': 'leakyReluInput'}],
+ 'outputs': 'leakyReluOutput'
+ }],
+ 'expectedOutputs': {
+ 'leakyReluOutput': {
+ 'data': [
+ -0.19053640961647034, 50.77590560913086, -0.695496678352356,
+ -0.8057432770729065, -0.9040110111236572, 76.02884674072266,
+ 66.33873748779297, -0.8410186767578125, -0.1719101369380951,
+ -0.8747624158859253, -0.0341646634042263, -0.2277235984802246,
+ -0.02509489096701145, 18.933284759521484, 98.61402893066406,
+ 55.3392333984375, -0.33178603649139404, -0.4603901207447052,
+ -0.6147925853729248, 64.26514434814453, 21.469341278076172,
+ -0.31514689326286316, -0.4127694368362427, -0.6559529304504395
+ ],
+ 'descriptor': {'dimensions': [1, 2, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'leakyRelu float32 5D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'leakyReluInput': {
+ 'data': [
+ -19.053640365600586, 50.77590560913086, -69.54966735839844,
+ -80.57432556152344, -90.4011001586914, 76.02884674072266,
+ 66.33873748779297, -84.10186767578125, -17.19101333618164,
+ -87.47624206542969, -3.416466474533081, -22.77235984802246,
+ -2.509489059448242, 18.933284759521484, 98.61402893066406,
+ 55.3392333984375, -33.17860412597656, -46.03901290893555,
+ -61.47925567626953, 64.26514434814453, 21.469341278076172,
+ -31.514690399169922, -41.27694320678711, -65.59529113769531
+ ],
+ 'descriptor': {'dimensions': [1, 2, 1, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'leakyRelu',
+ 'arguments': [{'input': 'leakyReluInput'}],
+ 'outputs': 'leakyReluOutput'
+ }],
+ 'expectedOutputs': {
+ 'leakyReluOutput': {
+ 'data': [
+ -0.19053640961647034, 50.77590560913086, -0.695496678352356,
+ -0.8057432770729065, -0.9040110111236572, 76.02884674072266,
+ 66.33873748779297, -0.8410186767578125, -0.1719101369380951,
+ -0.8747624158859253, -0.0341646634042263, -0.2277235984802246,
+ -0.02509489096701145, 18.933284759521484, 98.61402893066406,
+ 55.3392333984375, -0.33178603649139404, -0.4603901207447052,
+ -0.6147925853729248, 64.26514434814453, 21.469341278076172,
+ -0.31514689326286316, -0.4127694368362427, -0.6559529304504395
+ ],
+ 'descriptor': {'dimensions': [1, 2, 1, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'leakyRelu float32 1D tensor negative options.alpha',
+ 'graph': {
+ 'inputs': {
+ 'leakyReluInput': {
+ 'data': [
+ -19.053640365600586, 50.77590560913086, -69.54966735839844,
+ -80.57432556152344, -90.4011001586914, 76.02884674072266,
+ 66.33873748779297, -84.10186767578125, -17.19101333618164,
+ -87.47624206542969, -3.416466474533081, -22.77235984802246,
+ -2.509489059448242, 18.933284759521484, 98.61402893066406,
+ 55.3392333984375, -33.17860412597656, -46.03901290893555,
+ -61.47925567626953, 64.26514434814453, 21.469341278076172,
+ -31.514690399169922, -41.27694320678711, -65.59529113769531
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'leakyRelu',
+ 'arguments': [
+ {'input': 'leakyReluInput'},
+ {'options': {'alpha': -97.70109193608776}}
+ ],
+ 'outputs': 'leakyReluOutput'
+ }],
+ 'expectedOutputs': {
+ 'leakyReluOutput': {
+ 'data': [
+ 1861.5615234375, 50.77590560913086, 6795.07861328125,
+ 7872.19970703125, 8832.2861328125, 76.02884674072266,
+ 66.33873748779297, 8216.8447265625, 1679.580810546875,
+ 8546.5244140625, 333.7925109863281, 2224.884521484375,
+ 245.17982482910156, 18.933284759521484, 98.61402893066406,
+ 55.3392333984375, 3241.5859375, 4498.06201171875,
+ 6006.5908203125, 64.26514434814453, 21.469341278076172,
+ 3079.019775390625, 4032.802490234375, 6408.73193359375
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'leakyRelu float32 2D tensor positive options.alpha',
+ 'graph': {
+ 'inputs': {
+ 'leakyReluInput': {
+ 'data': [
+ -19.053640365600586, 50.77590560913086, -69.54966735839844,
+ -80.57432556152344, -90.4011001586914, 76.02884674072266,
+ 66.33873748779297, -84.10186767578125, -17.19101333618164,
+ -87.47624206542969, -3.416466474533081, -22.77235984802246,
+ -2.509489059448242, 18.933284759521484, 98.61402893066406,
+ 55.3392333984375, -33.17860412597656, -46.03901290893555,
+ -61.47925567626953, 64.26514434814453, 21.469341278076172,
+ -31.514690399169922, -41.27694320678711, -65.59529113769531
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'leakyRelu',
+ 'arguments': [
+ {'input': 'leakyReluInput'},
+ {'options': {'alpha': 35.799162942273234}}
+ ],
+ 'outputs': 'leakyReluOutput'
+ }],
+ 'expectedOutputs': {
+ 'leakyReluOutput': {
+ 'data': [
+ -682.1043701171875, 50.77590560913086, -2489.81982421875,
+ -2884.493408203125, -3236.28369140625, 76.02884674072266,
+ 66.33873748779297, -3010.776611328125, -615.4238891601562,
+ -3131.576416015625, -122.306640625, -815.2314453125,
+ -89.83760833740234, 18.933284759521484, 98.61402893066406,
+ 55.3392333984375, -1187.7662353515625, -1648.158203125,
+ -2200.906005859375, 64.26514434814453, 21.469341278076172,
+ -1128.1995849609375, -1477.6800537109375, -2348.256591796875
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'leakyRelu float32 5D tensor options.alpha=0.0',
+ 'graph': {
+ 'inputs': {
+ 'leakyReluInput': {
+ 'data': [
+ -19.053640365600586, 50.77590560913086, -69.54966735839844,
+ -80.57432556152344, -90.4011001586914, 76.02884674072266,
+ 66.33873748779297, -84.10186767578125, -17.19101333618164,
+ -87.47624206542969, -3.416466474533081, -22.77235984802246,
+ -2.509489059448242, 18.933284759521484, 98.61402893066406,
+ 55.3392333984375, -33.17860412597656, -46.03901290893555,
+ -61.47925567626953, 64.26514434814453, 21.469341278076172,
+ -31.514690399169922, -41.27694320678711, -65.59529113769531
+ ],
+ 'descriptor': {'dimensions': [1, 2, 1, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'leakyRelu',
+ 'arguments': [{'input': 'leakyReluInput'}, {'options': {'alpha': 0}}],
+ 'outputs': 'leakyReluOutput'
+ }],
+ 'expectedOutputs': {
+ 'leakyReluOutput': {
+ 'data': [
+ 0,
+ 50.77590560913086,
+ 0,
+ 0,
+ 0,
+ 76.02884674072266,
+ 66.33873748779297,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 18.933284759521484,
+ 98.61402893066406,
+ 55.3392333984375,
+ 0,
+ 0,
+ 0,
+ 64.26514434814453,
+ 21.469341278076172,
+ 0,
+ 0,
+ 0
+ ],
+ 'descriptor': {'dimensions': [1, 2, 1, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ leakyReluTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getLeakyReluPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/lesser.https.any.js b/tests/wpt/tests/webnn/conformance_tests/lesser.https.any.js
index 246c3ed2c26..f7200bc21d8 100644
--- a/tests/wpt/tests/webnn/conformance_tests/lesser.https.any.js
+++ b/tests/wpt/tests/webnn/conformance_tests/lesser.https.any.js
@@ -1,4 +1,4 @@
-// META: title=test WebNN API element-wise binary operations
+// META: title=test WebNN API element-wise lesser operation
// META: global=window,dedicatedworker
// META: variant=?cpu
// META: variant=?gpu
@@ -8,6 +8,531 @@
'use strict';
-// https://webmachinelearning.github.io/webnn/#dom-mlgraphbuilder-lesser
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-logical
+// Compare if the values of the first input tensor is lesser, element-wise.
+//
+// MLOperand lesser(MLOperand a, MLOperand b);
-runWebNNConformanceTests('lesser', buildOperationWithTwoInputs);
+
+const getLesserPrecisionTolerance = (graphResources) => {
+ const toleranceValueDict = {uint8: 0};
+ const expectedDataType =
+ getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs);
+ return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]};
+};
+
+const lesserTests = [
+ {
+ 'name': 'lesser float32 0D scalar',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [-0.5228080153465271],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [0.8150388598442078],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'lesser',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output':
+ {'data': [1], 'descriptor': {'dimensions': [], 'dataType': 'uint8'}}
+ }
+ }
+ },
+ {
+ 'name': 'lesser float32 1D constant tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ -1.147218942642212, -8.409374237060547, -2.2753310203552246,
+ -0.5770801305770874, 8.171789169311523, -0.907120943069458,
+ 5.2908453941345215, -3.9134645462036133, 9.825095176696777,
+ -8.931730270385742, -3.457401752471924, -7.331232070922852,
+ 1.232004165649414, 4.312077045440674, 1.2715545892715454,
+ 4.184540748596191, -6.710920333862305, 3.0768423080444336,
+ 1.0030865669250488, -9.076244354248047, 8.907161712646484,
+ 4.232614994049072, 2.1005890369415283, -6.201345443725586
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'inputB': {
+ 'data': [
+ 2.945375680923462, 3.730471611022949, 4.0253753662109375,
+ -4.718355178833008, 6.7732744216918945, -2.042813539505005,
+ -6.526762008666992, 6.826299667358398, -9.267172813415527,
+ 6.118423938751221, -2.001732349395752, 1.779831051826477,
+ 9.660094261169434, -2.7473158836364746, -3.4345006942749023,
+ -4.751097679138184, -6.092621803283691, -0.4334806203842163,
+ -1.4069052934646606, -0.23742099106311798, -9.10597038269043,
+ 6.811779975891113, -6.768326759338379, -8.952353477478027
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'lesser',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1,
+ 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'lesser float32 1D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ -1.147218942642212, -8.409374237060547, -2.2753310203552246,
+ -0.5770801305770874, 8.171789169311523, -0.907120943069458,
+ 5.2908453941345215, -3.9134645462036133, 9.825095176696777,
+ -8.931730270385742, -3.457401752471924, -7.331232070922852,
+ 1.232004165649414, 4.312077045440674, 1.2715545892715454,
+ 4.184540748596191, -6.710920333862305, 3.0768423080444336,
+ 1.0030865669250488, -9.076244354248047, 8.907161712646484,
+ 4.232614994049072, 2.1005890369415283, -6.201345443725586
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 2.945375680923462, 3.730471611022949, 4.0253753662109375,
+ -4.718355178833008, 6.7732744216918945, -2.042813539505005,
+ -6.526762008666992, 6.826299667358398, -9.267172813415527,
+ 6.118423938751221, -2.001732349395752, 1.779831051826477,
+ 9.660094261169434, -2.7473158836364746, -3.4345006942749023,
+ -4.751097679138184, -6.092621803283691, -0.4334806203842163,
+ -1.4069052934646606, -0.23742099106311798, -9.10597038269043,
+ 6.811779975891113, -6.768326759338379, -8.952353477478027
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'lesser',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1,
+ 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'lesser float32 2D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ -1.147218942642212, -8.409374237060547, -2.2753310203552246,
+ -0.5770801305770874, 8.171789169311523, -0.907120943069458,
+ 5.2908453941345215, -3.9134645462036133, 9.825095176696777,
+ -8.931730270385742, -3.457401752471924, -7.331232070922852,
+ 1.232004165649414, 4.312077045440674, 1.2715545892715454,
+ 4.184540748596191, -6.710920333862305, 3.0768423080444336,
+ 1.0030865669250488, -9.076244354248047, 8.907161712646484,
+ 4.232614994049072, 2.1005890369415283, -6.201345443725586
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 2.945375680923462, 3.730471611022949, 4.0253753662109375,
+ -4.718355178833008, 6.7732744216918945, -2.042813539505005,
+ -6.526762008666992, 6.826299667358398, -9.267172813415527,
+ 6.118423938751221, -2.001732349395752, 1.779831051826477,
+ 9.660094261169434, -2.7473158836364746, -3.4345006942749023,
+ -4.751097679138184, -6.092621803283691, -0.4334806203842163,
+ -1.4069052934646606, -0.23742099106311798, -9.10597038269043,
+ 6.811779975891113, -6.768326759338379, -8.952353477478027
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'lesser',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1,
+ 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'lesser float32 3D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ -1.147218942642212, -8.409374237060547, -2.2753310203552246,
+ -0.5770801305770874, 8.171789169311523, -0.907120943069458,
+ 5.2908453941345215, -3.9134645462036133, 9.825095176696777,
+ -8.931730270385742, -3.457401752471924, -7.331232070922852,
+ 1.232004165649414, 4.312077045440674, 1.2715545892715454,
+ 4.184540748596191, -6.710920333862305, 3.0768423080444336,
+ 1.0030865669250488, -9.076244354248047, 8.907161712646484,
+ 4.232614994049072, 2.1005890369415283, -6.201345443725586
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 2.945375680923462, 3.730471611022949, 4.0253753662109375,
+ -4.718355178833008, 6.7732744216918945, -2.042813539505005,
+ -6.526762008666992, 6.826299667358398, -9.267172813415527,
+ 6.118423938751221, -2.001732349395752, 1.779831051826477,
+ 9.660094261169434, -2.7473158836364746, -3.4345006942749023,
+ -4.751097679138184, -6.092621803283691, -0.4334806203842163,
+ -1.4069052934646606, -0.23742099106311798, -9.10597038269043,
+ 6.811779975891113, -6.768326759338379, -8.952353477478027
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'lesser',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1,
+ 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'lesser float32 4D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ -1.147218942642212, -8.409374237060547, -2.2753310203552246,
+ -0.5770801305770874, 8.171789169311523, -0.907120943069458,
+ 5.2908453941345215, -3.9134645462036133, 9.825095176696777,
+ -8.931730270385742, -3.457401752471924, -7.331232070922852,
+ 1.232004165649414, 4.312077045440674, 1.2715545892715454,
+ 4.184540748596191, -6.710920333862305, 3.0768423080444336,
+ 1.0030865669250488, -9.076244354248047, 8.907161712646484,
+ 4.232614994049072, 2.1005890369415283, -6.201345443725586
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 2.945375680923462, 3.730471611022949, 4.0253753662109375,
+ -4.718355178833008, 6.7732744216918945, -2.042813539505005,
+ -6.526762008666992, 6.826299667358398, -9.267172813415527,
+ 6.118423938751221, -2.001732349395752, 1.779831051826477,
+ 9.660094261169434, -2.7473158836364746, -3.4345006942749023,
+ -4.751097679138184, -6.092621803283691, -0.4334806203842163,
+ -1.4069052934646606, -0.23742099106311798, -9.10597038269043,
+ 6.811779975891113, -6.768326759338379, -8.952353477478027
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'lesser',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1,
+ 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'lesser float32 5D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ -1.147218942642212, -8.409374237060547, -2.2753310203552246,
+ -0.5770801305770874, 8.171789169311523, -0.907120943069458,
+ 5.2908453941345215, -3.9134645462036133, 9.825095176696777,
+ -8.931730270385742, -3.457401752471924, -7.331232070922852,
+ 1.232004165649414, 4.312077045440674, 1.2715545892715454,
+ 4.184540748596191, -6.710920333862305, 3.0768423080444336,
+ 1.0030865669250488, -9.076244354248047, 8.907161712646484,
+ 4.232614994049072, 2.1005890369415283, -6.201345443725586
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 2, 3], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 2.945375680923462, 3.730471611022949, 4.0253753662109375,
+ -4.718355178833008, 6.7732744216918945, -2.042813539505005,
+ -6.526762008666992, 6.826299667358398, -9.267172813415527,
+ 6.118423938751221, -2.001732349395752, 1.779831051826477,
+ 9.660094261169434, -2.7473158836364746, -3.4345006942749023,
+ -4.751097679138184, -6.092621803283691, -0.4334806203842163,
+ -1.4069052934646606, -0.23742099106311798, -9.10597038269043,
+ 6.811779975891113, -6.768326759338379, -8.952353477478027
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'lesser',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1,
+ 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 2, 3], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'lesser float32 broadcast 0D to 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [-5.678369998931885],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -1.147218942642212, -8.409374237060547, -2.2753310203552246,
+ -0.5770801305770874, 8.171789169311523, -0.907120943069458,
+ 5.2908453941345215, -3.9134645462036133, 9.825095176696777,
+ -8.931730270385742, -3.457401752471924, -7.331232070922852,
+ 1.232004165649414, 4.312077045440674, 1.2715545892715454,
+ 4.184540748596191, -6.710920333862305, 3.0768423080444336,
+ 1.0030865669250488, -9.076244354248047, 8.907161712646484,
+ 4.232614994049072, 2.1005890369415283, -6.201345443725586
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'lesser',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0,
+ 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'lesser float32 broadcast 1D to 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [-5.678369998931885],
+ 'descriptor': {'dimensions': [1], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -1.147218942642212, -8.409374237060547, -2.2753310203552246,
+ -0.5770801305770874, 8.171789169311523, -0.907120943069458,
+ 5.2908453941345215, -3.9134645462036133, 9.825095176696777,
+ -8.931730270385742, -3.457401752471924, -7.331232070922852,
+ 1.232004165649414, 4.312077045440674, 1.2715545892715454,
+ 4.184540748596191, -6.710920333862305, 3.0768423080444336,
+ 1.0030865669250488, -9.076244354248047, 8.907161712646484,
+ 4.232614994049072, 2.1005890369415283, -6.201345443725586
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'lesser',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0,
+ 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'lesser float32 broadcast 2D to 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ -1.147218942642212, -8.409374237060547, -2.2753310203552246,
+ -0.5770801305770874, 8.171789169311523, -0.907120943069458,
+ 5.2908453941345215, -3.9134645462036133, 9.825095176696777,
+ -8.931730270385742, -3.457401752471924, -7.331232070922852,
+ 1.232004165649414, 4.312077045440674, 1.2715545892715454,
+ 4.184540748596191, -6.710920333862305, 3.0768423080444336,
+ 1.0030865669250488, -9.076244354248047, 8.907161712646484,
+ 4.232614994049072, 2.1005890369415283, -6.201345443725586
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 3.5869946479797363, -2.853332042694092, -3.684652805328369,
+ 2.4055018424987793, -4.358371257781982, 5.5484747886657715
+ ],
+ 'descriptor': {'dimensions': [2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'lesser',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
+ 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'lesser float32 broadcast 3D to 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ -1.147218942642212, -8.409374237060547, -2.2753310203552246,
+ -0.5770801305770874, 8.171789169311523, -0.907120943069458,
+ 5.2908453941345215, -3.9134645462036133, 9.825095176696777,
+ -8.931730270385742, -3.457401752471924, -7.331232070922852,
+ 1.232004165649414, 4.312077045440674, 1.2715545892715454,
+ 4.184540748596191, -6.710920333862305, 3.0768423080444336,
+ 1.0030865669250488, -9.076244354248047, 8.907161712646484,
+ 4.232614994049072, 2.1005890369415283, -6.201345443725586
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -4.439523696899414, 2.7518322467803955, 3.635943651199341,
+ -2.8089921474456787
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'lesser',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1,
+ 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'lesser float32 broadcast 4D to 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [-5.678369998931885],
+ 'descriptor': {'dimensions': [1, 1, 1, 1], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -1.147218942642212, -8.409374237060547, -2.2753310203552246,
+ -0.5770801305770874, 8.171789169311523, -0.907120943069458,
+ 5.2908453941345215, -3.9134645462036133, 9.825095176696777,
+ -8.931730270385742, -3.457401752471924, -7.331232070922852,
+ 1.232004165649414, 4.312077045440674, 1.2715545892715454,
+ 4.184540748596191, -6.710920333862305, 3.0768423080444336,
+ 1.0030865669250488, -9.076244354248047, 8.907161712646484,
+ 4.232614994049072, 2.1005890369415283, -6.201345443725586
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'lesser',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0,
+ 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint8'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ lesserTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getLesserPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/lesser_or_equal.https.any.js b/tests/wpt/tests/webnn/conformance_tests/lesser_or_equal.https.any.js
index 75d60bd73ce..fce69f61125 100644
--- a/tests/wpt/tests/webnn/conformance_tests/lesser_or_equal.https.any.js
+++ b/tests/wpt/tests/webnn/conformance_tests/lesser_or_equal.https.any.js
@@ -1,4 +1,4 @@
-// META: title=test WebNN API element-wise binary operations
+// META: title=test WebNN API element-wise lesserOrEqual operation
// META: global=window,dedicatedworker
// META: variant=?cpu
// META: variant=?gpu
@@ -8,6 +8,532 @@
'use strict';
-// https://webmachinelearning.github.io/webnn/#dom-mlgraphbuilder-lesserorequal
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-logical
+// Compare if the values of the first input tensor is lesser or equal,
+// element-wise.
+//
+// MLOperand lesserOrEqual(MLOperand a, MLOperand b);
-runWebNNConformanceTests('lesserOrEqual', buildOperationWithTwoInputs);
+
+const getLesserOrEqualPrecisionTolerance = (graphResources) => {
+ const toleranceValueDict = {uint8: 0};
+ const expectedDataType =
+ getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs);
+ return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]};
+};
+
+const lesserOrEqualTests = [
+ {
+ 'name': 'lesserOrEqual float32 0D scalar',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [-6.978766441345215],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [6.613064765930176],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'lesserOrEqual',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output':
+ {'data': [1], 'descriptor': {'dimensions': [], 'dataType': 'uint8'}}
+ }
+ }
+ },
+ {
+ 'name': 'lesserOrEqual float32 1D constant tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ -8.284008979797363, -3.219264507293701, -6.543179988861084,
+ -0.540285050868988, -5.413843631744385, 5.583743095397949,
+ 1.50178062915802, 6.5922441482543945, -9.92548656463623,
+ -7.134799957275391, -4.915772914886475, -9.137166976928711,
+ 9.40368366241455, -9.831502914428711, -2.0123181343078613,
+ -6.597689628601074, -8.26932144165039, 8.281030654907227,
+ 1.64528226852417, -1.4862726926803589, -4.998753547668457,
+ -0.920993447303772, -9.434256553649902, 9.813238143920898
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'inputB': {
+ 'data': [
+ 5.498841285705566, 1.766266107559204, -2.815573215484619,
+ -6.048312187194824, 9.497536659240723, -2.101574659347534,
+ -4.079037189483643, 5.314040184020996, 0.03871455416083336,
+ -0.30728286504745483, 4.97542667388916, 3.462601661682129,
+ 8.605685234069824, 1.5140480995178223, 2.0090959072113037,
+ -0.3105867803096771, -4.244836330413818, -3.5506834983825684,
+ -2.5953285694122314, -4.9998064041137695, 3.118950605392456,
+ 9.705141067504883, 9.54673957824707, -6.189505577087402
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'lesserOrEqual',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'lesserOrEqual float32 1D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ -8.284008979797363, -3.219264507293701, -6.543179988861084,
+ -0.540285050868988, -5.413843631744385, 5.583743095397949,
+ 1.50178062915802, 6.5922441482543945, -9.92548656463623,
+ -7.134799957275391, -4.915772914886475, -9.137166976928711,
+ 9.40368366241455, -9.831502914428711, -2.0123181343078613,
+ -6.597689628601074, -8.26932144165039, 8.281030654907227,
+ 1.64528226852417, -1.4862726926803589, -4.998753547668457,
+ -0.920993447303772, -9.434256553649902, 9.813238143920898
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 5.498841285705566, 1.766266107559204, -2.815573215484619,
+ -6.048312187194824, 9.497536659240723, -2.101574659347534,
+ -4.079037189483643, 5.314040184020996, 0.03871455416083336,
+ -0.30728286504745483, 4.97542667388916, 3.462601661682129,
+ 8.605685234069824, 1.5140480995178223, 2.0090959072113037,
+ -0.3105867803096771, -4.244836330413818, -3.5506834983825684,
+ -2.5953285694122314, -4.9998064041137695, 3.118950605392456,
+ 9.705141067504883, 9.54673957824707, -6.189505577087402
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'lesserOrEqual',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'lesserOrEqual float32 2D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ -8.284008979797363, -3.219264507293701, -6.543179988861084,
+ -0.540285050868988, -5.413843631744385, 5.583743095397949,
+ 1.50178062915802, 6.5922441482543945, -9.92548656463623,
+ -7.134799957275391, -4.915772914886475, -9.137166976928711,
+ 9.40368366241455, -9.831502914428711, -2.0123181343078613,
+ -6.597689628601074, -8.26932144165039, 8.281030654907227,
+ 1.64528226852417, -1.4862726926803589, -4.998753547668457,
+ -0.920993447303772, -9.434256553649902, 9.813238143920898
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 5.498841285705566, 1.766266107559204, -2.815573215484619,
+ -6.048312187194824, 9.497536659240723, -2.101574659347534,
+ -4.079037189483643, 5.314040184020996, 0.03871455416083336,
+ -0.30728286504745483, 4.97542667388916, 3.462601661682129,
+ 8.605685234069824, 1.5140480995178223, 2.0090959072113037,
+ -0.3105867803096771, -4.244836330413818, -3.5506834983825684,
+ -2.5953285694122314, -4.9998064041137695, 3.118950605392456,
+ 9.705141067504883, 9.54673957824707, -6.189505577087402
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'lesserOrEqual',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'lesserOrEqual float32 3D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ -8.284008979797363, -3.219264507293701, -6.543179988861084,
+ -0.540285050868988, -5.413843631744385, 5.583743095397949,
+ 1.50178062915802, 6.5922441482543945, -9.92548656463623,
+ -7.134799957275391, -4.915772914886475, -9.137166976928711,
+ 9.40368366241455, -9.831502914428711, -2.0123181343078613,
+ -6.597689628601074, -8.26932144165039, 8.281030654907227,
+ 1.64528226852417, -1.4862726926803589, -4.998753547668457,
+ -0.920993447303772, -9.434256553649902, 9.813238143920898
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 5.498841285705566, 1.766266107559204, -2.815573215484619,
+ -6.048312187194824, 9.497536659240723, -2.101574659347534,
+ -4.079037189483643, 5.314040184020996, 0.03871455416083336,
+ -0.30728286504745483, 4.97542667388916, 3.462601661682129,
+ 8.605685234069824, 1.5140480995178223, 2.0090959072113037,
+ -0.3105867803096771, -4.244836330413818, -3.5506834983825684,
+ -2.5953285694122314, -4.9998064041137695, 3.118950605392456,
+ 9.705141067504883, 9.54673957824707, -6.189505577087402
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'lesserOrEqual',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'lesserOrEqual float32 4D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ -8.284008979797363, -3.219264507293701, -6.543179988861084,
+ -0.540285050868988, -5.413843631744385, 5.583743095397949,
+ 1.50178062915802, 6.5922441482543945, -9.92548656463623,
+ -7.134799957275391, -4.915772914886475, -9.137166976928711,
+ 9.40368366241455, -9.831502914428711, -2.0123181343078613,
+ -6.597689628601074, -8.26932144165039, 8.281030654907227,
+ 1.64528226852417, -1.4862726926803589, -4.998753547668457,
+ -0.920993447303772, -9.434256553649902, 9.813238143920898
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 5.498841285705566, 1.766266107559204, -2.815573215484619,
+ -6.048312187194824, 9.497536659240723, -2.101574659347534,
+ -4.079037189483643, 5.314040184020996, 0.03871455416083336,
+ -0.30728286504745483, 4.97542667388916, 3.462601661682129,
+ 8.605685234069824, 1.5140480995178223, 2.0090959072113037,
+ -0.3105867803096771, -4.244836330413818, -3.5506834983825684,
+ -2.5953285694122314, -4.9998064041137695, 3.118950605392456,
+ 9.705141067504883, 9.54673957824707, -6.189505577087402
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'lesserOrEqual',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'lesserOrEqual float32 5D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ -8.284008979797363, -3.219264507293701, -6.543179988861084,
+ -0.540285050868988, -5.413843631744385, 5.583743095397949,
+ 1.50178062915802, 6.5922441482543945, -9.92548656463623,
+ -7.134799957275391, -4.915772914886475, -9.137166976928711,
+ 9.40368366241455, -9.831502914428711, -2.0123181343078613,
+ -6.597689628601074, -8.26932144165039, 8.281030654907227,
+ 1.64528226852417, -1.4862726926803589, -4.998753547668457,
+ -0.920993447303772, -9.434256553649902, 9.813238143920898
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 2, 3], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 5.498841285705566, 1.766266107559204, -2.815573215484619,
+ -6.048312187194824, 9.497536659240723, -2.101574659347534,
+ -4.079037189483643, 5.314040184020996, 0.03871455416083336,
+ -0.30728286504745483, 4.97542667388916, 3.462601661682129,
+ 8.605685234069824, 1.5140480995178223, 2.0090959072113037,
+ -0.3105867803096771, -4.244836330413818, -3.5506834983825684,
+ -2.5953285694122314, -4.9998064041137695, 3.118950605392456,
+ 9.705141067504883, 9.54673957824707, -6.189505577087402
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'lesserOrEqual',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 2, 3], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'lesserOrEqual float32 broadcast 0D to 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [4.840610980987549],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -8.284008979797363, -3.219264507293701, -6.543179988861084,
+ -0.540285050868988, -5.413843631744385, 5.583743095397949,
+ 1.50178062915802, 6.5922441482543945, -9.92548656463623,
+ -7.134799957275391, -4.915772914886475, -9.137166976928711,
+ 9.40368366241455, -9.831502914428711, -2.0123181343078613,
+ -6.597689628601074, -8.26932144165039, 8.281030654907227,
+ 1.64528226852417, -1.4862726926803589, -4.998753547668457,
+ -0.920993447303772, -9.434256553649902, 9.813238143920898
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'lesserOrEqual',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0,
+ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'lesserOrEqual float32 broadcast 1D to 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [4.840610980987549],
+ 'descriptor': {'dimensions': [1], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -8.284008979797363, -3.219264507293701, -6.543179988861084,
+ -0.540285050868988, -5.413843631744385, 5.583743095397949,
+ 1.50178062915802, 6.5922441482543945, -9.92548656463623,
+ -7.134799957275391, -4.915772914886475, -9.137166976928711,
+ 9.40368366241455, -9.831502914428711, -2.0123181343078613,
+ -6.597689628601074, -8.26932144165039, 8.281030654907227,
+ 1.64528226852417, -1.4862726926803589, -4.998753547668457,
+ -0.920993447303772, -9.434256553649902, 9.813238143920898
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'lesserOrEqual',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0,
+ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'lesserOrEqual float32 broadcast 2D to 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ -8.284008979797363, -3.219264507293701, -6.543179988861084,
+ -0.540285050868988, -5.413843631744385, 5.583743095397949,
+ 1.50178062915802, 6.5922441482543945, -9.92548656463623,
+ -7.134799957275391, -4.915772914886475, -9.137166976928711,
+ 9.40368366241455, -9.831502914428711, -2.0123181343078613,
+ -6.597689628601074, -8.26932144165039, 8.281030654907227,
+ 1.64528226852417, -1.4862726926803589, -4.998753547668457,
+ -0.920993447303772, -9.434256553649902, 9.813238143920898
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -8.499547004699707, -8.321310043334961, -7.182070732116699,
+ 3.418306350708008, 5.389469146728516, 6.904313087463379
+ ],
+ 'descriptor': {'dimensions': [2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'lesserOrEqual',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1,
+ 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'lesserOrEqual float32 broadcast 3D to 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ -8.284008979797363, -3.219264507293701, -6.543179988861084,
+ -0.540285050868988, -5.413843631744385, 5.583743095397949,
+ 1.50178062915802, 6.5922441482543945, -9.92548656463623,
+ -7.134799957275391, -4.915772914886475, -9.137166976928711,
+ 9.40368366241455, -9.831502914428711, -2.0123181343078613,
+ -6.597689628601074, -8.26932144165039, 8.281030654907227,
+ 1.64528226852417, -1.4862726926803589, -4.998753547668457,
+ -0.920993447303772, -9.434256553649902, 9.813238143920898
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 4.195140838623047, 7.8286590576171875, 6.6902031898498535,
+ 0.9247010350227356
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'lesserOrEqual',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'lesserOrEqual float32 broadcast 4D to 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [4.840610980987549],
+ 'descriptor': {'dimensions': [1, 1, 1, 1], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -8.284008979797363, -3.219264507293701, -6.543179988861084,
+ -0.540285050868988, -5.413843631744385, 5.583743095397949,
+ 1.50178062915802, 6.5922441482543945, -9.92548656463623,
+ -7.134799957275391, -4.915772914886475, -9.137166976928711,
+ 9.40368366241455, -9.831502914428711, -2.0123181343078613,
+ -6.597689628601074, -8.26932144165039, 8.281030654907227,
+ 1.64528226852417, -1.4862726926803589, -4.998753547668457,
+ -0.920993447303772, -9.434256553649902, 9.813238143920898
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'lesserOrEqual',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0,
+ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint8'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ lesserOrEqualTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getLesserOrEqualPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/linear.https.any.js b/tests/wpt/tests/webnn/conformance_tests/linear.https.any.js
index c011229db8f..1f092303d6a 100644
--- a/tests/wpt/tests/webnn/conformance_tests/linear.https.any.js
+++ b/tests/wpt/tests/webnn/conformance_tests/linear.https.any.js
@@ -8,6 +8,534 @@
'use strict';
-// https://webmachinelearning.github.io/webnn/#api-mlgraphbuilder-linear
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-linear
+// Calculate a linear function y = alpha * x + beta on the input tensor.
+//
+// dictionary MLLinearOptions {
+// double alpha = 1;
+// double beta = 0;
+// };
+//
+// MLOperand linear(MLOperand input, optional MLLinearOptions options = {});
-runWebNNConformanceTests('linear', buildOperationWithSingleInput);
+
+const getLinearPrecisionTolerance = (graphResources) => {
+ const toleranceValueDict = {float32: 2, float16: 2};
+ const expectedDataType =
+ getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs);
+ return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]};
+};
+
+const linearTests = [
+ {
+ 'name': 'linear float32 1D constant tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'linearInput': {
+ 'data': [
+ -1.12251615524292, -6.605223178863525, -1.9555538892745972,
+ -4.598548412322998, 4.234208106994629, 3.0975420475006104,
+ 3.7465922832489014, -4.487029552459717, 6.407402038574219,
+ -4.354544162750244, -5.819092750549316, 3.7214345932006836,
+ -6.330113887786865, 8.580595016479492, -6.764922142028809,
+ 6.433565616607666, -9.708685874938965, 2.6431379318237305,
+ 5.2140889167785645, 9.65861701965332, -8.721749305725098,
+ -0.4533396363258362, 9.992619514465332, -6.469675064086914
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'linear',
+ 'arguments': [{'input': 'linearInput'}],
+ 'outputs': 'linearOutput'
+ }],
+ 'expectedOutputs': {
+ 'linearOutput': {
+ 'data': [
+ -1.12251615524292, -6.605223178863525, -1.9555538892745972,
+ -4.598548412322998, 4.234208106994629, 3.0975420475006104,
+ 3.7465922832489014, -4.487029552459717, 6.407402038574219,
+ -4.354544162750244, -5.819092750549316, 3.7214345932006836,
+ -6.330113887786865, 8.580595016479492, -6.764922142028809,
+ 6.433565616607666, -9.708685874938965, 2.6431379318237305,
+ 5.2140889167785645, 9.65861701965332, -8.721749305725098,
+ -0.4533396363258362, 9.992619514465332, -6.469675064086914
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'linear float32 1D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'linearInput': {
+ 'data': [
+ -1.12251615524292, -6.605223178863525, -1.9555538892745972,
+ -4.598548412322998, 4.234208106994629, 3.0975420475006104,
+ 3.7465922832489014, -4.487029552459717, 6.407402038574219,
+ -4.354544162750244, -5.819092750549316, 3.7214345932006836,
+ -6.330113887786865, 8.580595016479492, -6.764922142028809,
+ 6.433565616607666, -9.708685874938965, 2.6431379318237305,
+ 5.2140889167785645, 9.65861701965332, -8.721749305725098,
+ -0.4533396363258362, 9.992619514465332, -6.469675064086914
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'linear',
+ 'arguments': [{'input': 'linearInput'}],
+ 'outputs': 'linearOutput'
+ }],
+ 'expectedOutputs': {
+ 'linearOutput': {
+ 'data': [
+ -1.12251615524292, -6.605223178863525, -1.9555538892745972,
+ -4.598548412322998, 4.234208106994629, 3.0975420475006104,
+ 3.7465922832489014, -4.487029552459717, 6.407402038574219,
+ -4.354544162750244, -5.819092750549316, 3.7214345932006836,
+ -6.330113887786865, 8.580595016479492, -6.764922142028809,
+ 6.433565616607666, -9.708685874938965, 2.6431379318237305,
+ 5.2140889167785645, 9.65861701965332, -8.721749305725098,
+ -0.4533396363258362, 9.992619514465332, -6.469675064086914
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'linear float32 2D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'linearInput': {
+ 'data': [
+ -1.12251615524292, -6.605223178863525, -1.9555538892745972,
+ -4.598548412322998, 4.234208106994629, 3.0975420475006104,
+ 3.7465922832489014, -4.487029552459717, 6.407402038574219,
+ -4.354544162750244, -5.819092750549316, 3.7214345932006836,
+ -6.330113887786865, 8.580595016479492, -6.764922142028809,
+ 6.433565616607666, -9.708685874938965, 2.6431379318237305,
+ 5.2140889167785645, 9.65861701965332, -8.721749305725098,
+ -0.4533396363258362, 9.992619514465332, -6.469675064086914
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'linear',
+ 'arguments': [{'input': 'linearInput'}],
+ 'outputs': 'linearOutput'
+ }],
+ 'expectedOutputs': {
+ 'linearOutput': {
+ 'data': [
+ -1.12251615524292, -6.605223178863525, -1.9555538892745972,
+ -4.598548412322998, 4.234208106994629, 3.0975420475006104,
+ 3.7465922832489014, -4.487029552459717, 6.407402038574219,
+ -4.354544162750244, -5.819092750549316, 3.7214345932006836,
+ -6.330113887786865, 8.580595016479492, -6.764922142028809,
+ 6.433565616607666, -9.708685874938965, 2.6431379318237305,
+ 5.2140889167785645, 9.65861701965332, -8.721749305725098,
+ -0.4533396363258362, 9.992619514465332, -6.469675064086914
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'linear float32 3D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'linearInput': {
+ 'data': [
+ -1.12251615524292, -6.605223178863525, -1.9555538892745972,
+ -4.598548412322998, 4.234208106994629, 3.0975420475006104,
+ 3.7465922832489014, -4.487029552459717, 6.407402038574219,
+ -4.354544162750244, -5.819092750549316, 3.7214345932006836,
+ -6.330113887786865, 8.580595016479492, -6.764922142028809,
+ 6.433565616607666, -9.708685874938965, 2.6431379318237305,
+ 5.2140889167785645, 9.65861701965332, -8.721749305725098,
+ -0.4533396363258362, 9.992619514465332, -6.469675064086914
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'linear',
+ 'arguments': [{'input': 'linearInput'}],
+ 'outputs': 'linearOutput'
+ }],
+ 'expectedOutputs': {
+ 'linearOutput': {
+ 'data': [
+ -1.12251615524292, -6.605223178863525, -1.9555538892745972,
+ -4.598548412322998, 4.234208106994629, 3.0975420475006104,
+ 3.7465922832489014, -4.487029552459717, 6.407402038574219,
+ -4.354544162750244, -5.819092750549316, 3.7214345932006836,
+ -6.330113887786865, 8.580595016479492, -6.764922142028809,
+ 6.433565616607666, -9.708685874938965, 2.6431379318237305,
+ 5.2140889167785645, 9.65861701965332, -8.721749305725098,
+ -0.4533396363258362, 9.992619514465332, -6.469675064086914
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'linear float32 4D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'linearInput': {
+ 'data': [
+ -1.12251615524292, -6.605223178863525, -1.9555538892745972,
+ -4.598548412322998, 4.234208106994629, 3.0975420475006104,
+ 3.7465922832489014, -4.487029552459717, 6.407402038574219,
+ -4.354544162750244, -5.819092750549316, 3.7214345932006836,
+ -6.330113887786865, 8.580595016479492, -6.764922142028809,
+ 6.433565616607666, -9.708685874938965, 2.6431379318237305,
+ 5.2140889167785645, 9.65861701965332, -8.721749305725098,
+ -0.4533396363258362, 9.992619514465332, -6.469675064086914
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'linear',
+ 'arguments': [{'input': 'linearInput'}],
+ 'outputs': 'linearOutput'
+ }],
+ 'expectedOutputs': {
+ 'linearOutput': {
+ 'data': [
+ -1.12251615524292, -6.605223178863525, -1.9555538892745972,
+ -4.598548412322998, 4.234208106994629, 3.0975420475006104,
+ 3.7465922832489014, -4.487029552459717, 6.407402038574219,
+ -4.354544162750244, -5.819092750549316, 3.7214345932006836,
+ -6.330113887786865, 8.580595016479492, -6.764922142028809,
+ 6.433565616607666, -9.708685874938965, 2.6431379318237305,
+ 5.2140889167785645, 9.65861701965332, -8.721749305725098,
+ -0.4533396363258362, 9.992619514465332, -6.469675064086914
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'linear float32 5D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'linearInput': {
+ 'data': [
+ -1.12251615524292, -6.605223178863525, -1.9555538892745972,
+ -4.598548412322998, 4.234208106994629, 3.0975420475006104,
+ 3.7465922832489014, -4.487029552459717, 6.407402038574219,
+ -4.354544162750244, -5.819092750549316, 3.7214345932006836,
+ -6.330113887786865, 8.580595016479492, -6.764922142028809,
+ 6.433565616607666, -9.708685874938965, 2.6431379318237305,
+ 5.2140889167785645, 9.65861701965332, -8.721749305725098,
+ -0.4533396363258362, 9.992619514465332, -6.469675064086914
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 1, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'linear',
+ 'arguments': [{'input': 'linearInput'}],
+ 'outputs': 'linearOutput'
+ }],
+ 'expectedOutputs': {
+ 'linearOutput': {
+ 'data': [
+ -1.12251615524292, -6.605223178863525, -1.9555538892745972,
+ -4.598548412322998, 4.234208106994629, 3.0975420475006104,
+ 3.7465922832489014, -4.487029552459717, 6.407402038574219,
+ -4.354544162750244, -5.819092750549316, 3.7214345932006836,
+ -6.330113887786865, 8.580595016479492, -6.764922142028809,
+ 6.433565616607666, -9.708685874938965, 2.6431379318237305,
+ 5.2140889167785645, 9.65861701965332, -8.721749305725098,
+ -0.4533396363258362, 9.992619514465332, -6.469675064086914
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 1, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'linear float32 4D tensor specified options.alpha and default options.beta',
+ 'graph': {
+ 'inputs': {
+ 'linearInput': {
+ 'data': [
+ -1.12251615524292, -6.605223178863525, -1.9555538892745972,
+ -4.598548412322998, 4.234208106994629, 3.0975420475006104,
+ 3.7465922832489014, -4.487029552459717, 6.407402038574219,
+ -4.354544162750244, -5.819092750549316, 3.7214345932006836,
+ -6.330113887786865, 8.580595016479492, -6.764922142028809,
+ 6.433565616607666, -9.708685874938965, 2.6431379318237305,
+ 5.2140889167785645, 9.65861701965332, -8.721749305725098,
+ -0.4533396363258362, 9.992619514465332, -6.469675064086914
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'linear',
+ 'arguments': [
+ {'input': 'linearInput'}, {'options': {'alpha': 7.398793812746618}}
+ ],
+ 'outputs': 'linearOutput'
+ }],
+ 'expectedOutputs': {
+ 'linearOutput': {
+ 'data': [
+ -8.305265426635742, -48.87068176269531, -14.46873950958252,
+ -34.023712158203125, 31.328031539916992, 22.918073654174805,
+ 27.72026252746582, -33.198604583740234, 47.407047271728516,
+ -32.2183723449707, -43.05426788330078, 27.53412628173828,
+ -46.835205078125, 63.486053466796875, -50.05226516723633,
+ 47.600624084472656, -71.83256530761719, 19.556032180786133,
+ 38.57796859741211, 71.46211242675781, -64.53042602539062,
+ -3.3541665077209473, 73.9333267211914, -47.86779022216797
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'linear float32 positive 4D tensor specified positive options.beta and default options.alpha',
+ 'graph': {
+ 'inputs': {
+ 'linearInput': {
+ 'data': [
+ 5.098546028137207, 3.381463050842285, 8.054762840270996,
+ 8.074773788452148, 0.47079092264175415, 5.243824005126953,
+ 3.827306032180786, 5.3697686195373535, 6.1033172607421875,
+ 3.7505786418914795, 0.7479738593101501, 1.8931976556777954,
+ 1.9056464433670044, 7.863316059112549, 4.58075475692749,
+ 9.373635292053223, 6.584214210510254, 9.344809532165527,
+ 5.16057825088501, 0.8060914278030396, 9.130533218383789,
+ 3.1937403678894043, 5.748293399810791, 4.113487720489502
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'linear',
+ 'arguments': [
+ {'input': 'linearInput'}, {'options': {'beta': 5.919095653700928}}
+ ],
+ 'outputs': 'linearOutput'
+ }],
+ 'expectedOutputs': {
+ 'linearOutput': {
+ 'data': [
+ 11.017641067504883, 9.300558090209961, 13.973857879638672,
+ 13.99386978149414, 6.389886379241943, 11.162919998168945,
+ 9.7464017868042, 11.288864135742188, 12.02241325378418,
+ 9.669673919677734, 6.667069435119629, 7.81229305267334,
+ 7.824741840362549, 13.782411575317383, 10.499850273132324,
+ 15.292730331420898, 12.50330924987793, 15.263904571533203,
+ 11.079673767089844, 6.725186824798584, 15.049629211425781,
+ 9.112835884094238, 11.667388916015625, 10.032583236694336
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'linear float32 negative 4D tensor specified negative options.beta and default options.alpha',
+ 'graph': {
+ 'inputs': {
+ 'linearInput': {
+ 'data': [
+ -5.098546028137207, -3.381463050842285, -8.054762840270996,
+ -8.074773788452148, -0.47079092264175415, -5.243824005126953,
+ -3.827306032180786, -5.3697686195373535, -6.1033172607421875,
+ -3.7505786418914795, -0.7479738593101501, -1.8931976556777954,
+ -1.9056464433670044, -7.863316059112549, -4.58075475692749,
+ -9.373635292053223, -6.584214210510254, -9.344809532165527,
+ -5.16057825088501, -0.8060914278030396, -9.130533218383789,
+ -3.1937403678894043, -5.748293399810791, -4.113487720489502
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'linear',
+ 'arguments': [
+ {'input': 'linearInput'}, {'options': {'beta': -5.919095653700928}}
+ ],
+ 'outputs': 'linearOutput'
+ }],
+ 'expectedOutputs': {
+ 'linearOutput': {
+ 'data': [
+ -11.017641067504883, -9.300558090209961, -13.973857879638672,
+ -13.99386978149414, -6.389886379241943, -11.162919998168945,
+ -9.7464017868042, -11.288864135742188, -12.02241325378418,
+ -9.669673919677734, -6.667069435119629, -7.81229305267334,
+ -7.824741840362549, -13.782411575317383, -10.499850273132324,
+ -15.292730331420898, -12.50330924987793, -15.263904571533203,
+ -11.079673767089844, -6.725186824798584, -15.049629211425781,
+ -9.112835884094238, -11.667388916015625, -10.032583236694336
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'linear float32 positive 4D tensor all options (positive options.alpha and positive options.beta)',
+ 'graph': {
+ 'inputs': {
+ 'linearInput': {
+ 'data': [
+ 5.098546028137207, 3.381463050842285, 8.054762840270996,
+ 8.074773788452148, 0.47079092264175415, 5.243824005126953,
+ 3.827306032180786, 5.3697686195373535, 6.1033172607421875,
+ 3.7505786418914795, 0.7479738593101501, 1.8931976556777954,
+ 1.9056464433670044, 7.863316059112549, 4.58075475692749,
+ 9.373635292053223, 6.584214210510254, 9.344809532165527,
+ 5.16057825088501, 0.8060914278030396, 9.130533218383789,
+ 3.1937403678894043, 5.748293399810791, 4.113487720489502
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'linear',
+ 'arguments': [
+ {'input': 'linearInput'},
+ {'options': {'alpha': 7.398793812746618, 'beta': 5.919095653700928}}
+ ],
+ 'outputs': 'linearOutput'
+ }],
+ 'expectedOutputs': {
+ 'linearOutput': {
+ 'data': [
+ 43.64218521118164, 30.937843322753906, 65.5146255493164,
+ 65.66268157958984, 9.402379989624023, 44.71706771850586,
+ 34.236541748046875, 45.64890670776367, 51.0762825012207,
+ 33.668853759765625, 11.45319938659668, 19.92647361755371,
+ 20.018579483032227, 64.09815216064453, 39.811153411865234,
+ 75.27268981933594, 54.63433837890625, 75.05941009521484,
+ 44.10115051269531, 11.883199691772461, 73.47402954101562,
+ 29.548921585083008, 48.44953155517578, 36.35394287109375
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'linear float32 positive 4D tensor all options (negative options.alpha and negative options.beta)',
+ 'graph': {
+ 'inputs': {
+ 'linearInput': {
+ 'data': [
+ 5.098546028137207, 3.381463050842285, 8.054762840270996,
+ 8.074773788452148, 0.47079092264175415, 5.243824005126953,
+ 3.827306032180786, 5.3697686195373535, 6.1033172607421875,
+ 3.7505786418914795, 0.7479738593101501, 1.8931976556777954,
+ 1.9056464433670044, 7.863316059112549, 4.58075475692749,
+ 9.373635292053223, 6.584214210510254, 9.344809532165527,
+ 5.16057825088501, 0.8060914278030396, 9.130533218383789,
+ 3.1937403678894043, 5.748293399810791, 4.113487720489502
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'linear',
+ 'arguments': [
+ {'input': 'linearInput'},
+ {'options': {'alpha': -7.398793812746618, 'beta': -5.919095653700928}}
+ ],
+ 'outputs': 'linearOutput'
+ }],
+ 'expectedOutputs': {
+ 'linearOutput': {
+ 'data': [
+ -43.64218521118164, -30.937843322753906, -65.5146255493164,
+ -65.66268157958984, -9.402379989624023, -44.71706771850586,
+ -34.236541748046875, -45.64890670776367, -51.0762825012207,
+ -33.668853759765625, -11.45319938659668, -19.92647361755371,
+ -20.018579483032227, -64.09815216064453, -39.811153411865234,
+ -75.27268981933594, -54.63433837890625, -75.05941009521484,
+ -44.10115051269531, -11.883199691772461, -73.47402954101562,
+ -29.548921585083008, -48.44953155517578, -36.35394287109375
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'linear float32 negative 4D tensor all options (positive options.alpha and negative options.beta)',
+ 'graph': {
+ 'inputs': {
+ 'linearInput': {
+ 'data': [
+ -5.098546028137207, -3.381463050842285, -8.054762840270996,
+ -8.074773788452148, -0.47079092264175415, -5.243824005126953,
+ -3.827306032180786, -5.3697686195373535, -6.1033172607421875,
+ -3.7505786418914795, -0.7479738593101501, -1.8931976556777954,
+ -1.9056464433670044, -7.863316059112549, -4.58075475692749,
+ -9.373635292053223, -6.584214210510254, -9.344809532165527,
+ -5.16057825088501, -0.8060914278030396, -9.130533218383789,
+ -3.1937403678894043, -5.748293399810791, -4.113487720489502
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'linear',
+ 'arguments': [
+ {'input': 'linearInput'},
+ {'options': {'alpha': 7.398793812746618, 'beta': -5.919095653700928}}
+ ],
+ 'outputs': 'linearOutput'
+ }],
+ 'expectedOutputs': {
+ 'linearOutput': {
+ 'data': [
+ -43.64218521118164, -30.937843322753906, -65.5146255493164,
+ -65.66268157958984, -9.402379989624023, -44.71706771850586,
+ -34.236541748046875, -45.64890670776367, -51.0762825012207,
+ -33.668853759765625, -11.45319938659668, -19.92647361755371,
+ -20.018579483032227, -64.09815216064453, -39.811153411865234,
+ -75.27268981933594, -54.63433837890625, -75.05941009521484,
+ -44.10115051269531, -11.883199691772461, -73.47402954101562,
+ -29.548921585083008, -48.44953155517578, -36.35394287109375
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ linearTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getLinearPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/log.https.any.js b/tests/wpt/tests/webnn/conformance_tests/log.https.any.js
new file mode 100644
index 00000000000..a8d5b006ebb
--- /dev/null
+++ b/tests/wpt/tests/webnn/conformance_tests/log.https.any.js
@@ -0,0 +1,297 @@
+// META: title=test WebNN API element-wise log operation
+// META: global=window,dedicatedworker
+// META: variant=?cpu
+// META: variant=?gpu
+// META: variant=?npu
+// META: script=../resources/utils.js
+// META: timeout=long
+
+'use strict';
+
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-unary
+// Compute the natural logarithm of the input tensor, element-wise.
+//
+// MLOperand log(MLOperand input);
+
+
+const getLogPrecisionTolerance = (graphResources) => {
+ const toleranceValueDict = {float32: 1 / 1024, float16: 1 / 1024};
+ const expectedDataType =
+ getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs);
+ return {metricType: 'ATOL', value: toleranceValueDict[expectedDataType]};
+};
+
+const logTests = [
+ {
+ 'name': 'log float32 positive 0D scalar',
+ 'graph': {
+ 'inputs': {
+ 'logInput': {
+ 'data': [63.82542037963867],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'log',
+ 'arguments': [{'input': 'logInput'}],
+ 'outputs': 'logOutput'
+ }],
+ 'expectedOutputs': {
+ 'logOutput': {
+ 'data': [4.15615177154541],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'log float32 positive 1D constant tensor',
+ 'graph': {
+ 'inputs': {
+ 'logInput': {
+ 'data': [
+ 63.82542037963867, 25.317724227905273, 96.44790649414062,
+ 40.91856384277344, 36.579071044921875, 57.81629943847656,
+ 10.057244300842285, 17.836828231811523, 50.79246520996094,
+ 83.860595703125, 12.065509796142578, 22.702478408813477,
+ 47.559814453125, 17.543880462646484, 32.65243911743164,
+ 20.353010177612305, 52.54472351074219, 45.608802795410156,
+ 30.385812759399414, 13.709558486938477, 10.396759986877441,
+ 50.840946197509766, 5.682034492492676, 94.02275848388672
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'log',
+ 'arguments': [{'input': 'logInput'}],
+ 'outputs': 'logOutput'
+ }],
+ 'expectedOutputs': {
+ 'logOutput': {
+ 'data': [
+ 4.15615177154541, 3.2315046787261963, 4.569003105163574,
+ 3.7115838527679443, 3.5994763374328613, 4.057270526885986,
+ 2.308293104171753, 2.88126540184021, 3.927747964859009,
+ 4.4291558265686035, 2.4903509616851807, 3.122474193572998,
+ 3.861988067626953, 2.8647050857543945, 3.48591947555542,
+ 3.0132288932800293, 3.9616646766662598, 3.820100784301758,
+ 3.413975715637207, 2.618093252182007, 2.34149432182312,
+ 3.9287021160125732, 1.7373093366622925, 4.54353666305542
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'log float32 positive 1D tensor',
+ 'graph': {
+ 'inputs': {
+ 'logInput': {
+ 'data': [
+ 63.82542037963867, 25.317724227905273, 96.44790649414062,
+ 40.91856384277344, 36.579071044921875, 57.81629943847656,
+ 10.057244300842285, 17.836828231811523, 50.79246520996094,
+ 83.860595703125, 12.065509796142578, 22.702478408813477,
+ 47.559814453125, 17.543880462646484, 32.65243911743164,
+ 20.353010177612305, 52.54472351074219, 45.608802795410156,
+ 30.385812759399414, 13.709558486938477, 10.396759986877441,
+ 50.840946197509766, 5.682034492492676, 94.02275848388672
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'log',
+ 'arguments': [{'input': 'logInput'}],
+ 'outputs': 'logOutput'
+ }],
+ 'expectedOutputs': {
+ 'logOutput': {
+ 'data': [
+ 4.15615177154541, 3.2315046787261963, 4.569003105163574,
+ 3.7115838527679443, 3.5994763374328613, 4.057270526885986,
+ 2.308293104171753, 2.88126540184021, 3.927747964859009,
+ 4.4291558265686035, 2.4903509616851807, 3.122474193572998,
+ 3.861988067626953, 2.8647050857543945, 3.48591947555542,
+ 3.0132288932800293, 3.9616646766662598, 3.820100784301758,
+ 3.413975715637207, 2.618093252182007, 2.34149432182312,
+ 3.9287021160125732, 1.7373093366622925, 4.54353666305542
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'log float32 positive 2D tensor',
+ 'graph': {
+ 'inputs': {
+ 'logInput': {
+ 'data': [
+ 63.82542037963867, 25.317724227905273, 96.44790649414062,
+ 40.91856384277344, 36.579071044921875, 57.81629943847656,
+ 10.057244300842285, 17.836828231811523, 50.79246520996094,
+ 83.860595703125, 12.065509796142578, 22.702478408813477,
+ 47.559814453125, 17.543880462646484, 32.65243911743164,
+ 20.353010177612305, 52.54472351074219, 45.608802795410156,
+ 30.385812759399414, 13.709558486938477, 10.396759986877441,
+ 50.840946197509766, 5.682034492492676, 94.02275848388672
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'log',
+ 'arguments': [{'input': 'logInput'}],
+ 'outputs': 'logOutput'
+ }],
+ 'expectedOutputs': {
+ 'logOutput': {
+ 'data': [
+ 4.15615177154541, 3.2315046787261963, 4.569003105163574,
+ 3.7115838527679443, 3.5994763374328613, 4.057270526885986,
+ 2.308293104171753, 2.88126540184021, 3.927747964859009,
+ 4.4291558265686035, 2.4903509616851807, 3.122474193572998,
+ 3.861988067626953, 2.8647050857543945, 3.48591947555542,
+ 3.0132288932800293, 3.9616646766662598, 3.820100784301758,
+ 3.413975715637207, 2.618093252182007, 2.34149432182312,
+ 3.9287021160125732, 1.7373093366622925, 4.54353666305542
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'log float32 positive 3D tensor',
+ 'graph': {
+ 'inputs': {
+ 'logInput': {
+ 'data': [
+ 63.82542037963867, 25.317724227905273, 96.44790649414062,
+ 40.91856384277344, 36.579071044921875, 57.81629943847656,
+ 10.057244300842285, 17.836828231811523, 50.79246520996094,
+ 83.860595703125, 12.065509796142578, 22.702478408813477,
+ 47.559814453125, 17.543880462646484, 32.65243911743164,
+ 20.353010177612305, 52.54472351074219, 45.608802795410156,
+ 30.385812759399414, 13.709558486938477, 10.396759986877441,
+ 50.840946197509766, 5.682034492492676, 94.02275848388672
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'log',
+ 'arguments': [{'input': 'logInput'}],
+ 'outputs': 'logOutput'
+ }],
+ 'expectedOutputs': {
+ 'logOutput': {
+ 'data': [
+ 4.15615177154541, 3.2315046787261963, 4.569003105163574,
+ 3.7115838527679443, 3.5994763374328613, 4.057270526885986,
+ 2.308293104171753, 2.88126540184021, 3.927747964859009,
+ 4.4291558265686035, 2.4903509616851807, 3.122474193572998,
+ 3.861988067626953, 2.8647050857543945, 3.48591947555542,
+ 3.0132288932800293, 3.9616646766662598, 3.820100784301758,
+ 3.413975715637207, 2.618093252182007, 2.34149432182312,
+ 3.9287021160125732, 1.7373093366622925, 4.54353666305542
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'log float32 positive 4D tensor',
+ 'graph': {
+ 'inputs': {
+ 'logInput': {
+ 'data': [
+ 63.82542037963867, 25.317724227905273, 96.44790649414062,
+ 40.91856384277344, 36.579071044921875, 57.81629943847656,
+ 10.057244300842285, 17.836828231811523, 50.79246520996094,
+ 83.860595703125, 12.065509796142578, 22.702478408813477,
+ 47.559814453125, 17.543880462646484, 32.65243911743164,
+ 20.353010177612305, 52.54472351074219, 45.608802795410156,
+ 30.385812759399414, 13.709558486938477, 10.396759986877441,
+ 50.840946197509766, 5.682034492492676, 94.02275848388672
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'log',
+ 'arguments': [{'input': 'logInput'}],
+ 'outputs': 'logOutput'
+ }],
+ 'expectedOutputs': {
+ 'logOutput': {
+ 'data': [
+ 4.15615177154541, 3.2315046787261963, 4.569003105163574,
+ 3.7115838527679443, 3.5994763374328613, 4.057270526885986,
+ 2.308293104171753, 2.88126540184021, 3.927747964859009,
+ 4.4291558265686035, 2.4903509616851807, 3.122474193572998,
+ 3.861988067626953, 2.8647050857543945, 3.48591947555542,
+ 3.0132288932800293, 3.9616646766662598, 3.820100784301758,
+ 3.413975715637207, 2.618093252182007, 2.34149432182312,
+ 3.9287021160125732, 1.7373093366622925, 4.54353666305542
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'log float32 positive 5D tensor',
+ 'graph': {
+ 'inputs': {
+ 'logInput': {
+ 'data': [
+ 63.82542037963867, 25.317724227905273, 96.44790649414062,
+ 40.91856384277344, 36.579071044921875, 57.81629943847656,
+ 10.057244300842285, 17.836828231811523, 50.79246520996094,
+ 83.860595703125, 12.065509796142578, 22.702478408813477,
+ 47.559814453125, 17.543880462646484, 32.65243911743164,
+ 20.353010177612305, 52.54472351074219, 45.608802795410156,
+ 30.385812759399414, 13.709558486938477, 10.396759986877441,
+ 50.840946197509766, 5.682034492492676, 94.02275848388672
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 1, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'log',
+ 'arguments': [{'input': 'logInput'}],
+ 'outputs': 'logOutput'
+ }],
+ 'expectedOutputs': {
+ 'logOutput': {
+ 'data': [
+ 4.15615177154541, 3.2315046787261963, 4.569003105163574,
+ 3.7115838527679443, 3.5994763374328613, 4.057270526885986,
+ 2.308293104171753, 2.88126540184021, 3.927747964859009,
+ 4.4291558265686035, 2.4903509616851807, 3.122474193572998,
+ 3.861988067626953, 2.8647050857543945, 3.48591947555542,
+ 3.0132288932800293, 3.9616646766662598, 3.820100784301758,
+ 3.413975715637207, 2.618093252182007, 2.34149432182312,
+ 3.9287021160125732, 1.7373093366622925, 4.54353666305542
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 1, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ logTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getLogPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/logical_not.https.any.js b/tests/wpt/tests/webnn/conformance_tests/logical_not.https.any.js
index db0cc4e8c60..51db74cd3ae 100644
--- a/tests/wpt/tests/webnn/conformance_tests/logical_not.https.any.js
+++ b/tests/wpt/tests/webnn/conformance_tests/logical_not.https.any.js
@@ -1,4 +1,4 @@
-// META: title=test WebNN API element-wise binary operations
+// META: title=test WebNN API element-wise logicalNot operation
// META: global=window,dedicatedworker
// META: variant=?cpu
// META: variant=?gpu
@@ -8,6 +8,214 @@
'use strict';
-// https://webmachinelearning.github.io/webnn/#dom-mlgraphbuilder-logicalnot
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-logical
+// Invert the values of the input tensor to values 0 or 1, element-wise.
+//
+// MLOperand logicalNot(MLOperand a);
-runWebNNConformanceTests('logicalNot', buildOperationWithSingleInput);
+
+const getLogicalNotPrecisionTolerance = (graphResources) => {
+ const toleranceValueDict = {uint8: 0};
+ const expectedDataType =
+ getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs);
+ return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]};
+};
+
+const logicalNotTests = [
+ {
+ 'name': 'logicalNot uint8 0D scalar',
+ 'graph': {
+ 'inputs': {
+ 'logicalNotInput':
+ {'data': [1], 'descriptor': {'dimensions': [], 'dataType': 'uint8'}}
+ },
+ 'operators': [{
+ 'name': 'logicalNot',
+ 'arguments': [{'input': 'logicalNotInput'}],
+ 'outputs': 'logicalNotOutput'
+ }],
+ 'expectedOutputs': {
+ 'logicalNotOutput':
+ {'data': [0], 'descriptor': {'dimensions': [], 'dataType': 'uint8'}}
+ }
+ }
+ },
+ {
+ 'name': 'logicalNot uint8 1D constant tensor',
+ 'graph': {
+ 'inputs': {
+ 'logicalNotInput': {
+ 'data': [
+ 204, 130, 90, 0, 147, 42, 10, 18, 13, 235, 0, 233,
+ 53, 83, 9, 254, 69, 56, 219, 109, 171, 0, 228, 135
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'uint8'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'logicalNot',
+ 'arguments': [{'input': 'logicalNotInput'}],
+ 'outputs': 'logicalNotOutput'
+ }],
+ 'expectedOutputs': {
+ 'logicalNotOutput': {
+ 'data': [
+ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'logicalNot uint8 1D tensor',
+ 'graph': {
+ 'inputs': {
+ 'logicalNotInput': {
+ 'data': [
+ 204, 130, 90, 0, 147, 42, 10, 18, 13, 235, 0, 233,
+ 53, 83, 9, 254, 69, 56, 219, 109, 171, 0, 228, 135
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'uint8'}
+ }
+ },
+ 'operators': [{
+ 'name': 'logicalNot',
+ 'arguments': [{'input': 'logicalNotInput'}],
+ 'outputs': 'logicalNotOutput'
+ }],
+ 'expectedOutputs': {
+ 'logicalNotOutput': {
+ 'data': [
+ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'logicalNot uint8 2D tensor',
+ 'graph': {
+ 'inputs': {
+ 'logicalNotInput': {
+ 'data': [
+ 204, 130, 90, 0, 147, 42, 10, 18, 13, 235, 0, 233,
+ 53, 83, 9, 254, 69, 56, 219, 109, 171, 0, 228, 135
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'uint8'}
+ }
+ },
+ 'operators': [{
+ 'name': 'logicalNot',
+ 'arguments': [{'input': 'logicalNotInput'}],
+ 'outputs': 'logicalNotOutput'
+ }],
+ 'expectedOutputs': {
+ 'logicalNotOutput': {
+ 'data': [
+ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'logicalNot uint8 3D tensor',
+ 'graph': {
+ 'inputs': {
+ 'logicalNotInput': {
+ 'data': [
+ 204, 130, 90, 0, 147, 42, 10, 18, 13, 235, 0, 233,
+ 53, 83, 9, 254, 69, 56, 219, 109, 171, 0, 228, 135
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'uint8'}
+ }
+ },
+ 'operators': [{
+ 'name': 'logicalNot',
+ 'arguments': [{'input': 'logicalNotInput'}],
+ 'outputs': 'logicalNotOutput'
+ }],
+ 'expectedOutputs': {
+ 'logicalNotOutput': {
+ 'data': [
+ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'logicalNot uint8 4D tensor',
+ 'graph': {
+ 'inputs': {
+ 'logicalNotInput': {
+ 'data': [
+ 204, 130, 90, 0, 147, 42, 10, 18, 13, 235, 0, 233,
+ 53, 83, 9, 254, 69, 56, 219, 109, 171, 0, 228, 135
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint8'}
+ }
+ },
+ 'operators': [{
+ 'name': 'logicalNot',
+ 'arguments': [{'input': 'logicalNotInput'}],
+ 'outputs': 'logicalNotOutput'
+ }],
+ 'expectedOutputs': {
+ 'logicalNotOutput': {
+ 'data': [
+ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint8'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'logicalNot uint8 5D tensor',
+ 'graph': {
+ 'inputs': {
+ 'logicalNotInput': {
+ 'data': [
+ 204, 130, 90, 0, 147, 42, 10, 18, 13, 235, 0, 233,
+ 53, 83, 9, 254, 69, 56, 219, 109, 171, 0, 228, 135
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 1, 3], 'dataType': 'uint8'}
+ }
+ },
+ 'operators': [{
+ 'name': 'logicalNot',
+ 'arguments': [{'input': 'logicalNotInput'}],
+ 'outputs': 'logicalNotOutput'
+ }],
+ 'expectedOutputs': {
+ 'logicalNotOutput': {
+ 'data': [
+ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 1, 3], 'dataType': 'uint8'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ logicalNotTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getLogicalNotPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/matmul.https.any.js b/tests/wpt/tests/webnn/conformance_tests/matmul.https.any.js
index 50930d1b0f7..58410a60463 100644
--- a/tests/wpt/tests/webnn/conformance_tests/matmul.https.any.js
+++ b/tests/wpt/tests/webnn/conformance_tests/matmul.https.any.js
@@ -8,6 +8,573 @@
'use strict';
-// https://webmachinelearning.github.io/webnn/#api-mlgraphbuilder-matmul
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-matmul
+// Compute the matrix product of two input tensors.
+// MLOperand matmul(MLOperand a, MLOperand b);
-runWebNNConformanceTests('matmul', buildOperationWithTwoInputs);
+
+const getMatmulPrecisionTolerance = (graphResources) => {
+ const args = graphResources.operators[0].arguments;
+ const shapeA = graphResources.inputs[args[0][Object.keys(args[0])[0]]]
+ .descriptor.dimensions;
+ const tolerance = shapeA[shapeA.length - 1] * 2;
+ const toleranceValueDict = {float32: tolerance, float16: tolerance};
+ const expectedDataType =
+ getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs);
+ return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]};
+};
+
+const matmulTests = [
+ {
+ 'name': 'matmul float32 2D and 2D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 10.43066120147705, 24.467519760131836, 55.887577056884766,
+ 3.2410826683044434, 87.58891296386719, 22.40154457092285,
+ 79.85144805908203, 99.64449310302734, 24.740541458129883,
+ 65.9624252319336, 38.136077880859375, 87.11140441894531
+ ],
+ 'descriptor': {'dimensions': [3, 4], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 88.1700439453125, 78.4012680053711, 14.819003105163574,
+ 3.6923038959503174, 45.906429290771484, 43.083919525146484,
+ 47.199466705322266, 60.92521667480469, 8.162760734558105,
+ 20.333263397216797, 20.438398361206055, 27.0194091796875,
+ 15.601424217224121, 87.46969604492188, 65.79554748535156,
+ 69.31697082519531, 31.984439849853516, 12.291812896728516,
+ 13.304834365844727, 85.26705169677734
+ ],
+ 'descriptor': {'dimensions': [4, 5], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'matmul',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 3340.7431640625, 3586.344482421875, 2557.025634765625,
+ 5169.8271484375, 4929.85009765625, 17226.955078125, 13269.03515625,
+ 5133.4072265625, 8816.5986328125, 18226.65234375, 11841.033203125,
+ 8869.705078125, 6051.1396484375, 5124.5390625, 12413.8984375
+ ],
+ 'descriptor': {'dimensions': [3, 5], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'matmul float32 3D and 3D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 56.46701431274414, 99.86045837402344, 71.054931640625,
+ 32.454383850097656, 17.310747146606445, 2.586275100708008,
+ 92.31499481201172, 96.9758529663086, 26.472131729125977,
+ 77.67031860351562, 29.278789520263672, 82.12142181396484,
+ 89.89308166503906, 82.49795532226562, 64.36865997314453,
+ 23.75928497314453, 6.670266628265381, 81.55583190917969,
+ 16.142963409423828, 57.45134735107422, 26.826417922973633,
+ 85.02970123291016, 36.1988639831543, 89.60960388183594
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 70.38780212402344, 25.48917579650879, 28.254196166992188,
+ 84.5148696899414, 58.873416900634766, 46.252838134765625,
+ 24.897335052490234, 44.0944938659668, 51.86564636230469,
+ 1.123237133026123, 4.187554836273193, 71.24649810791016,
+ 16.034526824951172, 23.677297592163086, 61.27727508544922,
+ 65.15946197509766, 58.39249801635742, 70.12741088867188,
+ 9.11972713470459, 24.179977416992188, 84.4263687133789,
+ 78.55551147460938, 38.48297119140625, 80.6541519165039,
+ 57.152122497558594, 46.109710693359375, 28.41227912902832,
+ 90.92566680908203, 94.66068267822266, 61.77287673950195,
+ 60.324859619140625, 70.97433471679688, 10.631051063537598,
+ 55.61628341674805, 35.052310943603516, 22.12839126586914,
+ 38.19757843017578, 78.17564392089844, 62.57684326171875,
+ 88.35256958007812
+ ],
+ 'descriptor': {'dimensions': [2, 4, 5], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'matmul',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 11005.6748046875, 10883.064453125, 9414.0009765625,
+ 11929.9931640625, 8575.3720703125, 8043.556640625,
+ 12745.41015625, 8884.0341796875, 4667.3173828125,
+ 9023.7333984375, 10929.3818359375, 9489.8232421875,
+ 10401.216796875, 7707.87744140625, 5425.5654296875,
+ 15802.0888671875, 14881.6220703125, 13502.23828125,
+ 20126.2890625, 14589.1806640625, 6568.7900390625,
+ 6181.41162109375, 12335.123046875, 12751.05078125,
+ 11060.98046875, 10352.16015625, 10515.310546875,
+ 16153.86328125, 17833.36328125, 15971.80859375
+ ],
+ 'descriptor': {'dimensions': [2, 3, 5], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'matmul float32 4D and 4D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 56.46701431274414, 99.86045837402344, 71.054931640625,
+ 32.454383850097656, 17.310747146606445, 2.586275100708008,
+ 92.31499481201172, 96.9758529663086, 26.472131729125977,
+ 77.67031860351562, 29.278789520263672, 82.12142181396484,
+ 89.89308166503906, 82.49795532226562, 64.36865997314453,
+ 23.75928497314453, 6.670266628265381, 81.55583190917969,
+ 16.142963409423828, 57.45134735107422, 26.826417922973633,
+ 85.02970123291016, 36.1988639831543, 89.60960388183594
+ ],
+ 'descriptor': {'dimensions': [2, 1, 3, 4], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 70.38780212402344, 25.48917579650879, 28.254196166992188,
+ 84.5148696899414, 58.873416900634766, 46.252838134765625,
+ 24.897335052490234, 44.0944938659668, 51.86564636230469,
+ 1.123237133026123, 4.187554836273193, 71.24649810791016,
+ 16.034526824951172, 23.677297592163086, 61.27727508544922,
+ 65.15946197509766, 58.39249801635742, 70.12741088867188,
+ 9.11972713470459, 24.179977416992188, 84.4263687133789,
+ 78.55551147460938, 38.48297119140625, 80.6541519165039,
+ 57.152122497558594, 46.109710693359375, 28.41227912902832,
+ 90.92566680908203, 94.66068267822266, 61.77287673950195,
+ 60.324859619140625, 70.97433471679688, 10.631051063537598,
+ 55.61628341674805, 35.052310943603516, 22.12839126586914,
+ 38.19757843017578, 78.17564392089844, 62.57684326171875,
+ 88.35256958007812
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 5], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'matmul',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 11005.6748046875, 10883.064453125, 9414.0009765625,
+ 11929.9931640625, 8575.3720703125, 8043.556640625,
+ 12745.41015625, 8884.0341796875, 4667.3173828125,
+ 9023.7333984375, 10929.3818359375, 9489.8232421875,
+ 10401.216796875, 7707.87744140625, 5425.5654296875,
+ 15802.0888671875, 14881.6220703125, 13502.23828125,
+ 20126.2890625, 14589.1806640625, 6568.7900390625,
+ 6181.41162109375, 12335.123046875, 12751.05078125,
+ 11060.98046875, 10352.16015625, 10515.310546875,
+ 16153.86328125, 17833.36328125, 15971.80859375
+ ],
+ 'descriptor': {'dimensions': [2, 1, 3, 5], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'matmul float32 3D and 3D (broadcast) tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 56.46701431274414, 99.86045837402344, 71.054931640625,
+ 32.454383850097656, 17.310747146606445, 2.586275100708008,
+ 92.31499481201172, 96.9758529663086, 26.472131729125977,
+ 77.67031860351562, 29.278789520263672, 82.12142181396484,
+ 89.89308166503906, 82.49795532226562, 64.36865997314453,
+ 23.75928497314453, 6.670266628265381, 81.55583190917969,
+ 16.142963409423828, 57.45134735107422, 26.826417922973633,
+ 85.02970123291016, 36.1988639831543, 89.60960388183594
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 27.829805374145508, 83.1454849243164, 34.41289520263672,
+ 83.20379638671875
+ ],
+ 'descriptor': {'dimensions': [1, 4, 1], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'matmul',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 15019.9462890625, 11942.376953125, 15035.0322265625,
+ 13553.013671875, 12302.328125, 16517.9765625
+ ],
+ 'descriptor': {'dimensions': [2, 3, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'matmul float32 3D and 2D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 56.46701431274414, 99.86045837402344, 71.054931640625,
+ 32.454383850097656, 17.310747146606445, 2.586275100708008,
+ 92.31499481201172, 96.9758529663086, 26.472131729125977,
+ 77.67031860351562, 29.278789520263672, 82.12142181396484,
+ 89.89308166503906, 82.49795532226562, 64.36865997314453,
+ 23.75928497314453, 6.670266628265381, 81.55583190917969,
+ 16.142963409423828, 57.45134735107422, 26.826417922973633,
+ 85.02970123291016, 36.1988639831543, 89.60960388183594
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 27.829805374145508, 83.1454849243164, 34.41289520263672,
+ 83.20379638671875
+ ],
+ 'descriptor': {'dimensions': [4, 1], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'matmul',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 15019.9462890625, 11942.376953125, 15035.0322265625,
+ 13553.013671875, 12302.328125, 16517.9765625
+ ],
+ 'descriptor': {'dimensions': [2, 3, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'matmul float32 4D and 4D (broadcast) tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 33.75957107543945, 97.24552917480469, 83.7085189819336,
+ 64.53984069824219, 29.57938003540039, 17.19923973083496,
+ 67.94749450683594, 97.45838165283203, 54.449283599853516,
+ 29.552200317382812, 51.99970245361328, 36.03101348876953,
+ 9.701058387756348, 27.04842185974121, 6.020919322967529,
+ 22.940902709960938, 53.1243896484375, 15.292234420776367,
+ 48.21302795410156, 87.40799713134766, 51.34442138671875,
+ 21.1557559967041, 27.589487075805664, 58.412384033203125,
+ 5.963276386260986, 84.74938201904297, 55.45738220214844,
+ 50.858699798583984, 23.763574600219727, 62.330928802490234,
+ 35.774959564208984, 17.340242385864258, 29.16901397705078,
+ 23.191360473632812, 27.060928344726562, 1.2828527688980103,
+ 8.720425605773926, 48.45281219482422, 99.0130386352539,
+ 65.86412048339844, 92.69683074951172, 85.43540954589844,
+ 37.49127960205078, 51.397132873535156, 53.19015121459961,
+ 38.33119201660156, 75.20586395263672, 3.8537938594818115
+ ],
+ 'descriptor': {'dimensions': [2, 2, 3, 4], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 88.1700439453125, 78.4012680053711, 14.819003105163574,
+ 3.6923038959503174, 45.906429290771484, 43.083919525146484,
+ 47.199466705322266, 60.92521667480469, 8.162760734558105,
+ 20.333263397216797, 20.438398361206055, 27.0194091796875,
+ 15.601424217224121, 87.46969604492188, 65.79554748535156,
+ 69.31697082519531, 31.984439849853516, 12.291812896728516,
+ 13.304834365844727, 85.26705169677734
+ ],
+ 'descriptor': {'dimensions': [1, 1, 4, 5], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'matmul',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 13350.8759765625, 11562.755859375, 8524.271484375,
+ 9099.0927734375, 14537.8701171875, 11493.283203125,
+ 8083.90869140625, 3744.22216796875, 7489.62353515625,
+ 14488.2314453125, 9634.3720703125, 8221.173828125,
+ 3861.51416015625, 5470.0556640625, 9594.072265625,
+ 3733.946533203125, 2933.679931640625, 2167.611083984375,
+ 1088.48193359375, 3347.576416015625, 12387.083984375,
+ 8985.1884765625, 3545.52783203125, 5701.10595703125,
+ 13374.9169921875, 10051.3671875, 7637.7470703125,
+ 3198.221435546875, 3552.6796875, 9583.1220703125,
+ 8835.94921875, 7592.7666015625, 6742.10400390625,
+ 6241.31396484375, 9982.404296875, 6713.85205078125,
+ 6326.3173828125, 4920.9609375, 3956.46875,
+ 6190.67626953125, 4213.013671875, 4153.708984375,
+ 2283.152099609375, 2681.085693359375, 3700.47509765625,
+ 9445.5869140625, 7752.5400390625, 5435.56005859375,
+ 9964.6591796875, 13516.18359375, 16182.931640625,
+ 13956.9560546875, 7795.52685546875, 5002.8349609375,
+ 12841.802734375, 8145.45654296875, 8134.66650390625,
+ 4344.25, 7138.79052734375, 8497.98046875
+ ],
+ 'descriptor': {'dimensions': [2, 2, 3, 5], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'matmul float32 4D and 3D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 33.75957107543945, 97.24552917480469, 83.7085189819336,
+ 64.53984069824219, 29.57938003540039, 17.19923973083496,
+ 67.94749450683594, 97.45838165283203, 54.449283599853516,
+ 29.552200317382812, 51.99970245361328, 36.03101348876953,
+ 9.701058387756348, 27.04842185974121, 6.020919322967529,
+ 22.940902709960938, 53.1243896484375, 15.292234420776367,
+ 48.21302795410156, 87.40799713134766, 51.34442138671875,
+ 21.1557559967041, 27.589487075805664, 58.412384033203125,
+ 5.963276386260986, 84.74938201904297, 55.45738220214844,
+ 50.858699798583984, 23.763574600219727, 62.330928802490234,
+ 35.774959564208984, 17.340242385864258, 29.16901397705078,
+ 23.191360473632812, 27.060928344726562, 1.2828527688980103,
+ 8.720425605773926, 48.45281219482422, 99.0130386352539,
+ 65.86412048339844, 92.69683074951172, 85.43540954589844,
+ 37.49127960205078, 51.397132873535156, 53.19015121459961,
+ 38.33119201660156, 75.20586395263672, 3.8537938594818115
+ ],
+ 'descriptor': {'dimensions': [2, 2, 3, 4], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 70.38780212402344, 25.48917579650879, 28.254196166992188,
+ 84.5148696899414, 58.873416900634766, 46.252838134765625,
+ 24.897335052490234, 44.0944938659668, 51.86564636230469,
+ 1.123237133026123, 4.187554836273193, 71.24649810791016,
+ 16.034526824951172, 23.677297592163086, 61.27727508544922,
+ 65.15946197509766, 58.39249801635742, 70.12741088867188,
+ 9.11972713470459, 24.179977416992188, 84.4263687133789,
+ 78.55551147460938, 38.48297119140625, 80.6541519165039,
+ 57.152122497558594, 46.109710693359375, 28.41227912902832,
+ 90.92566680908203, 94.66068267822266, 61.77287673950195,
+ 60.324859619140625, 70.97433471679688, 10.631051063537598,
+ 55.61628341674805, 35.052310943603516, 22.12839126586914,
+ 38.19757843017578, 78.17564392089844, 62.57684326171875,
+ 88.35256958007812
+ ],
+ 'descriptor': {'dimensions': [2, 4, 5], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'matmul',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 11430.05859375, 13014.2392578125, 11110.080078125,
+ 10467.46484375, 8786.7724609375, 9512.4111328125,
+ 11714.0283203125, 9518.1435546875, 5889.55419921875,
+ 8280.9365234375, 7764.95166015625, 7932.3759765625,
+ 6202.0625, 7694.32373046875, 7296.4384765625,
+ 2937.076416015625, 2834.196533203125, 4690.14990234375,
+ 5113.283203125, 4463.22998046875, 10032.8623046875,
+ 11368.3623046875, 10780.572265625, 13883.421875,
+ 13393.5166015625, 8267.212890625, 8823.828125,
+ 8759.2177734375, 11333.4462890625, 10369.25390625,
+ 7885.7978515625, 9182.943359375, 8361.2900390625,
+ 6676.46533203125, 5074.3115234375, 5835.33837890625,
+ 5718.96875, 5209.5322265625, 6246.40185546875,
+ 4080.533935546875, 3322.71826171875, 3323.802490234375,
+ 2370.630615234375, 4320.47900390625, 3432.568115234375,
+ 10400.7939453125, 11604.9267578125, 10942.7744140625,
+ 14918.220703125, 12781.3603515625, 15164.451171875,
+ 14333.4267578125, 15752.0966796875, 20865.154296875,
+ 16430.63671875, 10880.1533203125, 10752.34765625,
+ 6632.99462890625, 12342.2919921875, 8384.3896484375
+ ],
+ 'descriptor': {'dimensions': [2, 2, 3, 5], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'matmul float32 5D and 5D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 33.75957107543945, 97.24552917480469, 83.7085189819336,
+ 64.53984069824219, 29.57938003540039, 17.19923973083496,
+ 67.94749450683594, 97.45838165283203, 54.449283599853516,
+ 29.552200317382812, 51.99970245361328, 36.03101348876953,
+ 9.701058387756348, 27.04842185974121, 6.020919322967529,
+ 22.940902709960938, 53.1243896484375, 15.292234420776367,
+ 48.21302795410156, 87.40799713134766, 51.34442138671875,
+ 21.1557559967041, 27.589487075805664, 58.412384033203125,
+ 5.963276386260986, 84.74938201904297, 55.45738220214844,
+ 50.858699798583984, 23.763574600219727, 62.330928802490234,
+ 35.774959564208984, 17.340242385864258, 29.16901397705078,
+ 23.191360473632812, 27.060928344726562, 1.2828527688980103,
+ 8.720425605773926, 48.45281219482422, 99.0130386352539,
+ 65.86412048339844, 92.69683074951172, 85.43540954589844,
+ 37.49127960205078, 51.397132873535156, 53.19015121459961,
+ 38.33119201660156, 75.20586395263672, 3.8537938594818115
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 3, 4], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 88.1700439453125, 78.4012680053711, 14.819003105163574,
+ 3.6923038959503174, 45.906429290771484, 43.083919525146484,
+ 47.199466705322266, 60.92521667480469, 8.162760734558105,
+ 20.333263397216797, 20.438398361206055, 27.0194091796875,
+ 15.601424217224121, 87.46969604492188, 65.79554748535156,
+ 69.31697082519531, 31.984439849853516, 12.291812896728516,
+ 13.304834365844727, 85.26705169677734
+ ],
+ 'descriptor': {'dimensions': [1, 1, 1, 4, 5], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'matmul',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 13350.8759765625, 11562.755859375, 8524.271484375,
+ 9099.0927734375, 14537.8701171875, 11493.283203125,
+ 8083.90869140625, 3744.22216796875, 7489.62353515625,
+ 14488.2314453125, 9634.3720703125, 8221.173828125,
+ 3861.51416015625, 5470.0556640625, 9594.072265625,
+ 3733.946533203125, 2933.679931640625, 2167.611083984375,
+ 1088.48193359375, 3347.576416015625, 12387.083984375,
+ 8985.1884765625, 3545.52783203125, 5701.10595703125,
+ 13374.9169921875, 10051.3671875, 7637.7470703125,
+ 3198.221435546875, 3552.6796875, 9583.1220703125,
+ 8835.94921875, 7592.7666015625, 6742.10400390625,
+ 6241.31396484375, 9982.404296875, 6713.85205078125,
+ 6326.3173828125, 4920.9609375, 3956.46875,
+ 6190.67626953125, 4213.013671875, 4153.708984375,
+ 2283.152099609375, 2681.085693359375, 3700.47509765625,
+ 9445.5869140625, 7752.5400390625, 5435.56005859375,
+ 9964.6591796875, 13516.18359375, 16182.931640625,
+ 13956.9560546875, 7795.52685546875, 5002.8349609375,
+ 12841.802734375, 8145.45654296875, 8134.66650390625,
+ 4344.25, 7138.79052734375, 8497.98046875
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 3, 5], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'matmul float32 5D and 2D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 33.75957107543945, 97.24552917480469, 83.7085189819336,
+ 64.53984069824219, 29.57938003540039, 17.19923973083496,
+ 67.94749450683594, 97.45838165283203, 54.449283599853516,
+ 29.552200317382812, 51.99970245361328, 36.03101348876953,
+ 9.701058387756348, 27.04842185974121, 6.020919322967529,
+ 22.940902709960938, 53.1243896484375, 15.292234420776367,
+ 48.21302795410156, 87.40799713134766, 51.34442138671875,
+ 21.1557559967041, 27.589487075805664, 58.412384033203125,
+ 5.963276386260986, 84.74938201904297, 55.45738220214844,
+ 50.858699798583984, 23.763574600219727, 62.330928802490234,
+ 35.774959564208984, 17.340242385864258, 29.16901397705078,
+ 23.191360473632812, 27.060928344726562, 1.2828527688980103,
+ 8.720425605773926, 48.45281219482422, 99.0130386352539,
+ 65.86412048339844, 92.69683074951172, 85.43540954589844,
+ 37.49127960205078, 51.397132873535156, 53.19015121459961,
+ 38.33119201660156, 75.20586395263672, 3.8537938594818115
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 3, 4], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 88.1700439453125, 78.4012680053711, 14.819003105163574,
+ 3.6923038959503174, 45.906429290771484, 43.083919525146484,
+ 47.199466705322266, 60.92521667480469, 8.162760734558105,
+ 20.333263397216797, 20.438398361206055, 27.0194091796875,
+ 15.601424217224121, 87.46969604492188, 65.79554748535156,
+ 69.31697082519531, 31.984439849853516, 12.291812896728516,
+ 13.304834365844727, 85.26705169677734
+ ],
+ 'descriptor': {'dimensions': [4, 5], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'matmul',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 13350.8759765625, 11562.755859375, 8524.271484375,
+ 9099.0927734375, 14537.8701171875, 11493.283203125,
+ 8083.90869140625, 3744.22216796875, 7489.62353515625,
+ 14488.2314453125, 9634.3720703125, 8221.173828125,
+ 3861.51416015625, 5470.0556640625, 9594.072265625,
+ 3733.946533203125, 2933.679931640625, 2167.611083984375,
+ 1088.48193359375, 3347.576416015625, 12387.083984375,
+ 8985.1884765625, 3545.52783203125, 5701.10595703125,
+ 13374.9169921875, 10051.3671875, 7637.7470703125,
+ 3198.221435546875, 3552.6796875, 9583.1220703125,
+ 8835.94921875, 7592.7666015625, 6742.10400390625,
+ 6241.31396484375, 9982.404296875, 6713.85205078125,
+ 6326.3173828125, 4920.9609375, 3956.46875,
+ 6190.67626953125, 4213.013671875, 4153.708984375,
+ 2283.152099609375, 2681.085693359375, 3700.47509765625,
+ 9445.5869140625, 7752.5400390625, 5435.56005859375,
+ 9964.6591796875, 13516.18359375, 16182.931640625,
+ 13956.9560546875, 7795.52685546875, 5002.8349609375,
+ 12841.802734375, 8145.45654296875, 8134.66650390625,
+ 4344.25, 7138.79052734375, 8497.98046875
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 3, 5], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ matmulTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getMatmulPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/max.https.any.js b/tests/wpt/tests/webnn/conformance_tests/max.https.any.js
index 2281f3ed0a1..0c28b85994d 100644
--- a/tests/wpt/tests/webnn/conformance_tests/max.https.any.js
+++ b/tests/wpt/tests/webnn/conformance_tests/max.https.any.js
@@ -1,4 +1,4 @@
-// META: title=test WebNN API element-wise binary operations
+// META: title=test WebNN API element-wise max operation
// META: global=window,dedicatedworker
// META: variant=?cpu
// META: variant=?gpu
@@ -8,6 +8,528 @@
'use strict';
-// https://webmachinelearning.github.io/webnn/#api-mlgraphbuilder-binary
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-binary
+// Compute the element-wise binary maximum of the two input tensors.
+// MLOperand max(MLOperand a, MLOperand b);
-runWebNNConformanceTests('max', buildOperationWithTwoInputs);
+
+const getMaxPrecisionTolerance = (graphResources) => {
+ const toleranceValueDict = {float32: 1, float16: 1};
+ const expectedDataType =
+ getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs);
+ return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]};
+};
+
+const maxTests = [
+ {
+ 'name': 'max float32 1D constant tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 17.72909164428711, 88.1480712890625, -12.794827461242676,
+ 11.817361831665039, 19.51302146911621, -62.87843704223633,
+ 50.771915435791016, -56.91352081298828, 50.57254409790039,
+ -96.00484466552734, 50.21434020996094, 20.59501075744629,
+ -60.699546813964844, -96.84203338623047, 57.25886917114258,
+ -56.29146194458008, 73.71659851074219, 21.347652435302734,
+ 79.85667419433594, -22.918458938598633, 1.2300019264221191,
+ 65.67964935302734, 99.89971160888672, -62.321685791015625
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'inputB': {
+ 'data': [
+ -34.50435256958008, 85.73471069335938, 25.818017959594727,
+ -91.37040710449219, 87.01370239257812, 0.17744044959545135,
+ 74.8826675415039, -4.1699137687683105, -73.76497650146484,
+ 55.388797760009766, -58.69169616699219, -67.62332916259766,
+ -89.83531188964844, -8.275739669799805, 97.59577178955078,
+ -48.968868255615234, 95.34497833251953, -97.36360168457031,
+ -59.90718078613281, 97.15335083007812, -40.226924896240234,
+ -61.5142707824707, 33.363243103027344, 12.693191528320312
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'max',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 17.72909164428711, 88.1480712890625, 25.818017959594727,
+ 11.817361831665039, 87.01370239257812, 0.17744044959545135,
+ 74.8826675415039, -4.1699137687683105, 50.57254409790039,
+ 55.388797760009766, 50.21434020996094, 20.59501075744629,
+ -60.699546813964844, -8.275739669799805, 97.59577178955078,
+ -48.968868255615234, 95.34497833251953, 21.347652435302734,
+ 79.85667419433594, 97.15335083007812, 1.2300019264221191,
+ 65.67964935302734, 99.89971160888672, 12.693191528320312
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'max float32 1D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 17.72909164428711, 88.1480712890625, -12.794827461242676,
+ 11.817361831665039, 19.51302146911621, -62.87843704223633,
+ 50.771915435791016, -56.91352081298828, 50.57254409790039,
+ -96.00484466552734, 50.21434020996094, 20.59501075744629,
+ -60.699546813964844, -96.84203338623047, 57.25886917114258,
+ -56.29146194458008, 73.71659851074219, 21.347652435302734,
+ 79.85667419433594, -22.918458938598633, 1.2300019264221191,
+ 65.67964935302734, 99.89971160888672, -62.321685791015625
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -34.50435256958008, 85.73471069335938, 25.818017959594727,
+ -91.37040710449219, 87.01370239257812, 0.17744044959545135,
+ 74.8826675415039, -4.1699137687683105, -73.76497650146484,
+ 55.388797760009766, -58.69169616699219, -67.62332916259766,
+ -89.83531188964844, -8.275739669799805, 97.59577178955078,
+ -48.968868255615234, 95.34497833251953, -97.36360168457031,
+ -59.90718078613281, 97.15335083007812, -40.226924896240234,
+ -61.5142707824707, 33.363243103027344, 12.693191528320312
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'max',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 17.72909164428711, 88.1480712890625, 25.818017959594727,
+ 11.817361831665039, 87.01370239257812, 0.17744044959545135,
+ 74.8826675415039, -4.1699137687683105, 50.57254409790039,
+ 55.388797760009766, 50.21434020996094, 20.59501075744629,
+ -60.699546813964844, -8.275739669799805, 97.59577178955078,
+ -48.968868255615234, 95.34497833251953, 21.347652435302734,
+ 79.85667419433594, 97.15335083007812, 1.2300019264221191,
+ 65.67964935302734, 99.89971160888672, 12.693191528320312
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'max float32 2D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 17.72909164428711, 88.1480712890625, -12.794827461242676,
+ 11.817361831665039, 19.51302146911621, -62.87843704223633,
+ 50.771915435791016, -56.91352081298828, 50.57254409790039,
+ -96.00484466552734, 50.21434020996094, 20.59501075744629,
+ -60.699546813964844, -96.84203338623047, 57.25886917114258,
+ -56.29146194458008, 73.71659851074219, 21.347652435302734,
+ 79.85667419433594, -22.918458938598633, 1.2300019264221191,
+ 65.67964935302734, 99.89971160888672, -62.321685791015625
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -34.50435256958008, 85.73471069335938, 25.818017959594727,
+ -91.37040710449219, 87.01370239257812, 0.17744044959545135,
+ 74.8826675415039, -4.1699137687683105, -73.76497650146484,
+ 55.388797760009766, -58.69169616699219, -67.62332916259766,
+ -89.83531188964844, -8.275739669799805, 97.59577178955078,
+ -48.968868255615234, 95.34497833251953, -97.36360168457031,
+ -59.90718078613281, 97.15335083007812, -40.226924896240234,
+ -61.5142707824707, 33.363243103027344, 12.693191528320312
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'max',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 17.72909164428711, 88.1480712890625, 25.818017959594727,
+ 11.817361831665039, 87.01370239257812, 0.17744044959545135,
+ 74.8826675415039, -4.1699137687683105, 50.57254409790039,
+ 55.388797760009766, 50.21434020996094, 20.59501075744629,
+ -60.699546813964844, -8.275739669799805, 97.59577178955078,
+ -48.968868255615234, 95.34497833251953, 21.347652435302734,
+ 79.85667419433594, 97.15335083007812, 1.2300019264221191,
+ 65.67964935302734, 99.89971160888672, 12.693191528320312
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'max float32 3D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 17.72909164428711, 88.1480712890625, -12.794827461242676,
+ 11.817361831665039, 19.51302146911621, -62.87843704223633,
+ 50.771915435791016, -56.91352081298828, 50.57254409790039,
+ -96.00484466552734, 50.21434020996094, 20.59501075744629,
+ -60.699546813964844, -96.84203338623047, 57.25886917114258,
+ -56.29146194458008, 73.71659851074219, 21.347652435302734,
+ 79.85667419433594, -22.918458938598633, 1.2300019264221191,
+ 65.67964935302734, 99.89971160888672, -62.321685791015625
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -34.50435256958008, 85.73471069335938, 25.818017959594727,
+ -91.37040710449219, 87.01370239257812, 0.17744044959545135,
+ 74.8826675415039, -4.1699137687683105, -73.76497650146484,
+ 55.388797760009766, -58.69169616699219, -67.62332916259766,
+ -89.83531188964844, -8.275739669799805, 97.59577178955078,
+ -48.968868255615234, 95.34497833251953, -97.36360168457031,
+ -59.90718078613281, 97.15335083007812, -40.226924896240234,
+ -61.5142707824707, 33.363243103027344, 12.693191528320312
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'max',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 17.72909164428711, 88.1480712890625, 25.818017959594727,
+ 11.817361831665039, 87.01370239257812, 0.17744044959545135,
+ 74.8826675415039, -4.1699137687683105, 50.57254409790039,
+ 55.388797760009766, 50.21434020996094, 20.59501075744629,
+ -60.699546813964844, -8.275739669799805, 97.59577178955078,
+ -48.968868255615234, 95.34497833251953, 21.347652435302734,
+ 79.85667419433594, 97.15335083007812, 1.2300019264221191,
+ 65.67964935302734, 99.89971160888672, 12.693191528320312
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'max float32 4D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 17.72909164428711, 88.1480712890625, -12.794827461242676,
+ 11.817361831665039, 19.51302146911621, -62.87843704223633,
+ 50.771915435791016, -56.91352081298828, 50.57254409790039,
+ -96.00484466552734, 50.21434020996094, 20.59501075744629,
+ -60.699546813964844, -96.84203338623047, 57.25886917114258,
+ -56.29146194458008, 73.71659851074219, 21.347652435302734,
+ 79.85667419433594, -22.918458938598633, 1.2300019264221191,
+ 65.67964935302734, 99.89971160888672, -62.321685791015625
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -34.50435256958008, 85.73471069335938, 25.818017959594727,
+ -91.37040710449219, 87.01370239257812, 0.17744044959545135,
+ 74.8826675415039, -4.1699137687683105, -73.76497650146484,
+ 55.388797760009766, -58.69169616699219, -67.62332916259766,
+ -89.83531188964844, -8.275739669799805, 97.59577178955078,
+ -48.968868255615234, 95.34497833251953, -97.36360168457031,
+ -59.90718078613281, 97.15335083007812, -40.226924896240234,
+ -61.5142707824707, 33.363243103027344, 12.693191528320312
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'max',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 17.72909164428711, 88.1480712890625, 25.818017959594727,
+ 11.817361831665039, 87.01370239257812, 0.17744044959545135,
+ 74.8826675415039, -4.1699137687683105, 50.57254409790039,
+ 55.388797760009766, 50.21434020996094, 20.59501075744629,
+ -60.699546813964844, -8.275739669799805, 97.59577178955078,
+ -48.968868255615234, 95.34497833251953, 21.347652435302734,
+ 79.85667419433594, 97.15335083007812, 1.2300019264221191,
+ 65.67964935302734, 99.89971160888672, 12.693191528320312
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'max float32 5D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 17.72909164428711, 88.1480712890625, -12.794827461242676,
+ 11.817361831665039, 19.51302146911621, -62.87843704223633,
+ 50.771915435791016, -56.91352081298828, 50.57254409790039,
+ -96.00484466552734, 50.21434020996094, 20.59501075744629,
+ -60.699546813964844, -96.84203338623047, 57.25886917114258,
+ -56.29146194458008, 73.71659851074219, 21.347652435302734,
+ 79.85667419433594, -22.918458938598633, 1.2300019264221191,
+ 65.67964935302734, 99.89971160888672, -62.321685791015625
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 2, 3], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -34.50435256958008, 85.73471069335938, 25.818017959594727,
+ -91.37040710449219, 87.01370239257812, 0.17744044959545135,
+ 74.8826675415039, -4.1699137687683105, -73.76497650146484,
+ 55.388797760009766, -58.69169616699219, -67.62332916259766,
+ -89.83531188964844, -8.275739669799805, 97.59577178955078,
+ -48.968868255615234, 95.34497833251953, -97.36360168457031,
+ -59.90718078613281, 97.15335083007812, -40.226924896240234,
+ -61.5142707824707, 33.363243103027344, 12.693191528320312
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'max',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 17.72909164428711, 88.1480712890625, 25.818017959594727,
+ 11.817361831665039, 87.01370239257812, 0.17744044959545135,
+ 74.8826675415039, -4.1699137687683105, 50.57254409790039,
+ 55.388797760009766, 50.21434020996094, 20.59501075744629,
+ -60.699546813964844, -8.275739669799805, 97.59577178955078,
+ -48.968868255615234, 95.34497833251953, 21.347652435302734,
+ 79.85667419433594, 97.15335083007812, 1.2300019264221191,
+ 65.67964935302734, 99.89971160888672, 12.693191528320312
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'max float32 broadcast 1D to 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [48.26115417480469],
+ 'descriptor': {'dimensions': [1], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 17.72909164428711, 88.1480712890625, -12.794827461242676,
+ 11.817361831665039, 19.51302146911621, -62.87843704223633,
+ 50.771915435791016, -56.91352081298828, 50.57254409790039,
+ -96.00484466552734, 50.21434020996094, 20.59501075744629,
+ -60.699546813964844, -96.84203338623047, 57.25886917114258,
+ -56.29146194458008, 73.71659851074219, 21.347652435302734,
+ 79.85667419433594, -22.918458938598633, 1.2300019264221191,
+ 65.67964935302734, 99.89971160888672, -62.321685791015625
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'max',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 48.26115417480469, 88.1480712890625, 48.26115417480469,
+ 48.26115417480469, 48.26115417480469, 48.26115417480469,
+ 50.771915435791016, 48.26115417480469, 50.57254409790039,
+ 48.26115417480469, 50.21434020996094, 48.26115417480469,
+ 48.26115417480469, 48.26115417480469, 57.25886917114258,
+ 48.26115417480469, 73.71659851074219, 48.26115417480469,
+ 79.85667419433594, 48.26115417480469, 48.26115417480469,
+ 65.67964935302734, 99.89971160888672, 48.26115417480469
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'max float32 broadcast 2D to 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 17.72909164428711, 88.1480712890625, -12.794827461242676,
+ 11.817361831665039, 19.51302146911621, -62.87843704223633,
+ 50.771915435791016, -56.91352081298828, 50.57254409790039,
+ -96.00484466552734, 50.21434020996094, 20.59501075744629,
+ -60.699546813964844, -96.84203338623047, 57.25886917114258,
+ -56.29146194458008, 73.71659851074219, 21.347652435302734,
+ 79.85667419433594, -22.918458938598633, 1.2300019264221191,
+ 65.67964935302734, 99.89971160888672, -62.321685791015625
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 49.523128509521484, -61.555763244628906, -6.564808368682861,
+ 93.32227325439453, 3.3104186058044434, -98.31839752197266
+ ],
+ 'descriptor': {'dimensions': [2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'max',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 49.523128509521484, 88.1480712890625, -6.564808368682861,
+ 93.32227325439453, 19.51302146911621, -62.87843704223633,
+ 50.771915435791016, -56.91352081298828, 50.57254409790039,
+ 93.32227325439453, 50.21434020996094, 20.59501075744629,
+ 49.523128509521484, -61.555763244628906, 57.25886917114258,
+ 93.32227325439453, 73.71659851074219, 21.347652435302734,
+ 79.85667419433594, -22.918458938598633, 1.2300019264221191,
+ 93.32227325439453, 99.89971160888672, -62.321685791015625
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'max float32 broadcast 3D to 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 17.72909164428711, 88.1480712890625, -12.794827461242676,
+ 11.817361831665039, 19.51302146911621, -62.87843704223633,
+ 50.771915435791016, -56.91352081298828, 50.57254409790039,
+ -96.00484466552734, 50.21434020996094, 20.59501075744629,
+ -60.699546813964844, -96.84203338623047, 57.25886917114258,
+ -56.29146194458008, 73.71659851074219, 21.347652435302734,
+ 79.85667419433594, -22.918458938598633, 1.2300019264221191,
+ 65.67964935302734, 99.89971160888672, -62.321685791015625
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 39.32178497314453, 44.523738861083984, 58.046287536621094,
+ 84.13702392578125
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'max',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 39.32178497314453, 88.1480712890625, 39.32178497314453,
+ 44.523738861083984, 44.523738861083984, 44.523738861083984,
+ 58.046287536621094, 58.046287536621094, 58.046287536621094,
+ 84.13702392578125, 84.13702392578125, 84.13702392578125,
+ 39.32178497314453, 39.32178497314453, 57.25886917114258,
+ 44.523738861083984, 73.71659851074219, 44.523738861083984,
+ 79.85667419433594, 58.046287536621094, 58.046287536621094,
+ 84.13702392578125, 99.89971160888672, 84.13702392578125
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'max float32 broadcast 4D to 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [48.26115417480469],
+ 'descriptor': {'dimensions': [1, 1, 1, 1], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 17.72909164428711, 88.1480712890625, -12.794827461242676,
+ 11.817361831665039, 19.51302146911621, -62.87843704223633,
+ 50.771915435791016, -56.91352081298828, 50.57254409790039,
+ -96.00484466552734, 50.21434020996094, 20.59501075744629,
+ -60.699546813964844, -96.84203338623047, 57.25886917114258,
+ -56.29146194458008, 73.71659851074219, 21.347652435302734,
+ 79.85667419433594, -22.918458938598633, 1.2300019264221191,
+ 65.67964935302734, 99.89971160888672, -62.321685791015625
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'max',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 48.26115417480469, 88.1480712890625, 48.26115417480469,
+ 48.26115417480469, 48.26115417480469, 48.26115417480469,
+ 50.771915435791016, 48.26115417480469, 50.57254409790039,
+ 48.26115417480469, 50.21434020996094, 48.26115417480469,
+ 48.26115417480469, 48.26115417480469, 57.25886917114258,
+ 48.26115417480469, 73.71659851074219, 48.26115417480469,
+ 79.85667419433594, 48.26115417480469, 48.26115417480469,
+ 65.67964935302734, 99.89971160888672, 48.26115417480469
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ maxTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getMaxPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/min.https.any.js b/tests/wpt/tests/webnn/conformance_tests/min.https.any.js
index 5d12a1d7e2c..2892bc1ec0f 100644
--- a/tests/wpt/tests/webnn/conformance_tests/min.https.any.js
+++ b/tests/wpt/tests/webnn/conformance_tests/min.https.any.js
@@ -1,4 +1,4 @@
-// META: title=test WebNN API element-wise binary operations
+// META: title=test WebNN API element-wise min operation
// META: global=window,dedicatedworker
// META: variant=?cpu
// META: variant=?gpu
@@ -8,6 +8,528 @@
'use strict';
-// https://webmachinelearning.github.io/webnn/#api-mlgraphbuilder-binary
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-binary
+// Compute the element-wise binary minimum of the two input tensors.
+// MLOperand min(MLOperand a, MLOperand b);
-runWebNNConformanceTests('min', buildOperationWithTwoInputs);
+
+const getMinPrecisionTolerance = (graphResources) => {
+ const toleranceValueDict = {float32: 0, float16: 0};
+ const expectedDataType =
+ getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs);
+ return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]};
+};
+
+const minTests = [
+ {
+ 'name': 'min float32 1D constant tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ -36.06953048706055, -38.2254524230957, 62.07444381713867,
+ -16.610267639160156, 65.99324798583984, -17.77212905883789,
+ -76.01380920410156, -69.59134674072266, 53.60376739501953,
+ -39.096099853515625, 96.94400787353516, -40.39130401611328,
+ 74.14437103271484, 0.03283197432756424, 38.79835510253906,
+ -17.720787048339844, 17.383201599121094, -82.3099365234375,
+ -80.47379302978516, -31.389848709106445, -73.2723617553711,
+ -33.74562072753906, -21.70152473449707, 4.945605278015137
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'inputB': {
+ 'data': [
+ -40.10139083862305, 86.25190734863281, 51.280174255371094,
+ -57.64906311035156, -97.56107330322266, -28.881731033325195,
+ 80.49571228027344, 46.6654052734375, 62.80685806274414,
+ 49.81534194946289, -76.52043151855469, 84.5990982055664,
+ 50.47281265258789, -18.01728630065918, 5.198459148406982,
+ -47.82608413696289, 46.450077056884766, -71.25122833251953,
+ -69.85066223144531, 40.676490783691406, -18.700122833251953,
+ 20.14988136291504, 41.95068359375, 23.482912063598633
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'min',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ -40.10139083862305, -38.2254524230957, 51.280174255371094,
+ -57.64906311035156, -97.56107330322266, -28.881731033325195,
+ -76.01380920410156, -69.59134674072266, 53.60376739501953,
+ -39.096099853515625, -76.52043151855469, -40.39130401611328,
+ 50.47281265258789, -18.01728630065918, 5.198459148406982,
+ -47.82608413696289, 17.383201599121094, -82.3099365234375,
+ -80.47379302978516, -31.389848709106445, -73.2723617553711,
+ -33.74562072753906, -21.70152473449707, 4.945605278015137
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'min float32 1D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ -36.06953048706055, -38.2254524230957, 62.07444381713867,
+ -16.610267639160156, 65.99324798583984, -17.77212905883789,
+ -76.01380920410156, -69.59134674072266, 53.60376739501953,
+ -39.096099853515625, 96.94400787353516, -40.39130401611328,
+ 74.14437103271484, 0.03283197432756424, 38.79835510253906,
+ -17.720787048339844, 17.383201599121094, -82.3099365234375,
+ -80.47379302978516, -31.389848709106445, -73.2723617553711,
+ -33.74562072753906, -21.70152473449707, 4.945605278015137
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -40.10139083862305, 86.25190734863281, 51.280174255371094,
+ -57.64906311035156, -97.56107330322266, -28.881731033325195,
+ 80.49571228027344, 46.6654052734375, 62.80685806274414,
+ 49.81534194946289, -76.52043151855469, 84.5990982055664,
+ 50.47281265258789, -18.01728630065918, 5.198459148406982,
+ -47.82608413696289, 46.450077056884766, -71.25122833251953,
+ -69.85066223144531, 40.676490783691406, -18.700122833251953,
+ 20.14988136291504, 41.95068359375, 23.482912063598633
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'min',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ -40.10139083862305, -38.2254524230957, 51.280174255371094,
+ -57.64906311035156, -97.56107330322266, -28.881731033325195,
+ -76.01380920410156, -69.59134674072266, 53.60376739501953,
+ -39.096099853515625, -76.52043151855469, -40.39130401611328,
+ 50.47281265258789, -18.01728630065918, 5.198459148406982,
+ -47.82608413696289, 17.383201599121094, -82.3099365234375,
+ -80.47379302978516, -31.389848709106445, -73.2723617553711,
+ -33.74562072753906, -21.70152473449707, 4.945605278015137
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'min float32 2D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ -36.06953048706055, -38.2254524230957, 62.07444381713867,
+ -16.610267639160156, 65.99324798583984, -17.77212905883789,
+ -76.01380920410156, -69.59134674072266, 53.60376739501953,
+ -39.096099853515625, 96.94400787353516, -40.39130401611328,
+ 74.14437103271484, 0.03283197432756424, 38.79835510253906,
+ -17.720787048339844, 17.383201599121094, -82.3099365234375,
+ -80.47379302978516, -31.389848709106445, -73.2723617553711,
+ -33.74562072753906, -21.70152473449707, 4.945605278015137
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -40.10139083862305, 86.25190734863281, 51.280174255371094,
+ -57.64906311035156, -97.56107330322266, -28.881731033325195,
+ 80.49571228027344, 46.6654052734375, 62.80685806274414,
+ 49.81534194946289, -76.52043151855469, 84.5990982055664,
+ 50.47281265258789, -18.01728630065918, 5.198459148406982,
+ -47.82608413696289, 46.450077056884766, -71.25122833251953,
+ -69.85066223144531, 40.676490783691406, -18.700122833251953,
+ 20.14988136291504, 41.95068359375, 23.482912063598633
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'min',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ -40.10139083862305, -38.2254524230957, 51.280174255371094,
+ -57.64906311035156, -97.56107330322266, -28.881731033325195,
+ -76.01380920410156, -69.59134674072266, 53.60376739501953,
+ -39.096099853515625, -76.52043151855469, -40.39130401611328,
+ 50.47281265258789, -18.01728630065918, 5.198459148406982,
+ -47.82608413696289, 17.383201599121094, -82.3099365234375,
+ -80.47379302978516, -31.389848709106445, -73.2723617553711,
+ -33.74562072753906, -21.70152473449707, 4.945605278015137
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'min float32 3D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ -36.06953048706055, -38.2254524230957, 62.07444381713867,
+ -16.610267639160156, 65.99324798583984, -17.77212905883789,
+ -76.01380920410156, -69.59134674072266, 53.60376739501953,
+ -39.096099853515625, 96.94400787353516, -40.39130401611328,
+ 74.14437103271484, 0.03283197432756424, 38.79835510253906,
+ -17.720787048339844, 17.383201599121094, -82.3099365234375,
+ -80.47379302978516, -31.389848709106445, -73.2723617553711,
+ -33.74562072753906, -21.70152473449707, 4.945605278015137
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -40.10139083862305, 86.25190734863281, 51.280174255371094,
+ -57.64906311035156, -97.56107330322266, -28.881731033325195,
+ 80.49571228027344, 46.6654052734375, 62.80685806274414,
+ 49.81534194946289, -76.52043151855469, 84.5990982055664,
+ 50.47281265258789, -18.01728630065918, 5.198459148406982,
+ -47.82608413696289, 46.450077056884766, -71.25122833251953,
+ -69.85066223144531, 40.676490783691406, -18.700122833251953,
+ 20.14988136291504, 41.95068359375, 23.482912063598633
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'min',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ -40.10139083862305, -38.2254524230957, 51.280174255371094,
+ -57.64906311035156, -97.56107330322266, -28.881731033325195,
+ -76.01380920410156, -69.59134674072266, 53.60376739501953,
+ -39.096099853515625, -76.52043151855469, -40.39130401611328,
+ 50.47281265258789, -18.01728630065918, 5.198459148406982,
+ -47.82608413696289, 17.383201599121094, -82.3099365234375,
+ -80.47379302978516, -31.389848709106445, -73.2723617553711,
+ -33.74562072753906, -21.70152473449707, 4.945605278015137
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'min float32 4D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ -36.06953048706055, -38.2254524230957, 62.07444381713867,
+ -16.610267639160156, 65.99324798583984, -17.77212905883789,
+ -76.01380920410156, -69.59134674072266, 53.60376739501953,
+ -39.096099853515625, 96.94400787353516, -40.39130401611328,
+ 74.14437103271484, 0.03283197432756424, 38.79835510253906,
+ -17.720787048339844, 17.383201599121094, -82.3099365234375,
+ -80.47379302978516, -31.389848709106445, -73.2723617553711,
+ -33.74562072753906, -21.70152473449707, 4.945605278015137
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -40.10139083862305, 86.25190734863281, 51.280174255371094,
+ -57.64906311035156, -97.56107330322266, -28.881731033325195,
+ 80.49571228027344, 46.6654052734375, 62.80685806274414,
+ 49.81534194946289, -76.52043151855469, 84.5990982055664,
+ 50.47281265258789, -18.01728630065918, 5.198459148406982,
+ -47.82608413696289, 46.450077056884766, -71.25122833251953,
+ -69.85066223144531, 40.676490783691406, -18.700122833251953,
+ 20.14988136291504, 41.95068359375, 23.482912063598633
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'min',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ -40.10139083862305, -38.2254524230957, 51.280174255371094,
+ -57.64906311035156, -97.56107330322266, -28.881731033325195,
+ -76.01380920410156, -69.59134674072266, 53.60376739501953,
+ -39.096099853515625, -76.52043151855469, -40.39130401611328,
+ 50.47281265258789, -18.01728630065918, 5.198459148406982,
+ -47.82608413696289, 17.383201599121094, -82.3099365234375,
+ -80.47379302978516, -31.389848709106445, -73.2723617553711,
+ -33.74562072753906, -21.70152473449707, 4.945605278015137
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'min float32 5D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ -36.06953048706055, -38.2254524230957, 62.07444381713867,
+ -16.610267639160156, 65.99324798583984, -17.77212905883789,
+ -76.01380920410156, -69.59134674072266, 53.60376739501953,
+ -39.096099853515625, 96.94400787353516, -40.39130401611328,
+ 74.14437103271484, 0.03283197432756424, 38.79835510253906,
+ -17.720787048339844, 17.383201599121094, -82.3099365234375,
+ -80.47379302978516, -31.389848709106445, -73.2723617553711,
+ -33.74562072753906, -21.70152473449707, 4.945605278015137
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 2, 3], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -40.10139083862305, 86.25190734863281, 51.280174255371094,
+ -57.64906311035156, -97.56107330322266, -28.881731033325195,
+ 80.49571228027344, 46.6654052734375, 62.80685806274414,
+ 49.81534194946289, -76.52043151855469, 84.5990982055664,
+ 50.47281265258789, -18.01728630065918, 5.198459148406982,
+ -47.82608413696289, 46.450077056884766, -71.25122833251953,
+ -69.85066223144531, 40.676490783691406, -18.700122833251953,
+ 20.14988136291504, 41.95068359375, 23.482912063598633
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'min',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ -40.10139083862305, -38.2254524230957, 51.280174255371094,
+ -57.64906311035156, -97.56107330322266, -28.881731033325195,
+ -76.01380920410156, -69.59134674072266, 53.60376739501953,
+ -39.096099853515625, -76.52043151855469, -40.39130401611328,
+ 50.47281265258789, -18.01728630065918, 5.198459148406982,
+ -47.82608413696289, 17.383201599121094, -82.3099365234375,
+ -80.47379302978516, -31.389848709106445, -73.2723617553711,
+ -33.74562072753906, -21.70152473449707, 4.945605278015137
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'min float32 broadcast 1D to 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [34.42634582519531],
+ 'descriptor': {'dimensions': [1], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -36.06953048706055, -38.2254524230957, 62.07444381713867,
+ -16.610267639160156, 65.99324798583984, -17.77212905883789,
+ -76.01380920410156, -69.59134674072266, 53.60376739501953,
+ -39.096099853515625, 96.94400787353516, -40.39130401611328,
+ 74.14437103271484, 0.03283197432756424, 38.79835510253906,
+ -17.720787048339844, 17.383201599121094, -82.3099365234375,
+ -80.47379302978516, -31.389848709106445, -73.2723617553711,
+ -33.74562072753906, -21.70152473449707, 4.945605278015137
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'min',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ -36.06953048706055, -38.2254524230957, 34.42634582519531,
+ -16.610267639160156, 34.42634582519531, -17.77212905883789,
+ -76.01380920410156, -69.59134674072266, 34.42634582519531,
+ -39.096099853515625, 34.42634582519531, -40.39130401611328,
+ 34.42634582519531, 0.03283197432756424, 34.42634582519531,
+ -17.720787048339844, 17.383201599121094, -82.3099365234375,
+ -80.47379302978516, -31.389848709106445, -73.2723617553711,
+ -33.74562072753906, -21.70152473449707, 4.945605278015137
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'min float32 broadcast 2D to 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ -36.06953048706055, -38.2254524230957, 62.07444381713867,
+ -16.610267639160156, 65.99324798583984, -17.77212905883789,
+ -76.01380920410156, -69.59134674072266, 53.60376739501953,
+ -39.096099853515625, 96.94400787353516, -40.39130401611328,
+ 74.14437103271484, 0.03283197432756424, 38.79835510253906,
+ -17.720787048339844, 17.383201599121094, -82.3099365234375,
+ -80.47379302978516, -31.389848709106445, -73.2723617553711,
+ -33.74562072753906, -21.70152473449707, 4.945605278015137
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -19.072668075561523, -78.27516174316406, -13.436244010925293,
+ -93.01346588134766, -72.27899169921875, 63.14110565185547
+ ],
+ 'descriptor': {'dimensions': [2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'min',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ -36.06953048706055, -78.27516174316406, -13.436244010925293,
+ -93.01346588134766, -72.27899169921875, -17.77212905883789,
+ -76.01380920410156, -78.27516174316406, -13.436244010925293,
+ -93.01346588134766, -72.27899169921875, -40.39130401611328,
+ -19.072668075561523, -78.27516174316406, -13.436244010925293,
+ -93.01346588134766, -72.27899169921875, -82.3099365234375,
+ -80.47379302978516, -78.27516174316406, -73.2723617553711,
+ -93.01346588134766, -72.27899169921875, 4.945605278015137
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'min float32 broadcast 3D to 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ -36.06953048706055, -38.2254524230957, 62.07444381713867,
+ -16.610267639160156, 65.99324798583984, -17.77212905883789,
+ -76.01380920410156, -69.59134674072266, 53.60376739501953,
+ -39.096099853515625, 96.94400787353516, -40.39130401611328,
+ 74.14437103271484, 0.03283197432756424, 38.79835510253906,
+ -17.720787048339844, 17.383201599121094, -82.3099365234375,
+ -80.47379302978516, -31.389848709106445, -73.2723617553711,
+ -33.74562072753906, -21.70152473449707, 4.945605278015137
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 23.231731414794922, 84.62673950195312, -83.33529663085938,
+ -22.82455825805664
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'min',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ -36.06953048706055, -38.2254524230957, 23.231731414794922,
+ -16.610267639160156, 65.99324798583984, -17.77212905883789,
+ -83.33529663085938, -83.33529663085938, -83.33529663085938,
+ -39.096099853515625, -22.82455825805664, -40.39130401611328,
+ 23.231731414794922, 0.03283197432756424, 23.231731414794922,
+ -17.720787048339844, 17.383201599121094, -82.3099365234375,
+ -83.33529663085938, -83.33529663085938, -83.33529663085938,
+ -33.74562072753906, -22.82455825805664, -22.82455825805664
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'min float32 broadcast 4D to 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [34.42634582519531],
+ 'descriptor': {'dimensions': [1, 1, 1, 1], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -36.06953048706055, -38.2254524230957, 62.07444381713867,
+ -16.610267639160156, 65.99324798583984, -17.77212905883789,
+ -76.01380920410156, -69.59134674072266, 53.60376739501953,
+ -39.096099853515625, 96.94400787353516, -40.39130401611328,
+ 74.14437103271484, 0.03283197432756424, 38.79835510253906,
+ -17.720787048339844, 17.383201599121094, -82.3099365234375,
+ -80.47379302978516, -31.389848709106445, -73.2723617553711,
+ -33.74562072753906, -21.70152473449707, 4.945605278015137
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'min',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ -36.06953048706055, -38.2254524230957, 34.42634582519531,
+ -16.610267639160156, 34.42634582519531, -17.77212905883789,
+ -76.01380920410156, -69.59134674072266, 34.42634582519531,
+ -39.096099853515625, 34.42634582519531, -40.39130401611328,
+ 34.42634582519531, 0.03283197432756424, 34.42634582519531,
+ -17.720787048339844, 17.383201599121094, -82.3099365234375,
+ -80.47379302978516, -31.389848709106445, -73.2723617553711,
+ -33.74562072753906, -21.70152473449707, 4.945605278015137
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ minTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getMinPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/mul.https.any.js b/tests/wpt/tests/webnn/conformance_tests/mul.https.any.js
index 94ead346449..d46a4d90744 100644
--- a/tests/wpt/tests/webnn/conformance_tests/mul.https.any.js
+++ b/tests/wpt/tests/webnn/conformance_tests/mul.https.any.js
@@ -1,4 +1,4 @@
-// META: title=test WebNN API element-wise binary operations
+// META: title=test WebNN API element-wise mul operation
// META: global=window,dedicatedworker
// META: variant=?cpu
// META: variant=?gpu
@@ -8,6 +8,532 @@
'use strict';
-// https://webmachinelearning.github.io/webnn/#api-mlgraphbuilder-binary
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-binary
+// Compute the element-wise binary multiplication of the two input tensors.
+// MLOperand mul(MLOperand a, MLOperand b);
-runWebNNConformanceTests('mul', buildOperationWithTwoInputs);
+
+const getMulPrecisionTolerance = (graphResources) => {
+ const toleranceValueDict = {float32: 1, float16: 1};
+ const expectedDataType =
+ getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs);
+ return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]};
+};
+
+const mulTests = [
+ {
+ 'name': 'mul float32 1D constant tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 49.1112174987793, 11.907459259033203, -21.115795135498047,
+ 70.7490005493164, -94.51628112792969, -93.78905487060547,
+ 11.178888320922852, -32.80592346191406, 83.31897735595703,
+ 91.1207275390625, -0.11235756427049637, 15.397955894470215,
+ -13.459217071533203, -50.6264762878418, -31.17625617980957,
+ -6.616114139556885, 21.72757911682129, 22.03150749206543,
+ -84.02171325683594, -94.06755828857422, 58.807273864746094,
+ -63.059783935546875, 3.3092827796936035, 9.884003639221191
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'inputB': {
+ 'data': [
+ 74.96137237548828, -34.53953170776367, -33.316162109375,
+ 53.92023849487305, -83.69075012207031, 19.785221099853516,
+ 36.28113555908203, -34.31147766113281, 49.10429000854492,
+ -54.538848876953125, 70.77384948730469, -55.18768310546875,
+ -93.96234130859375, 60.08298110961914, -92.7341537475586,
+ 87.6099853515625, -8.881865501403809, 71.79511260986328,
+ -26.158620834350586, -18.935443878173828, 34.6467170715332,
+ -60.95826721191406, -11.119653701782227, 77.50324249267578
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'mul',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 3681.4443359375, -411.278076171875, 703.4972534179688,
+ 3814.802978515625, 7910.138671875, -1855.63720703125,
+ 405.582763671875, 1125.6197509765625, 4091.3193359375,
+ -4969.61962890625, -7.951977252960205, -849.7775268554688,
+ 1264.6595458984375, -3041.78955078125, 2891.103759765625,
+ -579.6376342773438, -192.98143005371094, 1581.7545166015625,
+ 2197.89208984375, 1781.2109375, 2037.47900390625,
+ 3844.01513671875, -36.79807662963867, 766.0423583984375
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'mul float32 1D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 49.1112174987793, 11.907459259033203, -21.115795135498047,
+ 70.7490005493164, -94.51628112792969, -93.78905487060547,
+ 11.178888320922852, -32.80592346191406, 83.31897735595703,
+ 91.1207275390625, -0.11235756427049637, 15.397955894470215,
+ -13.459217071533203, -50.6264762878418, -31.17625617980957,
+ -6.616114139556885, 21.72757911682129, 22.03150749206543,
+ -84.02171325683594, -94.06755828857422, 58.807273864746094,
+ -63.059783935546875, 3.3092827796936035, 9.884003639221191
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 74.96137237548828, -34.53953170776367, -33.316162109375,
+ 53.92023849487305, -83.69075012207031, 19.785221099853516,
+ 36.28113555908203, -34.31147766113281, 49.10429000854492,
+ -54.538848876953125, 70.77384948730469, -55.18768310546875,
+ -93.96234130859375, 60.08298110961914, -92.7341537475586,
+ 87.6099853515625, -8.881865501403809, 71.79511260986328,
+ -26.158620834350586, -18.935443878173828, 34.6467170715332,
+ -60.95826721191406, -11.119653701782227, 77.50324249267578
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'mul',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 3681.4443359375, -411.278076171875, 703.4972534179688,
+ 3814.802978515625, 7910.138671875, -1855.63720703125,
+ 405.582763671875, 1125.6197509765625, 4091.3193359375,
+ -4969.61962890625, -7.951977252960205, -849.7775268554688,
+ 1264.6595458984375, -3041.78955078125, 2891.103759765625,
+ -579.6376342773438, -192.98143005371094, 1581.7545166015625,
+ 2197.89208984375, 1781.2109375, 2037.47900390625,
+ 3844.01513671875, -36.79807662963867, 766.0423583984375
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'mul float32 2D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 49.1112174987793, 11.907459259033203, -21.115795135498047,
+ 70.7490005493164, -94.51628112792969, -93.78905487060547,
+ 11.178888320922852, -32.80592346191406, 83.31897735595703,
+ 91.1207275390625, -0.11235756427049637, 15.397955894470215,
+ -13.459217071533203, -50.6264762878418, -31.17625617980957,
+ -6.616114139556885, 21.72757911682129, 22.03150749206543,
+ -84.02171325683594, -94.06755828857422, 58.807273864746094,
+ -63.059783935546875, 3.3092827796936035, 9.884003639221191
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 74.96137237548828, -34.53953170776367, -33.316162109375,
+ 53.92023849487305, -83.69075012207031, 19.785221099853516,
+ 36.28113555908203, -34.31147766113281, 49.10429000854492,
+ -54.538848876953125, 70.77384948730469, -55.18768310546875,
+ -93.96234130859375, 60.08298110961914, -92.7341537475586,
+ 87.6099853515625, -8.881865501403809, 71.79511260986328,
+ -26.158620834350586, -18.935443878173828, 34.6467170715332,
+ -60.95826721191406, -11.119653701782227, 77.50324249267578
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'mul',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 3681.4443359375, -411.278076171875, 703.4972534179688,
+ 3814.802978515625, 7910.138671875, -1855.63720703125,
+ 405.582763671875, 1125.6197509765625, 4091.3193359375,
+ -4969.61962890625, -7.951977252960205, -849.7775268554688,
+ 1264.6595458984375, -3041.78955078125, 2891.103759765625,
+ -579.6376342773438, -192.98143005371094, 1581.7545166015625,
+ 2197.89208984375, 1781.2109375, 2037.47900390625,
+ 3844.01513671875, -36.79807662963867, 766.0423583984375
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'mul float32 3D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 49.1112174987793, 11.907459259033203, -21.115795135498047,
+ 70.7490005493164, -94.51628112792969, -93.78905487060547,
+ 11.178888320922852, -32.80592346191406, 83.31897735595703,
+ 91.1207275390625, -0.11235756427049637, 15.397955894470215,
+ -13.459217071533203, -50.6264762878418, -31.17625617980957,
+ -6.616114139556885, 21.72757911682129, 22.03150749206543,
+ -84.02171325683594, -94.06755828857422, 58.807273864746094,
+ -63.059783935546875, 3.3092827796936035, 9.884003639221191
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 74.96137237548828, -34.53953170776367, -33.316162109375,
+ 53.92023849487305, -83.69075012207031, 19.785221099853516,
+ 36.28113555908203, -34.31147766113281, 49.10429000854492,
+ -54.538848876953125, 70.77384948730469, -55.18768310546875,
+ -93.96234130859375, 60.08298110961914, -92.7341537475586,
+ 87.6099853515625, -8.881865501403809, 71.79511260986328,
+ -26.158620834350586, -18.935443878173828, 34.6467170715332,
+ -60.95826721191406, -11.119653701782227, 77.50324249267578
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'mul',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 3681.4443359375, -411.278076171875, 703.4972534179688,
+ 3814.802978515625, 7910.138671875, -1855.63720703125,
+ 405.582763671875, 1125.6197509765625, 4091.3193359375,
+ -4969.61962890625, -7.951977252960205, -849.7775268554688,
+ 1264.6595458984375, -3041.78955078125, 2891.103759765625,
+ -579.6376342773438, -192.98143005371094, 1581.7545166015625,
+ 2197.89208984375, 1781.2109375, 2037.47900390625,
+ 3844.01513671875, -36.79807662963867, 766.0423583984375
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'mul float32 4D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 49.1112174987793, 11.907459259033203, -21.115795135498047,
+ 70.7490005493164, -94.51628112792969, -93.78905487060547,
+ 11.178888320922852, -32.80592346191406, 83.31897735595703,
+ 91.1207275390625, -0.11235756427049637, 15.397955894470215,
+ -13.459217071533203, -50.6264762878418, -31.17625617980957,
+ -6.616114139556885, 21.72757911682129, 22.03150749206543,
+ -84.02171325683594, -94.06755828857422, 58.807273864746094,
+ -63.059783935546875, 3.3092827796936035, 9.884003639221191
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 74.96137237548828, -34.53953170776367, -33.316162109375,
+ 53.92023849487305, -83.69075012207031, 19.785221099853516,
+ 36.28113555908203, -34.31147766113281, 49.10429000854492,
+ -54.538848876953125, 70.77384948730469, -55.18768310546875,
+ -93.96234130859375, 60.08298110961914, -92.7341537475586,
+ 87.6099853515625, -8.881865501403809, 71.79511260986328,
+ -26.158620834350586, -18.935443878173828, 34.6467170715332,
+ -60.95826721191406, -11.119653701782227, 77.50324249267578
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'mul',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 3681.4443359375, -411.278076171875, 703.4972534179688,
+ 3814.802978515625, 7910.138671875, -1855.63720703125,
+ 405.582763671875, 1125.6197509765625, 4091.3193359375,
+ -4969.61962890625, -7.951977252960205, -849.7775268554688,
+ 1264.6595458984375, -3041.78955078125, 2891.103759765625,
+ -579.6376342773438, -192.98143005371094, 1581.7545166015625,
+ 2197.89208984375, 1781.2109375, 2037.47900390625,
+ 3844.01513671875, -36.79807662963867, 766.0423583984375
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'mul float32 5D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 49.1112174987793, 11.907459259033203, -21.115795135498047,
+ 70.7490005493164, -94.51628112792969, -93.78905487060547,
+ 11.178888320922852, -32.80592346191406, 83.31897735595703,
+ 91.1207275390625, -0.11235756427049637, 15.397955894470215,
+ -13.459217071533203, -50.6264762878418, -31.17625617980957,
+ -6.616114139556885, 21.72757911682129, 22.03150749206543,
+ -84.02171325683594, -94.06755828857422, 58.807273864746094,
+ -63.059783935546875, 3.3092827796936035, 9.884003639221191
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 2, 3], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 74.96137237548828, -34.53953170776367, -33.316162109375,
+ 53.92023849487305, -83.69075012207031, 19.785221099853516,
+ 36.28113555908203, -34.31147766113281, 49.10429000854492,
+ -54.538848876953125, 70.77384948730469, -55.18768310546875,
+ -93.96234130859375, 60.08298110961914, -92.7341537475586,
+ 87.6099853515625, -8.881865501403809, 71.79511260986328,
+ -26.158620834350586, -18.935443878173828, 34.6467170715332,
+ -60.95826721191406, -11.119653701782227, 77.50324249267578
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'mul',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 3681.4443359375, -411.278076171875, 703.4972534179688,
+ 3814.802978515625, 7910.138671875, -1855.63720703125,
+ 405.582763671875, 1125.6197509765625, 4091.3193359375,
+ -4969.61962890625, -7.951977252960205, -849.7775268554688,
+ 1264.6595458984375, -3041.78955078125, 2891.103759765625,
+ -579.6376342773438, -192.98143005371094, 1581.7545166015625,
+ 2197.89208984375, 1781.2109375, 2037.47900390625,
+ 3844.01513671875, -36.79807662963867, 766.0423583984375
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'mul float32 broadcast 1D to 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [67.50372314453125],
+ 'descriptor': {'dimensions': [1], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 49.1112174987793, 11.907459259033203, -21.115795135498047,
+ 70.7490005493164, -94.51628112792969, -93.78905487060547,
+ 11.178888320922852, -32.80592346191406, 83.31897735595703,
+ 91.1207275390625, -0.11235756427049637, 15.397955894470215,
+ -13.459217071533203, -50.6264762878418, -31.17625617980957,
+ -6.616114139556885, 21.72757911682129, 22.03150749206543,
+ -84.02171325683594, -94.06755828857422, 58.807273864746094,
+ -63.059783935546875, 3.3092827796936035, 9.884003639221191
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'mul',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 3315.18994140625, 803.7978515625, -1425.394775390625,
+ 4775.82080078125, -6380.20068359375, -6331.1103515625,
+ 754.6165771484375, -2214.52197265625, 5624.34130859375,
+ 6150.98828125, -7.5845537185668945, 1039.4193115234375,
+ -908.5472412109375, -3417.4755859375, -2104.513427734375,
+ -446.6123352050781, 1466.6925048828125, 1487.208740234375,
+ -5671.7783203125, -6349.91064453125, 3969.7099609375,
+ -4256.77001953125, 223.388916015625, 667.20703125
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'mul float32 broadcast 2D to 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 49.1112174987793, 11.907459259033203, -21.115795135498047,
+ 70.7490005493164, -94.51628112792969, -93.78905487060547,
+ 11.178888320922852, -32.80592346191406, 83.31897735595703,
+ 91.1207275390625, -0.11235756427049637, 15.397955894470215,
+ -13.459217071533203, -50.6264762878418, -31.17625617980957,
+ -6.616114139556885, 21.72757911682129, 22.03150749206543,
+ -84.02171325683594, -94.06755828857422, 58.807273864746094,
+ -63.059783935546875, 3.3092827796936035, 9.884003639221191
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -97.29339599609375, -81.70872497558594, -63.859336853027344,
+ -25.192203521728516, 94.61557006835938, -20.381790161132812
+ ],
+ 'descriptor': {'dimensions': [2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'mul',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ -4778.197265625, -972.9432983398438,
+ 1348.440673828125, -1782.3232421875,
+ -8942.7119140625, 1911.5888671875,
+ -1087.6319580078125, 2680.5302734375,
+ -5320.69482421875, -2295.531982421875,
+ -10.630775451660156, -313.8379211425781,
+ 1309.492919921875, 4136.625,
+ 1990.89501953125, 166.67449951171875,
+ 2055.767333984375, -449.04156494140625,
+ 8174.7578125, 7686.14013671875,
+ -3755.3935546875, 1588.6148681640625,
+ 313.10968017578125, -201.4536895751953
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'mul float32 broadcast 3D to 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 49.1112174987793, 11.907459259033203, -21.115795135498047,
+ 70.7490005493164, -94.51628112792969, -93.78905487060547,
+ 11.178888320922852, -32.80592346191406, 83.31897735595703,
+ 91.1207275390625, -0.11235756427049637, 15.397955894470215,
+ -13.459217071533203, -50.6264762878418, -31.17625617980957,
+ -6.616114139556885, 21.72757911682129, 22.03150749206543,
+ -84.02171325683594, -94.06755828857422, 58.807273864746094,
+ -63.059783935546875, 3.3092827796936035, 9.884003639221191
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 8.696772575378418, 48.377689361572266, 97.7515869140625,
+ 62.21574783325195
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'mul',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 427.1091003417969, 103.55646514892578, -183.63926696777344,
+ 3422.673095703125, -4572.4794921875, -4537.2978515625,
+ 1092.7540283203125, -3206.8310546875, 8144.5625,
+ 5669.14404296875, -6.990409851074219, 957.995361328125,
+ -117.05175018310547, -440.2869567871094, -271.1328125,
+ -320.07232666015625, 1051.130126953125, 1065.8333740234375,
+ -8213.255859375, -9195.2529296875, 5748.50439453125,
+ -3923.3115234375, 205.88949584960938, 614.940673828125
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'mul float32 broadcast 4D to 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [67.50372314453125],
+ 'descriptor': {'dimensions': [1, 1, 1, 1], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 49.1112174987793, 11.907459259033203, -21.115795135498047,
+ 70.7490005493164, -94.51628112792969, -93.78905487060547,
+ 11.178888320922852, -32.80592346191406, 83.31897735595703,
+ 91.1207275390625, -0.11235756427049637, 15.397955894470215,
+ -13.459217071533203, -50.6264762878418, -31.17625617980957,
+ -6.616114139556885, 21.72757911682129, 22.03150749206543,
+ -84.02171325683594, -94.06755828857422, 58.807273864746094,
+ -63.059783935546875, 3.3092827796936035, 9.884003639221191
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'mul',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 3315.18994140625, 803.7978515625, -1425.394775390625,
+ 4775.82080078125, -6380.20068359375, -6331.1103515625,
+ 754.6165771484375, -2214.52197265625, 5624.34130859375,
+ 6150.98828125, -7.5845537185668945, 1039.4193115234375,
+ -908.5472412109375, -3417.4755859375, -2104.513427734375,
+ -446.6123352050781, 1466.6925048828125, 1487.208740234375,
+ -5671.7783203125, -6349.91064453125, 3969.7099609375,
+ -4256.77001953125, 223.388916015625, 667.20703125
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ mulTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getMulPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/neg.https.any.js b/tests/wpt/tests/webnn/conformance_tests/neg.https.any.js
new file mode 100644
index 00000000000..8ffe3623567
--- /dev/null
+++ b/tests/wpt/tests/webnn/conformance_tests/neg.https.any.js
@@ -0,0 +1,319 @@
+// META: title=test WebNN API element-wise neg operation
+// META: global=window,dedicatedworker
+// META: variant=?cpu
+// META: variant=?gpu
+// META: variant=?npu
+// META: script=../resources/utils.js
+// META: timeout=long
+
+'use strict';
+
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-unary
+// Compute the numerical negative value of the input tensor, element-wise.
+//
+// MLOperand neg(MLOperand input);
+
+
+const getNegPrecisionTolerance = (graphResources) => {
+ const toleranceValueDict = {float32: 0, float16: 0};
+ const expectedDataType =
+ getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs);
+ return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]};
+};
+
+const negTests = [
+ {
+ 'name': 'neg float32 positive 0D scalar',
+ 'graph': {
+ 'inputs': {
+ 'negInput': {
+ 'data': [94.23045349121094],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'neg',
+ 'arguments': [{'input': 'negInput'}],
+ 'outputs': 'negOutput'
+ }],
+ 'expectedOutputs': {
+ 'negOutput': {
+ 'data': [-94.23045349121094],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'neg float32 negative 0D scalar',
+ 'graph': {
+ 'inputs': {
+ 'negInput': {
+ 'data': [-58.334503173828125],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'neg',
+ 'arguments': [{'input': 'negInput'}],
+ 'outputs': 'negOutput'
+ }],
+ 'expectedOutputs': {
+ 'negOutput': {
+ 'data': [58.334503173828125],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'neg float32 1D constant tensor',
+ 'graph': {
+ 'inputs': {
+ 'negInput': {
+ 'data': [
+ -58.334503173828125, 94.23045349121094, -67.69306945800781,
+ -36.0666389465332, 17.115114212036133, 59.2606315612793,
+ -43.77507781982422, -14.875581741333008, 22.50856590270996,
+ 98.67680358886719, 2.315542221069336, -89.86896514892578,
+ -14.28854751586914, 16.22245216369629, -4.688417911529541,
+ -44.46965026855469, -52.139259338378906, 24.165390014648438,
+ -66.4577865600586, -11.172324180603027, -25.024961471557617,
+ 22.26478385925293, 35.29130172729492, -86.18817138671875
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'neg',
+ 'arguments': [{'input': 'negInput'}],
+ 'outputs': 'negOutput'
+ }],
+ 'expectedOutputs': {
+ 'negOutput': {
+ 'data': [
+ 58.334503173828125, -94.23045349121094, 67.69306945800781,
+ 36.0666389465332, -17.115114212036133, -59.2606315612793,
+ 43.77507781982422, 14.875581741333008, -22.50856590270996,
+ -98.67680358886719, -2.315542221069336, 89.86896514892578,
+ 14.28854751586914, -16.22245216369629, 4.688417911529541,
+ 44.46965026855469, 52.139259338378906, -24.165390014648438,
+ 66.4577865600586, 11.172324180603027, 25.024961471557617,
+ -22.26478385925293, -35.29130172729492, 86.18817138671875
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'neg float32 1D tensor',
+ 'graph': {
+ 'inputs': {
+ 'negInput': {
+ 'data': [
+ -58.334503173828125, 94.23045349121094, -67.69306945800781,
+ -36.0666389465332, 17.115114212036133, 59.2606315612793,
+ -43.77507781982422, -14.875581741333008, 22.50856590270996,
+ 98.67680358886719, 2.315542221069336, -89.86896514892578,
+ -14.28854751586914, 16.22245216369629, -4.688417911529541,
+ -44.46965026855469, -52.139259338378906, 24.165390014648438,
+ -66.4577865600586, -11.172324180603027, -25.024961471557617,
+ 22.26478385925293, 35.29130172729492, -86.18817138671875
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'neg',
+ 'arguments': [{'input': 'negInput'}],
+ 'outputs': 'negOutput'
+ }],
+ 'expectedOutputs': {
+ 'negOutput': {
+ 'data': [
+ 58.334503173828125, -94.23045349121094, 67.69306945800781,
+ 36.0666389465332, -17.115114212036133, -59.2606315612793,
+ 43.77507781982422, 14.875581741333008, -22.50856590270996,
+ -98.67680358886719, -2.315542221069336, 89.86896514892578,
+ 14.28854751586914, -16.22245216369629, 4.688417911529541,
+ 44.46965026855469, 52.139259338378906, -24.165390014648438,
+ 66.4577865600586, 11.172324180603027, 25.024961471557617,
+ -22.26478385925293, -35.29130172729492, 86.18817138671875
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'neg float32 2D tensor',
+ 'graph': {
+ 'inputs': {
+ 'negInput': {
+ 'data': [
+ -58.334503173828125, 94.23045349121094, -67.69306945800781,
+ -36.0666389465332, 17.115114212036133, 59.2606315612793,
+ -43.77507781982422, -14.875581741333008, 22.50856590270996,
+ 98.67680358886719, 2.315542221069336, -89.86896514892578,
+ -14.28854751586914, 16.22245216369629, -4.688417911529541,
+ -44.46965026855469, -52.139259338378906, 24.165390014648438,
+ -66.4577865600586, -11.172324180603027, -25.024961471557617,
+ 22.26478385925293, 35.29130172729492, -86.18817138671875
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'neg',
+ 'arguments': [{'input': 'negInput'}],
+ 'outputs': 'negOutput'
+ }],
+ 'expectedOutputs': {
+ 'negOutput': {
+ 'data': [
+ 58.334503173828125, -94.23045349121094, 67.69306945800781,
+ 36.0666389465332, -17.115114212036133, -59.2606315612793,
+ 43.77507781982422, 14.875581741333008, -22.50856590270996,
+ -98.67680358886719, -2.315542221069336, 89.86896514892578,
+ 14.28854751586914, -16.22245216369629, 4.688417911529541,
+ 44.46965026855469, 52.139259338378906, -24.165390014648438,
+ 66.4577865600586, 11.172324180603027, 25.024961471557617,
+ -22.26478385925293, -35.29130172729492, 86.18817138671875
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'neg float32 3D tensor',
+ 'graph': {
+ 'inputs': {
+ 'negInput': {
+ 'data': [
+ -58.334503173828125, 94.23045349121094, -67.69306945800781,
+ -36.0666389465332, 17.115114212036133, 59.2606315612793,
+ -43.77507781982422, -14.875581741333008, 22.50856590270996,
+ 98.67680358886719, 2.315542221069336, -89.86896514892578,
+ -14.28854751586914, 16.22245216369629, -4.688417911529541,
+ -44.46965026855469, -52.139259338378906, 24.165390014648438,
+ -66.4577865600586, -11.172324180603027, -25.024961471557617,
+ 22.26478385925293, 35.29130172729492, -86.18817138671875
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'neg',
+ 'arguments': [{'input': 'negInput'}],
+ 'outputs': 'negOutput'
+ }],
+ 'expectedOutputs': {
+ 'negOutput': {
+ 'data': [
+ 58.334503173828125, -94.23045349121094, 67.69306945800781,
+ 36.0666389465332, -17.115114212036133, -59.2606315612793,
+ 43.77507781982422, 14.875581741333008, -22.50856590270996,
+ -98.67680358886719, -2.315542221069336, 89.86896514892578,
+ 14.28854751586914, -16.22245216369629, 4.688417911529541,
+ 44.46965026855469, 52.139259338378906, -24.165390014648438,
+ 66.4577865600586, 11.172324180603027, 25.024961471557617,
+ -22.26478385925293, -35.29130172729492, 86.18817138671875
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'neg float32 4D tensor',
+ 'graph': {
+ 'inputs': {
+ 'negInput': {
+ 'data': [
+ -58.334503173828125, 94.23045349121094, -67.69306945800781,
+ -36.0666389465332, 17.115114212036133, 59.2606315612793,
+ -43.77507781982422, -14.875581741333008, 22.50856590270996,
+ 98.67680358886719, 2.315542221069336, -89.86896514892578,
+ -14.28854751586914, 16.22245216369629, -4.688417911529541,
+ -44.46965026855469, -52.139259338378906, 24.165390014648438,
+ -66.4577865600586, -11.172324180603027, -25.024961471557617,
+ 22.26478385925293, 35.29130172729492, -86.18817138671875
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'neg',
+ 'arguments': [{'input': 'negInput'}],
+ 'outputs': 'negOutput'
+ }],
+ 'expectedOutputs': {
+ 'negOutput': {
+ 'data': [
+ 58.334503173828125, -94.23045349121094, 67.69306945800781,
+ 36.0666389465332, -17.115114212036133, -59.2606315612793,
+ 43.77507781982422, 14.875581741333008, -22.50856590270996,
+ -98.67680358886719, -2.315542221069336, 89.86896514892578,
+ 14.28854751586914, -16.22245216369629, 4.688417911529541,
+ 44.46965026855469, 52.139259338378906, -24.165390014648438,
+ 66.4577865600586, 11.172324180603027, 25.024961471557617,
+ -22.26478385925293, -35.29130172729492, 86.18817138671875
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'neg float32 5D tensor',
+ 'graph': {
+ 'inputs': {
+ 'negInput': {
+ 'data': [
+ -58.334503173828125, 94.23045349121094, -67.69306945800781,
+ -36.0666389465332, 17.115114212036133, 59.2606315612793,
+ -43.77507781982422, -14.875581741333008, 22.50856590270996,
+ 98.67680358886719, 2.315542221069336, -89.86896514892578,
+ -14.28854751586914, 16.22245216369629, -4.688417911529541,
+ -44.46965026855469, -52.139259338378906, 24.165390014648438,
+ -66.4577865600586, -11.172324180603027, -25.024961471557617,
+ 22.26478385925293, 35.29130172729492, -86.18817138671875
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 1, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'neg',
+ 'arguments': [{'input': 'negInput'}],
+ 'outputs': 'negOutput'
+ }],
+ 'expectedOutputs': {
+ 'negOutput': {
+ 'data': [
+ 58.334503173828125, -94.23045349121094, 67.69306945800781,
+ 36.0666389465332, -17.115114212036133, -59.2606315612793,
+ 43.77507781982422, 14.875581741333008, -22.50856590270996,
+ -98.67680358886719, -2.315542221069336, 89.86896514892578,
+ 14.28854751586914, -16.22245216369629, 4.688417911529541,
+ 44.46965026855469, 52.139259338378906, -24.165390014648438,
+ 66.4577865600586, 11.172324180603027, 25.024961471557617,
+ -22.26478385925293, -35.29130172729492, 86.18817138671875
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 1, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ negTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getNegPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/pad.https.any.js b/tests/wpt/tests/webnn/conformance_tests/pad.https.any.js
index ec9c106e633..c05f18f83c2 100644
--- a/tests/wpt/tests/webnn/conformance_tests/pad.https.any.js
+++ b/tests/wpt/tests/webnn/conformance_tests/pad.https.any.js
@@ -8,6 +8,730 @@
'use strict';
-// https://webmachinelearning.github.io/webnn/#api-mlgraphbuilder-pad
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-pad
+// Inflate the tensor with constant or mirrored values on the edges.
+//
+// enum MLPaddingMode {
+// "constant",
+// "edge",
+// "reflection",
+// "symmetric"
+// };
+//
+// dictionary MLPadOptions {
+// MLPaddingMode mode = "constant";
+// MLNumber value = 0;
+// };
+//
+// MLOperand pad(
+// MLOperand input, sequence<[EnforceRange] unsigned long>beginningPadding,
+// sequence<[EnforceRange] unsigned long>endingPadding,
+// optional MLPadOptions options = {});
-runWebNNConformanceTests('pad', buildPad);
+
+const getPadPrecisionTolerance = (graphResources) => {
+ const toleranceValueDict = {float32: 0, float16: 0};
+ const expectedDataType =
+ getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs);
+ return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]};
+};
+
+const padTests = [
+ {
+ 'name': 'pad float32 1D constant tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'padInput': {
+ 'data': [
+ 22.76361846923828, -21.168529510498047, -91.66168975830078,
+ 16.863798141479492, 60.51472091674805, -70.56755065917969,
+ -60.643272399902344, -47.8821907043457, 68.72557830810547
+ ],
+ 'descriptor': {'dimensions': [9], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'pad',
+ 'arguments': [
+ {'input': 'padInput'}, {'beginningPadding': [1]},
+ {'endingPadding': [1]}
+ ],
+ 'outputs': 'padOutput'
+ }],
+ 'expectedOutputs': {
+ 'padOutput': {
+ 'data': [
+ 0, 22.76361846923828, -21.168529510498047, -91.66168975830078,
+ 16.863798141479492, 60.51472091674805, -70.56755065917969,
+ -60.643272399902344, -47.8821907043457, 68.72557830810547, 0
+ ],
+ 'descriptor': {'dimensions': [11], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'pad float32 1D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'padInput': {
+ 'data': [
+ 22.76361846923828, -21.168529510498047, -91.66168975830078,
+ 16.863798141479492, 60.51472091674805, -70.56755065917969,
+ -60.643272399902344, -47.8821907043457, 68.72557830810547
+ ],
+ 'descriptor': {'dimensions': [9], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'pad',
+ 'arguments': [
+ {'input': 'padInput'}, {'beginningPadding': [1]},
+ {'endingPadding': [1]}
+ ],
+ 'outputs': 'padOutput'
+ }],
+ 'expectedOutputs': {
+ 'padOutput': {
+ 'data': [
+ 0, 22.76361846923828, -21.168529510498047, -91.66168975830078,
+ 16.863798141479492, 60.51472091674805, -70.56755065917969,
+ -60.643272399902344, -47.8821907043457, 68.72557830810547, 0
+ ],
+ 'descriptor': {'dimensions': [11], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'pad float32 2D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'padInput': {
+ 'data': [
+ 22.76361846923828, -21.168529510498047, -91.66168975830078,
+ 16.863798141479492, 60.51472091674805, -70.56755065917969,
+ -60.643272399902344, -47.8821907043457, 68.72557830810547
+ ],
+ 'descriptor': {'dimensions': [3, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'pad',
+ 'arguments': [
+ {'input': 'padInput'}, {'beginningPadding': [1, 1]},
+ {'endingPadding': [1, 1]}
+ ],
+ 'outputs': 'padOutput'
+ }],
+ 'expectedOutputs': {
+ 'padOutput': {
+ 'data': [
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 22.76361846923828,
+ -21.168529510498047,
+ -91.66168975830078,
+ 0,
+ 0,
+ 16.863798141479492,
+ 60.51472091674805,
+ -70.56755065917969,
+ 0,
+ 0,
+ -60.643272399902344,
+ -47.8821907043457,
+ 68.72557830810547,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0
+ ],
+ 'descriptor': {'dimensions': [5, 5], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'pad float32 3D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'padInput': {
+ 'data': [
+ 22.76361846923828, -21.168529510498047, -91.66168975830078,
+ 16.863798141479492, 60.51472091674805, -70.56755065917969,
+ -60.643272399902344, -47.8821907043457, 68.72557830810547
+ ],
+ 'descriptor': {'dimensions': [1, 3, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'pad',
+ 'arguments': [
+ {'input': 'padInput'}, {'beginningPadding': [1, 1, 1]},
+ {'endingPadding': [1, 1, 1]}
+ ],
+ 'outputs': 'padOutput'
+ }],
+ 'expectedOutputs': {
+ 'padOutput': {
+ 'data': [
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 22.76361846923828,
+ -21.168529510498047,
+ -91.66168975830078,
+ 0,
+ 0,
+ 16.863798141479492,
+ 60.51472091674805,
+ -70.56755065917969,
+ 0,
+ 0,
+ -60.643272399902344,
+ -47.8821907043457,
+ 68.72557830810547,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0
+ ],
+ 'descriptor': {'dimensions': [3, 5, 5], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'pad float32 4D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'padInput': {
+ 'data': [
+ 22.76361846923828, -21.168529510498047, -91.66168975830078,
+ 16.863798141479492, 60.51472091674805, -70.56755065917969,
+ -60.643272399902344, -47.8821907043457, 68.72557830810547
+ ],
+ 'descriptor': {'dimensions': [1, 3, 3, 1], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'pad',
+ 'arguments': [
+ {'input': 'padInput'}, {'beginningPadding': [0, 1, 1, 1]},
+ {'endingPadding': [0, 1, 1, 1]}
+ ],
+ 'outputs': 'padOutput'
+ }],
+ 'expectedOutputs': {
+ 'padOutput': {
+ 'data': [
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 22.76361846923828,
+ 0,
+ 0,
+ -21.168529510498047,
+ 0,
+ 0,
+ -91.66168975830078,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 16.863798141479492,
+ 0,
+ 0,
+ 60.51472091674805,
+ 0,
+ 0,
+ -70.56755065917969,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ -60.643272399902344,
+ 0,
+ 0,
+ -47.8821907043457,
+ 0,
+ 0,
+ 68.72557830810547,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0
+ ],
+ 'descriptor': {'dimensions': [1, 5, 5, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'pad float32 5D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'padInput': {
+ 'data': [
+ 22.76361846923828, -21.168529510498047, -91.66168975830078,
+ 16.863798141479492, 60.51472091674805, -70.56755065917969,
+ -60.643272399902344, -47.8821907043457, 68.72557830810547
+ ],
+ 'descriptor': {'dimensions': [1, 3, 3, 1, 1], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'pad',
+ 'arguments': [
+ {'input': 'padInput'}, {'beginningPadding': [0, 1, 1, 0, 1]},
+ {'endingPadding': [0, 1, 1, 0, 1]}
+ ],
+ 'outputs': 'padOutput'
+ }],
+ 'expectedOutputs': {
+ 'padOutput': {
+ 'data': [
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 22.76361846923828,
+ 0,
+ 0,
+ -21.168529510498047,
+ 0,
+ 0,
+ -91.66168975830078,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 16.863798141479492,
+ 0,
+ 0,
+ 60.51472091674805,
+ 0,
+ 0,
+ -70.56755065917969,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ -60.643272399902344,
+ 0,
+ 0,
+ -47.8821907043457,
+ 0,
+ 0,
+ 68.72557830810547,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0
+ ],
+ 'descriptor': {'dimensions': [1, 5, 5, 1, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'pad float32 2D tensor explicit options.mode=\'constant\'',
+ 'graph': {
+ 'inputs': {
+ 'padInput': {
+ 'data': [
+ 22.76361846923828, -21.168529510498047, -91.66168975830078,
+ 16.863798141479492, 60.51472091674805, -70.56755065917969,
+ -60.643272399902344, -47.8821907043457, 68.72557830810547
+ ],
+ 'descriptor': {'dimensions': [3, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'pad',
+ 'arguments': [
+ {'input': 'padInput'}, {'beginningPadding': [1, 1]},
+ {'endingPadding': [1, 1]}, {'options': {'mode': 'constant'}}
+ ],
+ 'outputs': 'padOutput'
+ }],
+ 'expectedOutputs': {
+ 'padOutput': {
+ 'data': [
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 22.76361846923828,
+ -21.168529510498047,
+ -91.66168975830078,
+ 0,
+ 0,
+ 16.863798141479492,
+ 60.51472091674805,
+ -70.56755065917969,
+ 0,
+ 0,
+ -60.643272399902344,
+ -47.8821907043457,
+ 68.72557830810547,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0
+ ],
+ 'descriptor': {'dimensions': [5, 5], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'pad float32 2D tensor options.value default constant mode',
+ 'graph': {
+ 'inputs': {
+ 'padInput': {
+ 'data': [
+ 22.76361846923828, -21.168529510498047, -91.66168975830078,
+ 16.863798141479492, 60.51472091674805, -70.56755065917969,
+ -60.643272399902344, -47.8821907043457, 68.72557830810547
+ ],
+ 'descriptor': {'dimensions': [3, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'pad',
+ 'arguments': [
+ {'input': 'padInput'}, {'beginningPadding': [1, 1]},
+ {'endingPadding': [1, 1]}, {'options': {'value': 1}}
+ ],
+ 'outputs': 'padOutput'
+ }],
+ 'expectedOutputs': {
+ 'padOutput': {
+ 'data': [
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 22.76361846923828,
+ -21.168529510498047,
+ -91.66168975830078,
+ 1,
+ 1,
+ 16.863798141479492,
+ 60.51472091674805,
+ -70.56755065917969,
+ 1,
+ 1,
+ -60.643272399902344,
+ -47.8821907043457,
+ 68.72557830810547,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1,
+ 1
+ ],
+ 'descriptor': {'dimensions': [5, 5], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'pad float32 4D tensor options.mode=\'edge\'',
+ 'graph': {
+ 'inputs': {
+ 'padInput': {
+ 'data': [
+ 22.76361846923828, -21.168529510498047, -91.66168975830078,
+ 16.863798141479492, 60.51472091674805, -70.56755065917969,
+ -60.643272399902344, -47.8821907043457, 68.72557830810547
+ ],
+ 'descriptor': {'dimensions': [1, 3, 3, 1], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'pad',
+ 'arguments': [
+ {'input': 'padInput'}, {'beginningPadding': [0, 2, 2, 0]},
+ {'endingPadding': [0, 2, 2, 0]}, {'options': {'mode': 'edge'}}
+ ],
+ 'outputs': 'padOutput'
+ }],
+ 'expectedOutputs': {
+ 'padOutput': {
+ 'data': [
+ 22.76361846923828, 22.76361846923828, 22.76361846923828,
+ -21.168529510498047, -91.66168975830078, -91.66168975830078,
+ -91.66168975830078, 22.76361846923828, 22.76361846923828,
+ 22.76361846923828, -21.168529510498047, -91.66168975830078,
+ -91.66168975830078, -91.66168975830078, 22.76361846923828,
+ 22.76361846923828, 22.76361846923828, -21.168529510498047,
+ -91.66168975830078, -91.66168975830078, -91.66168975830078,
+ 16.863798141479492, 16.863798141479492, 16.863798141479492,
+ 60.51472091674805, -70.56755065917969, -70.56755065917969,
+ -70.56755065917969, -60.643272399902344, -60.643272399902344,
+ -60.643272399902344, -47.8821907043457, 68.72557830810547,
+ 68.72557830810547, 68.72557830810547, -60.643272399902344,
+ -60.643272399902344, -60.643272399902344, -47.8821907043457,
+ 68.72557830810547, 68.72557830810547, 68.72557830810547,
+ -60.643272399902344, -60.643272399902344, -60.643272399902344,
+ -47.8821907043457, 68.72557830810547, 68.72557830810547,
+ 68.72557830810547
+ ],
+ 'descriptor': {'dimensions': [1, 7, 7, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'pad float32 4D tensor options.mode=\'reflection\'',
+ 'graph': {
+ 'inputs': {
+ 'padInput': {
+ 'data': [
+ 22.76361846923828, -21.168529510498047, -91.66168975830078,
+ 16.863798141479492, 60.51472091674805, -70.56755065917969,
+ -60.643272399902344, -47.8821907043457, 68.72557830810547
+ ],
+ 'descriptor': {'dimensions': [1, 3, 3, 1], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'pad',
+ 'arguments': [
+ {'input': 'padInput'}, {'beginningPadding': [0, 2, 2, 0]},
+ {'endingPadding': [0, 2, 2, 0]}, {'options': {'mode': 'reflection'}}
+ ],
+ 'outputs': 'padOutput'
+ }],
+ 'expectedOutputs': {
+ 'padOutput': {
+ 'data': [
+ 68.72557830810547, -47.8821907043457, -60.643272399902344,
+ -47.8821907043457, 68.72557830810547, -47.8821907043457,
+ -60.643272399902344, -70.56755065917969, 60.51472091674805,
+ 16.863798141479492, 60.51472091674805, -70.56755065917969,
+ 60.51472091674805, 16.863798141479492, -91.66168975830078,
+ -21.168529510498047, 22.76361846923828, -21.168529510498047,
+ -91.66168975830078, -21.168529510498047, 22.76361846923828,
+ -70.56755065917969, 60.51472091674805, 16.863798141479492,
+ 60.51472091674805, -70.56755065917969, 60.51472091674805,
+ 16.863798141479492, 68.72557830810547, -47.8821907043457,
+ -60.643272399902344, -47.8821907043457, 68.72557830810547,
+ -47.8821907043457, -60.643272399902344, -70.56755065917969,
+ 60.51472091674805, 16.863798141479492, 60.51472091674805,
+ -70.56755065917969, 60.51472091674805, 16.863798141479492,
+ -91.66168975830078, -21.168529510498047, 22.76361846923828,
+ -21.168529510498047, -91.66168975830078, -21.168529510498047,
+ 22.76361846923828
+ ],
+ 'descriptor': {'dimensions': [1, 7, 7, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'pad float32 4D tensor options.mode=\'symmetric\'',
+ 'graph': {
+ 'inputs': {
+ 'padInput': {
+ 'data': [
+ 22.76361846923828, -21.168529510498047, -91.66168975830078,
+ 16.863798141479492, 60.51472091674805, -70.56755065917969,
+ -60.643272399902344, -47.8821907043457, 68.72557830810547
+ ],
+ 'descriptor': {'dimensions': [1, 3, 3, 1], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'pad',
+ 'arguments': [
+ {'input': 'padInput'}, {'beginningPadding': [0, 2, 2, 0]},
+ {'endingPadding': [0, 2, 2, 0]}, {'options': {'mode': 'symmetric'}}
+ ],
+ 'outputs': 'padOutput'
+ }],
+ 'expectedOutputs': {
+ 'padOutput': {
+ 'data': [
+ 60.51472091674805, 16.863798141479492, 16.863798141479492,
+ 60.51472091674805, -70.56755065917969, -70.56755065917969,
+ 60.51472091674805, -21.168529510498047, 22.76361846923828,
+ 22.76361846923828, -21.168529510498047, -91.66168975830078,
+ -91.66168975830078, -21.168529510498047, -21.168529510498047,
+ 22.76361846923828, 22.76361846923828, -21.168529510498047,
+ -91.66168975830078, -91.66168975830078, -21.168529510498047,
+ 60.51472091674805, 16.863798141479492, 16.863798141479492,
+ 60.51472091674805, -70.56755065917969, -70.56755065917969,
+ 60.51472091674805, -47.8821907043457, -60.643272399902344,
+ -60.643272399902344, -47.8821907043457, 68.72557830810547,
+ 68.72557830810547, -47.8821907043457, -47.8821907043457,
+ -60.643272399902344, -60.643272399902344, -47.8821907043457,
+ 68.72557830810547, 68.72557830810547, -47.8821907043457,
+ 60.51472091674805, 16.863798141479492, 16.863798141479492,
+ 60.51472091674805, -70.56755065917969, -70.56755065917969,
+ 60.51472091674805
+ ],
+ 'descriptor': {'dimensions': [1, 7, 7, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ padTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getPadPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/parallel-compute.https.any.js b/tests/wpt/tests/webnn/conformance_tests/parallel-compute.https.any.js
index ea1b5dbdc44..3b9c41276ad 100644
--- a/tests/wpt/tests/webnn/conformance_tests/parallel-compute.https.any.js
+++ b/tests/wpt/tests/webnn/conformance_tests/parallel-compute.https.any.js
@@ -8,13 +8,48 @@
'use strict';
-// https://webmachinelearning.github.io/webnn/#api-mlcontext-compute
+// https://www.w3.org/TR/webnn/#api-mlcontext-compute
+
+/**
+ * WebNN parallel compute operation test.
+ */
+const testParallelCompute = () => {
+ let mlContext;
+ let mlGraph;
+
+ promise_setup(async () => {
+ try {
+ mlContext = await navigator.ml.createContext(contextOptions);
+ } catch (e) {
+ throw new AssertionError(
+ `Unable to create context for ${variant} variant. ${e}`);
+ }
+ // Construct a simple graph: A = B * 2.
+ const builder = new MLGraphBuilder(mlContext);
+ const operandType = {dataType: 'float32', dimensions: [1]};
+ const inputOperand = builder.input('input', operandType);
+ const constOperand = builder.constant(operandType, Float32Array.from([2]));
+ const outputOperand = builder.mul(inputOperand, constOperand);
+ mlGraph = await builder.build({'output': outputOperand});
+ });
+
+ promise_test(async () => {
+ const testInputs = [1, 2, 3, 4];
+
+ const actualOutputs = await Promise.all(testInputs.map(async (input) => {
+ let inputs = {'input': Float32Array.from([input])};
+ let outputs = {'output': new Float32Array(1)};
+ ({inputs, outputs} = await mlContext.compute(mlGraph, inputs, outputs));
+ return outputs.output[0];
+ }));
+
+ const expectedOutputs = [2, 4, 6, 8];
+ assert_array_equals(actualOutputs, expectedOutputs);
+ });
+};
if (navigator.ml) {
testParallelCompute();
} else {
- // Show indication to users why the test failed
- test(
- () => assert_not_equals(
- navigator.ml, undefined, 'ml property is defined on navigator'));
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
}
diff --git a/tests/wpt/tests/webnn/conformance_tests/pooling.https.any.js b/tests/wpt/tests/webnn/conformance_tests/pooling.https.any.js
index 83eea50a12f..9dfd6ba0ca4 100644
--- a/tests/wpt/tests/webnn/conformance_tests/pooling.https.any.js
+++ b/tests/wpt/tests/webnn/conformance_tests/pooling.https.any.js
@@ -8,7 +8,2299 @@
'use strict';
-// https://webmachinelearning.github.io/webnn/#api-mlgraphbuilder-pool2d
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-pool2d
+// Compute a pooling operation across all the elements within the moving window
+// over the input tensor.
+//
+// enum MLRoundingType {
+// "floor",
+// "ceil"
+// };
+//
+// dictionary MLPool2dOptions {
+// sequence<[EnforceRange] unsigned long> windowDimensions;
+// sequence<[EnforceRange] unsigned long> padding;
+// sequence<[EnforceRange] unsigned long> strides;
+// sequence<[EnforceRange] unsigned long> dilations;
+// MLInputOperandLayout layout = "nchw";
+// MLRoundingType roundingType = "floor";
+// sequence<[EnforceRange] unsigned long> outputSizes;
+// };
+//
+// MLOperand averagePool2d(
+// MLOperand input, optional MLPool2dOptions options = {});
+// MLOperand l2Pool2d(
+// MLOperand input, optional MLPool2dOptions options = {});
+// MLOperand maxPool2d(
+// MLOperand input, optional MLPool2dOptions options = {});
-runWebNNConformanceTests(
- ['averagePool2d', 'l2Pool2d', 'maxPool2d'], buildOperationWithSingleInput);
+
+const getPoolingOperatorsPrecisionTolerance = (graphResources) => {
+ const args = graphResources.operators[0].arguments;
+ const inputShape = graphResources.inputs[args[0][Object.keys(args[0])[0]]]
+ .descriptor.dimensions;
+ const options =
+ args.length === 2 ? {...args[1][Object.keys(args[1])[0]]} : {};
+ let height;
+ let width;
+
+ if (options.windowDimensions) {
+ height = options.windowDimensions[0];
+ width = options.windowDimensions[1];
+ } else {
+ // If not present, the window dimensions are assumed to be the height and
+ // width dimensions of the input shape
+ if (options.layout && options.layout === 'nhwc') {
+ height = inputShape[1];
+ width = inputShape[2];
+ } else {
+ // nhwc layout of input
+ height = inputShape[2];
+ width = inputShape[3];
+ }
+ }
+
+ const tolerance = height * width + 2;
+ const toleranceDict = {
+ averagePool2d: {float32: tolerance, float16: tolerance},
+ l2Pool2d: {float32: tolerance, float16: tolerance},
+ maxPool2d: {float32: 0, float16: 0},
+ };
+ const expectedDataType =
+ getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs);
+ return {
+ metricType: 'ULP',
+ value: toleranceDict[graphResources.operators[0].name][expectedDataType]
+ };
+};
+
+const poolingOperatorsTests = [
+ // averagePool2d tests
+ {
+ 'name':
+ 'averagePool2d float32 4D constant tensor all positive default options',
+ 'graph': {
+ 'inputs': {
+ 'averagePool2dInput': {
+ 'data': [
+ 22.975555419921875, 78.15438079833984, 9.686111450195312,
+ 51.298038482666016, 32.193084716796875, 87.65037536621094,
+ 87.25082397460938, 39.49794006347656, 80.0996322631836,
+ 10.220142364501953, 52.602699279785156, 1.4128639698028564,
+ 11.95406436920166, 85.00074768066406, 64.78374481201172,
+ 88.03128814697266, 11.333850860595703, 70.61659240722656,
+ 84.90442657470703, 79.06687927246094, 7.3287248611450195,
+ 35.97796630859375, 10.177306175231934, 1.4140757322311401,
+ 78.10037994384766, 91.59549713134766, 65.64701080322266,
+ 55.14215087890625, 18.432437896728516, 49.34624099731445,
+ 15.648024559020996, 68.02723693847656, 20.342548370361328,
+ 26.727949142456055, 64.87446594238281, 46.5671501159668,
+ 79.57833099365234, 4.33846378326416, 38.183837890625,
+ 45.25398254394531, 80.9718017578125, 67.58124542236328,
+ 6.0264997482299805, 29.7788143157959, 58.58993148803711,
+ 2.2384984493255615, 14.50549030303955, 68.72449493408203,
+ 76.45657348632812, 23.53263282775879
+ ],
+ 'descriptor': {'dimensions': [1, 2, 5, 5], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'averagePool2d',
+ 'arguments': [{'input': 'averagePool2dInput'}],
+ 'outputs': 'averagePool2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'averagePool2dOutput': {
+ 'data': [47.26926803588867, 44.72445297241211],
+ 'descriptor': {'dimensions': [1, 2, 1, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'averagePool2d float32 4D tensor all positive default options',
+ 'graph': {
+ 'inputs': {
+ 'averagePool2dInput': {
+ 'data': [
+ 22.975555419921875, 78.15438079833984, 9.686111450195312,
+ 51.298038482666016, 32.193084716796875, 87.65037536621094,
+ 87.25082397460938, 39.49794006347656, 80.0996322631836,
+ 10.220142364501953, 52.602699279785156, 1.4128639698028564,
+ 11.95406436920166, 85.00074768066406, 64.78374481201172,
+ 88.03128814697266, 11.333850860595703, 70.61659240722656,
+ 84.90442657470703, 79.06687927246094, 7.3287248611450195,
+ 35.97796630859375, 10.177306175231934, 1.4140757322311401,
+ 78.10037994384766, 91.59549713134766, 65.64701080322266,
+ 55.14215087890625, 18.432437896728516, 49.34624099731445,
+ 15.648024559020996, 68.02723693847656, 20.342548370361328,
+ 26.727949142456055, 64.87446594238281, 46.5671501159668,
+ 79.57833099365234, 4.33846378326416, 38.183837890625,
+ 45.25398254394531, 80.9718017578125, 67.58124542236328,
+ 6.0264997482299805, 29.7788143157959, 58.58993148803711,
+ 2.2384984493255615, 14.50549030303955, 68.72449493408203,
+ 76.45657348632812, 23.53263282775879
+ ],
+ 'descriptor': {'dimensions': [1, 2, 5, 5], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'averagePool2d',
+ 'arguments': [{'input': 'averagePool2dInput'}],
+ 'outputs': 'averagePool2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'averagePool2dOutput': {
+ 'data': [47.26926803588867, 44.72445297241211],
+ 'descriptor': {'dimensions': [1, 2, 1, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'averagePool2d float32 4D tensor all negative default options',
+ 'graph': {
+ 'inputs': {
+ 'averagePool2dInput': {
+ 'data': [
+ -83.87757873535156, -2.0740277767181396, -7.561108589172363,
+ -45.274261474609375, -16.36655616760254, -44.908512115478516,
+ -42.04186248779297, -44.77231979370117, -1.5066279172897339,
+ -52.65203857421875, -92.01856231689453, -48.004093170166016,
+ -61.522972106933594, -93.44403839111328, -25.780330657958984,
+ -95.51873779296875, -10.963757514953613, -59.132747650146484,
+ -32.60173797607422, -21.4510440826416, -87.115966796875,
+ -61.326114654541016, -41.989723205566406, -87.8764877319336,
+ -71.69316101074219, -80.24160766601562, -97.48886108398438,
+ -75.89422607421875, -45.08991622924805, -88.27134704589844,
+ -90.71282958984375, -93.32392120361328, -59.14753341674805,
+ -45.33106231689453, -51.32562255859375, -31.154796600341797,
+ -31.62424087524414, -62.80168151855469, -63.558509826660156,
+ -68.96183013916016, -43.09415054321289, -15.803443908691406,
+ -64.31092071533203, -66.45872497558594, -42.027252197265625,
+ -26.032955169677734, -22.73752784729004, -70.32036590576172,
+ -85.28227996826172, -92.10668182373047
+ ],
+ 'descriptor': {'dimensions': [1, 2, 5, 5], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'averagePool2d',
+ 'arguments': [{'input': 'averagePool2dInput'}],
+ 'outputs': 'averagePool2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'averagePool2dOutput': {
+ 'data': [-49.258975982666016, -60.52408981323242],
+ 'descriptor': {'dimensions': [1, 2, 1, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'averagePool2d float32 4D tensor options.windowDimensions',
+ 'graph': {
+ 'inputs': {
+ 'averagePool2dInput': {
+ 'data': [
+ 22.975555419921875, 78.15438079833984, 9.686111450195312,
+ 51.298038482666016, 32.193084716796875, 87.65037536621094,
+ 87.25082397460938, 39.49794006347656, 80.0996322631836,
+ 10.220142364501953, 52.602699279785156, 1.4128639698028564,
+ 11.95406436920166, 85.00074768066406, 64.78374481201172,
+ 88.03128814697266, 11.333850860595703, 70.61659240722656,
+ 84.90442657470703, 79.06687927246094, 7.3287248611450195,
+ 35.97796630859375, 10.177306175231934, 1.4140757322311401,
+ 78.10037994384766, 91.59549713134766, 65.64701080322266,
+ 55.14215087890625, 18.432437896728516, 49.34624099731445,
+ 15.648024559020996, 68.02723693847656, 20.342548370361328,
+ 26.727949142456055, 64.87446594238281, 46.5671501159668,
+ 79.57833099365234, 4.33846378326416, 38.183837890625,
+ 45.25398254394531, 80.9718017578125, 67.58124542236328,
+ 6.0264997482299805, 29.7788143157959, 58.58993148803711,
+ 2.2384984493255615, 14.50549030303955, 68.72449493408203,
+ 76.45657348632812, 23.53263282775879
+ ],
+ 'descriptor': {'dimensions': [1, 2, 5, 5], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'averagePool2d',
+ 'arguments': [
+ {'input': 'averagePool2dInput'},
+ {'options': {'windowDimensions': [3, 3]}}
+ ],
+ 'outputs': 'averagePool2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'averagePool2dOutput': {
+ 'data': [
+ 43.46498107910156, 49.37273406982422, 42.7481689453125,
+ 50.038944244384766, 52.452327728271484, 58.46046447753906,
+ 32.15948486328125, 34.75465393066406, 54.00202560424805,
+ 49.65404510498047, 41.824440002441406, 35.84912109375,
+ 43.23125457763672, 37.842769622802734, 32.67961120605469,
+ 41.17021942138672, 42.79708480834961, 38.987247467041016
+ ],
+ 'descriptor': {'dimensions': [1, 2, 3, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'global averagePool2d float32 4D tensor all positive options.windowDimensions',
+ 'graph': {
+ 'inputs': {
+ 'averagePool2dInput': {
+ 'data': [
+ 22.975555419921875, 78.15438079833984, 9.686111450195312,
+ 51.298038482666016, 32.193084716796875, 87.65037536621094,
+ 87.25082397460938, 39.49794006347656, 80.0996322631836,
+ 10.220142364501953, 52.602699279785156, 1.4128639698028564,
+ 11.95406436920166, 85.00074768066406, 64.78374481201172,
+ 88.03128814697266, 11.333850860595703, 70.61659240722656,
+ 84.90442657470703, 79.06687927246094, 7.3287248611450195,
+ 35.97796630859375, 10.177306175231934, 1.4140757322311401,
+ 78.10037994384766, 91.59549713134766, 65.64701080322266,
+ 55.14215087890625, 18.432437896728516, 49.34624099731445,
+ 15.648024559020996, 68.02723693847656, 20.342548370361328,
+ 26.727949142456055, 64.87446594238281, 46.5671501159668,
+ 79.57833099365234, 4.33846378326416, 38.183837890625,
+ 45.25398254394531, 80.9718017578125, 67.58124542236328,
+ 6.0264997482299805, 29.7788143157959, 58.58993148803711,
+ 2.2384984493255615, 14.50549030303955, 68.72449493408203,
+ 76.45657348632812, 23.53263282775879
+ ],
+ 'descriptor': {'dimensions': [1, 2, 5, 5], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'averagePool2d',
+ 'arguments': [
+ {'input': 'averagePool2dInput'},
+ {'options': {'windowDimensions': [5, 5]}}
+ ],
+ 'outputs': 'averagePool2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'averagePool2dOutput': {
+ 'data': [47.26926803588867, 44.72445297241211],
+ 'descriptor': {'dimensions': [1, 2, 1, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'averagePool2d float32 4D tensor options.padding',
+ 'graph': {
+ 'inputs': {
+ 'averagePool2dInput': {
+ 'data': [
+ 22.975555419921875, 78.15438079833984, 9.686111450195312,
+ 51.298038482666016, 32.193084716796875, 87.65037536621094,
+ 87.25082397460938, 39.49794006347656, 80.0996322631836,
+ 10.220142364501953, 52.602699279785156, 1.4128639698028564,
+ 11.95406436920166, 85.00074768066406, 64.78374481201172,
+ 88.03128814697266, 11.333850860595703, 70.61659240722656,
+ 84.90442657470703, 79.06687927246094, 7.3287248611450195,
+ 35.97796630859375, 10.177306175231934, 1.4140757322311401,
+ 78.10037994384766, 91.59549713134766, 65.64701080322266,
+ 55.14215087890625, 18.432437896728516, 49.34624099731445,
+ 15.648024559020996, 68.02723693847656, 20.342548370361328,
+ 26.727949142456055, 64.87446594238281, 46.5671501159668,
+ 79.57833099365234, 4.33846378326416, 38.183837890625,
+ 45.25398254394531, 80.9718017578125, 67.58124542236328,
+ 6.0264997482299805, 29.7788143157959, 58.58993148803711,
+ 2.2384984493255615, 14.50549030303955, 68.72449493408203,
+ 76.45657348632812, 23.53263282775879
+ ],
+ 'descriptor': {'dimensions': [1, 2, 5, 5], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'averagePool2d',
+ 'arguments': [
+ {'input': 'averagePool2dInput'},
+ {'options': {'padding': [1, 0, 0, 1]}}
+ ],
+ 'outputs': 'averagePool2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'averagePool2dOutput': {
+ 'data': [
+ 52.43666076660156, 49.84208297729492, 47.26926803588867,
+ 46.15715408325195, 46.63268280029297, 43.616947174072266,
+ 44.72445297241211, 44.05451583862305
+ ],
+ 'descriptor': {'dimensions': [1, 2, 2, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'averagePool2d float32 4D tensor options.strides',
+ 'graph': {
+ 'inputs': {
+ 'averagePool2dInput': {
+ 'data': [
+ 22.975555419921875, 78.15438079833984, 9.686111450195312,
+ 51.298038482666016, 32.193084716796875, 87.65037536621094,
+ 87.25082397460938, 39.49794006347656, 80.0996322631836,
+ 10.220142364501953, 52.602699279785156, 1.4128639698028564,
+ 11.95406436920166, 85.00074768066406, 64.78374481201172,
+ 88.03128814697266, 11.333850860595703, 70.61659240722656,
+ 84.90442657470703, 79.06687927246094, 7.3287248611450195,
+ 35.97796630859375, 10.177306175231934, 1.4140757322311401,
+ 78.10037994384766, 91.59549713134766, 65.64701080322266,
+ 55.14215087890625, 18.432437896728516, 49.34624099731445,
+ 15.648024559020996, 68.02723693847656, 20.342548370361328,
+ 26.727949142456055, 64.87446594238281, 46.5671501159668,
+ 79.57833099365234, 4.33846378326416, 38.183837890625,
+ 45.25398254394531, 80.9718017578125, 67.58124542236328,
+ 6.0264997482299805, 29.7788143157959, 58.58993148803711,
+ 2.2384984493255615, 14.50549030303955, 68.72449493408203,
+ 76.45657348632812, 23.53263282775879
+ ],
+ 'descriptor': {'dimensions': [1, 2, 5, 5], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'averagePool2d',
+ 'arguments': [
+ {'input': 'averagePool2dInput'},
+ {'options': {'windowDimensions': [3, 3], 'strides': [2, 2]}}
+ ],
+ 'outputs': 'averagePool2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'averagePool2dOutput': {
+ 'data': [
+ 43.46498107910156, 42.7481689453125, 32.15948486328125,
+ 54.00202560424805, 49.65404510498047, 35.84912109375,
+ 41.17021942138672, 38.987247467041016
+ ],
+ 'descriptor': {'dimensions': [1, 2, 2, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'averagePool2d float32 4D tensor options.dilations',
+ 'graph': {
+ 'inputs': {
+ 'averagePool2dInput': {
+ 'data': [
+ 22.975555419921875, 78.15438079833984, 9.686111450195312,
+ 51.298038482666016, 32.193084716796875, 87.65037536621094,
+ 87.25082397460938, 39.49794006347656, 80.0996322631836,
+ 10.220142364501953, 52.602699279785156, 1.4128639698028564,
+ 11.95406436920166, 85.00074768066406, 64.78374481201172,
+ 88.03128814697266, 11.333850860595703, 70.61659240722656,
+ 84.90442657470703, 79.06687927246094, 7.3287248611450195,
+ 35.97796630859375, 10.177306175231934, 1.4140757322311401,
+ 78.10037994384766, 91.59549713134766, 65.64701080322266,
+ 55.14215087890625, 18.432437896728516, 49.34624099731445,
+ 15.648024559020996, 68.02723693847656, 20.342548370361328,
+ 26.727949142456055, 64.87446594238281, 46.5671501159668,
+ 79.57833099365234, 4.33846378326416, 38.183837890625,
+ 45.25398254394531, 80.9718017578125, 67.58124542236328,
+ 6.0264997482299805, 29.7788143157959, 58.58993148803711,
+ 2.2384984493255615, 14.50549030303955, 68.72449493408203,
+ 76.45657348632812, 23.53263282775879
+ ],
+ 'descriptor': {'dimensions': [1, 2, 5, 5], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'averagePool2d',
+ 'arguments': [
+ {'input': 'averagePool2dInput'},
+ {'options': {'windowDimensions': [3, 3], 'dilations': [2, 2]}}
+ ],
+ 'outputs': 'averagePool2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'averagePool2dOutput': {
+ 'data': [32.2001838684082, 42.971012115478516],
+ 'descriptor': {'dimensions': [1, 2, 1, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'averagePool2d float32 4D tensor options.layout=nchw',
+ 'graph': {
+ 'inputs': {
+ 'averagePool2dInput': {
+ 'data': [
+ 22.975555419921875, 78.15438079833984, 9.686111450195312,
+ 51.298038482666016, 32.193084716796875, 87.65037536621094,
+ 87.25082397460938, 39.49794006347656, 80.0996322631836,
+ 10.220142364501953, 52.602699279785156, 1.4128639698028564,
+ 11.95406436920166, 85.00074768066406, 64.78374481201172,
+ 88.03128814697266, 11.333850860595703, 70.61659240722656,
+ 84.90442657470703, 79.06687927246094, 7.3287248611450195,
+ 35.97796630859375, 10.177306175231934, 1.4140757322311401,
+ 78.10037994384766, 91.59549713134766, 65.64701080322266,
+ 55.14215087890625, 18.432437896728516, 49.34624099731445,
+ 15.648024559020996, 68.02723693847656, 20.342548370361328,
+ 26.727949142456055, 64.87446594238281, 46.5671501159668,
+ 79.57833099365234, 4.33846378326416, 38.183837890625,
+ 45.25398254394531, 80.9718017578125, 67.58124542236328,
+ 6.0264997482299805, 29.7788143157959, 58.58993148803711,
+ 2.2384984493255615, 14.50549030303955, 68.72449493408203,
+ 76.45657348632812, 23.53263282775879
+ ],
+ 'descriptor': {'dimensions': [1, 2, 5, 5], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'averagePool2d',
+ 'arguments':
+ [{'input': 'averagePool2dInput'}, {'options': {'layout': 'nchw'}}],
+ 'outputs': 'averagePool2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'averagePool2dOutput': {
+ 'data': [47.26926803588867, 44.72445297241211],
+ 'descriptor': {'dimensions': [1, 2, 1, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'averagePool2d float32 4D tensor options.layout=nhwc',
+ 'graph': {
+ 'inputs': {
+ 'averagePool2dInput': {
+ 'data': [
+ 22.975555419921875, 91.59549713134766, 78.15438079833984,
+ 65.64701080322266, 9.686111450195312, 55.14215087890625,
+ 51.298038482666016, 18.432437896728516, 32.193084716796875,
+ 49.34624099731445, 87.65037536621094, 15.648024559020996,
+ 87.25082397460938, 68.02723693847656, 39.49794006347656,
+ 20.342548370361328, 80.0996322631836, 26.727949142456055,
+ 10.220142364501953, 64.87446594238281, 52.602699279785156,
+ 46.5671501159668, 1.4128639698028564, 79.57833099365234,
+ 11.95406436920166, 4.33846378326416, 85.00074768066406,
+ 38.183837890625, 64.78374481201172, 45.25398254394531,
+ 88.03128814697266, 80.9718017578125, 11.333850860595703,
+ 67.58124542236328, 70.61659240722656, 6.0264997482299805,
+ 84.90442657470703, 29.7788143157959, 79.06687927246094,
+ 58.58993148803711, 7.3287248611450195, 2.2384984493255615,
+ 35.97796630859375, 14.50549030303955, 10.177306175231934,
+ 68.72449493408203, 1.4140757322311401, 76.45657348632812,
+ 78.10037994384766, 23.53263282775879
+ ],
+ 'descriptor': {'dimensions': [1, 5, 5, 2], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'averagePool2d',
+ 'arguments':
+ [{'input': 'averagePool2dInput'}, {'options': {'layout': 'nhwc'}}],
+ 'outputs': 'averagePool2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'averagePool2dOutput': {
+ 'data': [47.26926803588867, 44.72445297241211],
+ 'descriptor': {'dimensions': [1, 1, 1, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'global averagePool2d float32 4D tensor options.layout=nhwc and options.windowDimensions',
+ 'graph': {
+ 'inputs': {
+ 'averagePool2dInput': {
+ 'data': [
+ 22.975555419921875, 91.59549713134766, 78.15438079833984,
+ 65.64701080322266, 9.686111450195312, 55.14215087890625,
+ 51.298038482666016, 18.432437896728516, 32.193084716796875,
+ 49.34624099731445, 87.65037536621094, 15.648024559020996,
+ 87.25082397460938, 68.02723693847656, 39.49794006347656,
+ 20.342548370361328, 80.0996322631836, 26.727949142456055,
+ 10.220142364501953, 64.87446594238281, 52.602699279785156,
+ 46.5671501159668, 1.4128639698028564, 79.57833099365234,
+ 11.95406436920166, 4.33846378326416, 85.00074768066406,
+ 38.183837890625, 64.78374481201172, 45.25398254394531,
+ 88.03128814697266, 80.9718017578125, 11.333850860595703,
+ 67.58124542236328, 70.61659240722656, 6.0264997482299805,
+ 84.90442657470703, 29.7788143157959, 79.06687927246094,
+ 58.58993148803711, 7.3287248611450195, 2.2384984493255615,
+ 35.97796630859375, 14.50549030303955, 10.177306175231934,
+ 68.72449493408203, 1.4140757322311401, 76.45657348632812,
+ 78.10037994384766, 23.53263282775879
+ ],
+ 'descriptor': {'dimensions': [1, 5, 5, 2], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'averagePool2d',
+ 'arguments': [
+ {'input': 'averagePool2dInput'},
+ {'options': {'windowDimensions': [5, 5], 'layout': 'nhwc'}}
+ ],
+ 'outputs': 'averagePool2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'averagePool2dOutput': {
+ 'data': [47.26926803588867, 44.72445297241211],
+ 'descriptor': {'dimensions': [1, 1, 1, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'averagePool2d float32 4D tensor options.roundingType=floor',
+ 'graph': {
+ 'inputs': {
+ 'averagePool2dInput': {
+ 'data': [
+ 22.975555419921875, 78.15438079833984, 9.686111450195312,
+ 51.298038482666016, 32.193084716796875, 87.65037536621094,
+ 87.25082397460938, 39.49794006347656, 80.0996322631836,
+ 10.220142364501953, 52.602699279785156, 1.4128639698028564,
+ 11.95406436920166, 85.00074768066406, 64.78374481201172,
+ 88.03128814697266, 11.333850860595703, 70.61659240722656,
+ 84.90442657470703, 79.06687927246094, 7.3287248611450195,
+ 35.97796630859375, 10.177306175231934, 1.4140757322311401,
+ 78.10037994384766, 91.59549713134766, 65.64701080322266,
+ 55.14215087890625, 18.432437896728516, 49.34624099731445,
+ 15.648024559020996, 68.02723693847656, 20.342548370361328,
+ 26.727949142456055, 64.87446594238281, 46.5671501159668,
+ 79.57833099365234, 4.33846378326416, 38.183837890625,
+ 45.25398254394531, 80.9718017578125, 67.58124542236328,
+ 6.0264997482299805, 29.7788143157959, 58.58993148803711,
+ 2.2384984493255615, 14.50549030303955, 68.72449493408203,
+ 76.45657348632812, 23.53263282775879
+ ],
+ 'descriptor': {'dimensions': [1, 2, 5, 5], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'averagePool2d',
+ 'arguments': [
+ {'input': 'averagePool2dInput'}, {
+ 'options': {
+ 'windowDimensions': [3, 3],
+ 'padding': [1, 0, 0, 1],
+ 'strides': [2, 2],
+ 'roundingType': 'floor'
+ }
+ }
+ ],
+ 'outputs': 'averagePool2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'averagePool2dOutput': {
+ 'data': [
+ 54.20252990722656, 37.16582489013672, 50.038944244384766,
+ 58.46046447753906, 52.73374557495117, 39.1442985534668,
+ 43.23125457763672, 32.67961120605469
+ ],
+ 'descriptor': {'dimensions': [1, 2, 2, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'averagePool2d float32 4D tensor options.roundingType=ceil',
+ 'graph': {
+ 'inputs': {
+ 'averagePool2dInput': {
+ 'data': [
+ 22.975555419921875, 78.15438079833984, 9.686111450195312,
+ 51.298038482666016, 32.193084716796875, 87.65037536621094,
+ 87.25082397460938, 39.49794006347656, 80.0996322631836,
+ 10.220142364501953, 52.602699279785156, 1.4128639698028564,
+ 11.95406436920166, 85.00074768066406, 64.78374481201172,
+ 88.03128814697266, 11.333850860595703, 70.61659240722656,
+ 84.90442657470703, 79.06687927246094, 7.3287248611450195,
+ 35.97796630859375, 10.177306175231934, 1.4140757322311401,
+ 78.10037994384766, 91.59549713134766, 65.64701080322266,
+ 55.14215087890625, 18.432437896728516, 49.34624099731445,
+ 15.648024559020996, 68.02723693847656, 20.342548370361328,
+ 26.727949142456055, 64.87446594238281, 46.5671501159668,
+ 79.57833099365234, 4.33846378326416, 38.183837890625,
+ 45.25398254394531, 80.9718017578125, 67.58124542236328,
+ 6.0264997482299805, 29.7788143157959, 58.58993148803711,
+ 2.2384984493255615, 14.50549030303955, 68.72449493408203,
+ 76.45657348632812, 23.53263282775879
+ ],
+ 'descriptor': {'dimensions': [1, 2, 5, 5], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'averagePool2d',
+ 'arguments': [
+ {'input': 'averagePool2dInput'}, {
+ 'options': {
+ 'windowDimensions': [3, 3],
+ 'padding': [1, 0, 0, 1],
+ 'strides': [2, 2],
+ 'roundingType': 'ceil'
+ }
+ }
+ ],
+ 'outputs': 'averagePool2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'averagePool2dOutput': {
+ 'data': [
+ 54.20252990722656, 37.16582489013672, 21.206613540649414,
+ 50.038944244384766, 58.46046447753906, 51.3569221496582,
+ 37.24428939819336, 54.04661178588867, 78.58363342285156,
+ 52.73374557495117, 39.1442985534668, 57.1103515625,
+ 43.23125457763672, 32.67961120605469, 56.23945999145508,
+ 40.00800323486328, 43.85149002075195, 41.061283111572266
+ ],
+ 'descriptor': {'dimensions': [1, 2, 3, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'averagePool2d float32 4D tensor options.layout=nhwc and options.roundingType=floor',
+ 'graph': {
+ 'inputs': {
+ 'averagePool2dInput': {
+ 'data': [
+ 22.975555419921875, 91.59549713134766, 78.15438079833984,
+ 65.64701080322266, 9.686111450195312, 55.14215087890625,
+ 51.298038482666016, 18.432437896728516, 32.193084716796875,
+ 49.34624099731445, 87.65037536621094, 15.648024559020996,
+ 87.25082397460938, 68.02723693847656, 39.49794006347656,
+ 20.342548370361328, 80.0996322631836, 26.727949142456055,
+ 10.220142364501953, 64.87446594238281, 52.602699279785156,
+ 46.5671501159668, 1.4128639698028564, 79.57833099365234,
+ 11.95406436920166, 4.33846378326416, 85.00074768066406,
+ 38.183837890625, 64.78374481201172, 45.25398254394531,
+ 88.03128814697266, 80.9718017578125, 11.333850860595703,
+ 67.58124542236328, 70.61659240722656, 6.0264997482299805,
+ 84.90442657470703, 29.7788143157959, 79.06687927246094,
+ 58.58993148803711, 7.3287248611450195, 2.2384984493255615,
+ 35.97796630859375, 14.50549030303955, 10.177306175231934,
+ 68.72449493408203, 1.4140757322311401, 76.45657348632812,
+ 78.10037994384766, 23.53263282775879
+ ],
+ 'descriptor': {'dimensions': [1, 5, 5, 2], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'averagePool2d',
+ 'arguments': [
+ {'input': 'averagePool2dInput'}, {
+ 'options': {
+ 'windowDimensions': [3, 3],
+ 'padding': [1, 0, 0, 1],
+ 'strides': [2, 2],
+ 'layout': 'nhwc',
+ 'roundingType': 'floor'
+ }
+ }
+ ],
+ 'outputs': 'averagePool2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'averagePool2dOutput': {
+ 'data': [
+ 54.20252990722656, 52.73374557495117, 37.16582489013672,
+ 39.1442985534668, 50.038944244384766, 43.23125457763672,
+ 58.46046447753906, 32.67961120605469
+ ],
+ 'descriptor': {'dimensions': [1, 2, 2, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'averagePool2d float32 4D tensor options.layout=nhwc and options.roundingType=ceil',
+ 'graph': {
+ 'inputs': {
+ 'averagePool2dInput': {
+ 'data': [
+ 22.975555419921875, 91.59549713134766, 78.15438079833984,
+ 65.64701080322266, 9.686111450195312, 55.14215087890625,
+ 51.298038482666016, 18.432437896728516, 32.193084716796875,
+ 49.34624099731445, 87.65037536621094, 15.648024559020996,
+ 87.25082397460938, 68.02723693847656, 39.49794006347656,
+ 20.342548370361328, 80.0996322631836, 26.727949142456055,
+ 10.220142364501953, 64.87446594238281, 52.602699279785156,
+ 46.5671501159668, 1.4128639698028564, 79.57833099365234,
+ 11.95406436920166, 4.33846378326416, 85.00074768066406,
+ 38.183837890625, 64.78374481201172, 45.25398254394531,
+ 88.03128814697266, 80.9718017578125, 11.333850860595703,
+ 67.58124542236328, 70.61659240722656, 6.0264997482299805,
+ 84.90442657470703, 29.7788143157959, 79.06687927246094,
+ 58.58993148803711, 7.3287248611450195, 2.2384984493255615,
+ 35.97796630859375, 14.50549030303955, 10.177306175231934,
+ 68.72449493408203, 1.4140757322311401, 76.45657348632812,
+ 78.10037994384766, 23.53263282775879
+ ],
+ 'descriptor': {'dimensions': [1, 5, 5, 2], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'averagePool2d',
+ 'arguments': [
+ {'input': 'averagePool2dInput'}, {
+ 'options': {
+ 'windowDimensions': [3, 3],
+ 'padding': [1, 0, 0, 1],
+ 'strides': [2, 2],
+ 'layout': 'nhwc',
+ 'roundingType': 'ceil'
+ }
+ }
+ ],
+ 'outputs': 'averagePool2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'averagePool2dOutput': {
+ 'data': [
+ 54.20252990722656, 52.73374557495117, 37.16582489013672,
+ 39.1442985534668, 21.206613540649414, 57.1103515625,
+ 50.038944244384766, 43.23125457763672, 58.46046447753906,
+ 32.67961120605469, 51.3569221496582, 56.23945999145508,
+ 37.24428939819336, 40.00800323486328, 54.04661178588867,
+ 43.85149002075195, 78.58363342285156, 41.061283111572266
+ ],
+ 'descriptor': {'dimensions': [1, 3, 3, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'averagePool2d float32 4D tensor options.outputSizes ignores options.roundingType=floor',
+ 'graph': {
+ 'inputs': {
+ 'averagePool2dInput': {
+ 'data': [
+ 22.975555419921875, 78.15438079833984, 9.686111450195312,
+ 51.298038482666016, 32.193084716796875, 87.65037536621094,
+ 87.25082397460938, 39.49794006347656, 80.0996322631836,
+ 10.220142364501953, 52.602699279785156, 1.4128639698028564,
+ 11.95406436920166, 85.00074768066406, 64.78374481201172,
+ 88.03128814697266, 11.333850860595703, 70.61659240722656,
+ 84.90442657470703, 79.06687927246094, 7.3287248611450195,
+ 35.97796630859375, 10.177306175231934, 1.4140757322311401,
+ 78.10037994384766, 91.59549713134766, 65.64701080322266,
+ 55.14215087890625, 18.432437896728516, 49.34624099731445,
+ 15.648024559020996, 68.02723693847656, 20.342548370361328,
+ 26.727949142456055, 64.87446594238281, 46.5671501159668,
+ 79.57833099365234, 4.33846378326416, 38.183837890625,
+ 45.25398254394531, 80.9718017578125, 67.58124542236328,
+ 6.0264997482299805, 29.7788143157959, 58.58993148803711,
+ 2.2384984493255615, 14.50549030303955, 68.72449493408203,
+ 76.45657348632812, 23.53263282775879
+ ],
+ 'descriptor': {'dimensions': [1, 2, 5, 5], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'averagePool2d',
+ 'arguments': [
+ {'input': 'averagePool2dInput'}, {
+ 'options': {
+ 'windowDimensions': [3, 3],
+ 'padding': [1, 0, 0, 1],
+ 'strides': [2, 2],
+ 'roundingType': 'floor',
+ 'outputSizes': [3, 3]
+ }
+ }
+ ],
+ 'outputs': 'averagePool2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'averagePool2dOutput': {
+ 'data': [
+ 54.20252990722656, 37.16582489013672, 21.206613540649414,
+ 50.038944244384766, 58.46046447753906, 51.3569221496582,
+ 37.24428939819336, 54.04661178588867, 78.58363342285156,
+ 52.73374557495117, 39.1442985534668, 57.1103515625,
+ 43.23125457763672, 32.67961120605469, 56.23945999145508,
+ 40.00800323486328, 43.85149002075195, 41.061283111572266
+ ],
+ 'descriptor': {'dimensions': [1, 2, 3, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'averagePool2d float32 4D tensor options.outputSizes ignores options.roundingType=ceil',
+ 'graph': {
+ 'inputs': {
+ 'averagePool2dInput': {
+ 'data': [
+ 22.975555419921875, 78.15438079833984, 9.686111450195312,
+ 51.298038482666016, 32.193084716796875, 87.65037536621094,
+ 87.25082397460938, 39.49794006347656, 80.0996322631836,
+ 10.220142364501953, 52.602699279785156, 1.4128639698028564,
+ 11.95406436920166, 85.00074768066406, 64.78374481201172,
+ 88.03128814697266, 11.333850860595703, 70.61659240722656,
+ 84.90442657470703, 79.06687927246094, 7.3287248611450195,
+ 35.97796630859375, 10.177306175231934, 1.4140757322311401,
+ 78.10037994384766, 91.59549713134766, 65.64701080322266,
+ 55.14215087890625, 18.432437896728516, 49.34624099731445,
+ 15.648024559020996, 68.02723693847656, 20.342548370361328,
+ 26.727949142456055, 64.87446594238281, 46.5671501159668,
+ 79.57833099365234, 4.33846378326416, 38.183837890625,
+ 45.25398254394531, 80.9718017578125, 67.58124542236328,
+ 6.0264997482299805, 29.7788143157959, 58.58993148803711,
+ 2.2384984493255615, 14.50549030303955, 68.72449493408203,
+ 76.45657348632812, 23.53263282775879
+ ],
+ 'descriptor': {'dimensions': [1, 2, 5, 5], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'averagePool2d',
+ 'arguments': [
+ {'input': 'averagePool2dInput'}, {
+ 'options': {
+ 'windowDimensions': [3, 3],
+ 'padding': [1, 0, 0, 1],
+ 'strides': [2, 2],
+ 'roundingType': 'ceil',
+ 'outputSizes': [2, 2]
+ }
+ }
+ ],
+ 'outputs': 'averagePool2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'averagePool2dOutput': {
+ 'data': [
+ 54.20252990722656, 37.16582489013672, 50.038944244384766,
+ 58.46046447753906, 52.73374557495117, 39.1442985534668,
+ 43.23125457763672, 32.67961120605469
+ ],
+ 'descriptor': {'dimensions': [1, 2, 2, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'averagePool2d float32 4D tensor options.dilations with options.strides',
+ 'graph': {
+ 'inputs': {
+ 'averagePool2dInput': {
+ 'data': [
+ 70.71148681640625, 99.33489990234375, 76.41767883300781,
+ 39.40980911254883, 38.16328811645508, 45.971256256103516,
+ 65.3527603149414, 64.51607513427734, 7.725966930389404,
+ 41.7672004699707, 94.92633819580078, 53.475772857666016,
+ 95.46460723876953, 58.461795806884766, 15.831390380859375,
+ 78.41020202636719, 24.454092025756836, 20.630916595458984,
+ 32.06352233886719, 47.85192108154297, 91.60813903808594,
+ 72.3534927368164, 74.69429779052734, 28.860214233398438,
+ 71.82395935058594, 7.989691734313965, 88.16659545898438,
+ 58.69850540161133, 63.6061897277832, 55.88187789916992,
+ 52.809974670410156, 72.91474151611328, 46.957664489746094,
+ 22.10279655456543, 87.14309692382812, 89.6496810913086,
+ 63.19610595703125, 11.760882377624512, 70.68730926513672,
+ 57.70444107055664, 1.183821439743042, 25.26912498474121,
+ 95.29122924804688, 1.9658530950546265, 53.368465423583984,
+ 21.400854110717773, 55.86185836791992, 27.824508666992188,
+ 7.642839431762695, 82.34233093261719, 91.75215911865234,
+ 62.79155731201172, 28.11526107788086, 28.72478675842285,
+ 29.887035369873047, 66.4310302734375, 7.0103044509887695,
+ 34.33702087402344, 73.20159912109375, 7.8835601806640625,
+ 17.82563591003418, 33.799156188964844, 65.01251220703125,
+ 30.264028549194336, 75.76551818847656, 21.150800704956055,
+ 60.84249496459961, 98.56522369384766, 62.60990905761719,
+ 42.42991256713867, 53.142147064208984, 36.29545974731445,
+ 79.95863342285156, 79.60734558105469, 16.059114456176758,
+ 19.27552032470703, 53.93022918701172, 48.41620635986328,
+ 93.00965118408203, 62.086524963378906, 83.50532531738281,
+ 61.07964324951172, 75.51439666748047, 54.193782806396484,
+ 2.572873830795288, 59.47652053833008, 34.22541427612305,
+ 13.07015323638916, 12.419061660766602, 55.82337188720703,
+ 4.553813934326172, 63.47830581665039, 62.3555908203125,
+ 56.961090087890625, 34.77016067504883, 0.9611223936080933,
+ 35.30686950683594, 98.00790405273438
+ ],
+ 'descriptor': {'dimensions': [1, 7, 7, 2], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'averagePool2d',
+ 'arguments': [
+ {'input': 'averagePool2dInput'}, {
+ 'options': {
+ 'windowDimensions': [3, 3],
+ 'padding': [1, 0, 0, 1],
+ 'strides': [2, 2],
+ 'layout': 'nhwc'
+ }
+ }
+ ],
+ 'outputs': 'averagePool2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'averagePool2dOutput': {
+ 'data': [
+ 42.940242767333984, 55.268165588378906, 51.6013298034668,
+ 50.220027923583984, 72.13362884521484, 41.542198181152344,
+ 48.91604232788086, 38.775962829589844, 61.21329879760742,
+ 49.504154205322266, 57.72294998168945, 38.6922492980957,
+ 50.19099807739258, 29.15436363220215, 52.98439025878906,
+ 43.10562515258789, 66.77796936035156, 55.2725830078125
+ ],
+ 'descriptor': {'dimensions': [1, 3, 3, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+
+ // l2Pool2d tests
+ {
+ 'name': 'l2Pool2d float32 4D constant tensor all positive default options',
+ 'graph': {
+ 'inputs': {
+ 'l2Pool2dInput': {
+ 'data': [
+ 94.07447814941406, 76.55464172363281, 62.71847152709961,
+ 83.8726577758789, 73.10235595703125, 41.52470779418945,
+ 39.3339729309082, 86.59486389160156, 23.09039306640625,
+ 53.650146484375, 0.00902052316814661, 42.78899383544922,
+ 81.03960418701172, 33.48585510253906, 33.67196273803711,
+ 0.42822372913360596, 80.07991790771484, 5.929991722106934,
+ 48.89164733886719, 15.282920837402344, 13.335721969604492,
+ 39.06557846069336, 97.06050109863281, 83.68133544921875,
+ 21.79571533203125, 52.027313232421875, 6.397815227508545,
+ 84.54785919189453, 18.622516632080078, 34.10626220703125,
+ 73.96932220458984, 36.1437873840332, 60.73781967163086,
+ 55.09187316894531, 63.8924446105957, 59.36124038696289,
+ 50.91202926635742, 50.339813232421875, 59.31963348388672,
+ 70.78031921386719, 35.56179428100586, 82.53382873535156,
+ 7.572360038757324, 61.90089416503906, 14.084012985229492,
+ 90.86540985107422, 39.56248474121094, 67.77167510986328,
+ 69.69512176513672, 89.54518127441406
+ ],
+ 'descriptor': {'dimensions': [1, 2, 5, 5], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'l2Pool2d',
+ 'arguments': [{'input': 'l2Pool2dInput'}],
+ 'outputs': 'l2Pool2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'l2Pool2dOutput': {
+ 'data': [289.01953125, 292.6146545410156],
+ 'descriptor': {'dimensions': [1, 2, 1, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'l2Pool2d float32 4D tensor default all positive options',
+ 'graph': {
+ 'inputs': {
+ 'l2Pool2dInput': {
+ 'data': [
+ 94.07447814941406, 76.55464172363281, 62.71847152709961,
+ 83.8726577758789, 73.10235595703125, 41.52470779418945,
+ 39.3339729309082, 86.59486389160156, 23.09039306640625,
+ 53.650146484375, 0.00902052316814661, 42.78899383544922,
+ 81.03960418701172, 33.48585510253906, 33.67196273803711,
+ 0.42822372913360596, 80.07991790771484, 5.929991722106934,
+ 48.89164733886719, 15.282920837402344, 13.335721969604492,
+ 39.06557846069336, 97.06050109863281, 83.68133544921875,
+ 21.79571533203125, 52.027313232421875, 6.397815227508545,
+ 84.54785919189453, 18.622516632080078, 34.10626220703125,
+ 73.96932220458984, 36.1437873840332, 60.73781967163086,
+ 55.09187316894531, 63.8924446105957, 59.36124038696289,
+ 50.91202926635742, 50.339813232421875, 59.31963348388672,
+ 70.78031921386719, 35.56179428100586, 82.53382873535156,
+ 7.572360038757324, 61.90089416503906, 14.084012985229492,
+ 90.86540985107422, 39.56248474121094, 67.77167510986328,
+ 69.69512176513672, 89.54518127441406
+ ],
+ 'descriptor': {'dimensions': [1, 2, 5, 5], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'l2Pool2d',
+ 'arguments': [{'input': 'l2Pool2dInput'}],
+ 'outputs': 'l2Pool2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'l2Pool2dOutput': {
+ 'data': [289.01953125, 292.6146545410156],
+ 'descriptor': {'dimensions': [1, 2, 1, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'l2Pool2d float32 4D tensor default all negative options',
+ 'graph': {
+ 'inputs': {
+ 'l2Pool2dInput': {
+ 'data': [
+ -1.1957088708877563, -9.706199645996094, -39.54935836791992,
+ -82.34971618652344, -32.87415313720703, -50.22603225708008,
+ -31.17849349975586, -55.817893981933594, -46.70829391479492,
+ -38.68181228637695, -63.299320220947266, -35.09224319458008,
+ -80.93848419189453, -82.8619613647461, -40.41627502441406,
+ -34.86458206176758, -84.33639526367188, -84.11852264404297,
+ -5.525088787078857, -99.03114318847656, -75.505126953125,
+ -91.43389129638672, -96.71258544921875, -16.722585678100586,
+ -17.98292350769043, -58.06570816040039, -11.846800804138184,
+ -97.90313720703125, -38.69822692871094, -80.19510650634766,
+ -48.72047805786133, -90.86722564697266, -99.10758209228516,
+ -79.70288848876953, -59.3824462890625, -9.967330932617188,
+ -39.27534866333008, -10.469644546508789, -27.565326690673828,
+ -2.0468990802764893, -81.88761901855469, -66.88040161132812,
+ -85.98504638671875, -29.674592971801758, -19.649417877197266,
+ -89.39192199707031, -61.13504409790039, -84.16869354248047,
+ -77.36112213134766, -91.17266082763672
+ ],
+ 'descriptor': {'dimensions': [1, 2, 5, 5], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'l2Pool2d',
+ 'arguments': [{'input': 'l2Pool2dInput'}],
+ 'outputs': 'l2Pool2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'l2Pool2dOutput': {
+ 'data': [298.928955078125, 326.83587646484375],
+ 'descriptor': {'dimensions': [1, 2, 1, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'l2Pool2d float32 4D tensor options.windowDimensions',
+ 'graph': {
+ 'inputs': {
+ 'l2Pool2dInput': {
+ 'data': [
+ 94.07447814941406, 76.55464172363281, 62.71847152709961,
+ 83.8726577758789, 73.10235595703125, 41.52470779418945,
+ 39.3339729309082, 86.59486389160156, 23.09039306640625,
+ 53.650146484375, 0.00902052316814661, 42.78899383544922,
+ 81.03960418701172, 33.48585510253906, 33.67196273803711,
+ 0.42822372913360596, 80.07991790771484, 5.929991722106934,
+ 48.89164733886719, 15.282920837402344, 13.335721969604492,
+ 39.06557846069336, 97.06050109863281, 83.68133544921875,
+ 21.79571533203125, 52.027313232421875, 6.397815227508545,
+ 84.54785919189453, 18.622516632080078, 34.10626220703125,
+ 73.96932220458984, 36.1437873840332, 60.73781967163086,
+ 55.09187316894531, 63.8924446105957, 59.36124038696289,
+ 50.91202926635742, 50.339813232421875, 59.31963348388672,
+ 70.78031921386719, 35.56179428100586, 82.53382873535156,
+ 7.572360038757324, 61.90089416503906, 14.084012985229492,
+ 90.86540985107422, 39.56248474121094, 67.77167510986328,
+ 69.69512176513672, 89.54518127441406
+ ],
+ 'descriptor': {'dimensions': [1, 2, 5, 5], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'l2Pool2d',
+ 'arguments': [
+ {'input': 'l2Pool2dInput'}, {'options': {'windowDimensions': [3, 3]}}
+ ],
+ 'outputs': 'l2Pool2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'l2Pool2dOutput': {
+ 'data': [
+ 194.45481872558594, 189.54539489746094, 189.85488891601562,
+ 160.0518341064453, 167.1435546875, 149.63897705078125,
+ 161.15570068359375, 190.5449981689453, 168.4636688232422,
+ 170.331787109375, 155.60073852539062, 174.72145080566406,
+ 165.07762145996094, 165.45819091796875, 161.11062622070312,
+ 176.6307373046875, 174.245361328125, 180.60714721679688
+ ],
+ 'descriptor': {'dimensions': [1, 2, 3, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'l2Pool2d float32 4D tensor options.padding',
+ 'graph': {
+ 'inputs': {
+ 'l2Pool2dInput': {
+ 'data': [
+ 94.07447814941406, 76.55464172363281, 62.71847152709961,
+ 83.8726577758789, 73.10235595703125, 41.52470779418945,
+ 39.3339729309082, 86.59486389160156, 23.09039306640625,
+ 53.650146484375, 0.00902052316814661, 42.78899383544922,
+ 81.03960418701172, 33.48585510253906, 33.67196273803711,
+ 0.42822372913360596, 80.07991790771484, 5.929991722106934,
+ 48.89164733886719, 15.282920837402344, 13.335721969604492,
+ 39.06557846069336, 97.06050109863281, 83.68133544921875,
+ 21.79571533203125, 52.027313232421875, 6.397815227508545,
+ 84.54785919189453, 18.622516632080078, 34.10626220703125,
+ 73.96932220458984, 36.1437873840332, 60.73781967163086,
+ 55.09187316894531, 63.8924446105957, 59.36124038696289,
+ 50.91202926635742, 50.339813232421875, 59.31963348388672,
+ 70.78031921386719, 35.56179428100586, 82.53382873535156,
+ 7.572360038757324, 61.90089416503906, 14.084012985229492,
+ 90.86540985107422, 39.56248474121094, 67.77167510986328,
+ 69.69512176513672, 89.54518127441406
+ ],
+ 'descriptor': {'dimensions': [1, 2, 5, 5], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'l2Pool2d',
+ 'arguments': [
+ {'input': 'l2Pool2dInput'}, {'options': {'padding': [1, 0, 0, 1]}}
+ ],
+ 'outputs': 'l2Pool2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'l2Pool2dOutput': {
+ 'data': [
+ 254.81358337402344, 233.14259338378906, 289.01953125,
+ 269.777587890625, 241.52200317382812, 212.99337768554688,
+ 292.6146545410156, 253.77178955078125
+ ],
+ 'descriptor': {'dimensions': [1, 2, 2, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'l2Pool2d float32 4D tensor options.strides',
+ 'graph': {
+ 'inputs': {
+ 'l2Pool2dInput': {
+ 'data': [
+ 94.07447814941406, 76.55464172363281, 62.71847152709961,
+ 83.8726577758789, 73.10235595703125, 41.52470779418945,
+ 39.3339729309082, 86.59486389160156, 23.09039306640625,
+ 53.650146484375, 0.00902052316814661, 42.78899383544922,
+ 81.03960418701172, 33.48585510253906, 33.67196273803711,
+ 0.42822372913360596, 80.07991790771484, 5.929991722106934,
+ 48.89164733886719, 15.282920837402344, 13.335721969604492,
+ 39.06557846069336, 97.06050109863281, 83.68133544921875,
+ 21.79571533203125, 52.027313232421875, 6.397815227508545,
+ 84.54785919189453, 18.622516632080078, 34.10626220703125,
+ 73.96932220458984, 36.1437873840332, 60.73781967163086,
+ 55.09187316894531, 63.8924446105957, 59.36124038696289,
+ 50.91202926635742, 50.339813232421875, 59.31963348388672,
+ 70.78031921386719, 35.56179428100586, 82.53382873535156,
+ 7.572360038757324, 61.90089416503906, 14.084012985229492,
+ 90.86540985107422, 39.56248474121094, 67.77167510986328,
+ 69.69512176513672, 89.54518127441406
+ ],
+ 'descriptor': {'dimensions': [1, 2, 5, 5], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'l2Pool2d',
+ 'arguments': [
+ {'input': 'l2Pool2dInput'},
+ {'options': {'windowDimensions': [3, 3], 'strides': [2, 2]}}
+ ],
+ 'outputs': 'l2Pool2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'l2Pool2dOutput': {
+ 'data': [
+ 194.45481872558594, 189.85488891601562, 161.15570068359375,
+ 168.4636688232422, 170.331787109375, 174.72145080566406,
+ 176.6307373046875, 180.60714721679688
+ ],
+ 'descriptor': {'dimensions': [1, 2, 2, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'l2Pool2d float32 4D tensor options.dilations',
+ 'graph': {
+ 'inputs': {
+ 'l2Pool2dInput': {
+ 'data': [
+ 94.07447814941406, 76.55464172363281, 62.71847152709961,
+ 83.8726577758789, 73.10235595703125, 41.52470779418945,
+ 39.3339729309082, 86.59486389160156, 23.09039306640625,
+ 53.650146484375, 0.00902052316814661, 42.78899383544922,
+ 81.03960418701172, 33.48585510253906, 33.67196273803711,
+ 0.42822372913360596, 80.07991790771484, 5.929991722106934,
+ 48.89164733886719, 15.282920837402344, 13.335721969604492,
+ 39.06557846069336, 97.06050109863281, 83.68133544921875,
+ 21.79571533203125, 52.027313232421875, 6.397815227508545,
+ 84.54785919189453, 18.622516632080078, 34.10626220703125,
+ 73.96932220458984, 36.1437873840332, 60.73781967163086,
+ 55.09187316894531, 63.8924446105957, 59.36124038696289,
+ 50.91202926635742, 50.339813232421875, 59.31963348388672,
+ 70.78031921386719, 35.56179428100586, 82.53382873535156,
+ 7.572360038757324, 61.90089416503906, 14.084012985229492,
+ 90.86540985107422, 39.56248474121094, 67.77167510986328,
+ 69.69512176513672, 89.54518127441406
+ ],
+ 'descriptor': {'dimensions': [1, 2, 5, 5], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'l2Pool2d',
+ 'arguments': [
+ {'input': 'l2Pool2dInput'},
+ {'options': {'windowDimensions': [3, 3], 'dilations': [2, 2]}}
+ ],
+ 'outputs': 'l2Pool2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'l2Pool2dOutput': {
+ 'data': [189.47933959960938, 207.25343322753906],
+ 'descriptor': {'dimensions': [1, 2, 1, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'l2Pool2d float32 4D tensor options.layout=nchw',
+ 'graph': {
+ 'inputs': {
+ 'l2Pool2dInput': {
+ 'data': [
+ 94.07447814941406, 76.55464172363281, 62.71847152709961,
+ 83.8726577758789, 73.10235595703125, 41.52470779418945,
+ 39.3339729309082, 86.59486389160156, 23.09039306640625,
+ 53.650146484375, 0.00902052316814661, 42.78899383544922,
+ 81.03960418701172, 33.48585510253906, 33.67196273803711,
+ 0.42822372913360596, 80.07991790771484, 5.929991722106934,
+ 48.89164733886719, 15.282920837402344, 13.335721969604492,
+ 39.06557846069336, 97.06050109863281, 83.68133544921875,
+ 21.79571533203125, 52.027313232421875, 6.397815227508545,
+ 84.54785919189453, 18.622516632080078, 34.10626220703125,
+ 73.96932220458984, 36.1437873840332, 60.73781967163086,
+ 55.09187316894531, 63.8924446105957, 59.36124038696289,
+ 50.91202926635742, 50.339813232421875, 59.31963348388672,
+ 70.78031921386719, 35.56179428100586, 82.53382873535156,
+ 7.572360038757324, 61.90089416503906, 14.084012985229492,
+ 90.86540985107422, 39.56248474121094, 67.77167510986328,
+ 69.69512176513672, 89.54518127441406
+ ],
+ 'descriptor': {'dimensions': [1, 2, 5, 5], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'l2Pool2d',
+ 'arguments':
+ [{'input': 'l2Pool2dInput'}, {'options': {'layout': 'nchw'}}],
+ 'outputs': 'l2Pool2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'l2Pool2dOutput': {
+ 'data': [289.01953125, 292.6146545410156],
+ 'descriptor': {'dimensions': [1, 2, 1, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'l2Pool2d float32 4D tensor options.layout=nhwc',
+ 'graph': {
+ 'inputs': {
+ 'l2Pool2dInput': {
+ 'data': [
+ 94.07447814941406, 52.027313232421875, 76.55464172363281,
+ 6.397815227508545, 62.71847152709961, 84.54785919189453,
+ 83.8726577758789, 18.622516632080078, 73.10235595703125,
+ 34.10626220703125, 41.52470779418945, 73.96932220458984,
+ 39.3339729309082, 36.1437873840332, 86.59486389160156,
+ 60.73781967163086, 23.09039306640625, 55.09187316894531,
+ 53.650146484375, 63.8924446105957, 0.00902052316814661,
+ 59.36124038696289, 42.78899383544922, 50.91202926635742,
+ 81.03960418701172, 50.339813232421875, 33.48585510253906,
+ 59.31963348388672, 33.67196273803711, 70.78031921386719,
+ 0.42822372913360596, 35.56179428100586, 80.07991790771484,
+ 82.53382873535156, 5.929991722106934, 7.572360038757324,
+ 48.89164733886719, 61.90089416503906, 15.282920837402344,
+ 14.084012985229492, 13.335721969604492, 90.86540985107422,
+ 39.06557846069336, 39.56248474121094, 97.06050109863281,
+ 67.77167510986328, 83.68133544921875, 69.69512176513672,
+ 21.79571533203125, 89.54518127441406
+ ],
+ 'descriptor': {'dimensions': [1, 5, 5, 2], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'l2Pool2d',
+ 'arguments':
+ [{'input': 'l2Pool2dInput'}, {'options': {'layout': 'nhwc'}}],
+ 'outputs': 'l2Pool2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'l2Pool2dOutput': {
+ 'data': [289.01953125, 292.6146545410156],
+ 'descriptor': {'dimensions': [1, 1, 1, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'l2Pool2d float32 4D tensor options.roundingType=floor',
+ 'graph': {
+ 'inputs': {
+ 'l2Pool2dInput': {
+ 'data': [
+ 94.07447814941406, 76.55464172363281, 62.71847152709961,
+ 83.8726577758789, 73.10235595703125, 41.52470779418945,
+ 39.3339729309082, 86.59486389160156, 23.09039306640625,
+ 53.650146484375, 0.00902052316814661, 42.78899383544922,
+ 81.03960418701172, 33.48585510253906, 33.67196273803711,
+ 0.42822372913360596, 80.07991790771484, 5.929991722106934,
+ 48.89164733886719, 15.282920837402344, 13.335721969604492,
+ 39.06557846069336, 97.06050109863281, 83.68133544921875,
+ 21.79571533203125, 52.027313232421875, 6.397815227508545,
+ 84.54785919189453, 18.622516632080078, 34.10626220703125,
+ 73.96932220458984, 36.1437873840332, 60.73781967163086,
+ 55.09187316894531, 63.8924446105957, 59.36124038696289,
+ 50.91202926635742, 50.339813232421875, 59.31963348388672,
+ 70.78031921386719, 35.56179428100586, 82.53382873535156,
+ 7.572360038757324, 61.90089416503906, 14.084012985229492,
+ 90.86540985107422, 39.56248474121094, 67.77167510986328,
+ 69.69512176513672, 89.54518127441406
+ ],
+ 'descriptor': {'dimensions': [1, 2, 5, 5], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'l2Pool2d',
+ 'arguments': [
+ {'input': 'l2Pool2dInput'}, {
+ 'options': {
+ 'windowDimensions': [3, 3],
+ 'padding': [1, 0, 0, 1],
+ 'strides': [2, 2],
+ 'roundingType': 'floor'
+ }
+ }
+ ],
+ 'outputs': 'l2Pool2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'l2Pool2dOutput': {
+ 'data': [
+ 171.5061492919922, 164.9919891357422, 160.0518341064453,
+ 149.63897705078125, 142.6990966796875, 139.51637268066406,
+ 165.07762145996094, 161.11062622070312
+ ],
+ 'descriptor': {'dimensions': [1, 2, 2, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'l2Pool2d float32 4D tensor options.roundingType=ceil',
+ 'graph': {
+ 'inputs': {
+ 'l2Pool2dInput': {
+ 'data': [
+ 94.07447814941406, 76.55464172363281, 62.71847152709961,
+ 83.8726577758789, 73.10235595703125, 41.52470779418945,
+ 39.3339729309082, 86.59486389160156, 23.09039306640625,
+ 53.650146484375, 0.00902052316814661, 42.78899383544922,
+ 81.03960418701172, 33.48585510253906, 33.67196273803711,
+ 0.42822372913360596, 80.07991790771484, 5.929991722106934,
+ 48.89164733886719, 15.282920837402344, 13.335721969604492,
+ 39.06557846069336, 97.06050109863281, 83.68133544921875,
+ 21.79571533203125, 52.027313232421875, 6.397815227508545,
+ 84.54785919189453, 18.622516632080078, 34.10626220703125,
+ 73.96932220458984, 36.1437873840332, 60.73781967163086,
+ 55.09187316894531, 63.8924446105957, 59.36124038696289,
+ 50.91202926635742, 50.339813232421875, 59.31963348388672,
+ 70.78031921386719, 35.56179428100586, 82.53382873535156,
+ 7.572360038757324, 61.90089416503906, 14.084012985229492,
+ 90.86540985107422, 39.56248474121094, 67.77167510986328,
+ 69.69512176513672, 89.54518127441406
+ ],
+ 'descriptor': {'dimensions': [1, 2, 5, 5], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'l2Pool2d',
+ 'arguments': [
+ {'input': 'l2Pool2dInput'}, {
+ 'options': {
+ 'windowDimensions': [3, 3],
+ 'padding': [1, 0, 0, 1],
+ 'strides': [2, 2],
+ 'roundingType': 'ceil'
+ }
+ }
+ ],
+ 'outputs': 'l2Pool2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'l2Pool2dOutput': {
+ 'data': [
+ 171.5061492919922, 164.9919891357422, 8222.29296875,
+ 160.0518341064453, 149.63897705078125, 65.15908813476562,
+ 132.56260681152344, 139.84808349609375, 708.620849609375,
+ 142.6990966796875, 139.51637268066406, 5245.4814453125,
+ 165.07762145996094, 161.11062622070312, 96.38701629638672,
+ 150.1616668701172, 146.8201904296875, 8216.69921875
+ ],
+ 'descriptor': {'dimensions': [1, 2, 3, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'l2Pool2d float32 4D tensor options.outputSizes ignores options.roundingType=floor',
+ 'graph': {
+ 'inputs': {
+ 'l2Pool2dInput': {
+ 'data': [
+ 94.07447814941406, 76.55464172363281, 62.71847152709961,
+ 83.8726577758789, 73.10235595703125, 41.52470779418945,
+ 39.3339729309082, 86.59486389160156, 23.09039306640625,
+ 53.650146484375, 0.00902052316814661, 42.78899383544922,
+ 81.03960418701172, 33.48585510253906, 33.67196273803711,
+ 0.42822372913360596, 80.07991790771484, 5.929991722106934,
+ 48.89164733886719, 15.282920837402344, 13.335721969604492,
+ 39.06557846069336, 97.06050109863281, 83.68133544921875,
+ 21.79571533203125, 52.027313232421875, 6.397815227508545,
+ 84.54785919189453, 18.622516632080078, 34.10626220703125,
+ 73.96932220458984, 36.1437873840332, 60.73781967163086,
+ 55.09187316894531, 63.8924446105957, 59.36124038696289,
+ 50.91202926635742, 50.339813232421875, 59.31963348388672,
+ 70.78031921386719, 35.56179428100586, 82.53382873535156,
+ 7.572360038757324, 61.90089416503906, 14.084012985229492,
+ 90.86540985107422, 39.56248474121094, 67.77167510986328,
+ 69.69512176513672, 89.54518127441406
+ ],
+ 'descriptor': {'dimensions': [1, 2, 5, 5], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'l2Pool2d',
+ 'arguments': [
+ {'input': 'l2Pool2dInput'}, {
+ 'options': {
+ 'windowDimensions': [3, 3],
+ 'padding': [1, 0, 0, 1],
+ 'strides': [2, 2],
+ 'roundingType': 'floor',
+ 'outputSizes': [3, 3]
+ }
+ }
+ ],
+ 'outputs': 'l2Pool2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'l2Pool2dOutput': {
+ 'data': [
+ 171.5061492919922, 164.9919891357422, 8222.29296875,
+ 160.0518341064453, 149.63897705078125, 65.15908813476562,
+ 132.56260681152344, 139.84808349609375, 708.620849609375,
+ 142.6990966796875, 139.51637268066406, 5245.4814453125,
+ 165.07762145996094, 161.11062622070312, 96.38701629638672,
+ 150.1616668701172, 146.8201904296875, 8216.69921875
+ ],
+ 'descriptor': {'dimensions': [1, 2, 3, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'l2Pool2d float32 4D tensor options.outputSizes ignores options.roundingType=ceil',
+ 'graph': {
+ 'inputs': {
+ 'l2Pool2dInput': {
+ 'data': [
+ 94.07447814941406, 76.55464172363281, 62.71847152709961,
+ 83.8726577758789, 73.10235595703125, 41.52470779418945,
+ 39.3339729309082, 86.59486389160156, 23.09039306640625,
+ 53.650146484375, 0.00902052316814661, 42.78899383544922,
+ 81.03960418701172, 33.48585510253906, 33.67196273803711,
+ 0.42822372913360596, 80.07991790771484, 5.929991722106934,
+ 48.89164733886719, 15.282920837402344, 13.335721969604492,
+ 39.06557846069336, 97.06050109863281, 83.68133544921875,
+ 21.79571533203125, 52.027313232421875, 6.397815227508545,
+ 84.54785919189453, 18.622516632080078, 34.10626220703125,
+ 73.96932220458984, 36.1437873840332, 60.73781967163086,
+ 55.09187316894531, 63.8924446105957, 59.36124038696289,
+ 50.91202926635742, 50.339813232421875, 59.31963348388672,
+ 70.78031921386719, 35.56179428100586, 82.53382873535156,
+ 7.572360038757324, 61.90089416503906, 14.084012985229492,
+ 90.86540985107422, 39.56248474121094, 67.77167510986328,
+ 69.69512176513672, 89.54518127441406
+ ],
+ 'descriptor': {'dimensions': [1, 2, 5, 5], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'l2Pool2d',
+ 'arguments': [
+ {'input': 'l2Pool2dInput'}, {
+ 'options': {
+ 'windowDimensions': [3, 3],
+ 'padding': [1, 0, 0, 1],
+ 'strides': [2, 2],
+ 'roundingType': 'ceil',
+ 'outputSizes': [2, 2]
+ }
+ }
+ ],
+ 'outputs': 'l2Pool2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'l2Pool2dOutput': {
+ 'data': [
+ 171.5061492919922, 164.9919891357422, 160.0518341064453,
+ 149.63897705078125, 142.6990966796875, 139.51637268066406,
+ 165.07762145996094, 161.11062622070312
+ ],
+ 'descriptor': {'dimensions': [1, 2, 2, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'l2Pool2d float32 4D tensor options.dilations with options.strides',
+ 'graph': {
+ 'inputs': {
+ 'l2Pool2dInput': {
+ 'data': [
+ 6.5550384521484375, 26.254413604736328, 28.47271156311035,
+ 64.81202697753906, 39.65838623046875, 10.465584754943848,
+ 47.94060134887695, 42.208946228027344, 36.834041595458984,
+ 68.50249481201172, 2.0496721267700195, 49.73927688598633,
+ 59.97947311401367, 71.08380889892578, 0.20033331215381622,
+ 19.39293670654297, 70.1269302368164, 86.8837661743164,
+ 84.28858184814453, 9.695697784423828, 62.69126510620117,
+ 51.924110412597656, 5.412675857543945, 70.82118225097656,
+ 81.61302947998047, 29.148712158203125, 85.83409881591797,
+ 71.36548614501953, 44.09445571899414, 58.343570709228516,
+ 43.37118148803711, 54.025882720947266, 85.50556945800781,
+ 93.19215393066406, 10.992993354797363, 34.864158630371094,
+ 96.2605209350586, 44.29584503173828, 61.12482833862305,
+ 79.62699127197266, 4.066447734832764, 64.89644622802734,
+ 97.5897445678711, 11.257055282592773, 61.151283264160156,
+ 20.312341690063477, 39.862640380859375, 68.747314453125,
+ 89.61034393310547, 22.28224754333496, 41.36311721801758,
+ 62.9378662109375, 79.54936218261719, 55.64254379272461,
+ 54.47548294067383, 77.04864501953125, 56.83576965332031,
+ 80.57747650146484, 70.43293762207031, 85.67094421386719,
+ 19.527807235717773, 33.87490463256836, 14.498117446899414,
+ 92.85955810546875, 96.8167724609375, 28.399721145629883,
+ 99.917236328125, 48.76692199707031, 86.08634948730469,
+ 47.32324981689453, 7.223662376403809, 82.97200775146484,
+ 38.374778747558594, 22.10988426208496, 14.797550201416016,
+ 2.3872148990631104, 83.26342010498047, 46.41500473022461,
+ 28.659175872802734, 13.919462203979492, 55.413089752197266,
+ 62.68498992919922, 78.54127502441406, 31.142845153808594,
+ 4.806727886199951, 33.233642578125, 24.749773025512695,
+ 1.529007077217102, 42.976322174072266, 93.08572387695312,
+ 77.908935546875, 45.74395751953125, 62.868892669677734,
+ 60.689762115478516, 20.046878814697266, 13.203198432922363,
+ 33.33952713012695, 0.5279953479766846
+ ],
+ 'descriptor': {'dimensions': [1, 7, 7, 2], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'l2Pool2d',
+ 'arguments': [
+ {'input': 'l2Pool2dInput'}, {
+ 'options': {
+ 'windowDimensions': [3, 3],
+ 'padding': [1, 0, 0, 1],
+ 'strides': [2, 2],
+ 'dilations': [1, 1],
+ 'layout': 'nhwc'
+ }
+ }
+ ],
+ 'outputs': 'l2Pool2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'l2Pool2dOutput': {
+ 'data': [
+ 120.20333862304688, 114.0977783203125, 127.63969421386719,
+ 119.95613861083984, 137.89837646484375, 152.24261474609375,
+ 194.9647216796875, 168.20205688476562, 197.7173309326172,
+ 169.85887145996094, 195.1484832763672, 190.96127319335938,
+ 158.64576721191406, 166.2051544189453, 171.07916259765625,
+ 148.70985412597656, 218.7123260498047, 153.33311462402344
+ ],
+ 'descriptor': {'dimensions': [1, 3, 3, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+
+ // maxPool2d tests
+ {
+ 'name': 'maxPool2d float32 4D constant tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'maxPool2dInput': {
+ 'data': [
+ 89.00830078125, -45.72039031982422, -61.306129455566406,
+ -4.014514446258545, -94.54893493652344, 46.28090286254883,
+ 99.28312683105469, -10.057873725891113, 9.742474555969238,
+ -39.03501892089844, 75.08192443847656, 12.819415092468262,
+ -33.01505661010742, 38.691341400146484, 66.09259033203125,
+ 97.90348052978516, -8.737770080566406, -53.42162322998047,
+ 72.1085205078125, -40.423091888427734, -35.68864440917969,
+ -87.64779663085938, 38.874244689941406, 39.383602142333984,
+ 7.429088115692139, -76.72171020507812, 50.217063903808594,
+ -52.895477294921875, -44.642333984375, -97.86752319335938,
+ 81.73119354248047, 5.428491115570068, -29.22772789001465,
+ 72.44898986816406, -59.34124755859375, 39.19960021972656,
+ -65.99439239501953, -4.204323768615723, -60.54586410522461,
+ 55.890525817871094, 80.30484008789062, 72.8883056640625,
+ -46.59611129760742, 20.50387954711914, -31.126462936401367,
+ -57.294559478759766, -26.623577117919922, 15.935754776000977,
+ -78.77953338623047, 72.33577728271484
+ ],
+ 'descriptor': {'dimensions': [1, 2, 5, 5], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'maxPool2d',
+ 'arguments': [{'input': 'maxPool2dInput'}],
+ 'outputs': 'maxPool2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'maxPool2dOutput': {
+ 'data': [99.28312683105469, 81.73119354248047],
+ 'descriptor': {'dimensions': [1, 2, 1, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'maxPool2d float32 4D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'maxPool2dInput': {
+ 'data': [
+ 89.00830078125, -45.72039031982422, -61.306129455566406,
+ -4.014514446258545, -94.54893493652344, 46.28090286254883,
+ 99.28312683105469, -10.057873725891113, 9.742474555969238,
+ -39.03501892089844, 75.08192443847656, 12.819415092468262,
+ -33.01505661010742, 38.691341400146484, 66.09259033203125,
+ 97.90348052978516, -8.737770080566406, -53.42162322998047,
+ 72.1085205078125, -40.423091888427734, -35.68864440917969,
+ -87.64779663085938, 38.874244689941406, 39.383602142333984,
+ 7.429088115692139, -76.72171020507812, 50.217063903808594,
+ -52.895477294921875, -44.642333984375, -97.86752319335938,
+ 81.73119354248047, 5.428491115570068, -29.22772789001465,
+ 72.44898986816406, -59.34124755859375, 39.19960021972656,
+ -65.99439239501953, -4.204323768615723, -60.54586410522461,
+ 55.890525817871094, 80.30484008789062, 72.8883056640625,
+ -46.59611129760742, 20.50387954711914, -31.126462936401367,
+ -57.294559478759766, -26.623577117919922, 15.935754776000977,
+ -78.77953338623047, 72.33577728271484
+ ],
+ 'descriptor': {'dimensions': [1, 2, 5, 5], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'maxPool2d',
+ 'arguments': [{'input': 'maxPool2dInput'}],
+ 'outputs': 'maxPool2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'maxPool2dOutput': {
+ 'data': [99.28312683105469, 81.73119354248047],
+ 'descriptor': {'dimensions': [1, 2, 1, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'maxPool2d float32 4D tensor options.windowDimensions',
+ 'graph': {
+ 'inputs': {
+ 'maxPool2dInput': {
+ 'data': [
+ 89.00830078125, -45.72039031982422, -61.306129455566406,
+ -4.014514446258545, -94.54893493652344, 46.28090286254883,
+ 99.28312683105469, -10.057873725891113, 9.742474555969238,
+ -39.03501892089844, 75.08192443847656, 12.819415092468262,
+ -33.01505661010742, 38.691341400146484, 66.09259033203125,
+ 97.90348052978516, -8.737770080566406, -53.42162322998047,
+ 72.1085205078125, -40.423091888427734, -35.68864440917969,
+ -87.64779663085938, 38.874244689941406, 39.383602142333984,
+ 7.429088115692139, -76.72171020507812, 50.217063903808594,
+ -52.895477294921875, -44.642333984375, -97.86752319335938,
+ 81.73119354248047, 5.428491115570068, -29.22772789001465,
+ 72.44898986816406, -59.34124755859375, 39.19960021972656,
+ -65.99439239501953, -4.204323768615723, -60.54586410522461,
+ 55.890525817871094, 80.30484008789062, 72.8883056640625,
+ -46.59611129760742, 20.50387954711914, -31.126462936401367,
+ -57.294559478759766, -26.623577117919922, 15.935754776000977,
+ -78.77953338623047, 72.33577728271484
+ ],
+ 'descriptor': {'dimensions': [1, 2, 5, 5], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'maxPool2d',
+ 'arguments': [
+ {'input': 'maxPool2dInput'}, {'options': {'windowDimensions': [3, 3]}}
+ ],
+ 'outputs': 'maxPool2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'maxPool2dOutput': {
+ 'data': [
+ 99.28312683105469, 99.28312683105469, 66.09259033203125,
+ 99.28312683105469, 99.28312683105469, 72.1085205078125,
+ 97.90348052978516, 72.1085205078125, 72.1085205078125,
+ 81.73119354248047, 72.44898986816406, 72.44898986816406,
+ 81.73119354248047, 72.8883056640625, 72.44898986816406,
+ 80.30484008789062, 72.8883056640625, 72.33577728271484
+ ],
+ 'descriptor': {'dimensions': [1, 2, 3, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'maxPool2d float32 4D tensor options.padding',
+ 'graph': {
+ 'inputs': {
+ 'maxPool2dInput': {
+ 'data': [
+ 89.00830078125, -45.72039031982422, -61.306129455566406,
+ -4.014514446258545, -94.54893493652344, 46.28090286254883,
+ 99.28312683105469, -10.057873725891113, 9.742474555969238,
+ -39.03501892089844, 75.08192443847656, 12.819415092468262,
+ -33.01505661010742, 38.691341400146484, 66.09259033203125,
+ 97.90348052978516, -8.737770080566406, -53.42162322998047,
+ 72.1085205078125, -40.423091888427734, -35.68864440917969,
+ -87.64779663085938, 38.874244689941406, 39.383602142333984,
+ 7.429088115692139, -76.72171020507812, 50.217063903808594,
+ -52.895477294921875, -44.642333984375, -97.86752319335938,
+ 81.73119354248047, 5.428491115570068, -29.22772789001465,
+ 72.44898986816406, -59.34124755859375, 39.19960021972656,
+ -65.99439239501953, -4.204323768615723, -60.54586410522461,
+ 55.890525817871094, 80.30484008789062, 72.8883056640625,
+ -46.59611129760742, 20.50387954711914, -31.126462936401367,
+ -57.294559478759766, -26.623577117919922, 15.935754776000977,
+ -78.77953338623047, 72.33577728271484
+ ],
+ 'descriptor': {'dimensions': [1, 2, 5, 5], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'maxPool2d',
+ 'arguments': [
+ {'input': 'maxPool2dInput'}, {'options': {'padding': [1, 0, 0, 1]}}
+ ],
+ 'outputs': 'maxPool2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'maxPool2dOutput': {
+ 'data': [
+ 99.28312683105469, 99.28312683105469, 99.28312683105469,
+ 99.28312683105469, 81.73119354248047, 72.8883056640625,
+ 81.73119354248047, 72.8883056640625
+ ],
+ 'descriptor': {'dimensions': [1, 2, 2, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'maxPool2d float32 4D tensor options.strides',
+ 'graph': {
+ 'inputs': {
+ 'maxPool2dInput': {
+ 'data': [
+ 89.00830078125, -45.72039031982422, -61.306129455566406,
+ -4.014514446258545, -94.54893493652344, 46.28090286254883,
+ 99.28312683105469, -10.057873725891113, 9.742474555969238,
+ -39.03501892089844, 75.08192443847656, 12.819415092468262,
+ -33.01505661010742, 38.691341400146484, 66.09259033203125,
+ 97.90348052978516, -8.737770080566406, -53.42162322998047,
+ 72.1085205078125, -40.423091888427734, -35.68864440917969,
+ -87.64779663085938, 38.874244689941406, 39.383602142333984,
+ 7.429088115692139, -76.72171020507812, 50.217063903808594,
+ -52.895477294921875, -44.642333984375, -97.86752319335938,
+ 81.73119354248047, 5.428491115570068, -29.22772789001465,
+ 72.44898986816406, -59.34124755859375, 39.19960021972656,
+ -65.99439239501953, -4.204323768615723, -60.54586410522461,
+ 55.890525817871094, 80.30484008789062, 72.8883056640625,
+ -46.59611129760742, 20.50387954711914, -31.126462936401367,
+ -57.294559478759766, -26.623577117919922, 15.935754776000977,
+ -78.77953338623047, 72.33577728271484
+ ],
+ 'descriptor': {'dimensions': [1, 2, 5, 5], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'maxPool2d',
+ 'arguments': [
+ {'input': 'maxPool2dInput'},
+ {'options': {'windowDimensions': [3, 3], 'strides': [2, 2]}}
+ ],
+ 'outputs': 'maxPool2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'maxPool2dOutput': {
+ 'data': [
+ 99.28312683105469, 66.09259033203125, 97.90348052978516,
+ 72.1085205078125, 81.73119354248047, 72.44898986816406,
+ 80.30484008789062, 72.33577728271484
+ ],
+ 'descriptor': {'dimensions': [1, 2, 2, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'maxPool2d float32 4D tensor options.dilations',
+ 'graph': {
+ 'inputs': {
+ 'maxPool2dInput': {
+ 'data': [
+ 89.00830078125, -45.72039031982422, -61.306129455566406,
+ -4.014514446258545, -94.54893493652344, 46.28090286254883,
+ 99.28312683105469, -10.057873725891113, 9.742474555969238,
+ -39.03501892089844, 75.08192443847656, 12.819415092468262,
+ -33.01505661010742, 38.691341400146484, 66.09259033203125,
+ 97.90348052978516, -8.737770080566406, -53.42162322998047,
+ 72.1085205078125, -40.423091888427734, -35.68864440917969,
+ -87.64779663085938, 38.874244689941406, 39.383602142333984,
+ 7.429088115692139, -76.72171020507812, 50.217063903808594,
+ -52.895477294921875, -44.642333984375, -97.86752319335938,
+ 81.73119354248047, 5.428491115570068, -29.22772789001465,
+ 72.44898986816406, -59.34124755859375, 39.19960021972656,
+ -65.99439239501953, -4.204323768615723, -60.54586410522461,
+ 55.890525817871094, 80.30484008789062, 72.8883056640625,
+ -46.59611129760742, 20.50387954711914, -31.126462936401367,
+ -57.294559478759766, -26.623577117919922, 15.935754776000977,
+ -78.77953338623047, 72.33577728271484
+ ],
+ 'descriptor': {'dimensions': [1, 2, 5, 5], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'maxPool2d',
+ 'arguments': [
+ {'input': 'maxPool2dInput'},
+ {'options': {'windowDimensions': [3, 3], 'dilations': [2, 2]}}
+ ],
+ 'outputs': 'maxPool2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'maxPool2dOutput': {
+ 'data': [89.00830078125, 72.33577728271484],
+ 'descriptor': {'dimensions': [1, 2, 1, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'maxPool2d float32 4D tensor options.layout=nchw',
+ 'graph': {
+ 'inputs': {
+ 'maxPool2dInput': {
+ 'data': [
+ 89.00830078125, -45.72039031982422, -61.306129455566406,
+ -4.014514446258545, -94.54893493652344, 46.28090286254883,
+ 99.28312683105469, -10.057873725891113, 9.742474555969238,
+ -39.03501892089844, 75.08192443847656, 12.819415092468262,
+ -33.01505661010742, 38.691341400146484, 66.09259033203125,
+ 97.90348052978516, -8.737770080566406, -53.42162322998047,
+ 72.1085205078125, -40.423091888427734, -35.68864440917969,
+ -87.64779663085938, 38.874244689941406, 39.383602142333984,
+ 7.429088115692139, -76.72171020507812, 50.217063903808594,
+ -52.895477294921875, -44.642333984375, -97.86752319335938,
+ 81.73119354248047, 5.428491115570068, -29.22772789001465,
+ 72.44898986816406, -59.34124755859375, 39.19960021972656,
+ -65.99439239501953, -4.204323768615723, -60.54586410522461,
+ 55.890525817871094, 80.30484008789062, 72.8883056640625,
+ -46.59611129760742, 20.50387954711914, -31.126462936401367,
+ -57.294559478759766, -26.623577117919922, 15.935754776000977,
+ -78.77953338623047, 72.33577728271484
+ ],
+ 'descriptor': {'dimensions': [1, 2, 5, 5], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'maxPool2d',
+ 'arguments':
+ [{'input': 'maxPool2dInput'}, {'options': {'layout': 'nchw'}}],
+ 'outputs': 'maxPool2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'maxPool2dOutput': {
+ 'data': [99.28312683105469, 81.73119354248047],
+ 'descriptor': {'dimensions': [1, 2, 1, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'maxPool2d float32 4D tensor options.layout=nhwc',
+ 'graph': {
+ 'inputs': {
+ 'maxPool2dInput': {
+ 'data': [
+ 89.00830078125, -76.72171020507812, -45.72039031982422,
+ 50.217063903808594, -61.306129455566406, -52.895477294921875,
+ -4.014514446258545, -44.642333984375, -94.54893493652344,
+ -97.86752319335938, 46.28090286254883, 81.73119354248047,
+ 99.28312683105469, 5.428491115570068, -10.057873725891113,
+ -29.22772789001465, 9.742474555969238, 72.44898986816406,
+ -39.03501892089844, -59.34124755859375, 75.08192443847656,
+ 39.19960021972656, 12.819415092468262, -65.99439239501953,
+ -33.01505661010742, -4.204323768615723, 38.691341400146484,
+ -60.54586410522461, 66.09259033203125, 55.890525817871094,
+ 97.90348052978516, 80.30484008789062, -8.737770080566406,
+ 72.8883056640625, -53.42162322998047, -46.59611129760742,
+ 72.1085205078125, 20.50387954711914, -40.423091888427734,
+ -31.126462936401367, -35.68864440917969, -57.294559478759766,
+ -87.64779663085938, -26.623577117919922, 38.874244689941406,
+ 15.935754776000977, 39.383602142333984, -78.77953338623047,
+ 7.429088115692139, 72.33577728271484
+ ],
+ 'descriptor': {'dimensions': [1, 5, 5, 2], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'maxPool2d',
+ 'arguments':
+ [{'input': 'maxPool2dInput'}, {'options': {'layout': 'nhwc'}}],
+ 'outputs': 'maxPool2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'maxPool2dOutput': {
+ 'data': [99.28312683105469, 81.73119354248047],
+ 'descriptor': {'dimensions': [1, 1, 1, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'maxPool2d float32 4D tensor options.roundingType=floor',
+ 'graph': {
+ 'inputs': {
+ 'maxPool2dInput': {
+ 'data': [
+ 89.00830078125, -45.72039031982422, -61.306129455566406,
+ -4.014514446258545, -94.54893493652344, 46.28090286254883,
+ 99.28312683105469, -10.057873725891113, 9.742474555969238,
+ -39.03501892089844, 75.08192443847656, 12.819415092468262,
+ -33.01505661010742, 38.691341400146484, 66.09259033203125,
+ 97.90348052978516, -8.737770080566406, -53.42162322998047,
+ 72.1085205078125, -40.423091888427734, -35.68864440917969,
+ -87.64779663085938, 38.874244689941406, 39.383602142333984,
+ 7.429088115692139, -76.72171020507812, 50.217063903808594,
+ -52.895477294921875, -44.642333984375, -97.86752319335938,
+ 81.73119354248047, 5.428491115570068, -29.22772789001465,
+ 72.44898986816406, -59.34124755859375, 39.19960021972656,
+ -65.99439239501953, -4.204323768615723, -60.54586410522461,
+ 55.890525817871094, 80.30484008789062, 72.8883056640625,
+ -46.59611129760742, 20.50387954711914, -31.126462936401367,
+ -57.294559478759766, -26.623577117919922, 15.935754776000977,
+ -78.77953338623047, 72.33577728271484
+ ],
+ 'descriptor': {'dimensions': [1, 2, 5, 5], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'maxPool2d',
+ 'arguments': [
+ {'input': 'maxPool2dInput'}, {
+ 'options': {
+ 'windowDimensions': [3, 3],
+ 'padding': [1, 0, 0, 1],
+ 'strides': [2, 2],
+ 'roundingType': 'floor'
+ }
+ }
+ ],
+ 'outputs': 'maxPool2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'maxPool2dOutput': {
+ 'data': [
+ 99.28312683105469, 9.742474555969238, 99.28312683105469,
+ 72.1085205078125, 81.73119354248047, 72.44898986816406,
+ 81.73119354248047, 72.44898986816406
+ ],
+ 'descriptor': {'dimensions': [1, 2, 2, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'maxPool2d float32 4D tensor options.roundingType=ceil',
+ 'graph': {
+ 'inputs': {
+ 'maxPool2dInput': {
+ 'data': [
+ 89.00830078125, -45.72039031982422, -61.306129455566406,
+ -4.014514446258545, -94.54893493652344, 46.28090286254883,
+ 99.28312683105469, -10.057873725891113, 9.742474555969238,
+ -39.03501892089844, 75.08192443847656, 12.819415092468262,
+ -33.01505661010742, 38.691341400146484, 66.09259033203125,
+ 97.90348052978516, -8.737770080566406, -53.42162322998047,
+ 72.1085205078125, -40.423091888427734, -35.68864440917969,
+ -87.64779663085938, 38.874244689941406, 39.383602142333984,
+ 7.429088115692139, -76.72171020507812, 50.217063903808594,
+ -52.895477294921875, -44.642333984375, -97.86752319335938,
+ 81.73119354248047, 5.428491115570068, -29.22772789001465,
+ 72.44898986816406, -59.34124755859375, 39.19960021972656,
+ -65.99439239501953, -4.204323768615723, -60.54586410522461,
+ 55.890525817871094, 80.30484008789062, 72.8883056640625,
+ -46.59611129760742, 20.50387954711914, -31.126462936401367,
+ -57.294559478759766, -26.623577117919922, 15.935754776000977,
+ -78.77953338623047, 72.33577728271484
+ ],
+ 'descriptor': {'dimensions': [1, 2, 5, 5], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'maxPool2d',
+ 'arguments': [
+ {'input': 'maxPool2dInput'}, {
+ 'options': {
+ 'windowDimensions': [3, 3],
+ 'padding': [1, 0, 0, 1],
+ 'strides': [2, 2],
+ 'roundingType': 'ceil'
+ }
+ }
+ ],
+ 'outputs': 'maxPool2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'maxPool2dOutput': {
+ 'data': [
+ 99.28312683105469, 9.742474555969238, -39.03501892089844,
+ 99.28312683105469, 72.1085205078125, 66.09259033203125,
+ 97.90348052978516, 72.1085205078125, 7.429088115692139,
+ 81.73119354248047, 72.44898986816406, -59.34124755859375,
+ 81.73119354248047, 72.44898986816406, 55.890525817871094,
+ 80.30484008789062, 72.33577728271484, 72.33577728271484
+ ],
+ 'descriptor': {'dimensions': [1, 2, 3, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'maxPool2d float32 4D tensor options.outputSizes ignores options.roundingType=floor',
+ 'graph': {
+ 'inputs': {
+ 'maxPool2dInput': {
+ 'data': [
+ 89.00830078125, -45.72039031982422, -61.306129455566406,
+ -4.014514446258545, -94.54893493652344, 46.28090286254883,
+ 99.28312683105469, -10.057873725891113, 9.742474555969238,
+ -39.03501892089844, 75.08192443847656, 12.819415092468262,
+ -33.01505661010742, 38.691341400146484, 66.09259033203125,
+ 97.90348052978516, -8.737770080566406, -53.42162322998047,
+ 72.1085205078125, -40.423091888427734, -35.68864440917969,
+ -87.64779663085938, 38.874244689941406, 39.383602142333984,
+ 7.429088115692139, -76.72171020507812, 50.217063903808594,
+ -52.895477294921875, -44.642333984375, -97.86752319335938,
+ 81.73119354248047, 5.428491115570068, -29.22772789001465,
+ 72.44898986816406, -59.34124755859375, 39.19960021972656,
+ -65.99439239501953, -4.204323768615723, -60.54586410522461,
+ 55.890525817871094, 80.30484008789062, 72.8883056640625,
+ -46.59611129760742, 20.50387954711914, -31.126462936401367,
+ -57.294559478759766, -26.623577117919922, 15.935754776000977,
+ -78.77953338623047, 72.33577728271484
+ ],
+ 'descriptor': {'dimensions': [1, 2, 5, 5], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'maxPool2d',
+ 'arguments': [
+ {'input': 'maxPool2dInput'}, {
+ 'options': {
+ 'windowDimensions': [3, 3],
+ 'padding': [1, 0, 0, 1],
+ 'strides': [2, 2],
+ 'roundingType': 'floor',
+ 'outputSizes': [3, 3]
+ }
+ }
+ ],
+ 'outputs': 'maxPool2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'maxPool2dOutput': {
+ 'data': [
+ 99.28312683105469, 9.742474555969238, -39.03501892089844,
+ 99.28312683105469, 72.1085205078125, 66.09259033203125,
+ 97.90348052978516, 72.1085205078125, 7.429088115692139,
+ 81.73119354248047, 72.44898986816406, -59.34124755859375,
+ 81.73119354248047, 72.44898986816406, 55.890525817871094,
+ 80.30484008789062, 72.33577728271484, 72.33577728271484
+ ],
+ 'descriptor': {'dimensions': [1, 2, 3, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'maxPool2d float32 4D tensor options.outputSizes ignores options.roundingType=ceil',
+ 'graph': {
+ 'inputs': {
+ 'maxPool2dInput': {
+ 'data': [
+ 89.00830078125, -45.72039031982422, -61.306129455566406,
+ -4.014514446258545, -94.54893493652344, 46.28090286254883,
+ 99.28312683105469, -10.057873725891113, 9.742474555969238,
+ -39.03501892089844, 75.08192443847656, 12.819415092468262,
+ -33.01505661010742, 38.691341400146484, 66.09259033203125,
+ 97.90348052978516, -8.737770080566406, -53.42162322998047,
+ 72.1085205078125, -40.423091888427734, -35.68864440917969,
+ -87.64779663085938, 38.874244689941406, 39.383602142333984,
+ 7.429088115692139, -76.72171020507812, 50.217063903808594,
+ -52.895477294921875, -44.642333984375, -97.86752319335938,
+ 81.73119354248047, 5.428491115570068, -29.22772789001465,
+ 72.44898986816406, -59.34124755859375, 39.19960021972656,
+ -65.99439239501953, -4.204323768615723, -60.54586410522461,
+ 55.890525817871094, 80.30484008789062, 72.8883056640625,
+ -46.59611129760742, 20.50387954711914, -31.126462936401367,
+ -57.294559478759766, -26.623577117919922, 15.935754776000977,
+ -78.77953338623047, 72.33577728271484
+ ],
+ 'descriptor': {'dimensions': [1, 2, 5, 5], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'maxPool2d',
+ 'arguments': [
+ {'input': 'maxPool2dInput'}, {
+ 'options': {
+ 'windowDimensions': [3, 3],
+ 'padding': [1, 0, 0, 1],
+ 'strides': [2, 2],
+ 'roundingType': 'ceil',
+ 'outputSizes': [2, 2]
+ }
+ }
+ ],
+ 'outputs': 'maxPool2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'maxPool2dOutput': {
+ 'data': [
+ 99.28312683105469, 9.742474555969238, 99.28312683105469,
+ 72.1085205078125, 81.73119354248047, 72.44898986816406,
+ 81.73119354248047, 72.44898986816406
+ ],
+ 'descriptor': {'dimensions': [1, 2, 2, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'maxPool2d float32 4D tensor options.dilations with options.strides',
+ 'graph': {
+ 'inputs': {
+ 'maxPool2dInput': {
+ 'data': [
+ 34.69258117675781, -24.706249237060547, -60.428070068359375,
+ 35.93883514404297, 60.896095275878906, 79.42220306396484,
+ -77.85906219482422, 54.188209533691406, -21.576934814453125,
+ -49.10390853881836, 78.55176544189453, 74.28213500976562,
+ -87.92769622802734, 79.82047271728516, 11.680922508239746,
+ -12.154505729675293, -22.33293914794922, 33.084861755371094,
+ 8.640676498413086, 47.040645599365234, 95.7823486328125,
+ -88.01998138427734, -98.53630065917969, 16.158977508544922,
+ 21.396089553833008, 95.1323471069336, -40.80724334716797,
+ -88.70922088623047, -40.772769927978516, 67.89842987060547,
+ -50.337467193603516, -96.56610870361328, 12.508098602294922,
+ -6.6358113288879395, -44.80198287963867, 80.27474212646484,
+ -65.68411254882812, -14.884790420532227, -66.54857635498047,
+ 20.072338104248047, -27.954269409179688, -56.62217330932617,
+ 82.7479476928711, 93.30175018310547, -34.073394775390625,
+ -22.87164306640625, 73.25525665283203, 41.14021682739258,
+ -19.75514793395996, 80.07701110839844, -69.89276885986328,
+ 14.013250350952148, -61.36640167236328, 51.53046417236328,
+ 43.53886413574219, -89.5888671875, 51.45121765136719,
+ 73.9239730834961, -80.25264739990234, 94.72747802734375,
+ 95.25411224365234, 58.12575149536133, 19.885723114013672,
+ -70.0301284790039, 63.419517517089844, -54.11785125732422,
+ -97.22807312011719, -60.65826416015625, -31.04998016357422,
+ -14.646553039550781, -63.73688888549805, 47.34630584716797,
+ 85.56405639648438, -53.389251708984375, -70.84739685058594,
+ 47.355045318603516, 83.38397979736328, 7.361695289611816,
+ 46.85823440551758, 98.13465881347656, -43.9396858215332,
+ 50.33780288696289, 37.45563507080078, -54.52760696411133,
+ -6.212307929992676, 34.41734313964844, 11.8167724609375,
+ 72.44517517089844, 86.3460922241211, 4.14656925201416,
+ 88.33040618896484, 98.29994201660156, -66.72379302978516,
+ 58.0643424987793, -51.168277740478516, -17.768583297729492,
+ 9.961172103881836, -52.73843002319336
+ ],
+ 'descriptor': {'dimensions': [1, 7, 7, 2], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'maxPool2d',
+ 'arguments': [
+ {'input': 'maxPool2dInput'}, {
+ 'options': {
+ 'windowDimensions': [3, 3],
+ 'padding': [1, 0, 0, 1],
+ 'strides': [2, 2],
+ 'dilations': [1, 1],
+ 'layout': 'nhwc'
+ }
+ }
+ ],
+ 'outputs': 'maxPool2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'maxPool2dOutput': {
+ 'data': [
+ 60.896095275878906, 79.42220306396484, 95.7823486328125,
+ 79.42220306396484, 78.55176544189453, 95.1323471069336,
+ 82.7479476928711, 93.30175018310547, 95.7823486328125,
+ 80.27474212646484, 43.53886413574219, 95.1323471069336,
+ 95.25411224365234, 94.72747802734375, 95.25411224365234,
+ 98.13465881347656, 63.419517517089844, 98.13465881347656
+ ],
+ 'descriptor': {'dimensions': [1, 3, 3, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ poolingOperatorsTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getPoolingOperatorsPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/pow.https.any.js b/tests/wpt/tests/webnn/conformance_tests/pow.https.any.js
index c988e92d917..3da766df69d 100644
--- a/tests/wpt/tests/webnn/conformance_tests/pow.https.any.js
+++ b/tests/wpt/tests/webnn/conformance_tests/pow.https.any.js
@@ -1,4 +1,4 @@
-// META: title=test WebNN API element-wise binary operations
+// META: title=test WebNN API element-wise pow operation
// META: global=window,dedicatedworker
// META: variant=?cpu
// META: variant=?gpu
@@ -8,6 +8,605 @@
'use strict';
-// https://webmachinelearning.github.io/webnn/#api-mlgraphbuilder-binary
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-binary
+// Compute the element-wise binary power of the two input tensors.
+// MLOperand pow(MLOperand a, MLOperand b);
-runWebNNConformanceTests('pow', buildOperationWithTwoInputs);
+
+const getPowPrecisionTolerance = (graphResources) => {
+ const toleranceValueDict = {float32: 32, float16: 2};
+ const expectedDataType =
+ getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs);
+ return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]};
+};
+
+const powTests = [
+ {
+ 'name':
+ 'pow float32 constant 1D base tensor and 1D integer exponent tensor',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 17.846010208129883, -0.0631069764494896, -9.868203163146973,
+ 11.17772102355957, -17.346275329589844, 11.862250328063965,
+ -16.832275390625, 2.6574816703796387, -2.783346652984619,
+ -13.756400108337402, 13.131382942199707, -0.4376337230205536,
+ -15.678689002990723, 10.283306121826172, 14.893174171447754,
+ -4.941208362579346, -14.231812477111816, 3.2646026611328125,
+ 17.229148864746094, -2.885918140411377, -1.4400150775909424,
+ -5.757015705108643, 17.41126823425293, 17.41521453857422
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'inputB': {
+ 'data': [
+ 1, 6, -7, 7, -2, 1, 4, -10, -2, -5, -2, -10,
+ -8, -7, -1, -3, -9, 6, -6, 7, -5, -5, 7, -6
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'pow',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 17.846010208129883,
+ 6.316321332633379e-8,
+ -1.0973203501407625e-7,
+ 21800822,
+ 0.0033234376460313797,
+ 11.862250328063965,
+ 80273.3359375,
+ 0.00005692423656000756,
+ 0.12908191978931427,
+ -0.0000020299064544815337,
+ 0.005799346603453159,
+ 3880.540283203125,
+ 2.7385585465999895e-10,
+ 8.223764069725803e-8,
+ 0.06714485585689545,
+ -0.008288968354463577,
+ -4.1750155416186985e-11,
+ 1210.5478515625,
+ 3.8231124932508465e-8,
+ -1667.201416015625,
+ -0.16149713099002838,
+ -0.00015812950732652098,
+ 485079424,
+ 3.584487018315485e-8
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'pow float32 1D base tensor and 1D integer exponent tensor',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 17.846010208129883, -0.0631069764494896, -9.868203163146973,
+ 11.17772102355957, -17.346275329589844, 11.862250328063965,
+ -16.832275390625, 2.6574816703796387, -2.783346652984619,
+ -13.756400108337402, 13.131382942199707, -0.4376337230205536,
+ -15.678689002990723, 10.283306121826172, 14.893174171447754,
+ -4.941208362579346, -14.231812477111816, 3.2646026611328125,
+ 17.229148864746094, -2.885918140411377, -1.4400150775909424,
+ -5.757015705108643, 17.41126823425293, 17.41521453857422
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 1, 6, -7, 7, -2, 1, 4, -10, -2, -5, -2, -10,
+ -8, -7, -1, -3, -9, 6, -6, 7, -5, -5, 7, -6
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'pow',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 17.846010208129883,
+ 6.316321332633379e-8,
+ -1.0973203501407625e-7,
+ 21800822,
+ 0.0033234376460313797,
+ 11.862250328063965,
+ 80273.3359375,
+ 0.00005692423656000756,
+ 0.12908191978931427,
+ -0.0000020299064544815337,
+ 0.005799346603453159,
+ 3880.540283203125,
+ 2.7385585465999895e-10,
+ 8.223764069725803e-8,
+ 0.06714485585689545,
+ -0.008288968354463577,
+ -4.1750155416186985e-11,
+ 1210.5478515625,
+ 3.8231124932508465e-8,
+ -1667.201416015625,
+ -0.16149713099002838,
+ -0.00015812950732652098,
+ 485079424,
+ 3.584487018315485e-8
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'pow float32 2D base tensor and 2D integer exponent tensor',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 17.846010208129883, -0.0631069764494896, -9.868203163146973,
+ 11.17772102355957, -17.346275329589844, 11.862250328063965,
+ -16.832275390625, 2.6574816703796387, -2.783346652984619,
+ -13.756400108337402, 13.131382942199707, -0.4376337230205536,
+ -15.678689002990723, 10.283306121826172, 14.893174171447754,
+ -4.941208362579346, -14.231812477111816, 3.2646026611328125,
+ 17.229148864746094, -2.885918140411377, -1.4400150775909424,
+ -5.757015705108643, 17.41126823425293, 17.41521453857422
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 1, 6, -7, 7, -2, 1, 4, -10, -2, -5, -2, -10,
+ -8, -7, -1, -3, -9, 6, -6, 7, -5, -5, 7, -6
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'pow',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 17.846010208129883,
+ 6.316321332633379e-8,
+ -1.0973203501407625e-7,
+ 21800822,
+ 0.0033234376460313797,
+ 11.862250328063965,
+ 80273.3359375,
+ 0.00005692423656000756,
+ 0.12908191978931427,
+ -0.0000020299064544815337,
+ 0.005799346603453159,
+ 3880.540283203125,
+ 2.7385585465999895e-10,
+ 8.223764069725803e-8,
+ 0.06714485585689545,
+ -0.008288968354463577,
+ -4.1750155416186985e-11,
+ 1210.5478515625,
+ 3.8231124932508465e-8,
+ -1667.201416015625,
+ -0.16149713099002838,
+ -0.00015812950732652098,
+ 485079424,
+ 3.584487018315485e-8
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'pow float32 3D base tensor and 3D integer exponent tensor',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 17.846010208129883, -0.0631069764494896, -9.868203163146973,
+ 11.17772102355957, -17.346275329589844, 11.862250328063965,
+ -16.832275390625, 2.6574816703796387, -2.783346652984619,
+ -13.756400108337402, 13.131382942199707, -0.4376337230205536,
+ -15.678689002990723, 10.283306121826172, 14.893174171447754,
+ -4.941208362579346, -14.231812477111816, 3.2646026611328125,
+ 17.229148864746094, -2.885918140411377, -1.4400150775909424,
+ -5.757015705108643, 17.41126823425293, 17.41521453857422
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 1, 6, -7, 7, -2, 1, 4, -10, -2, -5, -2, -10,
+ -8, -7, -1, -3, -9, 6, -6, 7, -5, -5, 7, -6
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'pow',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 17.846010208129883,
+ 6.316321332633379e-8,
+ -1.0973203501407625e-7,
+ 21800822,
+ 0.0033234376460313797,
+ 11.862250328063965,
+ 80273.3359375,
+ 0.00005692423656000756,
+ 0.12908191978931427,
+ -0.0000020299064544815337,
+ 0.005799346603453159,
+ 3880.540283203125,
+ 2.7385585465999895e-10,
+ 8.223764069725803e-8,
+ 0.06714485585689545,
+ -0.008288968354463577,
+ -4.1750155416186985e-11,
+ 1210.5478515625,
+ 3.8231124932508465e-8,
+ -1667.201416015625,
+ -0.16149713099002838,
+ -0.00015812950732652098,
+ 485079424,
+ 3.584487018315485e-8
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'pow float32 4D base tensor and 4D integer exponent tensor',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 17.846010208129883, -0.0631069764494896, -9.868203163146973,
+ 11.17772102355957, -17.346275329589844, 11.862250328063965,
+ -16.832275390625, 2.6574816703796387, -2.783346652984619,
+ -13.756400108337402, 13.131382942199707, -0.4376337230205536,
+ -15.678689002990723, 10.283306121826172, 14.893174171447754,
+ -4.941208362579346, -14.231812477111816, 3.2646026611328125,
+ 17.229148864746094, -2.885918140411377, -1.4400150775909424,
+ -5.757015705108643, 17.41126823425293, 17.41521453857422
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 1, 6, -7, 7, -2, 1, 4, -10, -2, -5, -2, -10,
+ -8, -7, -1, -3, -9, 6, -6, 7, -5, -5, 7, -6
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'pow',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 17.846010208129883,
+ 6.316321332633379e-8,
+ -1.0973203501407625e-7,
+ 21800822,
+ 0.0033234376460313797,
+ 11.862250328063965,
+ 80273.3359375,
+ 0.00005692423656000756,
+ 0.12908191978931427,
+ -0.0000020299064544815337,
+ 0.005799346603453159,
+ 3880.540283203125,
+ 2.7385585465999895e-10,
+ 8.223764069725803e-8,
+ 0.06714485585689545,
+ -0.008288968354463577,
+ -4.1750155416186985e-11,
+ 1210.5478515625,
+ 3.8231124932508465e-8,
+ -1667.201416015625,
+ -0.16149713099002838,
+ -0.00015812950732652098,
+ 485079424,
+ 3.584487018315485e-8
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'pow float32 5D base tensor and 5D integer exponent tensor',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 17.846010208129883, -0.0631069764494896, -9.868203163146973,
+ 11.17772102355957, -17.346275329589844, 11.862250328063965,
+ -16.832275390625, 2.6574816703796387, -2.783346652984619,
+ -13.756400108337402, 13.131382942199707, -0.4376337230205536,
+ -15.678689002990723, 10.283306121826172, 14.893174171447754,
+ -4.941208362579346, -14.231812477111816, 3.2646026611328125,
+ 17.229148864746094, -2.885918140411377, -1.4400150775909424,
+ -5.757015705108643, 17.41126823425293, 17.41521453857422
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 2, 3], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 1, 6, -7, 7, -2, 1, 4, -10, -2, -5, -2, -10,
+ -8, -7, -1, -3, -9, 6, -6, 7, -5, -5, 7, -6
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'pow',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 17.846010208129883,
+ 6.316321332633379e-8,
+ -1.0973203501407625e-7,
+ 21800822,
+ 0.0033234376460313797,
+ 11.862250328063965,
+ 80273.3359375,
+ 0.00005692423656000756,
+ 0.12908191978931427,
+ -0.0000020299064544815337,
+ 0.005799346603453159,
+ 3880.540283203125,
+ 2.7385585465999895e-10,
+ 8.223764069725803e-8,
+ 0.06714485585689545,
+ -0.008288968354463577,
+ -4.1750155416186985e-11,
+ 1210.5478515625,
+ 3.8231124932508465e-8,
+ -1667.201416015625,
+ -0.16149713099002838,
+ -0.00015812950732652098,
+ 485079424,
+ 3.584487018315485e-8
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'pow (square) float32 4D base tensor and broadcastable 0D integer exponent scalar',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 17.846010208129883, -0.0631069764494896, -9.868203163146973,
+ 11.17772102355957, -17.346275329589844, 11.862250328063965,
+ -16.832275390625, 2.6574816703796387, -2.783346652984619,
+ -13.756400108337402, 13.131382942199707, -0.4376337230205536,
+ -15.678689002990723, 10.283306121826172, 14.893174171447754,
+ -4.941208362579346, -14.231812477111816, 3.2646026611328125,
+ 17.229148864746094, -2.885918140411377, -1.4400150775909424,
+ -5.757015705108643, 17.41126823425293, 17.41521453857422
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'inputB': {
+ 'data': [2],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'pow',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 318.4800720214844, 0.00398249039426446, 97.38143157958984,
+ 124.94144439697266, 300.8932800292969, 140.71298217773438,
+ 283.32550048828125, 7.062208652496338, 7.747018814086914,
+ 189.23854064941406, 172.43321228027344, 0.19152326881885529,
+ 245.8212890625, 105.74638366699219, 221.806640625,
+ 24.41554069519043, 202.5444793701172, 10.657630920410156,
+ 296.84356689453125, 8.328523635864258, 2.073643445968628,
+ 33.14323043823242, 303.1522521972656, 303.2897033691406
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'pow (sqrt) float32 4D positive base tensor and broadcastable 0D integer exponent scalar',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 1.418652057647705, 19.384845733642578, 12.983916282653809,
+ 2.4603159427642822, 7.818154811859131, 6.94444465637207,
+ 12.183951377868652, 17.912473678588867, 11.356568336486816,
+ 8.924248695373535, 17.636823654174805, 11.49622917175293,
+ 18.516279220581055, 2.2580490112304688, 2.231948137283325,
+ 13.629855155944824, 17.54841423034668, 0.5390734076499939,
+ 5.891367435455322, 0.12803149223327637, 19.654495239257812,
+ 3.4122724533081055, 4.945034980773926, 4.437101364135742
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'inputB': {
+ 'data': [0.5],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'pow',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 1.19107186794281, 4.402822494506836, 3.6033201217651367,
+ 1.5685393810272217, 2.7960963249206543, 2.6352314949035645,
+ 3.490551710128784, 4.23231315612793, 3.369950771331787,
+ 2.9873480796813965, 4.199621677398682, 3.3906090259552,
+ 4.3030548095703125, 1.5026806592941284, 1.4939706325531006,
+ 3.6918632984161377, 4.189082622528076, 0.7342162132263184,
+ 2.4272139072418213, 0.35781487822532654, 4.4333391189575195,
+ 1.847233772277832, 2.223743438720703, 2.106442928314209
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'pow float32 4D base tensor and broadcastable 2D integer exponent tensor',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 17.846010208129883, -0.0631069764494896, -9.868203163146973,
+ 11.17772102355957, -17.346275329589844, 11.862250328063965,
+ -16.832275390625, 2.6574816703796387, -2.783346652984619,
+ -13.756400108337402, 13.131382942199707, -0.4376337230205536,
+ -15.678689002990723, 10.283306121826172, 14.893174171447754,
+ -4.941208362579346, -14.231812477111816, 3.2646026611328125,
+ 17.229148864746094, -2.885918140411377, -1.4400150775909424,
+ -5.757015705108643, 17.41126823425293, 17.41521453857422
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [5, -10, -10, 7, -7, -9],
+ 'descriptor': {'dimensions': [2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'pow',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 1810113, 998220038144, 1.1418765932802444e-10,
+ 21800822, -2.11619832768406e-9, 2.1502860603206386e-10,
+ -1351182.875, 0.00005692423656000756, 0.000035836616007145494,
+ -93225256, 1.4853429597394552e-8, -1698.2552490234375,
+ -947433.5, 7.562621362477984e-11, 1.8626330946375225e-12,
+ -71917.1015625, -8.45626324519344e-9, 0.00002374253199377563,
+ 1518165.5, 0.00002495513399480842, 0.026081321761012077,
+ -209595.46875, 2.0615180673644318e-9, 6.786416914539295e-12
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'pow float32 4D base tensor and broadcastable 3D integer exponent tensor',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 17.846010208129883, -0.0631069764494896, -9.868203163146973,
+ 11.17772102355957, -17.346275329589844, 11.862250328063965,
+ -16.832275390625, 2.6574816703796387, -2.783346652984619,
+ -13.756400108337402, 13.131382942199707, -0.4376337230205536,
+ -15.678689002990723, 10.283306121826172, 14.893174171447754,
+ -4.941208362579346, -14.231812477111816, 3.2646026611328125,
+ 17.229148864746094, -2.885918140411377, -1.4400150775909424,
+ -5.757015705108643, 17.41126823425293, 17.41521453857422
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [-5, -10, 9, -6],
+ 'descriptor': {'dimensions': [2, 2, 1], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'pow',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 5.524516950572433e-7,
+ -999109.625,
+ -0.000010685862434911542,
+ 3.284485530774539e-11,
+ 4.0545030440680696e-13,
+ 1.81271334748212e-11,
+ -108463955968,
+ 6610.47265625,
+ -10025.4921875,
+ 1.4756086841316574e-7,
+ 1.9504606996179064e-7,
+ 142.34274291992188,
+ -0.0000010554830396358739,
+ 0.000008696333679836243,
+ 0.0000013647832020069472,
+ 1.1525726506533829e-7,
+ 2.9335795945217846e-12,
+ 0.000007272717084561009,
+ 133774827520,
+ -13885.326171875,
+ -26.625843048095703,
+ 0.000027467271138448268,
+ 3.5893645389251105e-8,
+ 3.584487018315485e-8
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ powTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getPowPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/prelu.https.any.js b/tests/wpt/tests/webnn/conformance_tests/prelu.https.any.js
index 3b4717663fa..4730d4e2d17 100644
--- a/tests/wpt/tests/webnn/conformance_tests/prelu.https.any.js
+++ b/tests/wpt/tests/webnn/conformance_tests/prelu.https.any.js
@@ -8,6 +8,620 @@
'use strict';
-// https://webmachinelearning.github.io/webnn/#api-mlgraphbuilder-prelu
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-prelu
+// Calculate the parametric version of rectified linear function (Parametric
+// ReLU) on the input tensor element-wise. The calculation follows the
+// expression max(0, x) + slope * min(0, x).
+//
+// MLOperand prelu(MLOperand input, MLOperand slope);
-runWebNNConformanceTests('prelu', buildOperationWithTwoInputs);
+
+const getPreluPrecisionTolerance = (graphResources) => {
+ const toleranceValueDict = {float32: 1, float16: 1};
+ const expectedDataType =
+ getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs);
+ return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]};
+};
+
+const preluTests = [
+ {
+ 'name': 'prelu float32 0D scalar',
+ 'graph': {
+ 'inputs': {
+ 'preluInput': {
+ 'data': [-4.794857501983643],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'preluSlope': {
+ 'data': [1.1202747821807861],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'prelu',
+ 'arguments': [{'input': 'preluInput'}, {'slope': 'preluSlope'}],
+ 'outputs': 'preluOutput'
+ }],
+ 'expectedOutputs': {
+ 'preluOutput': {
+ 'data': [-5.371557712554932],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'prelu float32 1D constant tensors',
+ 'graph': {
+ 'inputs': {
+ 'preluInput': {
+ 'data': [
+ -2.549168109893799, -4.794857501983643, 8.413617134094238,
+ 6.108623504638672, -8.492292404174805, 3.3143365383148193,
+ 1.1687211990356445, -0.141762837767601, -6.714652061462402,
+ 5.787421703338623, -3.755627393722534, -4.89828634262085,
+ 7.3295159339904785, -3.9542298316955566, 7.067296981811523,
+ 9.439736366271973, -2.558180093765259, -8.658834457397461,
+ 8.47507381439209, 4.551425457000732, -9.267870903015137,
+ -0.262177437543869, 1.3258955478668213, -7.41831111907959
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'preluSlope': {
+ 'data': [
+ 9.343092918395996, 0.2800687253475189, -4.617084980010986,
+ 1.1202747821807861, -1.4334710836410522, -3.157594919204712,
+ -6.28995418548584, -5.0107879638671875, -6.899077415466309,
+ 3.5725347995758057, 6.861966609954834, -1.961531400680542,
+ 4.5832037925720215, 2.6643502712249756, 9.192955017089844,
+ -9.554699897766113, -5.505102157592773, -2.3927369117736816,
+ 3.58212947845459, -2.3224003314971924, -1.9816573858261108,
+ 4.155889987945557, -1.799522042274475, 9.295849800109863
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'prelu',
+ 'arguments': [{'input': 'preluInput'}, {'slope': 'preluSlope'}],
+ 'outputs': 'preluOutput'
+ }],
+ 'expectedOutputs': {
+ 'preluOutput': {
+ 'data': [
+ -23.817113876342773, -1.342889666557312, 8.413617134094238,
+ 6.108623504638672, 12.173455238342285, 3.3143365383148193,
+ 1.1687211990356445, 0.7103435397148132, 46.32490539550781,
+ 5.787421703338623, -25.7709903717041, 9.608142852783203,
+ 7.3295159339904785, -10.535453796386719, 7.067296981811523,
+ 9.439736366271973, 14.083043098449707, 20.718313217163086,
+ 8.47507381439209, 4.551425457000732, 18.365745544433594,
+ -1.0895805358886719, 1.3258955478668213, -68.95950317382812
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'prelu float32 1D tensors',
+ 'graph': {
+ 'inputs': {
+ 'preluInput': {
+ 'data': [
+ -2.549168109893799, -4.794857501983643, 8.413617134094238,
+ 6.108623504638672, -8.492292404174805, 3.3143365383148193,
+ 1.1687211990356445, -0.141762837767601, -6.714652061462402,
+ 5.787421703338623, -3.755627393722534, -4.89828634262085,
+ 7.3295159339904785, -3.9542298316955566, 7.067296981811523,
+ 9.439736366271973, -2.558180093765259, -8.658834457397461,
+ 8.47507381439209, 4.551425457000732, -9.267870903015137,
+ -0.262177437543869, 1.3258955478668213, -7.41831111907959
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'preluSlope': {
+ 'data': [
+ 9.343092918395996, 0.2800687253475189, -4.617084980010986,
+ 1.1202747821807861, -1.4334710836410522, -3.157594919204712,
+ -6.28995418548584, -5.0107879638671875, -6.899077415466309,
+ 3.5725347995758057, 6.861966609954834, -1.961531400680542,
+ 4.5832037925720215, 2.6643502712249756, 9.192955017089844,
+ -9.554699897766113, -5.505102157592773, -2.3927369117736816,
+ 3.58212947845459, -2.3224003314971924, -1.9816573858261108,
+ 4.155889987945557, -1.799522042274475, 9.295849800109863
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'prelu',
+ 'arguments': [{'input': 'preluInput'}, {'slope': 'preluSlope'}],
+ 'outputs': 'preluOutput'
+ }],
+ 'expectedOutputs': {
+ 'preluOutput': {
+ 'data': [
+ -23.817113876342773, -1.342889666557312, 8.413617134094238,
+ 6.108623504638672, 12.173455238342285, 3.3143365383148193,
+ 1.1687211990356445, 0.7103435397148132, 46.32490539550781,
+ 5.787421703338623, -25.7709903717041, 9.608142852783203,
+ 7.3295159339904785, -10.535453796386719, 7.067296981811523,
+ 9.439736366271973, 14.083043098449707, 20.718313217163086,
+ 8.47507381439209, 4.551425457000732, 18.365745544433594,
+ -1.0895805358886719, 1.3258955478668213, -68.95950317382812
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'prelu float32 2D tensors',
+ 'graph': {
+ 'inputs': {
+ 'preluInput': {
+ 'data': [
+ -2.549168109893799, -4.794857501983643, 8.413617134094238,
+ 6.108623504638672, -8.492292404174805, 3.3143365383148193,
+ 1.1687211990356445, -0.141762837767601, -6.714652061462402,
+ 5.787421703338623, -3.755627393722534, -4.89828634262085,
+ 7.3295159339904785, -3.9542298316955566, 7.067296981811523,
+ 9.439736366271973, -2.558180093765259, -8.658834457397461,
+ 8.47507381439209, 4.551425457000732, -9.267870903015137,
+ -0.262177437543869, 1.3258955478668213, -7.41831111907959
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'preluSlope': {
+ 'data': [
+ 9.343092918395996, 0.2800687253475189, -4.617084980010986,
+ 1.1202747821807861, -1.4334710836410522, -3.157594919204712,
+ -6.28995418548584, -5.0107879638671875, -6.899077415466309,
+ 3.5725347995758057, 6.861966609954834, -1.961531400680542,
+ 4.5832037925720215, 2.6643502712249756, 9.192955017089844,
+ -9.554699897766113, -5.505102157592773, -2.3927369117736816,
+ 3.58212947845459, -2.3224003314971924, -1.9816573858261108,
+ 4.155889987945557, -1.799522042274475, 9.295849800109863
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'prelu',
+ 'arguments': [{'input': 'preluInput'}, {'slope': 'preluSlope'}],
+ 'outputs': 'preluOutput'
+ }],
+ 'expectedOutputs': {
+ 'preluOutput': {
+ 'data': [
+ -23.817113876342773, -1.342889666557312, 8.413617134094238,
+ 6.108623504638672, 12.173455238342285, 3.3143365383148193,
+ 1.1687211990356445, 0.7103435397148132, 46.32490539550781,
+ 5.787421703338623, -25.7709903717041, 9.608142852783203,
+ 7.3295159339904785, -10.535453796386719, 7.067296981811523,
+ 9.439736366271973, 14.083043098449707, 20.718313217163086,
+ 8.47507381439209, 4.551425457000732, 18.365745544433594,
+ -1.0895805358886719, 1.3258955478668213, -68.95950317382812
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'prelu float32 3D tensors',
+ 'graph': {
+ 'inputs': {
+ 'preluInput': {
+ 'data': [
+ -2.549168109893799, -4.794857501983643, 8.413617134094238,
+ 6.108623504638672, -8.492292404174805, 3.3143365383148193,
+ 1.1687211990356445, -0.141762837767601, -6.714652061462402,
+ 5.787421703338623, -3.755627393722534, -4.89828634262085,
+ 7.3295159339904785, -3.9542298316955566, 7.067296981811523,
+ 9.439736366271973, -2.558180093765259, -8.658834457397461,
+ 8.47507381439209, 4.551425457000732, -9.267870903015137,
+ -0.262177437543869, 1.3258955478668213, -7.41831111907959
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'preluSlope': {
+ 'data': [
+ 9.343092918395996, 0.2800687253475189, -4.617084980010986,
+ 1.1202747821807861, -1.4334710836410522, -3.157594919204712,
+ -6.28995418548584, -5.0107879638671875, -6.899077415466309,
+ 3.5725347995758057, 6.861966609954834, -1.961531400680542,
+ 4.5832037925720215, 2.6643502712249756, 9.192955017089844,
+ -9.554699897766113, -5.505102157592773, -2.3927369117736816,
+ 3.58212947845459, -2.3224003314971924, -1.9816573858261108,
+ 4.155889987945557, -1.799522042274475, 9.295849800109863
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'prelu',
+ 'arguments': [{'input': 'preluInput'}, {'slope': 'preluSlope'}],
+ 'outputs': 'preluOutput'
+ }],
+ 'expectedOutputs': {
+ 'preluOutput': {
+ 'data': [
+ -23.817113876342773, -1.342889666557312, 8.413617134094238,
+ 6.108623504638672, 12.173455238342285, 3.3143365383148193,
+ 1.1687211990356445, 0.7103435397148132, 46.32490539550781,
+ 5.787421703338623, -25.7709903717041, 9.608142852783203,
+ 7.3295159339904785, -10.535453796386719, 7.067296981811523,
+ 9.439736366271973, 14.083043098449707, 20.718313217163086,
+ 8.47507381439209, 4.551425457000732, 18.365745544433594,
+ -1.0895805358886719, 1.3258955478668213, -68.95950317382812
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'prelu float32 4D tensors',
+ 'graph': {
+ 'inputs': {
+ 'preluInput': {
+ 'data': [
+ -2.549168109893799, -4.794857501983643, 8.413617134094238,
+ 6.108623504638672, -8.492292404174805, 3.3143365383148193,
+ 1.1687211990356445, -0.141762837767601, -6.714652061462402,
+ 5.787421703338623, -3.755627393722534, -4.89828634262085,
+ 7.3295159339904785, -3.9542298316955566, 7.067296981811523,
+ 9.439736366271973, -2.558180093765259, -8.658834457397461,
+ 8.47507381439209, 4.551425457000732, -9.267870903015137,
+ -0.262177437543869, 1.3258955478668213, -7.41831111907959
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'preluSlope': {
+ 'data': [
+ 9.343092918395996, 0.2800687253475189, -4.617084980010986,
+ 1.1202747821807861, -1.4334710836410522, -3.157594919204712,
+ -6.28995418548584, -5.0107879638671875, -6.899077415466309,
+ 3.5725347995758057, 6.861966609954834, -1.961531400680542,
+ 4.5832037925720215, 2.6643502712249756, 9.192955017089844,
+ -9.554699897766113, -5.505102157592773, -2.3927369117736816,
+ 3.58212947845459, -2.3224003314971924, -1.9816573858261108,
+ 4.155889987945557, -1.799522042274475, 9.295849800109863
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'prelu',
+ 'arguments': [{'input': 'preluInput'}, {'slope': 'preluSlope'}],
+ 'outputs': 'preluOutput'
+ }],
+ 'expectedOutputs': {
+ 'preluOutput': {
+ 'data': [
+ -23.817113876342773, -1.342889666557312, 8.413617134094238,
+ 6.108623504638672, 12.173455238342285, 3.3143365383148193,
+ 1.1687211990356445, 0.7103435397148132, 46.32490539550781,
+ 5.787421703338623, -25.7709903717041, 9.608142852783203,
+ 7.3295159339904785, -10.535453796386719, 7.067296981811523,
+ 9.439736366271973, 14.083043098449707, 20.718313217163086,
+ 8.47507381439209, 4.551425457000732, 18.365745544433594,
+ -1.0895805358886719, 1.3258955478668213, -68.95950317382812
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'prelu float32 5D tensors',
+ 'graph': {
+ 'inputs': {
+ 'preluInput': {
+ 'data': [
+ -2.549168109893799, -4.794857501983643, 8.413617134094238,
+ 6.108623504638672, -8.492292404174805, 3.3143365383148193,
+ 1.1687211990356445, -0.141762837767601, -6.714652061462402,
+ 5.787421703338623, -3.755627393722534, -4.89828634262085,
+ 7.3295159339904785, -3.9542298316955566, 7.067296981811523,
+ 9.439736366271973, -2.558180093765259, -8.658834457397461,
+ 8.47507381439209, 4.551425457000732, -9.267870903015137,
+ -0.262177437543869, 1.3258955478668213, -7.41831111907959
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 2, 3], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'preluSlope': {
+ 'data': [
+ 9.343092918395996, 0.2800687253475189, -4.617084980010986,
+ 1.1202747821807861, -1.4334710836410522, -3.157594919204712,
+ -6.28995418548584, -5.0107879638671875, -6.899077415466309,
+ 3.5725347995758057, 6.861966609954834, -1.961531400680542,
+ 4.5832037925720215, 2.6643502712249756, 9.192955017089844,
+ -9.554699897766113, -5.505102157592773, -2.3927369117736816,
+ 3.58212947845459, -2.3224003314971924, -1.9816573858261108,
+ 4.155889987945557, -1.799522042274475, 9.295849800109863
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 2, 3], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'prelu',
+ 'arguments': [{'input': 'preluInput'}, {'slope': 'preluSlope'}],
+ 'outputs': 'preluOutput'
+ }],
+ 'expectedOutputs': {
+ 'preluOutput': {
+ 'data': [
+ -23.817113876342773, -1.342889666557312, 8.413617134094238,
+ 6.108623504638672, 12.173455238342285, 3.3143365383148193,
+ 1.1687211990356445, 0.7103435397148132, 46.32490539550781,
+ 5.787421703338623, -25.7709903717041, 9.608142852783203,
+ 7.3295159339904785, -10.535453796386719, 7.067296981811523,
+ 9.439736366271973, 14.083043098449707, 20.718313217163086,
+ 8.47507381439209, 4.551425457000732, 18.365745544433594,
+ -1.0895805358886719, 1.3258955478668213, -68.95950317382812
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'prelu float32 broadcast 4D x 1D slope',
+ 'graph': {
+ 'inputs': {
+ 'preluInput': {
+ 'data': [
+ -2.549168109893799, -4.794857501983643, 8.413617134094238,
+ 6.108623504638672, -8.492292404174805, 3.3143365383148193,
+ 1.1687211990356445, -0.141762837767601, -6.714652061462402,
+ 5.787421703338623, -3.755627393722534, -4.89828634262085,
+ 7.3295159339904785, -3.9542298316955566, 7.067296981811523,
+ 9.439736366271973, -2.558180093765259, -8.658834457397461,
+ 8.47507381439209, 4.551425457000732, -9.267870903015137,
+ -0.262177437543869, 1.3258955478668213, -7.41831111907959
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'preluSlope': {
+ 'data': [5.073923110961914, 0.480774462223053, -7.091750144958496],
+ 'descriptor': {'dimensions': [3], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'prelu',
+ 'arguments': [{'input': 'preluInput'}, {'slope': 'preluSlope'}],
+ 'outputs': 'preluOutput'
+ }],
+ 'expectedOutputs': {
+ 'preluOutput': {
+ 'data': [
+ -12.934283256530762, -2.3052449226379395, 8.413617134094238,
+ 6.108623504638672, -4.082877159118652, 3.3143365383148193,
+ 1.1687211990356445, -0.06815595179796219, 47.61863327026367,
+ 5.787421703338623, -1.8056097030639648, 34.737422943115234,
+ 7.3295159339904785, -1.901092767715454, 7.067296981811523,
+ 9.439736366271973, -1.2299076318740845, 61.40629196166992,
+ 8.47507381439209, 4.551425457000732, 65.72542572021484,
+ -1.330268144607544, 1.3258955478668213, 52.60881042480469
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'prelu float32 broadcast 4D x 1D slope of shape [1]',
+ 'graph': {
+ 'inputs': {
+ 'preluInput': {
+ 'data': [
+ -2.549168109893799, -4.794857501983643, 8.413617134094238,
+ 6.108623504638672, -8.492292404174805, 3.3143365383148193,
+ 1.1687211990356445, -0.141762837767601, -6.714652061462402,
+ 5.787421703338623, -3.755627393722534, -4.89828634262085,
+ 7.3295159339904785, -3.9542298316955566, 7.067296981811523,
+ 9.439736366271973, -2.558180093765259, -8.658834457397461,
+ 8.47507381439209, 4.551425457000732, -9.267870903015137,
+ -0.262177437543869, 1.3258955478668213, -7.41831111907959
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'preluSlope': {
+ 'data': [5.0114545822143555],
+ 'descriptor': {'dimensions': [1], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'prelu',
+ 'arguments': [{'input': 'preluInput'}, {'slope': 'preluSlope'}],
+ 'outputs': 'preluOutput'
+ }],
+ 'expectedOutputs': {
+ 'preluOutput': {
+ 'data': [
+ -12.775040626525879, -24.029211044311523, 8.413617134094238,
+ 6.108623504638672, -42.558738708496094, 3.3143365383148193,
+ 1.1687211990356445, -0.7104380130767822, -33.65017318725586,
+ 5.787421703338623, -18.821155548095703, -24.54753875732422,
+ 7.3295159339904785, -19.816442489624023, 7.067296981811523,
+ 9.439736366271973, -12.82020378112793, -43.39335632324219,
+ 8.47507381439209, 4.551425457000732, -46.44551467895508,
+ -1.3138903379440308, 1.3258955478668213, -37.17652893066406
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'prelu float32 broadcast 4D x 2D slope',
+ 'graph': {
+ 'inputs': {
+ 'preluInput': {
+ 'data': [
+ -2.549168109893799, -4.794857501983643, 8.413617134094238,
+ 6.108623504638672, -8.492292404174805, 3.3143365383148193,
+ 1.1687211990356445, -0.141762837767601, -6.714652061462402,
+ 5.787421703338623, -3.755627393722534, -4.89828634262085,
+ 7.3295159339904785, -3.9542298316955566, 7.067296981811523,
+ 9.439736366271973, -2.558180093765259, -8.658834457397461,
+ 8.47507381439209, 4.551425457000732, -9.267870903015137,
+ -0.262177437543869, 1.3258955478668213, -7.41831111907959
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'preluSlope': {
+ 'data': [
+ 4.874276161193848, -8.501633644104004, 1.1819270849227905,
+ -9.985190391540527, -4.424202919006348, -6.654683589935303
+ ],
+ 'descriptor': {'dimensions': [2, 3], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'prelu',
+ 'arguments': [{'input': 'preluInput'}, {'slope': 'preluSlope'}],
+ 'outputs': 'preluOutput'
+ }],
+ 'expectedOutputs': {
+ 'preluOutput': {
+ 'data': [
+ -12.425349235534668, 40.764122009277344, 8.413617134094238,
+ 6.108623504638672, 37.571624755859375, 3.3143365383148193,
+ 1.1687211990356445, 1.2052156925201416, -7.936229228973389,
+ 5.787421703338623, 16.615657806396484, 32.5965461730957,
+ 7.3295159339904785, 33.61741256713867, 7.067296981811523,
+ 9.439736366271973, 11.31790828704834, 57.621803283691406,
+ 8.47507381439209, 4.551425457000732, -10.953948020935059,
+ 2.617891550064087, 1.3258955478668213, 49.366512298583984
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'prelu float32 broadcast 4D x 3D slope',
+ 'graph': {
+ 'inputs': {
+ 'preluInput': {
+ 'data': [
+ -2.549168109893799, -4.794857501983643, 8.413617134094238,
+ 6.108623504638672, -8.492292404174805, 3.3143365383148193,
+ 1.1687211990356445, -0.141762837767601, -6.714652061462402,
+ 5.787421703338623, -3.755627393722534, -4.89828634262085,
+ 7.3295159339904785, -3.9542298316955566, 7.067296981811523,
+ 9.439736366271973, -2.558180093765259, -8.658834457397461,
+ 8.47507381439209, 4.551425457000732, -9.267870903015137,
+ -0.262177437543869, 1.3258955478668213, -7.41831111907959
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'preluSlope': {
+ 'data': [5.073923110961914, 0.480774462223053, -7.091750144958496],
+ 'descriptor': {'dimensions': [1, 1, 3], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'prelu',
+ 'arguments': [{'input': 'preluInput'}, {'slope': 'preluSlope'}],
+ 'outputs': 'preluOutput'
+ }],
+ 'expectedOutputs': {
+ 'preluOutput': {
+ 'data': [
+ -12.934283256530762, -2.3052449226379395, 8.413617134094238,
+ 6.108623504638672, -4.082877159118652, 3.3143365383148193,
+ 1.1687211990356445, -0.06815595179796219, 47.61863327026367,
+ 5.787421703338623, -1.8056097030639648, 34.737422943115234,
+ 7.3295159339904785, -1.901092767715454, 7.067296981811523,
+ 9.439736366271973, -1.2299076318740845, 61.40629196166992,
+ 8.47507381439209, 4.551425457000732, 65.72542572021484,
+ -1.330268144607544, 1.3258955478668213, 52.60881042480469
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'prelu float32 broadcast 4D x 4D slope',
+ 'graph': {
+ 'inputs': {
+ 'preluInput': {
+ 'data': [
+ -2.549168109893799, -4.794857501983643, 8.413617134094238,
+ 6.108623504638672, -8.492292404174805, 3.3143365383148193,
+ 1.1687211990356445, -0.141762837767601, -6.714652061462402,
+ 5.787421703338623, -3.755627393722534, -4.89828634262085,
+ 7.3295159339904785, -3.9542298316955566, 7.067296981811523,
+ 9.439736366271973, -2.558180093765259, -8.658834457397461,
+ 8.47507381439209, 4.551425457000732, -9.267870903015137,
+ -0.262177437543869, 1.3258955478668213, -7.41831111907959
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'preluSlope': {
+ 'data': [5.0114545822143555],
+ 'descriptor': {'dimensions': [1, 1, 1, 1], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'prelu',
+ 'arguments': [{'input': 'preluInput'}, {'slope': 'preluSlope'}],
+ 'outputs': 'preluOutput'
+ }],
+ 'expectedOutputs': {
+ 'preluOutput': {
+ 'data': [
+ -12.775040626525879, -24.029211044311523, 8.413617134094238,
+ 6.108623504638672, -42.558738708496094, 3.3143365383148193,
+ 1.1687211990356445, -0.7104380130767822, -33.65017318725586,
+ 5.787421703338623, -18.821155548095703, -24.54753875732422,
+ 7.3295159339904785, -19.816442489624023, 7.067296981811523,
+ 9.439736366271973, -12.82020378112793, -43.39335632324219,
+ 8.47507381439209, 4.551425457000732, -46.44551467895508,
+ -1.3138903379440308, 1.3258955478668213, -37.17652893066406
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ preluTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getPreluPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/reciprocal.https.any.js b/tests/wpt/tests/webnn/conformance_tests/reciprocal.https.any.js
new file mode 100644
index 00000000000..a97c00e2b99
--- /dev/null
+++ b/tests/wpt/tests/webnn/conformance_tests/reciprocal.https.any.js
@@ -0,0 +1,297 @@
+// META: title=test WebNN API element-wise reciprocal operation
+// META: global=window,dedicatedworker
+// META: variant=?cpu
+// META: variant=?gpu
+// META: variant=?npu
+// META: script=../resources/utils.js
+// META: timeout=long
+
+'use strict';
+
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-unary
+// Compute the reciprocal of the input tensor, element-wise.
+//
+// MLOperand reciprocal(MLOperand input);
+
+
+const getReciprocalPrecisionTolerance = (graphResources) => {
+ const toleranceValueDict = {float32: 2, float16: 2};
+ const expectedDataType =
+ getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs);
+ return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]};
+};
+
+const reciprocalTests = [
+ {
+ 'name': 'reciprocal float32 0D scalar',
+ 'graph': {
+ 'inputs': {
+ 'reciprocalInput': {
+ 'data': [-9.36349105834961],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reciprocal',
+ 'arguments': [{'input': 'reciprocalInput'}],
+ 'outputs': 'reciprocalOutput'
+ }],
+ 'expectedOutputs': {
+ 'reciprocalOutput': {
+ 'data': [-0.10679777711629868],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reciprocal float32 1D constant tensor',
+ 'graph': {
+ 'inputs': {
+ 'reciprocalInput': {
+ 'data': [
+ -1.0110862255096436, 4.6215386390686035, 2.417376756668091,
+ -8.934871673583984, -3.3485584259033203, -8.803302764892578,
+ 8.826321601867676, 6.572828769683838, 6.639494895935059,
+ 2.6842703819274902, -4.627160549163818, -6.873653411865234,
+ -1.1854121685028076, 0.9572811722755432, 0.02132055163383484,
+ 0.35645851492881775, 4.827780246734619, 1.3128081560134888,
+ 8.246277809143066, -0.2039169818162918, -9.039937019348145,
+ 9.942809104919434, -9.540112495422363, -0.08022662252187729
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'reciprocal',
+ 'arguments': [{'input': 'reciprocalInput'}],
+ 'outputs': 'reciprocalOutput'
+ }],
+ 'expectedOutputs': {
+ 'reciprocalOutput': {
+ 'data': [
+ -0.9890353083610535, 0.21637815237045288, 0.4136715531349182,
+ -0.111921027302742, -0.29863595962524414, -0.11359372735023499,
+ 0.1132974773645401, 0.1521414965391159, 0.15061387419700623,
+ 0.3725407123565674, -0.21611526608467102, -0.14548304677009583,
+ -0.8435884118080139, 1.044625163078308, 46.90310287475586,
+ 2.805375576019287, 0.20713452994823456, 0.761725902557373,
+ 0.12126683443784714, -4.903956413269043, -0.11062023788690567,
+ 0.10057520121335983, -0.10482056438922882, -12.464690208435059
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reciprocal float32 1D tensor',
+ 'graph': {
+ 'inputs': {
+ 'reciprocalInput': {
+ 'data': [
+ -1.0110862255096436, 4.6215386390686035, 2.417376756668091,
+ -8.934871673583984, -3.3485584259033203, -8.803302764892578,
+ 8.826321601867676, 6.572828769683838, 6.639494895935059,
+ 2.6842703819274902, -4.627160549163818, -6.873653411865234,
+ -1.1854121685028076, 0.9572811722755432, 0.02132055163383484,
+ 0.35645851492881775, 4.827780246734619, 1.3128081560134888,
+ 8.246277809143066, -0.2039169818162918, -9.039937019348145,
+ 9.942809104919434, -9.540112495422363, -0.08022662252187729
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reciprocal',
+ 'arguments': [{'input': 'reciprocalInput'}],
+ 'outputs': 'reciprocalOutput'
+ }],
+ 'expectedOutputs': {
+ 'reciprocalOutput': {
+ 'data': [
+ -0.9890353083610535, 0.21637815237045288, 0.4136715531349182,
+ -0.111921027302742, -0.29863595962524414, -0.11359372735023499,
+ 0.1132974773645401, 0.1521414965391159, 0.15061387419700623,
+ 0.3725407123565674, -0.21611526608467102, -0.14548304677009583,
+ -0.8435884118080139, 1.044625163078308, 46.90310287475586,
+ 2.805375576019287, 0.20713452994823456, 0.761725902557373,
+ 0.12126683443784714, -4.903956413269043, -0.11062023788690567,
+ 0.10057520121335983, -0.10482056438922882, -12.464690208435059
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reciprocal float32 2D tensor',
+ 'graph': {
+ 'inputs': {
+ 'reciprocalInput': {
+ 'data': [
+ -1.0110862255096436, 4.6215386390686035, 2.417376756668091,
+ -8.934871673583984, -3.3485584259033203, -8.803302764892578,
+ 8.826321601867676, 6.572828769683838, 6.639494895935059,
+ 2.6842703819274902, -4.627160549163818, -6.873653411865234,
+ -1.1854121685028076, 0.9572811722755432, 0.02132055163383484,
+ 0.35645851492881775, 4.827780246734619, 1.3128081560134888,
+ 8.246277809143066, -0.2039169818162918, -9.039937019348145,
+ 9.942809104919434, -9.540112495422363, -0.08022662252187729
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reciprocal',
+ 'arguments': [{'input': 'reciprocalInput'}],
+ 'outputs': 'reciprocalOutput'
+ }],
+ 'expectedOutputs': {
+ 'reciprocalOutput': {
+ 'data': [
+ -0.9890353083610535, 0.21637815237045288, 0.4136715531349182,
+ -0.111921027302742, -0.29863595962524414, -0.11359372735023499,
+ 0.1132974773645401, 0.1521414965391159, 0.15061387419700623,
+ 0.3725407123565674, -0.21611526608467102, -0.14548304677009583,
+ -0.8435884118080139, 1.044625163078308, 46.90310287475586,
+ 2.805375576019287, 0.20713452994823456, 0.761725902557373,
+ 0.12126683443784714, -4.903956413269043, -0.11062023788690567,
+ 0.10057520121335983, -0.10482056438922882, -12.464690208435059
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reciprocal float32 3D tensor',
+ 'graph': {
+ 'inputs': {
+ 'reciprocalInput': {
+ 'data': [
+ -1.0110862255096436, 4.6215386390686035, 2.417376756668091,
+ -8.934871673583984, -3.3485584259033203, -8.803302764892578,
+ 8.826321601867676, 6.572828769683838, 6.639494895935059,
+ 2.6842703819274902, -4.627160549163818, -6.873653411865234,
+ -1.1854121685028076, 0.9572811722755432, 0.02132055163383484,
+ 0.35645851492881775, 4.827780246734619, 1.3128081560134888,
+ 8.246277809143066, -0.2039169818162918, -9.039937019348145,
+ 9.942809104919434, -9.540112495422363, -0.08022662252187729
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reciprocal',
+ 'arguments': [{'input': 'reciprocalInput'}],
+ 'outputs': 'reciprocalOutput'
+ }],
+ 'expectedOutputs': {
+ 'reciprocalOutput': {
+ 'data': [
+ -0.9890353083610535, 0.21637815237045288, 0.4136715531349182,
+ -0.111921027302742, -0.29863595962524414, -0.11359372735023499,
+ 0.1132974773645401, 0.1521414965391159, 0.15061387419700623,
+ 0.3725407123565674, -0.21611526608467102, -0.14548304677009583,
+ -0.8435884118080139, 1.044625163078308, 46.90310287475586,
+ 2.805375576019287, 0.20713452994823456, 0.761725902557373,
+ 0.12126683443784714, -4.903956413269043, -0.11062023788690567,
+ 0.10057520121335983, -0.10482056438922882, -12.464690208435059
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reciprocal float32 4D tensor',
+ 'graph': {
+ 'inputs': {
+ 'reciprocalInput': {
+ 'data': [
+ -1.0110862255096436, 4.6215386390686035, 2.417376756668091,
+ -8.934871673583984, -3.3485584259033203, -8.803302764892578,
+ 8.826321601867676, 6.572828769683838, 6.639494895935059,
+ 2.6842703819274902, -4.627160549163818, -6.873653411865234,
+ -1.1854121685028076, 0.9572811722755432, 0.02132055163383484,
+ 0.35645851492881775, 4.827780246734619, 1.3128081560134888,
+ 8.246277809143066, -0.2039169818162918, -9.039937019348145,
+ 9.942809104919434, -9.540112495422363, -0.08022662252187729
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reciprocal',
+ 'arguments': [{'input': 'reciprocalInput'}],
+ 'outputs': 'reciprocalOutput'
+ }],
+ 'expectedOutputs': {
+ 'reciprocalOutput': {
+ 'data': [
+ -0.9890353083610535, 0.21637815237045288, 0.4136715531349182,
+ -0.111921027302742, -0.29863595962524414, -0.11359372735023499,
+ 0.1132974773645401, 0.1521414965391159, 0.15061387419700623,
+ 0.3725407123565674, -0.21611526608467102, -0.14548304677009583,
+ -0.8435884118080139, 1.044625163078308, 46.90310287475586,
+ 2.805375576019287, 0.20713452994823456, 0.761725902557373,
+ 0.12126683443784714, -4.903956413269043, -0.11062023788690567,
+ 0.10057520121335983, -0.10482056438922882, -12.464690208435059
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reciprocal float32 5D tensor',
+ 'graph': {
+ 'inputs': {
+ 'reciprocalInput': {
+ 'data': [
+ -1.0110862255096436, 4.6215386390686035, 2.417376756668091,
+ -8.934871673583984, -3.3485584259033203, -8.803302764892578,
+ 8.826321601867676, 6.572828769683838, 6.639494895935059,
+ 2.6842703819274902, -4.627160549163818, -6.873653411865234,
+ -1.1854121685028076, 0.9572811722755432, 0.02132055163383484,
+ 0.35645851492881775, 4.827780246734619, 1.3128081560134888,
+ 8.246277809143066, -0.2039169818162918, -9.039937019348145,
+ 9.942809104919434, -9.540112495422363, -0.08022662252187729
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 1, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reciprocal',
+ 'arguments': [{'input': 'reciprocalInput'}],
+ 'outputs': 'reciprocalOutput'
+ }],
+ 'expectedOutputs': {
+ 'reciprocalOutput': {
+ 'data': [
+ -0.9890353083610535, 0.21637815237045288, 0.4136715531349182,
+ -0.111921027302742, -0.29863595962524414, -0.11359372735023499,
+ 0.1132974773645401, 0.1521414965391159, 0.15061387419700623,
+ 0.3725407123565674, -0.21611526608467102, -0.14548304677009583,
+ -0.8435884118080139, 1.044625163078308, 46.90310287475586,
+ 2.805375576019287, 0.20713452994823456, 0.761725902557373,
+ 0.12126683443784714, -4.903956413269043, -0.11062023788690567,
+ 0.10057520121335983, -0.10482056438922882, -12.464690208435059
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 1, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ reciprocalTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getReciprocalPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/reduce_l1.https.any.js b/tests/wpt/tests/webnn/conformance_tests/reduce_l1.https.any.js
new file mode 100644
index 00000000000..f15de087cf0
--- /dev/null
+++ b/tests/wpt/tests/webnn/conformance_tests/reduce_l1.https.any.js
@@ -0,0 +1,628 @@
+// META: title=test WebNN API reduction operations
+// META: global=window,dedicatedworker
+// META: variant=?cpu
+// META: variant=?gpu
+// META: variant=?npu
+// META: script=../resources/utils.js
+// META: timeout=long
+
+'use strict';
+
+// https://www.w3.org/TR/webnn/#dom-mlgraphbuilder-reducel1
+// Reduce the input tensor along all dimensions, or along the axes specified in
+// the axes array parameter.
+//
+// dictionary MLReduceOptions {
+// sequence<[EnforceRange] unsigned long> axes;
+// boolean keepDimensions = false;
+// };
+//
+// MLOperand reduceL1(MLOperand input, optional MLReduceOptions options = {});
+
+const getReductionOperatorsPrecisionTolerance = (graphResources) => {
+ return {
+ metricType: 'ULP',
+ value: getReducedElementCount(graphResources),
+ };
+};
+
+const reduceL1Tests = [
+ {
+ 'name': 'reduceL1 float32 0D constant tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceL1Input': {
+ 'data': [5.50882625579834],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceL1',
+ 'arguments': [{'input': 'reduceL1Input'}],
+ 'outputs': 'reduceL1Output'
+ }],
+ 'expectedOutputs': {
+ 'reduceL1Output': {
+ 'data': 5.50882625579834,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceL1 float32 0D constant tensor empty axes',
+ 'graph': {
+ 'inputs': {
+ 'reduceL1Input': {
+ 'data': [5.50882625579834],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceL1',
+ 'arguments': [{'input': 'reduceL1Input'}, {'options': {'axes': []}}],
+ 'outputs': 'reduceL1Output'
+ }],
+ 'expectedOutputs': {
+ 'reduceL1Output': {
+ 'data': 5.50882625579834,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceL1 float32 1D constant tensor all positive default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceL1Input': {
+ 'data': [
+ 5.50882625579834, 50.61575698852539, 1.6773051023483276,
+ 84.2135238647461, 15.664374351501465, 52.89714813232422,
+ 9.125157356262207, 28.937623977661133, 12.567061424255371,
+ 11.39999008178711, 86.91246032714844, 64.51329803466797,
+ 71.2834243774414, 76.34410858154297, 41.53409194946289,
+ 97.5653305053711, 31.803831100463867, 6.089754581451416,
+ 61.70843505859375, 69.76119232177734, 38.919403076171875,
+ 52.288333892822266, 22.31783676147461, 99.0719223022461
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceL1',
+ 'arguments': [{'input': 'reduceL1Input'}],
+ 'outputs': 'reduceL1Output'
+ }],
+ 'expectedOutputs': {
+ 'reduceL1Output': {
+ 'data': 1092.72021484375,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceL1 float32 1D tensor all positive default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceL1Input': {
+ 'data': [
+ 5.50882625579834, 50.61575698852539, 1.6773051023483276,
+ 84.2135238647461, 15.664374351501465, 52.89714813232422,
+ 9.125157356262207, 28.937623977661133, 12.567061424255371,
+ 11.39999008178711, 86.91246032714844, 64.51329803466797,
+ 71.2834243774414, 76.34410858154297, 41.53409194946289,
+ 97.5653305053711, 31.803831100463867, 6.089754581451416,
+ 61.70843505859375, 69.76119232177734, 38.919403076171875,
+ 52.288333892822266, 22.31783676147461, 99.0719223022461
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceL1',
+ 'arguments': [{'input': 'reduceL1Input'}],
+ 'outputs': 'reduceL1Output'
+ }],
+ 'expectedOutputs': {
+ 'reduceL1Output': {
+ 'data': 1092.72021484375,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceL1 float32 1D tensor all negative default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceL1Input': {
+ 'data': [
+ -98.83928680419922, -57.66743850708008, -57.101200103759766,
+ -6.693042278289795, -45.30584716796875, -86.68338775634766,
+ -74.71875, -76.46739959716797, -75.37677001953125,
+ -18.22093963623047, -54.64426803588867, -36.45240020751953,
+ -18.322681427001953, -47.94379425048828, -40.19978332519531,
+ -15.830483436584473, -48.883358001708984, -41.600242614746094,
+ -20.6556339263916, -92.2993392944336, -46.28858184814453,
+ -80.57186126708984, -25.49472999572754, -48.96730041503906
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceL1',
+ 'arguments': [{'input': 'reduceL1Input'}],
+ 'outputs': 'reduceL1Output'
+ }],
+ 'expectedOutputs': {
+ 'reduceL1Output': {
+ 'data': 1215.228515625,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceL1 float32 1D tensor all positive integers default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceL1Input': {
+ 'data': [
+ 18, 29, 35, 36, 4, 76, 41, 18, 53, 29, 25, 94,
+ 26, 1, 3, 68, 39, 25, 87, 30, 39, 75, 76, 66
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceL1',
+ 'arguments': [{'input': 'reduceL1Input'}],
+ 'outputs': 'reduceL1Output'
+ }],
+ 'expectedOutputs': {
+ 'reduceL1Output': {
+ 'data': 993,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceL1 float32 1D tensor all negative integers default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceL1Input': {
+ 'data': [
+ -92, -52, -88, -78, -20, -73, -42, -57, -39, -75, -17, -36,
+ -81, -24, -88, -91, -76, -5, -44, -66, -96, -8, -69, -27
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceL1',
+ 'arguments': [{'input': 'reduceL1Input'}],
+ 'outputs': 'reduceL1Output'
+ }],
+ 'expectedOutputs': {
+ 'reduceL1Output': {
+ 'data': 1344,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceL1 float32 2D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceL1Input': {
+ 'data': [
+ 5.50882625579834, 50.61575698852539, 1.6773051023483276,
+ 84.2135238647461, 15.664374351501465, 52.89714813232422,
+ 9.125157356262207, 28.937623977661133, 12.567061424255371,
+ 11.39999008178711, 86.91246032714844, 64.51329803466797,
+ 71.2834243774414, 76.34410858154297, 41.53409194946289,
+ 97.5653305053711, 31.803831100463867, 6.089754581451416,
+ 61.70843505859375, 69.76119232177734, 38.919403076171875,
+ 52.288333892822266, 22.31783676147461, 99.0719223022461
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceL1',
+ 'arguments': [{'input': 'reduceL1Input'}],
+ 'outputs': 'reduceL1Output'
+ }],
+ 'expectedOutputs': {
+ 'reduceL1Output': {
+ 'data': 1092.72021484375,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceL1 float32 3D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceL1Input': {
+ 'data': [
+ 5.50882625579834, 50.61575698852539, 1.6773051023483276,
+ 84.2135238647461, 15.664374351501465, 52.89714813232422,
+ 9.125157356262207, 28.937623977661133, 12.567061424255371,
+ 11.39999008178711, 86.91246032714844, 64.51329803466797,
+ 71.2834243774414, 76.34410858154297, 41.53409194946289,
+ 97.5653305053711, 31.803831100463867, 6.089754581451416,
+ 61.70843505859375, 69.76119232177734, 38.919403076171875,
+ 52.288333892822266, 22.31783676147461, 99.0719223022461
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceL1',
+ 'arguments': [{'input': 'reduceL1Input'}],
+ 'outputs': 'reduceL1Output'
+ }],
+ 'expectedOutputs': {
+ 'reduceL1Output': {
+ 'data': 1092.72021484375,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceL1 float32 4D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceL1Input': {
+ 'data': [
+ 5.50882625579834, 50.61575698852539, 1.6773051023483276,
+ 84.2135238647461, 15.664374351501465, 52.89714813232422,
+ 9.125157356262207, 28.937623977661133, 12.567061424255371,
+ 11.39999008178711, 86.91246032714844, 64.51329803466797,
+ 71.2834243774414, 76.34410858154297, 41.53409194946289,
+ 97.5653305053711, 31.803831100463867, 6.089754581451416,
+ 61.70843505859375, 69.76119232177734, 38.919403076171875,
+ 52.288333892822266, 22.31783676147461, 99.0719223022461
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceL1',
+ 'arguments': [{'input': 'reduceL1Input'}],
+ 'outputs': 'reduceL1Output'
+ }],
+ 'expectedOutputs': {
+ 'reduceL1Output': {
+ 'data': 1092.72021484375,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceL1 float32 5D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceL1Input': {
+ 'data': [
+ 5.50882625579834, 50.61575698852539, 1.6773051023483276,
+ 84.2135238647461, 15.664374351501465, 52.89714813232422,
+ 9.125157356262207, 28.937623977661133, 12.567061424255371,
+ 11.39999008178711, 86.91246032714844, 64.51329803466797,
+ 71.2834243774414, 76.34410858154297, 41.53409194946289,
+ 97.5653305053711, 31.803831100463867, 6.089754581451416,
+ 61.70843505859375, 69.76119232177734, 38.919403076171875,
+ 52.288333892822266, 22.31783676147461, 99.0719223022461
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 1, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceL1',
+ 'arguments': [{'input': 'reduceL1Input'}],
+ 'outputs': 'reduceL1Output'
+ }],
+ 'expectedOutputs': {
+ 'reduceL1Output': {
+ 'data': 1092.72021484375,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceL1 float32 3D tensor options.axes',
+ 'graph': {
+ 'inputs': {
+ 'reduceL1Input': {
+ 'data': [
+ 5.50882625579834, 50.61575698852539, 1.6773051023483276,
+ 84.2135238647461, 15.664374351501465, 52.89714813232422,
+ 9.125157356262207, 28.937623977661133, 12.567061424255371,
+ 11.39999008178711, 86.91246032714844, 64.51329803466797,
+ 71.2834243774414, 76.34410858154297, 41.53409194946289,
+ 97.5653305053711, 31.803831100463867, 6.089754581451416,
+ 61.70843505859375, 69.76119232177734, 38.919403076171875,
+ 52.288333892822266, 22.31783676147461, 99.0719223022461
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceL1',
+ 'arguments': [{'input': 'reduceL1Input'}, {'options': {'axes': [2]}}],
+ 'outputs': 'reduceL1Output'
+ }],
+ 'expectedOutputs': {
+ 'reduceL1Output': {
+ 'data': [
+ 142.01541137695312, 106.62430572509766, 175.39280700683594,
+ 286.7269592285156, 169.36322021484375, 212.59750366210938
+ ],
+ 'descriptor': {'dimensions': [2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceL1 float32 4D tensor options.axes',
+ 'graph': {
+ 'inputs': {
+ 'reduceL1Input': {
+ 'data': [
+ 5.50882625579834, 50.61575698852539, 1.6773051023483276,
+ 84.2135238647461, 15.664374351501465, 52.89714813232422,
+ 9.125157356262207, 28.937623977661133, 12.567061424255371,
+ 11.39999008178711, 86.91246032714844, 64.51329803466797,
+ 71.2834243774414, 76.34410858154297, 41.53409194946289,
+ 97.5653305053711, 31.803831100463867, 6.089754581451416,
+ 61.70843505859375, 69.76119232177734, 38.919403076171875,
+ 52.288333892822266, 22.31783676147461, 99.0719223022461
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceL1',
+ 'arguments':
+ [{'input': 'reduceL1Input'}, {'options': {'axes': [0, 2]}}],
+ 'outputs': 'reduceL1Output'
+ }],
+ 'expectedOutputs': {
+ 'reduceL1Output': {
+ 'data': [
+ 258.57110595703125, 174.42807006835938, 102.19830322265625,
+ 134.52191162109375, 207.92910766601562, 215.07168579101562
+ ],
+ 'descriptor': {'dimensions': [2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceL1 float32 3D tensor options.keepDimensions=false',
+ 'graph': {
+ 'inputs': {
+ 'reduceL1Input': {
+ 'data': [
+ 5.50882625579834, 50.61575698852539, 1.6773051023483276,
+ 84.2135238647461, 15.664374351501465, 52.89714813232422,
+ 9.125157356262207, 28.937623977661133, 12.567061424255371,
+ 11.39999008178711, 86.91246032714844, 64.51329803466797,
+ 71.2834243774414, 76.34410858154297, 41.53409194946289,
+ 97.5653305053711, 31.803831100463867, 6.089754581451416,
+ 61.70843505859375, 69.76119232177734, 38.919403076171875,
+ 52.288333892822266, 22.31783676147461, 99.0719223022461
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceL1',
+ 'arguments': [
+ {'input': 'reduceL1Input'}, {'options': {'keepDimensions': false}}
+ ],
+ 'outputs': 'reduceL1Output'
+ }],
+ 'expectedOutputs': {
+ 'reduceL1Output': {
+ 'data': 1092.72021484375,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceL1 float32 3D tensor options.keepDimensions=true',
+ 'graph': {
+ 'inputs': {
+ 'reduceL1Input': {
+ 'data': [
+ 5.50882625579834, 50.61575698852539, 1.6773051023483276,
+ 84.2135238647461, 15.664374351501465, 52.89714813232422,
+ 9.125157356262207, 28.937623977661133, 12.567061424255371,
+ 11.39999008178711, 86.91246032714844, 64.51329803466797,
+ 71.2834243774414, 76.34410858154297, 41.53409194946289,
+ 97.5653305053711, 31.803831100463867, 6.089754581451416,
+ 61.70843505859375, 69.76119232177734, 38.919403076171875,
+ 52.288333892822266, 22.31783676147461, 99.0719223022461
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceL1',
+ 'arguments':
+ [{'input': 'reduceL1Input'}, {'options': {'keepDimensions': true}}],
+ 'outputs': 'reduceL1Output'
+ }],
+ 'expectedOutputs': {
+ 'reduceL1Output': {
+ 'data': [1092.72021484375],
+ 'descriptor': {'dimensions': [1, 1, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceL1 float32 4D tensor options.keepDimensions=false',
+ 'graph': {
+ 'inputs': {
+ 'reduceL1Input': {
+ 'data': [
+ 5.50882625579834, 50.61575698852539, 1.6773051023483276,
+ 84.2135238647461, 15.664374351501465, 52.89714813232422,
+ 9.125157356262207, 28.937623977661133, 12.567061424255371,
+ 11.39999008178711, 86.91246032714844, 64.51329803466797,
+ 71.2834243774414, 76.34410858154297, 41.53409194946289,
+ 97.5653305053711, 31.803831100463867, 6.089754581451416,
+ 61.70843505859375, 69.76119232177734, 38.919403076171875,
+ 52.288333892822266, 22.31783676147461, 99.0719223022461
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceL1',
+ 'arguments': [
+ {'input': 'reduceL1Input'}, {'options': {'keepDimensions': false}}
+ ],
+ 'outputs': 'reduceL1Output'
+ }],
+ 'expectedOutputs': {
+ 'reduceL1Output': {
+ 'data': 1092.72021484375,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceL1 float32 4D tensor options.keepDimensions=true',
+ 'graph': {
+ 'inputs': {
+ 'reduceL1Input': {
+ 'data': [
+ 5.50882625579834, 50.61575698852539, 1.6773051023483276,
+ 84.2135238647461, 15.664374351501465, 52.89714813232422,
+ 9.125157356262207, 28.937623977661133, 12.567061424255371,
+ 11.39999008178711, 86.91246032714844, 64.51329803466797,
+ 71.2834243774414, 76.34410858154297, 41.53409194946289,
+ 97.5653305053711, 31.803831100463867, 6.089754581451416,
+ 61.70843505859375, 69.76119232177734, 38.919403076171875,
+ 52.288333892822266, 22.31783676147461, 99.0719223022461
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceL1',
+ 'arguments':
+ [{'input': 'reduceL1Input'}, {'options': {'keepDimensions': true}}],
+ 'outputs': 'reduceL1Output'
+ }],
+ 'expectedOutputs': {
+ 'reduceL1Output': {
+ 'data': [1092.72021484375],
+ 'descriptor': {'dimensions': [1, 1, 1, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'reduceL1 float32 4D tensor options.axes with options.keepDimensions=false',
+ 'graph': {
+ 'inputs': {
+ 'reduceL1Input': {
+ 'data': [
+ 5.50882625579834, 50.61575698852539, 1.6773051023483276,
+ 84.2135238647461, 15.664374351501465, 52.89714813232422,
+ 9.125157356262207, 28.937623977661133, 12.567061424255371,
+ 11.39999008178711, 86.91246032714844, 64.51329803466797,
+ 71.2834243774414, 76.34410858154297, 41.53409194946289,
+ 97.5653305053711, 31.803831100463867, 6.089754581451416,
+ 61.70843505859375, 69.76119232177734, 38.919403076171875,
+ 52.288333892822266, 22.31783676147461, 99.0719223022461
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceL1',
+ 'arguments': [
+ {'input': 'reduceL1Input'},
+ {'options': {'axes': [1, 3], 'keepDimensions': false}}
+ ],
+ 'outputs': 'reduceL1Output'
+ }],
+ 'expectedOutputs': {
+ 'reduceL1Output': {
+ 'data': [
+ 108.43173217773438, 315.6007995605469, 359.5506591796875,
+ 309.13702392578125
+ ],
+ 'descriptor': {'dimensions': [2, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'reduceL1 float32 4D tensor options.axes with options.keepDimensions=true',
+ 'graph': {
+ 'inputs': {
+ 'reduceL1Input': {
+ 'data': [
+ 5.50882625579834, 50.61575698852539, 1.6773051023483276,
+ 84.2135238647461, 15.664374351501465, 52.89714813232422,
+ 9.125157356262207, 28.937623977661133, 12.567061424255371,
+ 11.39999008178711, 86.91246032714844, 64.51329803466797,
+ 71.2834243774414, 76.34410858154297, 41.53409194946289,
+ 97.5653305053711, 31.803831100463867, 6.089754581451416,
+ 61.70843505859375, 69.76119232177734, 38.919403076171875,
+ 52.288333892822266, 22.31783676147461, 99.0719223022461
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceL1',
+ 'arguments': [
+ {'input': 'reduceL1Input'},
+ {'options': {'axes': [1, 3], 'keepDimensions': true}}
+ ],
+ 'outputs': 'reduceL1Output'
+ }],
+ 'expectedOutputs': {
+ 'reduceL1Output': {
+ 'data': [
+ 108.43173217773438, 315.6007995605469, 359.5506591796875,
+ 309.13702392578125
+ ],
+ 'descriptor': {'dimensions': [2, 1, 2, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ reduceL1Tests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getReductionOperatorsPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/reduce_l2.https.any.js b/tests/wpt/tests/webnn/conformance_tests/reduce_l2.https.any.js
new file mode 100644
index 00000000000..7c1d4543462
--- /dev/null
+++ b/tests/wpt/tests/webnn/conformance_tests/reduce_l2.https.any.js
@@ -0,0 +1,627 @@
+// META: title=test WebNN API reduction operations
+// META: global=window,dedicatedworker
+// META: variant=?cpu
+// META: variant=?gpu
+// META: variant=?npu
+// META: script=../resources/utils.js
+// META: timeout=long
+
+'use strict';
+
+// https://www.w3.org/TR/webnn/#dom-mlgraphbuilder-reducel2
+// Reduce the input tensor along all dimensions, or along the axes specified in
+// the axes array parameter.
+//
+// dictionary MLReduceOptions {
+// sequence<[EnforceRange] unsigned long> axes;
+// boolean keepDimensions = false;
+// };
+//
+// MLOperand reduceL2(MLOperand input, optional MLReduceOptions options = {});
+
+const getReductionOperatorsPrecisionTolerance = (graphResources) => {
+ return {
+ metricType: 'ULP',
+ value: getReducedElementCount(graphResources) * 2 + 1,
+ };
+};
+
+const reduceL2Tests = [
+ // reduceL2 tests
+ {
+ 'name': 'reduceL2 float32 0D constant tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceL2Input': {
+ 'data': [4.860228061676025],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceL2',
+ 'arguments': [{'input': 'reduceL2Input'}],
+ 'outputs': 'reduceL2Output'
+ }],
+ 'expectedOutputs': {
+ 'reduceL2Output': {
+ 'data': 4.860228061676025,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceL2 float32 0D constant tensor empty axes',
+ 'graph': {
+ 'inputs': {
+ 'reduceL2Input': {
+ 'data': [4.860228061676025],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceL2',
+ 'arguments': [{'input': 'reduceL2Input'}, {'options': {'axes': []}}],
+ 'outputs': 'reduceL2Output'
+ }],
+ 'expectedOutputs': {
+ 'reduceL2Output': {
+ 'data': 4.860228061676025,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceL2 float32 1D constant tensor all positive default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceL2Input': {
+ 'data': [
+ 4.860228061676025, 88.23184204101562, 54.489688873291016,
+ 64.75027465820312, 6.855991363525391, 91.39871215820312,
+ 41.88857650756836, 73.65444946289062, 35.31573486328125,
+ 48.345428466796875, 82.39190673828125, 77.86200714111328,
+ 93.31141662597656, 62.48688507080078, 60.29290008544922,
+ 13.230599403381348, 20.535987854003906, 53.45161819458008,
+ 11.320085525512695, 64.75763702392578, 43.6589469909668,
+ 0.8374307155609131, 0.6848266124725342, 33.504703521728516
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceL2',
+ 'arguments': [{'input': 'reduceL2Input'}],
+ 'outputs': 'reduceL2Output'
+ }],
+ 'expectedOutputs': {
+ 'reduceL2Output': {
+ 'data': 272.0996398925781,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceL2 float32 1D tensor all positive default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceL2Input': {
+ 'data': [
+ 4.860228061676025, 88.23184204101562, 54.489688873291016,
+ 64.75027465820312, 6.855991363525391, 91.39871215820312,
+ 41.88857650756836, 73.65444946289062, 35.31573486328125,
+ 48.345428466796875, 82.39190673828125, 77.86200714111328,
+ 93.31141662597656, 62.48688507080078, 60.29290008544922,
+ 13.230599403381348, 20.535987854003906, 53.45161819458008,
+ 11.320085525512695, 64.75763702392578, 43.6589469909668,
+ 0.8374307155609131, 0.6848266124725342, 33.504703521728516
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceL2',
+ 'arguments': [{'input': 'reduceL2Input'}],
+ 'outputs': 'reduceL2Output'
+ }],
+ 'expectedOutputs': {
+ 'reduceL2Output': {
+ 'data': 272.0996398925781,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceL2 float32 1D tensor all negative default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceL2Input': {
+ 'data': [
+ -66.80043029785156, -53.00004959106445, -59.58587646484375,
+ -46.14392852783203, -49.60614013671875, -12.832738876342773,
+ -88.05061340332031, -75.56246185302734, -50.76777648925781,
+ -36.96630096435547, -26.344043731689453, -58.90546417236328,
+ -94.28752899169922, -22.7802791595459, -84.3487777709961,
+ -60.47734451293945, -41.455806732177734, -92.84781646728516,
+ -85.05448913574219, -30.235260009765625, -47.33808135986328,
+ -25.268428802490234, -78.11959075927734, -28.330944061279297
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceL2',
+ 'arguments': [{'input': 'reduceL2Input'}],
+ 'outputs': 'reduceL2Output'
+ }],
+ 'expectedOutputs': {
+ 'reduceL2Output': {
+ 'data': 292.57574462890625,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceL2 float32 1D tensor all positive integers default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceL2Input': {
+ 'data': [
+ 4, 29, 8, 56, 42, 78, 89, 64, 56, 81, 85, 18,
+ 6, 39, 35, 63, 87, 50, 81, 89, 5, 8, 37, 37
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceL2',
+ 'arguments': [{'input': 'reduceL2Input'}],
+ 'outputs': 'reduceL2Output'
+ }],
+ 'expectedOutputs': {
+ 'reduceL2Output': {
+ 'data': 274.4029846191406,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceL2 float32 1D tensor all negative integers default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceL2Input': {
+ 'data': [
+ -70, -78, -65, -77, -25, -47, -63, -67, -66, -15, -28, -75,
+ -88, -54, -13, -27, -5, -18, -68, -71, -50, -56, -99, -99
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceL2',
+ 'arguments': [{'input': 'reduceL2Input'}],
+ 'outputs': 'reduceL2Output'
+ }],
+ 'expectedOutputs': {
+ 'reduceL2Output': {
+ 'data': 300.3830871582031,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceL2 float32 2D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceL2Input': {
+ 'data': [
+ 4.860228061676025, 88.23184204101562, 54.489688873291016,
+ 64.75027465820312, 6.855991363525391, 91.39871215820312,
+ 41.88857650756836, 73.65444946289062, 35.31573486328125,
+ 48.345428466796875, 82.39190673828125, 77.86200714111328,
+ 93.31141662597656, 62.48688507080078, 60.29290008544922,
+ 13.230599403381348, 20.535987854003906, 53.45161819458008,
+ 11.320085525512695, 64.75763702392578, 43.6589469909668,
+ 0.8374307155609131, 0.6848266124725342, 33.504703521728516
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceL2',
+ 'arguments': [{'input': 'reduceL2Input'}],
+ 'outputs': 'reduceL2Output'
+ }],
+ 'expectedOutputs': {
+ 'reduceL2Output': {
+ 'data': 272.0996398925781,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceL2 float32 3D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceL2Input': {
+ 'data': [
+ 4.860228061676025, 88.23184204101562, 54.489688873291016,
+ 64.75027465820312, 6.855991363525391, 91.39871215820312,
+ 41.88857650756836, 73.65444946289062, 35.31573486328125,
+ 48.345428466796875, 82.39190673828125, 77.86200714111328,
+ 93.31141662597656, 62.48688507080078, 60.29290008544922,
+ 13.230599403381348, 20.535987854003906, 53.45161819458008,
+ 11.320085525512695, 64.75763702392578, 43.6589469909668,
+ 0.8374307155609131, 0.6848266124725342, 33.504703521728516
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceL2',
+ 'arguments': [{'input': 'reduceL2Input'}],
+ 'outputs': 'reduceL2Output'
+ }],
+ 'expectedOutputs': {
+ 'reduceL2Output': {
+ 'data': 272.0996398925781,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceL2 float32 4D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceL2Input': {
+ 'data': [
+ 4.860228061676025, 88.23184204101562, 54.489688873291016,
+ 64.75027465820312, 6.855991363525391, 91.39871215820312,
+ 41.88857650756836, 73.65444946289062, 35.31573486328125,
+ 48.345428466796875, 82.39190673828125, 77.86200714111328,
+ 93.31141662597656, 62.48688507080078, 60.29290008544922,
+ 13.230599403381348, 20.535987854003906, 53.45161819458008,
+ 11.320085525512695, 64.75763702392578, 43.6589469909668,
+ 0.8374307155609131, 0.6848266124725342, 33.504703521728516
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceL2',
+ 'arguments': [{'input': 'reduceL2Input'}],
+ 'outputs': 'reduceL2Output'
+ }],
+ 'expectedOutputs': {
+ 'reduceL2Output': {
+ 'data': 272.0996398925781,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceL2 float32 5D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceL2Input': {
+ 'data': [
+ 4.860228061676025, 88.23184204101562, 54.489688873291016,
+ 64.75027465820312, 6.855991363525391, 91.39871215820312,
+ 41.88857650756836, 73.65444946289062, 35.31573486328125,
+ 48.345428466796875, 82.39190673828125, 77.86200714111328,
+ 93.31141662597656, 62.48688507080078, 60.29290008544922,
+ 13.230599403381348, 20.535987854003906, 53.45161819458008,
+ 11.320085525512695, 64.75763702392578, 43.6589469909668,
+ 0.8374307155609131, 0.6848266124725342, 33.504703521728516
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 1, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceL2',
+ 'arguments': [{'input': 'reduceL2Input'}],
+ 'outputs': 'reduceL2Output'
+ }],
+ 'expectedOutputs': {
+ 'reduceL2Output': {
+ 'data': 272.0996398925781,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceL2 float32 3D tensor options.axes',
+ 'graph': {
+ 'inputs': {
+ 'reduceL2Input': {
+ 'data': [
+ 4.860228061676025, 88.23184204101562, 54.489688873291016,
+ 64.75027465820312, 6.855991363525391, 91.39871215820312,
+ 41.88857650756836, 73.65444946289062, 35.31573486328125,
+ 48.345428466796875, 82.39190673828125, 77.86200714111328,
+ 93.31141662597656, 62.48688507080078, 60.29290008544922,
+ 13.230599403381348, 20.535987854003906, 53.45161819458008,
+ 11.320085525512695, 64.75763702392578, 43.6589469909668,
+ 0.8374307155609131, 0.6848266124725342, 33.504703521728516
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceL2',
+ 'arguments': [{'input': 'reduceL2Input'}, {'options': {'axes': [2]}}],
+ 'outputs': 'reduceL2Output'
+ }],
+ 'expectedOutputs': {
+ 'reduceL2Output': {
+ 'data': [
+ 122.352783203125, 124.8213119506836, 128.20062255859375,
+ 128.14801025390625, 87.18083953857422, 55.043975830078125
+ ],
+ 'descriptor': {'dimensions': [2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceL2 float32 4D tensor options.axes',
+ 'graph': {
+ 'inputs': {
+ 'reduceL2Input': {
+ 'data': [
+ 4.860228061676025, 88.23184204101562, 54.489688873291016,
+ 64.75027465820312, 6.855991363525391, 91.39871215820312,
+ 41.88857650756836, 73.65444946289062, 35.31573486328125,
+ 48.345428466796875, 82.39190673828125, 77.86200714111328,
+ 93.31141662597656, 62.48688507080078, 60.29290008544922,
+ 13.230599403381348, 20.535987854003906, 53.45161819458008,
+ 11.320085525512695, 64.75763702392578, 43.6589469909668,
+ 0.8374307155609131, 0.6848266124725342, 33.504703521728516
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceL2',
+ 'arguments':
+ [{'input': 'reduceL2Input'}, {'options': {'axes': [0, 2]}}],
+ 'outputs': 'reduceL2Output'
+ }],
+ 'expectedOutputs': {
+ 'reduceL2Output': {
+ 'data': [
+ 114.44775390625, 110.26422882080078, 133.47344970703125,
+ 64.96752166748047, 128.0914764404297, 101.677734375
+ ],
+ 'descriptor': {'dimensions': [2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceL2 float32 3D tensor options.keepDimensions=false',
+ 'graph': {
+ 'inputs': {
+ 'reduceL2Input': {
+ 'data': [
+ 4.860228061676025, 88.23184204101562, 54.489688873291016,
+ 64.75027465820312, 6.855991363525391, 91.39871215820312,
+ 41.88857650756836, 73.65444946289062, 35.31573486328125,
+ 48.345428466796875, 82.39190673828125, 77.86200714111328,
+ 93.31141662597656, 62.48688507080078, 60.29290008544922,
+ 13.230599403381348, 20.535987854003906, 53.45161819458008,
+ 11.320085525512695, 64.75763702392578, 43.6589469909668,
+ 0.8374307155609131, 0.6848266124725342, 33.504703521728516
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceL2',
+ 'arguments': [
+ {'input': 'reduceL2Input'}, {'options': {'keepDimensions': false}}
+ ],
+ 'outputs': 'reduceL2Output'
+ }],
+ 'expectedOutputs': {
+ 'reduceL2Output': {
+ 'data': 272.0996398925781,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceL2 float32 3D tensor options.keepDimensions=true',
+ 'graph': {
+ 'inputs': {
+ 'reduceL2Input': {
+ 'data': [
+ 4.860228061676025, 88.23184204101562, 54.489688873291016,
+ 64.75027465820312, 6.855991363525391, 91.39871215820312,
+ 41.88857650756836, 73.65444946289062, 35.31573486328125,
+ 48.345428466796875, 82.39190673828125, 77.86200714111328,
+ 93.31141662597656, 62.48688507080078, 60.29290008544922,
+ 13.230599403381348, 20.535987854003906, 53.45161819458008,
+ 11.320085525512695, 64.75763702392578, 43.6589469909668,
+ 0.8374307155609131, 0.6848266124725342, 33.504703521728516
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceL2',
+ 'arguments':
+ [{'input': 'reduceL2Input'}, {'options': {'keepDimensions': true}}],
+ 'outputs': 'reduceL2Output'
+ }],
+ 'expectedOutputs': {
+ 'reduceL2Output': {
+ 'data': [272.0996398925781],
+ 'descriptor': {'dimensions': [1, 1, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceL2 float32 4D tensor options.keepDimensions=false',
+ 'graph': {
+ 'inputs': {
+ 'reduceL2Input': {
+ 'data': [
+ 4.860228061676025, 88.23184204101562, 54.489688873291016,
+ 64.75027465820312, 6.855991363525391, 91.39871215820312,
+ 41.88857650756836, 73.65444946289062, 35.31573486328125,
+ 48.345428466796875, 82.39190673828125, 77.86200714111328,
+ 93.31141662597656, 62.48688507080078, 60.29290008544922,
+ 13.230599403381348, 20.535987854003906, 53.45161819458008,
+ 11.320085525512695, 64.75763702392578, 43.6589469909668,
+ 0.8374307155609131, 0.6848266124725342, 33.504703521728516
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceL2',
+ 'arguments': [
+ {'input': 'reduceL2Input'}, {'options': {'keepDimensions': false}}
+ ],
+ 'outputs': 'reduceL2Output'
+ }],
+ 'expectedOutputs': {
+ 'reduceL2Output': {
+ 'data': 272.0996398925781,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceL2 float32 4D tensor options.keepDimensions=true',
+ 'graph': {
+ 'inputs': {
+ 'reduceL2Input': {
+ 'data': [
+ 4.860228061676025, 88.23184204101562, 54.489688873291016,
+ 64.75027465820312, 6.855991363525391, 91.39871215820312,
+ 41.88857650756836, 73.65444946289062, 35.31573486328125,
+ 48.345428466796875, 82.39190673828125, 77.86200714111328,
+ 93.31141662597656, 62.48688507080078, 60.29290008544922,
+ 13.230599403381348, 20.535987854003906, 53.45161819458008,
+ 11.320085525512695, 64.75763702392578, 43.6589469909668,
+ 0.8374307155609131, 0.6848266124725342, 33.504703521728516
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceL2',
+ 'arguments':
+ [{'input': 'reduceL2Input'}, {'options': {'keepDimensions': true}}],
+ 'outputs': 'reduceL2Output'
+ }],
+ 'expectedOutputs': {
+ 'reduceL2Output': {
+ 'data': [272.0996398925781],
+ 'descriptor': {'dimensions': [1, 1, 1, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'reduceL2 float32 4D tensor options.axes with options.keepDimensions=false',
+ 'graph': {
+ 'inputs': {
+ 'reduceL2Input': {
+ 'data': [
+ 4.860228061676025, 88.23184204101562, 54.489688873291016,
+ 64.75027465820312, 6.855991363525391, 91.39871215820312,
+ 41.88857650756836, 73.65444946289062, 35.31573486328125,
+ 48.345428466796875, 82.39190673828125, 77.86200714111328,
+ 93.31141662597656, 62.48688507080078, 60.29290008544922,
+ 13.230599403381348, 20.535987854003906, 53.45161819458008,
+ 11.320085525512695, 64.75763702392578, 43.6589469909668,
+ 0.8374307155609131, 0.6848266124725342, 33.504703521728516
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceL2',
+ 'arguments': [
+ {'input': 'reduceL2Input'},
+ {'options': {'axes': [1, 3], 'keepDimensions': false}}
+ ],
+ 'outputs': 'reduceL2Output'
+ }],
+ 'expectedOutputs': {
+ 'reduceL2Output': {
+ 'data': [
+ 138.580078125, 166.67791748046875, 149.91552734375, 67.6578598022461
+ ],
+ 'descriptor': {'dimensions': [2, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'reduceL2 float32 4D tensor options.axes with options.keepDimensions=true',
+ 'graph': {
+ 'inputs': {
+ 'reduceL2Input': {
+ 'data': [
+ 4.860228061676025, 88.23184204101562, 54.489688873291016,
+ 64.75027465820312, 6.855991363525391, 91.39871215820312,
+ 41.88857650756836, 73.65444946289062, 35.31573486328125,
+ 48.345428466796875, 82.39190673828125, 77.86200714111328,
+ 93.31141662597656, 62.48688507080078, 60.29290008544922,
+ 13.230599403381348, 20.535987854003906, 53.45161819458008,
+ 11.320085525512695, 64.75763702392578, 43.6589469909668,
+ 0.8374307155609131, 0.6848266124725342, 33.504703521728516
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceL2',
+ 'arguments': [
+ {'input': 'reduceL2Input'},
+ {'options': {'axes': [1, 3], 'keepDimensions': true}}
+ ],
+ 'outputs': 'reduceL2Output'
+ }],
+ 'expectedOutputs': {
+ 'reduceL2Output': {
+ 'data': [
+ 138.580078125, 166.67791748046875, 149.91552734375, 67.6578598022461
+ ],
+ 'descriptor': {'dimensions': [2, 1, 2, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ reduceL2Tests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getReductionOperatorsPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/reduce_log_sum.https.any.js b/tests/wpt/tests/webnn/conformance_tests/reduce_log_sum.https.any.js
new file mode 100644
index 00000000000..47a88732ded
--- /dev/null
+++ b/tests/wpt/tests/webnn/conformance_tests/reduce_log_sum.https.any.js
@@ -0,0 +1,579 @@
+// META: title=test WebNN API reduction operations
+// META: global=window,dedicatedworker
+// META: variant=?cpu
+// META: variant=?gpu
+// META: variant=?npu
+// META: script=../resources/utils.js
+// META: timeout=long
+
+'use strict';
+
+// https://www.w3.org/TR/webnn/#dom-mlgraphbuilder-reducelogsum
+// Reduce the input tensor along all dimensions, or along the axes specified in
+// the axes array parameter.
+//
+// dictionary MLReduceOptions {
+// sequence<[EnforceRange] unsigned long> axes;
+// boolean keepDimensions = false;
+// };
+//
+// MLOperand reduceLogSum(MLOperand input, optional MLReduceOptions options
+// = {});
+
+const getReductionOperatorsPrecisionTolerance = (graphResources) => {
+ return {
+ metricType: 'ULP',
+ value: getReducedElementCount(graphResources) + 18,
+ };
+};
+
+const reduceLogSumTests = [
+ {
+ 'name': 'reduceLogSum float32 0D constant tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceLogSumInput': {
+ 'data': [64.54827117919922],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceLogSum',
+ 'arguments': [{'input': 'reduceLogSumInput'}],
+ 'outputs': 'reduceLogSumOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceLogSumOutput': {
+ 'data': 4.167413234710693,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceLogSum float32 0D constant tensor empty axes',
+ 'graph': {
+ 'inputs': {
+ 'reduceLogSumInput': {
+ 'data': [64.54827117919922],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceLogSum',
+ 'arguments':
+ [{'input': 'reduceLogSumInput'}, {'options': {'axes': []}}],
+ 'outputs': 'reduceLogSumOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceLogSumOutput': {
+ 'data': 4.167413234710693,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'reduceLogSum float32 1D constant tensor all non-negative default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceLogSumInput': {
+ 'data': [
+ 64.54827117919922, 97.87423706054688, 26.529027938842773,
+ 79.79046630859375, 50.394989013671875, 14.578407287597656,
+ 20.866817474365234, 32.43873596191406, 64.91233825683594,
+ 71.54029846191406, 11.137068748474121, 55.079307556152344,
+ 43.791351318359375, 13.831947326660156, 97.39019775390625,
+ 35.507755279541016, 52.27586364746094, 82.83865356445312,
+ 8.568099021911621, 0.8337112069129944, 69.23146057128906,
+ 3.8541641235351562, 70.5567398071289, 71.99264526367188
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceLogSum',
+ 'arguments': [{'input': 'reduceLogSumInput'}],
+ 'outputs': 'reduceLogSumOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceLogSumOutput': {
+ 'data': 7.039101600646973,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceLogSum float32 1D tensor all non-negative default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceLogSumInput': {
+ 'data': [
+ 64.54827117919922, 97.87423706054688, 26.529027938842773,
+ 79.79046630859375, 50.394989013671875, 14.578407287597656,
+ 20.866817474365234, 32.43873596191406, 64.91233825683594,
+ 71.54029846191406, 11.137068748474121, 55.079307556152344,
+ 43.791351318359375, 13.831947326660156, 97.39019775390625,
+ 35.507755279541016, 52.27586364746094, 82.83865356445312,
+ 8.568099021911621, 0.8337112069129944, 69.23146057128906,
+ 3.8541641235351562, 70.5567398071289, 71.99264526367188
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceLogSum',
+ 'arguments': [{'input': 'reduceLogSumInput'}],
+ 'outputs': 'reduceLogSumOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceLogSumOutput': {
+ 'data': 7.039101600646973,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'reduceLogSum float32 1D tensor all non-negative integers default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceLogSumInput': {
+ 'data': [
+ 63, 82, 49, 23, 98, 67, 15, 9, 89, 7, 69, 61,
+ 47, 50, 41, 39, 58, 52, 35, 83, 81, 7, 34, 9
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceLogSum',
+ 'arguments': [{'input': 'reduceLogSumInput'}],
+ 'outputs': 'reduceLogSumOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceLogSumOutput': {
+ 'data': 7.063048362731934,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceLogSum float32 2D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceLogSumInput': {
+ 'data': [
+ 64.54827117919922, 97.87423706054688, 26.529027938842773,
+ 79.79046630859375, 50.394989013671875, 14.578407287597656,
+ 20.866817474365234, 32.43873596191406, 64.91233825683594,
+ 71.54029846191406, 11.137068748474121, 55.079307556152344,
+ 43.791351318359375, 13.831947326660156, 97.39019775390625,
+ 35.507755279541016, 52.27586364746094, 82.83865356445312,
+ 8.568099021911621, 0.8337112069129944, 69.23146057128906,
+ 3.8541641235351562, 70.5567398071289, 71.99264526367188
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceLogSum',
+ 'arguments': [{'input': 'reduceLogSumInput'}],
+ 'outputs': 'reduceLogSumOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceLogSumOutput': {
+ 'data': 7.039101600646973,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceLogSum float32 3D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceLogSumInput': {
+ 'data': [
+ 64.54827117919922, 97.87423706054688, 26.529027938842773,
+ 79.79046630859375, 50.394989013671875, 14.578407287597656,
+ 20.866817474365234, 32.43873596191406, 64.91233825683594,
+ 71.54029846191406, 11.137068748474121, 55.079307556152344,
+ 43.791351318359375, 13.831947326660156, 97.39019775390625,
+ 35.507755279541016, 52.27586364746094, 82.83865356445312,
+ 8.568099021911621, 0.8337112069129944, 69.23146057128906,
+ 3.8541641235351562, 70.5567398071289, 71.99264526367188
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceLogSum',
+ 'arguments': [{'input': 'reduceLogSumInput'}],
+ 'outputs': 'reduceLogSumOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceLogSumOutput': {
+ 'data': 7.039101600646973,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceLogSum float32 4D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceLogSumInput': {
+ 'data': [
+ 64.54827117919922, 97.87423706054688, 26.529027938842773,
+ 79.79046630859375, 50.394989013671875, 14.578407287597656,
+ 20.866817474365234, 32.43873596191406, 64.91233825683594,
+ 71.54029846191406, 11.137068748474121, 55.079307556152344,
+ 43.791351318359375, 13.831947326660156, 97.39019775390625,
+ 35.507755279541016, 52.27586364746094, 82.83865356445312,
+ 8.568099021911621, 0.8337112069129944, 69.23146057128906,
+ 3.8541641235351562, 70.5567398071289, 71.99264526367188
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceLogSum',
+ 'arguments': [{'input': 'reduceLogSumInput'}],
+ 'outputs': 'reduceLogSumOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceLogSumOutput': {
+ 'data': 7.039101600646973,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceLogSum float32 5D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceLogSumInput': {
+ 'data': [
+ 64.54827117919922, 97.87423706054688, 26.529027938842773,
+ 79.79046630859375, 50.394989013671875, 14.578407287597656,
+ 20.866817474365234, 32.43873596191406, 64.91233825683594,
+ 71.54029846191406, 11.137068748474121, 55.079307556152344,
+ 43.791351318359375, 13.831947326660156, 97.39019775390625,
+ 35.507755279541016, 52.27586364746094, 82.83865356445312,
+ 8.568099021911621, 0.8337112069129944, 69.23146057128906,
+ 3.8541641235351562, 70.5567398071289, 71.99264526367188
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 1, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceLogSum',
+ 'arguments': [{'input': 'reduceLogSumInput'}],
+ 'outputs': 'reduceLogSumOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceLogSumOutput': {
+ 'data': 7.039101600646973,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceLogSum float32 3D tensor options.axes',
+ 'graph': {
+ 'inputs': {
+ 'reduceLogSumInput': {
+ 'data': [
+ 64.54827117919922, 97.87423706054688, 26.529027938842773,
+ 79.79046630859375, 50.394989013671875, 14.578407287597656,
+ 20.866817474365234, 32.43873596191406, 64.91233825683594,
+ 71.54029846191406, 11.137068748474121, 55.079307556152344,
+ 43.791351318359375, 13.831947326660156, 97.39019775390625,
+ 35.507755279541016, 52.27586364746094, 82.83865356445312,
+ 8.568099021911621, 0.8337112069129944, 69.23146057128906,
+ 3.8541641235351562, 70.5567398071289, 71.99264526367188
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceLogSum',
+ 'arguments':
+ [{'input': 'reduceLogSumInput'}, {'options': {'axes': [2]}}],
+ 'outputs': 'reduceLogSumOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceLogSumOutput': {
+ 'data': [
+ 5.593751907348633, 4.773046016693115, 5.3115739822387695,
+ 5.2497639656066895, 4.973392486572266, 5.373587131500244
+ ],
+ 'descriptor': {'dimensions': [2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceLogSum float32 4D tensor options.axes',
+ 'graph': {
+ 'inputs': {
+ 'reduceLogSumInput': {
+ 'data': [
+ 64.54827117919922, 97.87423706054688, 26.529027938842773,
+ 79.79046630859375, 50.394989013671875, 14.578407287597656,
+ 20.866817474365234, 32.43873596191406, 64.91233825683594,
+ 71.54029846191406, 11.137068748474121, 55.079307556152344,
+ 43.791351318359375, 13.831947326660156, 97.39019775390625,
+ 35.507755279541016, 52.27586364746094, 82.83865356445312,
+ 8.568099021911621, 0.8337112069129944, 69.23146057128906,
+ 3.8541641235351562, 70.5567398071289, 71.99264526367188
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceLogSum',
+ 'arguments':
+ [{'input': 'reduceLogSumInput'}, {'options': {'axes': [0, 2]}}],
+ 'outputs': 'reduceLogSumOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceLogSumOutput': {
+ 'data': [
+ 5.410027980804443, 5.367736339569092, 5.399682998657227,
+ 4.652334213256836, 4.744638442993164, 5.565346717834473
+ ],
+ 'descriptor': {'dimensions': [2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceLogSum float32 3D tensor options.keepDimensions=false',
+ 'graph': {
+ 'inputs': {
+ 'reduceLogSumInput': {
+ 'data': [
+ 64.54827117919922, 97.87423706054688, 26.529027938842773,
+ 79.79046630859375, 50.394989013671875, 14.578407287597656,
+ 20.866817474365234, 32.43873596191406, 64.91233825683594,
+ 71.54029846191406, 11.137068748474121, 55.079307556152344,
+ 43.791351318359375, 13.831947326660156, 97.39019775390625,
+ 35.507755279541016, 52.27586364746094, 82.83865356445312,
+ 8.568099021911621, 0.8337112069129944, 69.23146057128906,
+ 3.8541641235351562, 70.5567398071289, 71.99264526367188
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceLogSum',
+ 'arguments': [
+ {'input': 'reduceLogSumInput'}, {'options': {'keepDimensions': false}}
+ ],
+ 'outputs': 'reduceLogSumOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceLogSumOutput': {
+ 'data': 7.039101600646973,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceLogSum float32 3D tensor options.keepDimensions=true',
+ 'graph': {
+ 'inputs': {
+ 'reduceLogSumInput': {
+ 'data': [
+ 64.54827117919922, 97.87423706054688, 26.529027938842773,
+ 79.79046630859375, 50.394989013671875, 14.578407287597656,
+ 20.866817474365234, 32.43873596191406, 64.91233825683594,
+ 71.54029846191406, 11.137068748474121, 55.079307556152344,
+ 43.791351318359375, 13.831947326660156, 97.39019775390625,
+ 35.507755279541016, 52.27586364746094, 82.83865356445312,
+ 8.568099021911621, 0.8337112069129944, 69.23146057128906,
+ 3.8541641235351562, 70.5567398071289, 71.99264526367188
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceLogSum',
+ 'arguments': [
+ {'input': 'reduceLogSumInput'}, {'options': {'keepDimensions': true}}
+ ],
+ 'outputs': 'reduceLogSumOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceLogSumOutput': {
+ 'data': [7.039101600646973],
+ 'descriptor': {'dimensions': [1, 1, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceLogSum float32 4D tensor options.keepDimensions=false',
+ 'graph': {
+ 'inputs': {
+ 'reduceLogSumInput': {
+ 'data': [
+ 64.54827117919922, 97.87423706054688, 26.529027938842773,
+ 79.79046630859375, 50.394989013671875, 14.578407287597656,
+ 20.866817474365234, 32.43873596191406, 64.91233825683594,
+ 71.54029846191406, 11.137068748474121, 55.079307556152344,
+ 43.791351318359375, 13.831947326660156, 97.39019775390625,
+ 35.507755279541016, 52.27586364746094, 82.83865356445312,
+ 8.568099021911621, 0.8337112069129944, 69.23146057128906,
+ 3.8541641235351562, 70.5567398071289, 71.99264526367188
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceLogSum',
+ 'arguments': [
+ {'input': 'reduceLogSumInput'}, {'options': {'keepDimensions': false}}
+ ],
+ 'outputs': 'reduceLogSumOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceLogSumOutput': {
+ 'data': 7.039101600646973,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceLogSum float32 4D tensor options.keepDimensions=true',
+ 'graph': {
+ 'inputs': {
+ 'reduceLogSumInput': {
+ 'data': [
+ 64.54827117919922, 97.87423706054688, 26.529027938842773,
+ 79.79046630859375, 50.394989013671875, 14.578407287597656,
+ 20.866817474365234, 32.43873596191406, 64.91233825683594,
+ 71.54029846191406, 11.137068748474121, 55.079307556152344,
+ 43.791351318359375, 13.831947326660156, 97.39019775390625,
+ 35.507755279541016, 52.27586364746094, 82.83865356445312,
+ 8.568099021911621, 0.8337112069129944, 69.23146057128906,
+ 3.8541641235351562, 70.5567398071289, 71.99264526367188
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceLogSum',
+ 'arguments': [
+ {'input': 'reduceLogSumInput'}, {'options': {'keepDimensions': true}}
+ ],
+ 'outputs': 'reduceLogSumOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceLogSumOutput': {
+ 'data': [7.039101600646973],
+ 'descriptor': {'dimensions': [1, 1, 1, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'reduceLogSum float32 4D tensor options.axes with options.keepDimensions=false',
+ 'graph': {
+ 'inputs': {
+ 'reduceLogSumInput': {
+ 'data': [
+ 64.54827117919922, 97.87423706054688, 26.529027938842773,
+ 79.79046630859375, 50.394989013671875, 14.578407287597656,
+ 20.866817474365234, 32.43873596191406, 64.91233825683594,
+ 71.54029846191406, 11.137068748474121, 55.079307556152344,
+ 43.791351318359375, 13.831947326660156, 97.39019775390625,
+ 35.507755279541016, 52.27586364746094, 82.83865356445312,
+ 8.568099021911621, 0.8337112069129944, 69.23146057128906,
+ 3.8541641235351562, 70.5567398071289, 71.99264526367188
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceLogSum',
+ 'arguments': [
+ {'input': 'reduceLogSumInput'},
+ {'options': {'axes': [1, 3], 'keepDimensions': false}}
+ ],
+ 'outputs': 'reduceLogSumOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceLogSumOutput': {
+ 'data': [
+ 5.7273993492126465, 5.64375114440918, 5.453810214996338,
+ 5.758983135223389
+ ],
+ 'descriptor': {'dimensions': [2, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'reduceLogSum float32 4D tensor options.axes with options.keepDimensions=true',
+ 'graph': {
+ 'inputs': {
+ 'reduceLogSumInput': {
+ 'data': [
+ 64.54827117919922, 97.87423706054688, 26.529027938842773,
+ 79.79046630859375, 50.394989013671875, 14.578407287597656,
+ 20.866817474365234, 32.43873596191406, 64.91233825683594,
+ 71.54029846191406, 11.137068748474121, 55.079307556152344,
+ 43.791351318359375, 13.831947326660156, 97.39019775390625,
+ 35.507755279541016, 52.27586364746094, 82.83865356445312,
+ 8.568099021911621, 0.8337112069129944, 69.23146057128906,
+ 3.8541641235351562, 70.5567398071289, 71.99264526367188
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceLogSum',
+ 'arguments': [
+ {'input': 'reduceLogSumInput'},
+ {'options': {'axes': [1, 3], 'keepDimensions': true}}
+ ],
+ 'outputs': 'reduceLogSumOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceLogSumOutput': {
+ 'data': [
+ 5.7273993492126465, 5.64375114440918, 5.453810214996338,
+ 5.758983135223389
+ ],
+ 'descriptor': {'dimensions': [2, 1, 2, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ reduceLogSumTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getReductionOperatorsPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/reduce_log_sum_exp.https.any.js b/tests/wpt/tests/webnn/conformance_tests/reduce_log_sum_exp.https.any.js
new file mode 100644
index 00000000000..5ba2e393077
--- /dev/null
+++ b/tests/wpt/tests/webnn/conformance_tests/reduce_log_sum_exp.https.any.js
@@ -0,0 +1,640 @@
+// META: title=test WebNN API reduction operations
+// META: global=window,dedicatedworker
+// META: variant=?cpu
+// META: variant=?gpu
+// META: variant=?npu
+// META: script=../resources/utils.js
+// META: timeout=long
+
+'use strict';
+
+// https://www.w3.org/TR/webnn/#dom-mlgraphbuilder-reducelogsumexp
+// Reduce the input tensor along all dimensions, or along the axes specified in
+// the axes array parameter.
+//
+// dictionary MLReduceOptions {
+// sequence<[EnforceRange] unsigned long> axes;
+// boolean keepDimensions = false;
+// };
+//
+// MLOperand reduceLogSumExp(MLOperand input, optional MLReduceOptions options
+// = {});
+
+const getReductionOperatorsPrecisionTolerance = (graphResources) => {
+ return {
+ metricType: 'ULP',
+ value: getReducedElementCount(graphResources) * 2 + 18,
+ };
+};
+
+const reduceLogSumExpTests = [
+ {
+ 'name': 'reduceLogSumExp float32 0D constant tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceLogSumExpInput': {
+ 'data': [0.7974132895469666],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceLogSumExp',
+ 'arguments': [{'input': 'reduceLogSumExpInput'}],
+ 'outputs': 'reduceLogSumExpOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceLogSumExpOutput': {
+ 'data': 0.7974132895469666,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceLogSumExp float32 0D constant tensor empty axes',
+ 'graph': {
+ 'inputs': {
+ 'reduceLogSumExpInput': {
+ 'data': [0.7974132895469666],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceLogSumExp',
+ 'arguments':
+ [{'input': 'reduceLogSumExpInput'}, {'options': {'axes': []}}],
+ 'outputs': 'reduceLogSumExpOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceLogSumExpOutput': {
+ 'data': 0.7974132895469666,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'reduceLogSumExp float32 1D constant tensor all positive default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceLogSumExpInput': {
+ 'data': [
+ 0.7974132895469666, 5.046889781951904, 8.520371437072754,
+ 1.4063042402267456, 0.11882661283016205, 0.2858544886112213,
+ 1.9325640201568604, 3.7939958572387695, 2.6040232181549072,
+ 4.937509536743164, 4.571482181549072, 0.786512017250061,
+ 0.21018670499324799, 9.063042640686035, 4.099809646606445,
+ 4.596248626708984, 0.2549232244491577, 1.159480094909668,
+ 6.802876949310303, 5.234325408935547, 8.914905548095703,
+ 9.166799545288086, 5.717507362365723, 0.3255050778388977
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceLogSumExp',
+ 'arguments': [{'input': 'reduceLogSumExpInput'}],
+ 'outputs': 'reduceLogSumExpOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceLogSumExpOutput': {
+ 'data': 10.39477825164795,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceLogSumExp float32 1D tensor all positive default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceLogSumExpInput': {
+ 'data': [
+ 0.7974132895469666, 5.046889781951904, 8.520371437072754,
+ 1.4063042402267456, 0.11882661283016205, 0.2858544886112213,
+ 1.9325640201568604, 3.7939958572387695, 2.6040232181549072,
+ 4.937509536743164, 4.571482181549072, 0.786512017250061,
+ 0.21018670499324799, 9.063042640686035, 4.099809646606445,
+ 4.596248626708984, 0.2549232244491577, 1.159480094909668,
+ 6.802876949310303, 5.234325408935547, 8.914905548095703,
+ 9.166799545288086, 5.717507362365723, 0.3255050778388977
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceLogSumExp',
+ 'arguments': [{'input': 'reduceLogSumExpInput'}],
+ 'outputs': 'reduceLogSumExpOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceLogSumExpOutput': {
+ 'data': 10.39477825164795,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceLogSumExp float32 1D tensor all negative default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceLogSumExpInput': {
+ 'data': [
+ -4.025670051574707, -9.444348335266113, -3.1193981170654297,
+ -5.943697929382324, -0.3701804578304291, -4.397126197814941,
+ -6.605968475341797, -5.534277439117432, -7.361471176147461,
+ -1.9987547397613525, -9.093968391418457, -8.693618774414062,
+ -8.416788101196289, -1.010741114616394, -9.814584732055664,
+ -9.725259780883789, -9.157071113586426, -0.001698818989098072,
+ -9.963415145874023, -5.991659641265869, -6.180599689483643,
+ -1.2336505651474, -0.44234341382980347, -6.990072250366211
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceLogSumExp',
+ 'arguments': [{'input': 'reduceLogSumExpInput'}],
+ 'outputs': 'reduceLogSumExpOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceLogSumExpOutput': {
+ 'data': 1.1666961908340454,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'reduceLogSumExp float32 1D tensor all positive integers default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceLogSumExpInput': {
+ 'data': [
+ 1, 5, 7, 5, 7, 5, 4, 2, 1, 5, 8, 2,
+ 4, 1, 4, 5, 4, 8, 6, 2, 7, 7, 8, 5
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceLogSumExp',
+ 'arguments': [{'input': 'reduceLogSumExpInput'}],
+ 'outputs': 'reduceLogSumExpOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceLogSumExpOutput': {
+ 'data': 9.607237815856934,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'reduceLogSumExp float32 1D tensor all negative integers default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceLogSumExpInput': {
+ 'data': [
+ -6, -3, -5, -1, -9, -5, -1, -2, -10, -1, -5, -7,
+ -7, -3, -10, -10, -8, -6, -2, -6, -1, -9, -5, -2
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceLogSumExp',
+ 'arguments': [{'input': 'reduceLogSumExpInput'}],
+ 'outputs': 'reduceLogSumExpOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceLogSumExpOutput': {
+ 'data': 0.7001367211341858,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceLogSumExp float32 2D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceLogSumExpInput': {
+ 'data': [
+ 0.7974132895469666, 5.046889781951904, 8.520371437072754,
+ 1.4063042402267456, 0.11882661283016205, 0.2858544886112213,
+ 1.9325640201568604, 3.7939958572387695, 2.6040232181549072,
+ 4.937509536743164, 4.571482181549072, 0.786512017250061,
+ 0.21018670499324799, 9.063042640686035, 4.099809646606445,
+ 4.596248626708984, 0.2549232244491577, 1.159480094909668,
+ 6.802876949310303, 5.234325408935547, 8.914905548095703,
+ 9.166799545288086, 5.717507362365723, 0.3255050778388977
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceLogSumExp',
+ 'arguments': [{'input': 'reduceLogSumExpInput'}],
+ 'outputs': 'reduceLogSumExpOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceLogSumExpOutput': {
+ 'data': 10.39477825164795,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceLogSumExp float32 3D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceLogSumExpInput': {
+ 'data': [
+ 0.7974132895469666, 5.046889781951904, 8.520371437072754,
+ 1.4063042402267456, 0.11882661283016205, 0.2858544886112213,
+ 1.9325640201568604, 3.7939958572387695, 2.6040232181549072,
+ 4.937509536743164, 4.571482181549072, 0.786512017250061,
+ 0.21018670499324799, 9.063042640686035, 4.099809646606445,
+ 4.596248626708984, 0.2549232244491577, 1.159480094909668,
+ 6.802876949310303, 5.234325408935547, 8.914905548095703,
+ 9.166799545288086, 5.717507362365723, 0.3255050778388977
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceLogSumExp',
+ 'arguments': [{'input': 'reduceLogSumExpInput'}],
+ 'outputs': 'reduceLogSumExpOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceLogSumExpOutput': {
+ 'data': 10.39477825164795,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceLogSumExp float32 4D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceLogSumExpInput': {
+ 'data': [
+ 0.7974132895469666, 5.046889781951904, 8.520371437072754,
+ 1.4063042402267456, 0.11882661283016205, 0.2858544886112213,
+ 1.9325640201568604, 3.7939958572387695, 2.6040232181549072,
+ 4.937509536743164, 4.571482181549072, 0.786512017250061,
+ 0.21018670499324799, 9.063042640686035, 4.099809646606445,
+ 4.596248626708984, 0.2549232244491577, 1.159480094909668,
+ 6.802876949310303, 5.234325408935547, 8.914905548095703,
+ 9.166799545288086, 5.717507362365723, 0.3255050778388977
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceLogSumExp',
+ 'arguments': [{'input': 'reduceLogSumExpInput'}],
+ 'outputs': 'reduceLogSumExpOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceLogSumExpOutput': {
+ 'data': 10.39477825164795,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceLogSumExp float32 5D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceLogSumExpInput': {
+ 'data': [
+ 0.7974132895469666, 5.046889781951904, 8.520371437072754,
+ 1.4063042402267456, 0.11882661283016205, 0.2858544886112213,
+ 1.9325640201568604, 3.7939958572387695, 2.6040232181549072,
+ 4.937509536743164, 4.571482181549072, 0.786512017250061,
+ 0.21018670499324799, 9.063042640686035, 4.099809646606445,
+ 4.596248626708984, 0.2549232244491577, 1.159480094909668,
+ 6.802876949310303, 5.234325408935547, 8.914905548095703,
+ 9.166799545288086, 5.717507362365723, 0.3255050778388977
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 1, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceLogSumExp',
+ 'arguments': [{'input': 'reduceLogSumExpInput'}],
+ 'outputs': 'reduceLogSumExpOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceLogSumExpOutput': {
+ 'data': 10.39477825164795,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceLogSumExp float32 3D tensor options.axes',
+ 'graph': {
+ 'inputs': {
+ 'reduceLogSumExpInput': {
+ 'data': [
+ 0.7974132895469666, 5.046889781951904, 8.520371437072754,
+ 1.4063042402267456, 0.11882661283016205, 0.2858544886112213,
+ 1.9325640201568604, 3.7939958572387695, 2.6040232181549072,
+ 4.937509536743164, 4.571482181549072, 0.786512017250061,
+ 0.21018670499324799, 9.063042640686035, 4.099809646606445,
+ 4.596248626708984, 0.2549232244491577, 1.159480094909668,
+ 6.802876949310303, 5.234325408935547, 8.914905548095703,
+ 9.166799545288086, 5.717507362365723, 0.3255050778388977
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceLogSumExp',
+ 'arguments':
+ [{'input': 'reduceLogSumExpInput'}, {'options': {'axes': [2]}}],
+ 'outputs': 'reduceLogSumExpOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceLogSumExpOutput': {
+ 'data': [
+ 8.55212688446045, 3.985233783721924, 5.52872896194458,
+ 9.081488609313965, 6.996237754821777, 9.759706497192383
+ ],
+ 'descriptor': {'dimensions': [2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceLogSumExp float32 4D tensor options.axes',
+ 'graph': {
+ 'inputs': {
+ 'reduceLogSumExpInput': {
+ 'data': [
+ 0.7974132895469666, 5.046889781951904, 8.520371437072754,
+ 1.4063042402267456, 0.11882661283016205, 0.2858544886112213,
+ 1.9325640201568604, 3.7939958572387695, 2.6040232181549072,
+ 4.937509536743164, 4.571482181549072, 0.786512017250061,
+ 0.21018670499324799, 9.063042640686035, 4.099809646606445,
+ 4.596248626708984, 0.2549232244491577, 1.159480094909668,
+ 6.802876949310303, 5.234325408935547, 8.914905548095703,
+ 9.166799545288086, 5.717507362365723, 0.3255050778388977
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceLogSumExp',
+ 'arguments':
+ [{'input': 'reduceLogSumExpInput'}, {'options': {'axes': [0, 2]}}],
+ 'outputs': 'reduceLogSumExpOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceLogSumExpOutput': {
+ 'data': [
+ 4.66951847076416, 9.08117961883545, 8.533217430114746,
+ 9.270560264587402, 6.450263977050781, 8.917200088500977
+ ],
+ 'descriptor': {'dimensions': [2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceLogSumExp float32 3D tensor options.keepDimensions=false',
+ 'graph': {
+ 'inputs': {
+ 'reduceLogSumExpInput': {
+ 'data': [
+ 0.7974132895469666, 5.046889781951904, 8.520371437072754,
+ 1.4063042402267456, 0.11882661283016205, 0.2858544886112213,
+ 1.9325640201568604, 3.7939958572387695, 2.6040232181549072,
+ 4.937509536743164, 4.571482181549072, 0.786512017250061,
+ 0.21018670499324799, 9.063042640686035, 4.099809646606445,
+ 4.596248626708984, 0.2549232244491577, 1.159480094909668,
+ 6.802876949310303, 5.234325408935547, 8.914905548095703,
+ 9.166799545288086, 5.717507362365723, 0.3255050778388977
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceLogSumExp',
+ 'arguments': [
+ {'input': 'reduceLogSumExpInput'},
+ {'options': {'keepDimensions': false}}
+ ],
+ 'outputs': 'reduceLogSumExpOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceLogSumExpOutput': {
+ 'data': 10.39477825164795,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceLogSumExp float32 3D tensor options.keepDimensions=true',
+ 'graph': {
+ 'inputs': {
+ 'reduceLogSumExpInput': {
+ 'data': [
+ 0.7974132895469666, 5.046889781951904, 8.520371437072754,
+ 1.4063042402267456, 0.11882661283016205, 0.2858544886112213,
+ 1.9325640201568604, 3.7939958572387695, 2.6040232181549072,
+ 4.937509536743164, 4.571482181549072, 0.786512017250061,
+ 0.21018670499324799, 9.063042640686035, 4.099809646606445,
+ 4.596248626708984, 0.2549232244491577, 1.159480094909668,
+ 6.802876949310303, 5.234325408935547, 8.914905548095703,
+ 9.166799545288086, 5.717507362365723, 0.3255050778388977
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceLogSumExp',
+ 'arguments': [
+ {'input': 'reduceLogSumExpInput'},
+ {'options': {'keepDimensions': true}}
+ ],
+ 'outputs': 'reduceLogSumExpOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceLogSumExpOutput': {
+ 'data': [10.39477825164795],
+ 'descriptor': {'dimensions': [1, 1, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceLogSumExp float32 4D tensor options.keepDimensions=false',
+ 'graph': {
+ 'inputs': {
+ 'reduceLogSumExpInput': {
+ 'data': [
+ 0.7974132895469666, 5.046889781951904, 8.520371437072754,
+ 1.4063042402267456, 0.11882661283016205, 0.2858544886112213,
+ 1.9325640201568604, 3.7939958572387695, 2.6040232181549072,
+ 4.937509536743164, 4.571482181549072, 0.786512017250061,
+ 0.21018670499324799, 9.063042640686035, 4.099809646606445,
+ 4.596248626708984, 0.2549232244491577, 1.159480094909668,
+ 6.802876949310303, 5.234325408935547, 8.914905548095703,
+ 9.166799545288086, 5.717507362365723, 0.3255050778388977
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceLogSumExp',
+ 'arguments': [
+ {'input': 'reduceLogSumExpInput'},
+ {'options': {'keepDimensions': false}}
+ ],
+ 'outputs': 'reduceLogSumExpOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceLogSumExpOutput': {
+ 'data': 10.39477825164795,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceLogSumExp float32 4D tensor options.keepDimensions=true',
+ 'graph': {
+ 'inputs': {
+ 'reduceLogSumExpInput': {
+ 'data': [
+ 0.7974132895469666, 5.046889781951904, 8.520371437072754,
+ 1.4063042402267456, 0.11882661283016205, 0.2858544886112213,
+ 1.9325640201568604, 3.7939958572387695, 2.6040232181549072,
+ 4.937509536743164, 4.571482181549072, 0.786512017250061,
+ 0.21018670499324799, 9.063042640686035, 4.099809646606445,
+ 4.596248626708984, 0.2549232244491577, 1.159480094909668,
+ 6.802876949310303, 5.234325408935547, 8.914905548095703,
+ 9.166799545288086, 5.717507362365723, 0.3255050778388977
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceLogSumExp',
+ 'arguments': [
+ {'input': 'reduceLogSumExpInput'},
+ {'options': {'keepDimensions': true}}
+ ],
+ 'outputs': 'reduceLogSumExpOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceLogSumExpOutput': {
+ 'data': [10.39477825164795],
+ 'descriptor': {'dimensions': [1, 1, 1, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'reduceLogSumExp float32 4D tensor options.axes with options.keepDimensions=false',
+ 'graph': {
+ 'inputs': {
+ 'reduceLogSumExpInput': {
+ 'data': [
+ 0.7974132895469666, 5.046889781951904, 8.520371437072754,
+ 1.4063042402267456, 0.11882661283016205, 0.2858544886112213,
+ 1.9325640201568604, 3.7939958572387695, 2.6040232181549072,
+ 4.937509536743164, 4.571482181549072, 0.786512017250061,
+ 0.21018670499324799, 9.063042640686035, 4.099809646606445,
+ 4.596248626708984, 0.2549232244491577, 1.159480094909668,
+ 6.802876949310303, 5.234325408935547, 8.914905548095703,
+ 9.166799545288086, 5.717507362365723, 0.3255050778388977
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceLogSumExp',
+ 'arguments': [
+ {'input': 'reduceLogSumExpInput'},
+ {'options': {'axes': [1, 3], 'keepDimensions': false}}
+ ],
+ 'outputs': 'reduceLogSumExpOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceLogSumExpOutput': {
+ 'data': [
+ 8.563796997070312, 5.500619411468506, 9.753945350646973,
+ 9.20864486694336
+ ],
+ 'descriptor': {'dimensions': [2, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'reduceLogSumExp float32 4D tensor options.axes with options.keepDimensions=true',
+ 'graph': {
+ 'inputs': {
+ 'reduceLogSumExpInput': {
+ 'data': [
+ 0.7974132895469666, 5.046889781951904, 8.520371437072754,
+ 1.4063042402267456, 0.11882661283016205, 0.2858544886112213,
+ 1.9325640201568604, 3.7939958572387695, 2.6040232181549072,
+ 4.937509536743164, 4.571482181549072, 0.786512017250061,
+ 0.21018670499324799, 9.063042640686035, 4.099809646606445,
+ 4.596248626708984, 0.2549232244491577, 1.159480094909668,
+ 6.802876949310303, 5.234325408935547, 8.914905548095703,
+ 9.166799545288086, 5.717507362365723, 0.3255050778388977
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceLogSumExp',
+ 'arguments': [
+ {'input': 'reduceLogSumExpInput'},
+ {'options': {'axes': [1, 3], 'keepDimensions': true}}
+ ],
+ 'outputs': 'reduceLogSumExpOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceLogSumExpOutput': {
+ 'data': [
+ 8.563796997070312, 5.500619411468506, 9.753945350646973,
+ 9.20864486694336
+ ],
+ 'descriptor': {'dimensions': [2, 1, 2, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ reduceLogSumExpTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getReductionOperatorsPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/reduce_max.https.any.js b/tests/wpt/tests/webnn/conformance_tests/reduce_max.https.any.js
new file mode 100644
index 00000000000..709b25b0ad3
--- /dev/null
+++ b/tests/wpt/tests/webnn/conformance_tests/reduce_max.https.any.js
@@ -0,0 +1,549 @@
+// META: title=test WebNN API reduction operations
+// META: global=window,dedicatedworker
+// META: variant=?cpu
+// META: variant=?gpu
+// META: variant=?npu
+// META: script=../resources/utils.js
+// META: timeout=long
+
+'use strict';
+
+// https://www.w3.org/TR/webnn/#dom-mlgraphbuilder-reducemax
+// Reduce the input tensor along all dimensions, or along the axes specified in
+// the axes array parameter.
+//
+// dictionary MLReduceOptions {
+// sequence<[EnforceRange] unsigned long> axes;
+// boolean keepDimensions = false;
+// };
+//
+// MLOperand reduceMax(MLOperand input, optional MLReduceOptions options = {});
+
+const getReductionOperatorsPrecisionTolerance = (graphResources) => {
+ return {
+ metricType: 'ULP',
+ value: 0,
+ };
+};
+
+const reduceMaxTests = [
+ {
+ 'name': 'reduceMax float32 0D constant tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceMaxInput': {
+ 'data': [32.16658401489258],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceMax',
+ 'arguments': [{'input': 'reduceMaxInput'}],
+ 'outputs': 'reduceMaxOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceMaxOutput': {
+ 'data': 32.16658401489258,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceMax float32 0D constant tensor empty axes',
+ 'graph': {
+ 'inputs': {
+ 'reduceMaxInput': {
+ 'data': [32.16658401489258],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceMax',
+ 'arguments': [{'input': 'reduceMaxInput'}, {'options': {'axes': []}}],
+ 'outputs': 'reduceMaxOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceMaxOutput': {
+ 'data': 32.16658401489258,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceMax float32 1D constant tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceMaxInput': {
+ 'data': [
+ 32.16658401489258, 90.42288208007812, -26.341794967651367,
+ -7.147959232330322, 75.90379333496094, -48.2042121887207,
+ -53.09425354003906, 66.66099548339844, -96.16854095458984,
+ -88.30545043945312, 94.99645233154297, 37.28493118286133,
+ -42.209861755371094, 96.55397033691406, 0.8807229995727539,
+ 62.504642486572266, 36.650634765625, 99.77313232421875,
+ -72.86485290527344, -46.03200912475586, 20.253753662109375,
+ -21.557384490966797, -51.28727340698242, -42.58832931518555
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceMax',
+ 'arguments': [{'input': 'reduceMaxInput'}],
+ 'outputs': 'reduceMaxOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceMaxOutput': {
+ 'data': 99.77313232421875,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceMax float32 1D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceMaxInput': {
+ 'data': [
+ 32.16658401489258, 90.42288208007812, -26.341794967651367,
+ -7.147959232330322, 75.90379333496094, -48.2042121887207,
+ -53.09425354003906, 66.66099548339844, -96.16854095458984,
+ -88.30545043945312, 94.99645233154297, 37.28493118286133,
+ -42.209861755371094, 96.55397033691406, 0.8807229995727539,
+ 62.504642486572266, 36.650634765625, 99.77313232421875,
+ -72.86485290527344, -46.03200912475586, 20.253753662109375,
+ -21.557384490966797, -51.28727340698242, -42.58832931518555
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceMax',
+ 'arguments': [{'input': 'reduceMaxInput'}],
+ 'outputs': 'reduceMaxOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceMaxOutput': {
+ 'data': 99.77313232421875,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceMax float32 2D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceMaxInput': {
+ 'data': [
+ 32.16658401489258, 90.42288208007812, -26.341794967651367,
+ -7.147959232330322, 75.90379333496094, -48.2042121887207,
+ -53.09425354003906, 66.66099548339844, -96.16854095458984,
+ -88.30545043945312, 94.99645233154297, 37.28493118286133,
+ -42.209861755371094, 96.55397033691406, 0.8807229995727539,
+ 62.504642486572266, 36.650634765625, 99.77313232421875,
+ -72.86485290527344, -46.03200912475586, 20.253753662109375,
+ -21.557384490966797, -51.28727340698242, -42.58832931518555
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceMax',
+ 'arguments': [{'input': 'reduceMaxInput'}],
+ 'outputs': 'reduceMaxOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceMaxOutput': {
+ 'data': 99.77313232421875,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceMax float32 3D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceMaxInput': {
+ 'data': [
+ 32.16658401489258, 90.42288208007812, -26.341794967651367,
+ -7.147959232330322, 75.90379333496094, -48.2042121887207,
+ -53.09425354003906, 66.66099548339844, -96.16854095458984,
+ -88.30545043945312, 94.99645233154297, 37.28493118286133,
+ -42.209861755371094, 96.55397033691406, 0.8807229995727539,
+ 62.504642486572266, 36.650634765625, 99.77313232421875,
+ -72.86485290527344, -46.03200912475586, 20.253753662109375,
+ -21.557384490966797, -51.28727340698242, -42.58832931518555
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceMax',
+ 'arguments': [{'input': 'reduceMaxInput'}],
+ 'outputs': 'reduceMaxOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceMaxOutput': {
+ 'data': 99.77313232421875,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceMax float32 4D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceMaxInput': {
+ 'data': [
+ 32.16658401489258, 90.42288208007812, -26.341794967651367,
+ -7.147959232330322, 75.90379333496094, -48.2042121887207,
+ -53.09425354003906, 66.66099548339844, -96.16854095458984,
+ -88.30545043945312, 94.99645233154297, 37.28493118286133,
+ -42.209861755371094, 96.55397033691406, 0.8807229995727539,
+ 62.504642486572266, 36.650634765625, 99.77313232421875,
+ -72.86485290527344, -46.03200912475586, 20.253753662109375,
+ -21.557384490966797, -51.28727340698242, -42.58832931518555
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceMax',
+ 'arguments': [{'input': 'reduceMaxInput'}],
+ 'outputs': 'reduceMaxOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceMaxOutput': {
+ 'data': 99.77313232421875,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceMax float32 5D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceMaxInput': {
+ 'data': [
+ 32.16658401489258, 90.42288208007812, -26.341794967651367,
+ -7.147959232330322, 75.90379333496094, -48.2042121887207,
+ -53.09425354003906, 66.66099548339844, -96.16854095458984,
+ -88.30545043945312, 94.99645233154297, 37.28493118286133,
+ -42.209861755371094, 96.55397033691406, 0.8807229995727539,
+ 62.504642486572266, 36.650634765625, 99.77313232421875,
+ -72.86485290527344, -46.03200912475586, 20.253753662109375,
+ -21.557384490966797, -51.28727340698242, -42.58832931518555
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 1, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceMax',
+ 'arguments': [{'input': 'reduceMaxInput'}],
+ 'outputs': 'reduceMaxOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceMaxOutput': {
+ 'data': 99.77313232421875,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceMax float32 3D tensor options.axes',
+ 'graph': {
+ 'inputs': {
+ 'reduceMaxInput': {
+ 'data': [
+ 32.16658401489258, 90.42288208007812, -26.341794967651367,
+ -7.147959232330322, 75.90379333496094, -48.2042121887207,
+ -53.09425354003906, 66.66099548339844, -96.16854095458984,
+ -88.30545043945312, 94.99645233154297, 37.28493118286133,
+ -42.209861755371094, 96.55397033691406, 0.8807229995727539,
+ 62.504642486572266, 36.650634765625, 99.77313232421875,
+ -72.86485290527344, -46.03200912475586, 20.253753662109375,
+ -21.557384490966797, -51.28727340698242, -42.58832931518555
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceMax',
+ 'arguments': [{'input': 'reduceMaxInput'}, {'options': {'axes': [2]}}],
+ 'outputs': 'reduceMaxOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceMaxOutput': {
+ 'data': [
+ 90.42288208007812, 75.90379333496094, 94.99645233154297,
+ 96.55397033691406, 99.77313232421875, 20.253753662109375
+ ],
+ 'descriptor': {'dimensions': [2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceMax float32 4D tensor options.axes',
+ 'graph': {
+ 'inputs': {
+ 'reduceMaxInput': {
+ 'data': [
+ 32.16658401489258, 90.42288208007812, -26.341794967651367,
+ -7.147959232330322, 75.90379333496094, -48.2042121887207,
+ -53.09425354003906, 66.66099548339844, -96.16854095458984,
+ -88.30545043945312, 94.99645233154297, 37.28493118286133,
+ -42.209861755371094, 96.55397033691406, 0.8807229995727539,
+ 62.504642486572266, 36.650634765625, 99.77313232421875,
+ -72.86485290527344, -46.03200912475586, 20.253753662109375,
+ -21.557384490966797, -51.28727340698242, -42.58832931518555
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceMax',
+ 'arguments':
+ [{'input': 'reduceMaxInput'}, {'options': {'axes': [0, 2]}}],
+ 'outputs': 'reduceMaxOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceMaxOutput': {
+ 'data': [
+ 62.504642486572266, 96.55397033691406, 99.77313232421875,
+ -21.557384490966797, 94.99645233154297, 37.28493118286133
+ ],
+ 'descriptor': {'dimensions': [2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceMax float32 3D tensor options.keepDimensions=false',
+ 'graph': {
+ 'inputs': {
+ 'reduceMaxInput': {
+ 'data': [
+ 32.16658401489258, 90.42288208007812, -26.341794967651367,
+ -7.147959232330322, 75.90379333496094, -48.2042121887207,
+ -53.09425354003906, 66.66099548339844, -96.16854095458984,
+ -88.30545043945312, 94.99645233154297, 37.28493118286133,
+ -42.209861755371094, 96.55397033691406, 0.8807229995727539,
+ 62.504642486572266, 36.650634765625, 99.77313232421875,
+ -72.86485290527344, -46.03200912475586, 20.253753662109375,
+ -21.557384490966797, -51.28727340698242, -42.58832931518555
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceMax',
+ 'arguments': [
+ {'input': 'reduceMaxInput'}, {'options': {'keepDimensions': false}}
+ ],
+ 'outputs': 'reduceMaxOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceMaxOutput': {
+ 'data': 99.77313232421875,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceMax float32 3D tensor options.keepDimensions=true',
+ 'graph': {
+ 'inputs': {
+ 'reduceMaxInput': {
+ 'data': [
+ 32.16658401489258, 90.42288208007812, -26.341794967651367,
+ -7.147959232330322, 75.90379333496094, -48.2042121887207,
+ -53.09425354003906, 66.66099548339844, -96.16854095458984,
+ -88.30545043945312, 94.99645233154297, 37.28493118286133,
+ -42.209861755371094, 96.55397033691406, 0.8807229995727539,
+ 62.504642486572266, 36.650634765625, 99.77313232421875,
+ -72.86485290527344, -46.03200912475586, 20.253753662109375,
+ -21.557384490966797, -51.28727340698242, -42.58832931518555
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceMax',
+ 'arguments': [
+ {'input': 'reduceMaxInput'}, {'options': {'keepDimensions': true}}
+ ],
+ 'outputs': 'reduceMaxOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceMaxOutput': {
+ 'data': [99.77313232421875],
+ 'descriptor': {'dimensions': [1, 1, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceMax float32 4D tensor options.keepDimensions=false',
+ 'graph': {
+ 'inputs': {
+ 'reduceMaxInput': {
+ 'data': [
+ 32.16658401489258, 90.42288208007812, -26.341794967651367,
+ -7.147959232330322, 75.90379333496094, -48.2042121887207,
+ -53.09425354003906, 66.66099548339844, -96.16854095458984,
+ -88.30545043945312, 94.99645233154297, 37.28493118286133,
+ -42.209861755371094, 96.55397033691406, 0.8807229995727539,
+ 62.504642486572266, 36.650634765625, 99.77313232421875,
+ -72.86485290527344, -46.03200912475586, 20.253753662109375,
+ -21.557384490966797, -51.28727340698242, -42.58832931518555
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceMax',
+ 'arguments': [
+ {'input': 'reduceMaxInput'}, {'options': {'keepDimensions': false}}
+ ],
+ 'outputs': 'reduceMaxOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceMaxOutput': {
+ 'data': 99.77313232421875,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceMax float32 4D tensor options.keepDimensions=true',
+ 'graph': {
+ 'inputs': {
+ 'reduceMaxInput': {
+ 'data': [
+ 32.16658401489258, 90.42288208007812, -26.341794967651367,
+ -7.147959232330322, 75.90379333496094, -48.2042121887207,
+ -53.09425354003906, 66.66099548339844, -96.16854095458984,
+ -88.30545043945312, 94.99645233154297, 37.28493118286133,
+ -42.209861755371094, 96.55397033691406, 0.8807229995727539,
+ 62.504642486572266, 36.650634765625, 99.77313232421875,
+ -72.86485290527344, -46.03200912475586, 20.253753662109375,
+ -21.557384490966797, -51.28727340698242, -42.58832931518555
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceMax',
+ 'arguments': [
+ {'input': 'reduceMaxInput'}, {'options': {'keepDimensions': true}}
+ ],
+ 'outputs': 'reduceMaxOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceMaxOutput': {
+ 'data': [99.77313232421875],
+ 'descriptor': {'dimensions': [1, 1, 1, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'reduceMax float32 4D tensor options.axes with options.keepDimensions=false',
+ 'graph': {
+ 'inputs': {
+ 'reduceMaxInput': {
+ 'data': [
+ 32.16658401489258, 90.42288208007812, -26.341794967651367,
+ -7.147959232330322, 75.90379333496094, -48.2042121887207,
+ -53.09425354003906, 66.66099548339844, -96.16854095458984,
+ -88.30545043945312, 94.99645233154297, 37.28493118286133,
+ -42.209861755371094, 96.55397033691406, 0.8807229995727539,
+ 62.504642486572266, 36.650634765625, 99.77313232421875,
+ -72.86485290527344, -46.03200912475586, 20.253753662109375,
+ -21.557384490966797, -51.28727340698242, -42.58832931518555
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceMax',
+ 'arguments': [
+ {'input': 'reduceMaxInput'},
+ {'options': {'axes': [1, 3], 'keepDimensions': false}}
+ ],
+ 'outputs': 'reduceMaxOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceMaxOutput': {
+ 'data': [
+ 90.42288208007812, 94.99645233154297, 96.55397033691406,
+ 99.77313232421875
+ ],
+ 'descriptor': {'dimensions': [2, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'reduceMax float32 4D tensor options.axes with options.keepDimensions=true',
+ 'graph': {
+ 'inputs': {
+ 'reduceMaxInput': {
+ 'data': [
+ 32.16658401489258, 90.42288208007812, -26.341794967651367,
+ -7.147959232330322, 75.90379333496094, -48.2042121887207,
+ -53.09425354003906, 66.66099548339844, -96.16854095458984,
+ -88.30545043945312, 94.99645233154297, 37.28493118286133,
+ -42.209861755371094, 96.55397033691406, 0.8807229995727539,
+ 62.504642486572266, 36.650634765625, 99.77313232421875,
+ -72.86485290527344, -46.03200912475586, 20.253753662109375,
+ -21.557384490966797, -51.28727340698242, -42.58832931518555
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceMax',
+ 'arguments': [
+ {'input': 'reduceMaxInput'},
+ {'options': {'axes': [1, 3], 'keepDimensions': true}}
+ ],
+ 'outputs': 'reduceMaxOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceMaxOutput': {
+ 'data': [
+ 90.42288208007812, 94.99645233154297, 96.55397033691406,
+ 99.77313232421875
+ ],
+ 'descriptor': {'dimensions': [2, 1, 2, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+];
+
+if (navigator.ml) {
+ reduceMaxTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getReductionOperatorsPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/reduce_mean.https.any.js b/tests/wpt/tests/webnn/conformance_tests/reduce_mean.https.any.js
new file mode 100644
index 00000000000..21fa1a5102c
--- /dev/null
+++ b/tests/wpt/tests/webnn/conformance_tests/reduce_mean.https.any.js
@@ -0,0 +1,633 @@
+// META: title=test WebNN API reduction operations
+// META: global=window,dedicatedworker
+// META: variant=?cpu
+// META: variant=?gpu
+// META: variant=?npu
+// META: script=../resources/utils.js
+// META: timeout=long
+
+'use strict';
+
+// https://www.w3.org/TR/webnn/#dom-mlgraphbuilder-reducemean
+// Reduce the input tensor along all dimensions, or along the axes specified in
+// the axes array parameter.
+//
+// dictionary MLReduceOptions {
+// sequence<[EnforceRange] unsigned long> axes;
+// boolean keepDimensions = false;
+// };
+//
+// MLOperand reduceMean(MLOperand input, optional MLReduceOptions options = {});
+
+const getReductionOperatorsPrecisionTolerance = (graphResources) => {
+ return {
+ metricType: 'ULP',
+ value: getReducedElementCount(graphResources) + 2,
+ };
+};
+
+const reduceMeanTests = [
+ {
+ 'name': 'reduceMean float32 0D constant tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceMeanInput': {
+ 'data': [95.84498596191406],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceMean',
+ 'arguments': [{'input': 'reduceMeanInput'}],
+ 'outputs': 'reduceMeanOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceMeanOutput': {
+ 'data': 95.84498596191406,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceMean float32 0D constant tensor empty axes',
+ 'graph': {
+ 'inputs': {
+ 'reduceMeanInput': {
+ 'data': [95.84498596191406],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceMean',
+ 'arguments': [{'input': 'reduceMeanInput'}, {'options': {'axes': []}}],
+ 'outputs': 'reduceMeanOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceMeanOutput': {
+ 'data': 95.84498596191406,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'reduceMean float32 1D constant tensor all positive default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceMeanInput': {
+ 'data': [
+ 95.84498596191406, 75.6937026977539, 1.5417721271514893,
+ 8.787034034729004, 70.08280181884766, 13.784331321716309,
+ 20.006067276000977, 94.80963897705078, 25.82918930053711,
+ 94.13260650634766, 67.72958374023438, 16.09935188293457,
+ 92.1943359375, 11.567352294921875, 52.70549774169922,
+ 22.471792221069336, 3.662332534790039, 20.210277557373047,
+ 58.56523132324219, 28.673492431640625, 42.13419723510742,
+ 21.63775062561035, 14.160697937011719, 15.127351760864258
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceMean',
+ 'arguments': [{'input': 'reduceMeanInput'}],
+ 'outputs': 'reduceMeanOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceMeanOutput': {
+ 'data': 40.31047439575195,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceMean float32 1D tensor all positive default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceMeanInput': {
+ 'data': [
+ 95.84498596191406, 75.6937026977539, 1.5417721271514893,
+ 8.787034034729004, 70.08280181884766, 13.784331321716309,
+ 20.006067276000977, 94.80963897705078, 25.82918930053711,
+ 94.13260650634766, 67.72958374023438, 16.09935188293457,
+ 92.1943359375, 11.567352294921875, 52.70549774169922,
+ 22.471792221069336, 3.662332534790039, 20.210277557373047,
+ 58.56523132324219, 28.673492431640625, 42.13419723510742,
+ 21.63775062561035, 14.160697937011719, 15.127351760864258
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceMean',
+ 'arguments': [{'input': 'reduceMeanInput'}],
+ 'outputs': 'reduceMeanOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceMeanOutput': {
+ 'data': 40.31047439575195,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceMean float32 1D tensor all negative default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceMeanInput': {
+ 'data': [
+ -37.14686965942383, -44.500423431396484, -6.1265482902526855,
+ -6.321793079376221, -76.53897857666016, -4.137692928314209,
+ -20.76356315612793, -38.749176025390625, -36.81039810180664,
+ -26.274377822875977, -12.566819190979004, -55.28200912475586,
+ -20.69756507873535, -34.19586181640625, -45.36003112792969,
+ -34.996192932128906, -67.84308624267578, -0.7434244155883789,
+ -21.981258392333984, -61.31269454956055, -58.598960876464844,
+ -76.02980041503906, -23.91740608215332, -22.94187355041504
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceMean',
+ 'arguments': [{'input': 'reduceMeanInput'}],
+ 'outputs': 'reduceMeanOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceMeanOutput': {
+ 'data': -34.74319839477539,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'reduceMean float32 1D tensor all positive integers default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceMeanInput': {
+ 'data': [
+ 42, 24, 44, 38, 82, 93, 64, 40, 48, 78, 81, 59,
+ 45, 18, 3, 77, 60, 19, 66, 8, 21, 19, 62, 71
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceMean',
+ 'arguments': [{'input': 'reduceMeanInput'}],
+ 'outputs': 'reduceMeanOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceMeanOutput': {
+ 'data': 48.41666793823242,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'reduceMean float32 1D tensor all negative integers default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceMeanInput': {
+ 'data': [
+ -73, -8, -55, -73, -61, -54, -5, -39, -66, -53, -57, -39,
+ -62, -98, -36, -1, -75, -8, -71, -72, -67, -16, -21, -31
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceMean',
+ 'arguments': [{'input': 'reduceMeanInput'}],
+ 'outputs': 'reduceMeanOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceMeanOutput': {
+ 'data': -47.54166793823242,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceMean float32 2D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceMeanInput': {
+ 'data': [
+ 95.84498596191406, 75.6937026977539, 1.5417721271514893,
+ 8.787034034729004, 70.08280181884766, 13.784331321716309,
+ 20.006067276000977, 94.80963897705078, 25.82918930053711,
+ 94.13260650634766, 67.72958374023438, 16.09935188293457,
+ 92.1943359375, 11.567352294921875, 52.70549774169922,
+ 22.471792221069336, 3.662332534790039, 20.210277557373047,
+ 58.56523132324219, 28.673492431640625, 42.13419723510742,
+ 21.63775062561035, 14.160697937011719, 15.127351760864258
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceMean',
+ 'arguments': [{'input': 'reduceMeanInput'}],
+ 'outputs': 'reduceMeanOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceMeanOutput': {
+ 'data': 40.31047439575195,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceMean float32 3D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceMeanInput': {
+ 'data': [
+ 95.84498596191406, 75.6937026977539, 1.5417721271514893,
+ 8.787034034729004, 70.08280181884766, 13.784331321716309,
+ 20.006067276000977, 94.80963897705078, 25.82918930053711,
+ 94.13260650634766, 67.72958374023438, 16.09935188293457,
+ 92.1943359375, 11.567352294921875, 52.70549774169922,
+ 22.471792221069336, 3.662332534790039, 20.210277557373047,
+ 58.56523132324219, 28.673492431640625, 42.13419723510742,
+ 21.63775062561035, 14.160697937011719, 15.127351760864258
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceMean',
+ 'arguments': [{'input': 'reduceMeanInput'}],
+ 'outputs': 'reduceMeanOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceMeanOutput': {
+ 'data': 40.31047439575195,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceMean float32 4D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceMeanInput': {
+ 'data': [
+ 95.84498596191406, 75.6937026977539, 1.5417721271514893,
+ 8.787034034729004, 70.08280181884766, 13.784331321716309,
+ 20.006067276000977, 94.80963897705078, 25.82918930053711,
+ 94.13260650634766, 67.72958374023438, 16.09935188293457,
+ 92.1943359375, 11.567352294921875, 52.70549774169922,
+ 22.471792221069336, 3.662332534790039, 20.210277557373047,
+ 58.56523132324219, 28.673492431640625, 42.13419723510742,
+ 21.63775062561035, 14.160697937011719, 15.127351760864258
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceMean',
+ 'arguments': [{'input': 'reduceMeanInput'}],
+ 'outputs': 'reduceMeanOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceMeanOutput': {
+ 'data': 40.31047439575195,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceMean float32 5D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceMeanInput': {
+ 'data': [
+ 95.84498596191406, 75.6937026977539, 1.5417721271514893,
+ 8.787034034729004, 70.08280181884766, 13.784331321716309,
+ 20.006067276000977, 94.80963897705078, 25.82918930053711,
+ 94.13260650634766, 67.72958374023438, 16.09935188293457,
+ 92.1943359375, 11.567352294921875, 52.70549774169922,
+ 22.471792221069336, 3.662332534790039, 20.210277557373047,
+ 58.56523132324219, 28.673492431640625, 42.13419723510742,
+ 21.63775062561035, 14.160697937011719, 15.127351760864258
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 1, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceMean',
+ 'arguments': [{'input': 'reduceMeanInput'}],
+ 'outputs': 'reduceMeanOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceMeanOutput': {
+ 'data': 40.31047439575195,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceMean float32 3D tensor options.axes',
+ 'graph': {
+ 'inputs': {
+ 'reduceMeanInput': {
+ 'data': [
+ 95.84498596191406, 75.6937026977539, 1.5417721271514893,
+ 8.787034034729004, 70.08280181884766, 13.784331321716309,
+ 20.006067276000977, 94.80963897705078, 25.82918930053711,
+ 94.13260650634766, 67.72958374023438, 16.09935188293457,
+ 92.1943359375, 11.567352294921875, 52.70549774169922,
+ 22.471792221069336, 3.662332534790039, 20.210277557373047,
+ 58.56523132324219, 28.673492431640625, 42.13419723510742,
+ 21.63775062561035, 14.160697937011719, 15.127351760864258
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceMean',
+ 'arguments': [{'input': 'reduceMeanInput'}, {'options': {'axes': [2]}}],
+ 'outputs': 'reduceMeanOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceMeanOutput': {
+ 'data': [
+ 45.46687316894531, 49.670711517333984, 50.94768142700195,
+ 44.734745025634766, 27.777833938598633, 23.264999389648438
+ ],
+ 'descriptor': {'dimensions': [2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceMean float32 4D tensor options.axes',
+ 'graph': {
+ 'inputs': {
+ 'reduceMeanInput': {
+ 'data': [
+ 95.84498596191406, 75.6937026977539, 1.5417721271514893,
+ 8.787034034729004, 70.08280181884766, 13.784331321716309,
+ 20.006067276000977, 94.80963897705078, 25.82918930053711,
+ 94.13260650634766, 67.72958374023438, 16.09935188293457,
+ 92.1943359375, 11.567352294921875, 52.70549774169922,
+ 22.471792221069336, 3.662332534790039, 20.210277557373047,
+ 58.56523132324219, 28.673492431640625, 42.13419723510742,
+ 21.63775062561035, 14.160697937011719, 15.127351760864258
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceMean',
+ 'arguments':
+ [{'input': 'reduceMeanInput'}, {'options': {'axes': [0, 2]}}],
+ 'outputs': 'reduceMeanOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceMeanOutput': {
+ 'data': [
+ 54.82453536987305, 40.251548767089844, 22.060470581054688,
+ 48.58541488647461, 51.343353271484375, 24.797523498535156
+ ],
+ 'descriptor': {'dimensions': [2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceMean float32 3D tensor options.keepDimensions=false',
+ 'graph': {
+ 'inputs': {
+ 'reduceMeanInput': {
+ 'data': [
+ 95.84498596191406, 75.6937026977539, 1.5417721271514893,
+ 8.787034034729004, 70.08280181884766, 13.784331321716309,
+ 20.006067276000977, 94.80963897705078, 25.82918930053711,
+ 94.13260650634766, 67.72958374023438, 16.09935188293457,
+ 92.1943359375, 11.567352294921875, 52.70549774169922,
+ 22.471792221069336, 3.662332534790039, 20.210277557373047,
+ 58.56523132324219, 28.673492431640625, 42.13419723510742,
+ 21.63775062561035, 14.160697937011719, 15.127351760864258
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceMean',
+ 'arguments': [
+ {'input': 'reduceMeanInput'}, {'options': {'keepDimensions': false}}
+ ],
+ 'outputs': 'reduceMeanOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceMeanOutput': {
+ 'data': 40.31047439575195,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceMean float32 3D tensor options.keepDimensions=true',
+ 'graph': {
+ 'inputs': {
+ 'reduceMeanInput': {
+ 'data': [
+ 95.84498596191406, 75.6937026977539, 1.5417721271514893,
+ 8.787034034729004, 70.08280181884766, 13.784331321716309,
+ 20.006067276000977, 94.80963897705078, 25.82918930053711,
+ 94.13260650634766, 67.72958374023438, 16.09935188293457,
+ 92.1943359375, 11.567352294921875, 52.70549774169922,
+ 22.471792221069336, 3.662332534790039, 20.210277557373047,
+ 58.56523132324219, 28.673492431640625, 42.13419723510742,
+ 21.63775062561035, 14.160697937011719, 15.127351760864258
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceMean',
+ 'arguments': [
+ {'input': 'reduceMeanInput'}, {'options': {'keepDimensions': true}}
+ ],
+ 'outputs': 'reduceMeanOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceMeanOutput': {
+ 'data': [40.31047439575195],
+ 'descriptor': {'dimensions': [1, 1, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceMean float32 4D tensor options.keepDimensions=false',
+ 'graph': {
+ 'inputs': {
+ 'reduceMeanInput': {
+ 'data': [
+ 95.84498596191406, 75.6937026977539, 1.5417721271514893,
+ 8.787034034729004, 70.08280181884766, 13.784331321716309,
+ 20.006067276000977, 94.80963897705078, 25.82918930053711,
+ 94.13260650634766, 67.72958374023438, 16.09935188293457,
+ 92.1943359375, 11.567352294921875, 52.70549774169922,
+ 22.471792221069336, 3.662332534790039, 20.210277557373047,
+ 58.56523132324219, 28.673492431640625, 42.13419723510742,
+ 21.63775062561035, 14.160697937011719, 15.127351760864258
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceMean',
+ 'arguments': [
+ {'input': 'reduceMeanInput'}, {'options': {'keepDimensions': false}}
+ ],
+ 'outputs': 'reduceMeanOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceMeanOutput': {
+ 'data': 40.31047439575195,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceMean float32 4D tensor options.keepDimensions=true',
+ 'graph': {
+ 'inputs': {
+ 'reduceMeanInput': {
+ 'data': [
+ 95.84498596191406, 75.6937026977539, 1.5417721271514893,
+ 8.787034034729004, 70.08280181884766, 13.784331321716309,
+ 20.006067276000977, 94.80963897705078, 25.82918930053711,
+ 94.13260650634766, 67.72958374023438, 16.09935188293457,
+ 92.1943359375, 11.567352294921875, 52.70549774169922,
+ 22.471792221069336, 3.662332534790039, 20.210277557373047,
+ 58.56523132324219, 28.673492431640625, 42.13419723510742,
+ 21.63775062561035, 14.160697937011719, 15.127351760864258
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceMean',
+ 'arguments': [
+ {'input': 'reduceMeanInput'}, {'options': {'keepDimensions': true}}
+ ],
+ 'outputs': 'reduceMeanOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceMeanOutput': {
+ 'data': [40.31047439575195],
+ 'descriptor': {'dimensions': [1, 1, 1, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'reduceMean float32 4D tensor options.axes with options.keepDimensions=false',
+ 'graph': {
+ 'inputs': {
+ 'reduceMeanInput': {
+ 'data': [
+ 95.84498596191406, 75.6937026977539, 1.5417721271514893,
+ 8.787034034729004, 70.08280181884766, 13.784331321716309,
+ 20.006067276000977, 94.80963897705078, 25.82918930053711,
+ 94.13260650634766, 67.72958374023438, 16.09935188293457,
+ 92.1943359375, 11.567352294921875, 52.70549774169922,
+ 22.471792221069336, 3.662332534790039, 20.210277557373047,
+ 58.56523132324219, 28.673492431640625, 42.13419723510742,
+ 21.63775062561035, 14.160697937011719, 15.127351760864258
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceMean',
+ 'arguments': [
+ {'input': 'reduceMeanInput'},
+ {'options': {'axes': [1, 3], 'keepDimensions': false}}
+ ],
+ 'outputs': 'reduceMeanOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceMeanOutput': {
+ 'data': [
+ 52.287559509277344, 45.10261917114258, 47.640018463134766,
+ 16.211700439453125
+ ],
+ 'descriptor': {'dimensions': [2, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'reduceMean float32 4D tensor options.axes with options.keepDimensions=true',
+ 'graph': {
+ 'inputs': {
+ 'reduceMeanInput': {
+ 'data': [
+ 95.84498596191406, 75.6937026977539, 1.5417721271514893,
+ 8.787034034729004, 70.08280181884766, 13.784331321716309,
+ 20.006067276000977, 94.80963897705078, 25.82918930053711,
+ 94.13260650634766, 67.72958374023438, 16.09935188293457,
+ 92.1943359375, 11.567352294921875, 52.70549774169922,
+ 22.471792221069336, 3.662332534790039, 20.210277557373047,
+ 58.56523132324219, 28.673492431640625, 42.13419723510742,
+ 21.63775062561035, 14.160697937011719, 15.127351760864258
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceMean',
+ 'arguments': [
+ {'input': 'reduceMeanInput'},
+ {'options': {'axes': [1, 3], 'keepDimensions': true}}
+ ],
+ 'outputs': 'reduceMeanOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceMeanOutput': {
+ 'data': [
+ 52.287559509277344, 45.10261917114258, 47.640018463134766,
+ 16.211700439453125
+ ],
+ 'descriptor': {'dimensions': [2, 1, 2, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ reduceMeanTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getReductionOperatorsPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/reduce_min.https.any.js b/tests/wpt/tests/webnn/conformance_tests/reduce_min.https.any.js
new file mode 100644
index 00000000000..6cc38d6a078
--- /dev/null
+++ b/tests/wpt/tests/webnn/conformance_tests/reduce_min.https.any.js
@@ -0,0 +1,549 @@
+// META: title=test WebNN API reduction operations
+// META: global=window,dedicatedworker
+// META: variant=?cpu
+// META: variant=?gpu
+// META: variant=?npu
+// META: script=../resources/utils.js
+// META: timeout=long
+
+'use strict';
+
+// https://www.w3.org/TR/webnn/#dom-mlgraphbuilder-reducemin
+// Reduce the input tensor along all dimensions, or along the axes specified in
+// the axes array parameter.
+//
+// dictionary MLReduceOptions {
+// sequence<[EnforceRange] unsigned long> axes;
+// boolean keepDimensions = false;
+// };
+//
+// MLOperand reduceMin(MLOperand input, optional MLReduceOptions options = {});
+
+const getReductionOperatorsPrecisionTolerance = (graphResources) => {
+ return {
+ metricType: 'ULP',
+ value: 0,
+ };
+};
+
+const reduceMinTests = [
+ {
+ 'name': 'reduceMin float32 0D constant tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceMinInput': {
+ 'data': [-58.76195526123047],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceMin',
+ 'arguments': [{'input': 'reduceMinInput'}],
+ 'outputs': 'reduceMinOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceMinOutput': {
+ 'data': -58.76195526123047,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceMin float32 0D constant tensor empty axes',
+ 'graph': {
+ 'inputs': {
+ 'reduceMinInput': {
+ 'data': [-58.76195526123047],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceMin',
+ 'arguments': [{'input': 'reduceMinInput'}, {'options': {'axes': []}}],
+ 'outputs': 'reduceMinOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceMinOutput': {
+ 'data': -58.76195526123047,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceMin float32 1D constant tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceMinInput': {
+ 'data': [
+ -58.76195526123047, -87.9623031616211, -70.13690185546875,
+ -53.61766815185547, -39.50931167602539, 76.48815155029297,
+ -18.705087661743164, 44.78261947631836, 30.70233917236328,
+ 61.46361541748047, 77.84043884277344, -53.747413635253906,
+ -31.713542938232422, -9.735438346862793, 77.9365234375,
+ 99.01705932617188, 73.39929962158203, 92.0845947265625,
+ -59.40851974487305, -84.4076919555664, 75.88834381103516,
+ 96.02651977539062, -55.97655487060547, -1.7911018133163452
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceMin',
+ 'arguments': [{'input': 'reduceMinInput'}],
+ 'outputs': 'reduceMinOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceMinOutput': {
+ 'data': -87.9623031616211,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceMin float32 1D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceMinInput': {
+ 'data': [
+ -58.76195526123047, -87.9623031616211, -70.13690185546875,
+ -53.61766815185547, -39.50931167602539, 76.48815155029297,
+ -18.705087661743164, 44.78261947631836, 30.70233917236328,
+ 61.46361541748047, 77.84043884277344, -53.747413635253906,
+ -31.713542938232422, -9.735438346862793, 77.9365234375,
+ 99.01705932617188, 73.39929962158203, 92.0845947265625,
+ -59.40851974487305, -84.4076919555664, 75.88834381103516,
+ 96.02651977539062, -55.97655487060547, -1.7911018133163452
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceMin',
+ 'arguments': [{'input': 'reduceMinInput'}],
+ 'outputs': 'reduceMinOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceMinOutput': {
+ 'data': -87.9623031616211,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceMin float32 2D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceMinInput': {
+ 'data': [
+ -58.76195526123047, -87.9623031616211, -70.13690185546875,
+ -53.61766815185547, -39.50931167602539, 76.48815155029297,
+ -18.705087661743164, 44.78261947631836, 30.70233917236328,
+ 61.46361541748047, 77.84043884277344, -53.747413635253906,
+ -31.713542938232422, -9.735438346862793, 77.9365234375,
+ 99.01705932617188, 73.39929962158203, 92.0845947265625,
+ -59.40851974487305, -84.4076919555664, 75.88834381103516,
+ 96.02651977539062, -55.97655487060547, -1.7911018133163452
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceMin',
+ 'arguments': [{'input': 'reduceMinInput'}],
+ 'outputs': 'reduceMinOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceMinOutput': {
+ 'data': -87.9623031616211,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceMin float32 3D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceMinInput': {
+ 'data': [
+ -58.76195526123047, -87.9623031616211, -70.13690185546875,
+ -53.61766815185547, -39.50931167602539, 76.48815155029297,
+ -18.705087661743164, 44.78261947631836, 30.70233917236328,
+ 61.46361541748047, 77.84043884277344, -53.747413635253906,
+ -31.713542938232422, -9.735438346862793, 77.9365234375,
+ 99.01705932617188, 73.39929962158203, 92.0845947265625,
+ -59.40851974487305, -84.4076919555664, 75.88834381103516,
+ 96.02651977539062, -55.97655487060547, -1.7911018133163452
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceMin',
+ 'arguments': [{'input': 'reduceMinInput'}],
+ 'outputs': 'reduceMinOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceMinOutput': {
+ 'data': -87.9623031616211,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceMin float32 4D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceMinInput': {
+ 'data': [
+ -58.76195526123047, -87.9623031616211, -70.13690185546875,
+ -53.61766815185547, -39.50931167602539, 76.48815155029297,
+ -18.705087661743164, 44.78261947631836, 30.70233917236328,
+ 61.46361541748047, 77.84043884277344, -53.747413635253906,
+ -31.713542938232422, -9.735438346862793, 77.9365234375,
+ 99.01705932617188, 73.39929962158203, 92.0845947265625,
+ -59.40851974487305, -84.4076919555664, 75.88834381103516,
+ 96.02651977539062, -55.97655487060547, -1.7911018133163452
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceMin',
+ 'arguments': [{'input': 'reduceMinInput'}],
+ 'outputs': 'reduceMinOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceMinOutput': {
+ 'data': -87.9623031616211,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceMin float32 5D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceMinInput': {
+ 'data': [
+ -58.76195526123047, -87.9623031616211, -70.13690185546875,
+ -53.61766815185547, -39.50931167602539, 76.48815155029297,
+ -18.705087661743164, 44.78261947631836, 30.70233917236328,
+ 61.46361541748047, 77.84043884277344, -53.747413635253906,
+ -31.713542938232422, -9.735438346862793, 77.9365234375,
+ 99.01705932617188, 73.39929962158203, 92.0845947265625,
+ -59.40851974487305, -84.4076919555664, 75.88834381103516,
+ 96.02651977539062, -55.97655487060547, -1.7911018133163452
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 1, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceMin',
+ 'arguments': [{'input': 'reduceMinInput'}],
+ 'outputs': 'reduceMinOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceMinOutput': {
+ 'data': -87.9623031616211,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceMin float32 3D tensor options.axes',
+ 'graph': {
+ 'inputs': {
+ 'reduceMinInput': {
+ 'data': [
+ -58.76195526123047, -87.9623031616211, -70.13690185546875,
+ -53.61766815185547, -39.50931167602539, 76.48815155029297,
+ -18.705087661743164, 44.78261947631836, 30.70233917236328,
+ 61.46361541748047, 77.84043884277344, -53.747413635253906,
+ -31.713542938232422, -9.735438346862793, 77.9365234375,
+ 99.01705932617188, 73.39929962158203, 92.0845947265625,
+ -59.40851974487305, -84.4076919555664, 75.88834381103516,
+ 96.02651977539062, -55.97655487060547, -1.7911018133163452
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceMin',
+ 'arguments': [{'input': 'reduceMinInput'}, {'options': {'axes': [2]}}],
+ 'outputs': 'reduceMinOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceMinOutput': {
+ 'data': [
+ -87.9623031616211, -39.50931167602539, -53.747413635253906,
+ -31.713542938232422, -84.4076919555664, -55.97655487060547
+ ],
+ 'descriptor': {'dimensions': [2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceMin float32 4D tensor options.axes',
+ 'graph': {
+ 'inputs': {
+ 'reduceMinInput': {
+ 'data': [
+ -58.76195526123047, -87.9623031616211, -70.13690185546875,
+ -53.61766815185547, -39.50931167602539, 76.48815155029297,
+ -18.705087661743164, 44.78261947631836, 30.70233917236328,
+ 61.46361541748047, 77.84043884277344, -53.747413635253906,
+ -31.713542938232422, -9.735438346862793, 77.9365234375,
+ 99.01705932617188, 73.39929962158203, 92.0845947265625,
+ -59.40851974487305, -84.4076919555664, 75.88834381103516,
+ 96.02651977539062, -55.97655487060547, -1.7911018133163452
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceMin',
+ 'arguments':
+ [{'input': 'reduceMinInput'}, {'options': {'axes': [0, 2]}}],
+ 'outputs': 'reduceMinOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceMinOutput': {
+ 'data': [
+ -58.76195526123047, -87.9623031616211, -70.13690185546875,
+ -59.40851974487305, -84.4076919555664, -53.747413635253906
+ ],
+ 'descriptor': {'dimensions': [2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceMin float32 3D tensor options.keepDimensions=false',
+ 'graph': {
+ 'inputs': {
+ 'reduceMinInput': {
+ 'data': [
+ -58.76195526123047, -87.9623031616211, -70.13690185546875,
+ -53.61766815185547, -39.50931167602539, 76.48815155029297,
+ -18.705087661743164, 44.78261947631836, 30.70233917236328,
+ 61.46361541748047, 77.84043884277344, -53.747413635253906,
+ -31.713542938232422, -9.735438346862793, 77.9365234375,
+ 99.01705932617188, 73.39929962158203, 92.0845947265625,
+ -59.40851974487305, -84.4076919555664, 75.88834381103516,
+ 96.02651977539062, -55.97655487060547, -1.7911018133163452
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceMin',
+ 'arguments': [
+ {'input': 'reduceMinInput'}, {'options': {'keepDimensions': false}}
+ ],
+ 'outputs': 'reduceMinOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceMinOutput': {
+ 'data': -87.9623031616211,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceMin float32 3D tensor options.keepDimensions=true',
+ 'graph': {
+ 'inputs': {
+ 'reduceMinInput': {
+ 'data': [
+ -58.76195526123047, -87.9623031616211, -70.13690185546875,
+ -53.61766815185547, -39.50931167602539, 76.48815155029297,
+ -18.705087661743164, 44.78261947631836, 30.70233917236328,
+ 61.46361541748047, 77.84043884277344, -53.747413635253906,
+ -31.713542938232422, -9.735438346862793, 77.9365234375,
+ 99.01705932617188, 73.39929962158203, 92.0845947265625,
+ -59.40851974487305, -84.4076919555664, 75.88834381103516,
+ 96.02651977539062, -55.97655487060547, -1.7911018133163452
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceMin',
+ 'arguments': [
+ {'input': 'reduceMinInput'}, {'options': {'keepDimensions': true}}
+ ],
+ 'outputs': 'reduceMinOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceMinOutput': {
+ 'data': [-87.9623031616211],
+ 'descriptor': {'dimensions': [1, 1, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceMin float32 4D tensor options.keepDimensions=false',
+ 'graph': {
+ 'inputs': {
+ 'reduceMinInput': {
+ 'data': [
+ -58.76195526123047, -87.9623031616211, -70.13690185546875,
+ -53.61766815185547, -39.50931167602539, 76.48815155029297,
+ -18.705087661743164, 44.78261947631836, 30.70233917236328,
+ 61.46361541748047, 77.84043884277344, -53.747413635253906,
+ -31.713542938232422, -9.735438346862793, 77.9365234375,
+ 99.01705932617188, 73.39929962158203, 92.0845947265625,
+ -59.40851974487305, -84.4076919555664, 75.88834381103516,
+ 96.02651977539062, -55.97655487060547, -1.7911018133163452
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceMin',
+ 'arguments': [
+ {'input': 'reduceMinInput'}, {'options': {'keepDimensions': false}}
+ ],
+ 'outputs': 'reduceMinOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceMinOutput': {
+ 'data': -87.9623031616211,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceMin float32 4D tensor options.keepDimensions=true',
+ 'graph': {
+ 'inputs': {
+ 'reduceMinInput': {
+ 'data': [
+ -58.76195526123047, -87.9623031616211, -70.13690185546875,
+ -53.61766815185547, -39.50931167602539, 76.48815155029297,
+ -18.705087661743164, 44.78261947631836, 30.70233917236328,
+ 61.46361541748047, 77.84043884277344, -53.747413635253906,
+ -31.713542938232422, -9.735438346862793, 77.9365234375,
+ 99.01705932617188, 73.39929962158203, 92.0845947265625,
+ -59.40851974487305, -84.4076919555664, 75.88834381103516,
+ 96.02651977539062, -55.97655487060547, -1.7911018133163452
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceMin',
+ 'arguments': [
+ {'input': 'reduceMinInput'}, {'options': {'keepDimensions': true}}
+ ],
+ 'outputs': 'reduceMinOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceMinOutput': {
+ 'data': [-87.9623031616211],
+ 'descriptor': {'dimensions': [1, 1, 1, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'reduceMin float32 4D tensor options.axes with options.keepDimensions=false',
+ 'graph': {
+ 'inputs': {
+ 'reduceMinInput': {
+ 'data': [
+ -58.76195526123047, -87.9623031616211, -70.13690185546875,
+ -53.61766815185547, -39.50931167602539, 76.48815155029297,
+ -18.705087661743164, 44.78261947631836, 30.70233917236328,
+ 61.46361541748047, 77.84043884277344, -53.747413635253906,
+ -31.713542938232422, -9.735438346862793, 77.9365234375,
+ 99.01705932617188, 73.39929962158203, 92.0845947265625,
+ -59.40851974487305, -84.4076919555664, 75.88834381103516,
+ 96.02651977539062, -55.97655487060547, -1.7911018133163452
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceMin',
+ 'arguments': [
+ {'input': 'reduceMinInput'},
+ {'options': {'axes': [1, 3], 'keepDimensions': false}}
+ ],
+ 'outputs': 'reduceMinOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceMinOutput': {
+ 'data': [
+ -87.9623031616211, -53.747413635253906, -84.4076919555664,
+ -55.97655487060547
+ ],
+ 'descriptor': {'dimensions': [2, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'reduceMin float32 4D tensor options.axes with options.keepDimensions=true',
+ 'graph': {
+ 'inputs': {
+ 'reduceMinInput': {
+ 'data': [
+ -58.76195526123047, -87.9623031616211, -70.13690185546875,
+ -53.61766815185547, -39.50931167602539, 76.48815155029297,
+ -18.705087661743164, 44.78261947631836, 30.70233917236328,
+ 61.46361541748047, 77.84043884277344, -53.747413635253906,
+ -31.713542938232422, -9.735438346862793, 77.9365234375,
+ 99.01705932617188, 73.39929962158203, 92.0845947265625,
+ -59.40851974487305, -84.4076919555664, 75.88834381103516,
+ 96.02651977539062, -55.97655487060547, -1.7911018133163452
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceMin',
+ 'arguments': [
+ {'input': 'reduceMinInput'},
+ {'options': {'axes': [1, 3], 'keepDimensions': true}}
+ ],
+ 'outputs': 'reduceMinOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceMinOutput': {
+ 'data': [
+ -87.9623031616211, -53.747413635253906, -84.4076919555664,
+ -55.97655487060547
+ ],
+ 'descriptor': {'dimensions': [2, 1, 2, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ reduceMinTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getReductionOperatorsPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/reduce_product.https.any.js b/tests/wpt/tests/webnn/conformance_tests/reduce_product.https.any.js
new file mode 100644
index 00000000000..745f83b3cea
--- /dev/null
+++ b/tests/wpt/tests/webnn/conformance_tests/reduce_product.https.any.js
@@ -0,0 +1,548 @@
+// META: title=test WebNN API reduction operations
+// META: global=window,dedicatedworker
+// META: variant=?cpu
+// META: variant=?gpu
+// META: variant=?npu
+// META: script=../resources/utils.js
+// META: timeout=long
+
+'use strict';
+
+// https://www.w3.org/TR/webnn/#dom-mlgraphbuilder-reduceproduct
+// Reduce the input tensor along all dimensions, or along the axes specified in
+// the axes array parameter.
+//
+// dictionary MLReduceOptions {
+// sequence<[EnforceRange] unsigned long> axes;
+// boolean keepDimensions = false;
+// };
+//
+// MLOperand reduceProduct(MLOperand input, optional MLReduceOptions options
+// = {});
+
+const getReductionOperatorsPrecisionTolerance = (graphResources) => {
+ return {
+ metricType: 'ULP',
+ value: getReducedElementCount(graphResources),
+ };
+};
+
+const reduceProductTests = [
+ {
+ 'name': 'reduceProduct float32 0D constant tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceProductInput': {
+ 'data': [-68.75911712646484],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceProduct',
+ 'arguments': [{'input': 'reduceProductInput'}],
+ 'outputs': 'reduceProductOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceProductOutput': {
+ 'data': -68.75911712646484,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceProduct float32 0D constant tensor empty axes',
+ 'graph': {
+ 'inputs': {
+ 'reduceProductInput': {
+ 'data': [-68.75911712646484],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceProduct',
+ 'arguments':
+ [{'input': 'reduceProductInput'}, {'options': {'axes': []}}],
+ 'outputs': 'reduceProductOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceProductOutput': {
+ 'data': -68.75911712646484,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceProduct float32 1D constant tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceProductInput': {
+ 'data': [
+ -68.75911712646484, 99.44961547851562, 24.86055564880371,
+ -44.23515319824219, -22.699743270874023, 79.97555541992188,
+ 14.4650239944458, 49.23109436035156, 30.058706283569336,
+ 69.45106506347656, -20.15709686279297, -58.0255126953125,
+ 51.896610260009766, -2.020799160003662, 39.392974853515625,
+ 26.78073501586914, -97.97651672363281, 48.66154479980469,
+ -85.19523620605469, -18.16986083984375, 64.83759307861328,
+ -14.95883846282959, -74.50932312011719, -11.319679260253906
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceProduct',
+ 'arguments': [{'input': 'reduceProductInput'}],
+ 'outputs': 'reduceProductOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceProductOutput': {
+ 'data': 1.5855958784642327e+37,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceProduct float32 1D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceProductInput': {
+ 'data': [
+ -68.75911712646484, 99.44961547851562, 24.86055564880371,
+ -44.23515319824219, -22.699743270874023, 79.97555541992188,
+ 14.4650239944458, 49.23109436035156, 30.058706283569336,
+ 69.45106506347656, -20.15709686279297, -58.0255126953125,
+ 51.896610260009766, -2.020799160003662, 39.392974853515625,
+ 26.78073501586914, -97.97651672363281, 48.66154479980469,
+ -85.19523620605469, -18.16986083984375, 64.83759307861328,
+ -14.95883846282959, -74.50932312011719, -11.319679260253906
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceProduct',
+ 'arguments': [{'input': 'reduceProductInput'}],
+ 'outputs': 'reduceProductOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceProductOutput': {
+ 'data': 1.5855958784642327e+37,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceProduct float32 2D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceProductInput': {
+ 'data': [
+ -68.75911712646484, 99.44961547851562, 24.86055564880371,
+ -44.23515319824219, -22.699743270874023, 79.97555541992188,
+ 14.4650239944458, 49.23109436035156, 30.058706283569336,
+ 69.45106506347656, -20.15709686279297, -58.0255126953125,
+ 51.896610260009766, -2.020799160003662, 39.392974853515625,
+ 26.78073501586914, -97.97651672363281, 48.66154479980469,
+ -85.19523620605469, -18.16986083984375, 64.83759307861328,
+ -14.95883846282959, -74.50932312011719, -11.319679260253906
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceProduct',
+ 'arguments': [{'input': 'reduceProductInput'}],
+ 'outputs': 'reduceProductOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceProductOutput': {
+ 'data': 1.5855958784642327e+37,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceProduct float32 3D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceProductInput': {
+ 'data': [
+ -68.75911712646484, 99.44961547851562, 24.86055564880371,
+ -44.23515319824219, -22.699743270874023, 79.97555541992188,
+ 14.4650239944458, 49.23109436035156, 30.058706283569336,
+ 69.45106506347656, -20.15709686279297, -58.0255126953125,
+ 51.896610260009766, -2.020799160003662, 39.392974853515625,
+ 26.78073501586914, -97.97651672363281, 48.66154479980469,
+ -85.19523620605469, -18.16986083984375, 64.83759307861328,
+ -14.95883846282959, -74.50932312011719, -11.319679260253906
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceProduct',
+ 'arguments': [{'input': 'reduceProductInput'}],
+ 'outputs': 'reduceProductOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceProductOutput': {
+ 'data': 1.5855958784642327e+37,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceProduct float32 4D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceProductInput': {
+ 'data': [
+ -68.75911712646484, 99.44961547851562, 24.86055564880371,
+ -44.23515319824219, -22.699743270874023, 79.97555541992188,
+ 14.4650239944458, 49.23109436035156, 30.058706283569336,
+ 69.45106506347656, -20.15709686279297, -58.0255126953125,
+ 51.896610260009766, -2.020799160003662, 39.392974853515625,
+ 26.78073501586914, -97.97651672363281, 48.66154479980469,
+ -85.19523620605469, -18.16986083984375, 64.83759307861328,
+ -14.95883846282959, -74.50932312011719, -11.319679260253906
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceProduct',
+ 'arguments': [{'input': 'reduceProductInput'}],
+ 'outputs': 'reduceProductOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceProductOutput': {
+ 'data': 1.5855958784642327e+37,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceProduct float32 5D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceProductInput': {
+ 'data': [
+ -68.75911712646484, 99.44961547851562, 24.86055564880371,
+ -44.23515319824219, -22.699743270874023, 79.97555541992188,
+ 14.4650239944458, 49.23109436035156, 30.058706283569336,
+ 69.45106506347656, -20.15709686279297, -58.0255126953125,
+ 51.896610260009766, -2.020799160003662, 39.392974853515625,
+ 26.78073501586914, -97.97651672363281, 48.66154479980469,
+ -85.19523620605469, -18.16986083984375, 64.83759307861328,
+ -14.95883846282959, -74.50932312011719, -11.319679260253906
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 1, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceProduct',
+ 'arguments': [{'input': 'reduceProductInput'}],
+ 'outputs': 'reduceProductOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceProductOutput': {
+ 'data': 1.5855958784642327e+37,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceProduct float32 3D tensor options.axes',
+ 'graph': {
+ 'inputs': {
+ 'reduceProductInput': {
+ 'data': [
+ -68.75911712646484, 99.44961547851562, 24.86055564880371,
+ -44.23515319824219, -22.699743270874023, 79.97555541992188,
+ 14.4650239944458, 49.23109436035156, 30.058706283569336,
+ 69.45106506347656, -20.15709686279297, -58.0255126953125,
+ 51.896610260009766, -2.020799160003662, 39.392974853515625,
+ 26.78073501586914, -97.97651672363281, 48.66154479980469,
+ -85.19523620605469, -18.16986083984375, 64.83759307861328,
+ -14.95883846282959, -74.50932312011719, -11.319679260253906
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceProduct',
+ 'arguments':
+ [{'input': 'reduceProductInput'}, {'options': {'axes': [2]}}],
+ 'outputs': 'reduceProductOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceProductOutput': {
+ 'data': [
+ 7519895, -1292816.375, 2441721.75, -110637.7734375, -7380313.5,
+ -818030.5
+ ],
+ 'descriptor': {'dimensions': [2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceProduct float32 4D tensor options.axes',
+ 'graph': {
+ 'inputs': {
+ 'reduceProductInput': {
+ 'data': [
+ -68.75911712646484, 99.44961547851562, 24.86055564880371,
+ -44.23515319824219, -22.699743270874023, 79.97555541992188,
+ 14.4650239944458, 49.23109436035156, 30.058706283569336,
+ 69.45106506347656, -20.15709686279297, -58.0255126953125,
+ 51.896610260009766, -2.020799160003662, 39.392974853515625,
+ 26.78073501586914, -97.97651672363281, 48.66154479980469,
+ -85.19523620605469, -18.16986083984375, 64.83759307861328,
+ -14.95883846282959, -74.50932312011719, -11.319679260253906
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceProduct',
+ 'arguments':
+ [{'input': 'reduceProductInput'}, {'options': {'axes': [0, 2]}}],
+ 'outputs': 'reduceProductOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceProductOutput': {
+ 'data': [
+ 4227263.5, -446960.5625, 3811296.75, 1280298.5, -1343475.375,
+ 1280118.75
+ ],
+ 'descriptor': {'dimensions': [2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceProduct float32 3D tensor options.keepDimensions=false',
+ 'graph': {
+ 'inputs': {
+ 'reduceProductInput': {
+ 'data': [
+ -68.75911712646484, 99.44961547851562, 24.86055564880371,
+ -44.23515319824219, -22.699743270874023, 79.97555541992188,
+ 14.4650239944458, 49.23109436035156, 30.058706283569336,
+ 69.45106506347656, -20.15709686279297, -58.0255126953125,
+ 51.896610260009766, -2.020799160003662, 39.392974853515625,
+ 26.78073501586914, -97.97651672363281, 48.66154479980469,
+ -85.19523620605469, -18.16986083984375, 64.83759307861328,
+ -14.95883846282959, -74.50932312011719, -11.319679260253906
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceProduct',
+ 'arguments': [
+ {'input': 'reduceProductInput'},
+ {'options': {'keepDimensions': false}}
+ ],
+ 'outputs': 'reduceProductOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceProductOutput': {
+ 'data': 1.5855958784642327e+37,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceProduct float32 3D tensor options.keepDimensions=true',
+ 'graph': {
+ 'inputs': {
+ 'reduceProductInput': {
+ 'data': [
+ -68.75911712646484, 99.44961547851562, 24.86055564880371,
+ -44.23515319824219, -22.699743270874023, 79.97555541992188,
+ 14.4650239944458, 49.23109436035156, 30.058706283569336,
+ 69.45106506347656, -20.15709686279297, -58.0255126953125,
+ 51.896610260009766, -2.020799160003662, 39.392974853515625,
+ 26.78073501586914, -97.97651672363281, 48.66154479980469,
+ -85.19523620605469, -18.16986083984375, 64.83759307861328,
+ -14.95883846282959, -74.50932312011719, -11.319679260253906
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceProduct',
+ 'arguments': [
+ {'input': 'reduceProductInput'}, {'options': {'keepDimensions': true}}
+ ],
+ 'outputs': 'reduceProductOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceProductOutput': {
+ 'data': [1.5855958784642327e+37],
+ 'descriptor': {'dimensions': [1, 1, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceProduct float32 4D tensor options.keepDimensions=false',
+ 'graph': {
+ 'inputs': {
+ 'reduceProductInput': {
+ 'data': [
+ -68.75911712646484, 99.44961547851562, 24.86055564880371,
+ -44.23515319824219, -22.699743270874023, 79.97555541992188,
+ 14.4650239944458, 49.23109436035156, 30.058706283569336,
+ 69.45106506347656, -20.15709686279297, -58.0255126953125,
+ 51.896610260009766, -2.020799160003662, 39.392974853515625,
+ 26.78073501586914, -97.97651672363281, 48.66154479980469,
+ -85.19523620605469, -18.16986083984375, 64.83759307861328,
+ -14.95883846282959, -74.50932312011719, -11.319679260253906
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceProduct',
+ 'arguments': [
+ {'input': 'reduceProductInput'},
+ {'options': {'keepDimensions': false}}
+ ],
+ 'outputs': 'reduceProductOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceProductOutput': {
+ 'data': 1.5855958784642327e+37,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceProduct float32 4D tensor options.keepDimensions=true',
+ 'graph': {
+ 'inputs': {
+ 'reduceProductInput': {
+ 'data': [
+ -68.75911712646484, 99.44961547851562, 24.86055564880371,
+ -44.23515319824219, -22.699743270874023, 79.97555541992188,
+ 14.4650239944458, 49.23109436035156, 30.058706283569336,
+ 69.45106506347656, -20.15709686279297, -58.0255126953125,
+ 51.896610260009766, -2.020799160003662, 39.392974853515625,
+ 26.78073501586914, -97.97651672363281, 48.66154479980469,
+ -85.19523620605469, -18.16986083984375, 64.83759307861328,
+ -14.95883846282959, -74.50932312011719, -11.319679260253906
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceProduct',
+ 'arguments': [
+ {'input': 'reduceProductInput'}, {'options': {'keepDimensions': true}}
+ ],
+ 'outputs': 'reduceProductOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceProductOutput': {
+ 'data': [1.5855958784642327e+37],
+ 'descriptor': {'dimensions': [1, 1, 1, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'reduceProduct float32 4D tensor options.axes with options.keepDimensions=false',
+ 'graph': {
+ 'inputs': {
+ 'reduceProductInput': {
+ 'data': [
+ -68.75911712646484, 99.44961547851562, 24.86055564880371,
+ -44.23515319824219, -22.699743270874023, 79.97555541992188,
+ 14.4650239944458, 49.23109436035156, 30.058706283569336,
+ 69.45106506347656, -20.15709686279297, -58.0255126953125,
+ 51.896610260009766, -2.020799160003662, 39.392974853515625,
+ 26.78073501586914, -97.97651672363281, 48.66154479980469,
+ -85.19523620605469, -18.16986083984375, 64.83759307861328,
+ -14.95883846282959, -74.50932312011719, -11.319679260253906
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceProduct',
+ 'arguments': [
+ {'input': 'reduceProductInput'},
+ {'options': {'axes': [1, 3], 'keepDimensions': false}}
+ ],
+ 'outputs': 'reduceProductOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceProductOutput': {
+ 'data': [-3638925568, 6523364352, -414643360, 1610916352],
+ 'descriptor': {'dimensions': [2, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'reduceProduct float32 4D tensor options.axes with options.keepDimensions=true',
+ 'graph': {
+ 'inputs': {
+ 'reduceProductInput': {
+ 'data': [
+ -68.75911712646484, 99.44961547851562, 24.86055564880371,
+ -44.23515319824219, -22.699743270874023, 79.97555541992188,
+ 14.4650239944458, 49.23109436035156, 30.058706283569336,
+ 69.45106506347656, -20.15709686279297, -58.0255126953125,
+ 51.896610260009766, -2.020799160003662, 39.392974853515625,
+ 26.78073501586914, -97.97651672363281, 48.66154479980469,
+ -85.19523620605469, -18.16986083984375, 64.83759307861328,
+ -14.95883846282959, -74.50932312011719, -11.319679260253906
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceProduct',
+ 'arguments': [
+ {'input': 'reduceProductInput'},
+ {'options': {'axes': [1, 3], 'keepDimensions': true}}
+ ],
+ 'outputs': 'reduceProductOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceProductOutput': {
+ 'data': [-3638925568, 6523364352, -414643360, 1610916352],
+ 'descriptor': {'dimensions': [2, 1, 2, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ reduceProductTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getReductionOperatorsPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/reduce_sum.https.any.js b/tests/wpt/tests/webnn/conformance_tests/reduce_sum.https.any.js
new file mode 100644
index 00000000000..9aec31d3f68
--- /dev/null
+++ b/tests/wpt/tests/webnn/conformance_tests/reduce_sum.https.any.js
@@ -0,0 +1,630 @@
+// META: title=test WebNN API reduction operations
+// META: global=window,dedicatedworker
+// META: variant=?cpu
+// META: variant=?gpu
+// META: variant=?npu
+// META: script=../resources/utils.js
+// META: timeout=long
+
+'use strict';
+
+// https://www.w3.org/TR/webnn/#dom-mlgraphbuilder-reducesum
+// Reduce the input tensor along all dimensions, or along the axes specified in
+// the axes array parameter.
+//
+// dictionary MLReduceOptions {
+// sequence<[EnforceRange] unsigned long> axes;
+// boolean keepDimensions = false;
+// };
+//
+// MLOperand reduceSum(MLOperand input, optional MLReduceOptions options = {});
+
+const getReductionOperatorsPrecisionTolerance = (graphResources) => {
+ return {
+ metricType: 'ULP',
+ value: getReducedElementCount(graphResources),
+ };
+};
+
+const reduceSumTests = [
+ {
+ 'name': 'reduceSum float32 0D constant tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceSumInput': {
+ 'data': [69.6038589477539],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceSum',
+ 'arguments': [{'input': 'reduceSumInput'}],
+ 'outputs': 'reduceSumOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceSumOutput': {
+ 'data': 69.6038589477539,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceSum float32 0D constant tensor empty axes',
+ 'graph': {
+ 'inputs': {
+ 'reduceSumInput': {
+ 'data': [69.6038589477539],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceSum',
+ 'arguments': [{'input': 'reduceSumInput'}, {'options': {'axes': []}}],
+ 'outputs': 'reduceSumOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceSumOutput': {
+ 'data': 69.6038589477539,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceSum float32 1D constant tensor all positive default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceSumInput': {
+ 'data': [
+ 69.6038589477539, 99.17485809326172, 32.78234100341797,
+ 8.881362915039062, 16.094295501708984, 11.80689525604248,
+ 32.64223861694336, 43.99836349487305, 77.01776885986328,
+ 79.79425811767578, 45.00794982910156, 24.397796630859375,
+ 57.502685546875, 57.60173034667969, 80.26985931396484,
+ 43.65110778808594, 87.5036849975586, 94.50203704833984,
+ 35.54289627075195, 42.856414794921875, 88.58631896972656,
+ 98.85772705078125, 25.626853942871094, 60.1761360168457
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceSum',
+ 'arguments': [{'input': 'reduceSumInput'}],
+ 'outputs': 'reduceSumOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceSumOutput': {
+ 'data': 1313.87939453125,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceSum float32 1D tensor all positive default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceSumInput': {
+ 'data': [
+ 69.6038589477539, 99.17485809326172, 32.78234100341797,
+ 8.881362915039062, 16.094295501708984, 11.80689525604248,
+ 32.64223861694336, 43.99836349487305, 77.01776885986328,
+ 79.79425811767578, 45.00794982910156, 24.397796630859375,
+ 57.502685546875, 57.60173034667969, 80.26985931396484,
+ 43.65110778808594, 87.5036849975586, 94.50203704833984,
+ 35.54289627075195, 42.856414794921875, 88.58631896972656,
+ 98.85772705078125, 25.626853942871094, 60.1761360168457
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceSum',
+ 'arguments': [{'input': 'reduceSumInput'}],
+ 'outputs': 'reduceSumOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceSumOutput': {
+ 'data': 1313.87939453125,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceSum float32 1D tensor all negative default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceSumInput': {
+ 'data': [
+ -51.77016830444336, -34.46467971801758, -40.98350524902344,
+ -83.34922790527344, -67.67525482177734, -18.7031192779541,
+ -20.28106117248535, -20.12305450439453, -83.63451385498047,
+ -23.651084899902344, -10.208438873291016, -36.2129020690918,
+ -76.26201629638672, -9.094745635986328, -53.889339447021484,
+ -67.52340698242188, -71.14580535888672, -82.04484558105469,
+ -96.29924774169922, -68.46700286865234, -26.107192993164062,
+ -68.0182113647461, -4.8330769538879395, -48.900699615478516
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceSum',
+ 'arguments': [{'input': 'reduceSumInput'}],
+ 'outputs': 'reduceSumOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceSumOutput': {
+ 'data': -1163.642578125,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceSum float32 1D tensor all positive integers default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceSumInput': {
+ 'data': [
+ 56, 90, 67, 33, 20, 58, 22, 15, 86, 79, 59, 99,
+ 16, 95, 67, 11, 60, 89, 50, 57, 77, 89, 10, 2
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceSum',
+ 'arguments': [{'input': 'reduceSumInput'}],
+ 'outputs': 'reduceSumOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceSumOutput': {
+ 'data': 1307,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceSum float32 1D tensor all negative integers default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceSumInput': {
+ 'data': [
+ -55, -36, -74, -17, -67, -95, -3, -67, -95, -13, -45, -9,
+ -33, -98, -86, -11, -70, -44, -31, -68, -79, -24, -60, -36
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceSum',
+ 'arguments': [{'input': 'reduceSumInput'}],
+ 'outputs': 'reduceSumOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceSumOutput': {
+ 'data': -1216,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceSum float32 2D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceSumInput': {
+ 'data': [
+ 69.6038589477539, 99.17485809326172, 32.78234100341797,
+ 8.881362915039062, 16.094295501708984, 11.80689525604248,
+ 32.64223861694336, 43.99836349487305, 77.01776885986328,
+ 79.79425811767578, 45.00794982910156, 24.397796630859375,
+ 57.502685546875, 57.60173034667969, 80.26985931396484,
+ 43.65110778808594, 87.5036849975586, 94.50203704833984,
+ 35.54289627075195, 42.856414794921875, 88.58631896972656,
+ 98.85772705078125, 25.626853942871094, 60.1761360168457
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceSum',
+ 'arguments': [{'input': 'reduceSumInput'}],
+ 'outputs': 'reduceSumOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceSumOutput': {
+ 'data': 1313.87939453125,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceSum float32 3D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceSumInput': {
+ 'data': [
+ 69.6038589477539, 99.17485809326172, 32.78234100341797,
+ 8.881362915039062, 16.094295501708984, 11.80689525604248,
+ 32.64223861694336, 43.99836349487305, 77.01776885986328,
+ 79.79425811767578, 45.00794982910156, 24.397796630859375,
+ 57.502685546875, 57.60173034667969, 80.26985931396484,
+ 43.65110778808594, 87.5036849975586, 94.50203704833984,
+ 35.54289627075195, 42.856414794921875, 88.58631896972656,
+ 98.85772705078125, 25.626853942871094, 60.1761360168457
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceSum',
+ 'arguments': [{'input': 'reduceSumInput'}],
+ 'outputs': 'reduceSumOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceSumOutput': {
+ 'data': 1313.87939453125,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceSum float32 4D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceSumInput': {
+ 'data': [
+ 69.6038589477539, 99.17485809326172, 32.78234100341797,
+ 8.881362915039062, 16.094295501708984, 11.80689525604248,
+ 32.64223861694336, 43.99836349487305, 77.01776885986328,
+ 79.79425811767578, 45.00794982910156, 24.397796630859375,
+ 57.502685546875, 57.60173034667969, 80.26985931396484,
+ 43.65110778808594, 87.5036849975586, 94.50203704833984,
+ 35.54289627075195, 42.856414794921875, 88.58631896972656,
+ 98.85772705078125, 25.626853942871094, 60.1761360168457
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceSum',
+ 'arguments': [{'input': 'reduceSumInput'}],
+ 'outputs': 'reduceSumOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceSumOutput': {
+ 'data': 1313.87939453125,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceSum float32 5D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceSumInput': {
+ 'data': [
+ 69.6038589477539, 99.17485809326172, 32.78234100341797,
+ 8.881362915039062, 16.094295501708984, 11.80689525604248,
+ 32.64223861694336, 43.99836349487305, 77.01776885986328,
+ 79.79425811767578, 45.00794982910156, 24.397796630859375,
+ 57.502685546875, 57.60173034667969, 80.26985931396484,
+ 43.65110778808594, 87.5036849975586, 94.50203704833984,
+ 35.54289627075195, 42.856414794921875, 88.58631896972656,
+ 98.85772705078125, 25.626853942871094, 60.1761360168457
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 1, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceSum',
+ 'arguments': [{'input': 'reduceSumInput'}],
+ 'outputs': 'reduceSumOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceSumOutput': {
+ 'data': 1313.87939453125,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceSum float32 3D tensor options.axes',
+ 'graph': {
+ 'inputs': {
+ 'reduceSumInput': {
+ 'data': [
+ 69.6038589477539, 99.17485809326172, 32.78234100341797,
+ 8.881362915039062, 16.094295501708984, 11.80689525604248,
+ 32.64223861694336, 43.99836349487305, 77.01776885986328,
+ 79.79425811767578, 45.00794982910156, 24.397796630859375,
+ 57.502685546875, 57.60173034667969, 80.26985931396484,
+ 43.65110778808594, 87.5036849975586, 94.50203704833984,
+ 35.54289627075195, 42.856414794921875, 88.58631896972656,
+ 98.85772705078125, 25.626853942871094, 60.1761360168457
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceSum',
+ 'arguments': [{'input': 'reduceSumInput'}, {'options': {'axes': [2]}}],
+ 'outputs': 'reduceSumOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceSumOutput': {
+ 'data': [
+ 210.44241333007812, 104.54179382324219, 226.2177734375,
+ 239.025390625, 260.405029296875, 273.2470397949219
+ ],
+ 'descriptor': {'dimensions': [2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceSum float32 4D tensor options.axes',
+ 'graph': {
+ 'inputs': {
+ 'reduceSumInput': {
+ 'data': [
+ 69.6038589477539, 99.17485809326172, 32.78234100341797,
+ 8.881362915039062, 16.094295501708984, 11.80689525604248,
+ 32.64223861694336, 43.99836349487305, 77.01776885986328,
+ 79.79425811767578, 45.00794982910156, 24.397796630859375,
+ 57.502685546875, 57.60173034667969, 80.26985931396484,
+ 43.65110778808594, 87.5036849975586, 94.50203704833984,
+ 35.54289627075195, 42.856414794921875, 88.58631896972656,
+ 98.85772705078125, 25.626853942871094, 60.1761360168457
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceSum',
+ 'arguments':
+ [{'input': 'reduceSumInput'}, {'options': {'axes': [0, 2]}}],
+ 'outputs': 'reduceSumOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceSumOutput': {
+ 'data': [
+ 179.63900756835938, 260.37457275390625, 219.3611297607422,
+ 246.83712768554688, 157.4895782470703, 250.1780242919922
+ ],
+ 'descriptor': {'dimensions': [2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceSum float32 3D tensor options.keepDimensions=false',
+ 'graph': {
+ 'inputs': {
+ 'reduceSumInput': {
+ 'data': [
+ 69.6038589477539, 99.17485809326172, 32.78234100341797,
+ 8.881362915039062, 16.094295501708984, 11.80689525604248,
+ 32.64223861694336, 43.99836349487305, 77.01776885986328,
+ 79.79425811767578, 45.00794982910156, 24.397796630859375,
+ 57.502685546875, 57.60173034667969, 80.26985931396484,
+ 43.65110778808594, 87.5036849975586, 94.50203704833984,
+ 35.54289627075195, 42.856414794921875, 88.58631896972656,
+ 98.85772705078125, 25.626853942871094, 60.1761360168457
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceSum',
+ 'arguments': [
+ {'input': 'reduceSumInput'}, {'options': {'keepDimensions': false}}
+ ],
+ 'outputs': 'reduceSumOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceSumOutput': {
+ 'data': 1313.87939453125,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceSum float32 3D tensor options.keepDimensions=true',
+ 'graph': {
+ 'inputs': {
+ 'reduceSumInput': {
+ 'data': [
+ 69.6038589477539, 99.17485809326172, 32.78234100341797,
+ 8.881362915039062, 16.094295501708984, 11.80689525604248,
+ 32.64223861694336, 43.99836349487305, 77.01776885986328,
+ 79.79425811767578, 45.00794982910156, 24.397796630859375,
+ 57.502685546875, 57.60173034667969, 80.26985931396484,
+ 43.65110778808594, 87.5036849975586, 94.50203704833984,
+ 35.54289627075195, 42.856414794921875, 88.58631896972656,
+ 98.85772705078125, 25.626853942871094, 60.1761360168457
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceSum',
+ 'arguments': [
+ {'input': 'reduceSumInput'}, {'options': {'keepDimensions': true}}
+ ],
+ 'outputs': 'reduceSumOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceSumOutput': {
+ 'data': [1313.87939453125],
+ 'descriptor': {'dimensions': [1, 1, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceSum float32 4D tensor options.keepDimensions=false',
+ 'graph': {
+ 'inputs': {
+ 'reduceSumInput': {
+ 'data': [
+ 69.6038589477539, 99.17485809326172, 32.78234100341797,
+ 8.881362915039062, 16.094295501708984, 11.80689525604248,
+ 32.64223861694336, 43.99836349487305, 77.01776885986328,
+ 79.79425811767578, 45.00794982910156, 24.397796630859375,
+ 57.502685546875, 57.60173034667969, 80.26985931396484,
+ 43.65110778808594, 87.5036849975586, 94.50203704833984,
+ 35.54289627075195, 42.856414794921875, 88.58631896972656,
+ 98.85772705078125, 25.626853942871094, 60.1761360168457
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceSum',
+ 'arguments': [
+ {'input': 'reduceSumInput'}, {'options': {'keepDimensions': false}}
+ ],
+ 'outputs': 'reduceSumOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceSumOutput': {
+ 'data': 1313.87939453125,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceSum float32 4D tensor options.keepDimensions=true',
+ 'graph': {
+ 'inputs': {
+ 'reduceSumInput': {
+ 'data': [
+ 69.6038589477539, 99.17485809326172, 32.78234100341797,
+ 8.881362915039062, 16.094295501708984, 11.80689525604248,
+ 32.64223861694336, 43.99836349487305, 77.01776885986328,
+ 79.79425811767578, 45.00794982910156, 24.397796630859375,
+ 57.502685546875, 57.60173034667969, 80.26985931396484,
+ 43.65110778808594, 87.5036849975586, 94.50203704833984,
+ 35.54289627075195, 42.856414794921875, 88.58631896972656,
+ 98.85772705078125, 25.626853942871094, 60.1761360168457
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceSum',
+ 'arguments': [
+ {'input': 'reduceSumInput'}, {'options': {'keepDimensions': true}}
+ ],
+ 'outputs': 'reduceSumOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceSumOutput': {
+ 'data': [1313.87939453125],
+ 'descriptor': {'dimensions': [1, 1, 1, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'reduceSum float32 4D tensor options.axes with options.keepDimensions=false',
+ 'graph': {
+ 'inputs': {
+ 'reduceSumInput': {
+ 'data': [
+ 69.6038589477539, 99.17485809326172, 32.78234100341797,
+ 8.881362915039062, 16.094295501708984, 11.80689525604248,
+ 32.64223861694336, 43.99836349487305, 77.01776885986328,
+ 79.79425811767578, 45.00794982910156, 24.397796630859375,
+ 57.502685546875, 57.60173034667969, 80.26985931396484,
+ 43.65110778808594, 87.5036849975586, 94.50203704833984,
+ 35.54289627075195, 42.856414794921875, 88.58631896972656,
+ 98.85772705078125, 25.626853942871094, 60.1761360168457
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceSum',
+ 'arguments': [
+ {'input': 'reduceSumInput'},
+ {'options': {'axes': [1, 3], 'keepDimensions': false}}
+ ],
+ 'outputs': 'reduceSumOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceSumOutput': {
+ 'data': [
+ 355.21942138671875, 185.98255920410156, 362.3598937988281,
+ 410.3175354003906
+ ],
+ 'descriptor': {'dimensions': [2, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'reduceSum float32 4D tensor options.axes with options.keepDimensions=true',
+ 'graph': {
+ 'inputs': {
+ 'reduceSumInput': {
+ 'data': [
+ 69.6038589477539, 99.17485809326172, 32.78234100341797,
+ 8.881362915039062, 16.094295501708984, 11.80689525604248,
+ 32.64223861694336, 43.99836349487305, 77.01776885986328,
+ 79.79425811767578, 45.00794982910156, 24.397796630859375,
+ 57.502685546875, 57.60173034667969, 80.26985931396484,
+ 43.65110778808594, 87.5036849975586, 94.50203704833984,
+ 35.54289627075195, 42.856414794921875, 88.58631896972656,
+ 98.85772705078125, 25.626853942871094, 60.1761360168457
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceSum',
+ 'arguments': [
+ {'input': 'reduceSumInput'},
+ {'options': {'axes': [1, 3], 'keepDimensions': true}}
+ ],
+ 'outputs': 'reduceSumOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceSumOutput': {
+ 'data': [
+ 355.21942138671875, 185.98255920410156, 362.3598937988281,
+ 410.3175354003906
+ ],
+ 'descriptor': {'dimensions': [2, 1, 2, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ reduceSumTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getReductionOperatorsPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/reduce_sum_square.https.any.js b/tests/wpt/tests/webnn/conformance_tests/reduce_sum_square.https.any.js
new file mode 100644
index 00000000000..10930c44c6e
--- /dev/null
+++ b/tests/wpt/tests/webnn/conformance_tests/reduce_sum_square.https.any.js
@@ -0,0 +1,661 @@
+// META: title=test WebNN API reduction operations
+// META: global=window,dedicatedworker
+// META: variant=?cpu
+// META: variant=?gpu
+// META: variant=?npu
+// META: script=../resources/utils.js
+// META: timeout=long
+
+'use strict';
+
+// https://www.w3.org/TR/webnn/#dom-mlgraphbuilder-reducesumsquare
+// Reduce the input tensor along all dimensions, or along the axes specified in
+// the axes array parameter.
+//
+// dictionary MLReduceOptions {
+// sequence<[EnforceRange] unsigned long> axes;
+// boolean keepDimensions = false;
+// };
+//
+// MLOperand reduceSumSquare(MLOperand input, optional MLReduceOptions options
+// = {});
+
+const getReductionOperatorsPrecisionTolerance = (graphResources) => {
+ return {
+ metricType: 'ULP',
+ value: getReducedElementCount(graphResources) * 2,
+ };
+};
+
+const reduceSumSquareTests = [
+ {
+ 'name': 'reduceSumSquare float32 0D constant tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceSumSquareInput': {
+ 'data': [52.5615348815918],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceSumSquare',
+ 'arguments': [{'input': 'reduceSumSquareInput'}],
+ 'outputs': 'reduceSumSquareOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceSumSquareOutput': {
+ 'data': 2762.71484375,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceSumSquare float32 0D constant tensor empty axes',
+ 'graph': {
+ 'inputs': {
+ 'reduceSumSquareInput': {
+ 'data': [52.5615348815918],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceSumSquare',
+ 'arguments':
+ [{'input': 'reduceSumSquareInput'}, {'options': {'axes': []}}],
+ 'outputs': 'reduceSumSquareOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceSumSquareOutput': {
+ 'data': 2762.71484375,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'reduceSumSquare float32 1D constant tensor all positive default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceSumSquareInput': {
+ 'data': [
+ 52.5615348815918, 2.6261062622070312, 82.04877471923828,
+ 14.401411056518555, 33.96051788330078, 83.9383773803711,
+ 47.445045471191406, 19.177289962768555, 13.493006706237793,
+ 44.152381896972656, 86.53118133544922, 70.20919799804688,
+ 25.67262840270996, 79.73770141601562, 66.42284393310547,
+ 70.40363311767578, 13.503327369689941, 41.225399017333984,
+ 6.654552936553955, 85.79743957519531, 89.91349029541016,
+ 53.55647277832031, 39.48537063598633, 3.9460408687591553
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceSumSquare',
+ 'arguments': [{'input': 'reduceSumSquareInput'}],
+ 'outputs': 'reduceSumSquareOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceSumSquareOutput': {
+ 'data': 73275.859375,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceSumSquare float32 1D tensor all positive default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceSumSquareInput': {
+ 'data': [
+ 52.5615348815918, 2.6261062622070312, 82.04877471923828,
+ 14.401411056518555, 33.96051788330078, 83.9383773803711,
+ 47.445045471191406, 19.177289962768555, 13.493006706237793,
+ 44.152381896972656, 86.53118133544922, 70.20919799804688,
+ 25.67262840270996, 79.73770141601562, 66.42284393310547,
+ 70.40363311767578, 13.503327369689941, 41.225399017333984,
+ 6.654552936553955, 85.79743957519531, 89.91349029541016,
+ 53.55647277832031, 39.48537063598633, 3.9460408687591553
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceSumSquare',
+ 'arguments': [{'input': 'reduceSumSquareInput'}],
+ 'outputs': 'reduceSumSquareOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceSumSquareOutput': {
+ 'data': 73275.859375,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceSumSquare float32 1D tensor all negative default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceSumSquareInput': {
+ 'data': [
+ -21.45201301574707, -57.30725860595703, -72.8390121459961,
+ -0.059761520475149155, -71.73678588867188, -44.61909103393555,
+ -43.12002182006836, -91.3373794555664, -33.17243957519531,
+ -48.555931091308594, -95.6286392211914, -20.876630783081055,
+ -16.690837860107422, -39.52110290527344, -7.5107855796813965,
+ -90.59027099609375, -42.21683120727539, -76.74274444580078,
+ -98.22420501708984, -60.272953033447266, -74.73202514648438,
+ -8.543684005737305, -59.888736724853516, -17.99894142150879
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceSumSquare',
+ 'arguments': [{'input': 'reduceSumSquareInput'}],
+ 'outputs': 'reduceSumSquareOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceSumSquareOutput': {
+ 'data': 80052.015625,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'reduceSumSquare float32 1D tensor all positive integers default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceSumSquareInput': {
+ 'data': [
+ 52, 48, 2, 66, 30, 39, 14, 23, 81, 94, 78, 64,
+ 38, 16, 63, 11, 46, 95, 17, 47, 40, 53, 87, 43
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceSumSquare',
+ 'arguments': [{'input': 'reduceSumSquareInput'}],
+ 'outputs': 'reduceSumSquareOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceSumSquareOutput': {
+ 'data': 71347,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'reduceSumSquare float32 1D tensor all negative integers default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceSumSquareInput': {
+ 'data': [
+ -10, -60, -69, -88, -35, -84, -74, -42, -93, -26, -40, -55,
+ -92, -26, -39, -30, -61, -16, -16, -36, -9, -89, -45, -29
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceSumSquare',
+ 'arguments': [{'input': 'reduceSumSquareInput'}],
+ 'outputs': 'reduceSumSquareOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceSumSquareOutput': {
+ 'data': 73634,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceSumSquare float32 1D tensor with empty axes',
+ 'graph': {
+ 'inputs': {
+ 'reduceSumSquareInput': {
+ 'data': [2, 3],
+ 'descriptor': {'dimensions': [2], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceSumSquare',
+ 'arguments':
+ [{'input': 'reduceSumSquareInput'}, {'options': {'axes': []}}],
+ 'outputs': 'reduceSumSquareOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceSumSquareOutput': {
+ 'data': [4, 9],
+ 'descriptor': {'dimensions': [2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceSumSquare float32 2D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceSumSquareInput': {
+ 'data': [
+ 52.5615348815918, 2.6261062622070312, 82.04877471923828,
+ 14.401411056518555, 33.96051788330078, 83.9383773803711,
+ 47.445045471191406, 19.177289962768555, 13.493006706237793,
+ 44.152381896972656, 86.53118133544922, 70.20919799804688,
+ 25.67262840270996, 79.73770141601562, 66.42284393310547,
+ 70.40363311767578, 13.503327369689941, 41.225399017333984,
+ 6.654552936553955, 85.79743957519531, 89.91349029541016,
+ 53.55647277832031, 39.48537063598633, 3.9460408687591553
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceSumSquare',
+ 'arguments': [{'input': 'reduceSumSquareInput'}],
+ 'outputs': 'reduceSumSquareOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceSumSquareOutput': {
+ 'data': 73275.859375,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceSumSquare float32 3D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceSumSquareInput': {
+ 'data': [
+ 52.5615348815918, 2.6261062622070312, 82.04877471923828,
+ 14.401411056518555, 33.96051788330078, 83.9383773803711,
+ 47.445045471191406, 19.177289962768555, 13.493006706237793,
+ 44.152381896972656, 86.53118133544922, 70.20919799804688,
+ 25.67262840270996, 79.73770141601562, 66.42284393310547,
+ 70.40363311767578, 13.503327369689941, 41.225399017333984,
+ 6.654552936553955, 85.79743957519531, 89.91349029541016,
+ 53.55647277832031, 39.48537063598633, 3.9460408687591553
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceSumSquare',
+ 'arguments': [{'input': 'reduceSumSquareInput'}],
+ 'outputs': 'reduceSumSquareOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceSumSquareOutput': {
+ 'data': 73275.859375,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceSumSquare float32 4D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceSumSquareInput': {
+ 'data': [
+ 52.5615348815918, 2.6261062622070312, 82.04877471923828,
+ 14.401411056518555, 33.96051788330078, 83.9383773803711,
+ 47.445045471191406, 19.177289962768555, 13.493006706237793,
+ 44.152381896972656, 86.53118133544922, 70.20919799804688,
+ 25.67262840270996, 79.73770141601562, 66.42284393310547,
+ 70.40363311767578, 13.503327369689941, 41.225399017333984,
+ 6.654552936553955, 85.79743957519531, 89.91349029541016,
+ 53.55647277832031, 39.48537063598633, 3.9460408687591553
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceSumSquare',
+ 'arguments': [{'input': 'reduceSumSquareInput'}],
+ 'outputs': 'reduceSumSquareOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceSumSquareOutput': {
+ 'data': 73275.859375,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceSumSquare float32 5D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'reduceSumSquareInput': {
+ 'data': [
+ 52.5615348815918, 2.6261062622070312, 82.04877471923828,
+ 14.401411056518555, 33.96051788330078, 83.9383773803711,
+ 47.445045471191406, 19.177289962768555, 13.493006706237793,
+ 44.152381896972656, 86.53118133544922, 70.20919799804688,
+ 25.67262840270996, 79.73770141601562, 66.42284393310547,
+ 70.40363311767578, 13.503327369689941, 41.225399017333984,
+ 6.654552936553955, 85.79743957519531, 89.91349029541016,
+ 53.55647277832031, 39.48537063598633, 3.9460408687591553
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 1, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceSumSquare',
+ 'arguments': [{'input': 'reduceSumSquareInput'}],
+ 'outputs': 'reduceSumSquareOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceSumSquareOutput': {
+ 'data': 73275.859375,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceSumSquare float32 3D tensor options.axes',
+ 'graph': {
+ 'inputs': {
+ 'reduceSumSquareInput': {
+ 'data': [
+ 52.5615348815918, 2.6261062622070312, 82.04877471923828,
+ 14.401411056518555, 33.96051788330078, 83.9383773803711,
+ 47.445045471191406, 19.177289962768555, 13.493006706237793,
+ 44.152381896972656, 86.53118133544922, 70.20919799804688,
+ 25.67262840270996, 79.73770141601562, 66.42284393310547,
+ 70.40363311767578, 13.503327369689941, 41.225399017333984,
+ 6.654552936553955, 85.79743957519531, 89.91349029541016,
+ 53.55647277832031, 39.48537063598633, 3.9460408687591553
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceSumSquare',
+ 'arguments':
+ [{'input': 'reduceSumSquareInput'}, {'options': {'axes': [2]}}],
+ 'outputs': 'reduceSumSquareOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceSumSquareOutput': {
+ 'data': [
+ 9709.013671875, 10817.7685546875, 14548.470703125, 16385.8515625,
+ 9287.357421875, 12527.3974609375
+ ],
+ 'descriptor': {'dimensions': [2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceSumSquare float32 4D tensor options.axes',
+ 'graph': {
+ 'inputs': {
+ 'reduceSumSquareInput': {
+ 'data': [
+ 52.5615348815918, 2.6261062622070312, 82.04877471923828,
+ 14.401411056518555, 33.96051788330078, 83.9383773803711,
+ 47.445045471191406, 19.177289962768555, 13.493006706237793,
+ 44.152381896972656, 86.53118133544922, 70.20919799804688,
+ 25.67262840270996, 79.73770141601562, 66.42284393310547,
+ 70.40363311767578, 13.503327369689941, 41.225399017333984,
+ 6.654552936553955, 85.79743957519531, 89.91349029541016,
+ 53.55647277832031, 39.48537063598633, 3.9460408687591553
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceSumSquare',
+ 'arguments':
+ [{'input': 'reduceSumSquareInput'}, {'options': {'axes': [0, 2]}}],
+ 'outputs': 'reduceSumSquareOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceSumSquareOutput': {
+ 'data': [
+ 8585.87109375, 7700.654296875, 19889.1796875, 7113.0439453125,
+ 16775.708984375, 13211.3994140625
+ ],
+ 'descriptor': {'dimensions': [2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceSumSquare float32 3D tensor options.keepDimensions=false',
+ 'graph': {
+ 'inputs': {
+ 'reduceSumSquareInput': {
+ 'data': [
+ 52.5615348815918, 2.6261062622070312, 82.04877471923828,
+ 14.401411056518555, 33.96051788330078, 83.9383773803711,
+ 47.445045471191406, 19.177289962768555, 13.493006706237793,
+ 44.152381896972656, 86.53118133544922, 70.20919799804688,
+ 25.67262840270996, 79.73770141601562, 66.42284393310547,
+ 70.40363311767578, 13.503327369689941, 41.225399017333984,
+ 6.654552936553955, 85.79743957519531, 89.91349029541016,
+ 53.55647277832031, 39.48537063598633, 3.9460408687591553
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceSumSquare',
+ 'arguments': [
+ {'input': 'reduceSumSquareInput'},
+ {'options': {'keepDimensions': false}}
+ ],
+ 'outputs': 'reduceSumSquareOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceSumSquareOutput': {
+ 'data': 73275.859375,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceSumSquare float32 3D tensor options.keepDimensions=true',
+ 'graph': {
+ 'inputs': {
+ 'reduceSumSquareInput': {
+ 'data': [
+ 52.5615348815918, 2.6261062622070312, 82.04877471923828,
+ 14.401411056518555, 33.96051788330078, 83.9383773803711,
+ 47.445045471191406, 19.177289962768555, 13.493006706237793,
+ 44.152381896972656, 86.53118133544922, 70.20919799804688,
+ 25.67262840270996, 79.73770141601562, 66.42284393310547,
+ 70.40363311767578, 13.503327369689941, 41.225399017333984,
+ 6.654552936553955, 85.79743957519531, 89.91349029541016,
+ 53.55647277832031, 39.48537063598633, 3.9460408687591553
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceSumSquare',
+ 'arguments': [
+ {'input': 'reduceSumSquareInput'},
+ {'options': {'keepDimensions': true}}
+ ],
+ 'outputs': 'reduceSumSquareOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceSumSquareOutput': {
+ 'data': [73275.859375],
+ 'descriptor': {'dimensions': [1, 1, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceSumSquare float32 4D tensor options.keepDimensions=false',
+ 'graph': {
+ 'inputs': {
+ 'reduceSumSquareInput': {
+ 'data': [
+ 52.5615348815918, 2.6261062622070312, 82.04877471923828,
+ 14.401411056518555, 33.96051788330078, 83.9383773803711,
+ 47.445045471191406, 19.177289962768555, 13.493006706237793,
+ 44.152381896972656, 86.53118133544922, 70.20919799804688,
+ 25.67262840270996, 79.73770141601562, 66.42284393310547,
+ 70.40363311767578, 13.503327369689941, 41.225399017333984,
+ 6.654552936553955, 85.79743957519531, 89.91349029541016,
+ 53.55647277832031, 39.48537063598633, 3.9460408687591553
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceSumSquare',
+ 'arguments': [
+ {'input': 'reduceSumSquareInput'},
+ {'options': {'keepDimensions': false}}
+ ],
+ 'outputs': 'reduceSumSquareOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceSumSquareOutput': {
+ 'data': 73275.859375,
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reduceSumSquare float32 4D tensor options.keepDimensions=true',
+ 'graph': {
+ 'inputs': {
+ 'reduceSumSquareInput': {
+ 'data': [
+ 52.5615348815918, 2.6261062622070312, 82.04877471923828,
+ 14.401411056518555, 33.96051788330078, 83.9383773803711,
+ 47.445045471191406, 19.177289962768555, 13.493006706237793,
+ 44.152381896972656, 86.53118133544922, 70.20919799804688,
+ 25.67262840270996, 79.73770141601562, 66.42284393310547,
+ 70.40363311767578, 13.503327369689941, 41.225399017333984,
+ 6.654552936553955, 85.79743957519531, 89.91349029541016,
+ 53.55647277832031, 39.48537063598633, 3.9460408687591553
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceSumSquare',
+ 'arguments': [
+ {'input': 'reduceSumSquareInput'},
+ {'options': {'keepDimensions': true}}
+ ],
+ 'outputs': 'reduceSumSquareOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceSumSquareOutput': {
+ 'data': [73275.859375],
+ 'descriptor': {'dimensions': [1, 1, 1, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'reduceSumSquare float32 4D tensor options.axes with options.keepDimensions=false',
+ 'graph': {
+ 'inputs': {
+ 'reduceSumSquareInput': {
+ 'data': [
+ 52.5615348815918, 2.6261062622070312, 82.04877471923828,
+ 14.401411056518555, 33.96051788330078, 83.9383773803711,
+ 47.445045471191406, 19.177289962768555, 13.493006706237793,
+ 44.152381896972656, 86.53118133544922, 70.20919799804688,
+ 25.67262840270996, 79.73770141601562, 66.42284393310547,
+ 70.40363311767578, 13.503327369689941, 41.225399017333984,
+ 6.654552936553955, 85.79743957519531, 89.91349029541016,
+ 53.55647277832031, 39.48537063598633, 3.9460408687591553
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceSumSquare',
+ 'arguments': [
+ {'input': 'reduceSumSquareInput'},
+ {'options': {'axes': [1, 3], 'keepDimensions': false}}
+ ],
+ 'outputs': 'reduceSumSquareOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceSumSquareOutput': {
+ 'data': [
+ 12302.474609375, 22772.77734375, 26919.09765625, 11281.5068359375
+ ],
+ 'descriptor': {'dimensions': [2, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'reduceSumSquare float32 4D tensor options.axes with options.keepDimensions=true',
+ 'graph': {
+ 'inputs': {
+ 'reduceSumSquareInput': {
+ 'data': [
+ 52.5615348815918, 2.6261062622070312, 82.04877471923828,
+ 14.401411056518555, 33.96051788330078, 83.9383773803711,
+ 47.445045471191406, 19.177289962768555, 13.493006706237793,
+ 44.152381896972656, 86.53118133544922, 70.20919799804688,
+ 25.67262840270996, 79.73770141601562, 66.42284393310547,
+ 70.40363311767578, 13.503327369689941, 41.225399017333984,
+ 6.654552936553955, 85.79743957519531, 89.91349029541016,
+ 53.55647277832031, 39.48537063598633, 3.9460408687591553
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reduceSumSquare',
+ 'arguments': [
+ {'input': 'reduceSumSquareInput'},
+ {'options': {'axes': [1, 3], 'keepDimensions': true}}
+ ],
+ 'outputs': 'reduceSumSquareOutput'
+ }],
+ 'expectedOutputs': {
+ 'reduceSumSquareOutput': {
+ 'data': [
+ 12302.474609375, 22772.77734375, 26919.09765625, 11281.5068359375
+ ],
+ 'descriptor': {'dimensions': [2, 1, 2, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ reduceSumSquareTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getReductionOperatorsPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/reduction.https.any.js b/tests/wpt/tests/webnn/conformance_tests/reduction.https.any.js
deleted file mode 100644
index f5247ee137c..00000000000
--- a/tests/wpt/tests/webnn/conformance_tests/reduction.https.any.js
+++ /dev/null
@@ -1,26 +0,0 @@
-// META: title=test WebNN API reduction operation
-// META: global=window,dedicatedworker
-// META: variant=?cpu
-// META: variant=?gpu
-// META: variant=?npu
-// META: script=../resources/utils.js
-// META: timeout=long
-
-'use strict';
-
-// https://webmachinelearning.github.io/webnn/#api-mlgraphbuilder-reduce
-
-runWebNNConformanceTests(
- [
- 'reduceL1',
- 'reduceL2',
- 'reduceLogSum',
- 'reduceLogSumExp',
- 'reduceMax',
- 'reduceMean',
- 'reduceMin',
- 'reduceProduct',
- 'reduceSum',
- 'reduceSumSquare',
- ],
- buildOperationWithSingleInput);
diff --git a/tests/wpt/tests/webnn/conformance_tests/relu.https.any.js b/tests/wpt/tests/webnn/conformance_tests/relu.https.any.js
index 458cd61d82c..fb4726b4b3e 100644
--- a/tests/wpt/tests/webnn/conformance_tests/relu.https.any.js
+++ b/tests/wpt/tests/webnn/conformance_tests/relu.https.any.js
@@ -8,6 +8,364 @@
'use strict';
-// https://webmachinelearning.github.io/webnn/#api-mlgraphbuilder-relu
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-relu-method
+// Compute the rectified linear function of the input tensor.
+//
+// MLOperand relu(MLOperand input);
-runWebNNConformanceTests('relu', buildOperationWithSingleInput);
+
+const getReluPrecisionTolerance = (graphResources) => {
+ const toleranceValueDict = {float32: 0, float16: 0};
+ const expectedDataType =
+ getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs);
+ return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]};
+};
+
+const reluTests = [
+ {
+ 'name': 'relu float32 1D constant tensor',
+ 'graph': {
+ 'inputs': {
+ 'reluInput': {
+ 'data': [
+ 79.04724884033203, 2.2503609657287598, 80.73938751220703,
+ 63.9039192199707, 77.67340850830078, -71.0915756225586,
+ -82.74703216552734, -26.81442642211914, -99.16788482666016,
+ -35.71083450317383, 18.361658096313477, -37.36091613769531,
+ -52.8386116027832, -10.408374786376953, 60.6029167175293,
+ -13.64419937133789, -76.5425033569336, -8.132338523864746,
+ 51.51447296142578, -51.63370132446289, -64.56800079345703,
+ -5.093302249908447, 15.354103088378906, 90.03858947753906
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'relu',
+ 'arguments': [{'input': 'reluInput'}],
+ 'outputs': 'reluOutput'
+ }],
+ 'expectedOutputs': {
+ 'reluOutput': {
+ 'data': [
+ 79.04724884033203,
+ 2.2503609657287598,
+ 80.73938751220703,
+ 63.9039192199707,
+ 77.67340850830078,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 18.361658096313477,
+ 0,
+ 0,
+ 0,
+ 60.6029167175293,
+ 0,
+ 0,
+ 0,
+ 51.51447296142578,
+ 0,
+ 0,
+ 0,
+ 15.354103088378906,
+ 90.03858947753906
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'relu float32 1D tensor',
+ 'graph': {
+ 'inputs': {
+ 'reluInput': {
+ 'data': [
+ 79.04724884033203, 2.2503609657287598, 80.73938751220703,
+ 63.9039192199707, 77.67340850830078, -71.0915756225586,
+ -82.74703216552734, -26.81442642211914, -99.16788482666016,
+ -35.71083450317383, 18.361658096313477, -37.36091613769531,
+ -52.8386116027832, -10.408374786376953, 60.6029167175293,
+ -13.64419937133789, -76.5425033569336, -8.132338523864746,
+ 51.51447296142578, -51.63370132446289, -64.56800079345703,
+ -5.093302249908447, 15.354103088378906, 90.03858947753906
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'relu',
+ 'arguments': [{'input': 'reluInput'}],
+ 'outputs': 'reluOutput'
+ }],
+ 'expectedOutputs': {
+ 'reluOutput': {
+ 'data': [
+ 79.04724884033203,
+ 2.2503609657287598,
+ 80.73938751220703,
+ 63.9039192199707,
+ 77.67340850830078,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 18.361658096313477,
+ 0,
+ 0,
+ 0,
+ 60.6029167175293,
+ 0,
+ 0,
+ 0,
+ 51.51447296142578,
+ 0,
+ 0,
+ 0,
+ 15.354103088378906,
+ 90.03858947753906
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'relu float32 2D tensor',
+ 'graph': {
+ 'inputs': {
+ 'reluInput': {
+ 'data': [
+ 79.04724884033203, 2.2503609657287598, 80.73938751220703,
+ 63.9039192199707, 77.67340850830078, -71.0915756225586,
+ -82.74703216552734, -26.81442642211914, -99.16788482666016,
+ -35.71083450317383, 18.361658096313477, -37.36091613769531,
+ -52.8386116027832, -10.408374786376953, 60.6029167175293,
+ -13.64419937133789, -76.5425033569336, -8.132338523864746,
+ 51.51447296142578, -51.63370132446289, -64.56800079345703,
+ -5.093302249908447, 15.354103088378906, 90.03858947753906
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'relu',
+ 'arguments': [{'input': 'reluInput'}],
+ 'outputs': 'reluOutput'
+ }],
+ 'expectedOutputs': {
+ 'reluOutput': {
+ 'data': [
+ 79.04724884033203,
+ 2.2503609657287598,
+ 80.73938751220703,
+ 63.9039192199707,
+ 77.67340850830078,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 18.361658096313477,
+ 0,
+ 0,
+ 0,
+ 60.6029167175293,
+ 0,
+ 0,
+ 0,
+ 51.51447296142578,
+ 0,
+ 0,
+ 0,
+ 15.354103088378906,
+ 90.03858947753906
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'relu float32 3D tensor',
+ 'graph': {
+ 'inputs': {
+ 'reluInput': {
+ 'data': [
+ 79.04724884033203, 2.2503609657287598, 80.73938751220703,
+ 63.9039192199707, 77.67340850830078, -71.0915756225586,
+ -82.74703216552734, -26.81442642211914, -99.16788482666016,
+ -35.71083450317383, 18.361658096313477, -37.36091613769531,
+ -52.8386116027832, -10.408374786376953, 60.6029167175293,
+ -13.64419937133789, -76.5425033569336, -8.132338523864746,
+ 51.51447296142578, -51.63370132446289, -64.56800079345703,
+ -5.093302249908447, 15.354103088378906, 90.03858947753906
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'relu',
+ 'arguments': [{'input': 'reluInput'}],
+ 'outputs': 'reluOutput'
+ }],
+ 'expectedOutputs': {
+ 'reluOutput': {
+ 'data': [
+ 79.04724884033203,
+ 2.2503609657287598,
+ 80.73938751220703,
+ 63.9039192199707,
+ 77.67340850830078,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 18.361658096313477,
+ 0,
+ 0,
+ 0,
+ 60.6029167175293,
+ 0,
+ 0,
+ 0,
+ 51.51447296142578,
+ 0,
+ 0,
+ 0,
+ 15.354103088378906,
+ 90.03858947753906
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'relu float32 4D tensor',
+ 'graph': {
+ 'inputs': {
+ 'reluInput': {
+ 'data': [
+ 79.04724884033203, 2.2503609657287598, 80.73938751220703,
+ 63.9039192199707, 77.67340850830078, -71.0915756225586,
+ -82.74703216552734, -26.81442642211914, -99.16788482666016,
+ -35.71083450317383, 18.361658096313477, -37.36091613769531,
+ -52.8386116027832, -10.408374786376953, 60.6029167175293,
+ -13.64419937133789, -76.5425033569336, -8.132338523864746,
+ 51.51447296142578, -51.63370132446289, -64.56800079345703,
+ -5.093302249908447, 15.354103088378906, 90.03858947753906
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'relu',
+ 'arguments': [{'input': 'reluInput'}],
+ 'outputs': 'reluOutput'
+ }],
+ 'expectedOutputs': {
+ 'reluOutput': {
+ 'data': [
+ 79.04724884033203,
+ 2.2503609657287598,
+ 80.73938751220703,
+ 63.9039192199707,
+ 77.67340850830078,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 18.361658096313477,
+ 0,
+ 0,
+ 0,
+ 60.6029167175293,
+ 0,
+ 0,
+ 0,
+ 51.51447296142578,
+ 0,
+ 0,
+ 0,
+ 15.354103088378906,
+ 90.03858947753906
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'relu float32 5D tensor',
+ 'graph': {
+ 'inputs': {
+ 'reluInput': {
+ 'data': [
+ 79.04724884033203, 2.2503609657287598, 80.73938751220703,
+ 63.9039192199707, 77.67340850830078, -71.0915756225586,
+ -82.74703216552734, -26.81442642211914, -99.16788482666016,
+ -35.71083450317383, 18.361658096313477, -37.36091613769531,
+ -52.8386116027832, -10.408374786376953, 60.6029167175293,
+ -13.64419937133789, -76.5425033569336, -8.132338523864746,
+ 51.51447296142578, -51.63370132446289, -64.56800079345703,
+ -5.093302249908447, 15.354103088378906, 90.03858947753906
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 1, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'relu',
+ 'arguments': [{'input': 'reluInput'}],
+ 'outputs': 'reluOutput'
+ }],
+ 'expectedOutputs': {
+ 'reluOutput': {
+ 'data': [
+ 79.04724884033203,
+ 2.2503609657287598,
+ 80.73938751220703,
+ 63.9039192199707,
+ 77.67340850830078,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 18.361658096313477,
+ 0,
+ 0,
+ 0,
+ 60.6029167175293,
+ 0,
+ 0,
+ 0,
+ 51.51447296142578,
+ 0,
+ 0,
+ 0,
+ 15.354103088378906,
+ 90.03858947753906
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 1, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ reluTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getReluPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/resample2d.https.any.js b/tests/wpt/tests/webnn/conformance_tests/resample2d.https.any.js
index 4d68f9f51bd..bedd348fe58 100644
--- a/tests/wpt/tests/webnn/conformance_tests/resample2d.https.any.js
+++ b/tests/wpt/tests/webnn/conformance_tests/resample2d.https.any.js
@@ -8,6 +8,435 @@
'use strict';
-// https://webmachinelearning.github.io/webnn/#api-mlgraphbuilder-resample2d-method
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-resample2d-method
+// Resample the tensor values from the source to the destination spatial
+// dimensions according to the scaling factors.
+//
+// enum MLInterpolationMode {
+// "nearest-neighbor",
+// "linear"
+// };
+//
+// dictionary MLResample2dOptions {
+// MLInterpolationMode mode = "nearest-neighbor";
+// sequence<float> scales;
+// sequence<[EnforceRange] unsigned long> sizes;
+// sequence<[EnforceRange] unsigned long> axes;
+// };
+//
+// MLOperand resample2d(
+// MLOperand input, optional MLResample2dOptions options = {});
-runWebNNConformanceTests('resample2d', buildOperationWithSingleInput);
+
+const getResample2dPrecisionTolerance = (graphResources) => {
+ const args = graphResources.operators[0].arguments;
+ const options =
+ args.length === 2 ? {...args[1][Object.keys(args[1])[0]]} : {};
+ const expectedOutputs = graphResources.expectedOutputs;
+ const dataType =
+ expectedOutputs[Object.keys(expectedOutputs)[0]].descriptor.dataType;
+ let tolerance;
+
+ if (options.mode && options.mode === 'linear') {
+ // interpolation mode is linear
+ if (dataType === 'float32') {
+ tolerance = 84;
+ } else if (dataType === 'float16') {
+ tolerance = 10;
+ } else {
+ tolerance = 1;
+ }
+ } else {
+ // interpolation mode is nearest-neighbor
+ tolerance = 0;
+ }
+
+ return {metricType: 'ULP', value: tolerance};
+};
+
+const resample2dTests = [
+ {
+ 'name': 'resample2d float32 4D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'resample2dInput': {
+ 'data': [
+ 3.8600528240203857, 45.18463134765625, 87.67153930664062,
+ 98.7821044921875, 66.3741455078125, 3.411583423614502,
+ 86.14930725097656, 95.98133850097656, 76.87126159667969,
+ 16.52591323852539, 65.98783111572266, 25.470922470092773,
+ 22.56010627746582, 92.08479309082031, 85.80876922607422,
+ 92.63166046142578, 29.916208267211914, 75.40460968017578,
+ 62.06375503540039, 1.7712159156799316, 99.4723129272461,
+ 11.440549850463867, 25.396343231201172, 67.0217514038086
+ ],
+ 'descriptor': {'dimensions': [1, 1, 4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'resample2d',
+ 'arguments': [{'input': 'resample2dInput'}],
+ 'outputs': 'resample2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'resample2dOutput': {
+ 'data': [
+ 3.8600528240203857, 45.18463134765625, 87.67153930664062,
+ 98.7821044921875, 66.3741455078125, 3.411583423614502,
+ 86.14930725097656, 95.98133850097656, 76.87126159667969,
+ 16.52591323852539, 65.98783111572266, 25.470922470092773,
+ 22.56010627746582, 92.08479309082031, 85.80876922607422,
+ 92.63166046142578, 29.916208267211914, 75.40460968017578,
+ 62.06375503540039, 1.7712159156799316, 99.4723129272461,
+ 11.440549850463867, 25.396343231201172, 67.0217514038086
+ ],
+ 'descriptor': {'dimensions': [1, 1, 4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'resample2d(upsample) float32 4D tensor options.scales',
+ 'graph': {
+ 'inputs': {
+ 'resample2dInput': {
+ 'data': [
+ 59.92947006225586, 41.98918914794922, 66.39534759521484,
+ 90.7006607055664, 86.95105743408203, 79.10005187988281
+ ],
+ 'descriptor': {'dimensions': [1, 1, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'resample2d',
+ 'arguments':
+ [{'input': 'resample2dInput'}, {'options': {'scales': [2, 2]}}],
+ 'outputs': 'resample2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'resample2dOutput': {
+ 'data': [
+ 59.92947006225586, 59.92947006225586, 41.98918914794922,
+ 41.98918914794922, 66.39534759521484, 66.39534759521484,
+ 59.92947006225586, 59.92947006225586, 41.98918914794922,
+ 41.98918914794922, 66.39534759521484, 66.39534759521484,
+ 90.7006607055664, 90.7006607055664, 86.95105743408203,
+ 86.95105743408203, 79.10005187988281, 79.10005187988281,
+ 90.7006607055664, 90.7006607055664, 86.95105743408203,
+ 86.95105743408203, 79.10005187988281, 79.10005187988281
+ ],
+ 'descriptor': {'dimensions': [1, 1, 4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'resample2d(upsample) float32 4D tensor options.sizes',
+ 'graph': {
+ 'inputs': {
+ 'resample2dInput': {
+ 'data': [
+ 59.92947006225586, 41.98918914794922, 66.39534759521484,
+ 90.7006607055664, 86.95105743408203, 79.10005187988281
+ ],
+ 'descriptor': {'dimensions': [1, 1, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'resample2d',
+ 'arguments':
+ [{'input': 'resample2dInput'}, {'options': {'sizes': [4, 6]}}],
+ 'outputs': 'resample2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'resample2dOutput': {
+ 'data': [
+ 59.92947006225586, 59.92947006225586, 41.98918914794922,
+ 41.98918914794922, 66.39534759521484, 66.39534759521484,
+ 59.92947006225586, 59.92947006225586, 41.98918914794922,
+ 41.98918914794922, 66.39534759521484, 66.39534759521484,
+ 90.7006607055664, 90.7006607055664, 86.95105743408203,
+ 86.95105743408203, 79.10005187988281, 79.10005187988281,
+ 90.7006607055664, 90.7006607055664, 86.95105743408203,
+ 86.95105743408203, 79.10005187988281, 79.10005187988281
+ ],
+ 'descriptor': {'dimensions': [1, 1, 4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'resample2d(upsample) float32 4D tensor options.sizes ignored options.scales',
+ 'graph': {
+ 'inputs': {
+ 'resample2dInput': {
+ 'data': [
+ 59.92947006225586, 41.98918914794922, 66.39534759521484,
+ 90.7006607055664, 86.95105743408203, 79.10005187988281
+ ],
+ 'descriptor': {'dimensions': [1, 1, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'resample2d',
+ 'arguments': [
+ {'input': 'resample2dInput'},
+ {'options': {'scales': [0.5, 0.5], 'sizes': [4, 6]}}
+ ],
+ 'outputs': 'resample2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'resample2dOutput': {
+ 'data': [
+ 59.92947006225586, 59.92947006225586, 41.98918914794922,
+ 41.98918914794922, 66.39534759521484, 66.39534759521484,
+ 59.92947006225586, 59.92947006225586, 41.98918914794922,
+ 41.98918914794922, 66.39534759521484, 66.39534759521484,
+ 90.7006607055664, 90.7006607055664, 86.95105743408203,
+ 86.95105743408203, 79.10005187988281, 79.10005187988281,
+ 90.7006607055664, 90.7006607055664, 86.95105743408203,
+ 86.95105743408203, 79.10005187988281, 79.10005187988281
+ ],
+ 'descriptor': {'dimensions': [1, 1, 4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'resample2d(upsample) float32 4D tensor options.axes=[1, 2]',
+ 'graph': {
+ 'inputs': {
+ 'resample2dInput': {
+ 'data': [
+ 59.92947006225586, 41.98918914794922, 66.39534759521484,
+ 90.7006607055664, 86.95105743408203, 79.10005187988281
+ ],
+ 'descriptor': {'dimensions': [1, 2, 3, 1], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'resample2d',
+ 'arguments': [
+ {'input': 'resample2dInput'},
+ {'options': {'sizes': [4, 6], 'axes': [1, 2]}}
+ ],
+ 'outputs': 'resample2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'resample2dOutput': {
+ 'data': [
+ 59.92947006225586, 59.92947006225586, 41.98918914794922,
+ 41.98918914794922, 66.39534759521484, 66.39534759521484,
+ 59.92947006225586, 59.92947006225586, 41.98918914794922,
+ 41.98918914794922, 66.39534759521484, 66.39534759521484,
+ 90.7006607055664, 90.7006607055664, 86.95105743408203,
+ 86.95105743408203, 79.10005187988281, 79.10005187988281,
+ 90.7006607055664, 90.7006607055664, 86.95105743408203,
+ 86.95105743408203, 79.10005187988281, 79.10005187988281
+ ],
+ 'descriptor': {'dimensions': [1, 4, 6, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'resample2d(upsample) float32 4D tensor explicit options.axes=[2, 3]',
+ 'graph': {
+ 'inputs': {
+ 'resample2dInput': {
+ 'data': [
+ 59.92947006225586, 41.98918914794922, 66.39534759521484,
+ 90.7006607055664, 86.95105743408203, 79.10005187988281
+ ],
+ 'descriptor': {'dimensions': [1, 1, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'resample2d',
+ 'arguments': [
+ {'input': 'resample2dInput'},
+ {'options': {'sizes': [4, 6], 'axes': [2, 3]}}
+ ],
+ 'outputs': 'resample2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'resample2dOutput': {
+ 'data': [
+ 59.92947006225586, 59.92947006225586, 41.98918914794922,
+ 41.98918914794922, 66.39534759521484, 66.39534759521484,
+ 59.92947006225586, 59.92947006225586, 41.98918914794922,
+ 41.98918914794922, 66.39534759521484, 66.39534759521484,
+ 90.7006607055664, 90.7006607055664, 86.95105743408203,
+ 86.95105743408203, 79.10005187988281, 79.10005187988281,
+ 90.7006607055664, 90.7006607055664, 86.95105743408203,
+ 86.95105743408203, 79.10005187988281, 79.10005187988281
+ ],
+ 'descriptor': {'dimensions': [1, 1, 4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'resample2d(upsample) float32 4D tensor explicit options.mode=\'nearest-neighbor\'',
+ 'graph': {
+ 'inputs': {
+ 'resample2dInput': {
+ 'data': [
+ 59.92947006225586, 41.98918914794922, 66.39534759521484,
+ 90.7006607055664, 86.95105743408203, 79.10005187988281
+ ],
+ 'descriptor': {'dimensions': [1, 1, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'resample2d',
+ 'arguments': [
+ {'input': 'resample2dInput'},
+ {'options': {'mode': 'nearest-neighbor', 'sizes': [4, 6]}}
+ ],
+ 'outputs': 'resample2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'resample2dOutput': {
+ 'data': [
+ 59.92947006225586, 59.92947006225586, 41.98918914794922,
+ 41.98918914794922, 66.39534759521484, 66.39534759521484,
+ 59.92947006225586, 59.92947006225586, 41.98918914794922,
+ 41.98918914794922, 66.39534759521484, 66.39534759521484,
+ 90.7006607055664, 90.7006607055664, 86.95105743408203,
+ 86.95105743408203, 79.10005187988281, 79.10005187988281,
+ 90.7006607055664, 90.7006607055664, 86.95105743408203,
+ 86.95105743408203, 79.10005187988281, 79.10005187988281
+ ],
+ 'descriptor': {'dimensions': [1, 1, 4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'resample2d(upsample) float32 4D tensor options.scales options.mode=\'linear\'',
+ 'graph': {
+ 'inputs': {
+ 'resample2dInput': {
+ 'data': [
+ 59.92947006225586, 41.98918914794922, 66.39534759521484,
+ 90.7006607055664, 86.95105743408203, 79.10005187988281
+ ],
+ 'descriptor': {'dimensions': [1, 1, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'resample2d',
+ 'arguments': [
+ {'input': 'resample2dInput'},
+ {'options': {'mode': 'linear', 'scales': [2, 2]}}
+ ],
+ 'outputs': 'resample2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'resample2dOutput': {
+ 'data': [
+ 59.92947006225586, 55.444400787353516, 46.47425842285156,
+ 48.090728759765625, 60.29380798339844, 66.39534759521484,
+ 67.62226867675781, 64.02411651611328, 56.82780838012695,
+ 57.31512451171875, 65.48605346679688, 69.57152557373047,
+ 83.00786590576172, 81.18354797363281, 77.534912109375,
+ 75.76390838623047, 75.87055206298828, 75.92387390136719,
+ 90.7006607055664, 89.76325988769531, 87.88845825195312,
+ 84.9883041381836, 81.06280517578125, 79.10005187988281
+ ],
+ 'descriptor': {'dimensions': [1, 1, 4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'resample2d(upsample) float32 4D tensor options.sizes options.mode=\'linear\'',
+ 'graph': {
+ 'inputs': {
+ 'resample2dInput': {
+ 'data': [
+ 59.92947006225586, 41.98918914794922, 66.39534759521484,
+ 90.7006607055664, 86.95105743408203, 79.10005187988281
+ ],
+ 'descriptor': {'dimensions': [1, 1, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'resample2d',
+ 'arguments': [
+ {'input': 'resample2dInput'},
+ {'options': {'mode': 'linear', 'sizes': [4, 6]}}
+ ],
+ 'outputs': 'resample2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'resample2dOutput': {
+ 'data': [
+ 59.92947006225586, 55.444400787353516, 46.47425842285156,
+ 48.090728759765625, 60.29380798339844, 66.39534759521484,
+ 67.62226867675781, 64.02411651611328, 56.82780838012695,
+ 57.31512451171875, 65.48605346679688, 69.57152557373047,
+ 83.00786590576172, 81.18354797363281, 77.534912109375,
+ 75.76390838623047, 75.87055206298828, 75.92387390136719,
+ 90.7006607055664, 89.76325988769531, 87.88845825195312,
+ 84.9883041381836, 81.06280517578125, 79.10005187988281
+ ],
+ 'descriptor': {'dimensions': [1, 1, 4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'resample2d(upsample) float32 4D tensor options.axes=[1, 2] options.mode=\'linear\'',
+ 'graph': {
+ 'inputs': {
+ 'resample2dInput': {
+ 'data': [
+ 59.92947006225586, 41.98918914794922, 66.39534759521484,
+ 90.7006607055664, 86.95105743408203, 79.10005187988281
+ ],
+ 'descriptor': {'dimensions': [1, 2, 3, 1], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'resample2d',
+ 'arguments': [
+ {'input': 'resample2dInput'},
+ {'options': {'mode': 'linear', 'sizes': [4, 6], 'axes': [1, 2]}}
+ ],
+ 'outputs': 'resample2dOutput'
+ }],
+ 'expectedOutputs': {
+ 'resample2dOutput': {
+ 'data': [
+ 59.92947006225586, 55.444400787353516, 46.47425842285156,
+ 48.090728759765625, 60.29380798339844, 66.39534759521484,
+ 67.62226867675781, 64.02411651611328, 56.82780838012695,
+ 57.31512451171875, 65.48605346679688, 69.57152557373047,
+ 83.00786590576172, 81.18354797363281, 77.534912109375,
+ 75.76390838623047, 75.87055206298828, 75.92387390136719,
+ 90.7006607055664, 89.76325988769531, 87.88845825195312,
+ 84.9883041381836, 81.06280517578125, 79.10005187988281
+ ],
+ 'descriptor': {'dimensions': [1, 4, 6, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ resample2dTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getResample2dPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/reshape.https.any.js b/tests/wpt/tests/webnn/conformance_tests/reshape.https.any.js
index de9953e6f82..212e93575bc 100644
--- a/tests/wpt/tests/webnn/conformance_tests/reshape.https.any.js
+++ b/tests/wpt/tests/webnn/conformance_tests/reshape.https.any.js
@@ -8,6 +8,1284 @@
'use strict';
-// https://webmachinelearning.github.io/webnn/#api-mlgraphbuilder-reshape
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-reshape-method
+// Alter the shape of a tensor to a new shape.
+//
+// MLOperand reshape(
+// MLOperand input, sequence<[EnforceRange] unsigned long> newShape);
-runWebNNConformanceTests('reshape', buildReshape);
+
+const getReshapePrecisionTolerance = (graphResources) => {
+ const toleranceValueDict = {float32: 0, float16: 0};
+ const expectedDataType =
+ getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs);
+ return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]};
+};
+
+const reshapeTests = [
+ {
+ 'name': 'reshape float32 tensor to a new shape (reorder all dimensions)',
+ 'graph': {
+ 'inputs': {
+ 'reshapeInput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reshape',
+ 'arguments': [{'input': 'reshapeInput'}, {'newShape': [4, 2, 3]}],
+ 'outputs': 'reshapeOutput'
+ }],
+ 'expectedOutputs': {
+ 'reshapeOutput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [4, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reshape float32 tensor to a new shape (reduce dimensions)',
+ 'graph': {
+ 'inputs': {
+ 'reshapeInput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [4, 1, 1, 1, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reshape',
+ 'arguments': [{'input': 'reshapeInput'}, {'newShape': [4, 1, 1, 6]}],
+ 'outputs': 'reshapeOutput'
+ }],
+ 'expectedOutputs': {
+ 'reshapeOutput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [4, 1, 1, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reshape float32 tensor to a new shape (extend dimensions)',
+ 'graph': {
+ 'inputs': {
+ 'reshapeInput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reshape',
+ 'arguments': [{'input': 'reshapeInput'}, {'newShape': [2, 2, 2, 3, 1]}],
+ 'outputs': 'reshapeOutput'
+ }],
+ 'expectedOutputs': {
+ 'reshapeOutput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reshape float32 tensor to a new shape (4D to 4D)',
+ 'graph': {
+ 'inputs': {
+ 'reshapeInput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [3, 2, 2, 2], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reshape',
+ 'arguments': [{'input': 'reshapeInput'}, {'newShape': [4, 2, 3, 1]}],
+ 'outputs': 'reshapeOutput'
+ }],
+ 'expectedOutputs': {
+ 'reshapeOutput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [4, 2, 3, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reshape float32 tensor to 1D tensor',
+ 'graph': {
+ 'inputs': {
+ 'reshapeInput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [3, 2, 2, 2], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reshape',
+ 'arguments': [{'input': 'reshapeInput'}, {'newShape': [24]}],
+ 'outputs': 'reshapeOutput'
+ }],
+ 'expectedOutputs': {
+ 'reshapeOutput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reshape (squeeze) float32 2D tensor by eliminating one dimension',
+ 'graph': {
+ 'inputs': {
+ 'reshapeInput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [1, 24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reshape',
+ 'arguments': [{'input': 'reshapeInput'}, {'newShape': [24]}],
+ 'outputs': 'reshapeOutput'
+ }],
+ 'expectedOutputs': {
+ 'reshapeOutput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reshape (squeeze) float32 3D tensor by eliminating one dimension',
+ 'graph': {
+ 'inputs': {
+ 'reshapeInput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [4, 1, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reshape',
+ 'arguments': [{'input': 'reshapeInput'}, {'newShape': [4, 6]}],
+ 'outputs': 'reshapeOutput'
+ }],
+ 'expectedOutputs': {
+ 'reshapeOutput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reshape (squeeze) float32 3D tensor by eliminating two dimensions',
+ 'graph': {
+ 'inputs': {
+ 'reshapeInput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [1, 24, 1], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reshape',
+ 'arguments': [{'input': 'reshapeInput'}, {'newShape': [24]}],
+ 'outputs': 'reshapeOutput'
+ }],
+ 'expectedOutputs': {
+ 'reshapeOutput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reshape (squeeze) float32 4D tensor by eliminating two dimensions',
+ 'graph': {
+ 'inputs': {
+ 'reshapeInput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [1, 4, 1, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reshape',
+ 'arguments': [{'input': 'reshapeInput'}, {'newShape': [4, 6]}],
+ 'outputs': 'reshapeOutput'
+ }],
+ 'expectedOutputs': {
+ 'reshapeOutput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reshape (squeeze) float32 4D tensor by eliminating all dimensions',
+ 'graph': {
+ 'inputs': {
+ 'reshapeInput': {
+ 'data': [-33.82555389404297],
+ 'descriptor': {'dimensions': [1, 1, 1, 1], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reshape',
+ 'arguments': [{'input': 'reshapeInput'}, {'newShape': []}],
+ 'outputs': 'reshapeOutput'
+ }],
+ 'expectedOutputs': {
+ 'reshapeOutput': {
+ 'data': [-33.82555389404297],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'reshape (squeeze) float32 5D tensor by eliminating four dimensions',
+ 'graph': {
+ 'inputs': {
+ 'reshapeInput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [1, 1, 1, 24, 1], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reshape',
+ 'arguments': [{'input': 'reshapeInput'}, {'newShape': [24]}],
+ 'outputs': 'reshapeOutput'
+ }],
+ 'expectedOutputs': {
+ 'reshapeOutput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reshape (squeeze) float32 2D tensor by eliminating 1st dimension',
+ 'graph': {
+ 'inputs': {
+ 'reshapeInput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [1, 24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reshape',
+ 'arguments': [{'input': 'reshapeInput'}, {'newShape': [24]}],
+ 'outputs': 'reshapeOutput'
+ }],
+ 'expectedOutputs': {
+ 'reshapeOutput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'reshape (squeeze) float32 3D tensor by eliminating 2nd and 3rd dimensions',
+ 'graph': {
+ 'inputs': {
+ 'reshapeInput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [24, 1, 1], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reshape',
+ 'arguments': [{'input': 'reshapeInput'}, {'newShape': [24]}],
+ 'outputs': 'reshapeOutput'
+ }],
+ 'expectedOutputs': {
+ 'reshapeOutput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'reshape (squeeze) float32 4D tensor by eliminating 1st and 4th dimensions',
+ 'graph': {
+ 'inputs': {
+ 'reshapeInput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [1, 4, 6, 1], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reshape',
+ 'arguments': [{'input': 'reshapeInput'}, {'newShape': [4, 6]}],
+ 'outputs': 'reshapeOutput'
+ }],
+ 'expectedOutputs': {
+ 'reshapeOutput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'reshape (squeeze) float32 5D tensor by eliminating 2nd and 3rd dimensions',
+ 'graph': {
+ 'inputs': {
+ 'reshapeInput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [2, 1, 1, 12, 1], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reshape',
+ 'arguments': [{'input': 'reshapeInput'}, {'newShape': [2, 12, 1]}],
+ 'outputs': 'reshapeOutput'
+ }],
+ 'expectedOutputs': {
+ 'reshapeOutput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [2, 12, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'reshape (squeeze) float32 5D tensor by eliminating 1st, 2nd and 5th dimensions',
+ 'graph': {
+ 'inputs': {
+ 'reshapeInput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [1, 1, 1, 24, 1], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reshape',
+ 'arguments': [{'input': 'reshapeInput'}, {'newShape': [1, 24]}],
+ 'outputs': 'reshapeOutput'
+ }],
+ 'expectedOutputs': {
+ 'reshapeOutput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [1, 24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reshape (unsqueeze) float32 0D tensor to 4D',
+ 'graph': {
+ 'inputs': {
+ 'reshapeInput': {
+ 'data': [-33.82555389404297],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reshape',
+ 'arguments': [{'input': 'reshapeInput'}, {'newShape': [1, 1, 1, 1]}],
+ 'outputs': 'reshapeOutput'
+ }],
+ 'expectedOutputs': {
+ 'reshapeOutput': {
+ 'data': [-33.82555389404297],
+ 'descriptor': {'dimensions': [1, 1, 1, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reshape (unsqueeze) float32 1D tensor by adding one dimension',
+ 'graph': {
+ 'inputs': {
+ 'reshapeInput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reshape',
+ 'arguments': [{'input': 'reshapeInput'}, {'newShape': [1, 24]}],
+ 'outputs': 'reshapeOutput'
+ }],
+ 'expectedOutputs': {
+ 'reshapeOutput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [1, 24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reshape (unsqueeze) float32 1D tensor by adding two dimensions',
+ 'graph': {
+ 'inputs': {
+ 'reshapeInput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reshape',
+ 'arguments': [{'input': 'reshapeInput'}, {'newShape': [1, 24, 1]}],
+ 'outputs': 'reshapeOutput'
+ }],
+ 'expectedOutputs': {
+ 'reshapeOutput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [1, 24, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reshape (unsqueeze) float32 1D tensor to 5D',
+ 'graph': {
+ 'inputs': {
+ 'reshapeInput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reshape',
+ 'arguments':
+ [{'input': 'reshapeInput'}, {'newShape': [1, 1, 1, 24, 1]}],
+ 'outputs': 'reshapeOutput'
+ }],
+ 'expectedOutputs': {
+ 'reshapeOutput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [1, 1, 1, 24, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'reshape (unsqueeze) float32 1D tensor by adding 2nd and 3rd dimensions',
+ 'graph': {
+ 'inputs': {
+ 'reshapeInput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reshape',
+ 'arguments': [{'input': 'reshapeInput'}, {'newShape': [24, 1, 1]}],
+ 'outputs': 'reshapeOutput'
+ }],
+ 'expectedOutputs': {
+ 'reshapeOutput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [24, 1, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reshape (unsqueeze) float32 2D tensor by adding one dimension',
+ 'graph': {
+ 'inputs': {
+ 'reshapeInput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reshape',
+ 'arguments': [{'input': 'reshapeInput'}, {'newShape': [4, 1, 6]}],
+ 'outputs': 'reshapeOutput'
+ }],
+ 'expectedOutputs': {
+ 'reshapeOutput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [4, 1, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reshape (unsqueeze) float32 2D tensor by adding two dimensions',
+ 'graph': {
+ 'inputs': {
+ 'reshapeInput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reshape',
+ 'arguments': [{'input': 'reshapeInput'}, {'newShape': [1, 4, 1, 6]}],
+ 'outputs': 'reshapeOutput'
+ }],
+ 'expectedOutputs': {
+ 'reshapeOutput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [1, 4, 1, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reshape (unsqueeze) float32 2D tensor by adding 1st dimension',
+ 'graph': {
+ 'inputs': {
+ 'reshapeInput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reshape',
+ 'arguments': [{'input': 'reshapeInput'}, {'newShape': [1, 24]}],
+ 'outputs': 'reshapeOutput'
+ }],
+ 'expectedOutputs': {
+ 'reshapeOutput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [1, 24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'reshape (unsqueeze) float32 2D tensor by adding 1st and 4th dimensions',
+ 'graph': {
+ 'inputs': {
+ 'reshapeInput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reshape',
+ 'arguments': [{'input': 'reshapeInput'}, {'newShape': [1, 4, 6, 1]}],
+ 'outputs': 'reshapeOutput'
+ }],
+ 'expectedOutputs': {
+ 'reshapeOutput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [1, 4, 6, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'reshape (unsqueeze) float32 3D tensor by adding 2nd and 3rd dimensions',
+ 'graph': {
+ 'inputs': {
+ 'reshapeInput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [2, 12, 1], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reshape',
+ 'arguments':
+ [{'input': 'reshapeInput'}, {'newShape': [2, 1, 1, 12, 1]}],
+ 'outputs': 'reshapeOutput'
+ }],
+ 'expectedOutputs': {
+ 'reshapeOutput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [2, 1, 1, 12, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reshape (unsqueeze) float32 4D tensor by adding 2nd dimension',
+ 'graph': {
+ 'inputs': {
+ 'reshapeInput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reshape',
+ 'arguments': [{'input': 'reshapeInput'}, {'newShape': [2, 1, 2, 2, 3]}],
+ 'outputs': 'reshapeOutput'
+ }],
+ 'expectedOutputs': {
+ 'reshapeOutput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [2, 1, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reshape (unsqueeze) float32 5D tensor by adding 4th dimension',
+ 'graph': {
+ 'inputs': {
+ 'reshapeInput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 3, 1], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reshape',
+ 'arguments':
+ [{'input': 'reshapeInput'}, {'newShape': [2, 1, 4, 1, 3, 1]}],
+ 'outputs': 'reshapeOutput'
+ }],
+ 'expectedOutputs': {
+ 'reshapeOutput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor':
+ {'dimensions': [2, 1, 4, 1, 3, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reshape (flatten) float32 3D tensor to 2D',
+ 'graph': {
+ 'inputs': {
+ 'reshapeInput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reshape',
+ 'arguments': [{'input': 'reshapeInput'}, {'newShape': [2, 12]}],
+ 'outputs': 'reshapeOutput'
+ }],
+ 'expectedOutputs': {
+ 'reshapeOutput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [2, 12], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reshape (flatten) float32 4D to 2D',
+ 'graph': {
+ 'inputs': {
+ 'reshapeInput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reshape',
+ 'arguments': [{'input': 'reshapeInput'}, {'newShape': [4, 6]}],
+ 'outputs': 'reshapeOutput'
+ }],
+ 'expectedOutputs': {
+ 'reshapeOutput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reshape (flatten) float32 4D to 2D exclusive 1st dimension',
+ 'graph': {
+ 'inputs': {
+ 'reshapeInput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reshape',
+ 'arguments': [{'input': 'reshapeInput'}, {'newShape': [1, 24]}],
+ 'outputs': 'reshapeOutput'
+ }],
+ 'expectedOutputs': {
+ 'reshapeOutput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [1, 24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'reshape (flatten) float32 4D to 2D exclusive 4th dimension',
+ 'graph': {
+ 'inputs': {
+ 'reshapeInput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'reshape',
+ 'arguments': [{'input': 'reshapeInput'}, {'newShape': [24, 1]}],
+ 'outputs': 'reshapeOutput'
+ }],
+ 'expectedOutputs': {
+ 'reshapeOutput': {
+ 'data': [
+ -30.0561466217041, 99.56941986083984, 88.04620361328125,
+ -91.87507629394531, -23.7972354888916, -91.28665161132812,
+ -63.15204620361328, 12.0669527053833, -96.1172866821289,
+ -44.77365493774414, -80.08650970458984, -64.43756866455078,
+ 27.64195442199707, -96.86306762695312, 83.6834716796875,
+ 50.599483489990234, -20.18765640258789, -1.3904608488082886,
+ -96.93603515625, 65.34143829345703, 34.835994720458984,
+ 62.01485824584961, -2.8698415756225586, 27.903749465942383
+ ],
+ 'descriptor': {'dimensions': [24, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ reshapeTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getReshapePrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/sigmoid.https.any.js b/tests/wpt/tests/webnn/conformance_tests/sigmoid.https.any.js
index 154e68e4299..1aba9bbb10b 100644
--- a/tests/wpt/tests/webnn/conformance_tests/sigmoid.https.any.js
+++ b/tests/wpt/tests/webnn/conformance_tests/sigmoid.https.any.js
@@ -8,6 +8,270 @@
'use strict';
-// https://webmachinelearning.github.io/webnn/#api-mlgraphbuilder-sigmoid
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-sigmoid-method
+// Compute the sigmoid function of the input tensor. The calculation follows the
+// expression 1 / (exp(-x) + 1).
+//
+// MLOperand sigmoid(MLOperand input);
-runWebNNConformanceTests('sigmoid', buildOperationWithSingleInput);
+
+const getSigmoidPrecisionTolerance = (graphResources) => {
+ // float32 (leaving a few ULP for roundoff)
+ const toleranceValueDict = {float32: 32 + 2, float16: 3};
+ const expectedDataType =
+ getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs);
+ return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]};
+};
+
+const sigmoidTests = [
+ {
+ 'name': 'sigmoid float32 1D constant tensor',
+ 'graph': {
+ 'inputs': {
+ 'sigmoidInput': {
+ 'data': [
+ -0.37699514627456665, -0.6848450899124146, -5.988872051239014,
+ 4.431885719299316, -0.93868488073349, 4.591195583343506,
+ -2.5067026615142822, 1.5669522285461426, -2.596473217010498,
+ -3.64729380607605, 2.6785237789154053, -3.1051602363586426,
+ 2.2585017681121826, -0.2865157723426819, 4.64043664932251,
+ 1.0606156587600708, -3.536252498626709, 0.4410440921783447,
+ 4.791460037231445, 2.0745489597320557, 0.8354471325874329,
+ -5.433595657348633, -4.184835910797119, -2.484982490539551
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'sigmoid',
+ 'arguments': [{'input': 'sigmoidInput'}],
+ 'outputs': 'sigmoidOutput'
+ }],
+ 'expectedOutputs': {
+ 'sigmoidOutput': {
+ 'data': [
+ 0.4068518280982971, 0.33518078923225403, 0.0025002227630466223,
+ 0.9882476925849915, 0.28116607666015625, 0.9899610877037048,
+ 0.07538963109254837, 0.8273487091064453, 0.0693657398223877,
+ 0.02539960853755474, 0.9357474446296692, 0.04289489984512329,
+ 0.9053813815116882, 0.42885708808898926, 0.9904388189315796,
+ 0.7428081631660461, 0.0282981526106596, 0.6085078120231628,
+ 0.9917680025100708, 0.8884047269821167, 0.6975054740905762,
+ 0.004348373040556908, 0.014996387995779514, 0.07691769301891327
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'sigmoid float32 1D tensor',
+ 'graph': {
+ 'inputs': {
+ 'sigmoidInput': {
+ 'data': [
+ -0.37699514627456665, -0.6848450899124146, -5.988872051239014,
+ 4.431885719299316, -0.93868488073349, 4.591195583343506,
+ -2.5067026615142822, 1.5669522285461426, -2.596473217010498,
+ -3.64729380607605, 2.6785237789154053, -3.1051602363586426,
+ 2.2585017681121826, -0.2865157723426819, 4.64043664932251,
+ 1.0606156587600708, -3.536252498626709, 0.4410440921783447,
+ 4.791460037231445, 2.0745489597320557, 0.8354471325874329,
+ -5.433595657348633, -4.184835910797119, -2.484982490539551
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'sigmoid',
+ 'arguments': [{'input': 'sigmoidInput'}],
+ 'outputs': 'sigmoidOutput'
+ }],
+ 'expectedOutputs': {
+ 'sigmoidOutput': {
+ 'data': [
+ 0.4068518280982971, 0.33518078923225403, 0.0025002227630466223,
+ 0.9882476925849915, 0.28116607666015625, 0.9899610877037048,
+ 0.07538963109254837, 0.8273487091064453, 0.0693657398223877,
+ 0.02539960853755474, 0.9357474446296692, 0.04289489984512329,
+ 0.9053813815116882, 0.42885708808898926, 0.9904388189315796,
+ 0.7428081631660461, 0.0282981526106596, 0.6085078120231628,
+ 0.9917680025100708, 0.8884047269821167, 0.6975054740905762,
+ 0.004348373040556908, 0.014996387995779514, 0.07691769301891327
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'sigmoid float32 2D tensor',
+ 'graph': {
+ 'inputs': {
+ 'sigmoidInput': {
+ 'data': [
+ -0.37699514627456665, -0.6848450899124146, -5.988872051239014,
+ 4.431885719299316, -0.93868488073349, 4.591195583343506,
+ -2.5067026615142822, 1.5669522285461426, -2.596473217010498,
+ -3.64729380607605, 2.6785237789154053, -3.1051602363586426,
+ 2.2585017681121826, -0.2865157723426819, 4.64043664932251,
+ 1.0606156587600708, -3.536252498626709, 0.4410440921783447,
+ 4.791460037231445, 2.0745489597320557, 0.8354471325874329,
+ -5.433595657348633, -4.184835910797119, -2.484982490539551
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'sigmoid',
+ 'arguments': [{'input': 'sigmoidInput'}],
+ 'outputs': 'sigmoidOutput'
+ }],
+ 'expectedOutputs': {
+ 'sigmoidOutput': {
+ 'data': [
+ 0.4068518280982971, 0.33518078923225403, 0.0025002227630466223,
+ 0.9882476925849915, 0.28116607666015625, 0.9899610877037048,
+ 0.07538963109254837, 0.8273487091064453, 0.0693657398223877,
+ 0.02539960853755474, 0.9357474446296692, 0.04289489984512329,
+ 0.9053813815116882, 0.42885708808898926, 0.9904388189315796,
+ 0.7428081631660461, 0.0282981526106596, 0.6085078120231628,
+ 0.9917680025100708, 0.8884047269821167, 0.6975054740905762,
+ 0.004348373040556908, 0.014996387995779514, 0.07691769301891327
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'sigmoid float32 3D tensor',
+ 'graph': {
+ 'inputs': {
+ 'sigmoidInput': {
+ 'data': [
+ -0.37699514627456665, -0.6848450899124146, -5.988872051239014,
+ 4.431885719299316, -0.93868488073349, 4.591195583343506,
+ -2.5067026615142822, 1.5669522285461426, -2.596473217010498,
+ -3.64729380607605, 2.6785237789154053, -3.1051602363586426,
+ 2.2585017681121826, -0.2865157723426819, 4.64043664932251,
+ 1.0606156587600708, -3.536252498626709, 0.4410440921783447,
+ 4.791460037231445, 2.0745489597320557, 0.8354471325874329,
+ -5.433595657348633, -4.184835910797119, -2.484982490539551
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'sigmoid',
+ 'arguments': [{'input': 'sigmoidInput'}],
+ 'outputs': 'sigmoidOutput'
+ }],
+ 'expectedOutputs': {
+ 'sigmoidOutput': {
+ 'data': [
+ 0.4068518280982971, 0.33518078923225403, 0.0025002227630466223,
+ 0.9882476925849915, 0.28116607666015625, 0.9899610877037048,
+ 0.07538963109254837, 0.8273487091064453, 0.0693657398223877,
+ 0.02539960853755474, 0.9357474446296692, 0.04289489984512329,
+ 0.9053813815116882, 0.42885708808898926, 0.9904388189315796,
+ 0.7428081631660461, 0.0282981526106596, 0.6085078120231628,
+ 0.9917680025100708, 0.8884047269821167, 0.6975054740905762,
+ 0.004348373040556908, 0.014996387995779514, 0.07691769301891327
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'sigmoid float32 4D tensor',
+ 'graph': {
+ 'inputs': {
+ 'sigmoidInput': {
+ 'data': [
+ -0.37699514627456665, -0.6848450899124146, -5.988872051239014,
+ 4.431885719299316, -0.93868488073349, 4.591195583343506,
+ -2.5067026615142822, 1.5669522285461426, -2.596473217010498,
+ -3.64729380607605, 2.6785237789154053, -3.1051602363586426,
+ 2.2585017681121826, -0.2865157723426819, 4.64043664932251,
+ 1.0606156587600708, -3.536252498626709, 0.4410440921783447,
+ 4.791460037231445, 2.0745489597320557, 0.8354471325874329,
+ -5.433595657348633, -4.184835910797119, -2.484982490539551
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'sigmoid',
+ 'arguments': [{'input': 'sigmoidInput'}],
+ 'outputs': 'sigmoidOutput'
+ }],
+ 'expectedOutputs': {
+ 'sigmoidOutput': {
+ 'data': [
+ 0.4068518280982971, 0.33518078923225403, 0.0025002227630466223,
+ 0.9882476925849915, 0.28116607666015625, 0.9899610877037048,
+ 0.07538963109254837, 0.8273487091064453, 0.0693657398223877,
+ 0.02539960853755474, 0.9357474446296692, 0.04289489984512329,
+ 0.9053813815116882, 0.42885708808898926, 0.9904388189315796,
+ 0.7428081631660461, 0.0282981526106596, 0.6085078120231628,
+ 0.9917680025100708, 0.8884047269821167, 0.6975054740905762,
+ 0.004348373040556908, 0.014996387995779514, 0.07691769301891327
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'sigmoid float32 5D tensor',
+ 'graph': {
+ 'inputs': {
+ 'sigmoidInput': {
+ 'data': [
+ -0.37699514627456665, -0.6848450899124146, -5.988872051239014,
+ 4.431885719299316, -0.93868488073349, 4.591195583343506,
+ -2.5067026615142822, 1.5669522285461426, -2.596473217010498,
+ -3.64729380607605, 2.6785237789154053, -3.1051602363586426,
+ 2.2585017681121826, -0.2865157723426819, 4.64043664932251,
+ 1.0606156587600708, -3.536252498626709, 0.4410440921783447,
+ 4.791460037231445, 2.0745489597320557, 0.8354471325874329,
+ -5.433595657348633, -4.184835910797119, -2.484982490539551
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 1, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'sigmoid',
+ 'arguments': [{'input': 'sigmoidInput'}],
+ 'outputs': 'sigmoidOutput'
+ }],
+ 'expectedOutputs': {
+ 'sigmoidOutput': {
+ 'data': [
+ 0.4068518280982971, 0.33518078923225403, 0.0025002227630466223,
+ 0.9882476925849915, 0.28116607666015625, 0.9899610877037048,
+ 0.07538963109254837, 0.8273487091064453, 0.0693657398223877,
+ 0.02539960853755474, 0.9357474446296692, 0.04289489984512329,
+ 0.9053813815116882, 0.42885708808898926, 0.9904388189315796,
+ 0.7428081631660461, 0.0282981526106596, 0.6085078120231628,
+ 0.9917680025100708, 0.8884047269821167, 0.6975054740905762,
+ 0.004348373040556908, 0.014996387995779514, 0.07691769301891327
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 1, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ sigmoidTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getSigmoidPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/sin.https.any.js b/tests/wpt/tests/webnn/conformance_tests/sin.https.any.js
new file mode 100644
index 00000000000..30fc9a54f8f
--- /dev/null
+++ b/tests/wpt/tests/webnn/conformance_tests/sin.https.any.js
@@ -0,0 +1,297 @@
+// META: title=test WebNN API element-wise sin operation
+// META: global=window,dedicatedworker
+// META: variant=?cpu
+// META: variant=?gpu
+// META: variant=?npu
+// META: script=../resources/utils.js
+// META: timeout=long
+
+'use strict';
+
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-unary
+// Compute the sine of the input tensor, element-wise.
+//
+// MLOperand sin(MLOperand input);
+
+
+const getSinPrecisionTolerance = (graphResources) => {
+ const toleranceValueDict = {float32: 1 / 1024, float16: 1 / 512};
+ const expectedDataType =
+ getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs);
+ return {metricType: 'ATOL', value: toleranceValueDict[expectedDataType]};
+};
+
+const sinTests = [
+ {
+ 'name': 'sin float32 0D scalar',
+ 'graph': {
+ 'inputs': {
+ 'sinInput': {
+ 'data': [79.78058624267578],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'sin',
+ 'arguments': [{'input': 'sinInput'}],
+ 'outputs': 'sinOutput'
+ }],
+ 'expectedOutputs': {
+ 'sinOutput': {
+ 'data': [-0.946033775806427],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'sin float32 1D constant tensor',
+ 'graph': {
+ 'inputs': {
+ 'sinInput': {
+ 'data': [
+ 79.78058624267578, 55.005733489990234, -28.052532196044922,
+ -31.64430046081543, 56.283756256103516, -96.18511962890625,
+ -72.99826049804688, -3.424182653427124, 84.02549743652344,
+ 5.03037166595459, -9.512612342834473, 9.540593147277832,
+ -25.26725196838379, -20.831640243530273, -32.02475357055664,
+ -55.69102478027344, 15.927481651306152, -57.8835334777832,
+ 31.016063690185547, -94.88304901123047, -84.58417510986328,
+ 44.8487434387207, -19.000272750854492, -48.03827667236328
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'sin',
+ 'arguments': [{'input': 'sinInput'}],
+ 'outputs': 'sinOutput'
+ }],
+ 'expectedOutputs': {
+ 'sinOutput': {
+ 'data': [
+ -0.946033775806427, -0.9996118545532227, -0.21998752653598785,
+ -0.22639396786689758, -0.2618238627910614, -0.9335716366767883,
+ 0.6754903197288513, 0.27884384989738464, 0.7156150341033936,
+ -0.9498680830001831, 0.08772148936986923, -0.11555644869804382,
+ -0.13410548865795135, -0.9166066646575928, -0.5719056725502014,
+ 0.7563026547431946, -0.21775959432125092, -0.9722972512245178,
+ -0.38929200172424316, -0.59339439868927, -0.23656263947486877,
+ 0.7620325684547424, -0.15014687180519104, 0.7921885848045349
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'sin float32 1D tensor',
+ 'graph': {
+ 'inputs': {
+ 'sinInput': {
+ 'data': [
+ 79.78058624267578, 55.005733489990234, -28.052532196044922,
+ -31.64430046081543, 56.283756256103516, -96.18511962890625,
+ -72.99826049804688, -3.424182653427124, 84.02549743652344,
+ 5.03037166595459, -9.512612342834473, 9.540593147277832,
+ -25.26725196838379, -20.831640243530273, -32.02475357055664,
+ -55.69102478027344, 15.927481651306152, -57.8835334777832,
+ 31.016063690185547, -94.88304901123047, -84.58417510986328,
+ 44.8487434387207, -19.000272750854492, -48.03827667236328
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'sin',
+ 'arguments': [{'input': 'sinInput'}],
+ 'outputs': 'sinOutput'
+ }],
+ 'expectedOutputs': {
+ 'sinOutput': {
+ 'data': [
+ -0.946033775806427, -0.9996118545532227, -0.21998752653598785,
+ -0.22639396786689758, -0.2618238627910614, -0.9335716366767883,
+ 0.6754903197288513, 0.27884384989738464, 0.7156150341033936,
+ -0.9498680830001831, 0.08772148936986923, -0.11555644869804382,
+ -0.13410548865795135, -0.9166066646575928, -0.5719056725502014,
+ 0.7563026547431946, -0.21775959432125092, -0.9722972512245178,
+ -0.38929200172424316, -0.59339439868927, -0.23656263947486877,
+ 0.7620325684547424, -0.15014687180519104, 0.7921885848045349
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'sin float32 2D tensor',
+ 'graph': {
+ 'inputs': {
+ 'sinInput': {
+ 'data': [
+ 79.78058624267578, 55.005733489990234, -28.052532196044922,
+ -31.64430046081543, 56.283756256103516, -96.18511962890625,
+ -72.99826049804688, -3.424182653427124, 84.02549743652344,
+ 5.03037166595459, -9.512612342834473, 9.540593147277832,
+ -25.26725196838379, -20.831640243530273, -32.02475357055664,
+ -55.69102478027344, 15.927481651306152, -57.8835334777832,
+ 31.016063690185547, -94.88304901123047, -84.58417510986328,
+ 44.8487434387207, -19.000272750854492, -48.03827667236328
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'sin',
+ 'arguments': [{'input': 'sinInput'}],
+ 'outputs': 'sinOutput'
+ }],
+ 'expectedOutputs': {
+ 'sinOutput': {
+ 'data': [
+ -0.946033775806427, -0.9996118545532227, -0.21998752653598785,
+ -0.22639396786689758, -0.2618238627910614, -0.9335716366767883,
+ 0.6754903197288513, 0.27884384989738464, 0.7156150341033936,
+ -0.9498680830001831, 0.08772148936986923, -0.11555644869804382,
+ -0.13410548865795135, -0.9166066646575928, -0.5719056725502014,
+ 0.7563026547431946, -0.21775959432125092, -0.9722972512245178,
+ -0.38929200172424316, -0.59339439868927, -0.23656263947486877,
+ 0.7620325684547424, -0.15014687180519104, 0.7921885848045349
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'sin float32 3D tensor',
+ 'graph': {
+ 'inputs': {
+ 'sinInput': {
+ 'data': [
+ 79.78058624267578, 55.005733489990234, -28.052532196044922,
+ -31.64430046081543, 56.283756256103516, -96.18511962890625,
+ -72.99826049804688, -3.424182653427124, 84.02549743652344,
+ 5.03037166595459, -9.512612342834473, 9.540593147277832,
+ -25.26725196838379, -20.831640243530273, -32.02475357055664,
+ -55.69102478027344, 15.927481651306152, -57.8835334777832,
+ 31.016063690185547, -94.88304901123047, -84.58417510986328,
+ 44.8487434387207, -19.000272750854492, -48.03827667236328
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'sin',
+ 'arguments': [{'input': 'sinInput'}],
+ 'outputs': 'sinOutput'
+ }],
+ 'expectedOutputs': {
+ 'sinOutput': {
+ 'data': [
+ -0.946033775806427, -0.9996118545532227, -0.21998752653598785,
+ -0.22639396786689758, -0.2618238627910614, -0.9335716366767883,
+ 0.6754903197288513, 0.27884384989738464, 0.7156150341033936,
+ -0.9498680830001831, 0.08772148936986923, -0.11555644869804382,
+ -0.13410548865795135, -0.9166066646575928, -0.5719056725502014,
+ 0.7563026547431946, -0.21775959432125092, -0.9722972512245178,
+ -0.38929200172424316, -0.59339439868927, -0.23656263947486877,
+ 0.7620325684547424, -0.15014687180519104, 0.7921885848045349
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'sin float32 4D tensor',
+ 'graph': {
+ 'inputs': {
+ 'sinInput': {
+ 'data': [
+ 79.78058624267578, 55.005733489990234, -28.052532196044922,
+ -31.64430046081543, 56.283756256103516, -96.18511962890625,
+ -72.99826049804688, -3.424182653427124, 84.02549743652344,
+ 5.03037166595459, -9.512612342834473, 9.540593147277832,
+ -25.26725196838379, -20.831640243530273, -32.02475357055664,
+ -55.69102478027344, 15.927481651306152, -57.8835334777832,
+ 31.016063690185547, -94.88304901123047, -84.58417510986328,
+ 44.8487434387207, -19.000272750854492, -48.03827667236328
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'sin',
+ 'arguments': [{'input': 'sinInput'}],
+ 'outputs': 'sinOutput'
+ }],
+ 'expectedOutputs': {
+ 'sinOutput': {
+ 'data': [
+ -0.946033775806427, -0.9996118545532227, -0.21998752653598785,
+ -0.22639396786689758, -0.2618238627910614, -0.9335716366767883,
+ 0.6754903197288513, 0.27884384989738464, 0.7156150341033936,
+ -0.9498680830001831, 0.08772148936986923, -0.11555644869804382,
+ -0.13410548865795135, -0.9166066646575928, -0.5719056725502014,
+ 0.7563026547431946, -0.21775959432125092, -0.9722972512245178,
+ -0.38929200172424316, -0.59339439868927, -0.23656263947486877,
+ 0.7620325684547424, -0.15014687180519104, 0.7921885848045349
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'sin float32 5D tensor',
+ 'graph': {
+ 'inputs': {
+ 'sinInput': {
+ 'data': [
+ 79.78058624267578, 55.005733489990234, -28.052532196044922,
+ -31.64430046081543, 56.283756256103516, -96.18511962890625,
+ -72.99826049804688, -3.424182653427124, 84.02549743652344,
+ 5.03037166595459, -9.512612342834473, 9.540593147277832,
+ -25.26725196838379, -20.831640243530273, -32.02475357055664,
+ -55.69102478027344, 15.927481651306152, -57.8835334777832,
+ 31.016063690185547, -94.88304901123047, -84.58417510986328,
+ 44.8487434387207, -19.000272750854492, -48.03827667236328
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 1, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'sin',
+ 'arguments': [{'input': 'sinInput'}],
+ 'outputs': 'sinOutput'
+ }],
+ 'expectedOutputs': {
+ 'sinOutput': {
+ 'data': [
+ -0.946033775806427, -0.9996118545532227, -0.21998752653598785,
+ -0.22639396786689758, -0.2618238627910614, -0.9335716366767883,
+ 0.6754903197288513, 0.27884384989738464, 0.7156150341033936,
+ -0.9498680830001831, 0.08772148936986923, -0.11555644869804382,
+ -0.13410548865795135, -0.9166066646575928, -0.5719056725502014,
+ 0.7563026547431946, -0.21775959432125092, -0.9722972512245178,
+ -0.38929200172424316, -0.59339439868927, -0.23656263947486877,
+ 0.7620325684547424, -0.15014687180519104, 0.7921885848045349
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 1, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ sinTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getSinPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/slice.https.any.js b/tests/wpt/tests/webnn/conformance_tests/slice.https.any.js
index b39eade98f2..1c53d45fd5c 100644
--- a/tests/wpt/tests/webnn/conformance_tests/slice.https.any.js
+++ b/tests/wpt/tests/webnn/conformance_tests/slice.https.any.js
@@ -8,6 +8,244 @@
'use strict';
-// https://webmachinelearning.github.io/webnn/#api-mlgraphbuilder-slice
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-slice
+// Produce a slice of the input tensor.
+//
+// MLOperand slice(
+// MLOperand input, sequence<[EnforceRange] unsigned long>starts,
+// sequence<[EnforceRange] unsigned long>sizes);
-runWebNNConformanceTests('slice', buildSlice);
+
+const getSlicePrecisionTolerance = (graphResources) => {
+ const toleranceValueDict = {float32: 0, float16: 0};
+ const expectedDataType =
+ getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs);
+ return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]};
+};
+
+const sliceTests = [
+ {
+ 'name': 'slice float32 1D constant tensor',
+ 'graph': {
+ 'inputs': {
+ 'sliceInput': {
+ 'data': [
+ 28.846250534057617, 97.95414733886719, -68.15961456298828,
+ 14.978987693786621, 90.23090362548828, 76.59095764160156,
+ -24.556316375732422, 79.58749389648438, 65.21376037597656,
+ 57.4397087097168, 74.41775512695312, -4.513182163238525,
+ 0.5424534678459167, 80.44634246826172, 28.32765007019043,
+ 74.02619171142578, -74.54559326171875, -27.306041717529297,
+ -70.42774200439453, 59.82632064819336, -58.46095275878906,
+ 79.80570983886719, -9.857853889465332, 42.665199279785156
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'slice',
+ 'arguments':
+ [{'input': 'sliceInput'}, {'starts': [12]}, {'sizes': [12]}],
+ 'outputs': 'sliceOutput'
+ }],
+ 'expectedOutputs': {
+ 'sliceOutput': {
+ 'data': [
+ 0.5424534678459167, 80.44634246826172, 28.32765007019043,
+ 74.02619171142578, -74.54559326171875, -27.306041717529297,
+ -70.42774200439453, 59.82632064819336, -58.46095275878906,
+ 79.80570983886719, -9.857853889465332, 42.665199279785156
+ ],
+ 'descriptor': {'dimensions': [12], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'slice float32 1D tensor',
+ 'graph': {
+ 'inputs': {
+ 'sliceInput': {
+ 'data': [
+ 28.846250534057617, 97.95414733886719, -68.15961456298828,
+ 14.978987693786621, 90.23090362548828, 76.59095764160156,
+ -24.556316375732422, 79.58749389648438, 65.21376037597656,
+ 57.4397087097168, 74.41775512695312, -4.513182163238525,
+ 0.5424534678459167, 80.44634246826172, 28.32765007019043,
+ 74.02619171142578, -74.54559326171875, -27.306041717529297,
+ -70.42774200439453, 59.82632064819336, -58.46095275878906,
+ 79.80570983886719, -9.857853889465332, 42.665199279785156
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'slice',
+ 'arguments':
+ [{'input': 'sliceInput'}, {'starts': [12]}, {'sizes': [12]}],
+ 'outputs': 'sliceOutput'
+ }],
+ 'expectedOutputs': {
+ 'sliceOutput': {
+ 'data': [
+ 0.5424534678459167, 80.44634246826172, 28.32765007019043,
+ 74.02619171142578, -74.54559326171875, -27.306041717529297,
+ -70.42774200439453, 59.82632064819336, -58.46095275878906,
+ 79.80570983886719, -9.857853889465332, 42.665199279785156
+ ],
+ 'descriptor': {'dimensions': [12], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'slice float32 2D tensor',
+ 'graph': {
+ 'inputs': {
+ 'sliceInput': {
+ 'data': [
+ 28.846250534057617, 97.95414733886719, -68.15961456298828,
+ 14.978987693786621, 90.23090362548828, 76.59095764160156,
+ -24.556316375732422, 79.58749389648438, 65.21376037597656,
+ 57.4397087097168, 74.41775512695312, -4.513182163238525,
+ 0.5424534678459167, 80.44634246826172, 28.32765007019043,
+ 74.02619171142578, -74.54559326171875, -27.306041717529297,
+ -70.42774200439453, 59.82632064819336, -58.46095275878906,
+ 79.80570983886719, -9.857853889465332, 42.665199279785156
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'slice',
+ 'arguments':
+ [{'input': 'sliceInput'}, {'starts': [2, 2]}, {'sizes': [2, 4]}],
+ 'outputs': 'sliceOutput'
+ }],
+ 'expectedOutputs': {
+ 'sliceOutput': {
+ 'data': [
+ 28.32765007019043, 74.02619171142578, -74.54559326171875,
+ -27.306041717529297, -58.46095275878906, 79.80570983886719,
+ -9.857853889465332, 42.665199279785156
+ ],
+ 'descriptor': {'dimensions': [2, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'slice float32 3D tensor',
+ 'graph': {
+ 'inputs': {
+ 'sliceInput': {
+ 'data': [
+ 28.846250534057617, 97.95414733886719, -68.15961456298828,
+ 14.978987693786621, 90.23090362548828, 76.59095764160156,
+ -24.556316375732422, 79.58749389648438, 65.21376037597656,
+ 57.4397087097168, 74.41775512695312, -4.513182163238525,
+ 0.5424534678459167, 80.44634246826172, 28.32765007019043,
+ 74.02619171142578, -74.54559326171875, -27.306041717529297,
+ -70.42774200439453, 59.82632064819336, -58.46095275878906,
+ 79.80570983886719, -9.857853889465332, 42.665199279785156
+ ],
+ 'descriptor': {'dimensions': [4, 3, 2], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'slice',
+ 'arguments': [
+ {'input': 'sliceInput'}, {'starts': [1, 1, 1]}, {'sizes': [3, 2, 1]}
+ ],
+ 'outputs': 'sliceOutput'
+ }],
+ 'expectedOutputs': {
+ 'sliceOutput': {
+ 'data': [
+ 57.4397087097168, -4.513182163238525, 74.02619171142578,
+ -27.306041717529297, 79.80570983886719, 42.665199279785156
+ ],
+ 'descriptor': {'dimensions': [3, 2, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'slice float32 4D tensor',
+ 'graph': {
+ 'inputs': {
+ 'sliceInput': {
+ 'data': [
+ 28.846250534057617, 97.95414733886719, -68.15961456298828,
+ 14.978987693786621, 90.23090362548828, 76.59095764160156,
+ -24.556316375732422, 79.58749389648438, 65.21376037597656,
+ 57.4397087097168, 74.41775512695312, -4.513182163238525,
+ 0.5424534678459167, 80.44634246826172, 28.32765007019043,
+ 74.02619171142578, -74.54559326171875, -27.306041717529297,
+ -70.42774200439453, 59.82632064819336, -58.46095275878906,
+ 79.80570983886719, -9.857853889465332, 42.665199279785156
+ ],
+ 'descriptor': {'dimensions': [2, 2, 3, 2], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'slice',
+ 'arguments': [
+ {'input': 'sliceInput'}, {'starts': [1, 0, 2, 1]},
+ {'sizes': [1, 2, 1, 1]}
+ ],
+ 'outputs': 'sliceOutput'
+ }],
+ 'expectedOutputs': {
+ 'sliceOutput': {
+ 'data': [-27.306041717529297, 42.665199279785156],
+ 'descriptor': {'dimensions': [1, 2, 1, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'slice float32 5D tensor',
+ 'graph': {
+ 'inputs': {
+ 'sliceInput': {
+ 'data': [
+ 28.846250534057617, 97.95414733886719, -68.15961456298828,
+ 14.978987693786621, 90.23090362548828, 76.59095764160156,
+ -24.556316375732422, 79.58749389648438, 65.21376037597656,
+ 57.4397087097168, 74.41775512695312, -4.513182163238525,
+ 0.5424534678459167, 80.44634246826172, 28.32765007019043,
+ 74.02619171142578, -74.54559326171875, -27.306041717529297,
+ -70.42774200439453, 59.82632064819336, -58.46095275878906,
+ 79.80570983886719, -9.857853889465332, 42.665199279785156
+ ],
+ 'descriptor': {'dimensions': [2, 2, 3, 2, 1], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'slice',
+ 'arguments': [
+ {'input': 'sliceInput'}, {'starts': [1, 0, 2, 1, 0]},
+ {'sizes': [1, 2, 1, 1, 1]}
+ ],
+ 'outputs': 'sliceOutput'
+ }],
+ 'expectedOutputs': {
+ 'sliceOutput': {
+ 'data': [-27.306041717529297, 42.665199279785156],
+ 'descriptor': {'dimensions': [1, 2, 1, 1, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ sliceTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getSlicePrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/softmax.https.any.js b/tests/wpt/tests/webnn/conformance_tests/softmax.https.any.js
index 20c050d7bd8..28c0ff5ecac 100644
--- a/tests/wpt/tests/webnn/conformance_tests/softmax.https.any.js
+++ b/tests/wpt/tests/webnn/conformance_tests/softmax.https.any.js
@@ -8,6 +8,226 @@
'use strict';
-// https://webmachinelearning.github.io/webnn/#api-mlgraphbuilder-softmax
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-softmax-method
+// Compute the softmax values of the N-D input tensor along the given axis.
+//
+// MLOperand softmax(MLOperand input, unsigned long axis);
-runWebNNConformanceTests('softmax', buildSoftmax);
+
+const getSoftmaxPrecisionTolerance = (graphResources) => {
+ const args = graphResources.operators[0].arguments;
+ const inputShape = graphResources.inputs[args[0][Object.keys(args[0])[0]]]
+ .descriptor.dimensions;
+ const axis = args.length === 2 ? args[1][Object.keys(args[1])[0]] : 1;
+ const tolerance = inputShape[axis] * 3 + 3;
+ const toleranceValueDict = {float32: tolerance, float16: tolerance};
+ const expectedDataType =
+ getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs);
+ return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]};
+};
+
+const softmaxTests = [
+ {
+ 'name': 'softmax float32 2D constant tensor all positive',
+ 'graph': {
+ 'inputs': {
+ 'softmaxInput': {
+ 'data': [
+ 7.9037346839904785, 6.358251571655273, 4.833756923675537,
+ 9.5791654586792, 0.21071857213974, 4.554958820343018,
+ 7.150174140930176, 8.330297470092773, 1.5359858274459839,
+ 6.63361930847168, 1.4539369344711304, 0.213418647646904,
+ 5.257819652557373, 8.192137718200684, 8.16172981262207,
+ 2.874434232711792, 8.950733184814453, 6.111632823944092,
+ 1.6371468305587769, 0.27626121044158936, 5.02822732925415,
+ 3.8983259201049805, 2.8967113494873047, 6.88947057723999
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'softmax',
+ 'arguments': [{'input': 'softmaxInput'}],
+ 'outputs': 'softmaxOutput'
+ }],
+ 'expectedOutputs': {
+ 'softmaxOutput': {
+ 'data': [
+ 0.15068615972995758, 0.03212761878967285,
+ 0.006995180621743202, 0.8048291206359863,
+ 0.00006871300138300285, 0.005293202120810747,
+ 0.2057899534702301, 0.6698001027107239,
+ 0.0007502624066546559, 0.1227685883641243,
+ 0.0006911618984304368, 0.00019990770670119673,
+ 0.012398251332342625, 0.23319464921951294,
+ 0.22621041536331177, 0.0011435872875154018,
+ 0.4979347288608551, 0.029118351638317108,
+ 0.004253828432410955, 0.001090824487619102,
+ 0.12633030116558075, 0.040812913328409195,
+ 0.014990009367465973, 0.8125221133232117
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'softmax float32 2D tensor all positive',
+ 'graph': {
+ 'inputs': {
+ 'softmaxInput': {
+ 'data': [
+ 7.9037346839904785, 6.358251571655273, 4.833756923675537,
+ 9.5791654586792, 0.21071857213974, 4.554958820343018,
+ 7.150174140930176, 8.330297470092773, 1.5359858274459839,
+ 6.63361930847168, 1.4539369344711304, 0.213418647646904,
+ 5.257819652557373, 8.192137718200684, 8.16172981262207,
+ 2.874434232711792, 8.950733184814453, 6.111632823944092,
+ 1.6371468305587769, 0.27626121044158936, 5.02822732925415,
+ 3.8983259201049805, 2.8967113494873047, 6.88947057723999
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'softmax',
+ 'arguments': [{'input': 'softmaxInput'}],
+ 'outputs': 'softmaxOutput'
+ }],
+ 'expectedOutputs': {
+ 'softmaxOutput': {
+ 'data': [
+ 0.15068615972995758, 0.03212761878967285,
+ 0.006995180621743202, 0.8048291206359863,
+ 0.00006871300138300285, 0.005293202120810747,
+ 0.2057899534702301, 0.6698001027107239,
+ 0.0007502624066546559, 0.1227685883641243,
+ 0.0006911618984304368, 0.00019990770670119673,
+ 0.012398251332342625, 0.23319464921951294,
+ 0.22621041536331177, 0.0011435872875154018,
+ 0.4979347288608551, 0.029118351638317108,
+ 0.004253828432410955, 0.001090824487619102,
+ 0.12633030116558075, 0.040812913328409195,
+ 0.014990009367465973, 0.8125221133232117
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'softmax float32 2D tensor all negative',
+ 'graph': {
+ 'inputs': {
+ 'softmaxInput': {
+ 'data': [
+ -3.3118433952331543, -3.3389549255371094, -3.4102790355682373,
+ -6.697193145751953, -7.896223545074463, -3.308168888092041,
+ -3.2309720516204834, -4.315771579742432, -9.311088562011719,
+ -3.9236626625061035, -3.780721426010132, -6.034926891326904,
+ -3.9196677207946777, -2.2234842777252197, -9.326531410217285,
+ -1.4882491827011108, -6.302842617034912, -5.53147554397583,
+ -1.8421411514282227, -4.994808197021484, -9.527292251586914,
+ -4.985682964324951, -8.421041488647461, -6.235629558563232
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'softmax',
+ 'arguments': [{'input': 'softmaxInput'}],
+ 'outputs': 'softmaxOutput'
+ }],
+ 'expectedOutputs': {
+ 'softmaxOutput': {
+ 'data': [
+ 0.2546302080154419, 0.24781952798366547, 0.2307596504688263,
+ 0.008623254485428333, 0.002599793951958418, 0.2555675804615021,
+ 0.40352678298950195, 0.13637976348400116, 0.0009232329903170466,
+ 0.20185552537441254, 0.23287305235862732, 0.024441635236144066,
+ 0.0551743283867836, 0.3008708655834198, 0.0002474947541486472,
+ 0.6276082992553711, 0.0050902292132377625, 0.011008745059370995,
+ 0.9090295433998108, 0.0388500951230526, 0.00041779119055718184,
+ 0.039206232875585556, 0.0012629841221496463, 0.011233373545110226
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'softmax float32 3D constant tensor',
+ 'graph': {
+ 'inputs': {
+ 'softmaxInput': {
+ 'data': [
+ 0.4301910996437073, 0.5471914410591125, -1.1637765169143677,
+ 0.18390046060085297, 0.583903968334198, 0.17356790602207184,
+ 0.5397239923477173, -0.9535139799118042, -0.5920282602310181,
+ -0.17344485223293304, 0.14395014941692352, -0.37920907139778137
+ ],
+ 'descriptor': {'dimensions': [1, 3, 4], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'softmax',
+ 'arguments': [{'input': 'softmaxInput'}, {'axis': 1}],
+ 'outputs': 'softmaxOutput'
+ }],
+ 'expectedOutputs': {
+ 'softmaxOutput': {
+ 'data': [
+ 0.39589041471481323, 0.45983806252479553, 0.09812675416469574,
+ 0.529077410697937, 0.4616699814796448, 0.31647709012031555,
+ 0.5390242338180542, 0.16964708268642426, 0.142439603805542,
+ 0.22368484735488892, 0.36284899711608887, 0.3012755215167999
+ ],
+ 'descriptor': {'dimensions': [1, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'softmax float32 4D tensor',
+ 'graph': {
+ 'inputs': {
+ 'softmaxInput': {
+ 'data': [
+ 0.4301910996437073, 0.5471914410591125, -1.1637765169143677,
+ 0.18390046060085297, 0.583903968334198, 0.17356790602207184,
+ 0.5397239923477173, -0.9535139799118042, -0.5920282602310181,
+ -0.17344485223293304, 0.14395014941692352, -0.37920907139778137
+ ],
+ 'descriptor': {'dimensions': [3, 4, 1, 1], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'softmax',
+ 'arguments': [{'input': 'softmaxInput'}, {'axis': 1}],
+ 'outputs': 'softmaxOutput'
+ }],
+ 'expectedOutputs': {
+ 'softmaxOutput': {
+ 'data': [
+ 0.3216537833213806, 0.3615773916244507, 0.06533370912075043,
+ 0.25143513083457947, 0.35271573066711426, 0.23400123417377472,
+ 0.33747196197509766, 0.07581108063459396, 0.17110128700733185,
+ 0.26004093885421753, 0.3571779429912567, 0.2116798311471939
+ ],
+ 'descriptor': {'dimensions': [3, 4, 1, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ softmaxTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getSoftmaxPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/softplus.https.any.js b/tests/wpt/tests/webnn/conformance_tests/softplus.https.any.js
index a2f90bd23d5..9c6698e6d05 100644
--- a/tests/wpt/tests/webnn/conformance_tests/softplus.https.any.js
+++ b/tests/wpt/tests/webnn/conformance_tests/softplus.https.any.js
@@ -8,6 +8,269 @@
'use strict';
-// https://webmachinelearning.github.io/webnn/#api-mlgraphbuilder-softplus
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-softplus-method
+// Compute the softplus function of the input tensor. The calculation follows
+// the expression ln(1 + exp(x)).
+//
+// MLOperand softplus(MLOperand input);
-runWebNNConformanceTests('softplus', buildOperationWithSingleInput);
+
+const getSoftplusPrecisionTolerance = (graphResources) => {
+ const toleranceValueDict = {float32: 18, float16: 18};
+ const expectedDataType =
+ getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs);
+ return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]};
+};
+
+const softplusTests = [
+ {
+ 'name': 'softplus float32 1D constant tensor',
+ 'graph': {
+ 'inputs': {
+ 'softplusInput': {
+ 'data': [
+ 5.626614570617676, 5.167487144470215, 4.0146355628967285,
+ 9.480032920837402, 9.989937782287598, 7.065441131591797,
+ 2.132680892944336, 8.187150955200195, 5.169976234436035,
+ 2.1044998168945312, 3.523329496383667, 4.136340618133545,
+ 1.741871953010559, 5.145224094390869, 5.015515327453613,
+ 0.04590393602848053, 2.957089900970459, 3.959244728088379,
+ 5.517927169799805, 7.192322254180908, 8.764925003051758,
+ 1.373470425605774, 8.930668830871582, 8.660283088684082
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'softplus',
+ 'arguments': [{'input': 'softplusInput'}],
+ 'outputs': 'softplusOutput'
+ }],
+ 'expectedOutputs': {
+ 'softplusOutput': {
+ 'data': [
+ 5.630208969116211, 5.1731696128845215, 4.032524108886719,
+ 9.480109214782715, 9.989983558654785, 7.0662946701049805,
+ 2.2446866035461426, 8.187429428100586, 5.175644874572754,
+ 2.219529390335083, 3.552403688430786, 4.152195453643799,
+ 1.903303623199463, 5.151034355163574, 5.022127628326416,
+ 0.7163625359535217, 3.007754325866699, 3.978142499923706,
+ 5.521933078765869, 7.1930742263793945, 8.765081405639648,
+ 1.5991919040679932, 8.930801391601562, 8.660456657409668
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'softplus float32 1D tensor',
+ 'graph': {
+ 'inputs': {
+ 'softplusInput': {
+ 'data': [
+ 5.626614570617676, 5.167487144470215, 4.0146355628967285,
+ 9.480032920837402, 9.989937782287598, 7.065441131591797,
+ 2.132680892944336, 8.187150955200195, 5.169976234436035,
+ 2.1044998168945312, 3.523329496383667, 4.136340618133545,
+ 1.741871953010559, 5.145224094390869, 5.015515327453613,
+ 0.04590393602848053, 2.957089900970459, 3.959244728088379,
+ 5.517927169799805, 7.192322254180908, 8.764925003051758,
+ 1.373470425605774, 8.930668830871582, 8.660283088684082
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'softplus',
+ 'arguments': [{'input': 'softplusInput'}],
+ 'outputs': 'softplusOutput'
+ }],
+ 'expectedOutputs': {
+ 'softplusOutput': {
+ 'data': [
+ 5.630208969116211, 5.1731696128845215, 4.032524108886719,
+ 9.480109214782715, 9.989983558654785, 7.0662946701049805,
+ 2.2446866035461426, 8.187429428100586, 5.175644874572754,
+ 2.219529390335083, 3.552403688430786, 4.152195453643799,
+ 1.903303623199463, 5.151034355163574, 5.022127628326416,
+ 0.7163625359535217, 3.007754325866699, 3.978142499923706,
+ 5.521933078765869, 7.1930742263793945, 8.765081405639648,
+ 1.5991919040679932, 8.930801391601562, 8.660456657409668
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'softplus float32 2D tensor',
+ 'graph': {
+ 'inputs': {
+ 'softplusInput': {
+ 'data': [
+ 5.626614570617676, 5.167487144470215, 4.0146355628967285,
+ 9.480032920837402, 9.989937782287598, 7.065441131591797,
+ 2.132680892944336, 8.187150955200195, 5.169976234436035,
+ 2.1044998168945312, 3.523329496383667, 4.136340618133545,
+ 1.741871953010559, 5.145224094390869, 5.015515327453613,
+ 0.04590393602848053, 2.957089900970459, 3.959244728088379,
+ 5.517927169799805, 7.192322254180908, 8.764925003051758,
+ 1.373470425605774, 8.930668830871582, 8.660283088684082
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'softplus',
+ 'arguments': [{'input': 'softplusInput'}],
+ 'outputs': 'softplusOutput'
+ }],
+ 'expectedOutputs': {
+ 'softplusOutput': {
+ 'data': [
+ 5.630208969116211, 5.1731696128845215, 4.032524108886719,
+ 9.480109214782715, 9.989983558654785, 7.0662946701049805,
+ 2.2446866035461426, 8.187429428100586, 5.175644874572754,
+ 2.219529390335083, 3.552403688430786, 4.152195453643799,
+ 1.903303623199463, 5.151034355163574, 5.022127628326416,
+ 0.7163625359535217, 3.007754325866699, 3.978142499923706,
+ 5.521933078765869, 7.1930742263793945, 8.765081405639648,
+ 1.5991919040679932, 8.930801391601562, 8.660456657409668
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'softplus float32 3D tensor',
+ 'graph': {
+ 'inputs': {
+ 'softplusInput': {
+ 'data': [
+ 5.626614570617676, 5.167487144470215, 4.0146355628967285,
+ 9.480032920837402, 9.989937782287598, 7.065441131591797,
+ 2.132680892944336, 8.187150955200195, 5.169976234436035,
+ 2.1044998168945312, 3.523329496383667, 4.136340618133545,
+ 1.741871953010559, 5.145224094390869, 5.015515327453613,
+ 0.04590393602848053, 2.957089900970459, 3.959244728088379,
+ 5.517927169799805, 7.192322254180908, 8.764925003051758,
+ 1.373470425605774, 8.930668830871582, 8.660283088684082
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'softplus',
+ 'arguments': [{'input': 'softplusInput'}],
+ 'outputs': 'softplusOutput'
+ }],
+ 'expectedOutputs': {
+ 'softplusOutput': {
+ 'data': [
+ 5.630208969116211, 5.1731696128845215, 4.032524108886719,
+ 9.480109214782715, 9.989983558654785, 7.0662946701049805,
+ 2.2446866035461426, 8.187429428100586, 5.175644874572754,
+ 2.219529390335083, 3.552403688430786, 4.152195453643799,
+ 1.903303623199463, 5.151034355163574, 5.022127628326416,
+ 0.7163625359535217, 3.007754325866699, 3.978142499923706,
+ 5.521933078765869, 7.1930742263793945, 8.765081405639648,
+ 1.5991919040679932, 8.930801391601562, 8.660456657409668
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'softplus float32 4D tensor',
+ 'graph': {
+ 'inputs': {
+ 'softplusInput': {
+ 'data': [
+ 5.626614570617676, 5.167487144470215, 4.0146355628967285,
+ 9.480032920837402, 9.989937782287598, 7.065441131591797,
+ 2.132680892944336, 8.187150955200195, 5.169976234436035,
+ 2.1044998168945312, 3.523329496383667, 4.136340618133545,
+ 1.741871953010559, 5.145224094390869, 5.015515327453613,
+ 0.04590393602848053, 2.957089900970459, 3.959244728088379,
+ 5.517927169799805, 7.192322254180908, 8.764925003051758,
+ 1.373470425605774, 8.930668830871582, 8.660283088684082
+ ],
+ 'descriptor': {'dimensions': [1, 2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'softplus',
+ 'arguments': [{'input': 'softplusInput'}],
+ 'outputs': 'softplusOutput'
+ }],
+ 'expectedOutputs': {
+ 'softplusOutput': {
+ 'data': [
+ 5.630208969116211, 5.1731696128845215, 4.032524108886719,
+ 9.480109214782715, 9.989983558654785, 7.0662946701049805,
+ 2.2446866035461426, 8.187429428100586, 5.175644874572754,
+ 2.219529390335083, 3.552403688430786, 4.152195453643799,
+ 1.903303623199463, 5.151034355163574, 5.022127628326416,
+ 0.7163625359535217, 3.007754325866699, 3.978142499923706,
+ 5.521933078765869, 7.1930742263793945, 8.765081405639648,
+ 1.5991919040679932, 8.930801391601562, 8.660456657409668
+ ],
+ 'descriptor': {'dimensions': [1, 2, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'softplus float32 5D tensor',
+ 'graph': {
+ 'inputs': {
+ 'softplusInput': {
+ 'data': [
+ 5.626614570617676, 5.167487144470215, 4.0146355628967285,
+ 9.480032920837402, 9.989937782287598, 7.065441131591797,
+ 2.132680892944336, 8.187150955200195, 5.169976234436035,
+ 2.1044998168945312, 3.523329496383667, 4.136340618133545,
+ 1.741871953010559, 5.145224094390869, 5.015515327453613,
+ 0.04590393602848053, 2.957089900970459, 3.959244728088379,
+ 5.517927169799805, 7.192322254180908, 8.764925003051758,
+ 1.373470425605774, 8.930668830871582, 8.660283088684082
+ ],
+ 'descriptor': {'dimensions': [1, 2, 1, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'softplus',
+ 'arguments': [{'input': 'softplusInput'}],
+ 'outputs': 'softplusOutput'
+ }],
+ 'expectedOutputs': {
+ 'softplusOutput': {
+ 'data': [
+ 5.630208969116211, 5.1731696128845215, 4.032524108886719,
+ 9.480109214782715, 9.989983558654785, 7.0662946701049805,
+ 2.2446866035461426, 8.187429428100586, 5.175644874572754,
+ 2.219529390335083, 3.552403688430786, 4.152195453643799,
+ 1.903303623199463, 5.151034355163574, 5.022127628326416,
+ 0.7163625359535217, 3.007754325866699, 3.978142499923706,
+ 5.521933078765869, 7.1930742263793945, 8.765081405639648,
+ 1.5991919040679932, 8.930801391601562, 8.660456657409668
+ ],
+ 'descriptor': {'dimensions': [1, 2, 1, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ softplusTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getSoftplusPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/softsign.https.any.js b/tests/wpt/tests/webnn/conformance_tests/softsign.https.any.js
index 1e9c9f77fee..b146953bb61 100644
--- a/tests/wpt/tests/webnn/conformance_tests/softsign.https.any.js
+++ b/tests/wpt/tests/webnn/conformance_tests/softsign.https.any.js
@@ -8,6 +8,309 @@
'use strict';
-// https://webmachinelearning.github.io/webnn/#api-mlgraphbuilder-softsign
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-softsign-method
+// Compute the softsign function of the input tensor. The calculation follows
+// the expression x / (1 + |x|).
+//
+// MLOperand softsign(MLOperand input);
-runWebNNConformanceTests('softsign', buildOperationWithSingleInput);
+
+const getSoftsignPrecisionTolerance = (graphResources) => {
+ const toleranceValueDict = {float32: 3, float16: 3};
+ const expectedDataType =
+ getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs);
+ return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]};
+};
+
+const softsignTests = [
+ {
+ 'name': 'softsign positive float32 1D constant tensor',
+ 'graph': {
+ 'inputs': {
+ 'softsignInput': {
+ 'data': [
+ 1.5834133625030518, 4.078719139099121, 8.883357048034668,
+ 8.070859909057617, 8.211773872375488, 2.4554004669189453,
+ 0.653374195098877, 7.866281032562256, 3.123955249786377,
+ 8.013792037963867, 3.940986156463623, 1.813172698020935,
+ 2.3906760215759277, 1.335968017578125, 9.416410446166992,
+ 0.4432569146156311, 5.236661911010742, 9.42424201965332,
+ 7.816190242767334, 5.849185943603516, 8.780370712280273,
+ 5.120515823364258, 7.117222309112549, 4.599106788635254
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'softsign',
+ 'arguments': [{'input': 'softsignInput'}],
+ 'outputs': 'softsignOutput'
+ }],
+ 'expectedOutputs': {
+ 'softsignOutput': {
+ 'data': [
+ 0.6129152178764343, 0.8030999898910522, 0.8988198041915894,
+ 0.8897568583488464, 0.8914432525634766, 0.7105979323387146,
+ 0.3951762318611145, 0.8872131109237671, 0.7575143575668335,
+ 0.8890588879585266, 0.7976112365722656, 0.6445294618606567,
+ 0.7050735354423523, 0.5719119310379028, 0.9039976596832275,
+ 0.30712267756462097, 0.8396578431129456, 0.9040697813034058,
+ 0.8865723013877869, 0.8539972305297852, 0.8977543711662292,
+ 0.8366150856018066, 0.8768051266670227, 0.8214001059532166
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'softsign positive float32 1D tensor',
+ 'graph': {
+ 'inputs': {
+ 'softsignInput': {
+ 'data': [
+ 1.5834133625030518, 4.078719139099121, 8.883357048034668,
+ 8.070859909057617, 8.211773872375488, 2.4554004669189453,
+ 0.653374195098877, 7.866281032562256, 3.123955249786377,
+ 8.013792037963867, 3.940986156463623, 1.813172698020935,
+ 2.3906760215759277, 1.335968017578125, 9.416410446166992,
+ 0.4432569146156311, 5.236661911010742, 9.42424201965332,
+ 7.816190242767334, 5.849185943603516, 8.780370712280273,
+ 5.120515823364258, 7.117222309112549, 4.599106788635254
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'softsign',
+ 'arguments': [{'input': 'softsignInput'}],
+ 'outputs': 'softsignOutput'
+ }],
+ 'expectedOutputs': {
+ 'softsignOutput': {
+ 'data': [
+ 0.6129152178764343, 0.8030999898910522, 0.8988198041915894,
+ 0.8897568583488464, 0.8914432525634766, 0.7105979323387146,
+ 0.3951762318611145, 0.8872131109237671, 0.7575143575668335,
+ 0.8890588879585266, 0.7976112365722656, 0.6445294618606567,
+ 0.7050735354423523, 0.5719119310379028, 0.9039976596832275,
+ 0.30712267756462097, 0.8396578431129456, 0.9040697813034058,
+ 0.8865723013877869, 0.8539972305297852, 0.8977543711662292,
+ 0.8366150856018066, 0.8768051266670227, 0.8214001059532166
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'softsign negative float32 1D tensor',
+ 'graph': {
+ 'inputs': {
+ 'softsignInput': {
+ 'data': [
+ -2.597844123840332, -0.4449555575847626, -9.095475196838379,
+ -3.7480077743530273, -1.3867290019989014, -8.220329284667969,
+ -3.538342237472534, -9.364588737487793, -6.283252239227295,
+ -5.002012252807617, -8.245729446411133, -3.775470495223999,
+ -4.087255001068115, -7.381676197052002, -5.8829216957092285,
+ -8.338910102844238, -6.60154914855957, -4.491941928863525,
+ -3.5247786045074463, -4.43991231918335, -5.234262466430664,
+ -1.5911732912063599, -9.106277465820312, -8.523774147033691
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'softsign',
+ 'arguments': [{'input': 'softsignInput'}],
+ 'outputs': 'softsignOutput'
+ }],
+ 'expectedOutputs': {
+ 'softsignOutput': {
+ 'data': [
+ -0.7220557928085327, -0.3079372048377991, -0.9009457230567932,
+ -0.7893853783607483, -0.5810165405273438, -0.891543984413147,
+ -0.7796552181243896, -0.9035176634788513, -0.8626986742019653,
+ -0.8333892226219177, -0.8918419480323792, -0.7905965447425842,
+ -0.8034303188323975, -0.8806921243667603, -0.8547128438949585,
+ -0.8929211497306824, -0.8684478402137756, -0.8179150223731995,
+ -0.7789947390556335, -0.8161734938621521, -0.8395960927009583,
+ -0.6140744686126709, -0.9010515809059143, -0.894999623298645
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'softsign float32 2D tensor',
+ 'graph': {
+ 'inputs': {
+ 'softsignInput': {
+ 'data': [
+ -8.343496322631836, -6.920152187347412, 2.699638843536377,
+ -8.663105010986328, -3.1905343532562256, 7.657886981964111,
+ 6.650215148925781, 6.058011054992676, 0.6634320616722107,
+ 5.8058037757873535, -0.32821124792099, 1.2704304456710815,
+ -9.946120262145996, 6.905375003814697, -0.031071536242961884,
+ -3.9696409702301025, 6.270823001861572, -2.639260768890381,
+ 3.0513505935668945, 7.426476955413818, -8.454667091369629,
+ 7.135868072509766, -4.986093997955322, -7.859614849090576
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'softsign',
+ 'arguments': [{'input': 'softsignInput'}],
+ 'outputs': 'softsignOutput'
+ }],
+ 'expectedOutputs': {
+ 'softsignOutput': {
+ 'data': [
+ -0.8929736614227295, -0.8737397789955139, 0.7297033667564392,
+ -0.8965135812759399, -0.7613669633865356, 0.8844983577728271,
+ 0.8692847490310669, 0.8583170175552368, 0.3988332748413086,
+ 0.8530665636062622, -0.24710771441459656, 0.5595548748970032,
+ -0.9086434245109558, 0.8735038042068481, -0.03013519011437893,
+ -0.798778235912323, 0.8624640107154846, -0.7252188920974731,
+ 0.7531687617301941, 0.88132643699646, -0.8942321538925171,
+ 0.8770874738693237, -0.8329461812973022, -0.8871282935142517
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'softsign float32 3D tensor',
+ 'graph': {
+ 'inputs': {
+ 'softsignInput': {
+ 'data': [
+ -8.343496322631836, -6.920152187347412, 2.699638843536377,
+ -8.663105010986328, -3.1905343532562256, 7.657886981964111,
+ 6.650215148925781, 6.058011054992676, 0.6634320616722107,
+ 5.8058037757873535, -0.32821124792099, 1.2704304456710815,
+ -9.946120262145996, 6.905375003814697, -0.031071536242961884,
+ -3.9696409702301025, 6.270823001861572, -2.639260768890381,
+ 3.0513505935668945, 7.426476955413818, -8.454667091369629,
+ 7.135868072509766, -4.986093997955322, -7.859614849090576
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'softsign',
+ 'arguments': [{'input': 'softsignInput'}],
+ 'outputs': 'softsignOutput'
+ }],
+ 'expectedOutputs': {
+ 'softsignOutput': {
+ 'data': [
+ -0.8929736614227295, -0.8737397789955139, 0.7297033667564392,
+ -0.8965135812759399, -0.7613669633865356, 0.8844983577728271,
+ 0.8692847490310669, 0.8583170175552368, 0.3988332748413086,
+ 0.8530665636062622, -0.24710771441459656, 0.5595548748970032,
+ -0.9086434245109558, 0.8735038042068481, -0.03013519011437893,
+ -0.798778235912323, 0.8624640107154846, -0.7252188920974731,
+ 0.7531687617301941, 0.88132643699646, -0.8942321538925171,
+ 0.8770874738693237, -0.8329461812973022, -0.8871282935142517
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'softsign float32 4D tensor',
+ 'graph': {
+ 'inputs': {
+ 'softsignInput': {
+ 'data': [
+ -8.343496322631836, -6.920152187347412, 2.699638843536377,
+ -8.663105010986328, -3.1905343532562256, 7.657886981964111,
+ 6.650215148925781, 6.058011054992676, 0.6634320616722107,
+ 5.8058037757873535, -0.32821124792099, 1.2704304456710815,
+ -9.946120262145996, 6.905375003814697, -0.031071536242961884,
+ -3.9696409702301025, 6.270823001861572, -2.639260768890381,
+ 3.0513505935668945, 7.426476955413818, -8.454667091369629,
+ 7.135868072509766, -4.986093997955322, -7.859614849090576
+ ],
+ 'descriptor': {'dimensions': [1, 2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'softsign',
+ 'arguments': [{'input': 'softsignInput'}],
+ 'outputs': 'softsignOutput'
+ }],
+ 'expectedOutputs': {
+ 'softsignOutput': {
+ 'data': [
+ -0.8929736614227295, -0.8737397789955139, 0.7297033667564392,
+ -0.8965135812759399, -0.7613669633865356, 0.8844983577728271,
+ 0.8692847490310669, 0.8583170175552368, 0.3988332748413086,
+ 0.8530665636062622, -0.24710771441459656, 0.5595548748970032,
+ -0.9086434245109558, 0.8735038042068481, -0.03013519011437893,
+ -0.798778235912323, 0.8624640107154846, -0.7252188920974731,
+ 0.7531687617301941, 0.88132643699646, -0.8942321538925171,
+ 0.8770874738693237, -0.8329461812973022, -0.8871282935142517
+ ],
+ 'descriptor': {'dimensions': [1, 2, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'softsign float32 5D tensor',
+ 'graph': {
+ 'inputs': {
+ 'softsignInput': {
+ 'data': [
+ -8.343496322631836, -6.920152187347412, 2.699638843536377,
+ -8.663105010986328, -3.1905343532562256, 7.657886981964111,
+ 6.650215148925781, 6.058011054992676, 0.6634320616722107,
+ 5.8058037757873535, -0.32821124792099, 1.2704304456710815,
+ -9.946120262145996, 6.905375003814697, -0.031071536242961884,
+ -3.9696409702301025, 6.270823001861572, -2.639260768890381,
+ 3.0513505935668945, 7.426476955413818, -8.454667091369629,
+ 7.135868072509766, -4.986093997955322, -7.859614849090576
+ ],
+ 'descriptor': {'dimensions': [1, 2, 1, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'softsign',
+ 'arguments': [{'input': 'softsignInput'}],
+ 'outputs': 'softsignOutput'
+ }],
+ 'expectedOutputs': {
+ 'softsignOutput': {
+ 'data': [
+ -0.8929736614227295, -0.8737397789955139, 0.7297033667564392,
+ -0.8965135812759399, -0.7613669633865356, 0.8844983577728271,
+ 0.8692847490310669, 0.8583170175552368, 0.3988332748413086,
+ 0.8530665636062622, -0.24710771441459656, 0.5595548748970032,
+ -0.9086434245109558, 0.8735038042068481, -0.03013519011437893,
+ -0.798778235912323, 0.8624640107154846, -0.7252188920974731,
+ 0.7531687617301941, 0.88132643699646, -0.8942321538925171,
+ 0.8770874738693237, -0.8329461812973022, -0.8871282935142517
+ ],
+ 'descriptor': {'dimensions': [1, 2, 1, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ softsignTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getSoftsignPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/split.https.any.js b/tests/wpt/tests/webnn/conformance_tests/split.https.any.js
index 84fee2f6651..eee757f2976 100644
--- a/tests/wpt/tests/webnn/conformance_tests/split.https.any.js
+++ b/tests/wpt/tests/webnn/conformance_tests/split.https.any.js
@@ -8,6 +8,515 @@
'use strict';
-// https://webmachinelearning.github.io/webnn/#api-mlgraphbuilder-split
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-split
+// Split the input tensor into a number of sub tensors along the given axis.
+//
+// dictionary MLSplitOptions {
+// [EnforceRange] unsigned long axis = 0;
+// };
+//
+// sequence<MLOperand> split(
+// MLOperand input,
+// ([EnforceRange] unsigned long or sequence<[EnforceRange] unsigned long>)
+// splits, optional MLSplitOptions options = {});
-runWebNNConformanceTests('split', buildSplit);
+
+const getSplitPrecisionTolerance = (graphResources) => {
+ const toleranceValueDict = {float32: 0, float16: 0};
+ const dataType =
+ graphResources
+ .expectedOutputs[Object.keys(graphResources.expectedOutputs)[0]]
+ .descriptor.dataType;
+ return {metricType: 'ULP', value: toleranceValueDict[dataType]};
+};
+
+const splitTests = [
+ {
+ 'name': 'split float32 1D constant tensor number splits default options',
+ 'graph': {
+ 'inputs': {
+ 'splitInput': {
+ 'data': [
+ -64.52056884765625, -84.60513305664062, -67.99282836914062,
+ -23.446075439453125, -85.64382934570312, 46.87752151489258,
+ -68.11224365234375, 75.99607849121094, -61.05668640136719,
+ -90.92643737792969, 53.916622161865234, 84.16268920898438,
+ -95.57494354248047, -52.40757751464844, -29.007186889648438,
+ 71.65496063232422, 50.66357421875, 21.364582061767578,
+ -27.127241134643555, 65.1489486694336, -30.40681266784668,
+ -6.818390369415283, 46.673622131347656, -21.12453842163086
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [
+ {'name': 'split', 'arguments': [{'input': 'splitInput'}, {'splits': 3}]}
+ ],
+ 'expectedOutputs': {
+ 'splitOutput1': {
+ 'data': [
+ -64.52056884765625, -84.60513305664062, -67.99282836914062,
+ -23.446075439453125, -85.64382934570312, 46.87752151489258,
+ -68.11224365234375, 75.99607849121094
+ ],
+ 'descriptor': {'dimensions': [8], 'dataType': 'float32'}
+ },
+ 'splitOutput2': {
+ 'data': [
+ -61.05668640136719, -90.92643737792969, 53.916622161865234,
+ 84.16268920898438, -95.57494354248047, -52.40757751464844,
+ -29.007186889648438, 71.65496063232422
+ ],
+ 'descriptor': {'dimensions': [8], 'dataType': 'float32'}
+ },
+ 'splitOutput3': {
+ 'data': [
+ 50.66357421875, 21.364582061767578, -27.127241134643555,
+ 65.1489486694336, -30.40681266784668, -6.818390369415283,
+ 46.673622131347656, -21.12453842163086
+ ],
+ 'descriptor': {'dimensions': [8], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'split float32 1D tensor number splits default options',
+ 'graph': {
+ 'inputs': {
+ 'splitInput': {
+ 'data': [
+ -64.52056884765625, -84.60513305664062, -67.99282836914062,
+ -23.446075439453125, -85.64382934570312, 46.87752151489258,
+ -68.11224365234375, 75.99607849121094, -61.05668640136719,
+ -90.92643737792969, 53.916622161865234, 84.16268920898438,
+ -95.57494354248047, -52.40757751464844, -29.007186889648438,
+ 71.65496063232422, 50.66357421875, 21.364582061767578,
+ -27.127241134643555, 65.1489486694336, -30.40681266784668,
+ -6.818390369415283, 46.673622131347656, -21.12453842163086
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [
+ {'name': 'split', 'arguments': [{'input': 'splitInput'}, {'splits': 3}]}
+ ],
+ 'expectedOutputs': {
+ 'splitOutput1': {
+ 'data': [
+ -64.52056884765625, -84.60513305664062, -67.99282836914062,
+ -23.446075439453125, -85.64382934570312, 46.87752151489258,
+ -68.11224365234375, 75.99607849121094
+ ],
+ 'descriptor': {'dimensions': [8], 'dataType': 'float32'}
+ },
+ 'splitOutput2': {
+ 'data': [
+ -61.05668640136719, -90.92643737792969, 53.916622161865234,
+ 84.16268920898438, -95.57494354248047, -52.40757751464844,
+ -29.007186889648438, 71.65496063232422
+ ],
+ 'descriptor': {'dimensions': [8], 'dataType': 'float32'}
+ },
+ 'splitOutput3': {
+ 'data': [
+ 50.66357421875, 21.364582061767578, -27.127241134643555,
+ 65.1489486694336, -30.40681266784668, -6.818390369415283,
+ 46.673622131347656, -21.12453842163086
+ ],
+ 'descriptor': {'dimensions': [8], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'split float32 2D tensor number splits default options',
+ 'graph': {
+ 'inputs': {
+ 'splitInput': {
+ 'data': [
+ -64.52056884765625, -84.60513305664062, -67.99282836914062,
+ -23.446075439453125, -85.64382934570312, 46.87752151489258,
+ -68.11224365234375, 75.99607849121094, -61.05668640136719,
+ -90.92643737792969, 53.916622161865234, 84.16268920898438,
+ -95.57494354248047, -52.40757751464844, -29.007186889648438,
+ 71.65496063232422, 50.66357421875, 21.364582061767578,
+ -27.127241134643555, 65.1489486694336, -30.40681266784668,
+ -6.818390369415283, 46.673622131347656, -21.12453842163086
+ ],
+ 'descriptor': {'dimensions': [8, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [
+ {'name': 'split', 'arguments': [{'input': 'splitInput'}, {'splits': 2}]}
+ ],
+ 'expectedOutputs': {
+ 'splitOutput1': {
+ 'data': [
+ -64.52056884765625, -84.60513305664062, -67.99282836914062,
+ -23.446075439453125, -85.64382934570312, 46.87752151489258,
+ -68.11224365234375, 75.99607849121094, -61.05668640136719,
+ -90.92643737792969, 53.916622161865234, 84.16268920898438
+ ],
+ 'descriptor': {'dimensions': [4, 3], 'dataType': 'float32'}
+ },
+ 'splitOutput2': {
+ 'data': [
+ -95.57494354248047, -52.40757751464844, -29.007186889648438,
+ 71.65496063232422, 50.66357421875, 21.364582061767578,
+ -27.127241134643555, 65.1489486694336, -30.40681266784668,
+ -6.818390369415283, 46.673622131347656, -21.12453842163086
+ ],
+ 'descriptor': {'dimensions': [4, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'split float32 3D tensor number splits default options',
+ 'graph': {
+ 'inputs': {
+ 'splitInput': {
+ 'data': [
+ -64.52056884765625, -84.60513305664062, -67.99282836914062,
+ -23.446075439453125, -85.64382934570312, 46.87752151489258,
+ -68.11224365234375, 75.99607849121094, -61.05668640136719,
+ -90.92643737792969, 53.916622161865234, 84.16268920898438,
+ -95.57494354248047, -52.40757751464844, -29.007186889648438,
+ 71.65496063232422, 50.66357421875, 21.364582061767578,
+ -27.127241134643555, 65.1489486694336, -30.40681266784668,
+ -6.818390369415283, 46.673622131347656, -21.12453842163086
+ ],
+ 'descriptor': {'dimensions': [4, 3, 2], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [
+ {'name': 'split', 'arguments': [{'input': 'splitInput'}, {'splits': 2}]}
+ ],
+ 'expectedOutputs': {
+ 'splitOutput1': {
+ 'data': [
+ -64.52056884765625, -84.60513305664062, -67.99282836914062,
+ -23.446075439453125, -85.64382934570312, 46.87752151489258,
+ -68.11224365234375, 75.99607849121094, -61.05668640136719,
+ -90.92643737792969, 53.916622161865234, 84.16268920898438
+ ],
+ 'descriptor': {'dimensions': [2, 3, 2], 'dataType': 'float32'}
+ },
+ 'splitOutput2': {
+ 'data': [
+ -95.57494354248047, -52.40757751464844, -29.007186889648438,
+ 71.65496063232422, 50.66357421875, 21.364582061767578,
+ -27.127241134643555, 65.1489486694336, -30.40681266784668,
+ -6.818390369415283, 46.673622131347656, -21.12453842163086
+ ],
+ 'descriptor': {'dimensions': [2, 3, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'split float32 4D tensor number splits default options',
+ 'graph': {
+ 'inputs': {
+ 'splitInput': {
+ 'data': [
+ -64.52056884765625, -84.60513305664062, -67.99282836914062,
+ -23.446075439453125, -85.64382934570312, 46.87752151489258,
+ -68.11224365234375, 75.99607849121094, -61.05668640136719,
+ -90.92643737792969, 53.916622161865234, 84.16268920898438,
+ -95.57494354248047, -52.40757751464844, -29.007186889648438,
+ 71.65496063232422, 50.66357421875, 21.364582061767578,
+ -27.127241134643555, 65.1489486694336, -30.40681266784668,
+ -6.818390369415283, 46.673622131347656, -21.12453842163086
+ ],
+ 'descriptor': {'dimensions': [12, 1, 1, 2], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [
+ {'name': 'split', 'arguments': [{'input': 'splitInput'}, {'splits': 4}]}
+ ],
+ 'expectedOutputs': {
+ 'splitOutput1': {
+ 'data': [
+ -64.52056884765625, -84.60513305664062, -67.99282836914062,
+ -23.446075439453125, -85.64382934570312, 46.87752151489258
+ ],
+ 'descriptor': {'dimensions': [3, 1, 1, 2], 'dataType': 'float32'}
+ },
+ 'splitOutput2': {
+ 'data': [
+ -68.11224365234375, 75.99607849121094, -61.05668640136719,
+ -90.92643737792969, 53.916622161865234, 84.16268920898438
+ ],
+ 'descriptor': {'dimensions': [3, 1, 1, 2], 'dataType': 'float32'}
+ },
+ 'splitOutput3': {
+ 'data': [
+ -95.57494354248047, -52.40757751464844, -29.007186889648438,
+ 71.65496063232422, 50.66357421875, 21.364582061767578
+ ],
+ 'descriptor': {'dimensions': [3, 1, 1, 2], 'dataType': 'float32'}
+ },
+ 'splitOutput4': {
+ 'data': [
+ -27.127241134643555, 65.1489486694336, -30.40681266784668,
+ -6.818390369415283, 46.673622131347656, -21.12453842163086
+ ],
+ 'descriptor': {'dimensions': [3, 1, 1, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'split float32 5D tensor number splits default options',
+ 'graph': {
+ 'inputs': {
+ 'splitInput': {
+ 'data': [
+ -64.52056884765625, -84.60513305664062, -67.99282836914062,
+ -23.446075439453125, -85.64382934570312, 46.87752151489258,
+ -68.11224365234375, 75.99607849121094, -61.05668640136719,
+ -90.92643737792969, 53.916622161865234, 84.16268920898438,
+ -95.57494354248047, -52.40757751464844, -29.007186889648438,
+ 71.65496063232422, 50.66357421875, 21.364582061767578,
+ -27.127241134643555, 65.1489486694336, -30.40681266784668,
+ -6.818390369415283, 46.673622131347656, -21.12453842163086
+ ],
+ 'descriptor': {'dimensions': [6, 1, 1, 2, 2], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [
+ {'name': 'split', 'arguments': [{'input': 'splitInput'}, {'splits': 2}]}
+ ],
+ 'expectedOutputs': {
+ 'splitOutput1': {
+ 'data': [
+ -64.52056884765625, -84.60513305664062, -67.99282836914062,
+ -23.446075439453125, -85.64382934570312, 46.87752151489258,
+ -68.11224365234375, 75.99607849121094, -61.05668640136719,
+ -90.92643737792969, 53.916622161865234, 84.16268920898438
+ ],
+ 'descriptor': {'dimensions': [3, 1, 1, 2, 2], 'dataType': 'float32'}
+ },
+ 'splitOutput2': {
+ 'data': [
+ -95.57494354248047, -52.40757751464844, -29.007186889648438,
+ 71.65496063232422, 50.66357421875, 21.364582061767578,
+ -27.127241134643555, 65.1489486694336, -30.40681266784668,
+ -6.818390369415283, 46.673622131347656, -21.12453842163086
+ ],
+ 'descriptor': {'dimensions': [3, 1, 1, 2, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'split float32 4D tensor array splits default options',
+ 'graph': {
+ 'inputs': {
+ 'splitInput': {
+ 'data': [
+ -64.52056884765625, -84.60513305664062, -67.99282836914062,
+ -23.446075439453125, -85.64382934570312, 46.87752151489258,
+ -68.11224365234375, 75.99607849121094, -61.05668640136719,
+ -90.92643737792969, 53.916622161865234, 84.16268920898438,
+ -95.57494354248047, -52.40757751464844, -29.007186889648438,
+ 71.65496063232422, 50.66357421875, 21.364582061767578,
+ -27.127241134643555, 65.1489486694336, -30.40681266784668,
+ -6.818390369415283, 46.673622131347656, -21.12453842163086
+ ],
+ 'descriptor': {'dimensions': [12, 1, 1, 2], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'split',
+ 'arguments': [{'input': 'splitInput'}, {'splits': [3, 3, 3, 3]}]
+ }],
+ 'expectedOutputs': {
+ 'splitOutput1': {
+ 'data': [
+ -64.52056884765625, -84.60513305664062, -67.99282836914062,
+ -23.446075439453125, -85.64382934570312, 46.87752151489258
+ ],
+ 'descriptor': {'dimensions': [3, 1, 1, 2], 'dataType': 'float32'}
+ },
+ 'splitOutput2': {
+ 'data': [
+ -68.11224365234375, 75.99607849121094, -61.05668640136719,
+ -90.92643737792969, 53.916622161865234, 84.16268920898438
+ ],
+ 'descriptor': {'dimensions': [3, 1, 1, 2], 'dataType': 'float32'}
+ },
+ 'splitOutput3': {
+ 'data': [
+ -95.57494354248047, -52.40757751464844, -29.007186889648438,
+ 71.65496063232422, 50.66357421875, 21.364582061767578
+ ],
+ 'descriptor': {'dimensions': [3, 1, 1, 2], 'dataType': 'float32'}
+ },
+ 'splitOutput4': {
+ 'data': [
+ -27.127241134643555, 65.1489486694336, -30.40681266784668,
+ -6.818390369415283, 46.673622131347656, -21.12453842163086
+ ],
+ 'descriptor': {'dimensions': [3, 1, 1, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'split float32 4D tensor number splits options.axis',
+ 'graph': {
+ 'inputs': {
+ 'splitInput': {
+ 'data': [
+ -64.52056884765625, -84.60513305664062, -67.99282836914062,
+ -23.446075439453125, -85.64382934570312, 46.87752151489258,
+ -68.11224365234375, 75.99607849121094, -61.05668640136719,
+ -90.92643737792969, 53.916622161865234, 84.16268920898438,
+ -95.57494354248047, -52.40757751464844, -29.007186889648438,
+ 71.65496063232422, 50.66357421875, 21.364582061767578,
+ -27.127241134643555, 65.1489486694336, -30.40681266784668,
+ -6.818390369415283, 46.673622131347656, -21.12453842163086
+ ],
+ 'descriptor': {'dimensions': [12, 1, 1, 2], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'split',
+ 'arguments':
+ [{'input': 'splitInput'}, {'splits': 3}, {'options': {'axis': 0}}]
+ }],
+ 'expectedOutputs': {
+ 'splitOutput1': {
+ 'data': [
+ -64.52056884765625, -84.60513305664062, -67.99282836914062,
+ -23.446075439453125, -85.64382934570312, 46.87752151489258,
+ -68.11224365234375, 75.99607849121094
+ ],
+ 'descriptor': {'dimensions': [4, 1, 1, 2], 'dataType': 'float32'}
+ },
+ 'splitOutput2': {
+ 'data': [
+ -61.05668640136719, -90.92643737792969, 53.916622161865234,
+ 84.16268920898438, -95.57494354248047, -52.40757751464844,
+ -29.007186889648438, 71.65496063232422
+ ],
+ 'descriptor': {'dimensions': [4, 1, 1, 2], 'dataType': 'float32'}
+ },
+ 'splitOutput3': {
+ 'data': [
+ 50.66357421875, 21.364582061767578, -27.127241134643555,
+ 65.1489486694336, -30.40681266784668, -6.818390369415283,
+ 46.673622131347656, -21.12453842163086
+ ],
+ 'descriptor': {'dimensions': [4, 1, 1, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'split float32 5D tensor array splits=[3, 3] options.axis=2',
+ 'graph': {
+ 'inputs': {
+ 'splitInput': {
+ 'data': [
+ -64.52056884765625, -84.60513305664062, -67.99282836914062,
+ -23.446075439453125, -85.64382934570312, 46.87752151489258,
+ -68.11224365234375, 75.99607849121094, -61.05668640136719,
+ -90.92643737792969, 53.916622161865234, 84.16268920898438,
+ -95.57494354248047, -52.40757751464844, -29.007186889648438,
+ 71.65496063232422, 50.66357421875, 21.364582061767578,
+ -27.127241134643555, 65.1489486694336, -30.40681266784668,
+ -6.818390369415283, 46.673622131347656, -21.12453842163086
+ ],
+ 'descriptor': {'dimensions': [1, 1, 6, 2, 2], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'split',
+ 'arguments': [
+ {'input': 'splitInput'}, {'splits': [3, 3]}, {'options': {'axis': 2}}
+ ]
+ }],
+ 'expectedOutputs': {
+ 'splitOutput1': {
+ 'data': [
+ -64.52056884765625, -84.60513305664062, -67.99282836914062,
+ -23.446075439453125, -85.64382934570312, 46.87752151489258,
+ -68.11224365234375, 75.99607849121094, -61.05668640136719,
+ -90.92643737792969, 53.916622161865234, 84.16268920898438
+ ],
+ 'descriptor': {'dimensions': [1, 1, 3, 2, 2], 'dataType': 'float32'}
+ },
+ 'splitOutput2': {
+ 'data': [
+ -95.57494354248047, -52.40757751464844, -29.007186889648438,
+ 71.65496063232422, 50.66357421875, 21.364582061767578,
+ -27.127241134643555, 65.1489486694336, -30.40681266784668,
+ -6.818390369415283, 46.673622131347656, -21.12453842163086
+ ],
+ 'descriptor': {'dimensions': [1, 1, 3, 2, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'split float32 5D tensor array splits=[2, 4] options.axis=0',
+ 'graph': {
+ 'inputs': {
+ 'splitInput': {
+ 'data': [
+ -64.52056884765625, -84.60513305664062, -67.99282836914062,
+ -23.446075439453125, -85.64382934570312, 46.87752151489258,
+ -68.11224365234375, 75.99607849121094, -61.05668640136719,
+ -90.92643737792969, 53.916622161865234, 84.16268920898438,
+ -95.57494354248047, -52.40757751464844, -29.007186889648438,
+ 71.65496063232422, 50.66357421875, 21.364582061767578,
+ -27.127241134643555, 65.1489486694336, -30.40681266784668,
+ -6.818390369415283, 46.673622131347656, -21.12453842163086
+ ],
+ 'descriptor': {'dimensions': [6, 1, 1, 2, 2], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'split',
+ 'arguments': [
+ {'input': 'splitInput'}, {'splits': [2, 4]}, {'options': {'axis': 0}}
+ ]
+ }],
+ 'expectedOutputs': {
+ 'splitOutput1': {
+ 'data': [
+ -64.52056884765625, -84.60513305664062, -67.99282836914062,
+ -23.446075439453125, -85.64382934570312, 46.87752151489258,
+ -68.11224365234375, 75.99607849121094
+ ],
+ 'descriptor': {'dimensions': [2, 1, 1, 2, 2], 'dataType': 'float32'}
+ },
+ 'splitOutput2': {
+ 'data': [
+ -61.05668640136719, -90.92643737792969, 53.916622161865234,
+ 84.16268920898438, -95.57494354248047, -52.40757751464844,
+ -29.007186889648438, 71.65496063232422, 50.66357421875,
+ 21.364582061767578, -27.127241134643555, 65.1489486694336,
+ -30.40681266784668, -6.818390369415283, 46.673622131347656,
+ -21.12453842163086
+ ],
+ 'descriptor': {'dimensions': [4, 1, 1, 2, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ splitTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getSplitPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/sqrt.https.any.js b/tests/wpt/tests/webnn/conformance_tests/sqrt.https.any.js
new file mode 100644
index 00000000000..aa24dc5501f
--- /dev/null
+++ b/tests/wpt/tests/webnn/conformance_tests/sqrt.https.any.js
@@ -0,0 +1,297 @@
+// META: title=test WebNN API element-wise sqrt operation
+// META: global=window,dedicatedworker
+// META: variant=?cpu
+// META: variant=?gpu
+// META: variant=?npu
+// META: script=../resources/utils.js
+// META: timeout=long
+
+'use strict';
+
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-unary
+// Compute the square root of the input tensor, element-wise.
+//
+// MLOperand sqrt(MLOperand input);
+
+
+const getSqrtPrecisionTolerance = (graphResources) => {
+ const toleranceValueDict = {float32: 1, float16: 1};
+ const expectedDataType =
+ getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs);
+ return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]};
+};
+
+const sqrtTests = [
+ {
+ 'name': 'sqrt float32 0D scalar',
+ 'graph': {
+ 'inputs': {
+ 'sqrtInput': {
+ 'data': [4.0044636726379395],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'sqrt',
+ 'arguments': [{'input': 'sqrtInput'}],
+ 'outputs': 'sqrtOutput'
+ }],
+ 'expectedOutputs': {
+ 'sqrtOutput': {
+ 'data': [2.001115560531616],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'sqrt float32 1D constant tensor',
+ 'graph': {
+ 'inputs': {
+ 'sqrtInput': {
+ 'data': [
+ 7.256007194519043, 7.786442279815674, 1.3684587478637695,
+ 8.05341625213623, 9.131288528442383, 8.52578067779541,
+ 4.870553493499756, 7.625959396362305, 2.705026865005493,
+ 8.709602355957031, 3.2687935829162598, 4.712882995605469,
+ 8.669181823730469, 8.829607009887695, 0.5529024600982666,
+ 7.958771228790283, 4.09640645980835, 7.919884204864502,
+ 4.424484729766846, 0.09894099831581116, 4.6900248527526855,
+ 1.5277378559112549, 5.929779529571533, 6.066471576690674
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'sqrt',
+ 'arguments': [{'input': 'sqrtInput'}],
+ 'outputs': 'sqrtOutput'
+ }],
+ 'expectedOutputs': {
+ 'sqrtOutput': {
+ 'data': [
+ 2.693697690963745, 2.790419816970825, 1.1698113679885864,
+ 2.8378541469573975, 3.0218021869659424, 2.919893980026245,
+ 2.20693302154541, 2.7615139484405518, 1.644696593284607,
+ 2.9512035846710205, 1.8079805374145508, 2.170917510986328,
+ 2.944347381591797, 2.9714653491973877, 0.7435740828514099,
+ 2.821129322052002, 2.023958206176758, 2.8142287731170654,
+ 2.1034460067749023, 0.31454887986183167, 2.165646553039551,
+ 1.2360169887542725, 2.4351139068603516, 2.4630208015441895
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'sqrt float32 1D tensor',
+ 'graph': {
+ 'inputs': {
+ 'sqrtInput': {
+ 'data': [
+ 7.256007194519043, 7.786442279815674, 1.3684587478637695,
+ 8.05341625213623, 9.131288528442383, 8.52578067779541,
+ 4.870553493499756, 7.625959396362305, 2.705026865005493,
+ 8.709602355957031, 3.2687935829162598, 4.712882995605469,
+ 8.669181823730469, 8.829607009887695, 0.5529024600982666,
+ 7.958771228790283, 4.09640645980835, 7.919884204864502,
+ 4.424484729766846, 0.09894099831581116, 4.6900248527526855,
+ 1.5277378559112549, 5.929779529571533, 6.066471576690674
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'sqrt',
+ 'arguments': [{'input': 'sqrtInput'}],
+ 'outputs': 'sqrtOutput'
+ }],
+ 'expectedOutputs': {
+ 'sqrtOutput': {
+ 'data': [
+ 2.693697690963745, 2.790419816970825, 1.1698113679885864,
+ 2.8378541469573975, 3.0218021869659424, 2.919893980026245,
+ 2.20693302154541, 2.7615139484405518, 1.644696593284607,
+ 2.9512035846710205, 1.8079805374145508, 2.170917510986328,
+ 2.944347381591797, 2.9714653491973877, 0.7435740828514099,
+ 2.821129322052002, 2.023958206176758, 2.8142287731170654,
+ 2.1034460067749023, 0.31454887986183167, 2.165646553039551,
+ 1.2360169887542725, 2.4351139068603516, 2.4630208015441895
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'sqrt float32 2D tensor',
+ 'graph': {
+ 'inputs': {
+ 'sqrtInput': {
+ 'data': [
+ 7.256007194519043, 7.786442279815674, 1.3684587478637695,
+ 8.05341625213623, 9.131288528442383, 8.52578067779541,
+ 4.870553493499756, 7.625959396362305, 2.705026865005493,
+ 8.709602355957031, 3.2687935829162598, 4.712882995605469,
+ 8.669181823730469, 8.829607009887695, 0.5529024600982666,
+ 7.958771228790283, 4.09640645980835, 7.919884204864502,
+ 4.424484729766846, 0.09894099831581116, 4.6900248527526855,
+ 1.5277378559112549, 5.929779529571533, 6.066471576690674
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'sqrt',
+ 'arguments': [{'input': 'sqrtInput'}],
+ 'outputs': 'sqrtOutput'
+ }],
+ 'expectedOutputs': {
+ 'sqrtOutput': {
+ 'data': [
+ 2.693697690963745, 2.790419816970825, 1.1698113679885864,
+ 2.8378541469573975, 3.0218021869659424, 2.919893980026245,
+ 2.20693302154541, 2.7615139484405518, 1.644696593284607,
+ 2.9512035846710205, 1.8079805374145508, 2.170917510986328,
+ 2.944347381591797, 2.9714653491973877, 0.7435740828514099,
+ 2.821129322052002, 2.023958206176758, 2.8142287731170654,
+ 2.1034460067749023, 0.31454887986183167, 2.165646553039551,
+ 1.2360169887542725, 2.4351139068603516, 2.4630208015441895
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'sqrt float32 3D tensor',
+ 'graph': {
+ 'inputs': {
+ 'sqrtInput': {
+ 'data': [
+ 7.256007194519043, 7.786442279815674, 1.3684587478637695,
+ 8.05341625213623, 9.131288528442383, 8.52578067779541,
+ 4.870553493499756, 7.625959396362305, 2.705026865005493,
+ 8.709602355957031, 3.2687935829162598, 4.712882995605469,
+ 8.669181823730469, 8.829607009887695, 0.5529024600982666,
+ 7.958771228790283, 4.09640645980835, 7.919884204864502,
+ 4.424484729766846, 0.09894099831581116, 4.6900248527526855,
+ 1.5277378559112549, 5.929779529571533, 6.066471576690674
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'sqrt',
+ 'arguments': [{'input': 'sqrtInput'}],
+ 'outputs': 'sqrtOutput'
+ }],
+ 'expectedOutputs': {
+ 'sqrtOutput': {
+ 'data': [
+ 2.693697690963745, 2.790419816970825, 1.1698113679885864,
+ 2.8378541469573975, 3.0218021869659424, 2.919893980026245,
+ 2.20693302154541, 2.7615139484405518, 1.644696593284607,
+ 2.9512035846710205, 1.8079805374145508, 2.170917510986328,
+ 2.944347381591797, 2.9714653491973877, 0.7435740828514099,
+ 2.821129322052002, 2.023958206176758, 2.8142287731170654,
+ 2.1034460067749023, 0.31454887986183167, 2.165646553039551,
+ 1.2360169887542725, 2.4351139068603516, 2.4630208015441895
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'sqrt float32 4D tensor',
+ 'graph': {
+ 'inputs': {
+ 'sqrtInput': {
+ 'data': [
+ 7.256007194519043, 7.786442279815674, 1.3684587478637695,
+ 8.05341625213623, 9.131288528442383, 8.52578067779541,
+ 4.870553493499756, 7.625959396362305, 2.705026865005493,
+ 8.709602355957031, 3.2687935829162598, 4.712882995605469,
+ 8.669181823730469, 8.829607009887695, 0.5529024600982666,
+ 7.958771228790283, 4.09640645980835, 7.919884204864502,
+ 4.424484729766846, 0.09894099831581116, 4.6900248527526855,
+ 1.5277378559112549, 5.929779529571533, 6.066471576690674
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'sqrt',
+ 'arguments': [{'input': 'sqrtInput'}],
+ 'outputs': 'sqrtOutput'
+ }],
+ 'expectedOutputs': {
+ 'sqrtOutput': {
+ 'data': [
+ 2.693697690963745, 2.790419816970825, 1.1698113679885864,
+ 2.8378541469573975, 3.0218021869659424, 2.919893980026245,
+ 2.20693302154541, 2.7615139484405518, 1.644696593284607,
+ 2.9512035846710205, 1.8079805374145508, 2.170917510986328,
+ 2.944347381591797, 2.9714653491973877, 0.7435740828514099,
+ 2.821129322052002, 2.023958206176758, 2.8142287731170654,
+ 2.1034460067749023, 0.31454887986183167, 2.165646553039551,
+ 1.2360169887542725, 2.4351139068603516, 2.4630208015441895
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'sqrt float32 5D tensor',
+ 'graph': {
+ 'inputs': {
+ 'sqrtInput': {
+ 'data': [
+ 7.256007194519043, 7.786442279815674, 1.3684587478637695,
+ 8.05341625213623, 9.131288528442383, 8.52578067779541,
+ 4.870553493499756, 7.625959396362305, 2.705026865005493,
+ 8.709602355957031, 3.2687935829162598, 4.712882995605469,
+ 8.669181823730469, 8.829607009887695, 0.5529024600982666,
+ 7.958771228790283, 4.09640645980835, 7.919884204864502,
+ 4.424484729766846, 0.09894099831581116, 4.6900248527526855,
+ 1.5277378559112549, 5.929779529571533, 6.066471576690674
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 1, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'sqrt',
+ 'arguments': [{'input': 'sqrtInput'}],
+ 'outputs': 'sqrtOutput'
+ }],
+ 'expectedOutputs': {
+ 'sqrtOutput': {
+ 'data': [
+ 2.693697690963745, 2.790419816970825, 1.1698113679885864,
+ 2.8378541469573975, 3.0218021869659424, 2.919893980026245,
+ 2.20693302154541, 2.7615139484405518, 1.644696593284607,
+ 2.9512035846710205, 1.8079805374145508, 2.170917510986328,
+ 2.944347381591797, 2.9714653491973877, 0.7435740828514099,
+ 2.821129322052002, 2.023958206176758, 2.8142287731170654,
+ 2.1034460067749023, 0.31454887986183167, 2.165646553039551,
+ 1.2360169887542725, 2.4351139068603516, 2.4630208015441895
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 1, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ sqrtTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getSqrtPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/sub.https.any.js b/tests/wpt/tests/webnn/conformance_tests/sub.https.any.js
index 367780e1147..c034cf7b0ad 100644
--- a/tests/wpt/tests/webnn/conformance_tests/sub.https.any.js
+++ b/tests/wpt/tests/webnn/conformance_tests/sub.https.any.js
@@ -1,4 +1,4 @@
-// META: title=test WebNN API element-wise binary operations
+// META: title=test WebNN API element-wise sub operation
// META: global=window,dedicatedworker
// META: variant=?cpu
// META: variant=?gpu
@@ -8,6 +8,528 @@
'use strict';
-// https://webmachinelearning.github.io/webnn/#api-mlgraphbuilder-binary
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-binary
+// Compute the element-wise binary subtraction of the two input tensors.
+// MLOperand sub(MLOperand a, MLOperand b);
-runWebNNConformanceTests('sub', buildOperationWithTwoInputs);
+
+const getSubPrecisionTolerance = (graphResources) => {
+ const toleranceValueDict = {float32: 1, float16: 1};
+ const expectedDataType =
+ getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs);
+ return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]};
+};
+
+const subTests = [
+ {
+ 'name': 'sub float32 1D constant tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 73.59273529052734, 14.4846830368042, -69.40201568603516,
+ -52.045284271240234, -75.7813720703125, -2.2740514278411865,
+ -83.29907989501953, 15.57776927947998, -62.7008056640625,
+ 32.954002380371094, 82.55709075927734, -74.90638732910156,
+ 78.22299194335938, 48.39240264892578, -19.153541564941406,
+ -85.93221282958984, 89.12355041503906, 22.874629974365234,
+ 80.56973266601562, 97.62598419189453, 52.74850845336914,
+ 89.1660385131836, -20.50341796875, 99.48707580566406
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'inputB': {
+ 'data': [
+ -49.12813186645508, 40.189292907714844, 7.224666595458984,
+ 89.26004791259766, -81.43340301513672, 59.61166000366211,
+ 11.234410285949707, 48.884056091308594, 85.26825714111328,
+ 27.695297241210938, 30.98945426940918, -38.12903594970703,
+ -83.14810180664062, -86.16175079345703, 16.75888442993164,
+ 46.12889862060547, -28.432477951049805, 28.229337692260742,
+ 35.2364616394043, -77.05516815185547, -57.8714714050293,
+ -58.15085983276367, 27.488866806030273, 31.99802017211914
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'sub',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 122.72087097167969, -25.704608917236328, -76.62667846679688,
+ -141.30532836914062, 5.652030944824219, -61.885711669921875,
+ -94.53349304199219, -33.3062858581543, -147.96905517578125,
+ 5.258705139160156, 51.56763458251953, -36.77735137939453,
+ 161.37109375, 134.5541534423828, -35.91242599487305,
+ -132.0611114501953, 117.5560302734375, -5.354707717895508,
+ 45.33327102661133, 174.68115234375, 110.61997985839844,
+ 147.31689453125, -47.992286682128906, 67.48905944824219
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'sub float32 1D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 73.59273529052734, 14.4846830368042, -69.40201568603516,
+ -52.045284271240234, -75.7813720703125, -2.2740514278411865,
+ -83.29907989501953, 15.57776927947998, -62.7008056640625,
+ 32.954002380371094, 82.55709075927734, -74.90638732910156,
+ 78.22299194335938, 48.39240264892578, -19.153541564941406,
+ -85.93221282958984, 89.12355041503906, 22.874629974365234,
+ 80.56973266601562, 97.62598419189453, 52.74850845336914,
+ 89.1660385131836, -20.50341796875, 99.48707580566406
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -49.12813186645508, 40.189292907714844, 7.224666595458984,
+ 89.26004791259766, -81.43340301513672, 59.61166000366211,
+ 11.234410285949707, 48.884056091308594, 85.26825714111328,
+ 27.695297241210938, 30.98945426940918, -38.12903594970703,
+ -83.14810180664062, -86.16175079345703, 16.75888442993164,
+ 46.12889862060547, -28.432477951049805, 28.229337692260742,
+ 35.2364616394043, -77.05516815185547, -57.8714714050293,
+ -58.15085983276367, 27.488866806030273, 31.99802017211914
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'sub',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 122.72087097167969, -25.704608917236328, -76.62667846679688,
+ -141.30532836914062, 5.652030944824219, -61.885711669921875,
+ -94.53349304199219, -33.3062858581543, -147.96905517578125,
+ 5.258705139160156, 51.56763458251953, -36.77735137939453,
+ 161.37109375, 134.5541534423828, -35.91242599487305,
+ -132.0611114501953, 117.5560302734375, -5.354707717895508,
+ 45.33327102661133, 174.68115234375, 110.61997985839844,
+ 147.31689453125, -47.992286682128906, 67.48905944824219
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'sub float32 2D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 73.59273529052734, 14.4846830368042, -69.40201568603516,
+ -52.045284271240234, -75.7813720703125, -2.2740514278411865,
+ -83.29907989501953, 15.57776927947998, -62.7008056640625,
+ 32.954002380371094, 82.55709075927734, -74.90638732910156,
+ 78.22299194335938, 48.39240264892578, -19.153541564941406,
+ -85.93221282958984, 89.12355041503906, 22.874629974365234,
+ 80.56973266601562, 97.62598419189453, 52.74850845336914,
+ 89.1660385131836, -20.50341796875, 99.48707580566406
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -49.12813186645508, 40.189292907714844, 7.224666595458984,
+ 89.26004791259766, -81.43340301513672, 59.61166000366211,
+ 11.234410285949707, 48.884056091308594, 85.26825714111328,
+ 27.695297241210938, 30.98945426940918, -38.12903594970703,
+ -83.14810180664062, -86.16175079345703, 16.75888442993164,
+ 46.12889862060547, -28.432477951049805, 28.229337692260742,
+ 35.2364616394043, -77.05516815185547, -57.8714714050293,
+ -58.15085983276367, 27.488866806030273, 31.99802017211914
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'sub',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 122.72087097167969, -25.704608917236328, -76.62667846679688,
+ -141.30532836914062, 5.652030944824219, -61.885711669921875,
+ -94.53349304199219, -33.3062858581543, -147.96905517578125,
+ 5.258705139160156, 51.56763458251953, -36.77735137939453,
+ 161.37109375, 134.5541534423828, -35.91242599487305,
+ -132.0611114501953, 117.5560302734375, -5.354707717895508,
+ 45.33327102661133, 174.68115234375, 110.61997985839844,
+ 147.31689453125, -47.992286682128906, 67.48905944824219
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'sub float32 3D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 73.59273529052734, 14.4846830368042, -69.40201568603516,
+ -52.045284271240234, -75.7813720703125, -2.2740514278411865,
+ -83.29907989501953, 15.57776927947998, -62.7008056640625,
+ 32.954002380371094, 82.55709075927734, -74.90638732910156,
+ 78.22299194335938, 48.39240264892578, -19.153541564941406,
+ -85.93221282958984, 89.12355041503906, 22.874629974365234,
+ 80.56973266601562, 97.62598419189453, 52.74850845336914,
+ 89.1660385131836, -20.50341796875, 99.48707580566406
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -49.12813186645508, 40.189292907714844, 7.224666595458984,
+ 89.26004791259766, -81.43340301513672, 59.61166000366211,
+ 11.234410285949707, 48.884056091308594, 85.26825714111328,
+ 27.695297241210938, 30.98945426940918, -38.12903594970703,
+ -83.14810180664062, -86.16175079345703, 16.75888442993164,
+ 46.12889862060547, -28.432477951049805, 28.229337692260742,
+ 35.2364616394043, -77.05516815185547, -57.8714714050293,
+ -58.15085983276367, 27.488866806030273, 31.99802017211914
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'sub',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 122.72087097167969, -25.704608917236328, -76.62667846679688,
+ -141.30532836914062, 5.652030944824219, -61.885711669921875,
+ -94.53349304199219, -33.3062858581543, -147.96905517578125,
+ 5.258705139160156, 51.56763458251953, -36.77735137939453,
+ 161.37109375, 134.5541534423828, -35.91242599487305,
+ -132.0611114501953, 117.5560302734375, -5.354707717895508,
+ 45.33327102661133, 174.68115234375, 110.61997985839844,
+ 147.31689453125, -47.992286682128906, 67.48905944824219
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'sub float32 4D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 73.59273529052734, 14.4846830368042, -69.40201568603516,
+ -52.045284271240234, -75.7813720703125, -2.2740514278411865,
+ -83.29907989501953, 15.57776927947998, -62.7008056640625,
+ 32.954002380371094, 82.55709075927734, -74.90638732910156,
+ 78.22299194335938, 48.39240264892578, -19.153541564941406,
+ -85.93221282958984, 89.12355041503906, 22.874629974365234,
+ 80.56973266601562, 97.62598419189453, 52.74850845336914,
+ 89.1660385131836, -20.50341796875, 99.48707580566406
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -49.12813186645508, 40.189292907714844, 7.224666595458984,
+ 89.26004791259766, -81.43340301513672, 59.61166000366211,
+ 11.234410285949707, 48.884056091308594, 85.26825714111328,
+ 27.695297241210938, 30.98945426940918, -38.12903594970703,
+ -83.14810180664062, -86.16175079345703, 16.75888442993164,
+ 46.12889862060547, -28.432477951049805, 28.229337692260742,
+ 35.2364616394043, -77.05516815185547, -57.8714714050293,
+ -58.15085983276367, 27.488866806030273, 31.99802017211914
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'sub',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 122.72087097167969, -25.704608917236328, -76.62667846679688,
+ -141.30532836914062, 5.652030944824219, -61.885711669921875,
+ -94.53349304199219, -33.3062858581543, -147.96905517578125,
+ 5.258705139160156, 51.56763458251953, -36.77735137939453,
+ 161.37109375, 134.5541534423828, -35.91242599487305,
+ -132.0611114501953, 117.5560302734375, -5.354707717895508,
+ 45.33327102661133, 174.68115234375, 110.61997985839844,
+ 147.31689453125, -47.992286682128906, 67.48905944824219
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'sub float32 5D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 73.59273529052734, 14.4846830368042, -69.40201568603516,
+ -52.045284271240234, -75.7813720703125, -2.2740514278411865,
+ -83.29907989501953, 15.57776927947998, -62.7008056640625,
+ 32.954002380371094, 82.55709075927734, -74.90638732910156,
+ 78.22299194335938, 48.39240264892578, -19.153541564941406,
+ -85.93221282958984, 89.12355041503906, 22.874629974365234,
+ 80.56973266601562, 97.62598419189453, 52.74850845336914,
+ 89.1660385131836, -20.50341796875, 99.48707580566406
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 2, 3], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -49.12813186645508, 40.189292907714844, 7.224666595458984,
+ 89.26004791259766, -81.43340301513672, 59.61166000366211,
+ 11.234410285949707, 48.884056091308594, 85.26825714111328,
+ 27.695297241210938, 30.98945426940918, -38.12903594970703,
+ -83.14810180664062, -86.16175079345703, 16.75888442993164,
+ 46.12889862060547, -28.432477951049805, 28.229337692260742,
+ 35.2364616394043, -77.05516815185547, -57.8714714050293,
+ -58.15085983276367, 27.488866806030273, 31.99802017211914
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'sub',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 122.72087097167969, -25.704608917236328, -76.62667846679688,
+ -141.30532836914062, 5.652030944824219, -61.885711669921875,
+ -94.53349304199219, -33.3062858581543, -147.96905517578125,
+ 5.258705139160156, 51.56763458251953, -36.77735137939453,
+ 161.37109375, 134.5541534423828, -35.91242599487305,
+ -132.0611114501953, 117.5560302734375, -5.354707717895508,
+ 45.33327102661133, 174.68115234375, 110.61997985839844,
+ 147.31689453125, -47.992286682128906, 67.48905944824219
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'sub float32 broadcast 1D to 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [-97.04911804199219],
+ 'descriptor': {'dimensions': [1], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 73.59273529052734, 14.4846830368042, -69.40201568603516,
+ -52.045284271240234, -75.7813720703125, -2.2740514278411865,
+ -83.29907989501953, 15.57776927947998, -62.7008056640625,
+ 32.954002380371094, 82.55709075927734, -74.90638732910156,
+ 78.22299194335938, 48.39240264892578, -19.153541564941406,
+ -85.93221282958984, 89.12355041503906, 22.874629974365234,
+ 80.56973266601562, 97.62598419189453, 52.74850845336914,
+ 89.1660385131836, -20.50341796875, 99.48707580566406
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'sub',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ -170.641845703125, -111.53379821777344, -27.64710235595703,
+ -45.00383377075195, -21.267745971679688, -94.77507019042969,
+ -13.750038146972656, -112.62688446044922, -34.34831237792969,
+ -130.00311279296875, -179.606201171875, -22.142730712890625,
+ -175.27210998535156, -145.4415283203125, -77.89557647705078,
+ -11.116905212402344, -186.17266845703125, -119.92375183105469,
+ -177.6188507080078, -194.67510986328125, -149.79762268066406,
+ -186.21514892578125, -76.54570007324219, -196.53619384765625
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'sub float32 broadcast 2D to 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 73.59273529052734, 14.4846830368042, -69.40201568603516,
+ -52.045284271240234, -75.7813720703125, -2.2740514278411865,
+ -83.29907989501953, 15.57776927947998, -62.7008056640625,
+ 32.954002380371094, 82.55709075927734, -74.90638732910156,
+ 78.22299194335938, 48.39240264892578, -19.153541564941406,
+ -85.93221282958984, 89.12355041503906, 22.874629974365234,
+ 80.56973266601562, 97.62598419189453, 52.74850845336914,
+ 89.1660385131836, -20.50341796875, 99.48707580566406
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 10.762838363647461, -90.23992156982422, 12.787367820739746,
+ -62.44633865356445, 32.18257522583008, 20.359493255615234
+ ],
+ 'descriptor': {'dimensions': [2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'sub',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 62.82989501953125, 104.72460174560547, -82.18938446044922,
+ 10.401054382324219, -107.96394348144531, -22.633544921875,
+ -94.06192016601562, 105.81768798828125, -75.48817443847656,
+ 95.40034484863281, 50.374515533447266, -95.26588439941406,
+ 67.46015167236328, 138.63232421875, -31.94091033935547,
+ -23.48587417602539, 56.940975189208984, 2.51513671875,
+ 69.80689239501953, 187.86590576171875, 39.96113967895508,
+ 151.6123809814453, -52.68599319458008, 79.12757873535156
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'sub float32 broadcast 3D to 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [
+ 73.59273529052734, 14.4846830368042, -69.40201568603516,
+ -52.045284271240234, -75.7813720703125, -2.2740514278411865,
+ -83.29907989501953, 15.57776927947998, -62.7008056640625,
+ 32.954002380371094, 82.55709075927734, -74.90638732910156,
+ 78.22299194335938, 48.39240264892578, -19.153541564941406,
+ -85.93221282958984, 89.12355041503906, 22.874629974365234,
+ 80.56973266601562, 97.62598419189453, 52.74850845336914,
+ 89.1660385131836, -20.50341796875, 99.48707580566406
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ -8.39311408996582, 75.54753112792969, -32.325870513916016,
+ 8.088332176208496
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'sub',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ 81.98584747314453, 22.877796173095703, -61.00890350341797,
+ -127.59281921386719, -151.3289031982422, -77.82157897949219,
+ -50.973209381103516, 47.90364074707031, -30.374935150146484,
+ 24.86566925048828, 74.46875762939453, -82.99472045898438,
+ 86.61610412597656, 56.78551483154297, -10.760427474975586,
+ -161.479736328125, 13.576019287109375, -52.67290115356445,
+ 112.89559936523438, 129.9518585205078, 85.07437896728516,
+ 81.07770538330078, -28.591751098632812, 91.39874267578125
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'sub float32 broadcast 4D to 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputA': {
+ 'data': [-97.04911804199219],
+ 'descriptor': {'dimensions': [1, 1, 1, 1], 'dataType': 'float32'}
+ },
+ 'inputB': {
+ 'data': [
+ 73.59273529052734, 14.4846830368042, -69.40201568603516,
+ -52.045284271240234, -75.7813720703125, -2.2740514278411865,
+ -83.29907989501953, 15.57776927947998, -62.7008056640625,
+ 32.954002380371094, 82.55709075927734, -74.90638732910156,
+ 78.22299194335938, 48.39240264892578, -19.153541564941406,
+ -85.93221282958984, 89.12355041503906, 22.874629974365234,
+ 80.56973266601562, 97.62598419189453, 52.74850845336914,
+ 89.1660385131836, -20.50341796875, 99.48707580566406
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'sub',
+ 'arguments': [{'a': 'inputA'}, {'b': 'inputB'}],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'output': {
+ 'data': [
+ -170.641845703125, -111.53379821777344, -27.64710235595703,
+ -45.00383377075195, -21.267745971679688, -94.77507019042969,
+ -13.750038146972656, -112.62688446044922, -34.34831237792969,
+ -130.00311279296875, -179.606201171875, -22.142730712890625,
+ -175.27210998535156, -145.4415283203125, -77.89557647705078,
+ -11.116905212402344, -186.17266845703125, -119.92375183105469,
+ -177.6188507080078, -194.67510986328125, -149.79762268066406,
+ -186.21514892578125, -76.54570007324219, -196.53619384765625
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ subTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getSubPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/tan.https.any.js b/tests/wpt/tests/webnn/conformance_tests/tan.https.any.js
new file mode 100644
index 00000000000..5fcf0e68996
--- /dev/null
+++ b/tests/wpt/tests/webnn/conformance_tests/tan.https.any.js
@@ -0,0 +1,297 @@
+// META: title=test WebNN API element-wise tan operation
+// META: global=window,dedicatedworker
+// META: variant=?cpu
+// META: variant=?gpu
+// META: variant=?npu
+// META: script=../resources/utils.js
+// META: timeout=long
+
+'use strict';
+
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-unary
+// Compute the tangent of the input tensor, element-wise.
+//
+// MLOperand tan(MLOperand input);
+
+
+const getTanPrecisionTolerance = (graphResources) => {
+ const toleranceValueDict = {float32: 1 / 1024, float16: 1 / 512};
+ const expectedDataType =
+ getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs);
+ return {metricType: 'ATOL', value: toleranceValueDict[expectedDataType]};
+};
+
+const tanTests = [
+ {
+ 'name': 'tan float32 0D scalar',
+ 'graph': {
+ 'inputs': {
+ 'tanInput': {
+ 'data': [52.69781494140625],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'tan',
+ 'arguments': [{'input': 'tanInput'}],
+ 'outputs': 'tanOutput'
+ }],
+ 'expectedOutputs': {
+ 'tanOutput': {
+ 'data': [-0.8582430481910706],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'tan float32 1D constant tensor',
+ 'graph': {
+ 'inputs': {
+ 'tanInput': {
+ 'data': [
+ 52.69781494140625, 70.06912994384766, 90.49689483642578,
+ 24.65666961669922, 11.66512680053711, -50.95264434814453,
+ 40.320064544677734, -9.641122817993164, -31.567750930786133,
+ 45.59520721435547, -55.93085861206055, -44.602970123291016,
+ 80.4539794921875, -2.314880847930908, -25.474767684936523,
+ 62.589454650878906, -70.94403076171875, 62.84861755371094,
+ 84.79766845703125, -95.58502960205078, 15.552484512329102,
+ -55.25654220581055, -26.884889602661133, 0.159261092543602
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'tan',
+ 'arguments': [{'input': 'tanInput'}],
+ 'outputs': 'tanOutput'
+ }],
+ 'expectedOutputs': {
+ 'tanOutput': {
+ 'data': [
+ -0.8582430481910706, 1.410544753074646, -0.6978657245635986,
+ -0.5156278610229492, -1.2633823156356812, -0.8205758929252625,
+ -0.5734118819236755, -0.21978461742401123, -0.1530018001794815,
+ -23.731182098388672, 0.7106066942214966, -0.7149254679679871,
+ -2.7969717979431152, 1.086239218711853, -0.3560185432434082,
+ -0.24726025760173798, 3.7865755558013916, 0.016766052693128586,
+ -0.025338610634207726, -4.203672409057617, -0.1567438244819641,
+ 3.495089292526245, 5.453553199768066, 0.16062140464782715
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'tan float32 1D tensor',
+ 'graph': {
+ 'inputs': {
+ 'tanInput': {
+ 'data': [
+ 52.69781494140625, 70.06912994384766, 90.49689483642578,
+ 24.65666961669922, 11.66512680053711, -50.95264434814453,
+ 40.320064544677734, -9.641122817993164, -31.567750930786133,
+ 45.59520721435547, -55.93085861206055, -44.602970123291016,
+ 80.4539794921875, -2.314880847930908, -25.474767684936523,
+ 62.589454650878906, -70.94403076171875, 62.84861755371094,
+ 84.79766845703125, -95.58502960205078, 15.552484512329102,
+ -55.25654220581055, -26.884889602661133, 0.159261092543602
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'tan',
+ 'arguments': [{'input': 'tanInput'}],
+ 'outputs': 'tanOutput'
+ }],
+ 'expectedOutputs': {
+ 'tanOutput': {
+ 'data': [
+ -0.8582430481910706, 1.410544753074646, -0.6978657245635986,
+ -0.5156278610229492, -1.2633823156356812, -0.8205758929252625,
+ -0.5734118819236755, -0.21978461742401123, -0.1530018001794815,
+ -23.731182098388672, 0.7106066942214966, -0.7149254679679871,
+ -2.7969717979431152, 1.086239218711853, -0.3560185432434082,
+ -0.24726025760173798, 3.7865755558013916, 0.016766052693128586,
+ -0.025338610634207726, -4.203672409057617, -0.1567438244819641,
+ 3.495089292526245, 5.453553199768066, 0.16062140464782715
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'tan float32 2D tensor',
+ 'graph': {
+ 'inputs': {
+ 'tanInput': {
+ 'data': [
+ 52.69781494140625, 70.06912994384766, 90.49689483642578,
+ 24.65666961669922, 11.66512680053711, -50.95264434814453,
+ 40.320064544677734, -9.641122817993164, -31.567750930786133,
+ 45.59520721435547, -55.93085861206055, -44.602970123291016,
+ 80.4539794921875, -2.314880847930908, -25.474767684936523,
+ 62.589454650878906, -70.94403076171875, 62.84861755371094,
+ 84.79766845703125, -95.58502960205078, 15.552484512329102,
+ -55.25654220581055, -26.884889602661133, 0.159261092543602
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'tan',
+ 'arguments': [{'input': 'tanInput'}],
+ 'outputs': 'tanOutput'
+ }],
+ 'expectedOutputs': {
+ 'tanOutput': {
+ 'data': [
+ -0.8582430481910706, 1.410544753074646, -0.6978657245635986,
+ -0.5156278610229492, -1.2633823156356812, -0.8205758929252625,
+ -0.5734118819236755, -0.21978461742401123, -0.1530018001794815,
+ -23.731182098388672, 0.7106066942214966, -0.7149254679679871,
+ -2.7969717979431152, 1.086239218711853, -0.3560185432434082,
+ -0.24726025760173798, 3.7865755558013916, 0.016766052693128586,
+ -0.025338610634207726, -4.203672409057617, -0.1567438244819641,
+ 3.495089292526245, 5.453553199768066, 0.16062140464782715
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'tan float32 3D tensor',
+ 'graph': {
+ 'inputs': {
+ 'tanInput': {
+ 'data': [
+ 52.69781494140625, 70.06912994384766, 90.49689483642578,
+ 24.65666961669922, 11.66512680053711, -50.95264434814453,
+ 40.320064544677734, -9.641122817993164, -31.567750930786133,
+ 45.59520721435547, -55.93085861206055, -44.602970123291016,
+ 80.4539794921875, -2.314880847930908, -25.474767684936523,
+ 62.589454650878906, -70.94403076171875, 62.84861755371094,
+ 84.79766845703125, -95.58502960205078, 15.552484512329102,
+ -55.25654220581055, -26.884889602661133, 0.159261092543602
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'tan',
+ 'arguments': [{'input': 'tanInput'}],
+ 'outputs': 'tanOutput'
+ }],
+ 'expectedOutputs': {
+ 'tanOutput': {
+ 'data': [
+ -0.8582430481910706, 1.410544753074646, -0.6978657245635986,
+ -0.5156278610229492, -1.2633823156356812, -0.8205758929252625,
+ -0.5734118819236755, -0.21978461742401123, -0.1530018001794815,
+ -23.731182098388672, 0.7106066942214966, -0.7149254679679871,
+ -2.7969717979431152, 1.086239218711853, -0.3560185432434082,
+ -0.24726025760173798, 3.7865755558013916, 0.016766052693128586,
+ -0.025338610634207726, -4.203672409057617, -0.1567438244819641,
+ 3.495089292526245, 5.453553199768066, 0.16062140464782715
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'tan float32 4D tensor',
+ 'graph': {
+ 'inputs': {
+ 'tanInput': {
+ 'data': [
+ 52.69781494140625, 70.06912994384766, 90.49689483642578,
+ 24.65666961669922, 11.66512680053711, -50.95264434814453,
+ 40.320064544677734, -9.641122817993164, -31.567750930786133,
+ 45.59520721435547, -55.93085861206055, -44.602970123291016,
+ 80.4539794921875, -2.314880847930908, -25.474767684936523,
+ 62.589454650878906, -70.94403076171875, 62.84861755371094,
+ 84.79766845703125, -95.58502960205078, 15.552484512329102,
+ -55.25654220581055, -26.884889602661133, 0.159261092543602
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'tan',
+ 'arguments': [{'input': 'tanInput'}],
+ 'outputs': 'tanOutput'
+ }],
+ 'expectedOutputs': {
+ 'tanOutput': {
+ 'data': [
+ -0.8582430481910706, 1.410544753074646, -0.6978657245635986,
+ -0.5156278610229492, -1.2633823156356812, -0.8205758929252625,
+ -0.5734118819236755, -0.21978461742401123, -0.1530018001794815,
+ -23.731182098388672, 0.7106066942214966, -0.7149254679679871,
+ -2.7969717979431152, 1.086239218711853, -0.3560185432434082,
+ -0.24726025760173798, 3.7865755558013916, 0.016766052693128586,
+ -0.025338610634207726, -4.203672409057617, -0.1567438244819641,
+ 3.495089292526245, 5.453553199768066, 0.16062140464782715
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'tan float32 5D tensor',
+ 'graph': {
+ 'inputs': {
+ 'tanInput': {
+ 'data': [
+ 52.69781494140625, 70.06912994384766, 90.49689483642578,
+ 24.65666961669922, 11.66512680053711, -50.95264434814453,
+ 40.320064544677734, -9.641122817993164, -31.567750930786133,
+ 45.59520721435547, -55.93085861206055, -44.602970123291016,
+ 80.4539794921875, -2.314880847930908, -25.474767684936523,
+ 62.589454650878906, -70.94403076171875, 62.84861755371094,
+ 84.79766845703125, -95.58502960205078, 15.552484512329102,
+ -55.25654220581055, -26.884889602661133, 0.159261092543602
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 1, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'tan',
+ 'arguments': [{'input': 'tanInput'}],
+ 'outputs': 'tanOutput'
+ }],
+ 'expectedOutputs': {
+ 'tanOutput': {
+ 'data': [
+ -0.8582430481910706, 1.410544753074646, -0.6978657245635986,
+ -0.5156278610229492, -1.2633823156356812, -0.8205758929252625,
+ -0.5734118819236755, -0.21978461742401123, -0.1530018001794815,
+ -23.731182098388672, 0.7106066942214966, -0.7149254679679871,
+ -2.7969717979431152, 1.086239218711853, -0.3560185432434082,
+ -0.24726025760173798, 3.7865755558013916, 0.016766052693128586,
+ -0.025338610634207726, -4.203672409057617, -0.1567438244819641,
+ 3.495089292526245, 5.453553199768066, 0.16062140464782715
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 1, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ tanTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getTanPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/tanh.https.any.js b/tests/wpt/tests/webnn/conformance_tests/tanh.https.any.js
index d7d1b597518..8fc7317a2cf 100644
--- a/tests/wpt/tests/webnn/conformance_tests/tanh.https.any.js
+++ b/tests/wpt/tests/webnn/conformance_tests/tanh.https.any.js
@@ -8,6 +8,269 @@
'use strict';
-// https://webmachinelearning.github.io/webnn/#api-mlgraphbuilder-tanh
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-tanh-method
+// Compute the hyperbolic tangent function of the input tensor. The calculation
+// follows the expression (exp(2 * x) - 1) / (exp(2 * x) + 1).
+//
+// MLOperand tanh(MLOperand input);
-runWebNNConformanceTests('tanh', buildOperationWithSingleInput);
+
+const getTanhPrecisionTolerance = (graphResources) => {
+ const toleranceValueDict = {float32: 1 / 1024, float16: 1 / 512};
+ const expectedDataType =
+ getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs);
+ return {metricType: 'ATOL', value: toleranceValueDict[expectedDataType]};
+};
+
+const tanhTests = [
+ {
+ 'name': 'tanh float32 1D constant tensor',
+ 'graph': {
+ 'inputs': {
+ 'tanhInput': {
+ 'data': [
+ 5.473527431488037, -1.1535595655441284, 0.4074455797672272,
+ 1.8297704458236694, 2.869000196456909, -4.570195198059082,
+ 4.146744251251221, -4.065934181213379, -3.7128469944000244,
+ 0.9077175259590149, -0.11083049327135086, 5.955096244812012,
+ 1.7831857204437256, 4.023128509521484, 5.587857723236084,
+ -5.280653953552246, 1.4147950410842896, -5.707716941833496,
+ -1.443918228149414, -1.9129083156585693, 2.7495968341827393,
+ -0.7420240044593811, 4.856568336486816, -0.7563357949256897
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'tanh',
+ 'arguments': [{'input': 'tanhInput'}],
+ 'outputs': 'tanhOutput'
+ }],
+ 'expectedOutputs': {
+ 'tanhOutput': {
+ 'data': [
+ 0.9999647736549377, -0.8189298510551453, 0.38630160689353943,
+ 0.9498035907745361, 0.9935782551765442, -0.9997855424880981,
+ 0.9994998574256897, -0.9994121193885803, -0.9988092184066772,
+ 0.7200349569320679, -0.1103789210319519, 0.9999865293502808,
+ 0.945036768913269, 0.9993596076965332, 0.9999719858169556,
+ -0.9999482035636902, 0.8885080814361572, -0.9999779462814331,
+ -0.894483745098114, -0.9573289752006531, 0.9918531775474548,
+ -0.6303664445877075, 0.9998790621757507, -0.6389135718345642
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'tanh float32 1D tensor',
+ 'graph': {
+ 'inputs': {
+ 'tanhInput': {
+ 'data': [
+ 5.473527431488037, -1.1535595655441284, 0.4074455797672272,
+ 1.8297704458236694, 2.869000196456909, -4.570195198059082,
+ 4.146744251251221, -4.065934181213379, -3.7128469944000244,
+ 0.9077175259590149, -0.11083049327135086, 5.955096244812012,
+ 1.7831857204437256, 4.023128509521484, 5.587857723236084,
+ -5.280653953552246, 1.4147950410842896, -5.707716941833496,
+ -1.443918228149414, -1.9129083156585693, 2.7495968341827393,
+ -0.7420240044593811, 4.856568336486816, -0.7563357949256897
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'tanh',
+ 'arguments': [{'input': 'tanhInput'}],
+ 'outputs': 'tanhOutput'
+ }],
+ 'expectedOutputs': {
+ 'tanhOutput': {
+ 'data': [
+ 0.9999647736549377, -0.8189298510551453, 0.38630160689353943,
+ 0.9498035907745361, 0.9935782551765442, -0.9997855424880981,
+ 0.9994998574256897, -0.9994121193885803, -0.9988092184066772,
+ 0.7200349569320679, -0.1103789210319519, 0.9999865293502808,
+ 0.945036768913269, 0.9993596076965332, 0.9999719858169556,
+ -0.9999482035636902, 0.8885080814361572, -0.9999779462814331,
+ -0.894483745098114, -0.9573289752006531, 0.9918531775474548,
+ -0.6303664445877075, 0.9998790621757507, -0.6389135718345642
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'tanh float32 2D tensor',
+ 'graph': {
+ 'inputs': {
+ 'tanhInput': {
+ 'data': [
+ 5.473527431488037, -1.1535595655441284, 0.4074455797672272,
+ 1.8297704458236694, 2.869000196456909, -4.570195198059082,
+ 4.146744251251221, -4.065934181213379, -3.7128469944000244,
+ 0.9077175259590149, -0.11083049327135086, 5.955096244812012,
+ 1.7831857204437256, 4.023128509521484, 5.587857723236084,
+ -5.280653953552246, 1.4147950410842896, -5.707716941833496,
+ -1.443918228149414, -1.9129083156585693, 2.7495968341827393,
+ -0.7420240044593811, 4.856568336486816, -0.7563357949256897
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'tanh',
+ 'arguments': [{'input': 'tanhInput'}],
+ 'outputs': 'tanhOutput'
+ }],
+ 'expectedOutputs': {
+ 'tanhOutput': {
+ 'data': [
+ 0.9999647736549377, -0.8189298510551453, 0.38630160689353943,
+ 0.9498035907745361, 0.9935782551765442, -0.9997855424880981,
+ 0.9994998574256897, -0.9994121193885803, -0.9988092184066772,
+ 0.7200349569320679, -0.1103789210319519, 0.9999865293502808,
+ 0.945036768913269, 0.9993596076965332, 0.9999719858169556,
+ -0.9999482035636902, 0.8885080814361572, -0.9999779462814331,
+ -0.894483745098114, -0.9573289752006531, 0.9918531775474548,
+ -0.6303664445877075, 0.9998790621757507, -0.6389135718345642
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'tanh float32 3D tensor',
+ 'graph': {
+ 'inputs': {
+ 'tanhInput': {
+ 'data': [
+ 5.473527431488037, -1.1535595655441284, 0.4074455797672272,
+ 1.8297704458236694, 2.869000196456909, -4.570195198059082,
+ 4.146744251251221, -4.065934181213379, -3.7128469944000244,
+ 0.9077175259590149, -0.11083049327135086, 5.955096244812012,
+ 1.7831857204437256, 4.023128509521484, 5.587857723236084,
+ -5.280653953552246, 1.4147950410842896, -5.707716941833496,
+ -1.443918228149414, -1.9129083156585693, 2.7495968341827393,
+ -0.7420240044593811, 4.856568336486816, -0.7563357949256897
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'tanh',
+ 'arguments': [{'input': 'tanhInput'}],
+ 'outputs': 'tanhOutput'
+ }],
+ 'expectedOutputs': {
+ 'tanhOutput': {
+ 'data': [
+ 0.9999647736549377, -0.8189298510551453, 0.38630160689353943,
+ 0.9498035907745361, 0.9935782551765442, -0.9997855424880981,
+ 0.9994998574256897, -0.9994121193885803, -0.9988092184066772,
+ 0.7200349569320679, -0.1103789210319519, 0.9999865293502808,
+ 0.945036768913269, 0.9993596076965332, 0.9999719858169556,
+ -0.9999482035636902, 0.8885080814361572, -0.9999779462814331,
+ -0.894483745098114, -0.9573289752006531, 0.9918531775474548,
+ -0.6303664445877075, 0.9998790621757507, -0.6389135718345642
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'tanh float32 4D tensor',
+ 'graph': {
+ 'inputs': {
+ 'tanhInput': {
+ 'data': [
+ 5.473527431488037, -1.1535595655441284, 0.4074455797672272,
+ 1.8297704458236694, 2.869000196456909, -4.570195198059082,
+ 4.146744251251221, -4.065934181213379, -3.7128469944000244,
+ 0.9077175259590149, -0.11083049327135086, 5.955096244812012,
+ 1.7831857204437256, 4.023128509521484, 5.587857723236084,
+ -5.280653953552246, 1.4147950410842896, -5.707716941833496,
+ -1.443918228149414, -1.9129083156585693, 2.7495968341827393,
+ -0.7420240044593811, 4.856568336486816, -0.7563357949256897
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'tanh',
+ 'arguments': [{'input': 'tanhInput'}],
+ 'outputs': 'tanhOutput'
+ }],
+ 'expectedOutputs': {
+ 'tanhOutput': {
+ 'data': [
+ 0.9999647736549377, -0.8189298510551453, 0.38630160689353943,
+ 0.9498035907745361, 0.9935782551765442, -0.9997855424880981,
+ 0.9994998574256897, -0.9994121193885803, -0.9988092184066772,
+ 0.7200349569320679, -0.1103789210319519, 0.9999865293502808,
+ 0.945036768913269, 0.9993596076965332, 0.9999719858169556,
+ -0.9999482035636902, 0.8885080814361572, -0.9999779462814331,
+ -0.894483745098114, -0.9573289752006531, 0.9918531775474548,
+ -0.6303664445877075, 0.9998790621757507, -0.6389135718345642
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'tanh float32 5D tensor',
+ 'graph': {
+ 'inputs': {
+ 'tanhInput': {
+ 'data': [
+ 5.473527431488037, -1.1535595655441284, 0.4074455797672272,
+ 1.8297704458236694, 2.869000196456909, -4.570195198059082,
+ 4.146744251251221, -4.065934181213379, -3.7128469944000244,
+ 0.9077175259590149, -0.11083049327135086, 5.955096244812012,
+ 1.7831857204437256, 4.023128509521484, 5.587857723236084,
+ -5.280653953552246, 1.4147950410842896, -5.707716941833496,
+ -1.443918228149414, -1.9129083156585693, 2.7495968341827393,
+ -0.7420240044593811, 4.856568336486816, -0.7563357949256897
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 1, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'tanh',
+ 'arguments': [{'input': 'tanhInput'}],
+ 'outputs': 'tanhOutput'
+ }],
+ 'expectedOutputs': {
+ 'tanhOutput': {
+ 'data': [
+ 0.9999647736549377, -0.8189298510551453, 0.38630160689353943,
+ 0.9498035907745361, 0.9935782551765442, -0.9997855424880981,
+ 0.9994998574256897, -0.9994121193885803, -0.9988092184066772,
+ 0.7200349569320679, -0.1103789210319519, 0.9999865293502808,
+ 0.945036768913269, 0.9993596076965332, 0.9999719858169556,
+ -0.9999482035636902, 0.8885080814361572, -0.9999779462814331,
+ -0.894483745098114, -0.9573289752006531, 0.9918531775474548,
+ -0.6303664445877075, 0.9998790621757507, -0.6389135718345642
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 1, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ tanhTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getTanhPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/transpose.https.any.js b/tests/wpt/tests/webnn/conformance_tests/transpose.https.any.js
index 82abef96ea2..61f043a9b0f 100644
--- a/tests/wpt/tests/webnn/conformance_tests/transpose.https.any.js
+++ b/tests/wpt/tests/webnn/conformance_tests/transpose.https.any.js
@@ -8,6 +8,484 @@
'use strict';
-// https://webmachinelearning.github.io/webnn/#api-mlgraphbuilder-transpose
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-transpose
+// Permute the dimensions of the input tensor according to the permutation
+// argument.
+//
+// dictionary MLTransposeOptions {
+// sequence<[EnforceRange] unsigned long> permutation;
+// };
+//
+// MLOperand transpose(
+// MLOperand input, optional MLTransposeOptions options = {});
-runWebNNConformanceTests('transpose', buildOperationWithSingleInput);
+
+const getTransposePrecisionTolerance = (graphResources) => {
+ const toleranceValueDict = {float32: 0, float16: 0};
+ const expectedDataType =
+ getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs);
+ return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]};
+};
+
+const transposeTests = [
+ {
+ 'name': 'transpose float32 1D constant tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'transposeInput': {
+ 'data': [
+ -45.67443084716797, 53.45924758911133, -60.118492126464844,
+ 38.081748962402344, 78.64247131347656, -69.25324249267578,
+ 1.8434585332870483, 92.8102798461914, 56.100074768066406,
+ 77.05838012695312, 57.46807861328125, -84.74308776855469,
+ 46.38539123535156, -84.89764404296875, 56.70438766479492,
+ -25.695144653320312, 5.62217378616333, -25.66281509399414,
+ 99.46284484863281, -87.58920288085938, -65.3779067993164,
+ -66.00990295410156, 38.466827392578125, 2.1999382972717285
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'transpose',
+ 'arguments': [{'input': 'transposeInput'}],
+ 'outputs': 'transposeOutput'
+ }],
+ 'expectedOutputs': {
+ 'transposeOutput': {
+ 'data': [
+ -45.67443084716797, 53.45924758911133, -60.118492126464844,
+ 38.081748962402344, 78.64247131347656, -69.25324249267578,
+ 1.8434585332870483, 92.8102798461914, 56.100074768066406,
+ 77.05838012695312, 57.46807861328125, -84.74308776855469,
+ 46.38539123535156, -84.89764404296875, 56.70438766479492,
+ -25.695144653320312, 5.62217378616333, -25.66281509399414,
+ 99.46284484863281, -87.58920288085938, -65.3779067993164,
+ -66.00990295410156, 38.466827392578125, 2.1999382972717285
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'transpose float32 1D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'transposeInput': {
+ 'data': [
+ -45.67443084716797, 53.45924758911133, -60.118492126464844,
+ 38.081748962402344, 78.64247131347656, -69.25324249267578,
+ 1.8434585332870483, 92.8102798461914, 56.100074768066406,
+ 77.05838012695312, 57.46807861328125, -84.74308776855469,
+ 46.38539123535156, -84.89764404296875, 56.70438766479492,
+ -25.695144653320312, 5.62217378616333, -25.66281509399414,
+ 99.46284484863281, -87.58920288085938, -65.3779067993164,
+ -66.00990295410156, 38.466827392578125, 2.1999382972717285
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'transpose',
+ 'arguments': [{'input': 'transposeInput'}],
+ 'outputs': 'transposeOutput'
+ }],
+ 'expectedOutputs': {
+ 'transposeOutput': {
+ 'data': [
+ -45.67443084716797, 53.45924758911133, -60.118492126464844,
+ 38.081748962402344, 78.64247131347656, -69.25324249267578,
+ 1.8434585332870483, 92.8102798461914, 56.100074768066406,
+ 77.05838012695312, 57.46807861328125, -84.74308776855469,
+ 46.38539123535156, -84.89764404296875, 56.70438766479492,
+ -25.695144653320312, 5.62217378616333, -25.66281509399414,
+ 99.46284484863281, -87.58920288085938, -65.3779067993164,
+ -66.00990295410156, 38.466827392578125, 2.1999382972717285
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'transpose float32 2D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'transposeInput': {
+ 'data': [
+ -45.67443084716797, 53.45924758911133, -60.118492126464844,
+ 38.081748962402344, 78.64247131347656, -69.25324249267578,
+ 1.8434585332870483, 92.8102798461914, 56.100074768066406,
+ 77.05838012695312, 57.46807861328125, -84.74308776855469,
+ 46.38539123535156, -84.89764404296875, 56.70438766479492,
+ -25.695144653320312, 5.62217378616333, -25.66281509399414,
+ 99.46284484863281, -87.58920288085938, -65.3779067993164,
+ -66.00990295410156, 38.466827392578125, 2.1999382972717285
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'transpose',
+ 'arguments': [{'input': 'transposeInput'}],
+ 'outputs': 'transposeOutput'
+ }],
+ 'expectedOutputs': {
+ 'transposeOutput': {
+ 'data': [
+ -45.67443084716797, 1.8434585332870483, 46.38539123535156,
+ 99.46284484863281, 53.45924758911133, 92.8102798461914,
+ -84.89764404296875, -87.58920288085938, -60.118492126464844,
+ 56.100074768066406, 56.70438766479492, -65.3779067993164,
+ 38.081748962402344, 77.05838012695312, -25.695144653320312,
+ -66.00990295410156, 78.64247131347656, 57.46807861328125,
+ 5.62217378616333, 38.466827392578125, -69.25324249267578,
+ -84.74308776855469, -25.66281509399414, 2.1999382972717285
+ ],
+ 'descriptor': {'dimensions': [6, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'transpose float32 3D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'transposeInput': {
+ 'data': [
+ -45.67443084716797, 53.45924758911133, -60.118492126464844,
+ 38.081748962402344, 78.64247131347656, -69.25324249267578,
+ 1.8434585332870483, 92.8102798461914, 56.100074768066406,
+ 77.05838012695312, 57.46807861328125, -84.74308776855469,
+ 46.38539123535156, -84.89764404296875, 56.70438766479492,
+ -25.695144653320312, 5.62217378616333, -25.66281509399414,
+ 99.46284484863281, -87.58920288085938, -65.3779067993164,
+ -66.00990295410156, 38.466827392578125, 2.1999382972717285
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'transpose',
+ 'arguments': [{'input': 'transposeInput'}],
+ 'outputs': 'transposeOutput'
+ }],
+ 'expectedOutputs': {
+ 'transposeOutput': {
+ 'data': [
+ -45.67443084716797, 46.38539123535156, 78.64247131347656,
+ 5.62217378616333, 56.100074768066406, -65.3779067993164,
+ 53.45924758911133, -84.89764404296875, -69.25324249267578,
+ -25.66281509399414, 77.05838012695312, -66.00990295410156,
+ -60.118492126464844, 56.70438766479492, 1.8434585332870483,
+ 99.46284484863281, 57.46807861328125, 38.466827392578125,
+ 38.081748962402344, -25.695144653320312, 92.8102798461914,
+ -87.58920288085938, -84.74308776855469, 2.1999382972717285
+ ],
+ 'descriptor': {'dimensions': [4, 3, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'transpose float32 4D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'transposeInput': {
+ 'data': [
+ -45.67443084716797, 53.45924758911133, -60.118492126464844,
+ 38.081748962402344, 78.64247131347656, -69.25324249267578,
+ 1.8434585332870483, 92.8102798461914, 56.100074768066406,
+ 77.05838012695312, 57.46807861328125, -84.74308776855469,
+ 46.38539123535156, -84.89764404296875, 56.70438766479492,
+ -25.695144653320312, 5.62217378616333, -25.66281509399414,
+ 99.46284484863281, -87.58920288085938, -65.3779067993164,
+ -66.00990295410156, 38.466827392578125, 2.1999382972717285
+ ],
+ 'descriptor': {'dimensions': [1, 2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'transpose',
+ 'arguments': [{'input': 'transposeInput'}],
+ 'outputs': 'transposeOutput'
+ }],
+ 'expectedOutputs': {
+ 'transposeOutput': {
+ 'data': [
+ -45.67443084716797, 46.38539123535156, 78.64247131347656,
+ 5.62217378616333, 56.100074768066406, -65.3779067993164,
+ 53.45924758911133, -84.89764404296875, -69.25324249267578,
+ -25.66281509399414, 77.05838012695312, -66.00990295410156,
+ -60.118492126464844, 56.70438766479492, 1.8434585332870483,
+ 99.46284484863281, 57.46807861328125, 38.466827392578125,
+ 38.081748962402344, -25.695144653320312, 92.8102798461914,
+ -87.58920288085938, -84.74308776855469, 2.1999382972717285
+ ],
+ 'descriptor': {'dimensions': [4, 3, 2, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'transpose float32 5D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'transposeInput': {
+ 'data': [
+ -45.67443084716797, 53.45924758911133, -60.118492126464844,
+ 38.081748962402344, 78.64247131347656, -69.25324249267578,
+ 1.8434585332870483, 92.8102798461914, 56.100074768066406,
+ 77.05838012695312, 57.46807861328125, -84.74308776855469,
+ 46.38539123535156, -84.89764404296875, 56.70438766479492,
+ -25.695144653320312, 5.62217378616333, -25.66281509399414,
+ 99.46284484863281, -87.58920288085938, -65.3779067993164,
+ -66.00990295410156, 38.466827392578125, 2.1999382972717285
+ ],
+ 'descriptor': {'dimensions': [1, 2, 1, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'transpose',
+ 'arguments': [{'input': 'transposeInput'}],
+ 'outputs': 'transposeOutput'
+ }],
+ 'expectedOutputs': {
+ 'transposeOutput': {
+ 'data': [
+ -45.67443084716797, 46.38539123535156, 78.64247131347656,
+ 5.62217378616333, 56.100074768066406, -65.3779067993164,
+ 53.45924758911133, -84.89764404296875, -69.25324249267578,
+ -25.66281509399414, 77.05838012695312, -66.00990295410156,
+ -60.118492126464844, 56.70438766479492, 1.8434585332870483,
+ 99.46284484863281, 57.46807861328125, 38.466827392578125,
+ 38.081748962402344, -25.695144653320312, 92.8102798461914,
+ -87.58920288085938, -84.74308776855469, 2.1999382972717285
+ ],
+ 'descriptor': {'dimensions': [4, 3, 1, 2, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'transpose float32 1D tensor options.permutation',
+ 'graph': {
+ 'inputs': {
+ 'transposeInput': {
+ 'data': [
+ -45.67443084716797, 53.45924758911133, -60.118492126464844,
+ 38.081748962402344, 78.64247131347656, -69.25324249267578,
+ 1.8434585332870483, 92.8102798461914, 56.100074768066406,
+ 77.05838012695312, 57.46807861328125, -84.74308776855469,
+ 46.38539123535156, -84.89764404296875, 56.70438766479492,
+ -25.695144653320312, 5.62217378616333, -25.66281509399414,
+ 99.46284484863281, -87.58920288085938, -65.3779067993164,
+ -66.00990295410156, 38.466827392578125, 2.1999382972717285
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'transpose',
+ 'arguments':
+ [{'input': 'transposeInput'}, {'options': {'permutation': [0]}}],
+ 'outputs': 'transposeOutput'
+ }],
+ 'expectedOutputs': {
+ 'transposeOutput': {
+ 'data': [
+ -45.67443084716797, 53.45924758911133, -60.118492126464844,
+ 38.081748962402344, 78.64247131347656, -69.25324249267578,
+ 1.8434585332870483, 92.8102798461914, 56.100074768066406,
+ 77.05838012695312, 57.46807861328125, -84.74308776855469,
+ 46.38539123535156, -84.89764404296875, 56.70438766479492,
+ -25.695144653320312, 5.62217378616333, -25.66281509399414,
+ 99.46284484863281, -87.58920288085938, -65.3779067993164,
+ -66.00990295410156, 38.466827392578125, 2.1999382972717285
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'transpose float32 2D tensor options.permutation',
+ 'graph': {
+ 'inputs': {
+ 'transposeInput': {
+ 'data': [
+ -45.67443084716797, 53.45924758911133, -60.118492126464844,
+ 38.081748962402344, 78.64247131347656, -69.25324249267578,
+ 1.8434585332870483, 92.8102798461914, 56.100074768066406,
+ 77.05838012695312, 57.46807861328125, -84.74308776855469,
+ 46.38539123535156, -84.89764404296875, 56.70438766479492,
+ -25.695144653320312, 5.62217378616333, -25.66281509399414,
+ 99.46284484863281, -87.58920288085938, -65.3779067993164,
+ -66.00990295410156, 38.466827392578125, 2.1999382972717285
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'transpose',
+ 'arguments':
+ [{'input': 'transposeInput'}, {'options': {'permutation': [1, 0]}}],
+ 'outputs': 'transposeOutput'
+ }],
+ 'expectedOutputs': {
+ 'transposeOutput': {
+ 'data': [
+ -45.67443084716797, 1.8434585332870483, 46.38539123535156,
+ 99.46284484863281, 53.45924758911133, 92.8102798461914,
+ -84.89764404296875, -87.58920288085938, -60.118492126464844,
+ 56.100074768066406, 56.70438766479492, -65.3779067993164,
+ 38.081748962402344, 77.05838012695312, -25.695144653320312,
+ -66.00990295410156, 78.64247131347656, 57.46807861328125,
+ 5.62217378616333, 38.466827392578125, -69.25324249267578,
+ -84.74308776855469, -25.66281509399414, 2.1999382972717285
+ ],
+ 'descriptor': {'dimensions': [6, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'transpose float32 3D tensor options.permutation',
+ 'graph': {
+ 'inputs': {
+ 'transposeInput': {
+ 'data': [
+ -45.67443084716797, 53.45924758911133, -60.118492126464844,
+ 38.081748962402344, 78.64247131347656, -69.25324249267578,
+ 1.8434585332870483, 92.8102798461914, 56.100074768066406,
+ 77.05838012695312, 57.46807861328125, -84.74308776855469,
+ 46.38539123535156, -84.89764404296875, 56.70438766479492,
+ -25.695144653320312, 5.62217378616333, -25.66281509399414,
+ 99.46284484863281, -87.58920288085938, -65.3779067993164,
+ -66.00990295410156, 38.466827392578125, 2.1999382972717285
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'transpose',
+ 'arguments': [
+ {'input': 'transposeInput'}, {'options': {'permutation': [2, 0, 1]}}
+ ],
+ 'outputs': 'transposeOutput'
+ }],
+ 'expectedOutputs': {
+ 'transposeOutput': {
+ 'data': [
+ -45.67443084716797, 78.64247131347656, 56.100074768066406,
+ 46.38539123535156, 5.62217378616333, -65.3779067993164,
+ 53.45924758911133, -69.25324249267578, 77.05838012695312,
+ -84.89764404296875, -25.66281509399414, -66.00990295410156,
+ -60.118492126464844, 1.8434585332870483, 57.46807861328125,
+ 56.70438766479492, 99.46284484863281, 38.466827392578125,
+ 38.081748962402344, 92.8102798461914, -84.74308776855469,
+ -25.695144653320312, -87.58920288085938, 2.1999382972717285
+ ],
+ 'descriptor': {'dimensions': [4, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'transpose float32 4D tensor options.permutation',
+ 'graph': {
+ 'inputs': {
+ 'transposeInput': {
+ 'data': [
+ -45.67443084716797, 53.45924758911133, -60.118492126464844,
+ 38.081748962402344, 78.64247131347656, -69.25324249267578,
+ 1.8434585332870483, 92.8102798461914, 56.100074768066406,
+ 77.05838012695312, 57.46807861328125, -84.74308776855469,
+ 46.38539123535156, -84.89764404296875, 56.70438766479492,
+ -25.695144653320312, 5.62217378616333, -25.66281509399414,
+ 99.46284484863281, -87.58920288085938, -65.3779067993164,
+ -66.00990295410156, 38.466827392578125, 2.1999382972717285
+ ],
+ 'descriptor': {'dimensions': [1, 2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'transpose',
+ 'arguments': [
+ {'input': 'transposeInput'},
+ {'options': {'permutation': [2, 3, 0, 1]}}
+ ],
+ 'outputs': 'transposeOutput'
+ }],
+ 'expectedOutputs': {
+ 'transposeOutput': {
+ 'data': [
+ -45.67443084716797, 46.38539123535156, 53.45924758911133,
+ -84.89764404296875, -60.118492126464844, 56.70438766479492,
+ 38.081748962402344, -25.695144653320312, 78.64247131347656,
+ 5.62217378616333, -69.25324249267578, -25.66281509399414,
+ 1.8434585332870483, 99.46284484863281, 92.8102798461914,
+ -87.58920288085938, 56.100074768066406, -65.3779067993164,
+ 77.05838012695312, -66.00990295410156, 57.46807861328125,
+ 38.466827392578125, -84.74308776855469, 2.1999382972717285
+ ],
+ 'descriptor': {'dimensions': [3, 4, 1, 2], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'transpose float32 5D tensor options.permutation',
+ 'graph': {
+ 'inputs': {
+ 'transposeInput': {
+ 'data': [
+ -45.67443084716797, 53.45924758911133, -60.118492126464844,
+ 38.081748962402344, 78.64247131347656, -69.25324249267578,
+ 1.8434585332870483, 92.8102798461914, 56.100074768066406,
+ 77.05838012695312, 57.46807861328125, -84.74308776855469,
+ 46.38539123535156, -84.89764404296875, 56.70438766479492,
+ -25.695144653320312, 5.62217378616333, -25.66281509399414,
+ 99.46284484863281, -87.58920288085938, -65.3779067993164,
+ -66.00990295410156, 38.466827392578125, 2.1999382972717285
+ ],
+ 'descriptor': {'dimensions': [1, 2, 1, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'transpose',
+ 'arguments': [
+ {'input': 'transposeInput'},
+ {'options': {'permutation': [1, 3, 0, 4, 2]}}
+ ],
+ 'outputs': 'transposeOutput'
+ }],
+ 'expectedOutputs': {
+ 'transposeOutput': {
+ 'data': [
+ -45.67443084716797, 53.45924758911133, -60.118492126464844,
+ 38.081748962402344, 78.64247131347656, -69.25324249267578,
+ 1.8434585332870483, 92.8102798461914, 56.100074768066406,
+ 77.05838012695312, 57.46807861328125, -84.74308776855469,
+ 46.38539123535156, -84.89764404296875, 56.70438766479492,
+ -25.695144653320312, 5.62217378616333, -25.66281509399414,
+ 99.46284484863281, -87.58920288085938, -65.3779067993164,
+ -66.00990295410156, 38.466827392578125, 2.1999382972717285
+ ],
+ 'descriptor': {'dimensions': [2, 3, 1, 4, 1], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ transposeTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getTransposePrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/triangular.https.any.js b/tests/wpt/tests/webnn/conformance_tests/triangular.https.any.js
index 9919110e9b1..7c79518d43f 100644
--- a/tests/wpt/tests/webnn/conformance_tests/triangular.https.any.js
+++ b/tests/wpt/tests/webnn/conformance_tests/triangular.https.any.js
@@ -8,6 +8,779 @@
'use strict';
-// https://webmachinelearning.github.io/webnn/#api-mlgraphbuilder-triangular
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-triangular
+// Given a 2-D tensor (matrix), return a 2-D tensor containing either the upper
+// or lower triangular part of the input tensor. If the input tensor has greater
+// than 2 dimensions it is treated as a batch of matrices and the result has the
+// same shape.
+//
+// dictionary MLTriangularOptions {
+// boolean upper = true;
+// [EnforceRange] long diagonal = 0;
+// };
+//
+// MLOperand triangular(
+// MLOperand input, optional MLTriangularOptions options = {});
-runWebNNConformanceTests('triangular', buildOperationWithSingleInput);
+
+const getTriangularPrecisionTolerance = (graphResources) => {
+ const toleranceValueDict = {float32: 0, float16: 0};
+ const expectedDataType =
+ getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs);
+ return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]};
+};
+
+const triangularTests = [
+ {
+ 'name': 'triangular float32 2D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'triangularInput': {
+ 'data': [
+ 84.9194564819336, -86.21631622314453, 50.38116455078125,
+ -98.47772216796875, -94.51172637939453, -21.42218589782715,
+ 24.678754806518555, -50.355342864990234, -37.015724182128906,
+ 97.25071716308594, 73.36241149902344, -75.12358856201172,
+ 41.64348602294922, 58.862911224365234, -29.916187286376953,
+ 67.48285675048828, 42.132598876953125, -70.27587127685547,
+ 20.88446617126465, 71.37139892578125, -84.96932220458984,
+ -88.97057342529297, 77.58269500732422, 91.03327178955078
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'triangular',
+ 'arguments': [{'input': 'triangularInput'}],
+ 'outputs': 'triangularOutput'
+ }],
+ 'expectedOutputs': {
+ 'triangularOutput': {
+ 'data': [
+ 84.9194564819336,
+ -86.21631622314453,
+ 50.38116455078125,
+ -98.47772216796875,
+ -94.51172637939453,
+ -21.42218589782715,
+ 0,
+ -50.355342864990234,
+ -37.015724182128906,
+ 97.25071716308594,
+ 73.36241149902344,
+ -75.12358856201172,
+ 0,
+ 0,
+ -29.916187286376953,
+ 67.48285675048828,
+ 42.132598876953125,
+ -70.27587127685547,
+ 0,
+ 0,
+ 0,
+ -88.97057342529297,
+ 77.58269500732422,
+ 91.03327178955078
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'triangular float32 3D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'triangularInput': {
+ 'data': [
+ 84.9194564819336, -86.21631622314453, 50.38116455078125,
+ -98.47772216796875, -94.51172637939453, -21.42218589782715,
+ 24.678754806518555, -50.355342864990234, -37.015724182128906,
+ 97.25071716308594, 73.36241149902344, -75.12358856201172,
+ 41.64348602294922, 58.862911224365234, -29.916187286376953,
+ 67.48285675048828, 42.132598876953125, -70.27587127685547,
+ 20.88446617126465, 71.37139892578125, -84.96932220458984,
+ -88.97057342529297, 77.58269500732422, 91.03327178955078
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'triangular',
+ 'arguments': [{'input': 'triangularInput'}],
+ 'outputs': 'triangularOutput'
+ }],
+ 'expectedOutputs': {
+ 'triangularOutput': {
+ 'data': [
+ 84.9194564819336,
+ -86.21631622314453,
+ 50.38116455078125,
+ -98.47772216796875,
+ 0,
+ -21.42218589782715,
+ 24.678754806518555,
+ -50.355342864990234,
+ 0,
+ 0,
+ 73.36241149902344,
+ -75.12358856201172,
+ 41.64348602294922,
+ 58.862911224365234,
+ -29.916187286376953,
+ 67.48285675048828,
+ 0,
+ -70.27587127685547,
+ 20.88446617126465,
+ 71.37139892578125,
+ 0,
+ 0,
+ 77.58269500732422,
+ 91.03327178955078
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'triangular float32 4D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'triangularInput': {
+ 'data': [
+ 84.9194564819336, -86.21631622314453, 50.38116455078125,
+ -98.47772216796875, -94.51172637939453, -21.42218589782715,
+ 24.678754806518555, -50.355342864990234, -37.015724182128906,
+ 97.25071716308594, 73.36241149902344, -75.12358856201172,
+ 41.64348602294922, 58.862911224365234, -29.916187286376953,
+ 67.48285675048828, 42.132598876953125, -70.27587127685547,
+ 20.88446617126465, 71.37139892578125, -84.96932220458984,
+ -88.97057342529297, 77.58269500732422, 91.03327178955078
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'triangular',
+ 'arguments': [{'input': 'triangularInput'}],
+ 'outputs': 'triangularOutput'
+ }],
+ 'expectedOutputs': {
+ 'triangularOutput': {
+ 'data': [
+ 84.9194564819336, -86.21631622314453,
+ 50.38116455078125, 0,
+ -94.51172637939453, -21.42218589782715,
+ 24.678754806518555, -50.355342864990234,
+ -37.015724182128906, 0,
+ 73.36241149902344, -75.12358856201172,
+ 41.64348602294922, 58.862911224365234,
+ -29.916187286376953, 0,
+ 42.132598876953125, -70.27587127685547,
+ 20.88446617126465, 71.37139892578125,
+ -84.96932220458984, 0,
+ 77.58269500732422, 91.03327178955078
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'triangular float32 5D tensor default options',
+ 'graph': {
+ 'inputs': {
+ 'triangularInput': {
+ 'data': [
+ 84.9194564819336, -86.21631622314453, 50.38116455078125,
+ -98.47772216796875, -94.51172637939453, -21.42218589782715,
+ 24.678754806518555, -50.355342864990234, -37.015724182128906,
+ 97.25071716308594, 73.36241149902344, -75.12358856201172,
+ 41.64348602294922, 58.862911224365234, -29.916187286376953,
+ 67.48285675048828, 42.132598876953125, -70.27587127685547,
+ 20.88446617126465, 71.37139892578125, -84.96932220458984,
+ -88.97057342529297, 77.58269500732422, 91.03327178955078
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 1, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'triangular',
+ 'arguments': [{'input': 'triangularInput'}],
+ 'outputs': 'triangularOutput'
+ }],
+ 'expectedOutputs': {
+ 'triangularOutput': {
+ 'data': [
+ 84.9194564819336, -86.21631622314453, 50.38116455078125,
+ -98.47772216796875, -94.51172637939453, -21.42218589782715,
+ 24.678754806518555, -50.355342864990234, -37.015724182128906,
+ 97.25071716308594, 73.36241149902344, -75.12358856201172,
+ 41.64348602294922, 58.862911224365234, -29.916187286376953,
+ 67.48285675048828, 42.132598876953125, -70.27587127685547,
+ 20.88446617126465, 71.37139892578125, -84.96932220458984,
+ -88.97057342529297, 77.58269500732422, 91.03327178955078
+ ],
+ 'descriptor': {'dimensions': [2, 1, 4, 1, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'triangular float32 4D tensor explict options.upper=true',
+ 'graph': {
+ 'inputs': {
+ 'triangularInput': {
+ 'data': [
+ 84.9194564819336, -86.21631622314453, 50.38116455078125,
+ -98.47772216796875, -94.51172637939453, -21.42218589782715,
+ 24.678754806518555, -50.355342864990234, -37.015724182128906,
+ 97.25071716308594, 73.36241149902344, -75.12358856201172,
+ 41.64348602294922, 58.862911224365234, -29.916187286376953,
+ 67.48285675048828, 42.132598876953125, -70.27587127685547,
+ 20.88446617126465, 71.37139892578125, -84.96932220458984,
+ -88.97057342529297, 77.58269500732422, 91.03327178955078
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'triangular',
+ 'arguments':
+ [{'input': 'triangularInput'}, {'options': {'upper': true}}],
+ 'outputs': 'triangularOutput'
+ }],
+ 'expectedOutputs': {
+ 'triangularOutput': {
+ 'data': [
+ 84.9194564819336, -86.21631622314453,
+ 50.38116455078125, 0,
+ -94.51172637939453, -21.42218589782715,
+ 24.678754806518555, -50.355342864990234,
+ -37.015724182128906, 0,
+ 73.36241149902344, -75.12358856201172,
+ 41.64348602294922, 58.862911224365234,
+ -29.916187286376953, 0,
+ 42.132598876953125, -70.27587127685547,
+ 20.88446617126465, 71.37139892578125,
+ -84.96932220458984, 0,
+ 77.58269500732422, 91.03327178955078
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'triangular float32 4D tensor options.upper=false',
+ 'graph': {
+ 'inputs': {
+ 'triangularInput': {
+ 'data': [
+ 84.9194564819336, -86.21631622314453, 50.38116455078125,
+ -98.47772216796875, -94.51172637939453, -21.42218589782715,
+ 24.678754806518555, -50.355342864990234, -37.015724182128906,
+ 97.25071716308594, 73.36241149902344, -75.12358856201172,
+ 41.64348602294922, 58.862911224365234, -29.916187286376953,
+ 67.48285675048828, 42.132598876953125, -70.27587127685547,
+ 20.88446617126465, 71.37139892578125, -84.96932220458984,
+ -88.97057342529297, 77.58269500732422, 91.03327178955078
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'triangular',
+ 'arguments':
+ [{'input': 'triangularInput'}, {'options': {'upper': false}}],
+ 'outputs': 'triangularOutput'
+ }],
+ 'expectedOutputs': {
+ 'triangularOutput': {
+ 'data': [
+ 84.9194564819336,
+ 0,
+ 0,
+ -98.47772216796875,
+ -94.51172637939453,
+ 0,
+ 24.678754806518555,
+ 0,
+ 0,
+ 97.25071716308594,
+ 73.36241149902344,
+ 0,
+ 41.64348602294922,
+ 0,
+ 0,
+ 67.48285675048828,
+ 42.132598876953125,
+ 0,
+ 20.88446617126465,
+ 0,
+ 0,
+ -88.97057342529297,
+ 77.58269500732422,
+ 0
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'triangular float32 4D tensor explict options.diagonal=0',
+ 'graph': {
+ 'inputs': {
+ 'triangularInput': {
+ 'data': [
+ 84.9194564819336, -86.21631622314453, 50.38116455078125,
+ -98.47772216796875, -94.51172637939453, -21.42218589782715,
+ 24.678754806518555, -50.355342864990234, -37.015724182128906,
+ 97.25071716308594, 73.36241149902344, -75.12358856201172,
+ 41.64348602294922, 58.862911224365234, -29.916187286376953,
+ 67.48285675048828, 42.132598876953125, -70.27587127685547,
+ 20.88446617126465, 71.37139892578125, -84.96932220458984,
+ -88.97057342529297, 77.58269500732422, 91.03327178955078
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'triangular',
+ 'arguments':
+ [{'input': 'triangularInput'}, {'options': {'diagonal': 0}}],
+ 'outputs': 'triangularOutput'
+ }],
+ 'expectedOutputs': {
+ 'triangularOutput': {
+ 'data': [
+ 84.9194564819336, -86.21631622314453,
+ 50.38116455078125, 0,
+ -94.51172637939453, -21.42218589782715,
+ 24.678754806518555, -50.355342864990234,
+ -37.015724182128906, 0,
+ 73.36241149902344, -75.12358856201172,
+ 41.64348602294922, 58.862911224365234,
+ -29.916187286376953, 0,
+ 42.132598876953125, -70.27587127685547,
+ 20.88446617126465, 71.37139892578125,
+ -84.96932220458984, 0,
+ 77.58269500732422, 91.03327178955078
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'triangular float32 4D tensor options.diagonal=1',
+ 'graph': {
+ 'inputs': {
+ 'triangularInput': {
+ 'data': [
+ 84.9194564819336, -86.21631622314453, 50.38116455078125,
+ -98.47772216796875, -94.51172637939453, -21.42218589782715,
+ 24.678754806518555, -50.355342864990234, -37.015724182128906,
+ 97.25071716308594, 73.36241149902344, -75.12358856201172,
+ 41.64348602294922, 58.862911224365234, -29.916187286376953,
+ 67.48285675048828, 42.132598876953125, -70.27587127685547,
+ 20.88446617126465, 71.37139892578125, -84.96932220458984,
+ -88.97057342529297, 77.58269500732422, 91.03327178955078
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'triangular',
+ 'arguments':
+ [{'input': 'triangularInput'}, {'options': {'diagonal': 1}}],
+ 'outputs': 'triangularOutput'
+ }],
+ 'expectedOutputs': {
+ 'triangularOutput': {
+ 'data': [
+ 0,
+ -86.21631622314453,
+ 50.38116455078125,
+ 0,
+ 0,
+ -21.42218589782715,
+ 0,
+ -50.355342864990234,
+ -37.015724182128906,
+ 0,
+ 0,
+ -75.12358856201172,
+ 0,
+ 58.862911224365234,
+ -29.916187286376953,
+ 0,
+ 0,
+ -70.27587127685547,
+ 0,
+ 71.37139892578125,
+ -84.96932220458984,
+ 0,
+ 0,
+ 91.03327178955078
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'triangular float32 4D tensor options.diagonal=-1',
+ 'graph': {
+ 'inputs': {
+ 'triangularInput': {
+ 'data': [
+ 84.9194564819336, -86.21631622314453, 50.38116455078125,
+ -98.47772216796875, -94.51172637939453, -21.42218589782715,
+ 24.678754806518555, -50.355342864990234, -37.015724182128906,
+ 97.25071716308594, 73.36241149902344, -75.12358856201172,
+ 41.64348602294922, 58.862911224365234, -29.916187286376953,
+ 67.48285675048828, 42.132598876953125, -70.27587127685547,
+ 20.88446617126465, 71.37139892578125, -84.96932220458984,
+ -88.97057342529297, 77.58269500732422, 91.03327178955078
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'triangular',
+ 'arguments':
+ [{'input': 'triangularInput'}, {'options': {'diagonal': -1}}],
+ 'outputs': 'triangularOutput'
+ }],
+ 'expectedOutputs': {
+ 'triangularOutput': {
+ 'data': [
+ 84.9194564819336, -86.21631622314453, 50.38116455078125,
+ -98.47772216796875, -94.51172637939453, -21.42218589782715,
+ 24.678754806518555, -50.355342864990234, -37.015724182128906,
+ 97.25071716308594, 73.36241149902344, -75.12358856201172,
+ 41.64348602294922, 58.862911224365234, -29.916187286376953,
+ 67.48285675048828, 42.132598876953125, -70.27587127685547,
+ 20.88446617126465, 71.37139892578125, -84.96932220458984,
+ -88.97057342529297, 77.58269500732422, 91.03327178955078
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'triangular float32 4D tensor fully zero options.diagonal=3',
+ 'graph': {
+ 'inputs': {
+ 'triangularInput': {
+ 'data': [
+ 84.9194564819336, -86.21631622314453, 50.38116455078125,
+ -98.47772216796875, -94.51172637939453, -21.42218589782715,
+ 24.678754806518555, -50.355342864990234, -37.015724182128906,
+ 97.25071716308594, 73.36241149902344, -75.12358856201172,
+ 41.64348602294922, 58.862911224365234, -29.916187286376953,
+ 67.48285675048828, 42.132598876953125, -70.27587127685547,
+ 20.88446617126465, 71.37139892578125, -84.96932220458984,
+ -88.97057342529297, 77.58269500732422, 91.03327178955078
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'triangular',
+ 'arguments':
+ [{'input': 'triangularInput'}, {'options': {'diagonal': 3}}],
+ 'outputs': 'triangularOutput'
+ }],
+ 'expectedOutputs': {
+ 'triangularOutput': {
+ 'data': [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'triangular float32 4D tensor fully copied options.diagonal=-2',
+ 'graph': {
+ 'inputs': {
+ 'triangularInput': {
+ 'data': [
+ 84.9194564819336, -86.21631622314453, 50.38116455078125,
+ -98.47772216796875, -94.51172637939453, -21.42218589782715,
+ 24.678754806518555, -50.355342864990234, -37.015724182128906,
+ 97.25071716308594, 73.36241149902344, -75.12358856201172,
+ 41.64348602294922, 58.862911224365234, -29.916187286376953,
+ 67.48285675048828, 42.132598876953125, -70.27587127685547,
+ 20.88446617126465, 71.37139892578125, -84.96932220458984,
+ -88.97057342529297, 77.58269500732422, 91.03327178955078
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'triangular',
+ 'arguments':
+ [{'input': 'triangularInput'}, {'options': {'diagonal': -2}}],
+ 'outputs': 'triangularOutput'
+ }],
+ 'expectedOutputs': {
+ 'triangularOutput': {
+ 'data': [
+ 84.9194564819336, -86.21631622314453, 50.38116455078125,
+ -98.47772216796875, -94.51172637939453, -21.42218589782715,
+ 24.678754806518555, -50.355342864990234, -37.015724182128906,
+ 97.25071716308594, 73.36241149902344, -75.12358856201172,
+ 41.64348602294922, 58.862911224365234, -29.916187286376953,
+ 67.48285675048828, 42.132598876953125, -70.27587127685547,
+ 20.88446617126465, 71.37139892578125, -84.96932220458984,
+ -88.97057342529297, 77.58269500732422, 91.03327178955078
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'triangular float32 4D tensor options.upper=true options.diagonal=1',
+ 'graph': {
+ 'inputs': {
+ 'triangularInput': {
+ 'data': [
+ 84.9194564819336, -86.21631622314453, 50.38116455078125,
+ -98.47772216796875, -94.51172637939453, -21.42218589782715,
+ 24.678754806518555, -50.355342864990234, -37.015724182128906,
+ 97.25071716308594, 73.36241149902344, -75.12358856201172,
+ 41.64348602294922, 58.862911224365234, -29.916187286376953,
+ 67.48285675048828, 42.132598876953125, -70.27587127685547,
+ 20.88446617126465, 71.37139892578125, -84.96932220458984,
+ -88.97057342529297, 77.58269500732422, 91.03327178955078
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'triangular',
+ 'arguments': [
+ {'input': 'triangularInput'},
+ {'options': {'upper': true, 'diagonal': 1}}
+ ],
+ 'outputs': 'triangularOutput'
+ }],
+ 'expectedOutputs': {
+ 'triangularOutput': {
+ 'data': [
+ 0,
+ -86.21631622314453,
+ 50.38116455078125,
+ 0,
+ 0,
+ -21.42218589782715,
+ 0,
+ -50.355342864990234,
+ -37.015724182128906,
+ 0,
+ 0,
+ -75.12358856201172,
+ 0,
+ 58.862911224365234,
+ -29.916187286376953,
+ 0,
+ 0,
+ -70.27587127685547,
+ 0,
+ 71.37139892578125,
+ -84.96932220458984,
+ 0,
+ 0,
+ 91.03327178955078
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'triangular float32 4D tensor options.upper=false options.diagonal=1',
+ 'graph': {
+ 'inputs': {
+ 'triangularInput': {
+ 'data': [
+ 84.9194564819336, -86.21631622314453, 50.38116455078125,
+ -98.47772216796875, -94.51172637939453, -21.42218589782715,
+ 24.678754806518555, -50.355342864990234, -37.015724182128906,
+ 97.25071716308594, 73.36241149902344, -75.12358856201172,
+ 41.64348602294922, 58.862911224365234, -29.916187286376953,
+ 67.48285675048828, 42.132598876953125, -70.27587127685547,
+ 20.88446617126465, 71.37139892578125, -84.96932220458984,
+ -88.97057342529297, 77.58269500732422, 91.03327178955078
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'triangular',
+ 'arguments': [
+ {'input': 'triangularInput'},
+ {'options': {'upper': false, 'diagonal': 1}}
+ ],
+ 'outputs': 'triangularOutput'
+ }],
+ 'expectedOutputs': {
+ 'triangularOutput': {
+ 'data': [
+ 84.9194564819336, -86.21631622314453, 0,
+ -98.47772216796875, -94.51172637939453, -21.42218589782715,
+ 24.678754806518555, -50.355342864990234, 0,
+ 97.25071716308594, 73.36241149902344, -75.12358856201172,
+ 41.64348602294922, 58.862911224365234, 0,
+ 67.48285675048828, 42.132598876953125, -70.27587127685547,
+ 20.88446617126465, 71.37139892578125, 0,
+ -88.97057342529297, 77.58269500732422, 91.03327178955078
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'triangular float32 4D tensor options.upper=false options.diagonal=-1',
+ 'graph': {
+ 'inputs': {
+ 'triangularInput': {
+ 'data': [
+ 84.9194564819336, -86.21631622314453, 50.38116455078125,
+ -98.47772216796875, -94.51172637939453, -21.42218589782715,
+ 24.678754806518555, -50.355342864990234, -37.015724182128906,
+ 97.25071716308594, 73.36241149902344, -75.12358856201172,
+ 41.64348602294922, 58.862911224365234, -29.916187286376953,
+ 67.48285675048828, 42.132598876953125, -70.27587127685547,
+ 20.88446617126465, 71.37139892578125, -84.96932220458984,
+ -88.97057342529297, 77.58269500732422, 91.03327178955078
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'triangular',
+ 'arguments': [
+ {'input': 'triangularInput'},
+ {'options': {'upper': false, 'diagonal': -1}}
+ ],
+ 'outputs': 'triangularOutput'
+ }],
+ 'expectedOutputs': {
+ 'triangularOutput': {
+ 'data': [
+ 0, 0, 0, -98.47772216796875, 0, 0,
+ 0, 0, 0, 97.25071716308594, 0, 0,
+ 0, 0, 0, 67.48285675048828, 0, 0,
+ 0, 0, 0, -88.97057342529297, 0, 0
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'triangular float32 4D tensor fully copied options.upper=false options.diagonal=3',
+ 'graph': {
+ 'inputs': {
+ 'triangularInput': {
+ 'data': [
+ 84.9194564819336, -86.21631622314453, 50.38116455078125,
+ -98.47772216796875, -94.51172637939453, -21.42218589782715,
+ 24.678754806518555, -50.355342864990234, -37.015724182128906,
+ 97.25071716308594, 73.36241149902344, -75.12358856201172,
+ 41.64348602294922, 58.862911224365234, -29.916187286376953,
+ 67.48285675048828, 42.132598876953125, -70.27587127685547,
+ 20.88446617126465, 71.37139892578125, -84.96932220458984,
+ -88.97057342529297, 77.58269500732422, 91.03327178955078
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'triangular',
+ 'arguments': [
+ {'input': 'triangularInput'},
+ {'options': {'upper': false, 'diagonal': 3}}
+ ],
+ 'outputs': 'triangularOutput'
+ }],
+ 'expectedOutputs': {
+ 'triangularOutput': {
+ 'data': [
+ 84.9194564819336, -86.21631622314453, 50.38116455078125,
+ -98.47772216796875, -94.51172637939453, -21.42218589782715,
+ 24.678754806518555, -50.355342864990234, -37.015724182128906,
+ 97.25071716308594, 73.36241149902344, -75.12358856201172,
+ 41.64348602294922, 58.862911224365234, -29.916187286376953,
+ 67.48285675048828, 42.132598876953125, -70.27587127685547,
+ 20.88446617126465, 71.37139892578125, -84.96932220458984,
+ -88.97057342529297, 77.58269500732422, 91.03327178955078
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name':
+ 'triangular float32 4D tensor fully zero options.upper=false options.diagonal=-2',
+ 'graph': {
+ 'inputs': {
+ 'triangularInput': {
+ 'data': [
+ 84.9194564819336, -86.21631622314453, 50.38116455078125,
+ -98.47772216796875, -94.51172637939453, -21.42218589782715,
+ 24.678754806518555, -50.355342864990234, -37.015724182128906,
+ 97.25071716308594, 73.36241149902344, -75.12358856201172,
+ 41.64348602294922, 58.862911224365234, -29.916187286376953,
+ 67.48285675048828, 42.132598876953125, -70.27587127685547,
+ 20.88446617126465, 71.37139892578125, -84.96932220458984,
+ -88.97057342529297, 77.58269500732422, 91.03327178955078
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'triangular',
+ 'arguments': [
+ {'input': 'triangularInput'},
+ {'options': {'upper': false, 'diagonal': -2}}
+ ],
+ 'outputs': 'triangularOutput'
+ }],
+ 'expectedOutputs': {
+ 'triangularOutput': {
+ 'data': [
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ triangularTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getTriangularPrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/conformance_tests/where.https.any.js b/tests/wpt/tests/webnn/conformance_tests/where.https.any.js
index fa920ac2519..957f8286083 100644
--- a/tests/wpt/tests/webnn/conformance_tests/where.https.any.js
+++ b/tests/wpt/tests/webnn/conformance_tests/where.https.any.js
@@ -8,6 +8,1019 @@
'use strict';
-// https://webmachinelearning.github.io/webnn/#api-mlgraphbuilder-where
+// https://www.w3.org/TR/webnn/#api-mlgraphbuilder-where
+// Select the values from the input or the other tensor depending on the
+// corresponding boolean values of the condition tensor.
+//
+// MLOperand where(MLOperand condition, MLOperand trueValue, MLOperand
+// falseValue);
-runWebNNConformanceTests('where', buildWhere);
+
+const getWherePrecisionTolerance = (graphResources) => {
+ const toleranceValueDict = {float32: 0, float16: 0};
+ const expectedDataType =
+ getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs);
+ return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]};
+};
+
+const whereTests = [
+ {
+ 'name': 'where float32 0D scalars',
+ 'graph': {
+ 'inputs': {
+ 'inputCondition': {
+ 'data': [247],
+ 'descriptor': {'dimensions': [], 'dataType': 'uint8'}
+ },
+ 'inputTrueValue': {
+ 'data': [-22.83924102783203],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ },
+ 'inputFalseValue': {
+ 'data': [-50.02232360839844],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'where',
+ 'arguments': [
+ {'condition': 'inputCondition'}, {'trueValue': 'inputTrueValue'},
+ {'falseValue': 'inputFalseValue'}
+ ],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'whereOutput': {
+ 'data': [-22.83924102783203],
+ 'descriptor': {'dimensions': [], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'where float32 1D constant tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputCondition': {
+ 'data': [
+ 241, 0, 85, 0, 227, 51, 202, 0, 104, 227, 129, 129,
+ 175, 134, 130, 140, 103, 46, 158, 17, 0, 41, 94, 0
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'uint8'},
+ 'constant': true
+ },
+ 'inputTrueValue': {
+ 'data': [
+ 70.27151489257812, 89.99047088623047, -1.5351932048797607,
+ -83.77035522460938, 29.59670639038086, -37.10446548461914,
+ -6.663239002227783, -83.15333557128906, -90.47624206542969,
+ -45.470706939697266, 50.38861083984375, 46.510799407958984,
+ 47.503013610839844, -21.95842933654785, 42.89878463745117,
+ -76.8262710571289, 67.0030746459961, 40.09717559814453,
+ -29.081029891967773, -12.19106674194336, -10.8577880859375,
+ -23.302522659301758, 30.851404190063477, -58.82704544067383
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ },
+ 'inputFalseValue': {
+ 'data': [
+ 90.44255065917969, 66.7642593383789, -39.82423782348633,
+ -21.683168411254883, -67.3449478149414, -46.46003341674805,
+ -55.907073974609375, 65.5730209350586, 35.14354705810547,
+ 11.960981369018555, 76.65287780761719, 60.741416931152344,
+ -93.93305206298828, -30.397233963012695, 34.315250396728516,
+ 7.7088470458984375, -82.2353286743164, 91.12223052978516,
+ 22.937334060668945, 74.97810363769531, 18.877336502075195,
+ 62.31299591064453, 48.867103576660156, -75.41789245605469
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'},
+ 'constant': true
+ }
+ },
+ 'operators': [{
+ 'name': 'where',
+ 'arguments': [
+ {'condition': 'inputCondition'}, {'trueValue': 'inputTrueValue'},
+ {'falseValue': 'inputFalseValue'}
+ ],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'whereOutput': {
+ 'data': [
+ 70.27151489257812, 66.7642593383789, -1.5351932048797607,
+ -21.683168411254883, 29.59670639038086, -37.10446548461914,
+ -6.663239002227783, 65.5730209350586, -90.47624206542969,
+ -45.470706939697266, 50.38861083984375, 46.510799407958984,
+ 47.503013610839844, -21.95842933654785, 42.89878463745117,
+ -76.8262710571289, 67.0030746459961, 40.09717559814453,
+ -29.081029891967773, -12.19106674194336, 18.877336502075195,
+ -23.302522659301758, 30.851404190063477, -75.41789245605469
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'where float32 1D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputCondition': {
+ 'data': [
+ 241, 0, 85, 0, 227, 51, 202, 0, 104, 227, 129, 129,
+ 175, 134, 130, 140, 103, 46, 158, 17, 0, 41, 94, 0
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'uint8'}
+ },
+ 'inputTrueValue': {
+ 'data': [
+ 70.27151489257812, 89.99047088623047, -1.5351932048797607,
+ -83.77035522460938, 29.59670639038086, -37.10446548461914,
+ -6.663239002227783, -83.15333557128906, -90.47624206542969,
+ -45.470706939697266, 50.38861083984375, 46.510799407958984,
+ 47.503013610839844, -21.95842933654785, 42.89878463745117,
+ -76.8262710571289, 67.0030746459961, 40.09717559814453,
+ -29.081029891967773, -12.19106674194336, -10.8577880859375,
+ -23.302522659301758, 30.851404190063477, -58.82704544067383
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ },
+ 'inputFalseValue': {
+ 'data': [
+ 90.44255065917969, 66.7642593383789, -39.82423782348633,
+ -21.683168411254883, -67.3449478149414, -46.46003341674805,
+ -55.907073974609375, 65.5730209350586, 35.14354705810547,
+ 11.960981369018555, 76.65287780761719, 60.741416931152344,
+ -93.93305206298828, -30.397233963012695, 34.315250396728516,
+ 7.7088470458984375, -82.2353286743164, 91.12223052978516,
+ 22.937334060668945, 74.97810363769531, 18.877336502075195,
+ 62.31299591064453, 48.867103576660156, -75.41789245605469
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'where',
+ 'arguments': [
+ {'condition': 'inputCondition'}, {'trueValue': 'inputTrueValue'},
+ {'falseValue': 'inputFalseValue'}
+ ],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'whereOutput': {
+ 'data': [
+ 70.27151489257812, 66.7642593383789, -1.5351932048797607,
+ -21.683168411254883, 29.59670639038086, -37.10446548461914,
+ -6.663239002227783, 65.5730209350586, -90.47624206542969,
+ -45.470706939697266, 50.38861083984375, 46.510799407958984,
+ 47.503013610839844, -21.95842933654785, 42.89878463745117,
+ -76.8262710571289, 67.0030746459961, 40.09717559814453,
+ -29.081029891967773, -12.19106674194336, 18.877336502075195,
+ -23.302522659301758, 30.851404190063477, -75.41789245605469
+ ],
+ 'descriptor': {'dimensions': [24], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'where float32 2D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputCondition': {
+ 'data': [
+ 241, 0, 85, 0, 227, 51, 202, 0, 104, 227, 129, 129,
+ 175, 134, 130, 140, 103, 46, 158, 17, 0, 41, 94, 0
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'uint8'}
+ },
+ 'inputTrueValue': {
+ 'data': [
+ 70.27151489257812, 89.99047088623047, -1.5351932048797607,
+ -83.77035522460938, 29.59670639038086, -37.10446548461914,
+ -6.663239002227783, -83.15333557128906, -90.47624206542969,
+ -45.470706939697266, 50.38861083984375, 46.510799407958984,
+ 47.503013610839844, -21.95842933654785, 42.89878463745117,
+ -76.8262710571289, 67.0030746459961, 40.09717559814453,
+ -29.081029891967773, -12.19106674194336, -10.8577880859375,
+ -23.302522659301758, 30.851404190063477, -58.82704544067383
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ },
+ 'inputFalseValue': {
+ 'data': [
+ 90.44255065917969, 66.7642593383789, -39.82423782348633,
+ -21.683168411254883, -67.3449478149414, -46.46003341674805,
+ -55.907073974609375, 65.5730209350586, 35.14354705810547,
+ 11.960981369018555, 76.65287780761719, 60.741416931152344,
+ -93.93305206298828, -30.397233963012695, 34.315250396728516,
+ 7.7088470458984375, -82.2353286743164, 91.12223052978516,
+ 22.937334060668945, 74.97810363769531, 18.877336502075195,
+ 62.31299591064453, 48.867103576660156, -75.41789245605469
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'where',
+ 'arguments': [
+ {'condition': 'inputCondition'}, {'trueValue': 'inputTrueValue'},
+ {'falseValue': 'inputFalseValue'}
+ ],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'whereOutput': {
+ 'data': [
+ 70.27151489257812, 66.7642593383789, -1.5351932048797607,
+ -21.683168411254883, 29.59670639038086, -37.10446548461914,
+ -6.663239002227783, 65.5730209350586, -90.47624206542969,
+ -45.470706939697266, 50.38861083984375, 46.510799407958984,
+ 47.503013610839844, -21.95842933654785, 42.89878463745117,
+ -76.8262710571289, 67.0030746459961, 40.09717559814453,
+ -29.081029891967773, -12.19106674194336, 18.877336502075195,
+ -23.302522659301758, 30.851404190063477, -75.41789245605469
+ ],
+ 'descriptor': {'dimensions': [4, 6], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'where float32 3D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputCondition': {
+ 'data': [
+ 241, 0, 85, 0, 227, 51, 202, 0, 104, 227, 129, 129,
+ 175, 134, 130, 140, 103, 46, 158, 17, 0, 41, 94, 0
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'uint8'}
+ },
+ 'inputTrueValue': {
+ 'data': [
+ 70.27151489257812, 89.99047088623047, -1.5351932048797607,
+ -83.77035522460938, 29.59670639038086, -37.10446548461914,
+ -6.663239002227783, -83.15333557128906, -90.47624206542969,
+ -45.470706939697266, 50.38861083984375, 46.510799407958984,
+ 47.503013610839844, -21.95842933654785, 42.89878463745117,
+ -76.8262710571289, 67.0030746459961, 40.09717559814453,
+ -29.081029891967773, -12.19106674194336, -10.8577880859375,
+ -23.302522659301758, 30.851404190063477, -58.82704544067383
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ },
+ 'inputFalseValue': {
+ 'data': [
+ 90.44255065917969, 66.7642593383789, -39.82423782348633,
+ -21.683168411254883, -67.3449478149414, -46.46003341674805,
+ -55.907073974609375, 65.5730209350586, 35.14354705810547,
+ 11.960981369018555, 76.65287780761719, 60.741416931152344,
+ -93.93305206298828, -30.397233963012695, 34.315250396728516,
+ 7.7088470458984375, -82.2353286743164, 91.12223052978516,
+ 22.937334060668945, 74.97810363769531, 18.877336502075195,
+ 62.31299591064453, 48.867103576660156, -75.41789245605469
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'where',
+ 'arguments': [
+ {'condition': 'inputCondition'}, {'trueValue': 'inputTrueValue'},
+ {'falseValue': 'inputFalseValue'}
+ ],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'whereOutput': {
+ 'data': [
+ 70.27151489257812, 66.7642593383789, -1.5351932048797607,
+ -21.683168411254883, 29.59670639038086, -37.10446548461914,
+ -6.663239002227783, 65.5730209350586, -90.47624206542969,
+ -45.470706939697266, 50.38861083984375, 46.510799407958984,
+ 47.503013610839844, -21.95842933654785, 42.89878463745117,
+ -76.8262710571289, 67.0030746459961, 40.09717559814453,
+ -29.081029891967773, -12.19106674194336, 18.877336502075195,
+ -23.302522659301758, 30.851404190063477, -75.41789245605469
+ ],
+ 'descriptor': {'dimensions': [2, 3, 4], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'where float32 4D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputCondition': {
+ 'data': [
+ 241, 0, 85, 0, 227, 51, 202, 0, 104, 227, 129, 129,
+ 175, 134, 130, 140, 103, 46, 158, 17, 0, 41, 94, 0
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint8'}
+ },
+ 'inputTrueValue': {
+ 'data': [
+ 70.27151489257812, 89.99047088623047, -1.5351932048797607,
+ -83.77035522460938, 29.59670639038086, -37.10446548461914,
+ -6.663239002227783, -83.15333557128906, -90.47624206542969,
+ -45.470706939697266, 50.38861083984375, 46.510799407958984,
+ 47.503013610839844, -21.95842933654785, 42.89878463745117,
+ -76.8262710571289, 67.0030746459961, 40.09717559814453,
+ -29.081029891967773, -12.19106674194336, -10.8577880859375,
+ -23.302522659301758, 30.851404190063477, -58.82704544067383
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ },
+ 'inputFalseValue': {
+ 'data': [
+ 90.44255065917969, 66.7642593383789, -39.82423782348633,
+ -21.683168411254883, -67.3449478149414, -46.46003341674805,
+ -55.907073974609375, 65.5730209350586, 35.14354705810547,
+ 11.960981369018555, 76.65287780761719, 60.741416931152344,
+ -93.93305206298828, -30.397233963012695, 34.315250396728516,
+ 7.7088470458984375, -82.2353286743164, 91.12223052978516,
+ 22.937334060668945, 74.97810363769531, 18.877336502075195,
+ 62.31299591064453, 48.867103576660156, -75.41789245605469
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'where',
+ 'arguments': [
+ {'condition': 'inputCondition'}, {'trueValue': 'inputTrueValue'},
+ {'falseValue': 'inputFalseValue'}
+ ],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'whereOutput': {
+ 'data': [
+ 70.27151489257812, 66.7642593383789, -1.5351932048797607,
+ -21.683168411254883, 29.59670639038086, -37.10446548461914,
+ -6.663239002227783, 65.5730209350586, -90.47624206542969,
+ -45.470706939697266, 50.38861083984375, 46.510799407958984,
+ 47.503013610839844, -21.95842933654785, 42.89878463745117,
+ -76.8262710571289, 67.0030746459961, 40.09717559814453,
+ -29.081029891967773, -12.19106674194336, 18.877336502075195,
+ -23.302522659301758, 30.851404190063477, -75.41789245605469
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'where float32 5D tensors',
+ 'graph': {
+ 'inputs': {
+ 'inputCondition': {
+ 'data': [
+ 241, 0, 85, 0, 227, 51, 202, 0, 104, 227, 129, 129,
+ 175, 134, 130, 140, 103, 46, 158, 17, 0, 41, 94, 0
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 2, 3], 'dataType': 'uint8'}
+ },
+ 'inputTrueValue': {
+ 'data': [
+ 70.27151489257812, 89.99047088623047, -1.5351932048797607,
+ -83.77035522460938, 29.59670639038086, -37.10446548461914,
+ -6.663239002227783, -83.15333557128906, -90.47624206542969,
+ -45.470706939697266, 50.38861083984375, 46.510799407958984,
+ 47.503013610839844, -21.95842933654785, 42.89878463745117,
+ -76.8262710571289, 67.0030746459961, 40.09717559814453,
+ -29.081029891967773, -12.19106674194336, -10.8577880859375,
+ -23.302522659301758, 30.851404190063477, -58.82704544067383
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 2, 3], 'dataType': 'float32'}
+ },
+ 'inputFalseValue': {
+ 'data': [
+ 90.44255065917969, 66.7642593383789, -39.82423782348633,
+ -21.683168411254883, -67.3449478149414, -46.46003341674805,
+ -55.907073974609375, 65.5730209350586, 35.14354705810547,
+ 11.960981369018555, 76.65287780761719, 60.741416931152344,
+ -93.93305206298828, -30.397233963012695, 34.315250396728516,
+ 7.7088470458984375, -82.2353286743164, 91.12223052978516,
+ 22.937334060668945, 74.97810363769531, 18.877336502075195,
+ 62.31299591064453, 48.867103576660156, -75.41789245605469
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'where',
+ 'arguments': [
+ {'condition': 'inputCondition'}, {'trueValue': 'inputTrueValue'},
+ {'falseValue': 'inputFalseValue'}
+ ],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'whereOutput': {
+ 'data': [
+ 70.27151489257812, 66.7642593383789, -1.5351932048797607,
+ -21.683168411254883, 29.59670639038086, -37.10446548461914,
+ -6.663239002227783, 65.5730209350586, -90.47624206542969,
+ -45.470706939697266, 50.38861083984375, 46.510799407958984,
+ 47.503013610839844, -21.95842933654785, 42.89878463745117,
+ -76.8262710571289, 67.0030746459961, 40.09717559814453,
+ -29.081029891967773, -12.19106674194336, 18.877336502075195,
+ -23.302522659301758, 30.851404190063477, -75.41789245605469
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'where float32 4D tensors only broadcast condition 0D to 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputCondition': {
+ 'data': [247],
+ 'descriptor': {'dimensions': [], 'dataType': 'uint8'}
+ },
+ 'inputTrueValue': {
+ 'data': [
+ 70.27151489257812, 89.99047088623047, -1.5351932048797607,
+ -83.77035522460938, 29.59670639038086, -37.10446548461914,
+ -6.663239002227783, -83.15333557128906, -90.47624206542969,
+ -45.470706939697266, 50.38861083984375, 46.510799407958984,
+ 47.503013610839844, -21.95842933654785, 42.89878463745117,
+ -76.8262710571289, 67.0030746459961, 40.09717559814453,
+ -29.081029891967773, -12.19106674194336, -10.8577880859375,
+ -23.302522659301758, 30.851404190063477, -58.82704544067383
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ },
+ 'inputFalseValue': {
+ 'data': [
+ 90.44255065917969, 66.7642593383789, -39.82423782348633,
+ -21.683168411254883, -67.3449478149414, -46.46003341674805,
+ -55.907073974609375, 65.5730209350586, 35.14354705810547,
+ 11.960981369018555, 76.65287780761719, 60.741416931152344,
+ -93.93305206298828, -30.397233963012695, 34.315250396728516,
+ 7.7088470458984375, -82.2353286743164, 91.12223052978516,
+ 22.937334060668945, 74.97810363769531, 18.877336502075195,
+ 62.31299591064453, 48.867103576660156, -75.41789245605469
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'where',
+ 'arguments': [
+ {'condition': 'inputCondition'}, {'trueValue': 'inputTrueValue'},
+ {'falseValue': 'inputFalseValue'}
+ ],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'whereOutput': {
+ 'data': [
+ 70.27151489257812, 89.99047088623047, -1.5351932048797607,
+ -83.77035522460938, 29.59670639038086, -37.10446548461914,
+ -6.663239002227783, -83.15333557128906, -90.47624206542969,
+ -45.470706939697266, 50.38861083984375, 46.510799407958984,
+ 47.503013610839844, -21.95842933654785, 42.89878463745117,
+ -76.8262710571289, 67.0030746459961, 40.09717559814453,
+ -29.081029891967773, -12.19106674194336, -10.8577880859375,
+ -23.302522659301758, 30.851404190063477, -58.82704544067383
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'where float32 4D tensors only broadcast condition 1D to 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputCondition': {
+ 'data': [253, 222, 0],
+ 'descriptor': {'dimensions': [3], 'dataType': 'uint8'}
+ },
+ 'inputTrueValue': {
+ 'data': [
+ 70.27151489257812, 89.99047088623047, -1.5351932048797607,
+ -83.77035522460938, 29.59670639038086, -37.10446548461914,
+ -6.663239002227783, -83.15333557128906, -90.47624206542969,
+ -45.470706939697266, 50.38861083984375, 46.510799407958984,
+ 47.503013610839844, -21.95842933654785, 42.89878463745117,
+ -76.8262710571289, 67.0030746459961, 40.09717559814453,
+ -29.081029891967773, -12.19106674194336, -10.8577880859375,
+ -23.302522659301758, 30.851404190063477, -58.82704544067383
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ },
+ 'inputFalseValue': {
+ 'data': [
+ 90.44255065917969, 66.7642593383789, -39.82423782348633,
+ -21.683168411254883, -67.3449478149414, -46.46003341674805,
+ -55.907073974609375, 65.5730209350586, 35.14354705810547,
+ 11.960981369018555, 76.65287780761719, 60.741416931152344,
+ -93.93305206298828, -30.397233963012695, 34.315250396728516,
+ 7.7088470458984375, -82.2353286743164, 91.12223052978516,
+ 22.937334060668945, 74.97810363769531, 18.877336502075195,
+ 62.31299591064453, 48.867103576660156, -75.41789245605469
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'where',
+ 'arguments': [
+ {'condition': 'inputCondition'}, {'trueValue': 'inputTrueValue'},
+ {'falseValue': 'inputFalseValue'}
+ ],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'whereOutput': {
+ 'data': [
+ 70.27151489257812, 89.99047088623047, -39.82423782348633,
+ -83.77035522460938, 29.59670639038086, -46.46003341674805,
+ -6.663239002227783, -83.15333557128906, 35.14354705810547,
+ -45.470706939697266, 50.38861083984375, 60.741416931152344,
+ 47.503013610839844, -21.95842933654785, 34.315250396728516,
+ -76.8262710571289, 67.0030746459961, 91.12223052978516,
+ -29.081029891967773, -12.19106674194336, 18.877336502075195,
+ -23.302522659301758, 30.851404190063477, -75.41789245605469
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'where float32 4D tensors only broadcast condition 2D to 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputCondition': {
+ 'data': [103, 0],
+ 'descriptor': {'dimensions': [2, 1], 'dataType': 'uint8'}
+ },
+ 'inputTrueValue': {
+ 'data': [
+ 70.27151489257812, 89.99047088623047, -1.5351932048797607,
+ -83.77035522460938, 29.59670639038086, -37.10446548461914,
+ -6.663239002227783, -83.15333557128906, -90.47624206542969,
+ -45.470706939697266, 50.38861083984375, 46.510799407958984,
+ 47.503013610839844, -21.95842933654785, 42.89878463745117,
+ -76.8262710571289, 67.0030746459961, 40.09717559814453,
+ -29.081029891967773, -12.19106674194336, -10.8577880859375,
+ -23.302522659301758, 30.851404190063477, -58.82704544067383
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ },
+ 'inputFalseValue': {
+ 'data': [
+ 90.44255065917969, 66.7642593383789, -39.82423782348633,
+ -21.683168411254883, -67.3449478149414, -46.46003341674805,
+ -55.907073974609375, 65.5730209350586, 35.14354705810547,
+ 11.960981369018555, 76.65287780761719, 60.741416931152344,
+ -93.93305206298828, -30.397233963012695, 34.315250396728516,
+ 7.7088470458984375, -82.2353286743164, 91.12223052978516,
+ 22.937334060668945, 74.97810363769531, 18.877336502075195,
+ 62.31299591064453, 48.867103576660156, -75.41789245605469
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'where',
+ 'arguments': [
+ {'condition': 'inputCondition'}, {'trueValue': 'inputTrueValue'},
+ {'falseValue': 'inputFalseValue'}
+ ],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'whereOutput': {
+ 'data': [
+ 70.27151489257812, 89.99047088623047, -1.5351932048797607,
+ -21.683168411254883, -67.3449478149414, -46.46003341674805,
+ -6.663239002227783, -83.15333557128906, -90.47624206542969,
+ 11.960981369018555, 76.65287780761719, 60.741416931152344,
+ 47.503013610839844, -21.95842933654785, 42.89878463745117,
+ 7.7088470458984375, -82.2353286743164, 91.12223052978516,
+ -29.081029891967773, -12.19106674194336, -10.8577880859375,
+ 62.31299591064453, 48.867103576660156, -75.41789245605469
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'where float32 4D tensors only broadcast condition 3D to 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputCondition': {
+ 'data': [235, 0, 93, 213, 0, 117],
+ 'descriptor': {'dimensions': [1, 2, 3], 'dataType': 'uint8'}
+ },
+ 'inputTrueValue': {
+ 'data': [
+ 70.27151489257812, 89.99047088623047, -1.5351932048797607,
+ -83.77035522460938, 29.59670639038086, -37.10446548461914,
+ -6.663239002227783, -83.15333557128906, -90.47624206542969,
+ -45.470706939697266, 50.38861083984375, 46.510799407958984,
+ 47.503013610839844, -21.95842933654785, 42.89878463745117,
+ -76.8262710571289, 67.0030746459961, 40.09717559814453,
+ -29.081029891967773, -12.19106674194336, -10.8577880859375,
+ -23.302522659301758, 30.851404190063477, -58.82704544067383
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ },
+ 'inputFalseValue': {
+ 'data': [
+ 90.44255065917969, 66.7642593383789, -39.82423782348633,
+ -21.683168411254883, -67.3449478149414, -46.46003341674805,
+ -55.907073974609375, 65.5730209350586, 35.14354705810547,
+ 11.960981369018555, 76.65287780761719, 60.741416931152344,
+ -93.93305206298828, -30.397233963012695, 34.315250396728516,
+ 7.7088470458984375, -82.2353286743164, 91.12223052978516,
+ 22.937334060668945, 74.97810363769531, 18.877336502075195,
+ 62.31299591064453, 48.867103576660156, -75.41789245605469
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'where',
+ 'arguments': [
+ {'condition': 'inputCondition'}, {'trueValue': 'inputTrueValue'},
+ {'falseValue': 'inputFalseValue'}
+ ],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'whereOutput': {
+ 'data': [
+ 70.27151489257812, 66.7642593383789, -1.5351932048797607,
+ -83.77035522460938, -67.3449478149414, -37.10446548461914,
+ -6.663239002227783, 65.5730209350586, -90.47624206542969,
+ -45.470706939697266, 76.65287780761719, 46.510799407958984,
+ 47.503013610839844, -30.397233963012695, 42.89878463745117,
+ -76.8262710571289, -82.2353286743164, 40.09717559814453,
+ -29.081029891967773, 74.97810363769531, -10.8577880859375,
+ -23.302522659301758, 48.867103576660156, -58.82704544067383
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'where float32 4D tensors only broadcast condition 4D to 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputCondition': {
+ 'data': [0, 165, 0, 90],
+ 'descriptor': {'dimensions': [1, 2, 2, 1], 'dataType': 'uint8'}
+ },
+ 'inputTrueValue': {
+ 'data': [
+ 70.27151489257812, 89.99047088623047, -1.5351932048797607,
+ -83.77035522460938, 29.59670639038086, -37.10446548461914,
+ -6.663239002227783, -83.15333557128906, -90.47624206542969,
+ -45.470706939697266, 50.38861083984375, 46.510799407958984,
+ 47.503013610839844, -21.95842933654785, 42.89878463745117,
+ -76.8262710571289, 67.0030746459961, 40.09717559814453,
+ -29.081029891967773, -12.19106674194336, -10.8577880859375,
+ -23.302522659301758, 30.851404190063477, -58.82704544067383
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ },
+ 'inputFalseValue': {
+ 'data': [
+ 90.44255065917969, 66.7642593383789, -39.82423782348633,
+ -21.683168411254883, -67.3449478149414, -46.46003341674805,
+ -55.907073974609375, 65.5730209350586, 35.14354705810547,
+ 11.960981369018555, 76.65287780761719, 60.741416931152344,
+ -93.93305206298828, -30.397233963012695, 34.315250396728516,
+ 7.7088470458984375, -82.2353286743164, 91.12223052978516,
+ 22.937334060668945, 74.97810363769531, 18.877336502075195,
+ 62.31299591064453, 48.867103576660156, -75.41789245605469
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'where',
+ 'arguments': [
+ {'condition': 'inputCondition'}, {'trueValue': 'inputTrueValue'},
+ {'falseValue': 'inputFalseValue'}
+ ],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'whereOutput': {
+ 'data': [
+ 90.44255065917969, 66.7642593383789, -39.82423782348633,
+ -83.77035522460938, 29.59670639038086, -37.10446548461914,
+ -55.907073974609375, 65.5730209350586, 35.14354705810547,
+ -45.470706939697266, 50.38861083984375, 46.510799407958984,
+ -93.93305206298828, -30.397233963012695, 34.315250396728516,
+ -76.8262710571289, 67.0030746459961, 40.09717559814453,
+ 22.937334060668945, 74.97810363769531, 18.877336502075195,
+ -23.302522659301758, 30.851404190063477, -58.82704544067383
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'where float32 4D tensors only broadcast trueValues 2D to 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputCondition': {
+ 'data': [
+ 241, 0, 85, 0, 227, 51, 202, 0, 104, 227, 129, 129,
+ 175, 134, 130, 140, 103, 46, 158, 17, 0, 41, 94, 0
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint8'}
+ },
+ 'inputTrueValue': {
+ 'data': [
+ 38.77214050292969, 18.20477294921875, -11.542049407958984,
+ -82.74693298339844, -18.61202621459961, -75.77534484863281
+ ],
+ 'descriptor': {'dimensions': [2, 3], 'dataType': 'float32'}
+ },
+ 'inputFalseValue': {
+ 'data': [
+ 90.44255065917969, 66.7642593383789, -39.82423782348633,
+ -21.683168411254883, -67.3449478149414, -46.46003341674805,
+ -55.907073974609375, 65.5730209350586, 35.14354705810547,
+ 11.960981369018555, 76.65287780761719, 60.741416931152344,
+ -93.93305206298828, -30.397233963012695, 34.315250396728516,
+ 7.7088470458984375, -82.2353286743164, 91.12223052978516,
+ 22.937334060668945, 74.97810363769531, 18.877336502075195,
+ 62.31299591064453, 48.867103576660156, -75.41789245605469
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'where',
+ 'arguments': [
+ {'condition': 'inputCondition'}, {'trueValue': 'inputTrueValue'},
+ {'falseValue': 'inputFalseValue'}
+ ],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'whereOutput': {
+ 'data': [
+ 38.77214050292969, 66.7642593383789, -11.542049407958984,
+ -21.683168411254883, -18.61202621459961, -75.77534484863281,
+ 38.77214050292969, 65.5730209350586, -11.542049407958984,
+ -82.74693298339844, -18.61202621459961, -75.77534484863281,
+ 38.77214050292969, 18.20477294921875, -11.542049407958984,
+ -82.74693298339844, -18.61202621459961, -75.77534484863281,
+ 38.77214050292969, 18.20477294921875, 18.877336502075195,
+ -82.74693298339844, -18.61202621459961, -75.41789245605469
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'where float32 4D tensors only broadcast trueValues 4D to 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputCondition': {
+ 'data': [
+ 241, 0, 85, 0, 227, 51, 202, 0, 104, 227, 129, 129,
+ 175, 134, 130, 140, 103, 46, 158, 17, 0, 41, 94, 0
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint8'}
+ },
+ 'inputTrueValue': {
+ 'data': [
+ -29.164173126220703, 32.200286865234375, -6.146966457366943,
+ -24.822790145874023
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1, 1], 'dataType': 'float32'}
+ },
+ 'inputFalseValue': {
+ 'data': [
+ 90.44255065917969, 66.7642593383789, -39.82423782348633,
+ -21.683168411254883, -67.3449478149414, -46.46003341674805,
+ -55.907073974609375, 65.5730209350586, 35.14354705810547,
+ 11.960981369018555, 76.65287780761719, 60.741416931152344,
+ -93.93305206298828, -30.397233963012695, 34.315250396728516,
+ 7.7088470458984375, -82.2353286743164, 91.12223052978516,
+ 22.937334060668945, 74.97810363769531, 18.877336502075195,
+ 62.31299591064453, 48.867103576660156, -75.41789245605469
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'where',
+ 'arguments': [
+ {'condition': 'inputCondition'}, {'trueValue': 'inputTrueValue'},
+ {'falseValue': 'inputFalseValue'}
+ ],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'whereOutput': {
+ 'data': [
+ -29.164173126220703, 66.7642593383789, -29.164173126220703,
+ -21.683168411254883, -29.164173126220703, -29.164173126220703,
+ 32.200286865234375, 65.5730209350586, 32.200286865234375,
+ 32.200286865234375, 32.200286865234375, 32.200286865234375,
+ -6.146966457366943, -6.146966457366943, -6.146966457366943,
+ -6.146966457366943, -6.146966457366943, -6.146966457366943,
+ -24.822790145874023, -24.822790145874023, 18.877336502075195,
+ -24.822790145874023, -24.822790145874023, -75.41789245605469
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'where float32 4D tensors only broadcast falseValues 3D to 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputCondition': {
+ 'data': [
+ 241, 0, 85, 0, 227, 51, 202, 0, 104, 227, 129, 129,
+ 175, 134, 130, 140, 103, 46, 158, 17, 0, 41, 94, 0
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint8'}
+ },
+ 'inputTrueValue': {
+ 'data': [
+ 70.27151489257812, 89.99047088623047, -1.5351932048797607,
+ -83.77035522460938, 29.59670639038086, -37.10446548461914,
+ -6.663239002227783, -83.15333557128906, -90.47624206542969,
+ -45.470706939697266, 50.38861083984375, 46.510799407958984,
+ 47.503013610839844, -21.95842933654785, 42.89878463745117,
+ -76.8262710571289, 67.0030746459961, 40.09717559814453,
+ -29.081029891967773, -12.19106674194336, -10.8577880859375,
+ -23.302522659301758, 30.851404190063477, -58.82704544067383
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ },
+ 'inputFalseValue': {
+ 'data': [
+ -86.59848022460938, -67.72773742675781, -30.731334686279297,
+ -93.49223327636719
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'where',
+ 'arguments': [
+ {'condition': 'inputCondition'}, {'trueValue': 'inputTrueValue'},
+ {'falseValue': 'inputFalseValue'}
+ ],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'whereOutput': {
+ 'data': [
+ 70.27151489257812, -86.59848022460938, -1.5351932048797607,
+ -67.72773742675781, 29.59670639038086, -37.10446548461914,
+ -6.663239002227783, -30.731334686279297, -90.47624206542969,
+ -45.470706939697266, 50.38861083984375, 46.510799407958984,
+ 47.503013610839844, -21.95842933654785, 42.89878463745117,
+ -76.8262710571289, 67.0030746459961, 40.09717559814453,
+ -29.081029891967773, -12.19106674194336, -30.731334686279297,
+ -23.302522659301758, 30.851404190063477, -93.49223327636719
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'where float32 4D tensors only broadcast falseValues 4D to 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputCondition': {
+ 'data': [
+ 241, 0, 85, 0, 227, 51, 202, 0, 104, 227, 129, 129,
+ 175, 134, 130, 140, 103, 46, 158, 17, 0, 41, 94, 0
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'uint8'}
+ },
+ 'inputTrueValue': {
+ 'data': [
+ 70.27151489257812, 89.99047088623047, -1.5351932048797607,
+ -83.77035522460938, 29.59670639038086, -37.10446548461914,
+ -6.663239002227783, -83.15333557128906, -90.47624206542969,
+ -45.470706939697266, 50.38861083984375, 46.510799407958984,
+ 47.503013610839844, -21.95842933654785, 42.89878463745117,
+ -76.8262710571289, 67.0030746459961, 40.09717559814453,
+ -29.081029891967773, -12.19106674194336, -10.8577880859375,
+ -23.302522659301758, 30.851404190063477, -58.82704544067383
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ },
+ 'inputFalseValue': {
+ 'data': [
+ 17.777414321899414, -1.9890096187591553, -57.28207015991211,
+ -80.01390838623047, 66.87323760986328, -31.328258514404297
+ ],
+ 'descriptor': {'dimensions': [1, 2, 1, 3], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'where',
+ 'arguments': [
+ {'condition': 'inputCondition'}, {'trueValue': 'inputTrueValue'},
+ {'falseValue': 'inputFalseValue'}
+ ],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'whereOutput': {
+ 'data': [
+ 70.27151489257812, -1.9890096187591553, -1.5351932048797607,
+ 17.777414321899414, 29.59670639038086, -37.10446548461914,
+ -6.663239002227783, 66.87323760986328, -90.47624206542969,
+ -45.470706939697266, 50.38861083984375, 46.510799407958984,
+ 47.503013610839844, -21.95842933654785, 42.89878463745117,
+ -76.8262710571289, 67.0030746459961, 40.09717559814453,
+ -29.081029891967773, -12.19106674194336, -31.328258514404297,
+ -23.302522659301758, 30.851404190063477, -31.328258514404297
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ },
+ {
+ 'name': 'where float32 4D tensors all broadcast 4D',
+ 'graph': {
+ 'inputs': {
+ 'inputCondition': {
+ 'data': [58, 217],
+ 'descriptor': {'dimensions': [2, 1, 1, 1], 'dataType': 'uint8'}
+ },
+ 'inputTrueValue': {
+ 'data': [
+ 38.77214050292969, 18.20477294921875, -11.542049407958984,
+ -82.74693298339844, -18.61202621459961, -75.77534484863281
+ ],
+ 'descriptor': {'dimensions': [2, 3], 'dataType': 'float32'}
+ },
+ 'inputFalseValue': {
+ 'data': [
+ -86.59848022460938, -67.72773742675781, -30.731334686279297,
+ -93.49223327636719
+ ],
+ 'descriptor': {'dimensions': [2, 2, 1], 'dataType': 'float32'}
+ }
+ },
+ 'operators': [{
+ 'name': 'where',
+ 'arguments': [
+ {'condition': 'inputCondition'}, {'trueValue': 'inputTrueValue'},
+ {'falseValue': 'inputFalseValue'}
+ ],
+ 'outputs': 'output'
+ }],
+ 'expectedOutputs': {
+ 'whereOutput': {
+ 'data': [
+ 38.77214050292969, 18.20477294921875, -11.542049407958984,
+ -82.74693298339844, -18.61202621459961, -75.77534484863281,
+ 38.77214050292969, 18.20477294921875, -11.542049407958984,
+ -82.74693298339844, -18.61202621459961, -75.77534484863281,
+ 38.77214050292969, 18.20477294921875, -11.542049407958984,
+ -82.74693298339844, -18.61202621459961, -75.77534484863281,
+ 38.77214050292969, 18.20477294921875, -11.542049407958984,
+ -82.74693298339844, -18.61202621459961, -75.77534484863281
+ ],
+ 'descriptor': {'dimensions': [2, 2, 2, 3], 'dataType': 'float32'}
+ }
+ }
+ }
+ }
+];
+
+if (navigator.ml) {
+ whereTests.forEach((test) => {
+ webnn_conformance_test(
+ buildGraphAndCompute, getWherePrecisionTolerance, test);
+ });
+} else {
+ test(() => assert_implements(navigator.ml, 'missing navigator.ml'));
+}
diff --git a/tests/wpt/tests/webnn/idlharness.https.any.js b/tests/wpt/tests/webnn/idlharness.https.any.js
index c2f579a2b4f..6c95e534a4c 100644
--- a/tests/wpt/tests/webnn/idlharness.https.any.js
+++ b/tests/wpt/tests/webnn/idlharness.https.any.js
@@ -4,7 +4,7 @@
// META: script=./resources/utils.js
// META: timeout=long
-// https://webmachinelearning.github.io/webnn/
+// https://www.w3.org/TR/webnn/
'use strict';
@@ -22,7 +22,6 @@ idl_test(
ML: ['navigator.ml'],
MLContext: ['context'],
MLOperand: ['input', 'constant', 'output'],
- MLActivation: ['relu'],
MLGraphBuilder: ['builder'],
MLGraph: ['graph']
});
@@ -35,9 +34,6 @@ idl_test(
{dataType: 'float32', dimensions: [2, 3]},
new Float32Array(2 * 3).fill(1));
- // Create an activation which won't be used in the graph.
- self.relu = builder.relu();
-
self.output = builder.add(input, constant);
self.graph = await builder.build({output});
diff --git a/tests/wpt/tests/webnn/resources/test_data/abs.json b/tests/wpt/tests/webnn/resources/test_data/abs.json
deleted file mode 100644
index d665da6bb45..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/abs.json
+++ /dev/null
@@ -1,401 +0,0 @@
-{
- "tests": [
- {
- "name": "abs float32 1D constant tensor",
- "inputs": {
- "x": {
- "shape": [24],
- "data": [
- 49.8372426667043,
- 82.0929095991747,
- 3.1989055476550305,
- 85.20904780506325,
- 88.94609443980977,
- -91.0352208007506,
- 31.448491185882546,
- -29.311109216503752,
- -92.44773429213686,
- -15.520709757433963,
- 80.91279287806162,
- -38.209706112466705,
- 53.064761629102065,
- 99.6537077669756,
- -21.28504881273652,
- 90.019831849408,
- 18.324518254754622,
- -33.06915295290382,
- 30.097660827399608,
- -74.21503493794903,
- 95.60974816793694,
- 6.61428748549389,
- 31.283208179548808,
- -53.20605974670913
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- 49.837242126464844,
- 82.09291076660156,
- 3.1989054679870605,
- 85.20904541015625,
- 88.94609069824219,
- 91.03521728515625,
- 31.4484920501709,
- 29.31110954284668,
- 92.4477310180664,
- 15.520709991455078,
- 80.91279602050781,
- 38.2097053527832,
- 53.064762115478516,
- 99.6537094116211,
- 21.285049438476562,
- 90.01982879638672,
- 18.32451820373535,
- 33.06915283203125,
- 30.097660064697266,
- 74.21503448486328,
- 95.60974884033203,
- 6.614287376403809,
- 31.2832088470459,
- 53.206058502197266
- ],
- "type": "float32"
- }
- },
- {
- "name": "abs float32 1D tensor",
- "inputs": {
- "x": {
- "shape": [24],
- "data": [
- 49.8372426667043,
- 82.0929095991747,
- 3.1989055476550305,
- 85.20904780506325,
- 88.94609443980977,
- -91.0352208007506,
- 31.448491185882546,
- -29.311109216503752,
- -92.44773429213686,
- -15.520709757433963,
- 80.91279287806162,
- -38.209706112466705,
- 53.064761629102065,
- 99.6537077669756,
- -21.28504881273652,
- 90.019831849408,
- 18.324518254754622,
- -33.06915295290382,
- 30.097660827399608,
- -74.21503493794903,
- 95.60974816793694,
- 6.61428748549389,
- 31.283208179548808,
- -53.20605974670913
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- 49.837242126464844,
- 82.09291076660156,
- 3.1989054679870605,
- 85.20904541015625,
- 88.94609069824219,
- 91.03521728515625,
- 31.4484920501709,
- 29.31110954284668,
- 92.4477310180664,
- 15.520709991455078,
- 80.91279602050781,
- 38.2097053527832,
- 53.064762115478516,
- 99.6537094116211,
- 21.285049438476562,
- 90.01982879638672,
- 18.32451820373535,
- 33.06915283203125,
- 30.097660064697266,
- 74.21503448486328,
- 95.60974884033203,
- 6.614287376403809,
- 31.2832088470459,
- 53.206058502197266
- ],
- "type": "float32"
- }
- },
- {
- "name": "abs float32 2D tensor",
- "inputs": {
- "x": {
- "shape": [4, 6],
- "data": [
- 49.8372426667043,
- 82.0929095991747,
- 3.1989055476550305,
- 85.20904780506325,
- 88.94609443980977,
- -91.0352208007506,
- 31.448491185882546,
- -29.311109216503752,
- -92.44773429213686,
- -15.520709757433963,
- 80.91279287806162,
- -38.209706112466705,
- 53.064761629102065,
- 99.6537077669756,
- -21.28504881273652,
- 90.019831849408,
- 18.324518254754622,
- -33.06915295290382,
- 30.097660827399608,
- -74.21503493794903,
- 95.60974816793694,
- 6.61428748549389,
- 31.283208179548808,
- -53.20605974670913
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- 49.837242126464844,
- 82.09291076660156,
- 3.1989054679870605,
- 85.20904541015625,
- 88.94609069824219,
- 91.03521728515625,
- 31.4484920501709,
- 29.31110954284668,
- 92.4477310180664,
- 15.520709991455078,
- 80.91279602050781,
- 38.2097053527832,
- 53.064762115478516,
- 99.6537094116211,
- 21.285049438476562,
- 90.01982879638672,
- 18.32451820373535,
- 33.06915283203125,
- 30.097660064697266,
- 74.21503448486328,
- 95.60974884033203,
- 6.614287376403809,
- 31.2832088470459,
- 53.206058502197266
- ],
- "type": "float32"
- }
- },
- {
- "name": "abs float32 3D tensor",
- "inputs": {
- "x": {
- "shape": [2, 3, 4],
- "data": [
- 49.8372426667043,
- 82.0929095991747,
- 3.1989055476550305,
- 85.20904780506325,
- 88.94609443980977,
- -91.0352208007506,
- 31.448491185882546,
- -29.311109216503752,
- -92.44773429213686,
- -15.520709757433963,
- 80.91279287806162,
- -38.209706112466705,
- 53.064761629102065,
- 99.6537077669756,
- -21.28504881273652,
- 90.019831849408,
- 18.324518254754622,
- -33.06915295290382,
- 30.097660827399608,
- -74.21503493794903,
- 95.60974816793694,
- 6.61428748549389,
- 31.283208179548808,
- -53.20605974670913
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 3, 4],
- "data": [
- 49.837242126464844,
- 82.09291076660156,
- 3.1989054679870605,
- 85.20904541015625,
- 88.94609069824219,
- 91.03521728515625,
- 31.4484920501709,
- 29.31110954284668,
- 92.4477310180664,
- 15.520709991455078,
- 80.91279602050781,
- 38.2097053527832,
- 53.064762115478516,
- 99.6537094116211,
- 21.285049438476562,
- 90.01982879638672,
- 18.32451820373535,
- 33.06915283203125,
- 30.097660064697266,
- 74.21503448486328,
- 95.60974884033203,
- 6.614287376403809,
- 31.2832088470459,
- 53.206058502197266
- ],
- "type": "float32"
- }
- },
- {
- "name": "abs float32 4D tensor",
- "inputs": {
- "x": {
- "shape": [2, 2, 2, 3],
- "data": [
- 49.8372426667043,
- 82.0929095991747,
- 3.1989055476550305,
- 85.20904780506325,
- 88.94609443980977,
- -91.0352208007506,
- 31.448491185882546,
- -29.311109216503752,
- -92.44773429213686,
- -15.520709757433963,
- 80.91279287806162,
- -38.209706112466705,
- 53.064761629102065,
- 99.6537077669756,
- -21.28504881273652,
- 90.019831849408,
- 18.324518254754622,
- -33.06915295290382,
- 30.097660827399608,
- -74.21503493794903,
- 95.60974816793694,
- 6.61428748549389,
- 31.283208179548808,
- -53.20605974670913
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 49.837242126464844,
- 82.09291076660156,
- 3.1989054679870605,
- 85.20904541015625,
- 88.94609069824219,
- 91.03521728515625,
- 31.4484920501709,
- 29.31110954284668,
- 92.4477310180664,
- 15.520709991455078,
- 80.91279602050781,
- 38.2097053527832,
- 53.064762115478516,
- 99.6537094116211,
- 21.285049438476562,
- 90.01982879638672,
- 18.32451820373535,
- 33.06915283203125,
- 30.097660064697266,
- 74.21503448486328,
- 95.60974884033203,
- 6.614287376403809,
- 31.2832088470459,
- 53.206058502197266
- ],
- "type": "float32"
- }
- },
- {
- "name": "abs float32 5D tensor",
- "inputs": {
- "x": {
- "shape": [2, 1, 4, 1, 3],
- "data": [
- 49.8372426667043,
- 82.0929095991747,
- 3.1989055476550305,
- 85.20904780506325,
- 88.94609443980977,
- -91.0352208007506,
- 31.448491185882546,
- -29.311109216503752,
- -92.44773429213686,
- -15.520709757433963,
- 80.91279287806162,
- -38.209706112466705,
- 53.064761629102065,
- 99.6537077669756,
- -21.28504881273652,
- 90.019831849408,
- 18.324518254754622,
- -33.06915295290382,
- 30.097660827399608,
- -74.21503493794903,
- 95.60974816793694,
- 6.61428748549389,
- 31.283208179548808,
- -53.20605974670913
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 1, 4, 1, 3],
- "data": [
- 49.837242126464844,
- 82.09291076660156,
- 3.1989054679870605,
- 85.20904541015625,
- 88.94609069824219,
- 91.03521728515625,
- 31.4484920501709,
- 29.31110954284668,
- 92.4477310180664,
- 15.520709991455078,
- 80.91279602050781,
- 38.2097053527832,
- 53.064762115478516,
- 99.6537094116211,
- 21.285049438476562,
- 90.01982879638672,
- 18.32451820373535,
- 33.06915283203125,
- 30.097660064697266,
- 74.21503448486328,
- 95.60974884033203,
- 6.614287376403809,
- 31.2832088470459,
- 53.206058502197266
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/add.json b/tests/wpt/tests/webnn/resources/test_data/add.json
deleted file mode 100644
index 804ad5e345d..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/add.json
+++ /dev/null
@@ -1,928 +0,0 @@
-{
- "tests": [
- {
- "name": "add float32 1D constant tensors",
- "inputs": {
- "a": {
- "shape": [24],
- "data": [
- -43.33331702607182,
- -67.89795492110251,
- 26.462739729601154,
- 36.74276245870831,
- -65.1773897660934,
- -87.70664817075895,
- 65.2788147914111,
- -74.05226258410215,
- -13.82780997496917,
- 6.9814867885681196,
- 99.8375201051771,
- 55.80233785150233,
- -75.57196245651672,
- 11.499508337009786,
- 17.110109711325364,
- 95.81167418402984,
- 57.447496690075326,
- -57.17587415294769,
- 27.71905326607728,
- -18.21920899392113,
- 52.65309891626177,
- -69.9945556346263,
- 39.82165678962866,
- -29.986529326327684
- ],
- "type": "float32",
- "constant": true
- },
- "b": {
- "shape": [24],
- "data": [
- -59.74972612329861,
- -44.814940102501396,
- -87.93879800134108,
- 1.884336371742009,
- 84.89464239219592,
- 47.55365421202336,
- 85.64292769131902,
- 43.02861451385175,
- -60.25821191056049,
- 15.606167000302435,
- 70.60614780317951,
- -7.454866177806224,
- -30.206895875534997,
- -97.69825508598404,
- -0.009843301412843175,
- -77.6796011606304,
- 30.19668513874859,
- -59.19006932092632,
- 89.35886332586315,
- 28.679809244991418,
- -29.72130634585804,
- -90.63522901925083,
- 28.281854673339666,
- 27.66254066077893
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- -103.08303833007812,
- -112.71289825439453,
- -61.47605895996094,
- 38.627098083496094,
- 19.717254638671875,
- -40.15299606323242,
- 150.9217529296875,
- -31.02364730834961,
- -74.08602142333984,
- 22.58765411376953,
- 170.44366455078125,
- 48.34747314453125,
- -105.77885437011719,
- -86.19874572753906,
- 17.100265502929688,
- 18.13207244873047,
- 87.64418029785156,
- -116.3659439086914,
- 117.07791900634766,
- 10.460599899291992,
- 22.931793212890625,
- -160.62979125976562,
- 68.10350799560547,
- -2.3239879608154297
- ],
- "type": "float32"
- }
- },
- {
- "name": "add float32 1D tensors",
- "inputs": {
- "a": {
- "shape": [24],
- "data": [
- -43.33331702607182,
- -67.89795492110251,
- 26.462739729601154,
- 36.74276245870831,
- -65.1773897660934,
- -87.70664817075895,
- 65.2788147914111,
- -74.05226258410215,
- -13.82780997496917,
- 6.9814867885681196,
- 99.8375201051771,
- 55.80233785150233,
- -75.57196245651672,
- 11.499508337009786,
- 17.110109711325364,
- 95.81167418402984,
- 57.447496690075326,
- -57.17587415294769,
- 27.71905326607728,
- -18.21920899392113,
- 52.65309891626177,
- -69.9945556346263,
- 39.82165678962866,
- -29.986529326327684
- ],
- "type": "float32"
- },
- "b": {
- "shape": [24],
- "data": [
- -59.74972612329861,
- -44.814940102501396,
- -87.93879800134108,
- 1.884336371742009,
- 84.89464239219592,
- 47.55365421202336,
- 85.64292769131902,
- 43.02861451385175,
- -60.25821191056049,
- 15.606167000302435,
- 70.60614780317951,
- -7.454866177806224,
- -30.206895875534997,
- -97.69825508598404,
- -0.009843301412843175,
- -77.6796011606304,
- 30.19668513874859,
- -59.19006932092632,
- 89.35886332586315,
- 28.679809244991418,
- -29.72130634585804,
- -90.63522901925083,
- 28.281854673339666,
- 27.66254066077893
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- -103.08303833007812,
- -112.71289825439453,
- -61.47605895996094,
- 38.627098083496094,
- 19.717254638671875,
- -40.15299606323242,
- 150.9217529296875,
- -31.02364730834961,
- -74.08602142333984,
- 22.58765411376953,
- 170.44366455078125,
- 48.34747314453125,
- -105.77885437011719,
- -86.19874572753906,
- 17.100265502929688,
- 18.13207244873047,
- 87.64418029785156,
- -116.3659439086914,
- 117.07791900634766,
- 10.460599899291992,
- 22.931793212890625,
- -160.62979125976562,
- 68.10350799560547,
- -2.3239879608154297
- ],
- "type": "float32"
- }
- },
- {
- "name": "add float32 2D tensors",
- "inputs": {
- "a": {
- "shape": [4, 6],
- "data": [
- -43.33331702607182,
- -67.89795492110251,
- 26.462739729601154,
- 36.74276245870831,
- -65.1773897660934,
- -87.70664817075895,
- 65.2788147914111,
- -74.05226258410215,
- -13.82780997496917,
- 6.9814867885681196,
- 99.8375201051771,
- 55.80233785150233,
- -75.57196245651672,
- 11.499508337009786,
- 17.110109711325364,
- 95.81167418402984,
- 57.447496690075326,
- -57.17587415294769,
- 27.71905326607728,
- -18.21920899392113,
- 52.65309891626177,
- -69.9945556346263,
- 39.82165678962866,
- -29.986529326327684
- ],
- "type": "float32"
- },
- "b": {
- "shape": [4, 6],
- "data": [
- -59.74972612329861,
- -44.814940102501396,
- -87.93879800134108,
- 1.884336371742009,
- 84.89464239219592,
- 47.55365421202336,
- 85.64292769131902,
- 43.02861451385175,
- -60.25821191056049,
- 15.606167000302435,
- 70.60614780317951,
- -7.454866177806224,
- -30.206895875534997,
- -97.69825508598404,
- -0.009843301412843175,
- -77.6796011606304,
- 30.19668513874859,
- -59.19006932092632,
- 89.35886332586315,
- 28.679809244991418,
- -29.72130634585804,
- -90.63522901925083,
- 28.281854673339666,
- 27.66254066077893
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- -103.08303833007812,
- -112.71289825439453,
- -61.47605895996094,
- 38.627098083496094,
- 19.717254638671875,
- -40.15299606323242,
- 150.9217529296875,
- -31.02364730834961,
- -74.08602142333984,
- 22.58765411376953,
- 170.44366455078125,
- 48.34747314453125,
- -105.77885437011719,
- -86.19874572753906,
- 17.100265502929688,
- 18.13207244873047,
- 87.64418029785156,
- -116.3659439086914,
- 117.07791900634766,
- 10.460599899291992,
- 22.931793212890625,
- -160.62979125976562,
- 68.10350799560547,
- -2.3239879608154297
- ],
- "type": "float32"
- }
- },
- {
- "name": "add float32 3D tensors",
- "inputs": {
- "a": {
- "shape": [2, 3, 4],
- "data":[
- -43.33331702607182,
- -67.89795492110251,
- 26.462739729601154,
- 36.74276245870831,
- -65.1773897660934,
- -87.70664817075895,
- 65.2788147914111,
- -74.05226258410215,
- -13.82780997496917,
- 6.9814867885681196,
- 99.8375201051771,
- 55.80233785150233,
- -75.57196245651672,
- 11.499508337009786,
- 17.110109711325364,
- 95.81167418402984,
- 57.447496690075326,
- -57.17587415294769,
- 27.71905326607728,
- -18.21920899392113,
- 52.65309891626177,
- -69.9945556346263,
- 39.82165678962866,
- -29.986529326327684
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 3, 4],
- "data": [
- -59.74972612329861,
- -44.814940102501396,
- -87.93879800134108,
- 1.884336371742009,
- 84.89464239219592,
- 47.55365421202336,
- 85.64292769131902,
- 43.02861451385175,
- -60.25821191056049,
- 15.606167000302435,
- 70.60614780317951,
- -7.454866177806224,
- -30.206895875534997,
- -97.69825508598404,
- -0.009843301412843175,
- -77.6796011606304,
- 30.19668513874859,
- -59.19006932092632,
- 89.35886332586315,
- 28.679809244991418,
- -29.72130634585804,
- -90.63522901925083,
- 28.281854673339666,
- 27.66254066077893
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 3, 4],
- "data": [
- -103.08303833007812,
- -112.71289825439453,
- -61.47605895996094,
- 38.627098083496094,
- 19.717254638671875,
- -40.15299606323242,
- 150.9217529296875,
- -31.02364730834961,
- -74.08602142333984,
- 22.58765411376953,
- 170.44366455078125,
- 48.34747314453125,
- -105.77885437011719,
- -86.19874572753906,
- 17.100265502929688,
- 18.13207244873047,
- 87.64418029785156,
- -116.3659439086914,
- 117.07791900634766,
- 10.460599899291992,
- 22.931793212890625,
- -160.62979125976562,
- 68.10350799560547,
- -2.3239879608154297
- ],
- "type": "float32"
- }
- },
- {
- "name": "add float32 4D tensors",
- "inputs": {
- "a": {
- "shape": [2, 2, 2, 3],
- "data": [
- -43.33331702607182,
- -67.89795492110251,
- 26.462739729601154,
- 36.74276245870831,
- -65.1773897660934,
- -87.70664817075895,
- 65.2788147914111,
- -74.05226258410215,
- -13.82780997496917,
- 6.9814867885681196,
- 99.8375201051771,
- 55.80233785150233,
- -75.57196245651672,
- 11.499508337009786,
- 17.110109711325364,
- 95.81167418402984,
- 57.447496690075326,
- -57.17587415294769,
- 27.71905326607728,
- -18.21920899392113,
- 52.65309891626177,
- -69.9945556346263,
- 39.82165678962866,
- -29.986529326327684
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 2, 3],
- "data": [
- -59.74972612329861,
- -44.814940102501396,
- -87.93879800134108,
- 1.884336371742009,
- 84.89464239219592,
- 47.55365421202336,
- 85.64292769131902,
- 43.02861451385175,
- -60.25821191056049,
- 15.606167000302435,
- 70.60614780317951,
- -7.454866177806224,
- -30.206895875534997,
- -97.69825508598404,
- -0.009843301412843175,
- -77.6796011606304,
- 30.19668513874859,
- -59.19006932092632,
- 89.35886332586315,
- 28.679809244991418,
- -29.72130634585804,
- -90.63522901925083,
- 28.281854673339666,
- 27.66254066077893
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- -103.08303833007812,
- -112.71289825439453,
- -61.47605895996094,
- 38.627098083496094,
- 19.717254638671875,
- -40.15299606323242,
- 150.9217529296875,
- -31.02364730834961,
- -74.08602142333984,
- 22.58765411376953,
- 170.44366455078125,
- 48.34747314453125,
- -105.77885437011719,
- -86.19874572753906,
- 17.100265502929688,
- 18.13207244873047,
- 87.64418029785156,
- -116.3659439086914,
- 117.07791900634766,
- 10.460599899291992,
- 22.931793212890625,
- -160.62979125976562,
- 68.10350799560547,
- -2.3239879608154297
- ],
- "type": "float32"
- }
- },
- {
- "name": "add float32 5D tensors",
- "inputs": {
- "a": {
- "shape": [2, 2, 1, 2, 3],
- "data": [
- -43.33331702607182,
- -67.89795492110251,
- 26.462739729601154,
- 36.74276245870831,
- -65.1773897660934,
- -87.70664817075895,
- 65.2788147914111,
- -74.05226258410215,
- -13.82780997496917,
- 6.9814867885681196,
- 99.8375201051771,
- 55.80233785150233,
- -75.57196245651672,
- 11.499508337009786,
- 17.110109711325364,
- 95.81167418402984,
- 57.447496690075326,
- -57.17587415294769,
- 27.71905326607728,
- -18.21920899392113,
- 52.65309891626177,
- -69.9945556346263,
- 39.82165678962866,
- -29.986529326327684
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 1, 2, 3],
- "data": [
- -59.74972612329861,
- -44.814940102501396,
- -87.93879800134108,
- 1.884336371742009,
- 84.89464239219592,
- 47.55365421202336,
- 85.64292769131902,
- 43.02861451385175,
- -60.25821191056049,
- 15.606167000302435,
- 70.60614780317951,
- -7.454866177806224,
- -30.206895875534997,
- -97.69825508598404,
- -0.009843301412843175,
- -77.6796011606304,
- 30.19668513874859,
- -59.19006932092632,
- 89.35886332586315,
- 28.679809244991418,
- -29.72130634585804,
- -90.63522901925083,
- 28.281854673339666,
- 27.66254066077893
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 1, 2, 3],
- "data": [
- -103.08303833007812,
- -112.71289825439453,
- -61.47605895996094,
- 38.627098083496094,
- 19.717254638671875,
- -40.15299606323242,
- 150.9217529296875,
- -31.02364730834961,
- -74.08602142333984,
- 22.58765411376953,
- 170.44366455078125,
- 48.34747314453125,
- -105.77885437011719,
- -86.19874572753906,
- 17.100265502929688,
- 18.13207244873047,
- 87.64418029785156,
- -116.3659439086914,
- 117.07791900634766,
- 10.460599899291992,
- 22.931793212890625,
- -160.62979125976562,
- 68.10350799560547,
- -2.3239879608154297
- ],
- "type": "float32"
- }
- },
- {
- "name": "add float32 broadcast 1D to 4D",
- "inputs": {
- "a": {
- "shape": [1],
- "data": [
- -59.36157224952288
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 2, 3],
- "data": [
- -43.33331702607182,
- -67.89795492110251,
- 26.462739729601154,
- 36.74276245870831,
- -65.1773897660934,
- -87.70664817075895,
- 65.2788147914111,
- -74.05226258410215,
- -13.82780997496917,
- 6.9814867885681196,
- 99.8375201051771,
- 55.80233785150233,
- -75.57196245651672,
- 11.499508337009786,
- 17.110109711325364,
- 95.81167418402984,
- 57.447496690075326,
- -57.17587415294769,
- 27.71905326607728,
- -18.21920899392113,
- 52.65309891626177,
- -69.9945556346263,
- 39.82165678962866,
- -29.986529326327684
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- -102.69488525390625,
- -127.25952911376953,
- -32.898834228515625,
- -22.61880874633789,
- -124.5389633178711,
- -147.06822204589844,
- 5.917243957519531,
- -133.41383361816406,
- -73.18938446044922,
- -52.38008499145508,
- 40.47594451904297,
- -3.559234619140625,
- -134.93353271484375,
- -47.862064361572266,
- -42.25146484375,
- 36.450103759765625,
- -1.9140739440917969,
- -116.53744506835938,
- -31.642518997192383,
- -77.58078002929688,
- -6.708473205566406,
- -129.3561248779297,
- -19.5399169921875,
- -89.34809875488281
- ],
- "type": "float32"
- }
- },
- {
- "name": "add float32 broadcast 2D to 4D",
- "inputs": {
- "a": {
- "shape": [2, 2, 2, 3],
- "data": [
- -43.33331702607182,
- -67.89795492110251,
- 26.462739729601154,
- 36.74276245870831,
- -65.1773897660934,
- -87.70664817075895,
- 65.2788147914111,
- -74.05226258410215,
- -13.82780997496917,
- 6.9814867885681196,
- 99.8375201051771,
- 55.80233785150233,
- -75.57196245651672,
- 11.499508337009786,
- 17.110109711325364,
- 95.81167418402984,
- 57.447496690075326,
- -57.17587415294769,
- 27.71905326607728,
- -18.21920899392113,
- 52.65309891626177,
- -69.9945556346263,
- 39.82165678962866,
- -29.986529326327684
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 3],
- "data": [
- -17.98112396221225,
- -70.45854393523281,
- -12.762018804699252,
- 24.254031986371018,
- -68.125990738312,
- 30.626274734168845
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- -61.3144416809082,
- -138.35650634765625,
- 13.70072078704834,
- 60.996795654296875,
- -133.30337524414062,
- -57.08037567138672,
- 47.297691345214844,
- -144.51080322265625,
- -26.589828491210938,
- 31.235519409179688,
- 31.711524963378906,
- 86.4286117553711,
- -93.55308532714844,
- -58.95903396606445,
- 4.348090171813965,
- 120.06570434570312,
- -10.67849349975586,
- -26.549598693847656,
- 9.73792839050293,
- -88.67774963378906,
- 39.89107894897461,
- -45.74052047729492,
- -28.304336547851562,
- 0.6397457122802734
- ],
- "type": "float32"
- }
- },
- {
- "name": "add float32 broadcast 3D to 4D",
- "inputs": {
- "a": {
- "shape": [2, 2, 2, 3],
- "data": [
- -43.33331702607182,
- -67.89795492110251,
- 26.462739729601154,
- 36.74276245870831,
- -65.1773897660934,
- -87.70664817075895,
- 65.2788147914111,
- -74.05226258410215,
- -13.82780997496917,
- 6.9814867885681196,
- 99.8375201051771,
- 55.80233785150233,
- -75.57196245651672,
- 11.499508337009786,
- 17.110109711325364,
- 95.81167418402984,
- 57.447496690075326,
- -57.17587415294769,
- 27.71905326607728,
- -18.21920899392113,
- 52.65309891626177,
- -69.9945556346263,
- 39.82165678962866,
- -29.986529326327684
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 1],
- "data": [
- -32.34067322728728,
- 43.12499227028161,
- 78.68874120227329,
- -54.4989964261196
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- -75.67398834228516,
- -100.23863220214844,
- -5.877931594848633,
- 79.86775207519531,
- -22.052398681640625,
- -44.58165740966797,
- 143.96755981445312,
- 4.636482238769531,
- 64.86093139648438,
- -47.51750946044922,
- 45.33852005004883,
- 1.3033409118652344,
- -107.91262817382812,
- -20.841163635253906,
- -15.230562210083008,
- 138.93667602539062,
- 100.57249450683594,
- -14.050880432128906,
- 106.40779876708984,
- 60.46953582763672,
- 131.3418426513672,
- -124.49354553222656,
- -14.67734146118164,
- -84.48552703857422
- ],
- "type": "float32"
- }
- },
- {
- "name": "add float32 broadcast 4D to 4D",
- "inputs": {
- "a": {
- "shape": [1, 1, 1, 1],
- "data": [
- -59.36157224952288
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 2, 3],
- "data": [
- -43.33331702607182,
- -67.89795492110251,
- 26.462739729601154,
- 36.74276245870831,
- -65.1773897660934,
- -87.70664817075895,
- 65.2788147914111,
- -74.05226258410215,
- -13.82780997496917,
- 6.9814867885681196,
- 99.8375201051771,
- 55.80233785150233,
- -75.57196245651672,
- 11.499508337009786,
- 17.110109711325364,
- 95.81167418402984,
- 57.447496690075326,
- -57.17587415294769,
- 27.71905326607728,
- -18.21920899392113,
- 52.65309891626177,
- -69.9945556346263,
- 39.82165678962866,
- -29.986529326327684
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- -102.69488525390625,
- -127.25952911376953,
- -32.898834228515625,
- -22.61880874633789,
- -124.5389633178711,
- -147.06822204589844,
- 5.917243957519531,
- -133.41383361816406,
- -73.18938446044922,
- -52.38008499145508,
- 40.47594451904297,
- -3.559234619140625,
- -134.93353271484375,
- -47.862064361572266,
- -42.25146484375,
- 36.450103759765625,
- -1.9140739440917969,
- -116.53744506835938,
- -31.642518997192383,
- -77.58078002929688,
- -6.708473205566406,
- -129.3561248779297,
- -19.5399169921875,
- -89.34809875488281
- ],
- "type": "float32"
- }
- },
- {
- "name": "add float32 large inputs",
- "inputs": {
- "a": {
- "shape": [6000, 6000],
- "data": 89.32998288116718,
- "type": "float32",
- "constant": true
- },
- "b": {
- "shape": [6000, 6000],
- "data": 77.24720464493949,
- "type": "float32",
- "constant": false
- }
- },
- "expected": {
- "name": "output",
- "shape": [6000, 6000],
- "data": 166.57718752610668,
- "type": "float32"
- }
- },
- {
- "name": "add float32 with special character names",
- "inputs": {
- "12-L#!.☺": {
- "shape": [1],
- "data": [89.32998288116718],
- "type": "float32",
- "constant": true
- },
- "🤦🏼‍♂️124DS#!F": {
- "shape": [1],
- "data": [77.2472046449394945],
- "type": "float32",
- "constant": false
- }
- },
- "expected": {
- "name": "output",
- "shape": [1],
- "data": [166.57718752610668],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/arg_max.json b/tests/wpt/tests/webnn/resources/test_data/arg_max.json
deleted file mode 100644
index d65939d0477..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/arg_max.json
+++ /dev/null
@@ -1,768 +0,0 @@
-{
- "tests": [
- {
- "name": "argMax float32 1D constant tensor default options",
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- -51.0936194154457,
- -6.5397018645619625,
- 73.81338015899149,
- 88.46114630531724,
- -5.294266751122791,
- -79.20668057325759,
- -41.70176598864654,
- 73.81338015899149,
- 88.46114630531724,
- -84.939998758247,
- -61.488942502520906,
- -98.33874402761955,
- -51.0936194154457,
- -6.5397018645619625,
- 73.81338015899149,
- 88.46114630531724,
- -5.294266751122791,
- -79.20668057325759,
- -41.70176598864654,
- 73.81338015899149,
- 88.46114630531724,
- -84.939998758247,
- -61.488942502520906,
- -98.33874402761955
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [],
- "data": [
- 3
- ],
- "type": "int32"
- }
- },
- {
- "name": "argMax float32 1D tensor default options",
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- -51.0936194154457,
- -6.5397018645619625,
- 73.81338015899149,
- 88.46114630531724,
- -5.294266751122791,
- -79.20668057325759,
- -41.70176598864654,
- 73.81338015899149,
- 88.46114630531724,
- -84.939998758247,
- -61.488942502520906,
- -98.33874402761955,
- -51.0936194154457,
- -6.5397018645619625,
- 73.81338015899149,
- 88.46114630531724,
- -5.294266751122791,
- -79.20668057325759,
- -41.70176598864654,
- 73.81338015899149,
- 88.46114630531724,
- -84.939998758247,
- -61.488942502520906,
- -98.33874402761955
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [],
- "data": [
- 3
- ],
- "type": "int32"
- }
- },
- {
- "name": "argMax float32 2D tensor default options",
- "inputs": {
- "input": {
- "shape": [4, 6],
- "data": [
- -51.0936194154457,
- -6.5397018645619625,
- 73.81338015899149,
- 88.46114630531724,
- -5.294266751122791,
- -79.20668057325759,
- -41.70176598864654,
- 73.81338015899149,
- 88.46114630531724,
- -84.939998758247,
- -61.488942502520906,
- -98.33874402761955,
- -51.0936194154457,
- -6.5397018645619625,
- 73.81338015899149,
- 88.46114630531724,
- -5.294266751122791,
- -79.20668057325759,
- -41.70176598864654,
- 73.81338015899149,
- 88.46114630531724,
- -84.939998758247,
- -61.488942502520906,
- -98.33874402761955
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [],
- "data": [
- 3
- ],
- "type": "int32"
- }
- },
- {
- "name": "argMax float32 3D tensor default options",
- "inputs": {
- "input": {
- "shape": [2, 3, 4],
- "data": [
- -51.0936194154457,
- -6.5397018645619625,
- 73.81338015899149,
- 88.46114630531724,
- -5.294266751122791,
- -79.20668057325759,
- -41.70176598864654,
- 73.81338015899149,
- 88.46114630531724,
- -84.939998758247,
- -61.488942502520906,
- -98.33874402761955,
- -51.0936194154457,
- -6.5397018645619625,
- 73.81338015899149,
- 88.46114630531724,
- -5.294266751122791,
- -79.20668057325759,
- -41.70176598864654,
- 73.81338015899149,
- 88.46114630531724,
- -84.939998758247,
- -61.488942502520906,
- -98.33874402761955
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [],
- "data": [
- 3
- ],
- "type": "int32"
- }
- },
- {
- "name": "argMax float32 4D tensor default options",
- "inputs": {
- "input": {
- "shape": [2, 1, 4, 3],
- "data": [
- -51.0936194154457,
- -6.5397018645619625,
- 73.81338015899149,
- 88.46114630531724,
- -5.294266751122791,
- -79.20668057325759,
- -41.70176598864654,
- 73.81338015899149,
- 88.46114630531724,
- -84.939998758247,
- -61.488942502520906,
- -98.33874402761955,
- -51.0936194154457,
- -6.5397018645619625,
- 73.81338015899149,
- 88.46114630531724,
- -5.294266751122791,
- -79.20668057325759,
- -41.70176598864654,
- 73.81338015899149,
- 88.46114630531724,
- -84.939998758247,
- -61.488942502520906,
- -98.33874402761955
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [],
- "data": [
- 3
- ],
- "type": "int32"
- }
- },
- {
- "name": "argMax float32 5D tensor default options",
- "inputs": {
- "input": {
- "shape": [2, 1, 4, 1, 3],
- "data": [
- -51.0936194154457,
- -6.5397018645619625,
- 73.81338015899149,
- 88.46114630531724,
- -5.294266751122791,
- -79.20668057325759,
- -41.70176598864654,
- 73.81338015899149,
- 88.46114630531724,
- -84.939998758247,
- -61.488942502520906,
- -98.33874402761955,
- -51.0936194154457,
- -6.5397018645619625,
- 73.81338015899149,
- 88.46114630531724,
- -5.294266751122791,
- -79.20668057325759,
- -41.70176598864654,
- 73.81338015899149,
- 88.46114630531724,
- -84.939998758247,
- -61.488942502520906,
- -98.33874402761955
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [],
- "data": [
- 3
- ],
- "type": "int32"
- }
- },
- {
- "name": "argMax float32 4D tensor options.axes=[2]",
- "inputs": {
- "input": {
- "shape": [2, 1, 4, 3],
- "data": [
- -51.0936194154457,
- -6.5397018645619625,
- 73.81338015899149,
- 88.46114630531724,
- -5.294266751122791,
- -79.20668057325759,
- -41.70176598864654,
- 73.81338015899149,
- 88.46114630531724,
- -84.939998758247,
- -61.488942502520906,
- -98.33874402761955,
- -51.0936194154457,
- -6.5397018645619625,
- 73.81338015899149,
- 88.46114630531724,
- -5.294266751122791,
- -79.20668057325759,
- -41.70176598864654,
- 73.81338015899149,
- 88.46114630531724,
- -84.939998758247,
- -61.488942502520906,
- -98.33874402761955
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": [2]
- },
- "expected": {
- "name": "output",
- "shape": [2, 1, 3],
- "data": [
- 1,
- 2,
- 2,
- 1,
- 2,
- 2
- ],
- "type": "int32"
- }
- },
- {
- "name": "argMax float32 4D tensor options.axes=[]",
- "inputs": {
- "input": {
- "shape": [2, 1, 4, 3],
- "data": [
- -51.0936194154457,
- -6.5397018645619625,
- 73.81338015899149,
- 88.46114630531724,
- -5.294266751122791,
- -79.20668057325759,
- -41.70176598864654,
- 73.81338015899149,
- 88.46114630531724,
- -84.939998758247,
- -61.488942502520906,
- -98.33874402761955,
- -51.0936194154457,
- -6.5397018645619625,
- 73.81338015899149,
- 88.46114630531724,
- -5.294266751122791,
- -79.20668057325759,
- -41.70176598864654,
- 73.81338015899149,
- 88.46114630531724,
- -84.939998758247,
- -61.488942502520906,
- -98.33874402761955
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": []
- },
- "expected": {
- "name": "output",
- "shape": [2, 1, 4, 3],
- "data": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- "type": "int32"
- }
- },
- {
- "name": "argMax float32 4D tensor options.keepDimensions=true",
- "inputs": {
- "input": {
- "shape": [2, 1, 4, 3],
- "data": [
- -51.0936194154457,
- -6.5397018645619625,
- 73.81338015899149,
- 88.46114630531724,
- -5.294266751122791,
- -79.20668057325759,
- -41.70176598864654,
- 73.81338015899149,
- 88.46114630531724,
- -84.939998758247,
- -61.488942502520906,
- -98.33874402761955,
- -51.0936194154457,
- -6.5397018645619625,
- 73.81338015899149,
- 88.46114630531724,
- -5.294266751122791,
- -79.20668057325759,
- -41.70176598864654,
- 73.81338015899149,
- 88.46114630531724,
- -84.939998758247,
- -61.488942502520906,
- -98.33874402761955
- ],
- "type": "float32"
- }
- },
- "options": {
- "keepDimensions": true
- },
- "expected": {
- "name": "output",
- "shape": [1, 1, 1, 1],
- "data": [
- 3
- ],
- "type": "int32"
- }
- },
- {
- "name": "argMax float32 4D tensor options.keepDimensions=false",
- "inputs": {
- "input": {
- "shape": [2, 1, 4, 3],
- "data": [
- -51.0936194154457,
- -6.5397018645619625,
- 73.81338015899149,
- 88.46114630531724,
- -5.294266751122791,
- -79.20668057325759,
- -41.70176598864654,
- 73.81338015899149,
- 88.46114630531724,
- -84.939998758247,
- -61.488942502520906,
- -98.33874402761955,
- -51.0936194154457,
- -6.5397018645619625,
- 73.81338015899149,
- 88.46114630531724,
- -5.294266751122791,
- -79.20668057325759,
- -41.70176598864654,
- 73.81338015899149,
- 88.46114630531724,
- -84.939998758247,
- -61.488942502520906,
- -98.33874402761955
- ],
- "type": "float32"
- }
- },
- "options": {
- "keepDimensions": false
- },
- "expected": {
- "name": "output",
- "shape": [],
- "data": [
- 3
- ],
- "type": "int32"
- }
- },
- {
- "name": "argMax float32 4D tensor options.axes=[0, 2] options.keepDimensions=false",
- "inputs": {
- "input": {
- "shape": [2, 1, 4, 3],
- "data": [
- -51.0936194154457,
- -6.5397018645619625,
- 73.81338015899149,
- 88.46114630531724,
- -5.294266751122791,
- -79.20668057325759,
- -41.70176598864654,
- 73.81338015899149,
- 88.46114630531724,
- -84.939998758247,
- -61.488942502520906,
- -98.33874402761955,
- -51.0936194154457,
- -6.5397018645619625,
- 73.81338015899149,
- 88.46114630531724,
- -5.294266751122791,
- -79.20668057325759,
- -41.70176598864654,
- 73.81338015899149,
- 88.46114630531724,
- -84.939998758247,
- -61.488942502520906,
- -98.33874402761955
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": [0, 2],
- "keepDimensions": false
- },
- "expected": {
- "name": "output",
- "shape": [1, 3],
- "data": [
- 1,
- 2,
- 2
- ],
- "type": "int32"
- }
- },
- {
- "name": "argMax float32 4D tensor options.axes=[3, 0, 1] options.keepDimensions=true",
- "inputs": {
- "input": {
- "shape": [2, 1, 4, 3],
- "data": [
- -51.0936194154457,
- -6.5397018645619625,
- 73.81338015899149,
- 88.46114630531724,
- -5.294266751122791,
- -79.20668057325759,
- -41.70176598864654,
- 73.81338015899149,
- 88.46114630531724,
- -84.939998758247,
- -61.488942502520906,
- -98.33874402761955,
- -51.0936194154457,
- -6.5397018645619625,
- 73.81338015899149,
- 88.46114630531724,
- -5.294266751122791,
- -79.20668057325759,
- -41.70176598864654,
- 73.81338015899149,
- 88.46114630531724,
- -84.939998758247,
- -61.488942502520906,
- -98.33874402761955
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": [3, 0, 1],
- "keepDimensions": true
- },
- "expected": {
- "name": "output",
- "shape": [1, 1, 4, 1],
- "data": [
- 2,
- 0,
- 2,
- 1
- ],
- "type": "int32"
- }
- },
- {
- "name": "argMax float32 4D tensor options.axes=[0, 2]",
- "inputs": {
- "input": {
- "shape": [2, 1, 4, 3],
- "data": [
- -51.0936194154457,
- -6.5397018645619625,
- 73.81338015899149,
- 88.46114630531724,
- -5.294266751122791,
- -79.20668057325759,
- -41.70176598864654,
- 73.81338015899149,
- 88.46114630531724,
- -84.939998758247,
- -61.488942502520906,
- -98.33874402761955,
- -51.0936194154457,
- -6.5397018645619625,
- 73.81338015899149,
- 88.46114630531724,
- -5.294266751122791,
- -79.20668057325759,
- -41.70176598864654,
- 73.81338015899149,
- 88.46114630531724,
- -84.939998758247,
- -61.488942502520906,
- -98.33874402761955
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": [0, 2]
- },
- "expected": {
- "name": "output",
- "shape": [1, 3],
- "data": [
- 1,
- 2,
- 2
- ],
- "type": "int32"
- }
- },
- {
- "name": "argMax float32 4D tensor options.axes=[3, 0, 1]",
- "inputs": {
- "input": {
- "shape": [2, 1, 4, 3],
- "data": [
- -51.0936194154457,
- -6.5397018645619625,
- 73.81338015899149,
- 88.46114630531724,
- -5.294266751122791,
- -79.20668057325759,
- -41.70176598864654,
- 73.81338015899149,
- 88.46114630531724,
- -84.939998758247,
- -61.488942502520906,
- -98.33874402761955,
- -51.0936194154457,
- -6.5397018645619625,
- 73.81338015899149,
- 88.46114630531724,
- -5.294266751122791,
- -79.20668057325759,
- -41.70176598864654,
- 73.81338015899149,
- 88.46114630531724,
- -84.939998758247,
- -61.488942502520906,
- -98.33874402761955
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": [3, 0, 1]
- },
- "expected": {
- "name": "output",
- "shape": [4],
- "data": [
- 2,
- 0,
- 2,
- 1
- ],
- "type": "int32"
- }
- },
- {
- "name": "argMax float32 4D tensor all options",
- "inputs": {
- "input": {
- "shape": [2, 1, 4, 3],
- "data": [
- -51.0936194154457,
- -6.5397018645619625,
- 73.81338015899149,
- 88.46114630531724,
- -5.294266751122791,
- -79.20668057325759,
- -41.70176598864654,
- 73.81338015899149,
- 88.46114630531724,
- -84.939998758247,
- -61.488942502520906,
- -98.33874402761955,
- -51.0936194154457,
- -6.5397018645619625,
- 73.81338015899149,
- 88.46114630531724,
- -5.294266751122791,
- -79.20668057325759,
- -41.70176598864654,
- 73.81338015899149,
- 88.46114630531724,
- -84.939998758247,
- -61.488942502520906,
- -98.33874402761955
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": [3, 0],
- "keepDimensions": true
- },
- "expected": {
- "name": "output",
- "shape": [1, 1, 4, 1],
- "data": [
- 2,
- 0,
- 2,
- 1
- ],
- "type": "int32"
- }
- },
- {
- "name": "argMax float32 0D scalar options.axes=[]",
- "inputs": {
- "input": {
- "shape": [],
- "data": [
- -51.0936194154457
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": []
- },
- "expected": {
- "name": "output",
- "shape": [],
- "data": [
- 0
- ],
- "type": "int32"
- }
- },
- {
- "name": "argMax float32 0D scalar options.axes=[] no effect by keepDimensions being true",
- "inputs": {
- "input": {
- "shape": [],
- "data": [
- -51.0936194154457
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": [],
- "keepDimensions": true
- },
- "expected": {
- "name": "output",
- "shape": [],
- "data": [
- 0
- ],
- "type": "int32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/arg_min.json b/tests/wpt/tests/webnn/resources/test_data/arg_min.json
deleted file mode 100644
index f7b3f6d10d6..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/arg_min.json
+++ /dev/null
@@ -1,768 +0,0 @@
-{
- "tests": [
- {
- "name": "argMin float32 1D constant tensor default options",
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- 3.830124090690262,
- -24.986487937638074,
- 5.299982630691289,
- -48.5486590218902,
- 40.30886781808215,
- 60.184293919409726,
- -82.78385618759043,
- -96.50904103637833,
- 71.87028201591897,
- 38.866394268784035,
- -39.143725517854435,
- 31.444366685561903,
- -82.78385618759043,
- -96.50904103637833,
- -25.53388886326502,
- -16.142265850469343,
- 66.63677406472371,
- 82.5119815304117,
- -82.78385618759043,
- -96.50904103637833,
- 39.7687246127592,
- 42.15040238450999,
- 82.66863662444459,
- 85.4526923278379
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [],
- "data": [
- 7
- ],
- "type": "int32"
- }
- },
- {
- "name": "argMin float32 1D tensor default options",
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- 3.830124090690262,
- -24.986487937638074,
- 5.299982630691289,
- -48.5486590218902,
- 40.30886781808215,
- 60.184293919409726,
- -82.78385618759043,
- -96.50904103637833,
- 71.87028201591897,
- 38.866394268784035,
- -39.143725517854435,
- 31.444366685561903,
- -82.78385618759043,
- -96.50904103637833,
- -25.53388886326502,
- -16.142265850469343,
- 66.63677406472371,
- 82.5119815304117,
- -82.78385618759043,
- -96.50904103637833,
- 39.7687246127592,
- 42.15040238450999,
- 82.66863662444459,
- 85.4526923278379
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [],
- "data": [
- 7
- ],
- "type": "int32"
- }
- },
- {
- "name": "argMin float32 2D tensor default options",
- "inputs": {
- "input": {
- "shape": [4, 6],
- "data": [
- 3.830124090690262,
- -24.986487937638074,
- 5.299982630691289,
- -48.5486590218902,
- 40.30886781808215,
- 60.184293919409726,
- -82.78385618759043,
- -96.50904103637833,
- 71.87028201591897,
- 38.866394268784035,
- -39.143725517854435,
- 31.444366685561903,
- -82.78385618759043,
- -96.50904103637833,
- -25.53388886326502,
- -16.142265850469343,
- 66.63677406472371,
- 82.5119815304117,
- -82.78385618759043,
- -96.50904103637833,
- 39.7687246127592,
- 42.15040238450999,
- 82.66863662444459,
- 85.4526923278379
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [],
- "data": [
- 7
- ],
- "type": "int32"
- }
- },
- {
- "name": "argMin float32 3D tensor default options",
- "inputs": {
- "input": {
- "shape": [2, 3, 4],
- "data": [
- 3.830124090690262,
- -24.986487937638074,
- 5.299982630691289,
- -48.5486590218902,
- 40.30886781808215,
- 60.184293919409726,
- -82.78385618759043,
- -96.50904103637833,
- 71.87028201591897,
- 38.866394268784035,
- -39.143725517854435,
- 31.444366685561903,
- -82.78385618759043,
- -96.50904103637833,
- -25.53388886326502,
- -16.142265850469343,
- 66.63677406472371,
- 82.5119815304117,
- -82.78385618759043,
- -96.50904103637833,
- 39.7687246127592,
- 42.15040238450999,
- 82.66863662444459,
- 85.4526923278379
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [],
- "data": [
- 7
- ],
- "type": "int32"
- }
- },
- {
- "name": "argMin float32 4D tensor default options",
- "inputs": {
- "input": {
- "shape": [2, 1, 4, 3],
- "data": [
- 3.830124090690262,
- -24.986487937638074,
- 5.299982630691289,
- -48.5486590218902,
- 40.30886781808215,
- 60.184293919409726,
- -82.78385618759043,
- -96.50904103637833,
- 71.87028201591897,
- 38.866394268784035,
- -39.143725517854435,
- 31.444366685561903,
- -82.78385618759043,
- -96.50904103637833,
- -25.53388886326502,
- -16.142265850469343,
- 66.63677406472371,
- 82.5119815304117,
- -82.78385618759043,
- -96.50904103637833,
- 39.7687246127592,
- 42.15040238450999,
- 82.66863662444459,
- 85.4526923278379
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [],
- "data": [
- 7
- ],
- "type": "int32"
- }
- },
- {
- "name": "argMin float32 5D tensor default options",
- "inputs": {
- "input": {
- "shape": [2, 1, 4, 1, 3],
- "data": [
- 3.830124090690262,
- -24.986487937638074,
- 5.299982630691289,
- -48.5486590218902,
- 40.30886781808215,
- 60.184293919409726,
- -82.78385618759043,
- -96.50904103637833,
- 71.87028201591897,
- 38.866394268784035,
- -39.143725517854435,
- 31.444366685561903,
- -82.78385618759043,
- -96.50904103637833,
- -25.53388886326502,
- -16.142265850469343,
- 66.63677406472371,
- 82.5119815304117,
- -82.78385618759043,
- -96.50904103637833,
- 39.7687246127592,
- 42.15040238450999,
- 82.66863662444459,
- 85.4526923278379
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [],
- "data": [
- 7
- ],
- "type": "int32"
- }
- },
- {
- "name": "argMin float32 4D tensor options.axes=[2]",
- "inputs": {
- "input": {
- "shape": [2, 1, 4, 3],
- "data": [
- 3.830124090690262,
- -24.986487937638074,
- 5.299982630691289,
- -48.5486590218902,
- 40.30886781808215,
- 60.184293919409726,
- -82.78385618759043,
- -96.50904103637833,
- 71.87028201591897,
- 38.866394268784035,
- -39.143725517854435,
- 31.444366685561903,
- -82.78385618759043,
- -96.50904103637833,
- -25.53388886326502,
- -16.142265850469343,
- 66.63677406472371,
- 82.5119815304117,
- -82.78385618759043,
- -96.50904103637833,
- 39.7687246127592,
- 42.15040238450999,
- 82.66863662444459,
- 85.4526923278379
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": [2]
- },
- "expected": {
- "name": "output",
- "shape": [2, 1, 3],
- "data": [
- 2,
- 2,
- 0,
- 0,
- 0,
- 0
- ],
- "type": "int32"
- }
- },
- {
- "name": "argMin float32 4D tensor options.axes=[]",
- "inputs": {
- "input": {
- "shape": [2, 1, 4, 3],
- "data": [
- 3.830124090690262,
- -24.986487937638074,
- 5.299982630691289,
- -48.5486590218902,
- 40.30886781808215,
- 60.184293919409726,
- -82.78385618759043,
- -96.50904103637833,
- 71.87028201591897,
- 38.866394268784035,
- -39.143725517854435,
- 31.444366685561903,
- -82.78385618759043,
- -96.50904103637833,
- -25.53388886326502,
- -16.142265850469343,
- 66.63677406472371,
- 82.5119815304117,
- -82.78385618759043,
- -96.50904103637833,
- 39.7687246127592,
- 42.15040238450999,
- 82.66863662444459,
- 85.4526923278379
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": []
- },
- "expected": {
- "name": "output",
- "shape": [2, 1, 4, 3],
- "data": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- "type": "int32"
- }
- },
- {
- "name": "argMin float32 4D tensor options.keepDimensions=true",
- "inputs": {
- "input": {
- "shape": [2, 1, 4, 3],
- "data": [
- 3.830124090690262,
- -24.986487937638074,
- 5.299982630691289,
- -48.5486590218902,
- 40.30886781808215,
- 60.184293919409726,
- -82.78385618759043,
- -96.50904103637833,
- 71.87028201591897,
- 38.866394268784035,
- -39.143725517854435,
- 31.444366685561903,
- -82.78385618759043,
- -96.50904103637833,
- -25.53388886326502,
- -16.142265850469343,
- 66.63677406472371,
- 82.5119815304117,
- -82.78385618759043,
- -96.50904103637833,
- 39.7687246127592,
- 42.15040238450999,
- 82.66863662444459,
- 85.4526923278379
- ],
- "type": "float32"
- }
- },
- "options": {
- "keepDimensions": true
- },
- "expected": {
- "name": "output",
- "shape": [1, 1, 1, 1],
- "data": [
- 7
- ],
- "type": "int32"
- }
- },
- {
- "name": "argMin float32 4D tensor options.keepDimensions=false",
- "inputs": {
- "input": {
- "shape": [2, 1, 4, 3],
- "data": [
- 3.830124090690262,
- -24.986487937638074,
- 5.299982630691289,
- -48.5486590218902,
- 40.30886781808215,
- 60.184293919409726,
- -82.78385618759043,
- -96.50904103637833,
- 71.87028201591897,
- 38.866394268784035,
- -39.143725517854435,
- 31.444366685561903,
- -82.78385618759043,
- -96.50904103637833,
- -25.53388886326502,
- -16.142265850469343,
- 66.63677406472371,
- 82.5119815304117,
- -82.78385618759043,
- -96.50904103637833,
- 39.7687246127592,
- 42.15040238450999,
- 82.66863662444459,
- 85.4526923278379
- ],
- "type": "float32"
- }
- },
- "options": {
- "keepDimensions": false
- },
- "expected": {
- "name": "output",
- "shape": [],
- "data": [
- 7
- ],
- "type": "int32"
- }
- },
- {
- "name": "argMin float32 4D tensor options.axes=[0, 2] options.keepDimensions=false",
- "inputs": {
- "input": {
- "shape": [2, 1, 4, 3],
- "data": [
- 3.830124090690262,
- -24.986487937638074,
- 5.299982630691289,
- -48.5486590218902,
- 40.30886781808215,
- 60.184293919409726,
- -82.78385618759043,
- -96.50904103637833,
- 71.87028201591897,
- 38.866394268784035,
- -39.143725517854435,
- 31.444366685561903,
- -82.78385618759043,
- -96.50904103637833,
- -25.53388886326502,
- -16.142265850469343,
- 66.63677406472371,
- 82.5119815304117,
- -82.78385618759043,
- -96.50904103637833,
- 39.7687246127592,
- 42.15040238450999,
- 82.66863662444459,
- 85.4526923278379
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": [0, 2],
- "keepDimensions": false
- },
- "expected": {
- "name": "output",
- "shape": [1, 3],
- "data": [
- 2,
- 2,
- 4
- ],
- "type": "int32"
- }
- },
- {
- "name": "argMin float32 4D tensor options.axes=[3, 0, 1] options.keepDimensions=true",
- "inputs": {
- "input": {
- "shape": [2, 1, 4, 3],
- "data": [
- 3.830124090690262,
- -24.986487937638074,
- 5.299982630691289,
- -48.5486590218902,
- 40.30886781808215,
- 60.184293919409726,
- -82.78385618759043,
- -96.50904103637833,
- 71.87028201591897,
- 38.866394268784035,
- -39.143725517854435,
- 31.444366685561903,
- -82.78385618759043,
- -96.50904103637833,
- -25.53388886326502,
- -16.142265850469343,
- 66.63677406472371,
- 82.5119815304117,
- -82.78385618759043,
- -96.50904103637833,
- 39.7687246127592,
- 42.15040238450999,
- 82.66863662444459,
- 85.4526923278379
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": [3, 0, 1],
- "keepDimensions": true
- },
- "expected": {
- "name": "output",
- "shape": [1, 1, 4, 1],
- "data": [
- 4,
- 0,
- 1,
- 1
- ],
- "type": "int32"
- }
- },
- {
- "name": "argMin float32 4D tensor options.axes=[0, 2]",
- "inputs": {
- "input": {
- "shape": [2, 1, 4, 3],
- "data": [
- 3.830124090690262,
- -24.986487937638074,
- 5.299982630691289,
- -48.5486590218902,
- 40.30886781808215,
- 60.184293919409726,
- -82.78385618759043,
- -96.50904103637833,
- 71.87028201591897,
- 38.866394268784035,
- -39.143725517854435,
- 31.444366685561903,
- -82.78385618759043,
- -96.50904103637833,
- -25.53388886326502,
- -16.142265850469343,
- 66.63677406472371,
- 82.5119815304117,
- -82.78385618759043,
- -96.50904103637833,
- 39.7687246127592,
- 42.15040238450999,
- 82.66863662444459,
- 85.4526923278379
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": [0, 2]
- },
- "expected": {
- "name": "output",
- "shape": [1, 3],
- "data": [
- 2,
- 2,
- 4
- ],
- "type": "int32"
- }
- },
- {
- "name": "argMin float32 4D tensor options.axes=[3, 0, 1]",
- "inputs": {
- "input": {
- "shape": [2, 1, 4, 3],
- "data": [
- 3.830124090690262,
- -24.986487937638074,
- 5.299982630691289,
- -48.5486590218902,
- 40.30886781808215,
- 60.184293919409726,
- -82.78385618759043,
- -96.50904103637833,
- 71.87028201591897,
- 38.866394268784035,
- -39.143725517854435,
- 31.444366685561903,
- -82.78385618759043,
- -96.50904103637833,
- -25.53388886326502,
- -16.142265850469343,
- 66.63677406472371,
- 82.5119815304117,
- -82.78385618759043,
- -96.50904103637833,
- 39.7687246127592,
- 42.15040238450999,
- 82.66863662444459,
- 85.4526923278379
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": [3, 0, 1]
- },
- "expected": {
- "name": "output",
- "shape": [4],
- "data": [
- 4,
- 0,
- 1,
- 1
- ],
- "type": "int32"
- }
- },
- {
- "name": "argMin float32 4D tensor all options",
- "inputs": {
- "input": {
- "shape": [2, 1, 4, 3],
- "data": [
- 3.830124090690262,
- -24.986487937638074,
- 5.299982630691289,
- -48.5486590218902,
- 40.30886781808215,
- 60.184293919409726,
- -82.78385618759043,
- -96.50904103637833,
- 71.87028201591897,
- 38.866394268784035,
- -39.143725517854435,
- 31.444366685561903,
- -82.78385618759043,
- -96.50904103637833,
- -25.53388886326502,
- -16.142265850469343,
- 66.63677406472371,
- 82.5119815304117,
- -82.78385618759043,
- -96.50904103637833,
- 39.7687246127592,
- 42.15040238450999,
- 82.66863662444459,
- 85.4526923278379
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": [3, 0],
- "keepDimensions": true
- },
- "expected": {
- "name": "output",
- "shape": [1, 1, 4, 1],
- "data": [
- 4,
- 0,
- 1,
- 1
- ],
- "type": "int32"
- }
- },
- {
- "name": "argMin float32 0D scalar options.axes=[]",
- "inputs": {
- "input": {
- "shape": [],
- "data": [
- 3.830124090690262
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": []
- },
- "expected": {
- "name": "output",
- "shape": [],
- "data": [
- 0
- ],
- "type": "int32"
- }
- },
- {
- "name": "argMin float32 0D scalar options.axes=[] no effect by keepDimensions being true",
- "inputs": {
- "input": {
- "shape": [],
- "data": [
- 3.830124090690262
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": [],
- "keepDimensions": true
- },
- "expected": {
- "name": "output",
- "shape": [],
- "data": [
- 0
- ],
- "type": "int32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/average_pool2d.json b/tests/wpt/tests/webnn/resources/test_data/average_pool2d.json
deleted file mode 100644
index b95e9395e7f..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/average_pool2d.json
+++ /dev/null
@@ -1,1496 +0,0 @@
-{
- "tests": [
- {
- "name": "averagePool2d float32 4D constant tensor all positive default options",
- "inputs": {
- "input": {
- "shape": [1, 2, 5, 5],
- "data": [
- 22.975555502750634,
- 78.15438048012338,
- 9.68611138116071,
- 51.29803808129347,
- 32.19308601456918,
- 87.65037289600019,
- 87.25082191311348,
- 39.49793996935087,
- 80.09963591169489,
- 10.220142557736978,
- 52.60270021646585,
- 1.4128639882603933,
- 11.954064466077474,
- 85.0007506374375,
- 64.7837446465813,
- 88.03128735720126,
- 11.333851214909307,
- 70.61659435728073,
- 84.90442561999888,
- 79.06688041781518,
- 7.328724951604215,
- 35.97796581186121,
- 10.17730631094398,
- 1.4140757517112412,
- 78.10038172113374,
- 91.59549689157087,
- 65.64701225681809,
- 55.14215004436653,
- 18.432438840756184,
- 49.34624267439973,
- 15.648024969290454,
- 68.02723372727797,
- 20.342549040418124,
- 26.72794900604616,
- 64.87446829774323,
- 46.56714896227794,
- 79.57832937136276,
- 4.338463748959498,
- 38.18383968382213,
- 45.253981324455175,
- 80.9717996657439,
- 67.58124910163149,
- 6.026499585657263,
- 29.77881349289366,
- 58.58993337807239,
- 2.2384984647495054,
- 14.505490166700486,
- 68.72449589246624,
- 76.45657404642184,
- 23.53263275794233
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 1, 1],
- "data": [
- 47.26926803588867,
- 44.72445297241211
- ],
- "type": "float32"
- }
- },
- {
- "name": "averagePool2d float32 4D tensor all positive default options",
- "inputs": {
- "input": {
- "shape": [1, 2, 5, 5],
- "data": [
- 22.975555502750634,
- 78.15438048012338,
- 9.68611138116071,
- 51.29803808129347,
- 32.19308601456918,
- 87.65037289600019,
- 87.25082191311348,
- 39.49793996935087,
- 80.09963591169489,
- 10.220142557736978,
- 52.60270021646585,
- 1.4128639882603933,
- 11.954064466077474,
- 85.0007506374375,
- 64.7837446465813,
- 88.03128735720126,
- 11.333851214909307,
- 70.61659435728073,
- 84.90442561999888,
- 79.06688041781518,
- 7.328724951604215,
- 35.97796581186121,
- 10.17730631094398,
- 1.4140757517112412,
- 78.10038172113374,
- 91.59549689157087,
- 65.64701225681809,
- 55.14215004436653,
- 18.432438840756184,
- 49.34624267439973,
- 15.648024969290454,
- 68.02723372727797,
- 20.342549040418124,
- 26.72794900604616,
- 64.87446829774323,
- 46.56714896227794,
- 79.57832937136276,
- 4.338463748959498,
- 38.18383968382213,
- 45.253981324455175,
- 80.9717996657439,
- 67.58124910163149,
- 6.026499585657263,
- 29.77881349289366,
- 58.58993337807239,
- 2.2384984647495054,
- 14.505490166700486,
- 68.72449589246624,
- 76.45657404642184,
- 23.53263275794233
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 1, 1],
- "data": [
- 47.26926803588867,
- 44.72445297241211
- ],
- "type": "float32"
- }
- },
- {
- "name": "averagePool2d float32 4D tensor all negative default options",
- "inputs": {
- "input": {
- "shape": [1, 2, 5, 5],
- "data": [
- -83.87757731810672,
- -2.0740278160840973,
- -7.561108501687542,
- -45.27426240728714,
- -16.366556721916695,
- -44.90851354569205,
- -42.041864278576966,
- -44.77232004469474,
- -1.5066278585637178,
- -52.65203675020273,
- -92.0185617404752,
- -48.00409189056276,
- -61.522973144977634,
- -93.44403784112669,
- -25.780331283162965,
- -95.51873647896396,
- -10.963757774358783,
- -59.13274884066298,
- -32.601736114443554,
- -21.451043477036478,
- -87.11596404238824,
- -61.326115814276626,
- -41.989721754495825,
- -87.87648787075247,
- -71.69316094374365,
- -80.24160387383347,
- -97.48886243642632,
- -75.89422421069519,
- -45.08991580050407,
- -88.27134747370127,
- -90.71282719640234,
- -93.32392100055493,
- -59.14753161989912,
- -45.331061517612305,
- -51.325623691528534,
- -31.15479613935011,
- -31.624241001643554,
- -62.80167996617545,
- -63.5585108082942,
- -68.96183132099878,
- -43.094152045751045,
- -15.80344395122441,
- -64.31091886555717,
- -66.45872774317789,
- -42.02725165929741,
- -26.032954597038938,
- -22.737527779713233,
- -70.32036541871405,
- -85.28228199042766,
- -92.10668232344767
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 1, 1],
- "data": [
- -49.258975982666016,
- -60.52408981323242
- ],
- "type": "float32"
- }
- },
- {
- "name": "averagePool2d float32 4D tensor options.windowDimensions",
- "inputs": {
- "input": {
- "shape": [1, 2, 5, 5],
- "data": [
- 22.975555502750634,
- 78.15438048012338,
- 9.68611138116071,
- 51.29803808129347,
- 32.19308601456918,
- 87.65037289600019,
- 87.25082191311348,
- 39.49793996935087,
- 80.09963591169489,
- 10.220142557736978,
- 52.60270021646585,
- 1.4128639882603933,
- 11.954064466077474,
- 85.0007506374375,
- 64.7837446465813,
- 88.03128735720126,
- 11.333851214909307,
- 70.61659435728073,
- 84.90442561999888,
- 79.06688041781518,
- 7.328724951604215,
- 35.97796581186121,
- 10.17730631094398,
- 1.4140757517112412,
- 78.10038172113374,
- 91.59549689157087,
- 65.64701225681809,
- 55.14215004436653,
- 18.432438840756184,
- 49.34624267439973,
- 15.648024969290454,
- 68.02723372727797,
- 20.342549040418124,
- 26.72794900604616,
- 64.87446829774323,
- 46.56714896227794,
- 79.57832937136276,
- 4.338463748959498,
- 38.18383968382213,
- 45.253981324455175,
- 80.9717996657439,
- 67.58124910163149,
- 6.026499585657263,
- 29.77881349289366,
- 58.58993337807239,
- 2.2384984647495054,
- 14.505490166700486,
- 68.72449589246624,
- 76.45657404642184,
- 23.53263275794233
- ],
- "type": "float32"
- }
- },
- "options": {
- "windowDimensions": [3, 3]
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 3, 3],
- "data": [
- 43.46498107910156,
- 49.37273406982422,
- 42.7481689453125,
- 50.038944244384766,
- 52.452327728271484,
- 58.46046447753906,
- 32.15948486328125,
- 34.75465393066406,
- 54.00202560424805,
- 49.65404510498047,
- 41.824440002441406,
- 35.84912109375,
- 43.23125457763672,
- 37.842769622802734,
- 32.67961120605469,
- 41.17021942138672,
- 42.79708480834961,
- 38.987247467041016
- ],
- "type": "float32"
- }
- },
- {
- "name": "global averagePool2d float32 4D tensor all positive options.windowDimensions",
- "inputs": {
- "input": {
- "shape": [1, 2, 5, 5],
- "data": [
- 22.975555502750634,
- 78.15438048012338,
- 9.68611138116071,
- 51.29803808129347,
- 32.19308601456918,
- 87.65037289600019,
- 87.25082191311348,
- 39.49793996935087,
- 80.09963591169489,
- 10.220142557736978,
- 52.60270021646585,
- 1.4128639882603933,
- 11.954064466077474,
- 85.0007506374375,
- 64.7837446465813,
- 88.03128735720126,
- 11.333851214909307,
- 70.61659435728073,
- 84.90442561999888,
- 79.06688041781518,
- 7.328724951604215,
- 35.97796581186121,
- 10.17730631094398,
- 1.4140757517112412,
- 78.10038172113374,
- 91.59549689157087,
- 65.64701225681809,
- 55.14215004436653,
- 18.432438840756184,
- 49.34624267439973,
- 15.648024969290454,
- 68.02723372727797,
- 20.342549040418124,
- 26.72794900604616,
- 64.87446829774323,
- 46.56714896227794,
- 79.57832937136276,
- 4.338463748959498,
- 38.18383968382213,
- 45.253981324455175,
- 80.9717996657439,
- 67.58124910163149,
- 6.026499585657263,
- 29.77881349289366,
- 58.58993337807239,
- 2.2384984647495054,
- 14.505490166700486,
- 68.72449589246624,
- 76.45657404642184,
- 23.53263275794233
- ],
- "type": "float32"
- }
- },
- "options": {
- "windowDimensions": [5, 5]
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 1, 1],
- "data": [
- 47.26926803588867,
- 44.72445297241211
- ],
- "type": "float32"
- }
- },
- {
- "name": "averagePool2d float32 4D tensor options.padding",
- "inputs": {
- "input": {
- "shape": [1, 2, 5, 5],
- "data": [
- 22.975555502750634,
- 78.15438048012338,
- 9.68611138116071,
- 51.29803808129347,
- 32.19308601456918,
- 87.65037289600019,
- 87.25082191311348,
- 39.49793996935087,
- 80.09963591169489,
- 10.220142557736978,
- 52.60270021646585,
- 1.4128639882603933,
- 11.954064466077474,
- 85.0007506374375,
- 64.7837446465813,
- 88.03128735720126,
- 11.333851214909307,
- 70.61659435728073,
- 84.90442561999888,
- 79.06688041781518,
- 7.328724951604215,
- 35.97796581186121,
- 10.17730631094398,
- 1.4140757517112412,
- 78.10038172113374,
- 91.59549689157087,
- 65.64701225681809,
- 55.14215004436653,
- 18.432438840756184,
- 49.34624267439973,
- 15.648024969290454,
- 68.02723372727797,
- 20.342549040418124,
- 26.72794900604616,
- 64.87446829774323,
- 46.56714896227794,
- 79.57832937136276,
- 4.338463748959498,
- 38.18383968382213,
- 45.253981324455175,
- 80.9717996657439,
- 67.58124910163149,
- 6.026499585657263,
- 29.77881349289366,
- 58.58993337807239,
- 2.2384984647495054,
- 14.505490166700486,
- 68.72449589246624,
- 76.45657404642184,
- 23.53263275794233
- ],
- "type": "float32"
- }
- },
- "options": {
- "padding": [1, 0, 0, 1]
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 2, 2],
- "data": [
- 52.43666076660156,
- 49.84208297729492,
- 47.26926803588867,
- 46.15715408325195,
- 46.63268280029297,
- 43.616947174072266,
- 44.72445297241211,
- 44.05451583862305
- ],
- "type": "float32"
- }
- },
- {
- "name": "averagePool2d float32 4D tensor options.strides",
- "inputs": {
- "input": {
- "shape": [1, 2, 5, 5],
- "data": [
- 22.975555502750634,
- 78.15438048012338,
- 9.68611138116071,
- 51.29803808129347,
- 32.19308601456918,
- 87.65037289600019,
- 87.25082191311348,
- 39.49793996935087,
- 80.09963591169489,
- 10.220142557736978,
- 52.60270021646585,
- 1.4128639882603933,
- 11.954064466077474,
- 85.0007506374375,
- 64.7837446465813,
- 88.03128735720126,
- 11.333851214909307,
- 70.61659435728073,
- 84.90442561999888,
- 79.06688041781518,
- 7.328724951604215,
- 35.97796581186121,
- 10.17730631094398,
- 1.4140757517112412,
- 78.10038172113374,
- 91.59549689157087,
- 65.64701225681809,
- 55.14215004436653,
- 18.432438840756184,
- 49.34624267439973,
- 15.648024969290454,
- 68.02723372727797,
- 20.342549040418124,
- 26.72794900604616,
- 64.87446829774323,
- 46.56714896227794,
- 79.57832937136276,
- 4.338463748959498,
- 38.18383968382213,
- 45.253981324455175,
- 80.9717996657439,
- 67.58124910163149,
- 6.026499585657263,
- 29.77881349289366,
- 58.58993337807239,
- 2.2384984647495054,
- 14.505490166700486,
- 68.72449589246624,
- 76.45657404642184,
- 23.53263275794233
- ],
- "type": "float32"
- }
- },
- "options": {
- "windowDimensions": [3, 3],
- "strides": [2, 2]
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 2, 2],
- "data": [
- 43.46498107910156,
- 42.7481689453125,
- 32.15948486328125,
- 54.00202560424805,
- 49.65404510498047,
- 35.84912109375,
- 41.17021942138672,
- 38.987247467041016
- ],
- "type": "float32"
- }
- },
- {
- "name": "averagePool2d float32 4D tensor options.dilations",
- "inputs": {
- "input": {
- "shape": [1, 2, 5, 5],
- "data": [
- 22.975555502750634,
- 78.15438048012338,
- 9.68611138116071,
- 51.29803808129347,
- 32.19308601456918,
- 87.65037289600019,
- 87.25082191311348,
- 39.49793996935087,
- 80.09963591169489,
- 10.220142557736978,
- 52.60270021646585,
- 1.4128639882603933,
- 11.954064466077474,
- 85.0007506374375,
- 64.7837446465813,
- 88.03128735720126,
- 11.333851214909307,
- 70.61659435728073,
- 84.90442561999888,
- 79.06688041781518,
- 7.328724951604215,
- 35.97796581186121,
- 10.17730631094398,
- 1.4140757517112412,
- 78.10038172113374,
- 91.59549689157087,
- 65.64701225681809,
- 55.14215004436653,
- 18.432438840756184,
- 49.34624267439973,
- 15.648024969290454,
- 68.02723372727797,
- 20.342549040418124,
- 26.72794900604616,
- 64.87446829774323,
- 46.56714896227794,
- 79.57832937136276,
- 4.338463748959498,
- 38.18383968382213,
- 45.253981324455175,
- 80.9717996657439,
- 67.58124910163149,
- 6.026499585657263,
- 29.77881349289366,
- 58.58993337807239,
- 2.2384984647495054,
- 14.505490166700486,
- 68.72449589246624,
- 76.45657404642184,
- 23.53263275794233
- ],
- "type": "float32"
- }
- },
- "options": {
- "windowDimensions": [3, 3],
- "dilations": [2, 2]
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 1, 1],
- "data": [
- 32.2001838684082,
- 42.971012115478516
- ],
- "type": "float32"
- }
- },
- {
- "name": "averagePool2d float32 4D tensor options.layout=nchw",
- "inputs": {
- "input": {
- "shape": [1, 2, 5, 5],
- "data": [
- 22.975555502750634,
- 78.15438048012338,
- 9.68611138116071,
- 51.29803808129347,
- 32.19308601456918,
- 87.65037289600019,
- 87.25082191311348,
- 39.49793996935087,
- 80.09963591169489,
- 10.220142557736978,
- 52.60270021646585,
- 1.4128639882603933,
- 11.954064466077474,
- 85.0007506374375,
- 64.7837446465813,
- 88.03128735720126,
- 11.333851214909307,
- 70.61659435728073,
- 84.90442561999888,
- 79.06688041781518,
- 7.328724951604215,
- 35.97796581186121,
- 10.17730631094398,
- 1.4140757517112412,
- 78.10038172113374,
- 91.59549689157087,
- 65.64701225681809,
- 55.14215004436653,
- 18.432438840756184,
- 49.34624267439973,
- 15.648024969290454,
- 68.02723372727797,
- 20.342549040418124,
- 26.72794900604616,
- 64.87446829774323,
- 46.56714896227794,
- 79.57832937136276,
- 4.338463748959498,
- 38.18383968382213,
- 45.253981324455175,
- 80.9717996657439,
- 67.58124910163149,
- 6.026499585657263,
- 29.77881349289366,
- 58.58993337807239,
- 2.2384984647495054,
- 14.505490166700486,
- 68.72449589246624,
- 76.45657404642184,
- 23.53263275794233
- ],
- "type": "float32"
- }
- },
- "options": {
- "layout": "nchw"
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 1, 1],
- "data": [
- 47.26926803588867,
- 44.72445297241211
- ],
- "type": "float32"
- }
- },
- {
- "name": "averagePool2d float32 4D tensor options.layout=nhwc",
- "inputs": {
- "input": {
- "shape": [1, 5, 5, 2],
- "data": [
- 22.975555502750634,
- 91.59549689157087,
- 78.15438048012338,
- 65.64701225681809,
- 9.68611138116071,
- 55.14215004436653,
- 51.29803808129347,
- 18.432438840756184,
- 32.19308601456918,
- 49.34624267439973,
- 87.65037289600019,
- 15.648024969290454,
- 87.25082191311348,
- 68.02723372727797,
- 39.49793996935087,
- 20.342549040418124,
- 80.09963591169489,
- 26.72794900604616,
- 10.220142557736978,
- 64.87446829774323,
- 52.60270021646585,
- 46.56714896227794,
- 1.4128639882603933,
- 79.57832937136276,
- 11.954064466077474,
- 4.338463748959498,
- 85.0007506374375,
- 38.18383968382213,
- 64.7837446465813,
- 45.253981324455175,
- 88.03128735720126,
- 80.9717996657439,
- 11.333851214909307,
- 67.58124910163149,
- 70.61659435728073,
- 6.026499585657263,
- 84.90442561999888,
- 29.77881349289366,
- 79.06688041781518,
- 58.58993337807239,
- 7.328724951604215,
- 2.2384984647495054,
- 35.97796581186121,
- 14.505490166700486,
- 10.17730631094398,
- 68.72449589246624,
- 1.4140757517112412,
- 76.45657404642184,
- 78.10038172113374,
- 23.53263275794233
- ],
- "type": "float32"
- }
- },
- "options": {
- "layout": "nhwc"
- },
- "expected": {
- "name": "output",
- "shape": [1, 1, 1, 2],
- "data": [
- 47.26926803588867,
- 44.72445297241211
- ],
- "type": "float32"
- }
- },
- {
- "name": "global averagePool2d float32 4D tensor options.layout=nhwc and options.windowDimensions",
- "inputs": {
- "input": {
- "shape": [1, 5, 5, 2],
- "data": [
- 22.975555502750634,
- 91.59549689157087,
- 78.15438048012338,
- 65.64701225681809,
- 9.68611138116071,
- 55.14215004436653,
- 51.29803808129347,
- 18.432438840756184,
- 32.19308601456918,
- 49.34624267439973,
- 87.65037289600019,
- 15.648024969290454,
- 87.25082191311348,
- 68.02723372727797,
- 39.49793996935087,
- 20.342549040418124,
- 80.09963591169489,
- 26.72794900604616,
- 10.220142557736978,
- 64.87446829774323,
- 52.60270021646585,
- 46.56714896227794,
- 1.4128639882603933,
- 79.57832937136276,
- 11.954064466077474,
- 4.338463748959498,
- 85.0007506374375,
- 38.18383968382213,
- 64.7837446465813,
- 45.253981324455175,
- 88.03128735720126,
- 80.9717996657439,
- 11.333851214909307,
- 67.58124910163149,
- 70.61659435728073,
- 6.026499585657263,
- 84.90442561999888,
- 29.77881349289366,
- 79.06688041781518,
- 58.58993337807239,
- 7.328724951604215,
- 2.2384984647495054,
- 35.97796581186121,
- 14.505490166700486,
- 10.17730631094398,
- 68.72449589246624,
- 1.4140757517112412,
- 76.45657404642184,
- 78.10038172113374,
- 23.53263275794233
- ],
- "type": "float32"
- }
- },
- "options": {
- "layout": "nhwc",
- "windowDimensions": [5, 5]
- },
- "expected": {
- "name": "output",
- "shape": [1, 1, 1, 2],
- "data": [
- 47.26926803588867,
- 44.72445297241211
- ],
- "type": "float32"
- }
- },
- {
- "name": "averagePool2d float32 4D tensor options.roundingType=floor",
- "inputs": {
- "input": {
- "shape": [1, 2, 5, 5],
- "data": [
- 22.975555502750634,
- 78.15438048012338,
- 9.68611138116071,
- 51.29803808129347,
- 32.19308601456918,
- 87.65037289600019,
- 87.25082191311348,
- 39.49793996935087,
- 80.09963591169489,
- 10.220142557736978,
- 52.60270021646585,
- 1.4128639882603933,
- 11.954064466077474,
- 85.0007506374375,
- 64.7837446465813,
- 88.03128735720126,
- 11.333851214909307,
- 70.61659435728073,
- 84.90442561999888,
- 79.06688041781518,
- 7.328724951604215,
- 35.97796581186121,
- 10.17730631094398,
- 1.4140757517112412,
- 78.10038172113374,
- 91.59549689157087,
- 65.64701225681809,
- 55.14215004436653,
- 18.432438840756184,
- 49.34624267439973,
- 15.648024969290454,
- 68.02723372727797,
- 20.342549040418124,
- 26.72794900604616,
- 64.87446829774323,
- 46.56714896227794,
- 79.57832937136276,
- 4.338463748959498,
- 38.18383968382213,
- 45.253981324455175,
- 80.9717996657439,
- 67.58124910163149,
- 6.026499585657263,
- 29.77881349289366,
- 58.58993337807239,
- 2.2384984647495054,
- 14.505490166700486,
- 68.72449589246624,
- 76.45657404642184,
- 23.53263275794233
- ],
- "type": "float32"
- }
- },
- "options": {
- "windowDimensions": [3, 3],
- "padding": [1, 0, 0, 1],
- "strides": [2, 2],
- "roundingType": "floor"
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 2, 2],
- "data": [
- 54.20252990722656,
- 37.16582489013672,
- 50.038944244384766,
- 58.46046447753906,
- 52.73374557495117,
- 39.1442985534668,
- 43.23125457763672,
- 32.67961120605469
- ],
- "type": "float32"
- }
- },
- {
- "name": "averagePool2d float32 4D tensor options.roundingType=ceil",
- "inputs": {
- "input": {
- "shape": [1, 2, 5, 5],
- "data": [
- 22.975555502750634,
- 78.15438048012338,
- 9.68611138116071,
- 51.29803808129347,
- 32.19308601456918,
- 87.65037289600019,
- 87.25082191311348,
- 39.49793996935087,
- 80.09963591169489,
- 10.220142557736978,
- 52.60270021646585,
- 1.4128639882603933,
- 11.954064466077474,
- 85.0007506374375,
- 64.7837446465813,
- 88.03128735720126,
- 11.333851214909307,
- 70.61659435728073,
- 84.90442561999888,
- 79.06688041781518,
- 7.328724951604215,
- 35.97796581186121,
- 10.17730631094398,
- 1.4140757517112412,
- 78.10038172113374,
- 91.59549689157087,
- 65.64701225681809,
- 55.14215004436653,
- 18.432438840756184,
- 49.34624267439973,
- 15.648024969290454,
- 68.02723372727797,
- 20.342549040418124,
- 26.72794900604616,
- 64.87446829774323,
- 46.56714896227794,
- 79.57832937136276,
- 4.338463748959498,
- 38.18383968382213,
- 45.253981324455175,
- 80.9717996657439,
- 67.58124910163149,
- 6.026499585657263,
- 29.77881349289366,
- 58.58993337807239,
- 2.2384984647495054,
- 14.505490166700486,
- 68.72449589246624,
- 76.45657404642184,
- 23.53263275794233
- ],
- "type": "float32"
- }
- },
- "options": {
- "windowDimensions": [3, 3],
- "padding": [1, 0, 0, 1],
- "strides": [2, 2],
- "roundingType": "ceil"
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 3, 3],
- "data": [
- 54.20252990722656,
- 37.16582489013672,
- 21.206613540649414,
- 50.038944244384766,
- 58.46046447753906,
- 51.3569221496582,
- 37.24428939819336,
- 54.04661178588867,
- 78.58363342285156,
- 52.73374557495117,
- 39.1442985534668,
- 57.1103515625,
- 43.23125457763672,
- 32.67961120605469,
- 56.23945999145508,
- 40.00800323486328,
- 43.85149002075195,
- 41.061283111572266
- ],
- "type": "float32"
- }
- },
- {
- "name": "averagePool2d float32 4D tensor options.layout=nhwc and options.roundingType=floor",
- "inputs": {
- "input": {
- "shape": [1, 5, 5, 2],
- "data": [
- 22.975555502750634,
- 91.59549689157087,
- 78.15438048012338,
- 65.64701225681809,
- 9.68611138116071,
- 55.14215004436653,
- 51.29803808129347,
- 18.432438840756184,
- 32.19308601456918,
- 49.34624267439973,
- 87.65037289600019,
- 15.648024969290454,
- 87.25082191311348,
- 68.02723372727797,
- 39.49793996935087,
- 20.342549040418124,
- 80.09963591169489,
- 26.72794900604616,
- 10.220142557736978,
- 64.87446829774323,
- 52.60270021646585,
- 46.56714896227794,
- 1.4128639882603933,
- 79.57832937136276,
- 11.954064466077474,
- 4.338463748959498,
- 85.0007506374375,
- 38.18383968382213,
- 64.7837446465813,
- 45.253981324455175,
- 88.03128735720126,
- 80.9717996657439,
- 11.333851214909307,
- 67.58124910163149,
- 70.61659435728073,
- 6.026499585657263,
- 84.90442561999888,
- 29.77881349289366,
- 79.06688041781518,
- 58.58993337807239,
- 7.328724951604215,
- 2.2384984647495054,
- 35.97796581186121,
- 14.505490166700486,
- 10.17730631094398,
- 68.72449589246624,
- 1.4140757517112412,
- 76.45657404642184,
- 78.10038172113374,
- 23.53263275794233
- ],
- "type": "float32"
- }
- },
- "options": {
- "windowDimensions": [3, 3],
- "padding": [1, 0, 0, 1],
- "strides": [2, 2],
- "layout": "nhwc",
- "roundingType": "floor"
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 2, 2],
- "data": [
- 54.20252990722656,
- 52.73374557495117,
- 37.16582489013672,
- 39.1442985534668,
- 50.038944244384766,
- 43.23125457763672,
- 58.46046447753906,
- 32.67961120605469
- ],
- "type": "float32"
- }
- },
- {
- "name": "averagePool2d float32 4D tensor options.layout=nhwc and options.roundingType=ceil",
- "inputs": {
- "input": {
- "shape": [1, 5, 5, 2],
- "data": [
- 22.975555502750634,
- 91.59549689157087,
- 78.15438048012338,
- 65.64701225681809,
- 9.68611138116071,
- 55.14215004436653,
- 51.29803808129347,
- 18.432438840756184,
- 32.19308601456918,
- 49.34624267439973,
- 87.65037289600019,
- 15.648024969290454,
- 87.25082191311348,
- 68.02723372727797,
- 39.49793996935087,
- 20.342549040418124,
- 80.09963591169489,
- 26.72794900604616,
- 10.220142557736978,
- 64.87446829774323,
- 52.60270021646585,
- 46.56714896227794,
- 1.4128639882603933,
- 79.57832937136276,
- 11.954064466077474,
- 4.338463748959498,
- 85.0007506374375,
- 38.18383968382213,
- 64.7837446465813,
- 45.253981324455175,
- 88.03128735720126,
- 80.9717996657439,
- 11.333851214909307,
- 67.58124910163149,
- 70.61659435728073,
- 6.026499585657263,
- 84.90442561999888,
- 29.77881349289366,
- 79.06688041781518,
- 58.58993337807239,
- 7.328724951604215,
- 2.2384984647495054,
- 35.97796581186121,
- 14.505490166700486,
- 10.17730631094398,
- 68.72449589246624,
- 1.4140757517112412,
- 76.45657404642184,
- 78.10038172113374,
- 23.53263275794233
- ],
- "type": "float32"
- }
- },
- "options": {
- "windowDimensions": [3, 3],
- "padding": [1, 0, 0, 1],
- "strides": [2, 2],
- "layout": "nhwc",
- "roundingType": "ceil"
- },
- "expected": {
- "name": "output",
- "shape": [1, 3, 3, 2],
- "data": [
- 54.20252990722656,
- 52.73374557495117,
- 37.16582489013672,
- 39.1442985534668,
- 21.206613540649414,
- 57.1103515625,
- 50.038944244384766,
- 43.23125457763672,
- 58.46046447753906,
- 32.67961120605469,
- 51.3569221496582,
- 56.23945999145508,
- 37.24428939819336,
- 40.00800323486328,
- 54.04661178588867,
- 43.85149002075195,
- 78.58363342285156,
- 41.061283111572266
- ],
- "type": "float32"
- }
- },
- {
- "name": "averagePool2d float32 4D tensor options.outputSizes ignores options.roundingType=floor",
- "inputs": {
- "input": {
- "shape": [1, 2, 5, 5],
- "data": [
- 22.975555502750634,
- 78.15438048012338,
- 9.68611138116071,
- 51.29803808129347,
- 32.19308601456918,
- 87.65037289600019,
- 87.25082191311348,
- 39.49793996935087,
- 80.09963591169489,
- 10.220142557736978,
- 52.60270021646585,
- 1.4128639882603933,
- 11.954064466077474,
- 85.0007506374375,
- 64.7837446465813,
- 88.03128735720126,
- 11.333851214909307,
- 70.61659435728073,
- 84.90442561999888,
- 79.06688041781518,
- 7.328724951604215,
- 35.97796581186121,
- 10.17730631094398,
- 1.4140757517112412,
- 78.10038172113374,
- 91.59549689157087,
- 65.64701225681809,
- 55.14215004436653,
- 18.432438840756184,
- 49.34624267439973,
- 15.648024969290454,
- 68.02723372727797,
- 20.342549040418124,
- 26.72794900604616,
- 64.87446829774323,
- 46.56714896227794,
- 79.57832937136276,
- 4.338463748959498,
- 38.18383968382213,
- 45.253981324455175,
- 80.9717996657439,
- 67.58124910163149,
- 6.026499585657263,
- 29.77881349289366,
- 58.58993337807239,
- 2.2384984647495054,
- 14.505490166700486,
- 68.72449589246624,
- 76.45657404642184,
- 23.53263275794233
- ],
- "type": "float32"
- }
- },
- "options": {
- "windowDimensions": [3, 3],
- "padding": [1, 0, 0, 1],
- "strides": [2, 2],
- "roundingType": "floor",
- "outputSizes": [3, 3]
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 3, 3],
- "data": [
- 54.20252990722656,
- 37.16582489013672,
- 21.206613540649414,
- 50.038944244384766,
- 58.46046447753906,
- 51.3569221496582,
- 37.24428939819336,
- 54.04661178588867,
- 78.58363342285156,
- 52.73374557495117,
- 39.1442985534668,
- 57.1103515625,
- 43.23125457763672,
- 32.67961120605469,
- 56.23945999145508,
- 40.00800323486328,
- 43.85149002075195,
- 41.061283111572266
- ],
- "type": "float32"
- }
- },
- {
- "name": "averagePool2d float32 4D tensor options.outputSizes ignores options.roundingType=ceil",
- "inputs": {
- "input": {
- "shape": [1, 2, 5, 5],
- "data": [
- 22.975555502750634,
- 78.15438048012338,
- 9.68611138116071,
- 51.29803808129347,
- 32.19308601456918,
- 87.65037289600019,
- 87.25082191311348,
- 39.49793996935087,
- 80.09963591169489,
- 10.220142557736978,
- 52.60270021646585,
- 1.4128639882603933,
- 11.954064466077474,
- 85.0007506374375,
- 64.7837446465813,
- 88.03128735720126,
- 11.333851214909307,
- 70.61659435728073,
- 84.90442561999888,
- 79.06688041781518,
- 7.328724951604215,
- 35.97796581186121,
- 10.17730631094398,
- 1.4140757517112412,
- 78.10038172113374,
- 91.59549689157087,
- 65.64701225681809,
- 55.14215004436653,
- 18.432438840756184,
- 49.34624267439973,
- 15.648024969290454,
- 68.02723372727797,
- 20.342549040418124,
- 26.72794900604616,
- 64.87446829774323,
- 46.56714896227794,
- 79.57832937136276,
- 4.338463748959498,
- 38.18383968382213,
- 45.253981324455175,
- 80.9717996657439,
- 67.58124910163149,
- 6.026499585657263,
- 29.77881349289366,
- 58.58993337807239,
- 2.2384984647495054,
- 14.505490166700486,
- 68.72449589246624,
- 76.45657404642184,
- 23.53263275794233
- ],
- "type": "float32"
- }
- },
- "options": {
- "windowDimensions": [3, 3],
- "padding": [1, 0, 0, 1],
- "strides": [2, 2],
- "roundingType": "ceil",
- "outputSizes": [2, 2]
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 2, 2],
- "data": [
- 54.20252990722656,
- 37.16582489013672,
- 50.038944244384766,
- 58.46046447753906,
- 52.73374557495117,
- 39.1442985534668,
- 43.23125457763672,
- 32.67961120605469
- ],
- "type": "float32"
- }
- },
- {
- "name": "averagePool2d float32 4D tensor options.dilations with options.strides",
- "inputs": {
- "input": {
- "shape": [1, 7, 7, 2],
- "data": [
- 70.71148774443492,
- 99.33489815408664,
- 76.41767900938127,
- 39.409808491208075,
- 38.163289750884786,
- 45.97125579577395,
- 65.35275817451954,
- 64.51607308318059,
- 7.725966798101558,
- 41.76720213197029,
- 94.92633986102845,
- 53.4757741282748,
- 95.46460581561715,
- 58.46179617509972,
- 15.831390456395834,
- 78.41020177955981,
- 24.454091426720414,
- 20.630917089878963,
- 32.06352406991017,
- 47.85192144436541,
- 91.60813996882193,
- 72.3534960877585,
- 74.69429879171796,
- 28.860215094737086,
- 71.82395761056222,
- 7.989691677216348,
- 88.16659758415284,
- 58.6985038368079,
- 63.60618868578896,
- 55.8818785297152,
- 52.80997356964097,
- 72.91473981865086,
- 46.95766296624579,
- 22.102796753895348,
- 87.14309482408858,
- 89.6496773704621,
- 63.1961060394868,
- 11.760882769042901,
- 70.68730644647478,
- 57.704439449166166,
- 1.1838214608898001,
- 25.26912465963118,
- 95.29122935012228,
- 1.9658531197579432,
- 53.368467017876874,
- 21.40085377593268,
- 55.86185685082425,
- 27.824509095022275,
- 7.642839647105948,
- 82.34233289843691,
- 91.7521616316225,
- 62.791557264860565,
- 28.11526123625361,
- 28.724785838845257,
- 29.887035626290203,
- 66.43102984451734,
- 7.010304526340372,
- 34.337018989980514,
- 73.20159661759989,
- 7.883560316368032,
- 17.82563551949343,
- 33.79915704452567,
- 65.01251297487225,
- 30.264028793619268,
- 75.76551637076324,
- 21.1508003371365,
- 60.84249522847649,
- 98.56522463801258,
- 62.609908350393084,
- 42.42991434971615,
- 53.142145502626946,
- 36.295458325008624,
- 79.95863074037406,
- 79.6073479374342,
- 16.05911470947725,
- 19.27552016276064,
- 53.930229800491915,
- 48.416206270762906,
- 93.00965219282095,
- 62.08652309606562,
- 83.50532824078782,
- 61.079643266937,
- 75.51439445416229,
- 54.19378092928726,
- 2.5728738625729886,
- 59.476519581318875,
- 34.22541363563057,
- 13.070153382932116,
- 12.419061788136698,
- 55.82337008512126,
- 4.55381397818555,
- 63.4783048068831,
- 62.35559240600399,
- 56.96109146563499,
- 34.770159024929015,
- 0.9611224125308793,
- 35.306870987826144,
- 98.0079011498779
- ],
- "type": "float32"
- }
- },
- "options": {
- "windowDimensions": [3, 3],
- "padding": [1, 0, 0, 1],
- "strides": [2, 2],
- "layout": "nhwc"
- },
- "expected": {
- "name": "output",
- "shape": [1, 3, 3, 2],
- "data": [
- 42.940242767333984,
- 55.268165588378906,
- 51.6013298034668,
- 50.220027923583984,
- 72.13362884521484,
- 41.542198181152344,
- 48.91604232788086,
- 38.775962829589844,
- 61.21329879760742,
- 49.504154205322266,
- 57.72294998168945,
- 38.6922492980957,
- 50.19099807739258,
- 29.15436363220215,
- 52.98439025878906,
- 43.10562515258789,
- 66.77796936035156,
- 55.2725830078125
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/batch_normalization.json b/tests/wpt/tests/webnn/resources/test_data/batch_normalization.json
deleted file mode 100644
index f1d445e3724..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/batch_normalization.json
+++ /dev/null
@@ -1,1092 +0,0 @@
-{
- "tests": [
- {
- "name": "batchNormalization float32 2D tensor (mean and variance are non-constant) default options",
- "inputs": {
- "input": {
- "shape": [4, 6],
- "data": [
- -41.30732967168238,
- 64.08864045143429,
- -63.376671841233104,
- -46.7903680211994,
- 83.0222726565018,
- -80.08049213079853,
- -62.144380499565784,
- -0.10012771650340824,
- -40.902161220312074,
- 56.963061967558474,
- 37.37249789808206,
- 57.04647733193906,
- 82.05679802728304,
- -86.11642850667623,
- 76.88317547014259,
- 97.03362133579051,
- -21.35103988063949,
- -96.93823797160586,
- -9.359310262561493,
- 80.2082435478892,
- -85.36802529512583,
- 62.35185227095363,
- -68.4724340974042,
- -12.107167478351585
- ],
- "type": "float32"
- },
- "mean": {
- "shape": [6],
- "data": [
- -7.814267643537363,
- -95.6412954353084,
- 38.154405424391285,
- -55.9520351570133,
- -87.8650062484926,
- -41.636455304505525
- ],
- "type": "float32"
- },
- "variance": {
- "shape": [6],
- "data": [
- 60.311864286118144,
- 26.432604504927436,
- 53.275636661772396,
- 40.146120500534074,
- 59.41098289103077,
- 35.99981828466932
- ],
- "type": "float32"
- }
- },
- "expected": {
- "shape": [4, 6],
- "data": [
- -4.312741756439209,
- 31.068212509155273,
- -13.910240173339844,
- 1.4459478855133057,
- 22.170541763305664,
- -6.407354354858398,
- -6.995829105377197,
- 18.583200454711914,
- -10.831125259399414,
- 17.820920944213867,
- 16.2480411529541,
- 16.447195053100586,
- 11.57226848602295,
- 1.8526301383972168,
- 5.306026458740234,
- 24.145092010498047,
- 8.629376411437988,
- -9.216986656188965,
- -0.1989477425813675,
- 34.203548431396484,
- -16.923160552978516,
- 18.671411514282227,
- 2.5159497261047363,
- 4.921559810638428
- ],
- "type": "float32"
- }
- },
- {
- "name": "batchNormalization float32 2D constant tensor default options",
- "inputs": {
- "input": {
- "shape": [4, 6],
- "data": [
- -41.30732967168238,
- 64.08864045143429,
- -63.376671841233104,
- -46.7903680211994,
- 83.0222726565018,
- -80.08049213079853,
- -62.144380499565784,
- -0.10012771650340824,
- -40.902161220312074,
- 56.963061967558474,
- 37.37249789808206,
- 57.04647733193906,
- 82.05679802728304,
- -86.11642850667623,
- 76.88317547014259,
- 97.03362133579051,
- -21.35103988063949,
- -96.93823797160586,
- -9.359310262561493,
- 80.2082435478892,
- -85.36802529512583,
- 62.35185227095363,
- -68.4724340974042,
- -12.107167478351585
- ],
- "type": "float32",
- "constant": true
- },
- "mean": {
- "shape": [6],
- "data": [
- -7.814267643537363,
- -95.6412954353084,
- 38.154405424391285,
- -55.9520351570133,
- -87.8650062484926,
- -41.636455304505525
- ],
- "type": "float32",
- "constant": true
- },
- "variance": {
- "shape": [6],
- "data": [
- 60.311864286118144,
- 26.432604504927436,
- 53.275636661772396,
- 40.146120500534074,
- 59.41098289103077,
- 35.99981828466932
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "shape": [4, 6],
- "data": [
- -4.312741756439209,
- 31.068212509155273,
- -13.910240173339844,
- 1.4459478855133057,
- 22.170541763305664,
- -6.407354354858398,
- -6.995829105377197,
- 18.583200454711914,
- -10.831125259399414,
- 17.820920944213867,
- 16.2480411529541,
- 16.447195053100586,
- 11.57226848602295,
- 1.8526301383972168,
- 5.306026458740234,
- 24.145092010498047,
- 8.629376411437988,
- -9.216986656188965,
- -0.1989477425813675,
- 34.203548431396484,
- -16.923160552978516,
- 18.671411514282227,
- 2.5159497261047363,
- 4.921559810638428
- ],
- "type": "float32"
- }
- },
- {
- "name": "batchNormalization float32 2D tensor default options",
- "inputs": {
- "input": {
- "shape": [4, 6],
- "data": [
- -41.30732967168238,
- 64.08864045143429,
- -63.376671841233104,
- -46.7903680211994,
- 83.0222726565018,
- -80.08049213079853,
- -62.144380499565784,
- -0.10012771650340824,
- -40.902161220312074,
- 56.963061967558474,
- 37.37249789808206,
- 57.04647733193906,
- 82.05679802728304,
- -86.11642850667623,
- 76.88317547014259,
- 97.03362133579051,
- -21.35103988063949,
- -96.93823797160586,
- -9.359310262561493,
- 80.2082435478892,
- -85.36802529512583,
- 62.35185227095363,
- -68.4724340974042,
- -12.107167478351585
- ],
- "type": "float32"
- },
- "mean": {
- "shape": [6],
- "data": [
- -7.814267643537363,
- -95.6412954353084,
- 38.154405424391285,
- -55.9520351570133,
- -87.8650062484926,
- -41.636455304505525
- ],
- "type": "float32",
- "constant": true
- },
- "variance": {
- "shape": [6],
- "data": [
- 60.311864286118144,
- 26.432604504927436,
- 53.275636661772396,
- 40.146120500534074,
- 59.41098289103077,
- 35.99981828466932
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "shape": [4, 6],
- "data": [
- -4.312741756439209,
- 31.068212509155273,
- -13.910240173339844,
- 1.4459478855133057,
- 22.170541763305664,
- -6.407354354858398,
- -6.995829105377197,
- 18.583200454711914,
- -10.831125259399414,
- 17.820920944213867,
- 16.2480411529541,
- 16.447195053100586,
- 11.57226848602295,
- 1.8526301383972168,
- 5.306026458740234,
- 24.145092010498047,
- 8.629376411437988,
- -9.216986656188965,
- -0.1989477425813675,
- 34.203548431396484,
- -16.923160552978516,
- 18.671411514282227,
- 2.5159497261047363,
- 4.921559810638428
- ],
- "type": "float32"
- }
- },
- {
- "name": "batchNormalization float32 3D tensor default options",
- "inputs": {
- "input": {
- "shape": [2, 3, 4],
- "data": [
- -41.30732967168238,
- 64.08864045143429,
- -63.376671841233104,
- -46.7903680211994,
- 83.0222726565018,
- -80.08049213079853,
- -62.144380499565784,
- -0.10012771650340824,
- -40.902161220312074,
- 56.963061967558474,
- 37.37249789808206,
- 57.04647733193906,
- 82.05679802728304,
- -86.11642850667623,
- 76.88317547014259,
- 97.03362133579051,
- -21.35103988063949,
- -96.93823797160586,
- -9.359310262561493,
- 80.2082435478892,
- -85.36802529512583,
- 62.35185227095363,
- -68.4724340974042,
- -12.107167478351585
- ],
- "type": "float32"
- },
- "mean": {
- "shape": [3],
- "data": [
- 12.810381162337634,
- 63.13715247590298,
- -61.6298331266107
- ],
- "type": "float32",
- "constant": true
- },
- "variance": {
- "shape": [3],
- "data": [
- 18.35824023925998,
- 41.847234441124506,
- 16.128282835364406
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "shape": [2, 3, 4],
- "data": [
- -12.630594253540039,
- 11.967890739440918,
- -17.781383514404297,
- -13.910285949707031,
- 3.0739352703094482,
- -22.139259338378906,
- -19.36661148071289,
- -9.775517463684082,
- 5.161267280578613,
- 29.53006935119629,
- 24.651947021484375,
- 29.550840377807617,
- 16.161500930786133,
- -23.088642120361328,
- 14.954023361206055,
- 19.656957626342773,
- -13.06058406829834,
- -24.745210647583008,
- -11.206846237182617,
- 2.638929843902588,
- -5.910898208618164,
- 30.871898651123047,
- -1.7038332223892212,
- 12.331327438354492
- ],
- "type": "float32"
- }
- },
- {
- "name": "batchNormalization float32 4D tensor default options",
- "inputs": {
- "input": {
- "shape": [2, 3, 2, 2],
- "data": [
- -41.30732967168238,
- 64.08864045143429,
- -63.376671841233104,
- -46.7903680211994,
- 83.0222726565018,
- -80.08049213079853,
- -62.144380499565784,
- -0.10012771650340824,
- -40.902161220312074,
- 56.963061967558474,
- 37.37249789808206,
- 57.04647733193906,
- 82.05679802728304,
- -86.11642850667623,
- 76.88317547014259,
- 97.03362133579051,
- -21.35103988063949,
- -96.93823797160586,
- -9.359310262561493,
- 80.2082435478892,
- -85.36802529512583,
- 62.35185227095363,
- -68.4724340974042,
- -12.107167478351585
- ],
- "type": "float32"
- },
- "mean": {
- "shape": [3],
- "data": [
- 51.62914995931095,
- 99.36075401019252,
- -96.14736495234415
- ],
- "type": "float32",
- "constant": true
- },
- "variance": {
- "shape": [3],
- "data": [
- 30.448016067921067,
- 86.36218998771075,
- 73.88454888724165
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "shape": [2, 3, 2, 2],
- "data": [
- -16.842504501342773,
- 2.2579827308654785,
- -20.842041015625,
- -17.836172103881836,
- -1.7581257820129395,
- -19.30902862548828,
- -17.37898826599121,
- -10.702629089355469,
- 6.4271392822265625,
- 17.812623977661133,
- 15.533489227294922,
- 17.822328567504883,
- 5.514280319213867,
- -24.963077545166016,
- 4.576685905456543,
- 8.228469848632812,
- -12.989363670349121,
- -21.123029708862305,
- -11.698976516723633,
- -2.0609331130981445,
- 1.2540507316589355,
- 18.43954849243164,
- 3.2196571826934814,
- 9.777103424072266
- ],
- "type": "float32"
- }
- },
- {
- "name": "batchNormalization float32 5D tensor default options",
- "inputs": {
- "input": {
- "shape": [6, 1, 1, 2, 2],
- "data": [
- -41.30732967168238,
- 64.08864045143429,
- -63.376671841233104,
- -46.7903680211994,
- 83.0222726565018,
- -80.08049213079853,
- -62.144380499565784,
- -0.10012771650340824,
- -40.902161220312074,
- 56.963061967558474,
- 37.37249789808206,
- 57.04647733193906,
- 82.05679802728304,
- -86.11642850667623,
- 76.88317547014259,
- 97.03362133579051,
- -21.35103988063949,
- -96.93823797160586,
- -9.359310262561493,
- 80.2082435478892,
- -85.36802529512583,
- 62.35185227095363,
- -68.4724340974042,
- -12.107167478351585
- ],
- "type": "float32"
- },
- "mean": {
- "shape": [1],
- "data": [
- 35.407824570198215
- ],
- "type": "float32",
- "constant": true
- },
- "variance": {
- "shape": [1],
- "data": [
- 40.931099315280846
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "shape": [6, 1, 1, 2, 2],
- "data": [
- -11.990972518920898,
- 4.4829583168029785,
- -15.440524101257324,
- -12.847999572753906,
- 7.442382335662842,
- -18.051416397094727,
- -15.247910499572754,
- -5.550075531005859,
- -11.927642822265625,
- 3.369194269180298,
- 0.30708834528923035,
- 3.382232427597046,
- 7.291474342346191,
- -18.99486541748047,
- 6.4828104972839355,
- 9.632428169250488,
- -8.871702194213867,
- -20.686368942260742,
- -6.99733304977417,
- 7.002535343170166,
- -18.877885818481445,
- 4.211489677429199,
- -16.237018585205078,
- -7.42683744430542
- ],
- "type": "float32"
- }
- },
- {
- "name": "batchNormalization float32 4D NCHW tensor options.axis=1",
- "inputs": {
- "input": {
- "shape": [2, 3, 2, 2],
- "data": [
- -41.30732967168238,
- 64.08864045143429,
- -63.376671841233104,
- -46.7903680211994,
- 83.0222726565018,
- -80.08049213079853,
- -62.144380499565784,
- -0.10012771650340824,
- -40.902161220312074,
- 56.963061967558474,
- 37.37249789808206,
- 57.04647733193906,
- 82.05679802728304,
- -86.11642850667623,
- 76.88317547014259,
- 97.03362133579051,
- -21.35103988063949,
- -96.93823797160586,
- -9.359310262561493,
- 80.2082435478892,
- -85.36802529512583,
- 62.35185227095363,
- -68.4724340974042,
- -12.107167478351585
- ],
- "type": "float32"
- },
- "mean": {
- "shape": [3],
- "data": [
- 51.62914995931095,
- 99.36075401019252,
- -96.14736495234415
- ],
- "type": "float32",
- "constant": true
- },
- "variance": {
- "shape": [3],
- "data": [
- 30.448016067921067,
- 86.36218998771075,
- 73.88454888724165
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "axis": 1
- },
- "expected": {
- "shape": [2, 3, 2, 2],
- "data": [
- -16.842504501342773,
- 2.2579827308654785,
- -20.842041015625,
- -17.836172103881836,
- -1.7581257820129395,
- -19.30902862548828,
- -17.37898826599121,
- -10.702629089355469,
- 6.4271392822265625,
- 17.812623977661133,
- 15.533489227294922,
- 17.822328567504883,
- 5.514280319213867,
- -24.963077545166016,
- 4.576685905456543,
- 8.228469848632812,
- -12.989363670349121,
- -21.123029708862305,
- -11.698976516723633,
- -2.0609331130981445,
- 1.2540507316589355,
- 18.43954849243164,
- 3.2196571826934814,
- 9.777103424072266
- ],
- "type": "float32"
- }
- },
- {
- "name": "batchNormalization float32 4D NHWC tensor options.axis=3",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- -41.30732967168238,
- 83.0222726565018,
- -40.902161220312074,
- 64.08864045143429,
- -80.08049213079853,
- 56.963061967558474,
- -63.376671841233104,
- -62.144380499565784,
- 37.37249789808206,
- -46.7903680211994,
- -0.10012771650340824,
- 57.04647733193906,
- 82.05679802728304,
- -21.35103988063949,
- -85.36802529512583,
- -86.11642850667623,
- -96.93823797160586,
- 62.35185227095363,
- 76.88317547014259,
- -9.359310262561493,
- -68.4724340974042,
- 97.03362133579051,
- 80.2082435478892,
- -12.107167478351585
- ],
- "type": "float32"
- },
- "mean": {
- "shape": [3],
- "data": [
- 51.62914995931095,
- 99.36075401019252,
- -96.14736495234415
- ],
- "type": "float32",
- "constant": true
- },
- "variance": {
- "shape": [3],
- "data": [
- 30.448016067921067,
- 86.36218998771075,
- 73.88454888724165
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "axis": 3
- },
- "expected": {
- "shape": [2, 2, 2, 3],
- "data": [
- -16.842504501342773,
- -1.7581257820129395,
- 6.4271392822265625,
- 2.2579827308654785,
- -19.30902862548828,
- 17.812623977661133,
- -20.842041015625,
- -17.37898826599121,
- 15.533489227294922,
- -17.836172103881836,
- -10.702629089355469,
- 17.822328567504883,
- 5.514280319213867,
- -12.989363670349121,
- 1.2540507316589355,
- -24.963077545166016,
- -21.123029708862305,
- 18.43954849243164,
- 4.576685905456543,
- -11.698976516723633,
- 3.2196571826934814,
- 8.228469848632812,
- -2.0609331130981445,
- 9.777103424072266
- ],
- "type": "float32"
- }
- },
- {
- "name": "batchNormalization float32 4D NCHW tensor options.scale",
- "inputs": {
- "input": {
- "shape": [2, 3, 2, 2],
- "data": [
- -41.30732967168238,
- 64.08864045143429,
- -63.376671841233104,
- -46.7903680211994,
- 83.0222726565018,
- -80.08049213079853,
- -62.144380499565784,
- -0.10012771650340824,
- -40.902161220312074,
- 56.963061967558474,
- 37.37249789808206,
- 57.04647733193906,
- 82.05679802728304,
- -86.11642850667623,
- 76.88317547014259,
- 97.03362133579051,
- -21.35103988063949,
- -96.93823797160586,
- -9.359310262561493,
- 80.2082435478892,
- -85.36802529512583,
- 62.35185227095363,
- -68.4724340974042,
- -12.107167478351585
- ],
- "type": "float32"
- },
- "mean": {
- "shape": [3],
- "data": [
- 51.62914995931095,
- 99.36075401019252,
- -96.14736495234415
- ],
- "type": "float32",
- "constant": true
- },
- "variance": {
- "shape": [3],
- "data": [
- 30.448016067921067,
- 86.36218998771075,
- 73.88454888724165
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "scale": {
- "shape": [3],
- "data": [
- 65.50171582968795,
- -71.00757080938772,
- -5.569730877611249
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "shape": [2, 3, 2, 2],
- "data": [
- -1103.212890625,
- 147.90174865722656,
- -1365.189453125,
- -1168.2999267578125,
- 124.84024047851562,
- 1371.087158203125,
- 1234.0396728515625,
- 759.9676513671875,
- -35.79743576049805,
- -99.2115249633789,
- -86.51734924316406,
- -99.26557159423828,
- 361.19482421875,
- -1635.1243896484375,
- 299.78076171875,
- 538.9788818359375,
- 922.3430786132812,
- 1499.89501953125,
- 830.7158813476562,
- 146.3418426513672,
- -6.984724998474121,
- -102.70331573486328,
- -17.9326229095459,
- -54.455833435058594
- ],
- "type": "float32"
- }
- },
- {
- "name": "batchNormalization float32 4D NCHW tensor options.bias",
- "inputs": {
- "input": {
- "shape": [2, 3, 2, 2],
- "data": [
- -41.30732967168238,
- 64.08864045143429,
- -63.376671841233104,
- -46.7903680211994,
- 83.0222726565018,
- -80.08049213079853,
- -62.144380499565784,
- -0.10012771650340824,
- -40.902161220312074,
- 56.963061967558474,
- 37.37249789808206,
- 57.04647733193906,
- 82.05679802728304,
- -86.11642850667623,
- 76.88317547014259,
- 97.03362133579051,
- -21.35103988063949,
- -96.93823797160586,
- -9.359310262561493,
- 80.2082435478892,
- -85.36802529512583,
- 62.35185227095363,
- -68.4724340974042,
- -12.107167478351585
- ],
- "type": "float32"
- },
- "mean": {
- "shape": [3],
- "data": [
- 51.62914995931095,
- 99.36075401019252,
- -96.14736495234415
- ],
- "type": "float32",
- "constant": true
- },
- "variance": {
- "shape": [3],
- "data": [
- 30.448016067921067,
- 86.36218998771075,
- 73.88454888724165
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "bias": {
- "shape": [3],
- "data": [
- 64.20446782594775,
- 75.28591851497856,
- -84.57243127763437
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "shape": [2, 3, 2, 2],
- "data": [
- 47.36196517944336,
- 66.46244812011719,
- 43.3624267578125,
- 46.36829376220703,
- 73.52779388427734,
- 55.976890563964844,
- 57.90693283081055,
- 64.58329010009766,
- -78.14529418945312,
- -66.75981140136719,
- -69.03894805908203,
- -66.75010681152344,
- 69.71875,
- 39.241390228271484,
- 68.7811508178711,
- 72.43293762207031,
- 62.29655456542969,
- 54.16288757324219,
- 63.586944580078125,
- 73.22498321533203,
- -83.3183822631836,
- -66.13288879394531,
- -81.35277557373047,
- -74.79533386230469
- ],
- "type": "float32"
- }
- },
- {
- "name": "batchNormalization float32 4D NCHW tensor options.epsilon",
- "inputs": {
- "input": {
- "shape": [2, 3, 2, 2],
- "data": [
- -41.30732967168238,
- 64.08864045143429,
- -63.376671841233104,
- -46.7903680211994,
- 83.0222726565018,
- -80.08049213079853,
- -62.144380499565784,
- -0.10012771650340824,
- -40.902161220312074,
- 56.963061967558474,
- 37.37249789808206,
- 57.04647733193906,
- 82.05679802728304,
- -86.11642850667623,
- 76.88317547014259,
- 97.03362133579051,
- -21.35103988063949,
- -96.93823797160586,
- -9.359310262561493,
- 80.2082435478892,
- -85.36802529512583,
- 62.35185227095363,
- -68.4724340974042,
- -12.107167478351585
- ],
- "type": "float32"
- },
- "mean": {
- "shape": [3],
- "data": [
- 51.62914995931095,
- 99.36075401019252,
- -96.14736495234415
- ],
- "type": "float32",
- "constant": true
- },
- "variance": {
- "shape": [3],
- "data": [
- 30.448016067921067,
- 86.36218998771075,
- 73.88454888724165
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "epsilon": 1e-6 // A small value to prevent computational error due to divide-by-zero.
- },
- "expected": {
- "shape": [2, 3, 2, 2],
- "data": [
- -16.842506408691406,
- 2.2579832077026367,
- -20.842044830322266,
- -17.8361759185791,
- -1.758125901222229,
- -19.309030532836914,
- -17.37898826599121,
- -10.702629089355469,
- 6.427139759063721,
- 17.812625885009766,
- 15.533490180969238,
- 17.822330474853516,
- 5.514281272888184,
- -24.96308135986328,
- 4.576686382293701,
- 8.228470802307129,
- -12.989363670349121,
- -21.123031616210938,
- -11.698976516723633,
- -2.0609331130981445,
- 1.254050850868225,
- 18.43954849243164,
- 3.2196574211120605,
- 9.777103424072266
- ],
- "type": "float32"
- }
- },
- {
- "name": "batchNormalization float32 4D NHWC tensor all options",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- -41.30732967168238,
- 83.0222726565018,
- -40.902161220312074,
- 64.08864045143429,
- -80.08049213079853,
- 56.963061967558474,
- -63.376671841233104,
- -62.144380499565784,
- 37.37249789808206,
- -46.7903680211994,
- -0.10012771650340824,
- 57.04647733193906,
- 82.05679802728304,
- -21.35103988063949,
- -85.36802529512583,
- -86.11642850667623,
- -96.93823797160586,
- 62.35185227095363,
- 76.88317547014259,
- -9.359310262561493,
- -68.4724340974042,
- 97.03362133579051,
- 80.2082435478892,
- -12.107167478351585
- ],
- "type": "float32"
- },
- "mean": {
- "shape": [3],
- "data": [
- 51.62914995931095,
- 99.36075401019252,
- -96.14736495234415
- ],
- "type": "float32",
- "constant": true
- },
- "variance": {
- "shape": [3],
- "data": [
- 30.448016067921067,
- 86.36218998771075,
- 73.88454888724165
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "scale": {
- "shape": [3],
- "data": [
- 65.50171582968795,
- -71.00757080938772,
- -5.569730877611249
- ],
- "type": "float32"
- },
- "bias": {
- "shape": [3],
- "data": [
- 64.20446782594775,
- 75.28591851497856,
- -84.57243127763437
- ],
- "type": "float32"
- },
- "axis": 3,
- "epsilon": 1e-6
- },
- "expected": {
- "shape": [2, 2, 2, 3],
- "data": [
- -1039.0085734071204,
- 200.12613597546277,
- -120.36987167541395,
- 212.10626540432202,
- 1446.3732126569944,
- -183.78396479879416,
- -1300.9852072279227,
- 1309.3257094058545,
- -171.08979404258523,
- -1104.0956031373803,
- 835.2536189871761,
- -183.83801576309426,
- 425.3993215144054,
- 997.6290832897452,
- -91.55716013805052,
- -1570.920072497096,
- 1575.1810627320297,
- -187.2757593197739,
- 363.98524710447384,
- 906.0018322105,
- -102.5050592863526,
- 603.1834043179756,
- 221.6277675074517,
- -139.02827100419768
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/cast.json b/tests/wpt/tests/webnn/resources/test_data/cast.json
deleted file mode 100644
index 59d1036eeed..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/cast.json
+++ /dev/null
@@ -1,3040 +0,0 @@
-{
- "tests": [
- {
- "name": "cast float32 0D tensor to int32",
- "inputs": {
- "input": {
- "shape": [],
- "data": [
- 84.77753448486328
- ],
- "type": "float32"
- }
- },
- "type": "int32",
- "expected": {
- "name": "output",
- "shape": [],
- "data": [
- 84
- ],
- "type": "int32"
- }
- },
- {
- "name": "cast float32 1D tensor to int32",
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- 102.1578369140625,
- -43.5,
- 52.84621810913086,
- -99.9583511352539,
- 6.729493141174316,
- 92.66157531738281,
- -10.377813339233398,
- 106.65289306640625,
- -7.126272678375244,
- 91.51563262939453,
- -50.87134552001953,
- 83.38890075683594,
- 72.9759750366211,
- -31.015382766723633,
- 79.94034576416016,
- 41.5,
- 35.727149963378906,
- -2.5,
- -96.05252838134766,
- -86.76212310791016,
- -27.49382972717285,
- -23.836687088012695,
- 70.77123260498047,
- 83.5
- ],
- "type": "float32"
- }
- },
- "type": "int32",
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- 102,
- -43,
- 52,
- -99,
- 6,
- 92,
- -10,
- 106,
- -7,
- 91,
- -50,
- 83,
- 72,
- -31,
- 79,
- 41,
- 35,
- -2,
- -96,
- -86,
- -27,
- -23,
- 70,
- 83
- ],
- "type": "int32"
- }
- },
- {
- "name": "cast float32 2D tensor to int32",
- "inputs": {
- "input": {
- "shape": [4, 6],
- "data": [
- 102.1578369140625,
- -43.5,
- 52.84621810913086,
- -99.9583511352539,
- 6.729493141174316,
- 92.66157531738281,
- -10.377813339233398,
- 106.65289306640625,
- -7.126272678375244,
- 91.51563262939453,
- -50.87134552001953,
- 83.38890075683594,
- 72.9759750366211,
- -31.015382766723633,
- 79.94034576416016,
- 41.5,
- 35.727149963378906,
- -2.5,
- -96.05252838134766,
- -86.76212310791016,
- -27.49382972717285,
- -23.836687088012695,
- 70.77123260498047,
- 83.5
- ],
- "type": "float32"
- }
- },
- "type": "int32",
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- 102,
- -43,
- 52,
- -99,
- 6,
- 92,
- -10,
- 106,
- -7,
- 91,
- -50,
- 83,
- 72,
- -31,
- 79,
- 41,
- 35,
- -2,
- -96,
- -86,
- -27,
- -23,
- 70,
- 83
- ],
- "type": "int32"
- }
- },
- {
- "name": "cast float32 3D tensor to int32",
- "inputs": {
- "input": {
- "shape": [2, 3, 4],
- "data": [
- 102.1578369140625,
- -43.5,
- 52.84621810913086,
- -99.9583511352539,
- 6.729493141174316,
- 92.66157531738281,
- -10.377813339233398,
- 106.65289306640625,
- -7.126272678375244,
- 91.51563262939453,
- -50.87134552001953,
- 83.38890075683594,
- 72.9759750366211,
- -31.015382766723633,
- 79.94034576416016,
- 41.5,
- 35.727149963378906,
- -2.5,
- -96.05252838134766,
- -86.76212310791016,
- -27.49382972717285,
- -23.836687088012695,
- 70.77123260498047,
- 83.5
- ],
- "type": "float32"
- }
- },
- "type": "int32",
- "expected": {
- "name": "output",
- "shape": [2, 3, 4],
- "data": [
- 102,
- -43,
- 52,
- -99,
- 6,
- 92,
- -10,
- 106,
- -7,
- 91,
- -50,
- 83,
- 72,
- -31,
- 79,
- 41,
- 35,
- -2,
- -96,
- -86,
- -27,
- -23,
- 70,
- 83
- ],
- "type": "int32"
- }
- },
- {
- "name": "cast float32 4D tensor to int32",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 102.1578369140625,
- -43.5,
- 52.84621810913086,
- -99.9583511352539,
- 6.729493141174316,
- 92.66157531738281,
- -10.377813339233398,
- 106.65289306640625,
- -7.126272678375244,
- 91.51563262939453,
- -50.87134552001953,
- 83.38890075683594,
- 72.9759750366211,
- -31.015382766723633,
- 79.94034576416016,
- 41.5,
- 35.727149963378906,
- -2.5,
- -96.05252838134766,
- -86.76212310791016,
- -27.49382972717285,
- -23.836687088012695,
- 70.77123260498047,
- 83.5
- ],
- "type": "float32"
- }
- },
- "type": "int32",
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 102,
- -43,
- 52,
- -99,
- 6,
- 92,
- -10,
- 106,
- -7,
- 91,
- -50,
- 83,
- 72,
- -31,
- 79,
- 41,
- 35,
- -2,
- -96,
- -86,
- -27,
- -23,
- 70,
- 83
- ],
- "type": "int32"
- }
- },
- {
- "name": "cast float32 5D tensor to int32",
- "inputs": {
- "input": {
- "shape": [2, 1, 4, 1, 3],
- "data": [
- 102.1578369140625,
- -43.5,
- 52.84621810913086,
- -99.9583511352539,
- 6.729493141174316,
- 92.66157531738281,
- -10.377813339233398,
- 106.65289306640625,
- -7.126272678375244,
- 91.51563262939453,
- -50.87134552001953,
- 83.38890075683594,
- 72.9759750366211,
- -31.015382766723633,
- 79.94034576416016,
- 41.5,
- 35.727149963378906,
- -2.5,
- -96.05252838134766,
- -86.76212310791016,
- -27.49382972717285,
- -23.836687088012695,
- 70.77123260498047,
- 83.5
- ],
- "type": "float32"
- }
- },
- "type": "int32",
- "expected": {
- "name": "output",
- "shape": [2, 1, 4, 1, 3],
- "data": [
- 102,
- -43,
- 52,
- -99,
- 6,
- 92,
- -10,
- 106,
- -7,
- 91,
- -50,
- 83,
- 72,
- -31,
- 79,
- 41,
- 35,
- -2,
- -96,
- -86,
- -27,
- -23,
- 70,
- 83
- ],
- "type": "int32"
- }
- },
- {
- "name": "cast float32 4D tensor to float16",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 102.1578369140625,
- 43.60371780395508,
- 52.84621810913086,
- 99.9583511352539,
- 6.729493141174316,
- 92.66157531738281,
- 10.377813339233398,
- 106.65289306640625,
- 7.126272678375244,
- 91.51563262939453,
- 50.87134552001953,
- 83.38890075683594,
- 72.9759750366211,
- 31.015382766723633,
- 79.94034576416016,
- 41.844703674316406,
- 35.727149963378906,
- 2.614182949066162,
- 96.05252838134766,
- 86.76212310791016,
- 27.49382972717285,
- 23.836687088012695,
- 70.77123260498047,
- 83.8347396850586
- ],
- "type": "float32"
- }
- },
- "type": "float16",
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 102.1875,
- 43.59375,
- 52.84375,
- 99.9375,
- 6.73046875,
- 92.6875,
- 10.375,
- 106.625,
- 7.125,
- 91.5,
- 50.875,
- 83.375,
- 73,
- 31.015625,
- 79.9375,
- 41.84375,
- 35.71875,
- 2.61328125,
- 96.0625,
- 86.75,
- 27.5,
- 23.84375,
- 70.75,
- 83.8125
- ],
- "type": "float16"
- }
- },
- {
- "name": "cast float32 4D tensor to uint32",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 102.1578369140625,
- 43.60371780395508,
- 52.84621810913086,
- 99.9583511352539,
- 6.729493141174316,
- 92.66157531738281,
- 10.377813339233398,
- 106.65289306640625,
- 7.126272678375244,
- 91.51563262939453,
- 50.87134552001953,
- 83.38890075683594,
- 72.9759750366211,
- 31.015382766723633,
- 79.94034576416016,
- 41.844703674316406,
- 35.727149963378906,
- 2.614182949066162,
- 96.05252838134766,
- 86.76212310791016,
- 27.49382972717285,
- 23.836687088012695,
- 70.77123260498047,
- 83.8347396850586
- ],
- "type": "float32"
- }
- },
- "type": "uint32",
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 102,
- 43,
- 52,
- 99,
- 6,
- 92,
- 10,
- 106,
- 7,
- 91,
- 50,
- 83,
- 72,
- 31,
- 79,
- 41,
- 35,
- 2,
- 96,
- 86,
- 27,
- 23,
- 70,
- 83
- ],
- "type": "uint32"
- }
- },
- {
- "name": "cast float32 4D tensor to int64",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 102.1578369140625,
- 43.60371780395508,
- 52.84621810913086,
- 99.9583511352539,
- 6.729493141174316,
- 92.66157531738281,
- 10.377813339233398,
- 106.65289306640625,
- 7.126272678375244,
- 91.51563262939453,
- 50.87134552001953,
- 83.38890075683594,
- 72.9759750366211,
- 31.015382766723633,
- 79.94034576416016,
- 41.844703674316406,
- 35.727149963378906,
- 2.614182949066162,
- 96.05252838134766,
- 86.76212310791016,
- 27.49382972717285,
- 23.836687088012695,
- 70.77123260498047,
- 83.8347396850586
- ],
- "type": "float32"
- }
- },
- "type": "int64",
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- "102",
- "43",
- "52",
- "99",
- "6",
- "92",
- "10",
- "106",
- "7",
- "91",
- "50",
- "83",
- "72",
- "31",
- "79",
- "41",
- "35",
- "2",
- "96",
- "86",
- "27",
- "23",
- "70",
- "83"
- ],
- "type": "int64"
- }
- },
- {
- "name": "cast float32 4D tensor to int8",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 102.1578369140625,
- 43.60371780395508,
- 52.84621810913086,
- 99.9583511352539,
- 6.729493141174316,
- 92.66157531738281,
- 10.377813339233398,
- 106.65289306640625,
- 7.126272678375244,
- 91.51563262939453,
- 50.87134552001953,
- 83.38890075683594,
- 72.9759750366211,
- 31.015382766723633,
- 79.94034576416016,
- 41.844703674316406,
- 35.727149963378906,
- 2.614182949066162,
- 96.05252838134766,
- 86.76212310791016,
- 27.49382972717285,
- 23.836687088012695,
- 70.77123260498047,
- 83.8347396850586
- ],
- "type": "float32"
- }
- },
- "type": "int8",
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 102,
- 43,
- 52,
- 99,
- 6,
- 92,
- 10,
- 106,
- 7,
- 91,
- 50,
- 83,
- 72,
- 31,
- 79,
- 41,
- 35,
- 2,
- 96,
- 86,
- 27,
- 23,
- 70,
- 83
- ],
- "type": "int8"
- }
- },
- {
- "name": "cast float32 4D tensor to uint8",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 102.1578369140625,
- 43.60371780395508,
- 52.84621810913086,
- 99.9583511352539,
- 6.729493141174316,
- 92.66157531738281,
- 10.377813339233398,
- 106.65289306640625,
- 7.126272678375244,
- 91.51563262939453,
- 50.87134552001953,
- 83.38890075683594,
- 72.9759750366211,
- 31.015382766723633,
- 79.94034576416016,
- 41.844703674316406,
- 35.727149963378906,
- 2.614182949066162,
- 96.05252838134766,
- 86.76212310791016,
- 27.49382972717285,
- 23.836687088012695,
- 70.77123260498047,
- 83.8347396850586
- ],
- "type": "float32"
- }
- },
- "type": "uint8",
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 102,
- 43,
- 52,
- 99,
- 6,
- 92,
- 10,
- 106,
- 7,
- 91,
- 50,
- 83,
- 72,
- 31,
- 79,
- 41,
- 35,
- 2,
- 96,
- 86,
- 27,
- 23,
- 70,
- 83
- ],
- "type": "uint8"
- }
- },
- {
- "name": "cast float16 4D tensor to float32",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 3.103515625,
- 32.40625,
- 62.15625,
- 51.75,
- 87.0625,
- 106.25,
- 125.375,
- 112.9375,
- 70.8125,
- 39.1875,
- 10.3515625,
- 21.234375,
- 99.75,
- 16.125,
- 115.625,
- 66,
- 49.375,
- 115.75,
- 77,
- 57.15625,
- 61.6875,
- 12.9296875,
- 101.25,
- 123.9375
- ],
- "type": "float16"
- }
- },
- "type": "float32",
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 3.103515625,
- 32.40625,
- 62.15625,
- 51.75,
- 87.0625,
- 106.25,
- 125.375,
- 112.9375,
- 70.8125,
- 39.1875,
- 10.3515625,
- 21.234375,
- 99.75,
- 16.125,
- 115.625,
- 66,
- 49.375,
- 115.75,
- 77,
- 57.15625,
- 61.6875,
- 12.9296875,
- 101.25,
- 123.9375
- ],
- "type": "float32"
- }
- },
- {
- "name": "cast float16 4D tensor to int32",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 3.103515625,
- 32.40625,
- 62.15625,
- 51.75,
- 87.0625,
- 106.25,
- 125.375,
- 112.9375,
- 70.8125,
- 39.1875,
- 10.3515625,
- 21.234375,
- 99.75,
- 16.125,
- 115.625,
- 66,
- 49.375,
- 115.75,
- 77,
- 57.15625,
- 61.6875,
- 12.9296875,
- 101.25,
- 123.9375
- ],
- "type": "float16"
- }
- },
- "type": "int32",
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 3,
- 32,
- 62,
- 51,
- 87,
- 106,
- 125,
- 112,
- 70,
- 39,
- 10,
- 21,
- 99,
- 16,
- 115,
- 66,
- 49,
- 115,
- 77,
- 57,
- 61,
- 12,
- 101,
- 123
- ],
- "type": "int32"
- }
- },
- {
- "name": "cast float16 4D tensor to uint32",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 3.103515625,
- 32.40625,
- 62.15625,
- 51.75,
- 87.0625,
- 106.25,
- 125.375,
- 112.9375,
- 70.8125,
- 39.1875,
- 10.3515625,
- 21.234375,
- 99.75,
- 16.125,
- 115.625,
- 66,
- 49.375,
- 115.75,
- 77,
- 57.15625,
- 61.6875,
- 12.9296875,
- 101.25,
- 123.9375
- ],
- "type": "float16"
- }
- },
- "type": "uint32",
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 3,
- 32,
- 62,
- 51,
- 87,
- 106,
- 125,
- 112,
- 70,
- 39,
- 10,
- 21,
- 99,
- 16,
- 115,
- 66,
- 49,
- 115,
- 77,
- 57,
- 61,
- 12,
- 101,
- 123
- ],
- "type": "uint32"
- }
- },
- {
- "name": "cast float16 4D tensor to int64",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 3.103515625,
- 32.40625,
- 62.15625,
- 51.75,
- 87.0625,
- 106.25,
- 125.375,
- 112.9375,
- 70.8125,
- 39.1875,
- 10.3515625,
- 21.234375,
- 99.75,
- 16.125,
- 115.625,
- 66,
- 49.375,
- 115.75,
- 77,
- 57.15625,
- 61.6875,
- 12.9296875,
- 101.25,
- 123.9375
- ],
- "type": "float16"
- }
- },
- "type": "int64",
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- "3",
- "32",
- "62",
- "51",
- "87",
- "106",
- "125",
- "112",
- "70",
- "39",
- "10",
- "21",
- "99",
- "16",
- "115",
- "66",
- "49",
- "115",
- "77",
- "57",
- "61",
- "12",
- "101",
- "123"
- ],
- "type": "int64"
- }
- },
- {
- "name": "cast float16 4D tensor to int8",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 3.103515625,
- 32.40625,
- 62.15625,
- 51.75,
- 87.0625,
- 106.25,
- 125.375,
- 112.9375,
- 70.8125,
- 39.1875,
- 10.3515625,
- 21.234375,
- 99.75,
- 16.125,
- 115.625,
- 66,
- 49.375,
- 115.75,
- 77,
- 57.15625,
- 61.6875,
- 12.9296875,
- 101.25,
- 123.9375
- ],
- "type": "float16"
- }
- },
- "type": "int8",
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 3,
- 32,
- 62,
- 51,
- 87,
- 106,
- 125,
- 112,
- 70,
- 39,
- 10,
- 21,
- 99,
- 16,
- 115,
- 66,
- 49,
- 115,
- 77,
- 57,
- 61,
- 12,
- 101,
- 123
- ],
- "type": "int8"
- }
- },
- {
- "name": "cast float16 4D tensor to uint8",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 3.103515625,
- 32.40625,
- 62.15625,
- 51.75,
- 87.0625,
- 106.25,
- 125.375,
- 112.9375,
- 70.8125,
- 39.1875,
- 10.3515625,
- 21.234375,
- 99.75,
- 16.125,
- 115.625,
- 66,
- 49.375,
- 115.75,
- 77,
- 57.15625,
- 61.6875,
- 12.9296875,
- 101.25,
- 123.9375
- ],
- "type": "float16"
- }
- },
- "type": "uint8",
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 3,
- 32,
- 62,
- 51,
- 87,
- 106,
- 125,
- 112,
- 70,
- 39,
- 10,
- 21,
- 99,
- 16,
- 115,
- 66,
- 49,
- 115,
- 77,
- 57,
- 61,
- 12,
- 101,
- 123
- ],
- "type": "uint8"
- }
- },
- {
- "name": "cast int32 4D tensor to float32",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 45,
- 55,
- 11,
- 21,
- 78,
- 104,
- 102,
- 66,
- 41,
- 110,
- 92,
- 69,
- 48,
- 23,
- 58,
- 12,
- 33,
- 24,
- 101,
- 87,
- 49,
- 118,
- 1,
- 77
- ],
- "type": "int32"
- }
- },
- "type": "float32",
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 45,
- 55,
- 11,
- 21,
- 78,
- 104,
- 102,
- 66,
- 41,
- 110,
- 92,
- 69,
- 48,
- 23,
- 58,
- 12,
- 33,
- 24,
- 101,
- 87,
- 49,
- 118,
- 1,
- 77
- ],
- "type": "float32"
- }
- },
- {
- "name": "cast int32 4D tensor to float16",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 45,
- 55,
- 11,
- 21,
- 78,
- 104,
- 102,
- 66,
- 41,
- 110,
- 92,
- 69,
- 48,
- 23,
- 58,
- 12,
- 33,
- 24,
- 101,
- 87,
- 49,
- 118,
- 1,
- 77
- ],
- "type": "int32"
- }
- },
- "type": "float16",
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 45,
- 55,
- 11,
- 21,
- 78,
- 104,
- 102,
- 66,
- 41,
- 110,
- 92,
- 69,
- 48,
- 23,
- 58,
- 12,
- 33,
- 24,
- 101,
- 87,
- 49,
- 118,
- 1,
- 77
- ],
- "type": "float16"
- }
- },
- {
- "name": "cast int32 4D tensor to int64",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 45,
- 55,
- 11,
- 21,
- 78,
- 104,
- 102,
- 66,
- 41,
- 110,
- 92,
- 69,
- 48,
- 23,
- 58,
- 12,
- 33,
- 24,
- 101,
- 87,
- 49,
- 118,
- 1,
- 77
- ],
- "type": "int32"
- }
- },
- "type": "int64",
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- "45",
- "55",
- "11",
- "21",
- "78",
- "104",
- "102",
- "66",
- "41",
- "110",
- "92",
- "69",
- "48",
- "23",
- "58",
- "12",
- "33",
- "24",
- "101",
- "87",
- "49",
- "118",
- "1",
- "77"
- ],
- "type": "int64"
- }
- },
- {
- "name": "cast int32 4D tensor to int8",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 45,
- 55,
- 11,
- 21,
- 78,
- 104,
- 102,
- 66,
- 41,
- 110,
- 92,
- 69,
- 48,
- 23,
- 58,
- 12,
- 33,
- 24,
- 101,
- 87,
- 49,
- 118,
- 1,
- 77
- ],
- "type": "int32"
- }
- },
- "type": "int8",
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 45,
- 55,
- 11,
- 21,
- 78,
- 104,
- 102,
- 66,
- 41,
- 110,
- 92,
- 69,
- 48,
- 23,
- 58,
- 12,
- 33,
- 24,
- 101,
- 87,
- 49,
- 118,
- 1,
- 77
- ],
- "type": "int8"
- }
- },
- {
- "name": "cast int32 4D tensor to uint8",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 45,
- 55,
- 11,
- 21,
- 78,
- 104,
- 102,
- 66,
- 41,
- 110,
- 92,
- 69,
- 48,
- 23,
- 58,
- 12,
- 33,
- 24,
- 101,
- 87,
- 49,
- 118,
- 1,
- 77
- ],
- "type": "int32"
- }
- },
- "type": "uint8",
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 45,
- 55,
- 11,
- 21,
- 78,
- 104,
- 102,
- 66,
- 41,
- 110,
- 92,
- 69,
- 48,
- 23,
- 58,
- 12,
- 33,
- 24,
- 101,
- 87,
- 49,
- 118,
- 1,
- 77
- ],
- "type": "uint8"
- }
- },
- {
- "name": "cast uint32 4D tensor to float32",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 34,
- 83,
- 113,
- 31,
- 62,
- 80,
- 8,
- 40,
- 104,
- 42,
- 6,
- 91,
- 93,
- 21,
- 40,
- 21,
- 51,
- 110,
- 115,
- 12,
- 122,
- 68,
- 57,
- 72
- ],
- "type": "uint32"
- }
- },
- "type": "float32",
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 34,
- 83,
- 113,
- 31,
- 62,
- 80,
- 8,
- 40,
- 104,
- 42,
- 6,
- 91,
- 93,
- 21,
- 40,
- 21,
- 51,
- 110,
- 115,
- 12,
- 122,
- 68,
- 57,
- 72
- ],
- "type": "float32"
- }
- },
- {
- "name": "cast uint32 4D tensor to float16",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 34,
- 83,
- 113,
- 31,
- 62,
- 80,
- 8,
- 40,
- 104,
- 42,
- 6,
- 91,
- 93,
- 21,
- 40,
- 21,
- 51,
- 110,
- 115,
- 12,
- 122,
- 68,
- 57,
- 72
- ],
- "type": "uint32"
- }
- },
- "type": "float16",
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 34,
- 83,
- 113,
- 31,
- 62,
- 80,
- 8,
- 40,
- 104,
- 42,
- 6,
- 91,
- 93,
- 21,
- 40,
- 21,
- 51,
- 110,
- 115,
- 12,
- 122,
- 68,
- 57,
- 72
- ],
- "type": "float16"
- }
- },
- {
- "name": "cast uint32 4D tensor to int32",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 34,
- 83,
- 113,
- 31,
- 62,
- 80,
- 8,
- 40,
- 104,
- 42,
- 6,
- 91,
- 93,
- 21,
- 40,
- 21,
- 51,
- 110,
- 115,
- 12,
- 122,
- 68,
- 57,
- 72
- ],
- "type": "uint32"
- }
- },
- "type": "int32",
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 34,
- 83,
- 113,
- 31,
- 62,
- 80,
- 8,
- 40,
- 104,
- 42,
- 6,
- 91,
- 93,
- 21,
- 40,
- 21,
- 51,
- 110,
- 115,
- 12,
- 122,
- 68,
- 57,
- 72
- ],
- "type": "int32"
- }
- },
- {
- "name": "cast uint32 4D tensor to int64",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 34,
- 83,
- 113,
- 31,
- 62,
- 80,
- 8,
- 40,
- 104,
- 42,
- 6,
- 91,
- 93,
- 21,
- 40,
- 21,
- 51,
- 110,
- 115,
- 12,
- 122,
- 68,
- 57,
- 72
- ],
- "type": "uint32"
- }
- },
- "type": "int64",
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- "34",
- "83",
- "113",
- "31",
- "62",
- "80",
- "8",
- "40",
- "104",
- "42",
- "6",
- "91",
- "93",
- "21",
- "40",
- "21",
- "51",
- "110",
- "115",
- "12",
- "122",
- "68",
- "57",
- "72"
- ],
- "type": "int64"
- }
- },
- {
- "name": "cast uint32 4D tensor to int8",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 34,
- 83,
- 113,
- 31,
- 62,
- 80,
- 8,
- 40,
- 104,
- 42,
- 6,
- 91,
- 93,
- 21,
- 40,
- 21,
- 51,
- 110,
- 115,
- 12,
- 122,
- 68,
- 57,
- 72
- ],
- "type": "uint32"
- }
- },
- "type": "int8",
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 34,
- 83,
- 113,
- 31,
- 62,
- 80,
- 8,
- 40,
- 104,
- 42,
- 6,
- 91,
- 93,
- 21,
- 40,
- 21,
- 51,
- 110,
- 115,
- 12,
- 122,
- 68,
- 57,
- 72
- ],
- "type": "int8"
- }
- },
- {
- "name": "cast uint32 4D tensor to uint8",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 34,
- 83,
- 113,
- 31,
- 62,
- 80,
- 8,
- 40,
- 104,
- 42,
- 6,
- 91,
- 93,
- 21,
- 40,
- 21,
- 51,
- 110,
- 115,
- 12,
- 122,
- 68,
- 57,
- 72
- ],
- "type": "uint32"
- }
- },
- "type": "uint8",
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 34,
- 83,
- 113,
- 31,
- 62,
- 80,
- 8,
- 40,
- 104,
- 42,
- 6,
- 91,
- 93,
- 21,
- 40,
- 21,
- 51,
- 110,
- 115,
- 12,
- 122,
- 68,
- 57,
- 72
- ],
- "type": "uint8"
- }
- },
- {
- "name": "cast int64 4D tensor to float32",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- "50",
- "1",
- "28",
- "20",
- "102",
- "86",
- "70",
- "38",
- "50",
- "19",
- "11",
- "4",
- "56",
- "77",
- "40",
- "80",
- "45",
- "127",
- "4",
- "87",
- "125",
- "26",
- "63",
- "11"
- ],
- "type": "int64"
- }
- },
- "type": "float32",
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 50,
- 1,
- 28,
- 20,
- 102,
- 86,
- 70,
- 38,
- 50,
- 19,
- 11,
- 4,
- 56,
- 77,
- 40,
- 80,
- 45,
- 127,
- 4,
- 87,
- 125,
- 26,
- 63,
- 11
- ],
- "type": "float32"
- }
- },
- {
- "name": "cast int64 4D tensor to float16",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- "50",
- "1",
- "28",
- "20",
- "102",
- "86",
- "70",
- "38",
- "50",
- "19",
- "11",
- "4",
- "56",
- "77",
- "40",
- "80",
- "45",
- "127",
- "4",
- "87",
- "125",
- "26",
- "63",
- "11"
- ],
- "type": "int64"
- }
- },
- "type": "float16",
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 50,
- 1,
- 28,
- 20,
- 102,
- 86,
- 70,
- 38,
- 50,
- 19,
- 11,
- 4,
- 56,
- 77,
- 40,
- 80,
- 45,
- 127,
- 4,
- 87,
- 125,
- 26,
- 63,
- 11
- ],
- "type": "float16"
- }
- },
- {
- "name": "cast int64 4D tensor to int32",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- "50",
- "1",
- "28",
- "20",
- "102",
- "86",
- "70",
- "38",
- "50",
- "19",
- "11",
- "4",
- "56",
- "77",
- "40",
- "80",
- "45",
- "127",
- "4",
- "87",
- "125",
- "26",
- "63",
- "11"
- ],
- "type": "int64"
- }
- },
- "type": "int32",
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 50,
- 1,
- 28,
- 20,
- 102,
- 86,
- 70,
- 38,
- 50,
- 19,
- 11,
- 4,
- 56,
- 77,
- 40,
- 80,
- 45,
- 127,
- 4,
- 87,
- 125,
- 26,
- 63,
- 11
- ],
- "type": "int32"
- }
- },
- {
- "name": "cast int64 4D tensor to uint32",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- "50",
- "1",
- "28",
- "20",
- "102",
- "86",
- "70",
- "38",
- "50",
- "19",
- "11",
- "4",
- "56",
- "77",
- "40",
- "80",
- "45",
- "127",
- "4",
- "87",
- "125",
- "26",
- "63",
- "11"
- ],
- "type": "int64"
- }
- },
- "type": "uint32",
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 50,
- 1,
- 28,
- 20,
- 102,
- 86,
- 70,
- 38,
- 50,
- 19,
- 11,
- 4,
- 56,
- 77,
- 40,
- 80,
- 45,
- 127,
- 4,
- 87,
- 125,
- 26,
- 63,
- 11
- ],
- "type": "uint32"
- }
- },
- {
- "name": "cast int64 4D tensor to int8",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- "50",
- "1",
- "28",
- "20",
- "102",
- "86",
- "70",
- "38",
- "50",
- "19",
- "11",
- "4",
- "56",
- "77",
- "40",
- "80",
- "45",
- "127",
- "4",
- "87",
- "125",
- "26",
- "63",
- "11"
- ],
- "type": "int64"
- }
- },
- "type": "int8",
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 50,
- 1,
- 28,
- 20,
- 102,
- 86,
- 70,
- 38,
- 50,
- 19,
- 11,
- 4,
- 56,
- 77,
- 40,
- 80,
- 45,
- 127,
- 4,
- 87,
- 125,
- 26,
- 63,
- 11
- ],
- "type": "int8"
- }
- },
- {
- "name": "cast int64 4D tensor to uint8",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- "50",
- "1",
- "28",
- "20",
- "102",
- "86",
- "70",
- "38",
- "50",
- "19",
- "11",
- "4",
- "56",
- "77",
- "40",
- "80",
- "45",
- "127",
- "4",
- "87",
- "125",
- "26",
- "63",
- "11"
- ],
- "type": "int64"
- }
- },
- "type": "uint8",
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 50,
- 1,
- 28,
- 20,
- 102,
- 86,
- 70,
- 38,
- 50,
- 19,
- 11,
- 4,
- 56,
- 77,
- 40,
- 80,
- 45,
- 127,
- 4,
- 87,
- 125,
- 26,
- 63,
- 11
- ],
- "type": "uint8"
- }
- },
- {
- "name": "cast int8 4D tensor to float32",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 123,
- 17,
- 31,
- 77,
- 88,
- 44,
- 84,
- 40,
- 14,
- 64,
- 109,
- 4,
- 2,
- 0,
- 45,
- 47,
- 72,
- 88,
- 82,
- 4,
- 73,
- 36,
- 65,
- 117
- ],
- "type": "int8"
- }
- },
- "type": "float32",
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 123,
- 17,
- 31,
- 77,
- 88,
- 44,
- 84,
- 40,
- 14,
- 64,
- 109,
- 4,
- 2,
- 0,
- 45,
- 47,
- 72,
- 88,
- 82,
- 4,
- 73,
- 36,
- 65,
- 117
- ],
- "type": "float32"
- }
- },
- {
- "name": "cast int8 4D tensor to float16",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 123,
- 17,
- 31,
- 77,
- 88,
- 44,
- 84,
- 40,
- 14,
- 64,
- 109,
- 4,
- 2,
- 0,
- 45,
- 47,
- 72,
- 88,
- 82,
- 4,
- 73,
- 36,
- 65,
- 117
- ],
- "type": "int8"
- }
- },
- "type": "float16",
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 123,
- 17,
- 31,
- 77,
- 88,
- 44,
- 84,
- 40,
- 14,
- 64,
- 109,
- 4,
- 2,
- 0,
- 45,
- 47,
- 72,
- 88,
- 82,
- 4,
- 73,
- 36,
- 65,
- 117
- ],
- "type": "float16"
- }
- },
- {
- "name": "cast int8 4D tensor to int32",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 123,
- 17,
- 31,
- 77,
- 88,
- 44,
- 84,
- 40,
- 14,
- 64,
- 109,
- 4,
- 2,
- 0,
- 45,
- 47,
- 72,
- 88,
- 82,
- 4,
- 73,
- 36,
- 65,
- 117
- ],
- "type": "int8"
- }
- },
- "type": "int32",
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 123,
- 17,
- 31,
- 77,
- 88,
- 44,
- 84,
- 40,
- 14,
- 64,
- 109,
- 4,
- 2,
- 0,
- 45,
- 47,
- 72,
- 88,
- 82,
- 4,
- 73,
- 36,
- 65,
- 117
- ],
- "type": "int32"
- }
- },
- {
- "name": "cast int8 4D tensor to uint32",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 123,
- 17,
- 31,
- 77,
- 88,
- 44,
- 84,
- 40,
- 14,
- 64,
- 109,
- 4,
- 2,
- 0,
- 45,
- 47,
- 72,
- 88,
- 82,
- 4,
- 73,
- 36,
- 65,
- 117
- ],
- "type": "int8"
- }
- },
- "type": "uint32",
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 123,
- 17,
- 31,
- 77,
- 88,
- 44,
- 84,
- 40,
- 14,
- 64,
- 109,
- 4,
- 2,
- 0,
- 45,
- 47,
- 72,
- 88,
- 82,
- 4,
- 73,
- 36,
- 65,
- 117
- ],
- "type": "uint32"
- }
- },
- {
- "name": "cast int8 4D tensor to int64",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 123,
- 17,
- 31,
- 77,
- 88,
- 44,
- 84,
- 40,
- 14,
- 64,
- 109,
- 4,
- 2,
- 0,
- 45,
- 47,
- 72,
- 88,
- 82,
- 4,
- 73,
- 36,
- 65,
- 117
- ],
- "type": "int8"
- }
- },
- "type": "int64",
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- "123",
- "17",
- "31",
- "77",
- "88",
- "44",
- "84",
- "40",
- "14",
- "64",
- "109",
- "4",
- "2",
- "0",
- "45",
- "47",
- "72",
- "88",
- "82",
- "4",
- "73",
- "36",
- "65",
- "117"
- ],
- "type": "int64"
- }
- },
- {
- "name": "cast int8 4D tensor to uint8",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 123,
- 17,
- 31,
- 77,
- 88,
- 44,
- 84,
- 40,
- 14,
- 64,
- 109,
- 4,
- 2,
- 0,
- 45,
- 47,
- 72,
- 88,
- 82,
- 4,
- 73,
- 36,
- 65,
- 117
- ],
- "type": "int8"
- }
- },
- "type": "uint8",
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 123,
- 17,
- 31,
- 77,
- 88,
- 44,
- 84,
- 40,
- 14,
- 64,
- 109,
- 4,
- 2,
- 0,
- 45,
- 47,
- 72,
- 88,
- 82,
- 4,
- 73,
- 36,
- 65,
- 117
- ],
- "type": "uint8"
- }
- },
- {
- "name": "cast uint8 4D tensor to float32",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 10,
- 112,
- 121,
- 120,
- 22,
- 105,
- 41,
- 30,
- 75,
- 121,
- 55,
- 47,
- 121,
- 24,
- 16,
- 33,
- 97,
- 24,
- 3,
- 37,
- 45,
- 6,
- 56,
- 57
- ],
- "type": "uint8"
- }
- },
- "type": "float32",
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 10,
- 112,
- 121,
- 120,
- 22,
- 105,
- 41,
- 30,
- 75,
- 121,
- 55,
- 47,
- 121,
- 24,
- 16,
- 33,
- 97,
- 24,
- 3,
- 37,
- 45,
- 6,
- 56,
- 57
- ],
- "type": "float32"
- }
- },
- {
- "name": "cast uint8 4D tensor to float16",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 10,
- 112,
- 121,
- 120,
- 22,
- 105,
- 41,
- 30,
- 75,
- 121,
- 55,
- 47,
- 121,
- 24,
- 16,
- 33,
- 97,
- 24,
- 3,
- 37,
- 45,
- 6,
- 56,
- 57
- ],
- "type": "uint8"
- }
- },
- "type": "float16",
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 10,
- 112,
- 121,
- 120,
- 22,
- 105,
- 41,
- 30,
- 75,
- 121,
- 55,
- 47,
- 121,
- 24,
- 16,
- 33,
- 97,
- 24,
- 3,
- 37,
- 45,
- 6,
- 56,
- 57
- ],
- "type": "float16"
- }
- },
- {
- "name": "cast uint8 4D tensor to int32",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 10,
- 112,
- 121,
- 120,
- 22,
- 105,
- 41,
- 30,
- 75,
- 121,
- 55,
- 47,
- 121,
- 24,
- 16,
- 33,
- 97,
- 24,
- 3,
- 37,
- 45,
- 6,
- 56,
- 57
- ],
- "type": "uint8"
- }
- },
- "type": "int32",
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 10,
- 112,
- 121,
- 120,
- 22,
- 105,
- 41,
- 30,
- 75,
- 121,
- 55,
- 47,
- 121,
- 24,
- 16,
- 33,
- 97,
- 24,
- 3,
- 37,
- 45,
- 6,
- 56,
- 57
- ],
- "type": "int32"
- }
- },
- {
- "name": "cast uint8 4D tensor to uint32",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 10,
- 112,
- 121,
- 120,
- 22,
- 105,
- 41,
- 30,
- 75,
- 121,
- 55,
- 47,
- 121,
- 24,
- 16,
- 33,
- 97,
- 24,
- 3,
- 37,
- 45,
- 6,
- 56,
- 57
- ],
- "type": "uint8"
- }
- },
- "type": "uint32",
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 10,
- 112,
- 121,
- 120,
- 22,
- 105,
- 41,
- 30,
- 75,
- 121,
- 55,
- 47,
- 121,
- 24,
- 16,
- 33,
- 97,
- 24,
- 3,
- 37,
- 45,
- 6,
- 56,
- 57
- ],
- "type": "uint32"
- }
- },
- {
- "name": "cast uint8 4D tensor to int64",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 10,
- 112,
- 121,
- 120,
- 22,
- 105,
- 41,
- 30,
- 75,
- 121,
- 55,
- 47,
- 121,
- 24,
- 16,
- 33,
- 97,
- 24,
- 3,
- 37,
- 45,
- 6,
- 56,
- 57
- ],
- "type": "uint8"
- }
- },
- "type": "int64",
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- "10",
- "112",
- "121",
- "120",
- "22",
- "105",
- "41",
- "30",
- "75",
- "121",
- "55",
- "47",
- "121",
- "24",
- "16",
- "33",
- "97",
- "24",
- "3",
- "37",
- "45",
- "6",
- "56",
- "57"
- ],
- "type": "int64"
- }
- },
- {
- "name": "cast uint8 4D tensor to int8",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 10,
- 112,
- 121,
- 120,
- 22,
- 105,
- 41,
- 30,
- 75,
- 121,
- 55,
- 47,
- 121,
- 24,
- 16,
- 33,
- 97,
- 24,
- 3,
- 37,
- 45,
- 6,
- 56,
- 57
- ],
- "type": "uint8"
- }
- },
- "type": "int8",
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 10,
- 112,
- 121,
- 120,
- 22,
- 105,
- 41,
- 30,
- 75,
- 121,
- 55,
- 47,
- 121,
- 24,
- 16,
- 33,
- 97,
- 24,
- 3,
- 37,
- 45,
- 6,
- 56,
- 57
- ],
- "type": "int8"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/ceil.json b/tests/wpt/tests/webnn/resources/test_data/ceil.json
deleted file mode 100644
index b9bccbc3a07..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/ceil.json
+++ /dev/null
@@ -1,401 +0,0 @@
-{
- "tests": [
- {
- "name": "ceil float32 1D constant tensor",
- "inputs": {
- "x": {
- "shape": [24],
- "data": [
- 67.38941577648342,
- 36.78218646695805,
- 99.10649131558534,
- -22.587103876323283,
- 32.70173557917525,
- 17.688807510873474,
- 5.631034848468943,
- 12.965238190762022,
- 83.1319330049133,
- -29.29246123472926,
- 19.844631250887133,
- 65.27903232818329,
- 26.311109519759952,
- 24.2856723456172,
- -48.3976724829041,
- -5.617412380605998,
- 61.53380759105448,
- -87.81197726868459,
- 69.71428621372127,
- 5.0031021954943355,
- 84.3683411023199,
- -9.390542062321572,
- -27.85661776414834,
- -34.89593295662057
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- 68,
- 37,
- 100,
- -22,
- 33,
- 18,
- 6,
- 13,
- 84,
- -29,
- 20,
- 66,
- 27,
- 25,
- -48,
- -5,
- 62,
- -87,
- 70,
- 6,
- 85,
- -9,
- -27,
- -34
- ],
- "type": "float32"
- }
- },
- {
- "name": "ceil float32 1D tensor",
- "inputs": {
- "x": {
- "shape": [24],
- "data": [
- 67.38941577648342,
- 36.78218646695805,
- 99.10649131558534,
- -22.587103876323283,
- 32.70173557917525,
- 17.688807510873474,
- 5.631034848468943,
- 12.965238190762022,
- 83.1319330049133,
- -29.29246123472926,
- 19.844631250887133,
- 65.27903232818329,
- 26.311109519759952,
- 24.2856723456172,
- -48.3976724829041,
- -5.617412380605998,
- 61.53380759105448,
- -87.81197726868459,
- 69.71428621372127,
- 5.0031021954943355,
- 84.3683411023199,
- -9.390542062321572,
- -27.85661776414834,
- -34.89593295662057
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- 68,
- 37,
- 100,
- -22,
- 33,
- 18,
- 6,
- 13,
- 84,
- -29,
- 20,
- 66,
- 27,
- 25,
- -48,
- -5,
- 62,
- -87,
- 70,
- 6,
- 85,
- -9,
- -27,
- -34
- ],
- "type": "float32"
- }
- },
- {
- "name": "ceil float32 2D tensor",
- "inputs": {
- "x": {
- "shape": [4, 6],
- "data": [
- 67.38941577648342,
- 36.78218646695805,
- 99.10649131558534,
- -22.587103876323283,
- 32.70173557917525,
- 17.688807510873474,
- 5.631034848468943,
- 12.965238190762022,
- 83.1319330049133,
- -29.29246123472926,
- 19.844631250887133,
- 65.27903232818329,
- 26.311109519759952,
- 24.2856723456172,
- -48.3976724829041,
- -5.617412380605998,
- 61.53380759105448,
- -87.81197726868459,
- 69.71428621372127,
- 5.0031021954943355,
- 84.3683411023199,
- -9.390542062321572,
- -27.85661776414834,
- -34.89593295662057
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- 68,
- 37,
- 100,
- -22,
- 33,
- 18,
- 6,
- 13,
- 84,
- -29,
- 20,
- 66,
- 27,
- 25,
- -48,
- -5,
- 62,
- -87,
- 70,
- 6,
- 85,
- -9,
- -27,
- -34
- ],
- "type": "float32"
- }
- },
- {
- "name": "ceil float32 3D tensor",
- "inputs": {
- "x": {
- "shape": [2, 3, 4],
- "data": [
- 67.38941577648342,
- 36.78218646695805,
- 99.10649131558534,
- -22.587103876323283,
- 32.70173557917525,
- 17.688807510873474,
- 5.631034848468943,
- 12.965238190762022,
- 83.1319330049133,
- -29.29246123472926,
- 19.844631250887133,
- 65.27903232818329,
- 26.311109519759952,
- 24.2856723456172,
- -48.3976724829041,
- -5.617412380605998,
- 61.53380759105448,
- -87.81197726868459,
- 69.71428621372127,
- 5.0031021954943355,
- 84.3683411023199,
- -9.390542062321572,
- -27.85661776414834,
- -34.89593295662057
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 3, 4],
- "data": [
- 68,
- 37,
- 100,
- -22,
- 33,
- 18,
- 6,
- 13,
- 84,
- -29,
- 20,
- 66,
- 27,
- 25,
- -48,
- -5,
- 62,
- -87,
- 70,
- 6,
- 85,
- -9,
- -27,
- -34
- ],
- "type": "float32"
- }
- },
- {
- "name": "ceil float32 4D tensor",
- "inputs": {
- "x": {
- "shape": [2, 2, 2, 3],
- "data": [
- 67.38941577648342,
- 36.78218646695805,
- 99.10649131558534,
- -22.587103876323283,
- 32.70173557917525,
- 17.688807510873474,
- 5.631034848468943,
- 12.965238190762022,
- 83.1319330049133,
- -29.29246123472926,
- 19.844631250887133,
- 65.27903232818329,
- 26.311109519759952,
- 24.2856723456172,
- -48.3976724829041,
- -5.617412380605998,
- 61.53380759105448,
- -87.81197726868459,
- 69.71428621372127,
- 5.0031021954943355,
- 84.3683411023199,
- -9.390542062321572,
- -27.85661776414834,
- -34.89593295662057
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 68,
- 37,
- 100,
- -22,
- 33,
- 18,
- 6,
- 13,
- 84,
- -29,
- 20,
- 66,
- 27,
- 25,
- -48,
- -5,
- 62,
- -87,
- 70,
- 6,
- 85,
- -9,
- -27,
- -34
- ],
- "type": "float32"
- }
- },
- {
- "name": "ceil float32 5D tensor",
- "inputs": {
- "x": {
- "shape": [2, 1, 4, 1, 3],
- "data": [
- 67.38941577648342,
- 36.78218646695805,
- 99.10649131558534,
- -22.587103876323283,
- 32.70173557917525,
- 17.688807510873474,
- 5.631034848468943,
- 12.965238190762022,
- 83.1319330049133,
- -29.29246123472926,
- 19.844631250887133,
- 65.27903232818329,
- 26.311109519759952,
- 24.2856723456172,
- -48.3976724829041,
- -5.617412380605998,
- 61.53380759105448,
- -87.81197726868459,
- 69.71428621372127,
- 5.0031021954943355,
- 84.3683411023199,
- -9.390542062321572,
- -27.85661776414834,
- -34.89593295662057
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 1, 4, 1, 3],
- "data": [
- 68,
- 37,
- 100,
- -22,
- 33,
- 18,
- 6,
- 13,
- 84,
- -29,
- 20,
- 66,
- 27,
- 25,
- -48,
- -5,
- 62,
- -87,
- 70,
- 6,
- 85,
- -9,
- -27,
- -34
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/clamp.json b/tests/wpt/tests/webnn/resources/test_data/clamp.json
deleted file mode 100644
index f25019e4d9e..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/clamp.json
+++ /dev/null
@@ -1,1169 +0,0 @@
-{
- "tests": [
- // default options
- {
- "name": "clamp float32 1D constant tensor default options",
- "inputs": {
- "x": { // use 'x' for input operand name
- "shape": [24],
- "data": [
- -9.817828475355284,
- -6.024063916325786,
- -4.072562498632983,
- -6.575078191902692,
- -7.7556836912181915,
- 9.524681107378463,
- 3.7292487446449307,
- 6.4816868736447475,
- -1.5374205904252634,
- -7.343102426698445,
- 7.880751290929794,
- -2.056408790509967,
- 6.34386375786449,
- 5.52573787183,
- 0.8433118207347725,
- -8.19996033345526,
- -7.786487326213716,
- 9.280223823954241,
- -2.31305948485121,
- 9.549695091037119,
- 5.788925460130297,
- 5.549378312916486,
- 7.409400528051194,
- -2.1236145770503745
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- -9.817828178405762,
- -6.024064064025879,
- -4.0725626945495605,
- -6.575078010559082,
- -7.755683898925781,
- 9.524681091308594,
- 3.7292487621307373,
- 6.481687068939209,
- -1.537420630455017,
- -7.34310245513916,
- 7.880751132965088,
- -2.0564088821411133,
- 6.3438639640808105,
- 5.525737762451172,
- 0.8433118462562561,
- -8.199960708618164,
- -7.786487102508545,
- 9.280223846435547,
- -2.3130595684051514,
- 9.549695014953613,
- 5.788925647735596,
- 5.549378395080566,
- 7.409400463104248,
- -2.123614549636841
- ],
- "type": "float32"
- }
- },
- {
- "name": "clamp float32 1D tensor default options",
- "inputs": {
- "x": { // use 'x' for input operand name
- "shape": [24],
- "data": [
- -9.817828475355284,
- -6.024063916325786,
- -4.072562498632983,
- -6.575078191902692,
- -7.7556836912181915,
- 9.524681107378463,
- 3.7292487446449307,
- 6.4816868736447475,
- -1.5374205904252634,
- -7.343102426698445,
- 7.880751290929794,
- -2.056408790509967,
- 6.34386375786449,
- 5.52573787183,
- 0.8433118207347725,
- -8.19996033345526,
- -7.786487326213716,
- 9.280223823954241,
- -2.31305948485121,
- 9.549695091037119,
- 5.788925460130297,
- 5.549378312916486,
- 7.409400528051194,
- -2.1236145770503745
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- -9.817828178405762,
- -6.024064064025879,
- -4.0725626945495605,
- -6.575078010559082,
- -7.755683898925781,
- 9.524681091308594,
- 3.7292487621307373,
- 6.481687068939209,
- -1.537420630455017,
- -7.34310245513916,
- 7.880751132965088,
- -2.0564088821411133,
- 6.3438639640808105,
- 5.525737762451172,
- 0.8433118462562561,
- -8.199960708618164,
- -7.786487102508545,
- 9.280223846435547,
- -2.3130595684051514,
- 9.549695014953613,
- 5.788925647735596,
- 5.549378395080566,
- 7.409400463104248,
- -2.123614549636841
- ],
- "type": "float32"
- }
- },
- {
- "name": "clamp float32 2D tensor default options",
- "inputs": {
- "x": {
- "shape": [4, 6],
- "data": [
- -9.817828475355284,
- -6.024063916325786,
- -4.072562498632983,
- -6.575078191902692,
- -7.7556836912181915,
- 9.524681107378463,
- 3.7292487446449307,
- 6.4816868736447475,
- -1.5374205904252634,
- -7.343102426698445,
- 7.880751290929794,
- -2.056408790509967,
- 6.34386375786449,
- 5.52573787183,
- 0.8433118207347725,
- -8.19996033345526,
- -7.786487326213716,
- 9.280223823954241,
- -2.31305948485121,
- 9.549695091037119,
- 5.788925460130297,
- 5.549378312916486,
- 7.409400528051194,
- -2.1236145770503745
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- -9.817828178405762,
- -6.024064064025879,
- -4.0725626945495605,
- -6.575078010559082,
- -7.755683898925781,
- 9.524681091308594,
- 3.7292487621307373,
- 6.481687068939209,
- -1.537420630455017,
- -7.34310245513916,
- 7.880751132965088,
- -2.0564088821411133,
- 6.3438639640808105,
- 5.525737762451172,
- 0.8433118462562561,
- -8.199960708618164,
- -7.786487102508545,
- 9.280223846435547,
- -2.3130595684051514,
- 9.549695014953613,
- 5.788925647735596,
- 5.549378395080566,
- 7.409400463104248,
- -2.123614549636841
- ],
- "type": "float32"
- }
- },
- {
- "name": "clamp float32 3D tensor default options",
- "inputs": {
- "x": {
- "shape": [2, 3, 4],
- "data": [
- -9.817828475355284,
- -6.024063916325786,
- -4.072562498632983,
- -6.575078191902692,
- -7.7556836912181915,
- 9.524681107378463,
- 3.7292487446449307,
- 6.4816868736447475,
- -1.5374205904252634,
- -7.343102426698445,
- 7.880751290929794,
- -2.056408790509967,
- 6.34386375786449,
- 5.52573787183,
- 0.8433118207347725,
- -8.19996033345526,
- -7.786487326213716,
- 9.280223823954241,
- -2.31305948485121,
- 9.549695091037119,
- 5.788925460130297,
- 5.549378312916486,
- 7.409400528051194,
- -2.1236145770503745
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 3, 4],
- "data": [
- -9.817828178405762,
- -6.024064064025879,
- -4.0725626945495605,
- -6.575078010559082,
- -7.755683898925781,
- 9.524681091308594,
- 3.7292487621307373,
- 6.481687068939209,
- -1.537420630455017,
- -7.34310245513916,
- 7.880751132965088,
- -2.0564088821411133,
- 6.3438639640808105,
- 5.525737762451172,
- 0.8433118462562561,
- -8.199960708618164,
- -7.786487102508545,
- 9.280223846435547,
- -2.3130595684051514,
- 9.549695014953613,
- 5.788925647735596,
- 5.549378395080566,
- 7.409400463104248,
- -2.123614549636841
- ],
- "type": "float32"
- }
- },
- {
- "name": "clamp float32 4D tensor default options",
- "inputs": {
- "x": {
- "shape": [3, 2, 2, 2],
- "data": [
- -9.817828475355284,
- -6.024063916325786,
- -4.072562498632983,
- -6.575078191902692,
- -7.7556836912181915,
- 9.524681107378463,
- 3.7292487446449307,
- 6.4816868736447475,
- -1.5374205904252634,
- -7.343102426698445,
- 7.880751290929794,
- -2.056408790509967,
- 6.34386375786449,
- 5.52573787183,
- 0.8433118207347725,
- -8.19996033345526,
- -7.786487326213716,
- 9.280223823954241,
- -2.31305948485121,
- 9.549695091037119,
- 5.788925460130297,
- 5.549378312916486,
- 7.409400528051194,
- -2.1236145770503745
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [3, 2, 2, 2],
- "data": [
- -9.817828178405762,
- -6.024064064025879,
- -4.0725626945495605,
- -6.575078010559082,
- -7.755683898925781,
- 9.524681091308594,
- 3.7292487621307373,
- 6.481687068939209,
- -1.537420630455017,
- -7.34310245513916,
- 7.880751132965088,
- -2.0564088821411133,
- 6.3438639640808105,
- 5.525737762451172,
- 0.8433118462562561,
- -8.199960708618164,
- -7.786487102508545,
- 9.280223846435547,
- -2.3130595684051514,
- 9.549695014953613,
- 5.788925647735596,
- 5.549378395080566,
- 7.409400463104248,
- -2.123614549636841
- ],
- "type": "float32"
- }
- },
- {
- "name": "clamp float32 5D tensor default options",
- "inputs": {
- "x": {
- "shape": [4, 1, 1, 2, 3],
- "data": [
- -9.817828475355284,
- -6.024063916325786,
- -4.072562498632983,
- -6.575078191902692,
- -7.7556836912181915,
- 9.524681107378463,
- 3.7292487446449307,
- 6.4816868736447475,
- -1.5374205904252634,
- -7.343102426698445,
- 7.880751290929794,
- -2.056408790509967,
- 6.34386375786449,
- 5.52573787183,
- 0.8433118207347725,
- -8.19996033345526,
- -7.786487326213716,
- 9.280223823954241,
- -2.31305948485121,
- 9.549695091037119,
- 5.788925460130297,
- 5.549378312916486,
- 7.409400528051194,
- -2.1236145770503745
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [4, 1, 1, 2, 3],
- "data": [
- -9.817828178405762,
- -6.024064064025879,
- -4.0725626945495605,
- -6.575078010559082,
- -7.755683898925781,
- 9.524681091308594,
- 3.7292487621307373,
- 6.481687068939209,
- -1.537420630455017,
- -7.34310245513916,
- 7.880751132965088,
- -2.0564088821411133,
- 6.3438639640808105,
- 5.525737762451172,
- 0.8433118462562561,
- -8.199960708618164,
- -7.786487102508545,
- 9.280223846435547,
- -2.3130595684051514,
- 9.549695014953613,
- 5.788925647735596,
- 5.549378395080566,
- 7.409400463104248,
- -2.123614549636841
- ],
- "type": "float32"
- }
- },
- // default options.maxValue and specified options.minValue
- {
- "name": "clamp float32 4D tensor default options.maxValue and specified negative options.minValue",
- "inputs": {
- "x": {
- "shape": [2, 1, 4, 3],
- "data": [
- -9.817828475355284,
- -6.024063916325786,
- -4.072562498632983,
- -6.575078191902692,
- -7.7556836912181915,
- 9.524681107378463,
- 3.7292487446449307,
- 6.4816868736447475,
- -1.5374205904252634,
- -7.343102426698445,
- 7.880751290929794,
- -2.056408790509967,
- 6.34386375786449,
- 5.52573787183,
- 0.8433118207347725,
- -8.19996033345526,
- -7.786487326213716,
- 9.280223823954241,
- -2.31305948485121,
- 9.549695091037119,
- 5.788925460130297,
- 5.549378312916486,
- 7.409400528051194,
- -2.1236145770503745
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 1, 4, 3],
- "data": [
- -1,
- -1,
- -1,
- -1,
- -1,
- 9.524681091308594,
- 3.7292487621307373,
- 6.481687068939209,
- -1,
- -1,
- 7.880751132965088,
- -1,
- 6.3438639640808105,
- 5.525737762451172,
- 0.8433118462562561,
- -1,
- -1,
- 9.280223846435547,
- -1,
- 9.549695014953613,
- 5.788925647735596,
- 5.549378395080566,
- 7.409400463104248,
- -1
- ],
- "type": "float32"
- },
- "options": {
- "minValue": -1.0
- }
- },
- {
- "name": "clamp float32 3D tensor default options.maxValue and specified options.minValue=0.0",
- "inputs": {
- "x": {
- "shape": [6, 2, 2],
- "data": [
- -9.817828475355284,
- -6.024063916325786,
- -4.072562498632983,
- -6.575078191902692,
- -7.7556836912181915,
- 9.524681107378463,
- 3.7292487446449307,
- 6.4816868736447475,
- -1.5374205904252634,
- -7.343102426698445,
- 7.880751290929794,
- -2.056408790509967,
- 6.34386375786449,
- 5.52573787183,
- 0.8433118207347725,
- -8.19996033345526,
- -7.786487326213716,
- 9.280223823954241,
- -2.31305948485121,
- 9.549695091037119,
- 5.788925460130297,
- 5.549378312916486,
- 7.409400528051194,
- -2.1236145770503745
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [6, 2, 2],
- "data": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 9.524681091308594,
- 3.7292487621307373,
- 6.481687068939209,
- 0,
- 0,
- 7.880751132965088,
- 0,
- 6.3438639640808105,
- 5.525737762451172,
- 0.8433118462562561,
- 0,
- 0,
- 9.280223846435547,
- 0,
- 9.549695014953613,
- 5.788925647735596,
- 5.549378395080566,
- 7.409400463104248,
- 0
- ],
- "type": "float32"
- },
- "options": {
- "minValue": 0.0
- }
- },
- {
- "name": "clamp float32 2D tensor default options.maxValue and specified positive options.minValue",
- "inputs": {
- "x": {
- "shape": [3, 8],
- "data": [
- -9.817828475355284,
- -6.024063916325786,
- -4.072562498632983,
- -6.575078191902692,
- -7.7556836912181915,
- 9.524681107378463,
- 3.7292487446449307,
- 6.4816868736447475,
- -1.5374205904252634,
- -7.343102426698445,
- 7.880751290929794,
- -2.056408790509967,
- 6.34386375786449,
- 5.52573787183,
- 0.8433118207347725,
- -8.19996033345526,
- -7.786487326213716,
- 9.280223823954241,
- -2.31305948485121,
- 9.549695091037119,
- 5.788925460130297,
- 5.549378312916486,
- 7.409400528051194,
- -2.1236145770503745
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [3, 8],
- "data": [
- 1,
- 1,
- 1,
- 1,
- 1,
- 9.524681091308594,
- 3.7292487621307373,
- 6.481687068939209,
- 1,
- 1,
- 7.880751132965088,
- 1,
- 6.3438639640808105,
- 5.525737762451172,
- 1,
- 1,
- 1,
- 9.280223846435547,
- 1,
- 9.549695014953613,
- 5.788925647735596,
- 5.549378395080566,
- 7.409400463104248,
- 1
- ],
- "type": "float32"
- },
- "options": {
- "minValue": 1.0
- }
- },
- // default options.minValue and specified options.maxValue
- {
- "name": "clamp float32 5D tensor default options.minValue and specified negative options.maxValue",
- "inputs": {
- "x": {
- "shape": [2, 2, 1, 2, 3],
- "data": [
- -9.817828475355284,
- -6.024063916325786,
- -4.072562498632983,
- -6.575078191902692,
- -7.7556836912181915,
- 9.524681107378463,
- 3.7292487446449307,
- 6.4816868736447475,
- -1.5374205904252634,
- -7.343102426698445,
- 7.880751290929794,
- -2.056408790509967,
- 6.34386375786449,
- 5.52573787183,
- 0.8433118207347725,
- -8.19996033345526,
- -7.786487326213716,
- 9.280223823954241,
- -2.31305948485121,
- 9.549695091037119,
- 5.788925460130297,
- 5.549378312916486,
- 7.409400528051194,
- -2.1236145770503745
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 1, 2, 3],
- "data": [
- -9.817828178405762,
- -6.024064064025879,
- -4.0725626945495605,
- -6.575078010559082,
- -7.755683898925781,
- -2,
- -2,
- -2,
- -2,
- -7.34310245513916,
- -2,
- -2.0564088821411133,
- -2,
- -2,
- -2,
- -8.199960708618164,
- -7.786487102508545,
- -2,
- -2.3130595684051514,
- -2,
- -2,
- -2,
- -2,
- -2.123614549636841
- ],
- "type": "float32"
- },
- "options": {
- "maxValue": -2.0
- }
- },
- {
- "name": "clamp float32 1D tensor default options.minValue and specified options.maxValue=0.0",
- "inputs": {
- "x": {
- "shape": [24],
- "data": [
- -9.817828475355284,
- -6.024063916325786,
- -4.072562498632983,
- -6.575078191902692,
- -7.7556836912181915,
- 9.524681107378463,
- 3.7292487446449307,
- 6.4816868736447475,
- -1.5374205904252634,
- -7.343102426698445,
- 7.880751290929794,
- -2.056408790509967,
- 6.34386375786449,
- 5.52573787183,
- 0.8433118207347725,
- -8.19996033345526,
- -7.786487326213716,
- 9.280223823954241,
- -2.31305948485121,
- 9.549695091037119,
- 5.788925460130297,
- 5.549378312916486,
- 7.409400528051194,
- -2.1236145770503745
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- -9.817828178405762,
- -6.024064064025879,
- -4.0725626945495605,
- -6.575078010559082,
- -7.755683898925781,
- 0,
- 0,
- 0,
- -1.537420630455017,
- -7.34310245513916,
- 0,
- -2.0564088821411133,
- 0,
- 0,
- 0,
- -8.199960708618164,
- -7.786487102508545,
- 0,
- -2.3130595684051514,
- 0,
- 0,
- 0,
- 0,
- -2.123614549636841
- ],
- "type": "float32"
- },
- "options": {
- "maxValue": 0.0
- }
- },
- {
- "name": "clamp float32 3D tensor default options.minValue and specified positive options.maxValue",
- "inputs": {
- "x": {
- "shape": [3, 4, 2],
- "data": [
- -9.817828475355284,
- -6.024063916325786,
- -4.072562498632983,
- -6.575078191902692,
- -7.7556836912181915,
- 9.524681107378463,
- 3.7292487446449307,
- 6.4816868736447475,
- -1.5374205904252634,
- -7.343102426698445,
- 7.880751290929794,
- -2.056408790509967,
- 6.34386375786449,
- 5.52573787183,
- 0.8433118207347725,
- -8.19996033345526,
- -7.786487326213716,
- 9.280223823954241,
- -2.31305948485121,
- 9.549695091037119,
- 5.788925460130297,
- 5.549378312916486,
- 7.409400528051194,
- -2.1236145770503745
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [3, 4, 2],
- "data": [
- -9.817828178405762,
- -6.024064064025879,
- -4.0725626945495605,
- -6.575078010559082,
- -7.755683898925781,
- 3,
- 3,
- 3,
- -1.537420630455017,
- -7.34310245513916,
- 3,
- -2.0564088821411133,
- 3,
- 3,
- 0.8433118462562561,
- -8.199960708618164,
- -7.786487102508545,
- 3,
- -2.3130595684051514,
- 3,
- 3,
- 3,
- 3,
- -2.123614549636841
- ],
- "type": "float32"
- },
- "options": {
- "maxValue": 3.0
- }
- },
- // specified both options.minValue and options.maxValue
- {
- "name": "clamp float32 5D tensor specified both negative options.minValue and options.maxValue",
- "inputs": {
- "x": {
- "shape": [3, 2, 1, 1, 4],
- "data": [
- -9.817828475355284,
- -6.024063916325786,
- -4.072562498632983,
- -6.575078191902692,
- -7.7556836912181915,
- 9.524681107378463,
- 3.7292487446449307,
- 6.4816868736447475,
- -1.5374205904252634,
- -7.343102426698445,
- 7.880751290929794,
- -2.056408790509967,
- 6.34386375786449,
- 5.52573787183,
- 0.8433118207347725,
- -8.19996033345526,
- -7.786487326213716,
- 9.280223823954241,
- -2.31305948485121,
- 9.549695091037119,
- 5.788925460130297,
- 5.549378312916486,
- 7.409400528051194,
- -2.1236145770503745
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [3, 2, 1, 1, 4],
- "data": [
- -8,
- -6.024064064025879,
- -4.0725626945495605,
- -6.575078010559082,
- -7.755683898925781,
- -1,
- -1,
- -1,
- -1.537420630455017,
- -7.34310245513916,
- -1,
- -2.0564088821411133,
- -1,
- -1,
- -1,
- -8,
- -7.786487102508545,
- -1,
- -2.3130595684051514,
- -1,
- -1,
- -1,
- -1,
- -2.123614549636841
- ],
- "type": "float32"
- },
- "options": {
- "minValue": -8.0,
- "maxValue": -1.0
- }
- },
- {
- "name": "clamp float32 4D tensor specified negative options.minValue and options.maxValue=0.0",
- "inputs": {
- "x": {
- "shape": [1, 4, 3, 2],
- "data": [
- -9.817828475355284,
- -6.024063916325786,
- -4.072562498632983,
- -6.575078191902692,
- -7.7556836912181915,
- 9.524681107378463,
- 3.7292487446449307,
- 6.4816868736447475,
- -1.5374205904252634,
- -7.343102426698445,
- 7.880751290929794,
- -2.056408790509967,
- 6.34386375786449,
- 5.52573787183,
- 0.8433118207347725,
- -8.19996033345526,
- -7.786487326213716,
- 9.280223823954241,
- -2.31305948485121,
- 9.549695091037119,
- 5.788925460130297,
- 5.549378312916486,
- 7.409400528051194,
- -2.1236145770503745
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [1, 4, 3, 2],
- "data": [
- -6,
- -6,
- -4.0725626945495605,
- -6,
- -6,
- 0,
- 0,
- 0,
- -1.537420630455017,
- -6,
- 0,
- -2.0564088821411133,
- 0,
- 0,
- 0,
- -6,
- -6,
- 0,
- -2.3130595684051514,
- 0,
- 0,
- 0,
- 0,
- -2.123614549636841
- ],
- "type": "float32"
- },
- "options": {
- "minValue": -6.0,
- "maxValue": 0.0
- }
- },
- {
- "name": "clamp float32 3D tensor specified negative options.minValue and positive options.maxValue",
- "inputs": {
- "x": {
- "shape": [2, 6, 2],
- "data": [
- -9.817828475355284,
- -6.024063916325786,
- -4.072562498632983,
- -6.575078191902692,
- -7.7556836912181915,
- 9.524681107378463,
- 3.7292487446449307,
- 6.4816868736447475,
- -1.5374205904252634,
- -7.343102426698445,
- 7.880751290929794,
- -2.056408790509967,
- 6.34386375786449,
- 5.52573787183,
- 0.8433118207347725,
- -8.19996033345526,
- -7.786487326213716,
- 9.280223823954241,
- -2.31305948485121,
- 9.549695091037119,
- 5.788925460130297,
- 5.549378312916486,
- 7.409400528051194,
- -2.1236145770503745
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 6, 2],
- "data": [
- -3,
- -3,
- -3,
- -3,
- -3,
- 4,
- 3.7292487621307373,
- 4,
- -1.537420630455017,
- -3,
- 4,
- -2.0564088821411133,
- 4,
- 4,
- 0.8433118462562561,
- -3,
- -3,
- 4,
- -2.3130595684051514,
- 4,
- 4,
- 4,
- 4,
- -2.123614549636841
- ],
- "type": "float32"
- },
- "options": {
- "minValue": -3.0,
- "maxValue": 4.0
- }
- },
- {
- "name": "clamp float32 2D tensor specified options.minValue=0.0 and positive options.maxValue",
- "inputs": {
- "x": {
- "shape": [6, 4],
- "data": [
- -9.817828475355284,
- -6.024063916325786,
- -4.072562498632983,
- -6.575078191902692,
- -7.7556836912181915,
- 9.524681107378463,
- 3.7292487446449307,
- 6.4816868736447475,
- -1.5374205904252634,
- -7.343102426698445,
- 7.880751290929794,
- -2.056408790509967,
- 6.34386375786449,
- 5.52573787183,
- 0.8433118207347725,
- -8.19996033345526,
- -7.786487326213716,
- 9.280223823954241,
- -2.31305948485121,
- 9.549695091037119,
- 5.788925460130297,
- 5.549378312916486,
- 7.409400528051194,
- -2.1236145770503745
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [6, 4],
- "data": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 6,
- 3.7292487621307373,
- 6,
- 0,
- 0,
- 6,
- 0,
- 6,
- 5.525737762451172,
- 0.8433118462562561,
- 0,
- 0,
- 6,
- 0,
- 6,
- 5.788925647735596,
- 5.549378395080566,
- 6,
- 0
- ],
- "type": "float32"
- },
- "options": {
- "minValue": 0.0,
- "maxValue": 6.0
- }
- },
- {
- "name": "clamp float32 1D tensor specified both positive options.minValue and options.maxValue",
- "inputs": {
- "x": {
- "shape": [24],
- "data": [
- -9.817828475355284,
- -6.024063916325786,
- -4.072562498632983,
- -6.575078191902692,
- -7.7556836912181915,
- 9.524681107378463,
- 3.7292487446449307,
- 6.4816868736447475,
- -1.5374205904252634,
- -7.343102426698445,
- 7.880751290929794,
- -2.056408790509967,
- 6.34386375786449,
- 5.52573787183,
- 0.8433118207347725,
- -8.19996033345526,
- -7.786487326213716,
- 9.280223823954241,
- -2.31305948485121,
- 9.549695091037119,
- 5.788925460130297,
- 5.549378312916486,
- 7.409400528051194,
- -2.1236145770503745
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- 2,
- 2,
- 2,
- 2,
- 2,
- 7,
- 3.7292487621307373,
- 6.481687068939209,
- 2,
- 2,
- 7,
- 2,
- 6.3438639640808105,
- 5.525737762451172,
- 2,
- 2,
- 2,
- 7,
- 2,
- 7,
- 5.788925647735596,
- 5.549378395080566,
- 7,
- 2
- ],
- "type": "float32"
- },
- "options": {
- "minValue": 2.0,
- "maxValue": 7.0
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/concat.json b/tests/wpt/tests/webnn/resources/test_data/concat.json
deleted file mode 100644
index 5e2285b75a0..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/concat.json
+++ /dev/null
@@ -1,3666 +0,0 @@
-{
- "tests": [
- // concat 1D tensors
- {
- "name": "concat two float32 1D constant tensors of same shape along axis 0",
- "inputs": [
- {
- "name": "input1",
- "shape": [12],
- "data": [
- -0.39444134019222243,
- 0.8619825316530809,
- 0.3379962524218807,
- -0.9906398615400507,
- 0.576785657225761,
- 0.3227640108329237,
- -0.44735022799701873,
- 0.11028251232581932,
- -0.5945112749179908,
- -0.40284849555754754,
- -0.9531654171044694,
- -0.6731740531810844
- ],
- "type": "float32",
- "constant": true
- },
- {
- "name": "input2",
- "shape": [12],
- "data": [
- 0.4918989118791477,
- -0.15864110312378976,
- -0.34188115459083157,
- -0.9158143500894873,
- -0.7206121708970712,
- -0.7993468785008635,
- 0.6653799854931952,
- 0.03886038855553897,
- 0.5182055416768865,
- -0.8742016938344297,
- -0.479021891130635,
- 0.1211843166661235
- ],
- "type": "float32",
- "constant": true
- }
- ],
- "axis": 0,
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- -0.3944413363933563,
- 0.861982524394989,
- 0.337996244430542,
- -0.990639865398407,
- 0.576785683631897,
- 0.32276400923728943,
- -0.44735023379325867,
- 0.11028251051902771,
- -0.5945112705230713,
- -0.402848482131958,
- -0.9531654119491577,
- -0.6731740236282349,
- 0.49189892411231995,
- -0.15864109992980957,
- -0.3418811559677124,
- -0.9158143401145935,
- -0.7206121683120728,
- -0.7993468642234802,
- 0.6653800010681152,
- 0.03886038810014725,
- 0.5182055234909058,
- -0.8742017149925232,
- -0.4790218770503998,
- 0.1211843192577362
- ],
- "type": "float32"
- }
- },
- {
- "name": "concat two float32 1D tensors of same shape along axis 0",
- "inputs": [
- {
- "name": "input1",
- "shape": [12],
- "data": [
- -0.39444134019222243,
- 0.8619825316530809,
- 0.3379962524218807,
- -0.9906398615400507,
- 0.576785657225761,
- 0.3227640108329237,
- -0.44735022799701873,
- 0.11028251232581932,
- -0.5945112749179908,
- -0.40284849555754754,
- -0.9531654171044694,
- -0.6731740531810844
- ],
- "type": "float32"
- },
- {
- "name": "input2",
- "shape": [12],
- "data": [
- 0.4918989118791477,
- -0.15864110312378976,
- -0.34188115459083157,
- -0.9158143500894873,
- -0.7206121708970712,
- -0.7993468785008635,
- 0.6653799854931952,
- 0.03886038855553897,
- 0.5182055416768865,
- -0.8742016938344297,
- -0.479021891130635,
- 0.1211843166661235
- ],
- "type": "float32"
- }
- ],
- "axis": 0,
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- -0.3944413363933563,
- 0.861982524394989,
- 0.337996244430542,
- -0.990639865398407,
- 0.576785683631897,
- 0.32276400923728943,
- -0.44735023379325867,
- 0.11028251051902771,
- -0.5945112705230713,
- -0.402848482131958,
- -0.9531654119491577,
- -0.6731740236282349,
- 0.49189892411231995,
- -0.15864109992980957,
- -0.3418811559677124,
- -0.9158143401145935,
- -0.7206121683120728,
- -0.7993468642234802,
- 0.6653800010681152,
- 0.03886038810014725,
- 0.5182055234909058,
- -0.8742017149925232,
- -0.4790218770503998,
- 0.1211843192577362
- ],
- "type": "float32"
- }
- },
- {
- "name": "concat two float16 1D tensors of same shape along axis 0",
- "inputs": [
- {
- "name": "input1",
- "shape": [12],
- "data": [
- -0.39444134019222243,
- 0.8619825316530809,
- 0.3379962524218807,
- -0.9906398615400507,
- 0.576785657225761,
- 0.3227640108329237,
- -0.44735022799701873,
- 0.11028251232581932,
- -0.5945112749179908,
- -0.40284849555754754,
- -0.9531654171044694,
- -0.6731740531810844
- ],
- "type": "float16"
- },
- {
- "name": "input2",
- "shape": [12],
- "data": [
- 0.4918989118791477,
- -0.15864110312378976,
- -0.34188115459083157,
- -0.9158143500894873,
- -0.7206121708970712,
- -0.7993468785008635,
- 0.6653799854931952,
- 0.03886038855553897,
- 0.5182055416768865,
- -0.8742016938344297,
- -0.479021891130635,
- 0.1211843166661235
- ],
- "type": "float16"
- }
- ],
- "axis": 0,
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- -0.39453125,
- 0.86181640625,
- 0.337890625,
- -0.99072265625,
- 0.57666015625,
- 0.32275390625,
- -0.447265625,
- 0.11029052734375,
- -0.5947265625,
- -0.40283203125,
- -0.953125,
- -0.67333984375,
- 0.491943359375,
- -0.15869140625,
- -0.341796875,
- -0.916015625,
- -0.720703125,
- -0.79931640625,
- 0.66552734375,
- 0.038848876953125,
- 0.51806640625,
- -0.8740234375,
- -0.47900390625,
- 0.12115478515625
- ],
- "type": "float16"
- }
- },
- {
- "name": "concat three float32 1D tensors of different 1st dimension along axis 0",
- "inputs": [
- {
- "name": "input1",
- "shape": [4],
- "data": [
- -0.39444134019222243,
- 0.8619825316530809,
- 0.3379962524218807,
- -0.9906398615400507
- ],
- "type": "float32"
- },
- {
- "name": "input2",
- "shape": [8],
- "data": [
- 0.576785657225761,
- 0.3227640108329237,
- -0.44735022799701873,
- 0.11028251232581932,
- -0.5945112749179908,
- -0.40284849555754754,
- -0.9531654171044694,
- -0.6731740531810844
- ],
- "type": "float32"
- },
- {
- "name": "input3",
- "shape": [12],
- "data": [
- 0.4918989118791477,
- -0.15864110312378976,
- -0.34188115459083157,
- -0.9158143500894873,
- -0.7206121708970712,
- -0.7993468785008635,
- 0.6653799854931952,
- 0.03886038855553897,
- 0.5182055416768865,
- -0.8742016938344297,
- -0.479021891130635,
- 0.1211843166661235
- ],
- "type": "float32"
- }
- ],
- "axis": 0,
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- -0.3944413363933563,
- 0.861982524394989,
- 0.337996244430542,
- -0.990639865398407,
- 0.576785683631897,
- 0.32276400923728943,
- -0.44735023379325867,
- 0.11028251051902771,
- -0.5945112705230713,
- -0.402848482131958,
- -0.9531654119491577,
- -0.6731740236282349,
- 0.49189892411231995,
- -0.15864109992980957,
- -0.3418811559677124,
- -0.9158143401145935,
- -0.7206121683120728,
- -0.7993468642234802,
- 0.6653800010681152,
- 0.03886038810014725,
- 0.5182055234909058,
- -0.8742017149925232,
- -0.4790218770503998,
- 0.1211843192577362
- ],
- "type": "float32"
- }
- },
- {
- "name": "concat three float16 1D tensors of different 1st dimension along axis 0",
- "inputs": [
- {
- "name": "input1",
- "shape": [4],
- "data": [
- -0.39444134019222243,
- 0.8619825316530809,
- 0.3379962524218807,
- -0.9906398615400507
- ],
- "type": "float16"
- },
- {
- "name": "input2",
- "shape": [8],
- "data": [
- 0.576785657225761,
- 0.3227640108329237,
- -0.44735022799701873,
- 0.11028251232581932,
- -0.5945112749179908,
- -0.40284849555754754,
- -0.9531654171044694,
- -0.6731740531810844
- ],
- "type": "float16"
- },
- {
- "name": "input3",
- "shape": [12],
- "data": [
- 0.4918989118791477,
- -0.15864110312378976,
- -0.34188115459083157,
- -0.9158143500894873,
- -0.7206121708970712,
- -0.7993468785008635,
- 0.6653799854931952,
- 0.03886038855553897,
- 0.5182055416768865,
- -0.8742016938344297,
- -0.479021891130635,
- 0.1211843166661235
- ],
- "type": "float16"
- }
- ],
- "axis": 0,
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- -0.39453125,
- 0.86181640625,
- 0.337890625,
- -0.99072265625,
- 0.57666015625,
- 0.32275390625,
- -0.447265625,
- 0.11029052734375,
- -0.5947265625,
- -0.40283203125,
- -0.953125,
- -0.67333984375,
- 0.491943359375,
- -0.15869140625,
- -0.341796875,
- -0.916015625,
- -0.720703125,
- -0.79931640625,
- 0.66552734375,
- 0.038848876953125,
- 0.51806640625,
- -0.8740234375,
- -0.47900390625,
- 0.12115478515625
- ],
- "type": "float16"
- }
- },
- {
- "name": "concat four float32 1D tensors of same 1st dimension along axis 0",
- "inputs": [
- {
- "name": "input1",
- "shape": [6],
- "data": [
- -0.39444134019222243,
- 0.8619825316530809,
- 0.3379962524218807,
- -0.9906398615400507,
- 0.576785657225761,
- 0.3227640108329237
- ],
- "type": "float32"
- },
- {
- "name": "input2",
- "shape": [6],
- "data": [
- -0.44735022799701873,
- 0.11028251232581932,
- -0.5945112749179908,
- -0.40284849555754754,
- -0.9531654171044694,
- -0.6731740531810844
- ],
- "type": "float32"
- },
- {
- "name": "input3",
- "shape": [6],
- "data": [
- 0.4918989118791477,
- -0.15864110312378976,
- -0.34188115459083157,
- -0.9158143500894873,
- -0.7206121708970712,
- -0.7993468785008635
- ],
- "type": "float32"
- },
- {
- "name": "input4",
- "shape": [6],
- "data": [
- 0.6653799854931952,
- 0.03886038855553897,
- 0.5182055416768865,
- -0.8742016938344297,
- -0.479021891130635,
- 0.1211843166661235
- ],
- "type": "float32"
- }
- ],
- "axis": 0,
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- -0.3944413363933563,
- 0.861982524394989,
- 0.337996244430542,
- -0.990639865398407,
- 0.576785683631897,
- 0.32276400923728943,
- -0.44735023379325867,
- 0.11028251051902771,
- -0.5945112705230713,
- -0.402848482131958,
- -0.9531654119491577,
- -0.6731740236282349,
- 0.49189892411231995,
- -0.15864109992980957,
- -0.3418811559677124,
- -0.9158143401145935,
- -0.7206121683120728,
- -0.7993468642234802,
- 0.6653800010681152,
- 0.03886038810014725,
- 0.5182055234909058,
- -0.8742017149925232,
- -0.4790218770503998,
- 0.1211843192577362
- ],
- "type": "float32"
- }
- },
- {
- "name": "concat four float16 1D tensors of same 1st dimension along axis 0",
- "inputs": [
- {
- "name": "input1",
- "shape": [6],
- "data": [
- -0.39444134019222243,
- 0.8619825316530809,
- 0.3379962524218807,
- -0.9906398615400507,
- 0.576785657225761,
- 0.3227640108329237
- ],
- "type": "float16"
- },
- {
- "name": "input2",
- "shape": [6],
- "data": [
- -0.44735022799701873,
- 0.11028251232581932,
- -0.5945112749179908,
- -0.40284849555754754,
- -0.9531654171044694,
- -0.6731740531810844
- ],
- "type": "float16"
- },
- {
- "name": "input3",
- "shape": [6],
- "data": [
- 0.4918989118791477,
- -0.15864110312378976,
- -0.34188115459083157,
- -0.9158143500894873,
- -0.7206121708970712,
- -0.7993468785008635
- ],
- "type": "float16"
- },
- {
- "name": "input4",
- "shape": [6],
- "data": [
- 0.6653799854931952,
- 0.03886038855553897,
- 0.5182055416768865,
- -0.8742016938344297,
- -0.479021891130635,
- 0.1211843166661235
- ],
- "type": "float16"
- }
- ],
- "axis": 0,
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- -0.39453125,
- 0.86181640625,
- 0.337890625,
- -0.99072265625,
- 0.57666015625,
- 0.32275390625,
- -0.447265625,
- 0.11029052734375,
- -0.5947265625,
- -0.40283203125,
- -0.953125,
- -0.67333984375,
- 0.491943359375,
- -0.15869140625,
- -0.341796875,
- -0.916015625,
- -0.720703125,
- -0.79931640625,
- 0.66552734375,
- 0.038848876953125,
- 0.51806640625,
- -0.8740234375,
- -0.47900390625,
- 0.12115478515625
- ],
- "type": "float16"
- }
- },
- {
- "name": "concat four float32 1D tensors of different 1st dimension along axis 0",
- "inputs": [
- {
- "name": "input1",
- "shape": [2],
- "data": [
- -0.39444134019222243,
- 0.8619825316530809
- ],
- "type": "float32"
- },
- {
- "name": "input2",
- "shape": [4],
- "data": [
- 0.3379962524218807,
- -0.9906398615400507,
- 0.576785657225761,
- 0.3227640108329237
- ],
- "type": "float32"
- },
- {
- "name": "input3",
- "shape": [8],
- "data": [
- -0.44735022799701873,
- 0.11028251232581932,
- -0.5945112749179908,
- -0.40284849555754754,
- -0.9531654171044694,
- -0.6731740531810844,
- 0.4918989118791477,
- -0.15864110312378976
- ],
- "type": "float32"
- },
- {
- "name": "input4",
- "shape": [10],
- "data": [
- -0.34188115459083157,
- -0.9158143500894873,
- -0.7206121708970712,
- -0.7993468785008635,
- 0.6653799854931952,
- 0.03886038855553897,
- 0.5182055416768865,
- -0.8742016938344297,
- -0.479021891130635,
- 0.1211843166661235
- ],
- "type": "float32"
- }
- ],
- "axis": 0,
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- -0.3944413363933563,
- 0.861982524394989,
- 0.337996244430542,
- -0.990639865398407,
- 0.576785683631897,
- 0.32276400923728943,
- -0.44735023379325867,
- 0.11028251051902771,
- -0.5945112705230713,
- -0.402848482131958,
- -0.9531654119491577,
- -0.6731740236282349,
- 0.49189892411231995,
- -0.15864109992980957,
- -0.3418811559677124,
- -0.9158143401145935,
- -0.7206121683120728,
- -0.7993468642234802,
- 0.6653800010681152,
- 0.03886038810014725,
- 0.5182055234909058,
- -0.8742017149925232,
- -0.4790218770503998,
- 0.1211843192577362
- ],
- "type": "float32"
- }
- },
- {
- "name": "concat four float16 1D tensors of different 1st dimension along axis 0",
- "inputs": [
- {
- "name": "input1",
- "shape": [2],
- "data": [
- -0.39444134019222243,
- 0.8619825316530809
- ],
- "type": "float16"
- },
- {
- "name": "input2",
- "shape": [4],
- "data": [
- 0.3379962524218807,
- -0.9906398615400507,
- 0.576785657225761,
- 0.3227640108329237
- ],
- "type": "float16"
- },
- {
- "name": "input3",
- "shape": [8],
- "data": [
- -0.44735022799701873,
- 0.11028251232581932,
- -0.5945112749179908,
- -0.40284849555754754,
- -0.9531654171044694,
- -0.6731740531810844,
- 0.4918989118791477,
- -0.15864110312378976
- ],
- "type": "float16"
- },
- {
- "name": "input4",
- "shape": [10],
- "data": [
- -0.34188115459083157,
- -0.9158143500894873,
- -0.7206121708970712,
- -0.7993468785008635,
- 0.6653799854931952,
- 0.03886038855553897,
- 0.5182055416768865,
- -0.8742016938344297,
- -0.479021891130635,
- 0.1211843166661235
- ],
- "type": "float16"
- }
- ],
- "axis": 0,
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- -0.39453125,
- 0.86181640625,
- 0.337890625,
- -0.99072265625,
- 0.57666015625,
- 0.32275390625,
- -0.447265625,
- 0.11029052734375,
- -0.5947265625,
- -0.40283203125,
- -0.953125,
- -0.67333984375,
- 0.491943359375,
- -0.15869140625,
- -0.341796875,
- -0.916015625,
- -0.720703125,
- -0.79931640625,
- 0.66552734375,
- 0.038848876953125,
- 0.51806640625,
- -0.8740234375,
- -0.47900390625,
- 0.12115478515625
- ],
- "type": "float16"
- }
- },
- // concat 2D tensors
- {
- "name": "concat two float32 2D tensors of same shape along axis 0",
- "inputs": [
- {
- "name": "input1",
- "shape": [2, 6],
- "data": [
- -0.39444134019222243,
- 0.8619825316530809,
- 0.3379962524218807,
- -0.9906398615400507,
- 0.576785657225761,
- 0.3227640108329237,
- -0.44735022799701873,
- 0.11028251232581932,
- -0.5945112749179908,
- -0.40284849555754754,
- -0.9531654171044694,
- -0.6731740531810844
- ],
- "type": "float32"
- },
- {
- "name": "input2",
- "shape": [2, 6],
- "data": [
- 0.4918989118791477,
- -0.15864110312378976,
- -0.34188115459083157,
- -0.9158143500894873,
- -0.7206121708970712,
- -0.7993468785008635,
- 0.6653799854931952,
- 0.03886038855553897,
- 0.5182055416768865,
- -0.8742016938344297,
- -0.479021891130635,
- 0.1211843166661235
- ],
- "type": "float32"
- }
- ],
- "axis": 0,
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- -0.3944413363933563,
- 0.861982524394989,
- 0.337996244430542,
- -0.990639865398407,
- 0.576785683631897,
- 0.32276400923728943,
- -0.44735023379325867,
- 0.11028251051902771,
- -0.5945112705230713,
- -0.402848482131958,
- -0.9531654119491577,
- -0.6731740236282349,
- 0.49189892411231995,
- -0.15864109992980957,
- -0.3418811559677124,
- -0.9158143401145935,
- -0.7206121683120728,
- -0.7993468642234802,
- 0.6653800010681152,
- 0.03886038810014725,
- 0.5182055234909058,
- -0.8742017149925232,
- -0.4790218770503998,
- 0.1211843192577362
- ],
- "type": "float32"
- }
- },
- {
- "name": "concat two float16 2D tensors of same shape along axis 0",
- "inputs": [
- {
- "name": "input1",
- "shape": [2, 6],
- "data": [
- -0.39444134019222243,
- 0.8619825316530809,
- 0.3379962524218807,
- -0.9906398615400507,
- 0.576785657225761,
- 0.3227640108329237,
- -0.44735022799701873,
- 0.11028251232581932,
- -0.5945112749179908,
- -0.40284849555754754,
- -0.9531654171044694,
- -0.6731740531810844
- ],
- "type": "float16"
- },
- {
- "name": "input2",
- "shape": [2, 6],
- "data": [
- 0.4918989118791477,
- -0.15864110312378976,
- -0.34188115459083157,
- -0.9158143500894873,
- -0.7206121708970712,
- -0.7993468785008635,
- 0.6653799854931952,
- 0.03886038855553897,
- 0.5182055416768865,
- -0.8742016938344297,
- -0.479021891130635,
- 0.1211843166661235
- ],
- "type": "float16"
- }
- ],
- "axis": 0,
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- -0.39453125,
- 0.86181640625,
- 0.337890625,
- -0.99072265625,
- 0.57666015625,
- 0.32275390625,
- -0.447265625,
- 0.11029052734375,
- -0.5947265625,
- -0.40283203125,
- -0.953125,
- -0.67333984375,
- 0.491943359375,
- -0.15869140625,
- -0.341796875,
- -0.916015625,
- -0.720703125,
- -0.79931640625,
- 0.66552734375,
- 0.038848876953125,
- 0.51806640625,
- -0.8740234375,
- -0.47900390625,
- 0.12115478515625
- ],
- "type": "float16"
- }
- },
- {
- "name": "concat two float32 2D tensors of same others dimensions except different 1st dimension along axis 0",
- "inputs": [
- {
- "name": "input1",
- "shape": [1, 6],
- "data": [
- -0.39444134019222243,
- 0.8619825316530809,
- 0.3379962524218807,
- -0.9906398615400507,
- 0.576785657225761,
- 0.3227640108329237
- ],
- "type": "float32"
- },
- {
- "name": "input2",
- "shape": [3, 6],
- "data": [
- -0.44735022799701873,
- 0.11028251232581932,
- -0.5945112749179908,
- -0.40284849555754754,
- -0.9531654171044694,
- -0.6731740531810844,
- 0.4918989118791477,
- -0.15864110312378976,
- -0.34188115459083157,
- -0.9158143500894873,
- -0.7206121708970712,
- -0.7993468785008635,
- 0.6653799854931952,
- 0.03886038855553897,
- 0.5182055416768865,
- -0.8742016938344297,
- -0.479021891130635,
- 0.1211843166661235
- ],
- "type": "float32"
- }
- ],
- "axis": 0,
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- -0.3944413363933563,
- 0.861982524394989,
- 0.337996244430542,
- -0.990639865398407,
- 0.576785683631897,
- 0.32276400923728943,
- -0.44735023379325867,
- 0.11028251051902771,
- -0.5945112705230713,
- -0.402848482131958,
- -0.9531654119491577,
- -0.6731740236282349,
- 0.49189892411231995,
- -0.15864109992980957,
- -0.3418811559677124,
- -0.9158143401145935,
- -0.7206121683120728,
- -0.7993468642234802,
- 0.6653800010681152,
- 0.03886038810014725,
- 0.5182055234909058,
- -0.8742017149925232,
- -0.4790218770503998,
- 0.1211843192577362
- ],
- "type": "float32"
- }
- },
- {
- "name": "concat two float16 2D tensors of same others dimensions except different 1st dimension along axis 0",
- "inputs": [
- {
- "name": "input1",
- "shape": [1, 6],
- "data": [
- -0.39444134019222243,
- 0.8619825316530809,
- 0.3379962524218807,
- -0.9906398615400507,
- 0.576785657225761,
- 0.3227640108329237
- ],
- "type": "float16"
- },
- {
- "name": "input2",
- "shape": [3, 6],
- "data": [
- -0.44735022799701873,
- 0.11028251232581932,
- -0.5945112749179908,
- -0.40284849555754754,
- -0.9531654171044694,
- -0.6731740531810844,
- 0.4918989118791477,
- -0.15864110312378976,
- -0.34188115459083157,
- -0.9158143500894873,
- -0.7206121708970712,
- -0.7993468785008635,
- 0.6653799854931952,
- 0.03886038855553897,
- 0.5182055416768865,
- -0.8742016938344297,
- -0.479021891130635,
- 0.1211843166661235
- ],
- "type": "float16"
- }
- ],
- "axis": 0,
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- -0.39453125,
- 0.86181640625,
- 0.337890625,
- -0.99072265625,
- 0.57666015625,
- 0.32275390625,
- -0.447265625,
- 0.11029052734375,
- -0.5947265625,
- -0.40283203125,
- -0.953125,
- -0.67333984375,
- 0.491943359375,
- -0.15869140625,
- -0.341796875,
- -0.916015625,
- -0.720703125,
- -0.79931640625,
- 0.66552734375,
- 0.038848876953125,
- 0.51806640625,
- -0.8740234375,
- -0.47900390625,
- 0.12115478515625
- ],
- "type": "float16"
- }
- },
- {
- "name": "concat four float32 2D tensors of same shape along axis 0",
- "inputs": [
- {
- "name": "input1",
- "shape": [3, 2],
- "data": [
- -0.39444134019222243,
- 0.8619825316530809,
- 0.3379962524218807,
- -0.9906398615400507,
- 0.576785657225761,
- 0.3227640108329237
- ],
- "type": "float32"
- },
- {
- "name": "input2",
- "shape": [3, 2],
- "data": [
- -0.44735022799701873,
- 0.11028251232581932,
- -0.5945112749179908,
- -0.40284849555754754,
- -0.9531654171044694,
- -0.6731740531810844
- ],
- "type": "float32"
- },
- {
- "name": "input3",
- "shape": [3, 2],
- "data": [
- 0.4918989118791477,
- -0.15864110312378976,
- -0.34188115459083157,
- -0.9158143500894873,
- -0.7206121708970712,
- -0.7993468785008635
- ],
- "type": "float32"
- },
- {
- "name": "input4",
- "shape": [3, 2],
- "data": [
- 0.6653799854931952,
- 0.03886038855553897,
- 0.5182055416768865,
- -0.8742016938344297,
- -0.479021891130635,
- 0.1211843166661235
- ],
- "type": "float32"
- }
- ],
- "axis": 0,
- "expected": {
- "name": "output",
- "shape": [12, 2],
- "data": [
- -0.3944413363933563,
- 0.861982524394989,
- 0.337996244430542,
- -0.990639865398407,
- 0.576785683631897,
- 0.32276400923728943,
- -0.44735023379325867,
- 0.11028251051902771,
- -0.5945112705230713,
- -0.402848482131958,
- -0.9531654119491577,
- -0.6731740236282349,
- 0.49189892411231995,
- -0.15864109992980957,
- -0.3418811559677124,
- -0.9158143401145935,
- -0.7206121683120728,
- -0.7993468642234802,
- 0.6653800010681152,
- 0.03886038810014725,
- 0.5182055234909058,
- -0.8742017149925232,
- -0.4790218770503998,
- 0.1211843192577362
- ],
- "type": "float32"
- }
- },
- {
- "name": "concat four float16 2D tensors of same shape along axis 0",
- "inputs": [
- {
- "name": "input1",
- "shape": [3, 2],
- "data": [
- -0.39444134019222243,
- 0.8619825316530809,
- 0.3379962524218807,
- -0.9906398615400507,
- 0.576785657225761,
- 0.3227640108329237
- ],
- "type": "float16"
- },
- {
- "name": "input2",
- "shape": [3, 2],
- "data": [
- -0.44735022799701873,
- 0.11028251232581932,
- -0.5945112749179908,
- -0.40284849555754754,
- -0.9531654171044694,
- -0.6731740531810844
- ],
- "type": "float16"
- },
- {
- "name": "input3",
- "shape": [3, 2],
- "data": [
- 0.4918989118791477,
- -0.15864110312378976,
- -0.34188115459083157,
- -0.9158143500894873,
- -0.7206121708970712,
- -0.7993468785008635
- ],
- "type": "float16"
- },
- {
- "name": "input4",
- "shape": [3, 2],
- "data": [
- 0.6653799854931952,
- 0.03886038855553897,
- 0.5182055416768865,
- -0.8742016938344297,
- -0.479021891130635,
- 0.1211843166661235
- ],
- "type": "float16"
- }
- ],
- "axis": 0,
- "expected": {
- "name": "output",
- "shape": [12, 2],
- "data": [
- -0.39453125,
- 0.86181640625,
- 0.337890625,
- -0.99072265625,
- 0.57666015625,
- 0.32275390625,
- -0.447265625,
- 0.11029052734375,
- -0.5947265625,
- -0.40283203125,
- -0.953125,
- -0.67333984375,
- 0.491943359375,
- -0.15869140625,
- -0.341796875,
- -0.916015625,
- -0.720703125,
- -0.79931640625,
- 0.66552734375,
- 0.038848876953125,
- 0.51806640625,
- -0.8740234375,
- -0.47900390625,
- 0.12115478515625
- ],
- "type": "float16"
- }
- },
- {
- "name": "concat two float32 2D tensors of same others dimensions except different 2nd dimension along axis 1",
- "inputs": [
- {
- "name": "input1",
- "shape": [2, 10],
- "data": [
- -0.39444134019222243,
- 0.8619825316530809,
- 0.3379962524218807,
- -0.9906398615400507,
- 0.576785657225761,
- 0.3227640108329237,
- -0.44735022799701873,
- 0.11028251232581932,
- -0.5945112749179908,
- -0.40284849555754754,
- -0.9531654171044694,
- -0.6731740531810844,
- 0.4918989118791477,
- -0.15864110312378976,
- -0.34188115459083157,
- -0.9158143500894873,
- -0.7206121708970712,
- -0.7993468785008635,
- 0.6653799854931952,
- 0.03886038855553897
- ],
- "type": "float32"
- },
- {
- "name": "input2",
- "shape": [2, 2],
- "data": [
- 0.5182055416768865,
- -0.8742016938344297,
- -0.479021891130635,
- 0.1211843166661235
- ],
- "type": "float32"
- }
- ],
- "axis": 1,
- "expected": {
- "name": "output",
- "shape": [2, 12],
- "data": [
- -0.3944413363933563,
- 0.861982524394989,
- 0.337996244430542,
- -0.990639865398407,
- 0.576785683631897,
- 0.32276400923728943,
- -0.44735023379325867,
- 0.11028251051902771,
- -0.5945112705230713,
- -0.402848482131958,
- 0.5182055234909058,
- -0.8742017149925232,
- -0.9531654119491577,
- -0.6731740236282349,
- 0.49189892411231995,
- -0.15864109992980957,
- -0.3418811559677124,
- -0.9158143401145935,
- -0.7206121683120728,
- -0.7993468642234802,
- 0.6653800010681152,
- 0.03886038810014725,
- -0.4790218770503998,
- 0.1211843192577362
- ],
- "type": "float32"
- }
- },
- {
- "name": "concat two float16 2D tensors of same others dimensions except different 2nd dimension along axis 1",
- "inputs": [
- {
- "name": "input1",
- "shape": [2, 10],
- "data": [
- -0.39444134019222243,
- 0.8619825316530809,
- 0.3379962524218807,
- -0.9906398615400507,
- 0.576785657225761,
- 0.3227640108329237,
- -0.44735022799701873,
- 0.11028251232581932,
- -0.5945112749179908,
- -0.40284849555754754,
- -0.9531654171044694,
- -0.6731740531810844,
- 0.4918989118791477,
- -0.15864110312378976,
- -0.34188115459083157,
- -0.9158143500894873,
- -0.7206121708970712,
- -0.7993468785008635,
- 0.6653799854931952,
- 0.03886038855553897
- ],
- "type": "float16"
- },
- {
- "name": "input2",
- "shape": [2, 2],
- "data": [
- 0.5182055416768865,
- -0.8742016938344297,
- -0.479021891130635,
- 0.1211843166661235
- ],
- "type": "float16"
- }
- ],
- "axis": 1,
- "expected": {
- "name": "output",
- "shape": [2, 12],
- "data": [
- -0.39453125,
- 0.86181640625,
- 0.337890625,
- -0.99072265625,
- 0.57666015625,
- 0.32275390625,
- -0.447265625,
- 0.11029052734375,
- -0.5947265625,
- -0.40283203125,
- 0.51806640625,
- -0.8740234375,
- -0.953125,
- -0.67333984375,
- 0.491943359375,
- -0.15869140625,
- -0.341796875,
- -0.916015625,
- -0.720703125,
- -0.79931640625,
- 0.66552734375,
- 0.038848876953125,
- -0.47900390625,
- 0.12115478515625
- ],
- "type": "float16"
- }
- },
- {
- "name": "concat three float32 2D tensors of same shape along axis 1",
- "inputs": [
- {
- "name": "input1",
- "shape": [4, 2],
- "data": [
- -0.39444134019222243,
- 0.8619825316530809,
- 0.3379962524218807,
- -0.9906398615400507,
- 0.576785657225761,
- 0.3227640108329237,
- -0.44735022799701873,
- 0.11028251232581932
- ],
- "type": "float32"
- },
- {
- "name": "input2",
- "shape": [4, 2],
- "data": [
- -0.5945112749179908,
- -0.40284849555754754,
- -0.9531654171044694,
- -0.6731740531810844,
- 0.4918989118791477,
- -0.15864110312378976,
- -0.34188115459083157,
- -0.9158143500894873
- ],
- "type": "float32"
- },
- {
- "name": "input3",
- "shape": [4, 2],
- "data": [
- -0.7206121708970712,
- -0.7993468785008635,
- 0.6653799854931952,
- 0.03886038855553897,
- 0.5182055416768865,
- -0.8742016938344297,
- -0.479021891130635,
- 0.1211843166661235
- ],
- "type": "float32"
- }
- ],
- "axis": 1,
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- -0.3944413363933563,
- 0.861982524394989,
- -0.5945112705230713,
- -0.402848482131958,
- -0.7206121683120728,
- -0.7993468642234802,
- 0.337996244430542,
- -0.990639865398407,
- -0.9531654119491577,
- -0.6731740236282349,
- 0.6653800010681152,
- 0.03886038810014725,
- 0.576785683631897,
- 0.32276400923728943,
- 0.49189892411231995,
- -0.15864109992980957,
- 0.5182055234909058,
- -0.8742017149925232,
- -0.44735023379325867,
- 0.11028251051902771,
- -0.3418811559677124,
- -0.9158143401145935,
- -0.4790218770503998,
- 0.1211843192577362
- ],
- "type": "float32"
- }
- },
- {
- "name": "concat three float16 2D tensors of same shape along axis 1",
- "inputs": [
- {
- "name": "input1",
- "shape": [4, 2],
- "data": [
- -0.39444134019222243,
- 0.8619825316530809,
- 0.3379962524218807,
- -0.9906398615400507,
- 0.576785657225761,
- 0.3227640108329237,
- -0.44735022799701873,
- 0.11028251232581932
- ],
- "type": "float16"
- },
- {
- "name": "input2",
- "shape": [4, 2],
- "data": [
- -0.5945112749179908,
- -0.40284849555754754,
- -0.9531654171044694,
- -0.6731740531810844,
- 0.4918989118791477,
- -0.15864110312378976,
- -0.34188115459083157,
- -0.9158143500894873
- ],
- "type": "float16"
- },
- {
- "name": "input3",
- "shape": [4, 2],
- "data": [
- -0.7206121708970712,
- -0.7993468785008635,
- 0.6653799854931952,
- 0.03886038855553897,
- 0.5182055416768865,
- -0.8742016938344297,
- -0.479021891130635,
- 0.1211843166661235
- ],
- "type": "float16"
- }
- ],
- "axis": 1,
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- -0.39453125,
- 0.86181640625,
- -0.5947265625,
- -0.40283203125,
- -0.720703125,
- -0.79931640625,
- 0.337890625,
- -0.99072265625,
- -0.953125,
- -0.67333984375,
- 0.66552734375,
- 0.038848876953125,
- 0.57666015625,
- 0.32275390625,
- 0.491943359375,
- -0.15869140625,
- 0.51806640625,
- -0.8740234375,
- -0.447265625,
- 0.11029052734375,
- -0.341796875,
- -0.916015625,
- -0.47900390625,
- 0.12115478515625
- ],
- "type": "float16"
- }
- },
- {
- "name": "concat four float32 2D tensors of same others dimensions except different 2nd dimension along axis 1",
- "inputs": [
- {
- "name": "input1",
- "shape": [3, 1],
- "data": [
- -0.39444134019222243,
- 0.8619825316530809,
- 0.3379962524218807
- ],
- "type": "float32"
- },
- {
- "name": "input2",
- "shape": [3, 2],
- "data": [
- -0.9906398615400507,
- 0.576785657225761,
- 0.3227640108329237,
- -0.44735022799701873,
- 0.11028251232581932,
- -0.5945112749179908
- ],
- "type": "float32"
- },
- {
- "name": "input3",
- "shape": [3, 2],
- "data": [
- -0.40284849555754754,
- -0.9531654171044694,
- -0.6731740531810844,
- 0.4918989118791477,
- -0.15864110312378976,
- -0.34188115459083157
- ],
- "type": "float32"
- },
- {
- "name": "input4",
- "shape": [3, 3],
- "data": [
- -0.9158143500894873,
- -0.7206121708970712,
- -0.7993468785008635,
- 0.6653799854931952,
- 0.03886038855553897,
- 0.5182055416768865,
- -0.8742016938344297,
- -0.479021891130635,
- 0.1211843166661235
- ],
- "type": "float32"
- }
- ],
- "axis": 1,
- "expected": {
- "name": "output",
- "shape": [3, 8],
- "data": [
- -0.3944413363933563,
- -0.990639865398407,
- 0.576785683631897,
- -0.402848482131958,
- -0.9531654119491577,
- -0.9158143401145935,
- -0.7206121683120728,
- -0.7993468642234802,
- 0.861982524394989,
- 0.32276400923728943,
- -0.44735023379325867,
- -0.6731740236282349,
- 0.49189892411231995,
- 0.6653800010681152,
- 0.03886038810014725,
- 0.5182055234909058,
- 0.337996244430542,
- 0.11028251051902771,
- -0.5945112705230713,
- -0.15864109992980957,
- -0.3418811559677124,
- -0.8742017149925232,
- -0.4790218770503998,
- 0.1211843192577362
- ],
- "type": "float32"
- }
- },
- {
- "name": "concat four float16 2D tensors of same others dimensions except different 2nd dimension along axis 1",
- "inputs": [
- {
- "name": "input1",
- "shape": [3, 1],
- "data": [
- -0.39444134019222243,
- 0.8619825316530809,
- 0.3379962524218807
- ],
- "type": "float16"
- },
- {
- "name": "input2",
- "shape": [3, 2],
- "data": [
- -0.9906398615400507,
- 0.576785657225761,
- 0.3227640108329237,
- -0.44735022799701873,
- 0.11028251232581932,
- -0.5945112749179908
- ],
- "type": "float16"
- },
- {
- "name": "input3",
- "shape": [3, 2],
- "data": [
- -0.40284849555754754,
- -0.9531654171044694,
- -0.6731740531810844,
- 0.4918989118791477,
- -0.15864110312378976,
- -0.34188115459083157
- ],
- "type": "float16"
- },
- {
- "name": "input4",
- "shape": [3, 3],
- "data": [
- -0.9158143500894873,
- -0.7206121708970712,
- -0.7993468785008635,
- 0.6653799854931952,
- 0.03886038855553897,
- 0.5182055416768865,
- -0.8742016938344297,
- -0.479021891130635,
- 0.1211843166661235
- ],
- "type": "float16"
- }
- ],
- "axis": 1,
- "expected": {
- "name": "output",
- "shape": [3, 8],
- "data": [
- -0.39453125,
- -0.99072265625,
- 0.57666015625,
- -0.40283203125,
- -0.953125,
- -0.916015625,
- -0.720703125,
- -0.79931640625,
- 0.86181640625,
- 0.32275390625,
- -0.447265625,
- -0.67333984375,
- 0.491943359375,
- 0.66552734375,
- 0.038848876953125,
- 0.51806640625,
- 0.337890625,
- 0.11029052734375,
- -0.5947265625,
- -0.15869140625,
- -0.341796875,
- -0.8740234375,
- -0.47900390625,
- 0.12115478515625
- ],
- "type": "float16"
- }
- },
- // concat 3D tensors
- {
- "name": "concat two float32 3D tensors of same others dimensions except different 1st dimension along axis 0",
- "inputs": [
- {
- "name": "input1",
- "shape": [2, 1, 3],
- "data": [
- -0.39444134019222243,
- 0.8619825316530809,
- 0.3379962524218807,
- -0.9906398615400507,
- 0.576785657225761,
- 0.3227640108329237
- ],
- "type": "float32"
- },
- {
- "name": "input2",
- "shape": [6, 1, 3],
- "data": [
- -0.44735022799701873,
- 0.11028251232581932,
- -0.5945112749179908,
- -0.40284849555754754,
- -0.9531654171044694,
- -0.6731740531810844,
- 0.4918989118791477,
- -0.15864110312378976,
- -0.34188115459083157,
- -0.9158143500894873,
- -0.7206121708970712,
- -0.7993468785008635,
- 0.6653799854931952,
- 0.03886038855553897,
- 0.5182055416768865,
- -0.8742016938344297,
- -0.479021891130635,
- 0.1211843166661235
- ],
- "type": "float32"
- }
- ],
- "axis": 0,
- "expected": {
- "name": "output",
- "shape": [8, 1, 3],
- "data": [
- -0.3944413363933563,
- 0.861982524394989,
- 0.337996244430542,
- -0.990639865398407,
- 0.576785683631897,
- 0.32276400923728943,
- -0.44735023379325867,
- 0.11028251051902771,
- -0.5945112705230713,
- -0.402848482131958,
- -0.9531654119491577,
- -0.6731740236282349,
- 0.49189892411231995,
- -0.15864109992980957,
- -0.3418811559677124,
- -0.9158143401145935,
- -0.7206121683120728,
- -0.7993468642234802,
- 0.6653800010681152,
- 0.03886038810014725,
- 0.5182055234909058,
- -0.8742017149925232,
- -0.4790218770503998,
- 0.1211843192577362
- ],
- "type": "float32"
- }
- },
- {
- "name": "concat two float16 3D tensors of same others dimensions except different 1st dimension along axis 0",
- "inputs": [
- {
- "name": "input1",
- "shape": [2, 1, 3],
- "data": [
- -0.39444134019222243,
- 0.8619825316530809,
- 0.3379962524218807,
- -0.9906398615400507,
- 0.576785657225761,
- 0.3227640108329237
- ],
- "type": "float16"
- },
- {
- "name": "input2",
- "shape": [6, 1, 3],
- "data": [
- -0.44735022799701873,
- 0.11028251232581932,
- -0.5945112749179908,
- -0.40284849555754754,
- -0.9531654171044694,
- -0.6731740531810844,
- 0.4918989118791477,
- -0.15864110312378976,
- -0.34188115459083157,
- -0.9158143500894873,
- -0.7206121708970712,
- -0.7993468785008635,
- 0.6653799854931952,
- 0.03886038855553897,
- 0.5182055416768865,
- -0.8742016938344297,
- -0.479021891130635,
- 0.1211843166661235
- ],
- "type": "float16"
- }
- ],
- "axis": 0,
- "expected": {
- "name": "output",
- "shape": [8, 1, 3],
- "data": [
- -0.39453125,
- 0.86181640625,
- 0.337890625,
- -0.99072265625,
- 0.57666015625,
- 0.32275390625,
- -0.447265625,
- 0.11029052734375,
- -0.5947265625,
- -0.40283203125,
- -0.953125,
- -0.67333984375,
- 0.491943359375,
- -0.15869140625,
- -0.341796875,
- -0.916015625,
- -0.720703125,
- -0.79931640625,
- 0.66552734375,
- 0.038848876953125,
- 0.51806640625,
- -0.8740234375,
- -0.47900390625,
- 0.12115478515625
- ],
- "type": "float16"
- }
- },
- {
- "name": "concat four float32 3D tensors of same others dimensions except different 2nd dimension along axis 1",
- "inputs": [
- {
- "name": "input1",
- "shape": [3, 1, 1],
- "data": [
- -0.39444134019222243,
- 0.8619825316530809,
- 0.3379962524218807
- ],
- "type": "float32"
- },
- {
- "name": "input2",
- "shape": [3, 2, 1],
- "data": [
- -0.9906398615400507,
- 0.576785657225761,
- 0.3227640108329237,
- -0.44735022799701873,
- 0.11028251232581932,
- -0.5945112749179908
- ],
- "type": "float32"
- },
- {
- "name": "input3",
- "shape": [3, 2, 1],
- "data": [
- -0.40284849555754754,
- -0.9531654171044694,
- -0.6731740531810844,
- 0.4918989118791477,
- -0.15864110312378976,
- -0.34188115459083157
- ],
- "type": "float32"
- },
- {
- "name": "input4",
- "shape": [3, 3, 1],
- "data": [
- -0.9158143500894873,
- -0.7206121708970712,
- -0.7993468785008635,
- 0.6653799854931952,
- 0.03886038855553897,
- 0.5182055416768865,
- -0.8742016938344297,
- -0.479021891130635,
- 0.1211843166661235
- ],
- "type": "float32"
- }
- ],
- "axis": 1,
- "expected": {
- "name": "output",
- "shape": [3, 8, 1],
- "data": [
- -0.3944413363933563,
- -0.990639865398407,
- 0.576785683631897,
- -0.402848482131958,
- -0.9531654119491577,
- -0.9158143401145935,
- -0.7206121683120728,
- -0.7993468642234802,
- 0.861982524394989,
- 0.32276400923728943,
- -0.44735023379325867,
- -0.6731740236282349,
- 0.49189892411231995,
- 0.6653800010681152,
- 0.03886038810014725,
- 0.5182055234909058,
- 0.337996244430542,
- 0.11028251051902771,
- -0.5945112705230713,
- -0.15864109992980957,
- -0.3418811559677124,
- -0.8742017149925232,
- -0.4790218770503998,
- 0.1211843192577362
- ],
- "type": "float32"
- }
- },
- {
- "name": "concat four float16 3D tensors of same others dimensions except different 2nd dimension along axis 1",
- "inputs": [
- {
- "name": "input1",
- "shape": [3, 1, 1],
- "data": [
- -0.39444134019222243,
- 0.8619825316530809,
- 0.3379962524218807
- ],
- "type": "float16"
- },
- {
- "name": "input2",
- "shape": [3, 2, 1],
- "data": [
- -0.9906398615400507,
- 0.576785657225761,
- 0.3227640108329237,
- -0.44735022799701873,
- 0.11028251232581932,
- -0.5945112749179908
- ],
- "type": "float16"
- },
- {
- "name": "input3",
- "shape": [3, 2, 1],
- "data": [
- -0.40284849555754754,
- -0.9531654171044694,
- -0.6731740531810844,
- 0.4918989118791477,
- -0.15864110312378976,
- -0.34188115459083157
- ],
- "type": "float16"
- },
- {
- "name": "input4",
- "shape": [3, 3, 1],
- "data": [
- -0.9158143500894873,
- -0.7206121708970712,
- -0.7993468785008635,
- 0.6653799854931952,
- 0.03886038855553897,
- 0.5182055416768865,
- -0.8742016938344297,
- -0.479021891130635,
- 0.1211843166661235
- ],
- "type": "float16"
- }
- ],
- "axis": 1,
- "expected": {
- "name": "output",
- "shape": [3, 8, 1],
- "data": [
- -0.39453125,
- -0.99072265625,
- 0.57666015625,
- -0.40283203125,
- -0.953125,
- -0.916015625,
- -0.720703125,
- -0.79931640625,
- 0.86181640625,
- 0.32275390625,
- -0.447265625,
- -0.67333984375,
- 0.491943359375,
- 0.66552734375,
- 0.038848876953125,
- 0.51806640625,
- 0.337890625,
- 0.11029052734375,
- -0.5947265625,
- -0.15869140625,
- -0.341796875,
- -0.8740234375,
- -0.47900390625,
- 0.12115478515625
- ],
- "type": "float16"
- }
- },
- {
- "name": "concat three float32 3D tensors of same shape along axis 2",
- "inputs": [
- {
- "name": "input1",
- "shape": [2, 2, 2],
- "data": [
- -0.39444134019222243,
- 0.8619825316530809,
- 0.3379962524218807,
- -0.9906398615400507,
- 0.576785657225761,
- 0.3227640108329237,
- -0.44735022799701873,
- 0.11028251232581932
- ],
- "type": "float32"
- },
- {
- "name": "input2",
- "shape": [2, 2, 2],
- "data": [
- -0.5945112749179908,
- -0.40284849555754754,
- -0.9531654171044694,
- -0.6731740531810844,
- 0.4918989118791477,
- -0.15864110312378976,
- -0.34188115459083157,
- -0.9158143500894873
- ],
- "type": "float32"
- },
- {
- "name": "input3",
- "shape": [2, 2, 2],
- "data": [
- -0.7206121708970712,
- -0.7993468785008635,
- 0.6653799854931952,
- 0.03886038855553897,
- 0.5182055416768865,
- -0.8742016938344297,
- -0.479021891130635,
- 0.1211843166661235
- ],
- "type": "float32"
- }
- ],
- "axis": 2,
- "expected": {
- "name": "output",
- "shape": [2, 2, 6],
- "data": [
- -0.3944413363933563,
- 0.861982524394989,
- -0.5945112705230713,
- -0.402848482131958,
- -0.7206121683120728,
- -0.7993468642234802,
- 0.337996244430542,
- -0.990639865398407,
- -0.9531654119491577,
- -0.6731740236282349,
- 0.6653800010681152,
- 0.03886038810014725,
- 0.576785683631897,
- 0.32276400923728943,
- 0.49189892411231995,
- -0.15864109992980957,
- 0.5182055234909058,
- -0.8742017149925232,
- -0.44735023379325867,
- 0.11028251051902771,
- -0.3418811559677124,
- -0.9158143401145935,
- -0.4790218770503998,
- 0.1211843192577362
- ],
- "type": "float32"
- }
- },
- {
- "name": "concat three float16 3D tensors of same shape along axis 2",
- "inputs": [
- {
- "name": "input1",
- "shape": [2, 2, 2],
- "data": [
- -0.39444134019222243,
- 0.8619825316530809,
- 0.3379962524218807,
- -0.9906398615400507,
- 0.576785657225761,
- 0.3227640108329237,
- -0.44735022799701873,
- 0.11028251232581932
- ],
- "type": "float16"
- },
- {
- "name": "input2",
- "shape": [2, 2, 2],
- "data": [
- -0.5945112749179908,
- -0.40284849555754754,
- -0.9531654171044694,
- -0.6731740531810844,
- 0.4918989118791477,
- -0.15864110312378976,
- -0.34188115459083157,
- -0.9158143500894873
- ],
- "type": "float16"
- },
- {
- "name": "input3",
- "shape": [2, 2, 2],
- "data": [
- -0.7206121708970712,
- -0.7993468785008635,
- 0.6653799854931952,
- 0.03886038855553897,
- 0.5182055416768865,
- -0.8742016938344297,
- -0.479021891130635,
- 0.1211843166661235
- ],
- "type": "float16"
- }
- ],
- "axis": 2,
- "expected": {
- "name": "output",
- "shape": [2, 2, 6],
- "data": [
- -0.39453125,
- 0.86181640625,
- -0.5947265625,
- -0.40283203125,
- -0.720703125,
- -0.79931640625,
- 0.337890625,
- -0.99072265625,
- -0.953125,
- -0.67333984375,
- 0.66552734375,
- 0.038848876953125,
- 0.57666015625,
- 0.32275390625,
- 0.491943359375,
- -0.15869140625,
- 0.51806640625,
- -0.8740234375,
- -0.447265625,
- 0.11029052734375,
- -0.341796875,
- -0.916015625,
- -0.47900390625,
- 0.12115478515625
- ],
- "type": "float16"
- }
- },
- // concat 4D tensors
- {
- "name": "concat two float32 4D tensors of same others dimensions except different 1st dimension along axis 0",
- "inputs": [
- {
- "name": "input1",
- "shape": [1, 3, 1, 2],
- "data": [
- -0.39444134019222243,
- 0.8619825316530809,
- 0.3379962524218807,
- -0.9906398615400507,
- 0.576785657225761,
- 0.3227640108329237
- ],
- "type": "float32"
- },
- {
- "name": "input2",
- "shape": [3, 3, 1, 2],
- "data": [
- -0.44735022799701873,
- 0.11028251232581932,
- -0.5945112749179908,
- -0.40284849555754754,
- -0.9531654171044694,
- -0.6731740531810844,
- 0.4918989118791477,
- -0.15864110312378976,
- -0.34188115459083157,
- -0.9158143500894873,
- -0.7206121708970712,
- -0.7993468785008635,
- 0.6653799854931952,
- 0.03886038855553897,
- 0.5182055416768865,
- -0.8742016938344297,
- -0.479021891130635,
- 0.1211843166661235
- ],
- "type": "float32"
- }
- ],
- "axis": 0,
- "expected": {
- "name": "output",
- "shape": [4, 3, 1, 2],
- "data": [
- -0.3944413363933563,
- 0.861982524394989,
- 0.337996244430542,
- -0.990639865398407,
- 0.576785683631897,
- 0.32276400923728943,
- -0.44735023379325867,
- 0.11028251051902771,
- -0.5945112705230713,
- -0.402848482131958,
- -0.9531654119491577,
- -0.6731740236282349,
- 0.49189892411231995,
- -0.15864109992980957,
- -0.3418811559677124,
- -0.9158143401145935,
- -0.7206121683120728,
- -0.7993468642234802,
- 0.6653800010681152,
- 0.03886038810014725,
- 0.5182055234909058,
- -0.8742017149925232,
- -0.4790218770503998,
- 0.1211843192577362
- ],
- "type": "float32"
- }
- },
- {
- "name": "concat two float16 4D tensors of same others dimensions except different 1st dimension along axis 0",
- "inputs": [
- {
- "name": "input1",
- "shape": [1, 3, 1, 2],
- "data": [
- -0.39444134019222243,
- 0.8619825316530809,
- 0.3379962524218807,
- -0.9906398615400507,
- 0.576785657225761,
- 0.3227640108329237
- ],
- "type": "float16"
- },
- {
- "name": "input2",
- "shape": [3, 3, 1, 2],
- "data": [
- -0.44735022799701873,
- 0.11028251232581932,
- -0.5945112749179908,
- -0.40284849555754754,
- -0.9531654171044694,
- -0.6731740531810844,
- 0.4918989118791477,
- -0.15864110312378976,
- -0.34188115459083157,
- -0.9158143500894873,
- -0.7206121708970712,
- -0.7993468785008635,
- 0.6653799854931952,
- 0.03886038855553897,
- 0.5182055416768865,
- -0.8742016938344297,
- -0.479021891130635,
- 0.1211843166661235
- ],
- "type": "float16"
- }
- ],
- "axis": 0,
- "expected": {
- "name": "output",
- "shape": [4, 3, 1, 2],
- "data": [
- -0.39453125,
- 0.86181640625,
- 0.337890625,
- -0.99072265625,
- 0.57666015625,
- 0.32275390625,
- -0.447265625,
- 0.11029052734375,
- -0.5947265625,
- -0.40283203125,
- -0.953125,
- -0.67333984375,
- 0.491943359375,
- -0.15869140625,
- -0.341796875,
- -0.916015625,
- -0.720703125,
- -0.79931640625,
- 0.66552734375,
- 0.038848876953125,
- 0.51806640625,
- -0.8740234375,
- -0.47900390625,
- 0.12115478515625
- ],
- "type": "float16"
- }
- },
- {
- "name": "concat three float32 4D tensors of same shape along axis 1",
- "inputs": [
- {
- "name": "input1",
- "shape": [2, 2, 1, 2],
- "data": [
- -0.39444134019222243,
- 0.8619825316530809,
- 0.3379962524218807,
- -0.9906398615400507,
- 0.576785657225761,
- 0.3227640108329237,
- -0.44735022799701873,
- 0.11028251232581932
- ],
- "type": "float32"
- },
- {
- "name": "input2",
- "shape": [2, 2, 1, 2],
- "data": [
- -0.5945112749179908,
- -0.40284849555754754,
- -0.9531654171044694,
- -0.6731740531810844,
- 0.4918989118791477,
- -0.15864110312378976,
- -0.34188115459083157,
- -0.9158143500894873
- ],
- "type": "float32"
- },
- {
- "name": "input3",
- "shape": [2, 2, 1, 2],
- "data": [
- -0.7206121708970712,
- -0.7993468785008635,
- 0.6653799854931952,
- 0.03886038855553897,
- 0.5182055416768865,
- -0.8742016938344297,
- -0.479021891130635,
- 0.1211843166661235
- ],
- "type": "float32"
- }
- ],
- "axis": 1,
- "expected": {
- "name": "output",
- "shape": [2, 6, 1, 2],
- "data": [
- -0.3944413363933563,
- 0.861982524394989,
- 0.337996244430542,
- -0.990639865398407,
- -0.5945112705230713,
- -0.402848482131958,
- -0.9531654119491577,
- -0.6731740236282349,
- -0.7206121683120728,
- -0.7993468642234802,
- 0.6653800010681152,
- 0.03886038810014725,
- 0.576785683631897,
- 0.32276400923728943,
- -0.44735023379325867,
- 0.11028251051902771,
- 0.49189892411231995,
- -0.15864109992980957,
- -0.3418811559677124,
- -0.9158143401145935,
- 0.5182055234909058,
- -0.8742017149925232,
- -0.4790218770503998,
- 0.1211843192577362
- ],
- "type": "float32"
- }
- },
- {
- "name": "concat three float16 4D tensors of same shape along axis 1",
- "inputs": [
- {
- "name": "input1",
- "shape": [2, 2, 1, 2],
- "data": [
- -0.39444134019222243,
- 0.8619825316530809,
- 0.3379962524218807,
- -0.9906398615400507,
- 0.576785657225761,
- 0.3227640108329237,
- -0.44735022799701873,
- 0.11028251232581932
- ],
- "type": "float16"
- },
- {
- "name": "input2",
- "shape": [2, 2, 1, 2],
- "data": [
- -0.5945112749179908,
- -0.40284849555754754,
- -0.9531654171044694,
- -0.6731740531810844,
- 0.4918989118791477,
- -0.15864110312378976,
- -0.34188115459083157,
- -0.9158143500894873
- ],
- "type": "float16"
- },
- {
- "name": "input3",
- "shape": [2, 2, 1, 2],
- "data": [
- -0.7206121708970712,
- -0.7993468785008635,
- 0.6653799854931952,
- 0.03886038855553897,
- 0.5182055416768865,
- -0.8742016938344297,
- -0.479021891130635,
- 0.1211843166661235
- ],
- "type": "float16"
- }
- ],
- "axis": 1,
- "expected": {
- "name": "output",
- "shape": [2, 6, 1, 2],
- "data": [
- -0.39453125,
- 0.86181640625,
- 0.337890625,
- -0.99072265625,
- -0.5947265625,
- -0.40283203125,
- -0.953125,
- -0.67333984375,
- -0.720703125,
- -0.79931640625,
- 0.66552734375,
- 0.038848876953125,
- 0.57666015625,
- 0.32275390625,
- -0.447265625,
- 0.11029052734375,
- 0.491943359375,
- -0.15869140625,
- -0.341796875,
- -0.916015625,
- 0.51806640625,
- -0.8740234375,
- -0.47900390625,
- 0.12115478515625
- ],
- "type": "float16"
- }
- },
- {
- "name": "concat three float32 4D tensors of same others dimensions except different 3rd dimension along axis 2",
- "inputs": [
- {
- "name": "input1",
- "shape": [1, 2, 2, 1],
- "data": [
- -0.39444134019222243,
- 0.8619825316530809,
- 0.3379962524218807,
- -0.9906398615400507
- ],
- "type": "float32"
- },
- {
- "name": "input2",
- "shape": [1, 2, 8, 1],
- "data": [
- 0.576785657225761,
- 0.3227640108329237,
- -0.44735022799701873,
- 0.11028251232581932,
- -0.5945112749179908,
- -0.40284849555754754,
- -0.9531654171044694,
- -0.6731740531810844,
- 0.4918989118791477,
- -0.15864110312378976,
- -0.34188115459083157,
- -0.9158143500894873,
- -0.7206121708970712,
- -0.7993468785008635,
- 0.6653799854931952,
- 0.03886038855553897
- ],
- "type": "float32"
- },
- {
- "name": "input3",
- "shape": [1, 2, 2, 1],
- "data": [
- 0.5182055416768865,
- -0.8742016938344297,
- -0.479021891130635,
- 0.1211843166661235
- ],
- "type": "float32"
- }
- ],
- "axis": 2,
- "expected": {
- "name": "output",
- "shape": [1, 2, 12, 1],
- "data": [
- -0.3944413363933563,
- 0.861982524394989,
- 0.576785683631897,
- 0.32276400923728943,
- -0.44735023379325867,
- 0.11028251051902771,
- -0.5945112705230713,
- -0.402848482131958,
- -0.9531654119491577,
- -0.6731740236282349,
- 0.5182055234909058,
- -0.8742017149925232,
- 0.337996244430542,
- -0.990639865398407,
- 0.49189892411231995,
- -0.15864109992980957,
- -0.3418811559677124,
- -0.9158143401145935,
- -0.7206121683120728,
- -0.7993468642234802,
- 0.6653800010681152,
- 0.03886038810014725,
- -0.4790218770503998,
- 0.1211843192577362
- ],
- "type": "float32"
- }
- },
- {
- "name": "concat three float16 4D tensors of same others dimensions except different 3rd dimension along axis 2",
- "inputs": [
- {
- "name": "input1",
- "shape": [1, 2, 2, 1],
- "data": [
- -0.39444134019222243,
- 0.8619825316530809,
- 0.3379962524218807,
- -0.9906398615400507
- ],
- "type": "float16"
- },
- {
- "name": "input2",
- "shape": [1, 2, 8, 1],
- "data": [
- 0.576785657225761,
- 0.3227640108329237,
- -0.44735022799701873,
- 0.11028251232581932,
- -0.5945112749179908,
- -0.40284849555754754,
- -0.9531654171044694,
- -0.6731740531810844,
- 0.4918989118791477,
- -0.15864110312378976,
- -0.34188115459083157,
- -0.9158143500894873,
- -0.7206121708970712,
- -0.7993468785008635,
- 0.6653799854931952,
- 0.03886038855553897
- ],
- "type": "float16"
- },
- {
- "name": "input3",
- "shape": [1, 2, 2, 1],
- "data": [
- 0.5182055416768865,
- -0.8742016938344297,
- -0.479021891130635,
- 0.1211843166661235
- ],
- "type": "float16"
- }
- ],
- "axis": 2,
- "expected": {
- "name": "output",
- "shape": [1, 2, 12, 1],
- "data": [
- -0.39453125,
- 0.86181640625,
- 0.57666015625,
- 0.32275390625,
- -0.447265625,
- 0.11029052734375,
- -0.5947265625,
- -0.40283203125,
- -0.953125,
- -0.67333984375,
- 0.51806640625,
- -0.8740234375,
- 0.337890625,
- -0.99072265625,
- 0.491943359375,
- -0.15869140625,
- -0.341796875,
- -0.916015625,
- -0.720703125,
- -0.79931640625,
- 0.66552734375,
- 0.038848876953125,
- -0.47900390625,
- 0.12115478515625
- ],
- "type": "float16"
- }
- },
- {
- "name": "concat four float32 4D tensors of same others dimensions except different 4th dimension along axis 3",
- "inputs": [
- {
- "name": "input1",
- "shape": [1, 3, 1, 1],
- "data": [
- -0.39444134019222243,
- 0.8619825316530809,
- 0.3379962524218807
- ],
- "type": "float32"
- },
- {
- "name": "input2",
- "shape": [1, 3, 1, 1],
- "data": [
- -0.9906398615400507,
- 0.576785657225761,
- 0.3227640108329237
- ],
- "type": "float32"
- },
- {
- "name": "input3",
- "shape": [1, 3, 1, 2],
- "data": [
- -0.44735022799701873,
- 0.11028251232581932,
- -0.5945112749179908,
- -0.40284849555754754,
- -0.9531654171044694,
- -0.6731740531810844
- ],
- "type": "float32"
- },
- {
- "name": "input4",
- "shape": [1, 3, 1, 4],
- "data": [
- 0.4918989118791477,
- -0.15864110312378976,
- -0.34188115459083157,
- -0.9158143500894873,
- -0.7206121708970712,
- -0.7993468785008635,
- 0.6653799854931952,
- 0.03886038855553897,
- 0.5182055416768865,
- -0.8742016938344297,
- -0.479021891130635,
- 0.1211843166661235
- ],
- "type": "float32"
- }
- ],
- "axis": 3,
- "expected": {
- "name": "output",
- "shape": [1, 3, 1, 8],
- "data": [
- -0.3944413363933563,
- -0.990639865398407,
- -0.44735023379325867,
- 0.11028251051902771,
- 0.49189892411231995,
- -0.15864109992980957,
- -0.3418811559677124,
- -0.9158143401145935,
- 0.861982524394989,
- 0.576785683631897,
- -0.5945112705230713,
- -0.402848482131958,
- -0.7206121683120728,
- -0.7993468642234802,
- 0.6653800010681152,
- 0.03886038810014725,
- 0.337996244430542,
- 0.32276400923728943,
- -0.9531654119491577,
- -0.6731740236282349,
- 0.5182055234909058,
- -0.8742017149925232,
- -0.4790218770503998,
- 0.1211843192577362
- ],
- "type": "float32"
- }
- },
- {
- "name": "concat four float16 4D tensors of same others dimensions except different 4th dimension along axis 3",
- "inputs": [
- {
- "name": "input1",
- "shape": [1, 3, 1, 1],
- "data": [
- -0.39444134019222243,
- 0.8619825316530809,
- 0.3379962524218807
- ],
- "type": "float16"
- },
- {
- "name": "input2",
- "shape": [1, 3, 1, 1],
- "data": [
- -0.9906398615400507,
- 0.576785657225761,
- 0.3227640108329237
- ],
- "type": "float16"
- },
- {
- "name": "input3",
- "shape": [1, 3, 1, 2],
- "data": [
- -0.44735022799701873,
- 0.11028251232581932,
- -0.5945112749179908,
- -0.40284849555754754,
- -0.9531654171044694,
- -0.6731740531810844
- ],
- "type": "float16"
- },
- {
- "name": "input4",
- "shape": [1, 3, 1, 4],
- "data": [
- 0.4918989118791477,
- -0.15864110312378976,
- -0.34188115459083157,
- -0.9158143500894873,
- -0.7206121708970712,
- -0.7993468785008635,
- 0.6653799854931952,
- 0.03886038855553897,
- 0.5182055416768865,
- -0.8742016938344297,
- -0.479021891130635,
- 0.1211843166661235
- ],
- "type": "float16"
- }
- ],
- "axis": 3,
- "expected": {
- "name": "output",
- "shape": [1, 3, 1, 8],
- "data": [
- -0.39453125,
- -0.99072265625,
- -0.447265625,
- 0.11029052734375,
- 0.491943359375,
- -0.15869140625,
- -0.341796875,
- -0.916015625,
- 0.86181640625,
- 0.57666015625,
- -0.5947265625,
- -0.40283203125,
- -0.720703125,
- -0.79931640625,
- 0.66552734375,
- 0.038848876953125,
- 0.337890625,
- 0.32275390625,
- -0.953125,
- -0.67333984375,
- 0.51806640625,
- -0.8740234375,
- -0.47900390625,
- 0.12115478515625
- ],
- "type": "float16"
- }
- },
- // concat 5D tensors
- {
- "name": "concat four float32 5D tensors of same shape along axis 0",
- "inputs": [
- {
- "name": "input1",
- "shape": [1, 2, 1, 1, 3],
- "data": [
- -0.39444134019222243,
- 0.8619825316530809,
- 0.3379962524218807,
- -0.9906398615400507,
- 0.576785657225761,
- 0.3227640108329237
- ],
- "type": "float32"
- },
- {
- "name": "input2",
- "shape": [1, 2, 1, 1, 3],
- "data": [
- -0.44735022799701873,
- 0.11028251232581932,
- -0.5945112749179908,
- -0.40284849555754754,
- -0.9531654171044694,
- -0.6731740531810844
- ],
- "type": "float32"
- },
- {
- "name": "input3",
- "shape": [1, 2, 1, 1, 3],
- "data": [
- 0.4918989118791477,
- -0.15864110312378976,
- -0.34188115459083157,
- -0.9158143500894873,
- -0.7206121708970712,
- -0.7993468785008635
- ],
- "type": "float32"
- },
- {
- "name": "input4",
- "shape":[1, 2, 1, 1, 3],
- "data": [
- 0.6653799854931952,
- 0.03886038855553897,
- 0.5182055416768865,
- -0.8742016938344297,
- -0.479021891130635,
- 0.1211843166661235
- ],
- "type": "float32"
- }
- ],
- "axis": 0,
- "expected": {
- "name": "output",
- "shape": [4, 2, 1, 1, 3],
- "data": [
- -0.3944413363933563,
- 0.861982524394989,
- 0.337996244430542,
- -0.990639865398407,
- 0.576785683631897,
- 0.32276400923728943,
- -0.44735023379325867,
- 0.11028251051902771,
- -0.5945112705230713,
- -0.402848482131958,
- -0.9531654119491577,
- -0.6731740236282349,
- 0.49189892411231995,
- -0.15864109992980957,
- -0.3418811559677124,
- -0.9158143401145935,
- -0.7206121683120728,
- -0.7993468642234802,
- 0.6653800010681152,
- 0.03886038810014725,
- 0.5182055234909058,
- -0.8742017149925232,
- -0.4790218770503998,
- 0.1211843192577362
- ],
- "type": "float32"
- }
- },
- {
- "name": "concat four float16 5D tensors of same shape along axis 0",
- "inputs": [
- {
- "name": "input1",
- "shape": [1, 2, 1, 1, 3],
- "data": [
- -0.39444134019222243,
- 0.8619825316530809,
- 0.3379962524218807,
- -0.9906398615400507,
- 0.576785657225761,
- 0.3227640108329237
- ],
- "type": "float16"
- },
- {
- "name": "input2",
- "shape": [1, 2, 1, 1, 3],
- "data": [
- -0.44735022799701873,
- 0.11028251232581932,
- -0.5945112749179908,
- -0.40284849555754754,
- -0.9531654171044694,
- -0.6731740531810844
- ],
- "type": "float16"
- },
- {
- "name": "input3",
- "shape": [1, 2, 1, 1, 3],
- "data": [
- 0.4918989118791477,
- -0.15864110312378976,
- -0.34188115459083157,
- -0.9158143500894873,
- -0.7206121708970712,
- -0.7993468785008635
- ],
- "type": "float16"
- },
- {
- "name": "input4",
- "shape":[1, 2, 1, 1, 3],
- "data": [
- 0.6653799854931952,
- 0.03886038855553897,
- 0.5182055416768865,
- -0.8742016938344297,
- -0.479021891130635,
- 0.1211843166661235
- ],
- "type": "float16"
- }
- ],
- "axis": 0,
- "expected": {
- "name": "output",
- "shape": [4, 2, 1, 1, 3],
- "data": [
- -0.39453125,
- 0.86181640625,
- 0.337890625,
- -0.99072265625,
- 0.57666015625,
- 0.32275390625,
- -0.447265625,
- 0.11029052734375,
- -0.5947265625,
- -0.40283203125,
- -0.953125,
- -0.67333984375,
- 0.491943359375,
- -0.15869140625,
- -0.341796875,
- -0.916015625,
- -0.720703125,
- -0.79931640625,
- 0.66552734375,
- 0.038848876953125,
- 0.51806640625,
- -0.8740234375,
- -0.47900390625,
- 0.12115478515625
- ],
- "type": "float16"
- }
- },
- {
- "name": "concat two float32 5D tensors of same others dimensions except different 2nd dimension along axis 1",
- "inputs": [
- {
- "name": "input1",
- "shape": [1, 2, 3, 1, 1],
- "data": [
- -0.39444134019222243,
- 0.8619825316530809,
- 0.3379962524218807,
- -0.9906398615400507,
- 0.576785657225761,
- 0.3227640108329237
- ],
- "type": "float32"
- },
- {
- "name": "input2",
- "shape": [1, 6, 3, 1, 1],
- "data": [
- -0.44735022799701873,
- 0.11028251232581932,
- -0.5945112749179908,
- -0.40284849555754754,
- -0.9531654171044694,
- -0.6731740531810844,
- 0.4918989118791477,
- -0.15864110312378976,
- -0.34188115459083157,
- -0.9158143500894873,
- -0.7206121708970712,
- -0.7993468785008635,
- 0.6653799854931952,
- 0.03886038855553897,
- 0.5182055416768865,
- -0.8742016938344297,
- -0.479021891130635,
- 0.1211843166661235
- ],
- "type": "float32"
- }
- ],
- "axis": 1,
- "expected": {
- "name": "output",
- "shape": [1, 8, 3, 1, 1],
- "data": [
- -0.3944413363933563,
- 0.861982524394989,
- 0.337996244430542,
- -0.990639865398407,
- 0.576785683631897,
- 0.32276400923728943,
- -0.44735023379325867,
- 0.11028251051902771,
- -0.5945112705230713,
- -0.402848482131958,
- -0.9531654119491577,
- -0.6731740236282349,
- 0.49189892411231995,
- -0.15864109992980957,
- -0.3418811559677124,
- -0.9158143401145935,
- -0.7206121683120728,
- -0.7993468642234802,
- 0.6653800010681152,
- 0.03886038810014725,
- 0.5182055234909058,
- -0.8742017149925232,
- -0.4790218770503998,
- 0.1211843192577362
- ],
- "type": "float32"
- }
- },
- {
- "name": "concat two float16 5D tensors of same others dimensions except different 2nd dimension along axis 1",
- "inputs": [
- {
- "name": "input1",
- "shape": [1, 2, 3, 1, 1],
- "data": [
- -0.39444134019222243,
- 0.8619825316530809,
- 0.3379962524218807,
- -0.9906398615400507,
- 0.576785657225761,
- 0.3227640108329237
- ],
- "type": "float16"
- },
- {
- "name": "input2",
- "shape": [1, 6, 3, 1, 1],
- "data": [
- -0.44735022799701873,
- 0.11028251232581932,
- -0.5945112749179908,
- -0.40284849555754754,
- -0.9531654171044694,
- -0.6731740531810844,
- 0.4918989118791477,
- -0.15864110312378976,
- -0.34188115459083157,
- -0.9158143500894873,
- -0.7206121708970712,
- -0.7993468785008635,
- 0.6653799854931952,
- 0.03886038855553897,
- 0.5182055416768865,
- -0.8742016938344297,
- -0.479021891130635,
- 0.1211843166661235
- ],
- "type": "float16"
- }
- ],
- "axis": 1,
- "expected": {
- "name": "output",
- "shape": [1, 8, 3, 1, 1],
- "data": [
- -0.39453125,
- 0.86181640625,
- 0.337890625,
- -0.99072265625,
- 0.57666015625,
- 0.32275390625,
- -0.447265625,
- 0.11029052734375,
- -0.5947265625,
- -0.40283203125,
- -0.953125,
- -0.67333984375,
- 0.491943359375,
- -0.15869140625,
- -0.341796875,
- -0.916015625,
- -0.720703125,
- -0.79931640625,
- 0.66552734375,
- 0.038848876953125,
- 0.51806640625,
- -0.8740234375,
- -0.47900390625,
- 0.12115478515625
- ],
- "type": "float16"
- }
- },
- {
- "name": "concat three float32 5D tensors of same others dimensions except different 3rd dimension along axis 2",
- "inputs": [
- {
- "name": "input1",
- "shape": [1, 2, 1, 1, 2],
- "data": [
- -0.39444134019222243,
- 0.8619825316530809,
- 0.3379962524218807,
- -0.9906398615400507
- ],
- "type": "float32"
- },
- {
- "name": "input2",
- "shape": [1, 2, 2, 1, 2],
- "data": [
- 0.576785657225761,
- 0.3227640108329237,
- -0.44735022799701873,
- 0.11028251232581932,
- -0.5945112749179908,
- -0.40284849555754754,
- -0.9531654171044694,
- -0.6731740531810844
- ],
- "type": "float32"
- },
- {
- "name": "input3",
- "shape": [1, 2, 3, 1, 2],
- "data": [
- 0.4918989118791477,
- -0.15864110312378976,
- -0.34188115459083157,
- -0.9158143500894873,
- -0.7206121708970712,
- -0.7993468785008635,
- 0.6653799854931952,
- 0.03886038855553897,
- 0.5182055416768865,
- -0.8742016938344297,
- -0.479021891130635,
- 0.1211843166661235
- ],
- "type": "float32"
- }
- ],
- "axis": 2,
- "expected": {
- "name": "output",
- "shape": [1, 2, 6, 1, 2],
- "data": [
- -0.3944413363933563,
- 0.861982524394989,
- 0.576785683631897,
- 0.32276400923728943,
- -0.44735023379325867,
- 0.11028251051902771,
- 0.49189892411231995,
- -0.15864109992980957,
- -0.3418811559677124,
- -0.9158143401145935,
- -0.7206121683120728,
- -0.7993468642234802,
- 0.337996244430542,
- -0.990639865398407,
- -0.5945112705230713,
- -0.402848482131958,
- -0.9531654119491577,
- -0.6731740236282349,
- 0.6653800010681152,
- 0.03886038810014725,
- 0.5182055234909058,
- -0.8742017149925232,
- -0.4790218770503998,
- 0.1211843192577362
- ],
- "type": "float32"
- }
- },
- {
- "name": "concat three float16 5D tensors of same others dimensions except different 3rd dimension along axis 2",
- "inputs": [
- {
- "name": "input1",
- "shape": [1, 2, 1, 1, 2],
- "data": [
- -0.39444134019222243,
- 0.8619825316530809,
- 0.3379962524218807,
- -0.9906398615400507
- ],
- "type": "float16"
- },
- {
- "name": "input2",
- "shape": [1, 2, 2, 1, 2],
- "data": [
- 0.576785657225761,
- 0.3227640108329237,
- -0.44735022799701873,
- 0.11028251232581932,
- -0.5945112749179908,
- -0.40284849555754754,
- -0.9531654171044694,
- -0.6731740531810844
- ],
- "type": "float16"
- },
- {
- "name": "input3",
- "shape": [1, 2, 3, 1, 2],
- "data": [
- 0.4918989118791477,
- -0.15864110312378976,
- -0.34188115459083157,
- -0.9158143500894873,
- -0.7206121708970712,
- -0.7993468785008635,
- 0.6653799854931952,
- 0.03886038855553897,
- 0.5182055416768865,
- -0.8742016938344297,
- -0.479021891130635,
- 0.1211843166661235
- ],
- "type": "float16"
- }
- ],
- "axis": 2,
- "expected": {
- "name": "output",
- "shape": [1, 2, 6, 1, 2],
- "data": [
- -0.39453125,
- 0.86181640625,
- 0.57666015625,
- 0.32275390625,
- -0.447265625,
- 0.11029052734375,
- 0.491943359375,
- -0.15869140625,
- -0.341796875,
- -0.916015625,
- -0.720703125,
- -0.79931640625,
- 0.337890625,
- -0.99072265625,
- -0.5947265625,
- -0.40283203125,
- -0.953125,
- -0.67333984375,
- 0.66552734375,
- 0.038848876953125,
- 0.51806640625,
- -0.8740234375,
- -0.47900390625,
- 0.12115478515625
- ],
- "type": "float16"
- }
- },
- {
- "name": "concat two float32 5D tensors of same others dimensions except different 4th dimension along axis 3",
- "inputs": [
- {
- "name": "input1",
- "shape": [3, 1, 1, 1, 2],
- "data": [
- -0.39444134019222243,
- 0.8619825316530809,
- 0.3379962524218807,
- -0.9906398615400507,
- 0.576785657225761,
- 0.3227640108329237
- ],
- "type": "float32"
- },
- {
- "name": "input2",
- "shape": [3, 1, 1, 3, 2],
- "data": [
- -0.44735022799701873,
- 0.11028251232581932,
- -0.5945112749179908,
- -0.40284849555754754,
- -0.9531654171044694,
- -0.6731740531810844,
- 0.4918989118791477,
- -0.15864110312378976,
- -0.34188115459083157,
- -0.9158143500894873,
- -0.7206121708970712,
- -0.7993468785008635,
- 0.6653799854931952,
- 0.03886038855553897,
- 0.5182055416768865,
- -0.8742016938344297,
- -0.479021891130635,
- 0.1211843166661235
- ],
- "type": "float32"
- }
- ],
- "axis": 3,
- "expected": {
- "name": "output",
- "shape": [3, 1, 1, 4, 2],
- "data": [
- -0.3944413363933563,
- 0.861982524394989,
- -0.44735023379325867,
- 0.11028251051902771,
- -0.5945112705230713,
- -0.402848482131958,
- -0.9531654119491577,
- -0.6731740236282349,
- 0.337996244430542,
- -0.990639865398407,
- 0.49189892411231995,
- -0.15864109992980957,
- -0.3418811559677124,
- -0.9158143401145935,
- -0.7206121683120728,
- -0.7993468642234802,
- 0.576785683631897,
- 0.32276400923728943,
- 0.6653800010681152,
- 0.03886038810014725,
- 0.5182055234909058,
- -0.8742017149925232,
- -0.4790218770503998,
- 0.1211843192577362
- ],
- "type": "float32"
- }
- },
- {
- "name": "concat two float16 5D tensors of same others dimensions except different 4th dimension along axis 3",
- "inputs": [
- {
- "name": "input1",
- "shape": [3, 1, 1, 1, 2],
- "data": [
- -0.39444134019222243,
- 0.8619825316530809,
- 0.3379962524218807,
- -0.9906398615400507,
- 0.576785657225761,
- 0.3227640108329237
- ],
- "type": "float16"
- },
- {
- "name": "input2",
- "shape": [3, 1, 1, 3, 2],
- "data": [
- -0.44735022799701873,
- 0.11028251232581932,
- -0.5945112749179908,
- -0.40284849555754754,
- -0.9531654171044694,
- -0.6731740531810844,
- 0.4918989118791477,
- -0.15864110312378976,
- -0.34188115459083157,
- -0.9158143500894873,
- -0.7206121708970712,
- -0.7993468785008635,
- 0.6653799854931952,
- 0.03886038855553897,
- 0.5182055416768865,
- -0.8742016938344297,
- -0.479021891130635,
- 0.1211843166661235
- ],
- "type": "float16"
- }
- ],
- "axis": 3,
- "expected": {
- "name": "output",
- "shape": [3, 1, 1, 4, 2],
- "data": [
- -0.39453125,
- 0.86181640625,
- -0.447265625,
- 0.11029052734375,
- -0.5947265625,
- -0.40283203125,
- -0.953125,
- -0.67333984375,
- 0.337890625,
- -0.99072265625,
- 0.491943359375,
- -0.15869140625,
- -0.341796875,
- -0.916015625,
- -0.720703125,
- -0.79931640625,
- 0.57666015625,
- 0.32275390625,
- 0.66552734375,
- 0.038848876953125,
- 0.51806640625,
- -0.8740234375,
- -0.47900390625,
- 0.12115478515625
- ],
- "type": "float16"
- }
- },
- {
- "name": "concat two float32 5D tensors of same others dimensions except different 5th dimension along axis 4",
- "inputs": [
- {
- "name": "input1",
- "shape": [1, 2, 1, 1, 4],
- "data": [
- -0.39444134019222243,
- 0.8619825316530809,
- 0.3379962524218807,
- -0.9906398615400507,
- 0.576785657225761,
- 0.3227640108329237,
- -0.44735022799701873,
- 0.11028251232581932
- ],
- "type": "float32"
- },
- {
- "name": "input2",
- "shape": [1, 2, 1, 1, 8],
- "data": [
- -0.5945112749179908,
- -0.40284849555754754,
- -0.9531654171044694,
- -0.6731740531810844,
- 0.4918989118791477,
- -0.15864110312378976,
- -0.34188115459083157,
- -0.9158143500894873,
- -0.7206121708970712,
- -0.7993468785008635,
- 0.6653799854931952,
- 0.03886038855553897,
- 0.5182055416768865,
- -0.8742016938344297,
- -0.479021891130635,
- 0.1211843166661235
- ],
- "type": "float32"
- }
- ],
- "axis": 4,
- "expected": {
- "name": "output",
- "shape": [1, 2, 1, 1, 12],
- "data": [
- -0.3944413363933563,
- 0.861982524394989,
- 0.337996244430542,
- -0.990639865398407,
- -0.5945112705230713,
- -0.402848482131958,
- -0.9531654119491577,
- -0.6731740236282349,
- 0.49189892411231995,
- -0.15864109992980957,
- -0.3418811559677124,
- -0.9158143401145935,
- 0.576785683631897,
- 0.32276400923728943,
- -0.44735023379325867,
- 0.11028251051902771,
- -0.7206121683120728,
- -0.7993468642234802,
- 0.6653800010681152,
- 0.03886038810014725,
- 0.5182055234909058,
- -0.8742017149925232,
- -0.4790218770503998,
- 0.1211843192577362
- ],
- "type": "float32"
- }
- },
- {
- "name": "concat two float16 5D tensors of same others dimensions except different 5th dimension along axis 4",
- "inputs": [
- {
- "name": "input1",
- "shape": [1, 2, 1, 1, 4],
- "data": [
- -0.39444134019222243,
- 0.8619825316530809,
- 0.3379962524218807,
- -0.9906398615400507,
- 0.576785657225761,
- 0.3227640108329237,
- -0.44735022799701873,
- 0.11028251232581932
- ],
- "type": "float16"
- },
- {
- "name": "input2",
- "shape": [1, 2, 1, 1, 8],
- "data": [
- -0.5945112749179908,
- -0.40284849555754754,
- -0.9531654171044694,
- -0.6731740531810844,
- 0.4918989118791477,
- -0.15864110312378976,
- -0.34188115459083157,
- -0.9158143500894873,
- -0.7206121708970712,
- -0.7993468785008635,
- 0.6653799854931952,
- 0.03886038855553897,
- 0.5182055416768865,
- -0.8742016938344297,
- -0.479021891130635,
- 0.1211843166661235
- ],
- "type": "float16"
- }
- ],
- "axis": 4,
- "expected": {
- "name": "output",
- "shape": [1, 2, 1, 1, 12],
- "data": [
- -0.39453125,
- 0.86181640625,
- 0.337890625,
- -0.99072265625,
- -0.5947265625,
- -0.40283203125,
- -0.953125,
- -0.67333984375,
- 0.491943359375,
- -0.15869140625,
- -0.341796875,
- -0.916015625,
- 0.57666015625,
- 0.32275390625,
- -0.447265625,
- 0.11029052734375,
- -0.720703125,
- -0.79931640625,
- 0.66552734375,
- 0.038848876953125,
- 0.51806640625,
- -0.8740234375,
- -0.47900390625,
- 0.12115478515625
- ],
- "type": "float16"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/constant.json b/tests/wpt/tests/webnn/resources/test_data/constant.json
deleted file mode 100644
index 06fe0a7a958..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/constant.json
+++ /dev/null
@@ -1,754 +0,0 @@
-{
- "tests": [
- {
- "name": "constant float32 0D tensor of default float32 type",
- "inputs": {
- "start": {
- "data": 0.22992068529129028,
- "type": "float32"
- },
- "step": {
- "data": 0.7537541389465332,
- "type": "float32"
- }
- },
- "outputShape": [],
- "expected": {
- "name": "output",
- "shape": [],
- "data": [
- 0.22992068529129028
- ],
- "type": "float32"
- }
- },
- {
- "name": "constant float32 1D tensor of default float32 type",
- "inputs": {
- "start": {
- "data": 0.22992068529129028,
- "type": "float32"
- },
- "step": {
- "data": 0.7537541389465332,
- "type": "float32"
- }
- },
- "outputShape": [24],
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- 0.22992068529129028,
- 0.9836748242378235,
- 1.737428903579712,
- 2.491183042526245,
- 3.2449371814727783,
- 3.9986913204193115,
- 4.752445697784424,
- 5.506199836730957,
- 6.25995397567749,
- 7.013708114624023,
- 7.767462253570557,
- 8.52121639251709,
- 9.274970054626465,
- 10.028724670410156,
- 10.782478332519531,
- 11.536232948303223,
- 12.289986610412598,
- 13.043741226196289,
- 13.797494888305664,
- 14.551249504089355,
- 15.30500316619873,
- 16.058757781982422,
- 16.812511444091797,
- 17.566265106201172
- ],
- "type": "float32"
- }
- },
- {
- "name": "constant float32 2D tensor of default float32 type",
- "inputs": {
- "start": {
- "data": 0.22992068529129028,
- "type": "float32"
- },
- "step": {
- "data": 0.7537541389465332,
- "type": "float32"
- }
- },
- "outputShape": [4, 6],
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- 0.22992068529129028,
- 0.9836748242378235,
- 1.737428903579712,
- 2.491183042526245,
- 3.2449371814727783,
- 3.9986913204193115,
- 4.752445697784424,
- 5.506199836730957,
- 6.25995397567749,
- 7.013708114624023,
- 7.767462253570557,
- 8.52121639251709,
- 9.274970054626465,
- 10.028724670410156,
- 10.782478332519531,
- 11.536232948303223,
- 12.289986610412598,
- 13.043741226196289,
- 13.797494888305664,
- 14.551249504089355,
- 15.30500316619873,
- 16.058757781982422,
- 16.812511444091797,
- 17.566265106201172
- ],
- "type": "float32"
- }
- },
- {
- "name": "constant float32 3D tensor of default float32 type",
- "inputs": {
- "start": {
- "data": 0.22992068529129028,
- "type": "float32"
- },
- "step": {
- "data": 0.7537541389465332,
- "type": "float32"
- }
- },
- "outputShape": [2, 3, 4],
- "expected": {
- "name": "output",
- "shape": [2, 3, 4],
- "data": [
- 0.22992068529129028,
- 0.9836748242378235,
- 1.737428903579712,
- 2.491183042526245,
- 3.2449371814727783,
- 3.9986913204193115,
- 4.752445697784424,
- 5.506199836730957,
- 6.25995397567749,
- 7.013708114624023,
- 7.767462253570557,
- 8.52121639251709,
- 9.274970054626465,
- 10.028724670410156,
- 10.782478332519531,
- 11.536232948303223,
- 12.289986610412598,
- 13.043741226196289,
- 13.797494888305664,
- 14.551249504089355,
- 15.30500316619873,
- 16.058757781982422,
- 16.812511444091797,
- 17.566265106201172
- ],
- "type": "float32"
- }
- },
- {
- "name": "constant float32 4D tensor of default float32 type",
- "inputs": {
- "start": {
- "data": 0.22992068529129028,
- "type": "float32"
- },
- "step": {
- "data": 0.7537541389465332,
- "type": "float32"
- }
- },
- "outputShape": [2, 2, 2, 3],
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 0.22992068529129028,
- 0.9836748242378235,
- 1.737428903579712,
- 2.491183042526245,
- 3.2449371814727783,
- 3.9986913204193115,
- 4.752445697784424,
- 5.506199836730957,
- 6.25995397567749,
- 7.013708114624023,
- 7.767462253570557,
- 8.52121639251709,
- 9.274970054626465,
- 10.028724670410156,
- 10.782478332519531,
- 11.536232948303223,
- 12.289986610412598,
- 13.043741226196289,
- 13.797494888305664,
- 14.551249504089355,
- 15.30500316619873,
- 16.058757781982422,
- 16.812511444091797,
- 17.566265106201172
- ],
- "type": "float32"
- }
- },
- {
- "name": "constant float32 4D tensor of default float32 type step > 0",
- "inputs": {
- "start": {
- "data": 0.22992068529129028,
- "type": "float32"
- },
- "step": {
- "data": 0.7615746259689331,
- "type": "float32"
- }
- },
- "outputShape": [2, 2, 2, 3],
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 0.22992068529129028,
- 0.9914953112602234,
- 1.7530698776245117,
- 2.5146446228027344,
- 3.276219129562378,
- 4.0377936363220215,
- 4.799368381500244,
- 5.560943126678467,
- 6.3225178718566895,
- 7.084092140197754,
- 7.845666885375977,
- 8.6072416305542,
- 9.368816375732422,
- 10.130391120910645,
- 10.891965866088867,
- 11.653539657592773,
- 12.415114402770996,
- 13.176689147949219,
- 13.938263893127441,
- 14.699838638305664,
- 15.461413383483887,
- 16.22298812866211,
- 16.984561920166016,
- 17.746137619018555
- ],
- "type": "float32"
- }
- },
- {
- "name": "constant float32 4D tensor of default float32 type step = 0",
- "inputs": {
- "start": {
- "data": 0.22992068529129028,
- "type": "float32"
- },
- "step": {
- "data": 0,
- "type": "float32"
- }
- },
- "outputShape": [2, 2, 2, 3],
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 0.22992068529129028,
- 0.22992068529129028,
- 0.22992068529129028,
- 0.22992068529129028,
- 0.22992068529129028,
- 0.22992068529129028,
- 0.22992068529129028,
- 0.22992068529129028,
- 0.22992068529129028,
- 0.22992068529129028,
- 0.22992068529129028,
- 0.22992068529129028,
- 0.22992068529129028,
- 0.22992068529129028,
- 0.22992068529129028,
- 0.22992068529129028,
- 0.22992068529129028,
- 0.22992068529129028,
- 0.22992068529129028,
- 0.22992068529129028,
- 0.22992068529129028,
- 0.22992068529129028,
- 0.22992068529129028,
- 0.22992068529129028
- ],
- "type": "float32"
- }
- },
- {
- "name": "constant float32 4D tensor of default float32 type step < 0",
- "inputs": {
- "start": {
- "data": 0.22992068529129028,
- "type": "float32"
- },
- "step": {
- "data": -0.6248052716255188,
- "type": "float32"
- }
- },
- "outputShape": [2, 2, 2, 3],
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 0.22992068529129028,
- -0.3948845863342285,
- -1.0196897983551025,
- -1.6444951295852661,
- -2.2693004608154297,
- -2.8941056728363037,
- -3.5189108848571777,
- -4.143716335296631,
- -4.768521308898926,
- -5.393326759338379,
- -6.018132209777832,
- -6.642937183380127,
- -7.26774263381958,
- -7.892547607421875,
- -8.517353057861328,
- -9.142158508300781,
- -9.766963958740234,
- -10.391769409179688,
- -11.016573905944824,
- -11.641379356384277,
- -12.26618480682373,
- -12.890990257263184,
- -13.515795707702637,
- -14.140600204467773
- ],
- "type": "float32"
- }
- },
- {
- "name": "constant float32 5D tensor of default float32 type",
- "inputs": {
- "start": {
- "data": 0.22992068529129028,
- "type": "float32"
- },
- "step": {
- "data": 0.7537541389465332,
- "type": "float32"
- }
- },
- "outputShape": [2, 1, 4, 1, 3],
- "expected": {
- "name": "output",
- "shape": [2, 1, 4, 1, 3],
- "data": [
- 0.22992068529129028,
- 0.9836748242378235,
- 1.737428903579712,
- 2.491183042526245,
- 3.2449371814727783,
- 3.9986913204193115,
- 4.752445697784424,
- 5.506199836730957,
- 6.25995397567749,
- 7.013708114624023,
- 7.767462253570557,
- 8.52121639251709,
- 9.274970054626465,
- 10.028724670410156,
- 10.782478332519531,
- 11.536232948303223,
- 12.289986610412598,
- 13.043741226196289,
- 13.797494888305664,
- 14.551249504089355,
- 15.30500316619873,
- 16.058757781982422,
- 16.812511444091797,
- 17.566265106201172
- ],
- "type": "float32"
- }
- },
- {
- "name": "constant float32 4D tensor of explict float32 type",
- "inputs": {
- "start": {
- "data": 0.22992068529129028,
- "type": "float32"
- },
- "step": {
- "data": 0.7537541389465332,
- "type": "float32"
- }
- },
- "outputShape": [2, 2, 2, 3],
- "type": "float32",
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 0.22992068529129028,
- 0.9836748242378235,
- 1.737428903579712,
- 2.491183042526245,
- 3.2449371814727783,
- 3.9986913204193115,
- 4.752445697784424,
- 5.506199836730957,
- 6.25995397567749,
- 7.013708114624023,
- 7.767462253570557,
- 8.52121639251709,
- 9.274970054626465,
- 10.028724670410156,
- 10.782478332519531,
- 11.536232948303223,
- 12.289986610412598,
- 13.043741226196289,
- 13.797494888305664,
- 14.551249504089355,
- 15.30500316619873,
- 16.058757781982422,
- 16.812511444091797,
- 17.566265106201172
- ],
- "type": "float32"
- }
- },
- {
- "name": "constant float32 4D tensor of float16 type",
- "inputs": {
- "start": {
- "data": 0.22992068529129028,
- "type": "float32"
- },
- "step": {
- "data": 0.7537541389465332,
- "type": "float32"
- }
- },
- "outputShape": [2, 2, 2, 3],
- "type": "float16",
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 0.22998046875,
- 0.98388671875,
- 1.7373046875,
- 2.490234375,
- 3.244140625,
- 3.998046875,
- 4.75390625,
- 5.5078125,
- 6.26171875,
- 7.015625,
- 7.765625,
- 8.5234375,
- 9.2734375,
- 10.03125,
- 10.78125,
- 11.5390625,
- 12.2890625,
- 13.046875,
- 13.796875,
- 14.5546875,
- 15.3046875,
- 16.0625,
- 16.8125,
- 17.5625
- ],
- "type": "float16"
- }
- },
- {
- "name": "constant float32 4D tensor of int32 type",
- "inputs": {
- "start": {
- "data": 7,
- "type": "float32"
- },
- "step": {
- "data": 1,
- "type": "float32"
- }
- },
- "outputShape": [2, 2, 2, 3],
- "type": "int32",
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30
- ],
- "type": "int32"
- }
- },
- {
- "name": "constant float32 4D tensor of uint32 type",
- "inputs": {
- "start": {
- "data": 7,
- "type": "float32"
- },
- "step": {
- "data": 1,
- "type": "float32"
- }
- },
- "outputShape": [2, 2, 2, 3],
- "type": "uint32",
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30
- ],
- "type": "uint32"
- }
- },
- {
- "name": "constant float32 4D tensor of int64 type",
- "inputs": {
- "start": {
- "data": 7,
- "type": "float32"
- },
- "step": {
- "data": 1,
- "type": "float32"
- }
- },
- "outputShape": [2, 2, 2, 3],
- "type": "int64",
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- "7",
- "8",
- "9",
- "10",
- "11",
- "12",
- "13",
- "14",
- "15",
- "16",
- "17",
- "18",
- "19",
- "20",
- "21",
- "22",
- "23",
- "24",
- "25",
- "26",
- "27",
- "28",
- "29",
- "30"
- ],
- "type": "int64"
- }
- },
- {
- "name": "constant float32 4D tensor of int8 type step > 0",
- "inputs": {
- "start": {
- "data": -9,
- "type": "float32"
- },
- "step": {
- "data": 1,
- "type": "float32"
- }
- },
- "outputShape": [2, 2, 2, 3],
- "type": "int8",
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- -9,
- -8,
- -7,
- -6,
- -5,
- -4,
- -3,
- -2,
- -1,
- 0,
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14
- ],
- "type": "int8"
- }
- },
- {
- "name": "constant float32 4D tensor of int8 type step < 0",
- "inputs": {
- "start": {
- "data": 7,
- "type": "float32"
- },
- "step": {
- "data": -2,
- "type": "float32"
- }
- },
- "outputShape": [2, 2, 2, 3],
- "type": "int8",
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 7,
- 5,
- 3,
- 1,
- -1,
- -3,
- -5,
- -7,
- -9,
- -11,
- -13,
- -15,
- -17,
- -19,
- -21,
- -23,
- -25,
- -27,
- -29,
- -31,
- -33,
- -35,
- -37,
- -39
- ],
- "type": "int8"
- }
- },
- {
- "name": "constant float32 4D tensor of uint8 type",
- "inputs": {
- "start": {
- "data": 7,
- "type": "float32"
- },
- "step": {
- "data": 1,
- "type": "float32"
- }
- },
- "outputShape": [2, 2, 2, 3],
- "type": "uint8",
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 27,
- 28,
- 29,
- 30
- ],
- "type": "uint8"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/conv2d.json b/tests/wpt/tests/webnn/resources/test_data/conv2d.json
deleted file mode 100644
index e6e36021333..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/conv2d.json
+++ /dev/null
@@ -1,1697 +0,0 @@
-{
- "tests": [
- {
- "name": "conv2d float32 4D input and filter(non-constant) tensors default options",
- "inputs": {
- "input": {
- "shape": [1, 1, 5, 5],
- "data": [
- 0.6124474607869732,
- 0.8857858599952035,
- 0.13667134799354397,
- 0.564529098909835,
- 0.8965171985225997,
- 0.36792828664768873,
- 0.6811466319147079,
- 0.04795110047019757,
- 0.33355462154327986,
- 0.19882695924603588,
- 0.4116714070095846,
- 0.07934240242135737,
- 0.42724633975875426,
- 0.5358005687699703,
- 0.5910805999797129,
- 0.2841543363273238,
- 0.414725865128835,
- 0.026906268886554896,
- 0.3621256577250671,
- 0.9945681862504354,
- 0.07184549434969778,
- 0.1220437231354885,
- 0.8422137325421886,
- 0.4537501021068471,
- 0.2152944303497728
- ],
- "type": "float32"
- },
- "filter": {
- "shape": [1, 1, 3, 3],
- "data": [
- 0.3804761331189006,
- 0.5280312082437455,
- 0.2194703660873738,
- 0.3668976886827289,
- 0.33974137307686836,
- 0.42000596251782674,
- 0.38050310131155185,
- 0.19443586243810795,
- 0.5686976617292392
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [1, 1, 3, 3],
- "data": [
- 1.5323282480239868,
- 1.3573521375656128,
- 1.3641656637191772,
- 1.071682333946228,
- 1.1259644031524658,
- 1.4713115692138672,
- 1.078782320022583,
- 1.155018925666809,
- 1.656954288482666
- ],
- "type": "float32"
- }
- },
- {
- "name": "conv2d float32 4D both input and filter constant tensors default options",
- "inputs": {
- "input": {
- "shape": [1, 1, 5, 5],
- "data": [
- 0.6124474607869732,
- 0.8857858599952035,
- 0.13667134799354397,
- 0.564529098909835,
- 0.8965171985225997,
- 0.36792828664768873,
- 0.6811466319147079,
- 0.04795110047019757,
- 0.33355462154327986,
- 0.19882695924603588,
- 0.4116714070095846,
- 0.07934240242135737,
- 0.42724633975875426,
- 0.5358005687699703,
- 0.5910805999797129,
- 0.2841543363273238,
- 0.414725865128835,
- 0.026906268886554896,
- 0.3621256577250671,
- 0.9945681862504354,
- 0.07184549434969778,
- 0.1220437231354885,
- 0.8422137325421886,
- 0.4537501021068471,
- 0.2152944303497728
- ],
- "type": "float32",
- "constant": true
- },
- "filter": {
- "shape": [1, 1, 3, 3],
- "data": [
- 0.3804761331189006,
- 0.5280312082437455,
- 0.2194703660873738,
- 0.3668976886827289,
- 0.33974137307686836,
- 0.42000596251782674,
- 0.38050310131155185,
- 0.19443586243810795,
- 0.5686976617292392
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [1, 1, 3, 3],
- "data": [
- 1.5323282480239868,
- 1.3573521375656128,
- 1.3641656637191772,
- 1.071682333946228,
- 1.1259644031524658,
- 1.4713115692138672,
- 1.078782320022583,
- 1.155018925666809,
- 1.656954288482666
- ],
- "type": "float32"
- }
- },
- {
- "name": "conv2d float32 4D input and filter tensors default options",
- "inputs": {
- "input": {
- "shape": [1, 1, 5, 5],
- "data": [
- 0.6124474607869732,
- 0.8857858599952035,
- 0.13667134799354397,
- 0.564529098909835,
- 0.8965171985225997,
- 0.36792828664768873,
- 0.6811466319147079,
- 0.04795110047019757,
- 0.33355462154327986,
- 0.19882695924603588,
- 0.4116714070095846,
- 0.07934240242135737,
- 0.42724633975875426,
- 0.5358005687699703,
- 0.5910805999797129,
- 0.2841543363273238,
- 0.414725865128835,
- 0.026906268886554896,
- 0.3621256577250671,
- 0.9945681862504354,
- 0.07184549434969778,
- 0.1220437231354885,
- 0.8422137325421886,
- 0.4537501021068471,
- 0.2152944303497728
- ],
- "type": "float32"
- },
- "filter": {
- "shape": [1, 1, 3, 3],
- "data": [
- 0.3804761331189006,
- 0.5280312082437455,
- 0.2194703660873738,
- 0.3668976886827289,
- 0.33974137307686836,
- 0.42000596251782674,
- 0.38050310131155185,
- 0.19443586243810795,
- 0.5686976617292392
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [1, 1, 3, 3],
- "data": [
- 1.5323282480239868,
- 1.3573521375656128,
- 1.3641656637191772,
- 1.071682333946228,
- 1.1259644031524658,
- 1.4713115692138672,
- 1.078782320022583,
- 1.155018925666809,
- 1.656954288482666
- ],
- "type": "float32"
- }
- },
- {
- "name": "conv2d float32 4D input and filter tensors options.padding",
- "inputs": {
- "input": {
- "shape": [1, 1, 5, 5],
- "data": [
- 0.6124474607869732,
- 0.8857858599952035,
- 0.13667134799354397,
- 0.564529098909835,
- 0.8965171985225997,
- 0.36792828664768873,
- 0.6811466319147079,
- 0.04795110047019757,
- 0.33355462154327986,
- 0.19882695924603588,
- 0.4116714070095846,
- 0.07934240242135737,
- 0.42724633975875426,
- 0.5358005687699703,
- 0.5910805999797129,
- 0.2841543363273238,
- 0.414725865128835,
- 0.026906268886554896,
- 0.3621256577250671,
- 0.9945681862504354,
- 0.07184549434969778,
- 0.1220437231354885,
- 0.8422137325421886,
- 0.4537501021068471,
- 0.2152944303497728
- ],
- "type": "float32"
- },
- "filter": {
- "shape": [1, 1, 3, 3],
- "data": [
- 0.3804761331189006,
- 0.5280312082437455,
- 0.2194703660873738,
- 0.3668976886827289,
- 0.33974137307686836,
- 0.42000596251782674,
- 0.38050310131155185,
- 0.19443586243810795,
- 0.5686976617292392
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "padding": [1, 1, 1, 1]
- },
- "expected": {
- "name": "output",
- "shape": [1, 1, 5, 5],
- "data": [
- 1.0390141010284424,
- 0.882753312587738,
- 1.0667248964309692,
- 0.8146538734436035,
- 0.6772860884666443,
- 1.0540467500686646,
- 1.5323282480239868,
- 1.3573521375656128,
- 1.3641656637191772,
- 1.1969101428985596,
- 0.8080586791038513,
- 1.071682333946228,
- 1.1259644031524658,
- 1.4713115692138672,
- 0.960464596748352,
- 0.5888903141021729,
- 1.078782320022583,
- 1.155018925666809,
- 1.656954288482666,
- 1.2012416124343872,
- 0.3167303800582886,
- 0.7545653581619263,
- 0.7729666829109192,
- 0.9733180403709412,
- 0.9025675058364868
- ],
- "type": "float32"
- }
- },
- {
- "name": "conv2d float32 4D input and filter tensors options.strides",
- "inputs": {
- "input": {
- "shape": [1, 1, 5, 5],
- "data": [
- 0.6124474607869732,
- 0.8857858599952035,
- 0.13667134799354397,
- 0.564529098909835,
- 0.8965171985225997,
- 0.36792828664768873,
- 0.6811466319147079,
- 0.04795110047019757,
- 0.33355462154327986,
- 0.19882695924603588,
- 0.4116714070095846,
- 0.07934240242135737,
- 0.42724633975875426,
- 0.5358005687699703,
- 0.5910805999797129,
- 0.2841543363273238,
- 0.414725865128835,
- 0.026906268886554896,
- 0.3621256577250671,
- 0.9945681862504354,
- 0.07184549434969778,
- 0.1220437231354885,
- 0.8422137325421886,
- 0.4537501021068471,
- 0.2152944303497728
- ],
- "type": "float32"
- },
- "filter": {
- "shape": [1, 1, 3, 3],
- "data": [
- 0.3804761331189006,
- 0.5280312082437455,
- 0.2194703660873738,
- 0.3668976886827289,
- 0.33974137307686836,
- 0.42000596251782674,
- 0.38050310131155185,
- 0.19443586243810795,
- 0.5686976617292392
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "strides": [2, 2]
- },
- "expected": {
- "name": "output",
- "shape": [1, 1, 2, 2],
- "data": [
- 1.5323282480239868,
- 1.3641656637191772,
- 1.078782320022583,
- 1.656954288482666
- ],
- "type": "float32"
- }
- },
- {
- "name": "conv2d float32 4D input and filter tensors options.dilations",
- "inputs": {
- "input": {
- "shape": [1, 1, 5, 5],
- "data": [
- 0.6124474607869732,
- 0.8857858599952035,
- 0.13667134799354397,
- 0.564529098909835,
- 0.8965171985225997,
- 0.36792828664768873,
- 0.6811466319147079,
- 0.04795110047019757,
- 0.33355462154327986,
- 0.19882695924603588,
- 0.4116714070095846,
- 0.07934240242135737,
- 0.42724633975875426,
- 0.5358005687699703,
- 0.5910805999797129,
- 0.2841543363273238,
- 0.414725865128835,
- 0.026906268886554896,
- 0.3621256577250671,
- 0.9945681862504354,
- 0.07184549434969778,
- 0.1220437231354885,
- 0.8422137325421886,
- 0.4537501021068471,
- 0.2152944303497728
- ],
- "type": "float32"
- },
- "filter": {
- "shape": [1, 1, 3, 3],
- "data": [
- 0.3804761331189006,
- 0.5280312082437455,
- 0.2194703660873738,
- 0.3668976886827289,
- 0.33974137307686836,
- 0.42000596251782674,
- 0.38050310131155185,
- 0.19443586243810795,
- 0.5686976617292392
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "dilations": [2, 2]
- },
- "expected": {
- "name": "output",
- "shape": [1, 1, 1, 1],
- "data": [
- 1.3599307537078857
- ],
- "type": "float32"
- }
- },
- {
- "name": "depthwise conv2d float32 4D input and filter tensors options.groups= input_channels",
- "inputs": {
- "input": {
- "shape": [1, 4, 2, 2],
- "data": [
- 0.8444867694647586,
- 0.9432409670525521,
- 0.6556113430383732,
- 0.6982811560969739,
- 0.9994443556337815,
- 0.23663609547122832,
- 0.36740679911148977,
- 0.26192464008498995,
- 0.6254158900563778,
- 0.8403864149984126,
- 0.3783077112751454,
- 0.4543924050667707,
- 0.2532720958655783,
- 0.5780375783781451,
- 0.5414554298341647,
- 0.3784630864473655
- ],
- "type": "float32"
- },
- "filter": {
- "shape": [4, 1, 2, 2],
- "data": [
- 0.2722161634913378,
- 0.2812024814519549,
- 0.8544839438625549,
- 0.17969306710350352,
- 0.7762278551409514,
- 0.5140685342176547,
- 0.6374202845672399,
- 0.12801742574418573,
- 0.8373775881302137,
- 0.5726001728584655,
- 0.0985520323467497,
- 0.5929879082269991,
- 0.5900803925387657,
- 0.9690897431424881,
- 0.2317559033646952,
- 0.1480511343463049
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "groups": 4
- },
- "expected": {
- "name": "output",
- "shape": [1, 4, 1, 1],
- "data": [
- 1.1808103322982788,
- 1.165167212486267,
- 1.311646819114685,
- 0.8911385536193848
- ],
- "type": "float32"
- }
- },
- {
- "name": "conv2d float32 4D input and filter tensors options.inputLayout='nchw'",
- "inputs": {
- "input": {
- "shape": [2, 1, 3, 3],
- "data": [
- 0.7529087201709872,
- 0.7520291960017611,
- 0.594952773514815,
- 0.21631854011984264,
- 0.07589348976741683,
- 0.15106785419828572,
- 0.12124850358598671,
- 0.5364335407319905,
- 0.5937089927693522,
- 0.9910031422560608,
- 0.36309423611370084,
- 0.9289673923363004,
- 0.22727376737331384,
- 0.5414123970044269,
- 0.0844534212564596,
- 0.6765284772046276,
- 0.619325655574763,
- 0.39292160755260475
- ],
- "type": "float32"
- },
- "filter": {
- "shape": [3, 1, 2, 2],
- "data": [
- 0.14543837927656278,
- 0.9671129790291346,
- 0.10836050336762582,
- 0.320230810822804,
- 0.6952692250382182,
- 0.5070913293589028,
- 0.0813970738017622,
- 0.5303338853508432,
- 0.30721364807734,
- 0.4324123448833208,
- 0.9849002194630809,
- 0.4281076188358701
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "inputLayout": "nchw"
- },
- "expected": {
- "name": "output",
- "shape": [2, 3, 2, 2],
- "data": [
- 0.8845428228378296,
- 0.7413608431816101,
- 0.2897796928882599,
- 0.4053896367549896,
- 0.9626783132553101,
- 0.9108520746231079,
- 0.4832426905632019,
- 0.4878997206687927,
- 0.8020333051681519,
- 0.6277193427085876,
- 0.4483422338962555,
- 0.8711439371109009,
- 0.6932874917984009,
- 1.0369365215301514,
- 0.8282973766326904,
- 0.35335418581962585,
- 1.1787647008895874,
- 0.8123774528503418,
- 0.816078782081604,
- 0.6780439019203186,
- 0.9170808792114258,
- 1.082636833190918,
- 1.2353861331939697,
- 0.9810346961021423
- ],
- "type": "float32"
- }
- },
- {
- "name": "conv2d float32 4D input and filter tensors options.inputLayout='nhwc'",
- "inputs": {
- "input": {
- "shape": [2, 3, 3, 1],
- "data": [
- 0.7529087201709872,
- 0.7520291960017611,
- 0.594952773514815,
- 0.21631854011984264,
- 0.07589348976741683,
- 0.15106785419828572,
- 0.12124850358598671,
- 0.5364335407319905,
- 0.5937089927693522,
- 0.9910031422560608,
- 0.36309423611370084,
- 0.9289673923363004,
- 0.22727376737331384,
- 0.5414123970044269,
- 0.0844534212564596,
- 0.6765284772046276,
- 0.619325655574763,
- 0.39292160755260475
- ],
- "type": "float32"
- },
- "filter": {
- "shape": [3, 1, 2, 2],
- "data": [
- 0.14543837927656278,
- 0.9671129790291346,
- 0.10836050336762582,
- 0.320230810822804,
- 0.6952692250382182,
- 0.5070913293589028,
- 0.0813970738017622,
- 0.5303338853508432,
- 0.30721364807734,
- 0.4324123448833208,
- 0.9849002194630809,
- 0.4281076188358701
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "inputLayout": "nhwc"
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 0.8845428228378296,
- 0.9626783132553101,
- 0.8020333051681519,
- 0.7413608431816101,
- 0.9108520746231079,
- 0.6277193427085876,
- 0.2897796928882599,
- 0.4832426905632019,
- 0.4483422338962555,
- 0.4053896367549896,
- 0.4878997206687927,
- 0.8711439371109009,
- 0.6932874917984009,
- 1.1787647008895874,
- 0.9170808792114258,
- 1.0369365215301514,
- 0.8123774528503418,
- 1.082636833190918,
- 0.8282973766326904,
- 0.816078782081604,
- 1.2353861331939697,
- 0.35335418581962585,
- 0.6780439019203186,
- 0.9810346961021423
- ],
- "type": "float32"
- }
- },
- {
- "name": "conv2d float32 4D input and filter tensors options.filterLayout='oihw'",
- "inputs": {
- "input": {
- "shape": [2, 1, 3, 3],
- "data": [
- 0.7529087201709872,
- 0.7520291960017611,
- 0.594952773514815,
- 0.21631854011984264,
- 0.07589348976741683,
- 0.15106785419828572,
- 0.12124850358598671,
- 0.5364335407319905,
- 0.5937089927693522,
- 0.9910031422560608,
- 0.36309423611370084,
- 0.9289673923363004,
- 0.22727376737331384,
- 0.5414123970044269,
- 0.0844534212564596,
- 0.6765284772046276,
- 0.619325655574763,
- 0.39292160755260475
- ],
- "type": "float32"
- },
- "filter": {
- "shape": [3, 1, 2, 2],
- "data": [
- 0.14543837927656278,
- 0.9671129790291346,
- 0.10836050336762582,
- 0.320230810822804,
- 0.6952692250382182,
- 0.5070913293589028,
- 0.0813970738017622,
- 0.5303338853508432,
- 0.30721364807734,
- 0.4324123448833208,
- 0.9849002194630809,
- 0.4281076188358701
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "filterLayout": "oihw"
- },
- "expected": {
- "name": "output",
- "shape": [2, 3, 2, 2],
- "data": [
- 0.8845428228378296,
- 0.7413608431816101,
- 0.2897796928882599,
- 0.4053896367549896,
- 0.9626783132553101,
- 0.9108520746231079,
- 0.4832426905632019,
- 0.4878997206687927,
- 0.8020333051681519,
- 0.6277193427085876,
- 0.4483422338962555,
- 0.8711439371109009,
- 0.6932874917984009,
- 1.0369365215301514,
- 0.8282973766326904,
- 0.35335418581962585,
- 1.1787647008895874,
- 0.8123774528503418,
- 0.816078782081604,
- 0.6780439019203186,
- 0.9170808792114258,
- 1.082636833190918,
- 1.2353861331939697,
- 0.9810346961021423
- ],
- "type": "float32"
- }
- },
- {
- "name": "conv2d float32 4D input and filter tensors options.filterLayout='hwio'",
- "inputs": {
- "input": {
- "shape": [2, 1, 3, 3],
- "data": [
- 0.7529087201709872,
- 0.7520291960017611,
- 0.594952773514815,
- 0.21631854011984264,
- 0.07589348976741683,
- 0.15106785419828572,
- 0.12124850358598671,
- 0.5364335407319905,
- 0.5937089927693522,
- 0.9910031422560608,
- 0.36309423611370084,
- 0.9289673923363004,
- 0.22727376737331384,
- 0.5414123970044269,
- 0.0844534212564596,
- 0.6765284772046276,
- 0.619325655574763,
- 0.39292160755260475
- ],
- "type": "float32"
- },
- "filter": {
- "shape": [2, 2, 1, 3],
- "data": [
- 0.14543837927656278,
- 0.6952692250382182,
- 0.30721364807734,
- 0.9671129790291346,
- 0.5070913293589028,
- 0.4324123448833208,
- 0.10836050336762582,
- 0.0813970738017622,
- 0.9849002194630809,
- 0.320230810822804,
- 0.5303338853508432,
- 0.4281076188358701
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "filterLayout": "hwio"
- },
- "expected": {
- "name": "output",
- "shape": [2, 3, 2, 2],
- "data": [
- 0.8845428228378296,
- 0.7413608431816101,
- 0.2897796928882599,
- 0.4053896367549896,
- 0.9626783132553101,
- 0.9108520746231079,
- 0.4832426905632019,
- 0.4878997206687927,
- 0.8020333051681519,
- 0.6277193427085876,
- 0.4483422338962555,
- 0.8711439371109009,
- 0.6932874917984009,
- 1.0369365215301514,
- 0.8282973766326904,
- 0.35335418581962585,
- 1.1787647008895874,
- 0.8123774528503418,
- 0.816078782081604,
- 0.6780439019203186,
- 0.9170808792114258,
- 1.082636833190918,
- 1.2353861331939697,
- 0.9810346961021423
- ],
- "type": "float32"
- }
- },
- {
- "name": "conv2d float32 4D input and filter tensors options.filterLayout='ohwi'",
- "inputs": {
- "input": {
- "shape": [2, 1, 3, 3],
- "data": [
- 0.7529087201709872,
- 0.7520291960017611,
- 0.594952773514815,
- 0.21631854011984264,
- 0.07589348976741683,
- 0.15106785419828572,
- 0.12124850358598671,
- 0.5364335407319905,
- 0.5937089927693522,
- 0.9910031422560608,
- 0.36309423611370084,
- 0.9289673923363004,
- 0.22727376737331384,
- 0.5414123970044269,
- 0.0844534212564596,
- 0.6765284772046276,
- 0.619325655574763,
- 0.39292160755260475
- ],
- "type": "float32"
- },
- "filter": {
- "shape": [3, 2, 2, 1],
- "data": [
- 0.14543837927656278,
- 0.9671129790291346,
- 0.10836050336762582,
- 0.320230810822804,
- 0.6952692250382182,
- 0.5070913293589028,
- 0.0813970738017622,
- 0.5303338853508432,
- 0.30721364807734,
- 0.4324123448833208,
- 0.9849002194630809,
- 0.4281076188358701
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "filterLayout": "ohwi"
- },
- "expected": {
- "name": "output",
- "shape": [2, 3, 2, 2],
- "data": [
- 0.8845428228378296,
- 0.7413608431816101,
- 0.2897796928882599,
- 0.4053896367549896,
- 0.9626783132553101,
- 0.9108520746231079,
- 0.4832426905632019,
- 0.4878997206687927,
- 0.8020333051681519,
- 0.6277193427085876,
- 0.4483422338962555,
- 0.8711439371109009,
- 0.6932874917984009,
- 1.0369365215301514,
- 0.8282973766326904,
- 0.35335418581962585,
- 1.1787647008895874,
- 0.8123774528503418,
- 0.816078782081604,
- 0.6780439019203186,
- 0.9170808792114258,
- 1.082636833190918,
- 1.2353861331939697,
- 0.9810346961021423
- ],
- "type": "float32"
- }
- },
- {
- "name": "conv2d float32 4D input and filter tensors options.filterLayout='ihwo'",
- "inputs": {
- "input": {
- "shape": [2, 1, 3, 3],
- "data": [
- 0.7529087201709872,
- 0.7520291960017611,
- 0.594952773514815,
- 0.21631854011984264,
- 0.07589348976741683,
- 0.15106785419828572,
- 0.12124850358598671,
- 0.5364335407319905,
- 0.5937089927693522,
- 0.9910031422560608,
- 0.36309423611370084,
- 0.9289673923363004,
- 0.22727376737331384,
- 0.5414123970044269,
- 0.0844534212564596,
- 0.6765284772046276,
- 0.619325655574763,
- 0.39292160755260475
- ],
- "type": "float32"
- },
- "filter": {
- "shape": [1, 2, 2, 3],
- "data": [
- 0.14543837927656278,
- 0.6952692250382182,
- 0.30721364807734,
- 0.9671129790291346,
- 0.5070913293589028,
- 0.4324123448833208,
- 0.10836050336762582,
- 0.0813970738017622,
- 0.9849002194630809,
- 0.320230810822804,
- 0.5303338853508432,
- 0.4281076188358701
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "filterLayout": "ihwo"
- },
- "expected": {
- "name": "output",
- "shape": [2, 3, 2, 2],
- "data": [
- 0.8845428228378296,
- 0.7413608431816101,
- 0.2897796928882599,
- 0.4053896367549896,
- 0.9626783132553101,
- 0.9108520746231079,
- 0.4832426905632019,
- 0.4878997206687927,
- 0.8020333051681519,
- 0.6277193427085876,
- 0.4483422338962555,
- 0.8711439371109009,
- 0.6932874917984009,
- 1.0369365215301514,
- 0.8282973766326904,
- 0.35335418581962585,
- 1.1787647008895874,
- 0.8123774528503418,
- 0.816078782081604,
- 0.6780439019203186,
- 0.9170808792114258,
- 1.082636833190918,
- 1.2353861331939697,
- 0.9810346961021423
- ],
- "type": "float32"
- }
- },
- {
- "name": "conv2d float32 4D input and filter tensors options.inputLayout='nhwc' and options.filterLayout='oihw'",
- "inputs": {
- "input": {
- "shape": [2, 3, 3, 1],
- "data": [
- 0.7529087201709872,
- 0.7520291960017611,
- 0.594952773514815,
- 0.21631854011984264,
- 0.07589348976741683,
- 0.15106785419828572,
- 0.12124850358598671,
- 0.5364335407319905,
- 0.5937089927693522,
- 0.9910031422560608,
- 0.36309423611370084,
- 0.9289673923363004,
- 0.22727376737331384,
- 0.5414123970044269,
- 0.0844534212564596,
- 0.6765284772046276,
- 0.619325655574763,
- 0.39292160755260475
- ],
- "type": "float32"
- },
- "filter": {
- "shape": [3, 1, 2, 2],
- "data": [
- 0.14543837927656278,
- 0.9671129790291346,
- 0.10836050336762582,
- 0.320230810822804,
- 0.6952692250382182,
- 0.5070913293589028,
- 0.0813970738017622,
- 0.5303338853508432,
- 0.30721364807734,
- 0.4324123448833208,
- 0.9849002194630809,
- 0.4281076188358701
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "inputLayout": "nhwc",
- "filterLayout": "oihw"
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 0.8845428228378296,
- 0.9626783132553101,
- 0.8020333051681519,
- 0.7413608431816101,
- 0.9108520746231079,
- 0.6277193427085876,
- 0.2897796928882599,
- 0.4832426905632019,
- 0.4483422338962555,
- 0.4053896367549896,
- 0.4878997206687927,
- 0.8711439371109009,
- 0.6932874917984009,
- 1.1787647008895874,
- 0.9170808792114258,
- 1.0369365215301514,
- 0.8123774528503418,
- 1.082636833190918,
- 0.8282973766326904,
- 0.816078782081604,
- 1.2353861331939697,
- 0.35335418581962585,
- 0.6780439019203186,
- 0.9810346961021423
- ],
- "type": "float32"
- }
- },
- {
- "name": "conv2d float32 4D input and filter tensors options.inputLayout='nhwc' and options.filterLayout='hwio'",
- "inputs": {
- "input": {
- "shape": [2, 3, 3, 1],
- "data": [
- 0.7529087201709872,
- 0.7520291960017611,
- 0.594952773514815,
- 0.21631854011984264,
- 0.07589348976741683,
- 0.15106785419828572,
- 0.12124850358598671,
- 0.5364335407319905,
- 0.5937089927693522,
- 0.9910031422560608,
- 0.36309423611370084,
- 0.9289673923363004,
- 0.22727376737331384,
- 0.5414123970044269,
- 0.0844534212564596,
- 0.6765284772046276,
- 0.619325655574763,
- 0.39292160755260475
- ],
- "type": "float32"
- },
- "filter": {
- "shape": [2, 2, 1, 3],
- "data": [
- 0.14543837927656278,
- 0.6952692250382182,
- 0.30721364807734,
- 0.9671129790291346,
- 0.5070913293589028,
- 0.4324123448833208,
- 0.10836050336762582,
- 0.0813970738017622,
- 0.9849002194630809,
- 0.320230810822804,
- 0.5303338853508432,
- 0.4281076188358701
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "inputLayout": "nhwc",
- "filterLayout": "hwio"
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 0.8845428228378296,
- 0.9626783132553101,
- 0.8020333051681519,
- 0.7413608431816101,
- 0.9108520746231079,
- 0.6277193427085876,
- 0.2897796928882599,
- 0.4832426905632019,
- 0.4483422338962555,
- 0.4053896367549896,
- 0.4878997206687927,
- 0.8711439371109009,
- 0.6932874917984009,
- 1.1787647008895874,
- 0.9170808792114258,
- 1.0369365215301514,
- 0.8123774528503418,
- 1.082636833190918,
- 0.8282973766326904,
- 0.816078782081604,
- 1.2353861331939697,
- 0.35335418581962585,
- 0.6780439019203186,
- 0.9810346961021423
- ],
- "type": "float32"
- }
- },
- {
- "name": "conv2d float32 4D input and filter tensors options.inputLayout='nhwc' and options.filterLayout='ohwi'",
- "inputs": {
- "input": {
- "shape": [2, 3, 3, 1],
- "data": [
- 0.7529087201709872,
- 0.7520291960017611,
- 0.594952773514815,
- 0.21631854011984264,
- 0.07589348976741683,
- 0.15106785419828572,
- 0.12124850358598671,
- 0.5364335407319905,
- 0.5937089927693522,
- 0.9910031422560608,
- 0.36309423611370084,
- 0.9289673923363004,
- 0.22727376737331384,
- 0.5414123970044269,
- 0.0844534212564596,
- 0.6765284772046276,
- 0.619325655574763,
- 0.39292160755260475
- ],
- "type": "float32"
- },
- "filter": {
- "shape": [3, 2, 2, 1],
- "data": [
- 0.14543837927656278,
- 0.9671129790291346,
- 0.10836050336762582,
- 0.320230810822804,
- 0.6952692250382182,
- 0.5070913293589028,
- 0.0813970738017622,
- 0.5303338853508432,
- 0.30721364807734,
- 0.4324123448833208,
- 0.9849002194630809,
- 0.4281076188358701
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "inputLayout": "nhwc",
- "filterLayout": "ohwi"
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 0.8845428228378296,
- 0.9626783132553101,
- 0.8020333051681519,
- 0.7413608431816101,
- 0.9108520746231079,
- 0.6277193427085876,
- 0.2897796928882599,
- 0.4832426905632019,
- 0.4483422338962555,
- 0.4053896367549896,
- 0.4878997206687927,
- 0.8711439371109009,
- 0.6932874917984009,
- 1.1787647008895874,
- 0.9170808792114258,
- 1.0369365215301514,
- 0.8123774528503418,
- 1.082636833190918,
- 0.8282973766326904,
- 0.816078782081604,
- 1.2353861331939697,
- 0.35335418581962585,
- 0.6780439019203186,
- 0.9810346961021423
- ],
- "type": "float32"
- }
- },
- {
- "name": "conv2d float32 4D input and filter tensors options.inputLayout='nhwc' and options.filterLayout='ihwo'",
- "inputs": {
- "input": {
- "shape": [2, 3, 3, 1],
- "data": [
- 0.7529087201709872,
- 0.7520291960017611,
- 0.594952773514815,
- 0.21631854011984264,
- 0.07589348976741683,
- 0.15106785419828572,
- 0.12124850358598671,
- 0.5364335407319905,
- 0.5937089927693522,
- 0.9910031422560608,
- 0.36309423611370084,
- 0.9289673923363004,
- 0.22727376737331384,
- 0.5414123970044269,
- 0.0844534212564596,
- 0.6765284772046276,
- 0.619325655574763,
- 0.39292160755260475
- ],
- "type": "float32"
- },
- "filter": {
- "shape": [1, 2, 2, 3],
- "data": [
- 0.14543837927656278,
- 0.6952692250382182,
- 0.30721364807734,
- 0.9671129790291346,
- 0.5070913293589028,
- 0.4324123448833208,
- 0.10836050336762582,
- 0.0813970738017622,
- 0.9849002194630809,
- 0.320230810822804,
- 0.5303338853508432,
- 0.4281076188358701
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "inputLayout": "nhwc",
- "filterLayout": "ihwo"
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 0.8845428228378296,
- 0.9626783132553101,
- 0.8020333051681519,
- 0.7413608431816101,
- 0.9108520746231079,
- 0.6277193427085876,
- 0.2897796928882599,
- 0.4832426905632019,
- 0.4483422338962555,
- 0.4053896367549896,
- 0.4878997206687927,
- 0.8711439371109009,
- 0.6932874917984009,
- 1.1787647008895874,
- 0.9170808792114258,
- 1.0369365215301514,
- 0.8123774528503418,
- 1.082636833190918,
- 0.8282973766326904,
- 0.816078782081604,
- 1.2353861331939697,
- 0.35335418581962585,
- 0.6780439019203186,
- 0.9810346961021423
- ],
- "type": "float32"
- }
- },
- {
- "name": "conv2d float32 4D input and filter tensors 1D options.bias",
- "inputs": {
- "input": {
- "shape": [2, 1, 3, 3],
- "data": [
- 0.7529087201709872,
- 0.7520291960017611,
- 0.594952773514815,
- 0.21631854011984264,
- 0.07589348976741683,
- 0.15106785419828572,
- 0.12124850358598671,
- 0.5364335407319905,
- 0.5937089927693522,
- 0.9910031422560608,
- 0.36309423611370084,
- 0.9289673923363004,
- 0.22727376737331384,
- 0.5414123970044269,
- 0.0844534212564596,
- 0.6765284772046276,
- 0.619325655574763,
- 0.39292160755260475
- ],
- "type": "float32"
- },
- "filter": {
- "shape": [3, 1, 2, 2],
- "data": [
- 0.14543837927656278,
- 0.9671129790291346,
- 0.10836050336762582,
- 0.320230810822804,
- 0.6952692250382182,
- 0.5070913293589028,
- 0.0813970738017622,
- 0.5303338853508432,
- 0.30721364807734,
- 0.4324123448833208,
- 0.9849002194630809,
- 0.4281076188358701
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "bias": {
- "shape": [3],
- "data": [
- 0.8135762411918082,
- 0.8394582728923039,
- 0.4944481217318142
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 3, 2, 2],
- "data": [
- 1.698119044303894,
- 1.5549371242523193,
- 1.103355884552002,
- 1.2189658880233765,
- 1.8021366596221924,
- 1.7503103017807007,
- 1.3227009773254395,
- 1.3273580074310303,
- 1.2964813709259033,
- 1.1221674680709839,
- 0.9427903890609741,
- 1.365592122077942,
- 1.5068637132644653,
- 1.8505127429962158,
- 1.6418735980987549,
- 1.1669304370880127,
- 2.0182230472564697,
- 1.6518357992172241,
- 1.6555371284484863,
- 1.5175021886825562,
- 1.4115289449691772,
- 1.577085018157959,
- 1.7298341989517212,
- 1.4754828214645386
- ],
- "type": "float32"
- }
- },
- {
- "name": "conv2d float32 4D input and filter tensors all options",
- "inputs": {
- "input": {
- "shape": [1, 2, 5, 5],
- "data": [
- 0.099713865777741,
- 0.5374298084250959,
- 0.3057007632742843,
- 0.7222362156944886,
- 0.5066556292918762,
- 0.32384305247826917,
- 0.8721967991940403,
- 0.2098985575512795,
- 0.5052645707816252,
- 0.026870572012360316,
- 0.549711590167792,
- 0.06430311230261965,
- 0.15606686251064295,
- 0.11970008688898925,
- 0.036145712495725846,
- 0.41425615451732734,
- 0.2417246544172511,
- 0.6771784996210519,
- 0.20870001886065692,
- 0.10979551271350108,
- 0.74503571903267,
- 0.744359267961296,
- 0.7873413310077146,
- 0.5887080289918305,
- 0.11018028997622342,
- 0.9045036346881179,
- 0.11725221841523448,
- 0.850866928863351,
- 0.42449196218095864,
- 0.025379145064212683,
- 0.7473908464918035,
- 0.46458599705779524,
- 0.030408120922724935,
- 0.4244018930520117,
- 0.38475478117872863,
- 0.7581132411894682,
- 0.990195198482533,
- 0.037168528384688315,
- 0.01449632238827725,
- 0.8263141930741622,
- 0.21072064610591013,
- 0.6569713718921535,
- 0.25842808185295607,
- 0.4802338559966235,
- 0.9704218808133291,
- 0.29682848294345554,
- 0.7524365722467021,
- 0.02963621027656349,
- 0.09028015289625446,
- 0.7781876138140071
- ],
- "type": "float32"
- },
- "filter": {
- "shape": [2, 2, 1, 2],
- "data": [
- 0.6385681781775847,
- 0.07764163946007407,
- 0.12916297537217947,
- 0.45633891510482494,
- 0.40438535170611933,
- 0.594362681497403,
- 0.1424126456708108,
- 0.9036699957427188
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "padding": [1, 0, 0, 1],
- "strides": [1, 1],
- "dilations": [1, 1],
- "groups": 2,
- "inputLayout": "nchw",
- "filterLayout": "hwio",
- "bias": {
- "shape": [2],
- "data": [
- 0.5423753606058896,
- 0.8406119024104419
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 5, 5],
- "data": [
- 0.6592350006103516,
- 0.8032397627830505,
- 0.7688518762588501,
- 0.9065912961959839,
- 0.7472594976425171,
- 0.9306347966194153,
- 1.3076419830322266,
- 0.987708330154419,
- 1.277161955833435,
- 0.8767756223678589,
- 1.0932797193527222,
- 1.1746727228164673,
- 0.8218293786048889,
- 0.9220445156097412,
- 0.5741508603096008,
- 1.103653073310852,
- 0.7977840900421143,
- 0.9610581398010254,
- 0.7235122323036194,
- 0.6098566055297852,
- 1.2454158067703247,
- 1.1973347663879395,
- 1.4039851427078247,
- 0.9435820579528809,
- 0.6570426225662231,
- 1.4841723442077637,
- 1.6792051792144775,
- 1.729936122894287,
- 1.115848422050476,
- 0.8556963205337524,
- 1.828399419784546,
- 1.5416107177734375,
- 1.5019794702529907,
- 1.4850915670394897,
- 1.0712661743164062,
- 2.4560532569885254,
- 1.5126826763153076,
- 1.0718353986740112,
- 1.8044731616973877,
- 1.3616151809692383,
- 2.07026743888855,
- 1.5584666728973389,
- 1.4376858472824097,
- 2.3811910152435303,
- 1.4815508127212524,
- 2.0131523609161377,
- 1.4835525751113892,
- 1.1790242195129395,
- 2.0776233673095703,
- 1.378482699394226
- ],
- "type": "float32"
- }
- },
- {
- "name": "conv2d float32 4D input and filter tensors, both negative input tensor and options.bias",
- "inputs": {
- "input": {
- "shape": [1, 2, 5, 5],
- "data": [
- -0.8073334836059594,
- -0.8839999531200213,
- -0.7700487271672907,
- -0.5646049640597197,
- -0.3971793875202543,
- -0.1084135691143644,
- -0.5519214808736546,
- -0.3954172077064906,
- -0.05758975763264007,
- -0.5144240745380702,
- -0.21321901474354354,
- -0.9506090015630133,
- -0.8043696918281786,
- -0.8646378386343376,
- -0.9607220763612241,
- -0.3264438487690362,
- -0.0688429735597631,
- -0.32033992561547486,
- -0.2692728077259734,
- -0.34308877644524194,
- -0.8989502140796819,
- -0.9038569138324508,
- -0.6369403164357454,
- -0.20070796788073975,
- -0.7870701966207543,
- -0.3467883629993205,
- -0.06004269369586446,
- -0.1498520855746983,
- -0.6482332485869089,
- -0.8934088233365358,
- -0.8149284803583503,
- -0.642366834151139,
- -0.03273624021014587,
- -0.6608918929180299,
- -0.5843491800022218,
- -0.09921254485788045,
- -0.1660252392520163,
- -0.9508541527000836,
- -0.30514628810841127,
- -0.6210587190159238,
- -0.5400903646960964,
- -0.42009180747436625,
- -0.1882453942541189,
- -0.3588937522647535,
- -0.7114293416682491,
- -0.3751019899620214,
- -0.7108227479593932,
- -0.36050302242678467,
- -0.5468712310796768,
- -0.03226159510823612
- ],
- "type": "float32"
- },
- "filter": {
- "shape": [2, 2, 1, 2],
- "data": [
- 0.6385681781775847,
- 0.07764163946007407,
- 0.12916297537217947,
- 0.45633891510482494,
- 0.40438535170611933,
- 0.594362681497403,
- 0.1424126456708108,
- 0.9036699957427188
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "padding": [1, 0, 0, 1],
- "groups": 2,
- "filterLayout": "hwio",
- "bias": {
- "shape": [2],
- "data": [
- -0.37496936418502824,
- -0.4363507146568044
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 5, 5],
- "data": [
- -0.8273359537124634,
- -0.8421106934547424,
- -0.7667726874351501,
- -0.6598507165908813,
- -0.5355829000473022,
- -1.1271283626556396,
- -1.3184267282485962,
- -1.1077264547348022,
- -0.8833579421043396,
- -0.8366210460662842,
- -0.7370880246162415,
- -1.2774468660354614,
- -1.0833193063735962,
- -0.9646547436714172,
- -1.091966152191162,
- -0.7757209539413452,
- -1.1593523025512695,
- -1.1681820154190063,
- -1.2089394330978394,
- -1.127195954322815,
- -1.0845609903335571,
- -0.9165211915969849,
- -0.9004610180854797,
- -0.78448486328125,
- -0.9123346209526062,
- -0.6967275738716125,
- -0.6074546575546265,
- -1.1112061738967896,
- -1.6289831399917603,
- -0.9673595428466797,
- -1.5555264949798584,
- -0.9207774996757507,
- -1.3604848384857178,
- -1.8152461051940918,
- -0.8530317544937134,
- -1.0017603635787964,
- -1.4591015577316284,
- -1.5813868045806885,
- -1.4969244003295898,
- -0.8508546352386475,
- -1.2204514741897583,
- -1.3029515743255615,
- -1.0856342315673828,
- -1.5996664762496948,
- -0.9074177742004395,
- -1.5352842807769775,
- -1.303133249282837,
- -1.3232042789459229,
- -1.1430623531341553,
- -0.5107623338699341
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/conv_transpose2d.json b/tests/wpt/tests/webnn/resources/test_data/conv_transpose2d.json
deleted file mode 100644
index ba25e04094c..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/conv_transpose2d.json
+++ /dev/null
@@ -1,2013 +0,0 @@
-{
- "tests": [
- {
- "name": "convTranspose2d float32 4D input and filter(non-constant) tensors default options",
- "inputs": {
- "input": {
- "shape": [1, 1, 2, 2],
- "data": [
- 0.5872158177067033,
- 0.6077792328258038,
- 0.01728916618181975,
- 0.26146076483771563
- ],
- "type": "float32"
- },
- "filter": {
- "shape": [1, 1, 2, 2],
- "data": [
- 0.32927132527587477,
- 0.5866857173772775,
- 0.29701370673751004,
- 0.0033378428248385106
- ],
- "type": "float32"
- }
- },
- "expected": {
- "shape": [1, 1, 3, 3],
- "data": [
- 0.1933533400297165,
- 0.5446354150772095,
- 0.3565753698348999,
- 0.18010397255420685,
- 0.2787136137485504,
- 0.15542395412921906,
- 0.0051351189613342285,
- 0.07771513611078262,
- 0.0008727149106562138
- ],
- "type": "float32"
- }
- },
- {
- "name": "convTranspose2d float32 4D both input and filter constant tensors default options",
- "inputs": {
- "input": {
- "shape": [1, 1, 2, 2],
- "data": [
- 0.5872158177067033,
- 0.6077792328258038,
- 0.01728916618181975,
- 0.26146076483771563
- ],
- "type": "float32",
- "constant": true
- },
- "filter": {
- "shape": [1, 1, 2, 2],
- "data": [
- 0.32927132527587477,
- 0.5866857173772775,
- 0.29701370673751004,
- 0.0033378428248385106
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "shape": [1, 1, 3, 3],
- "data": [
- 0.1933533400297165,
- 0.5446354150772095,
- 0.3565753698348999,
- 0.18010397255420685,
- 0.2787136137485504,
- 0.15542395412921906,
- 0.0051351189613342285,
- 0.07771513611078262,
- 0.0008727149106562138
- ],
- "type": "float32"
- }
- },
- {
- "name": "convTranspose2d float32 4D input and filter tensors default options",
- "inputs": {
- "input": {
- "shape": [1, 1, 2, 2],
- "data": [
- 0.5872158177067033,
- 0.6077792328258038,
- 0.01728916618181975,
- 0.26146076483771563
- ],
- "type": "float32"
- },
- "filter": {
- "shape": [1, 1, 2, 2],
- "data": [
- 0.32927132527587477,
- 0.5866857173772775,
- 0.29701370673751004,
- 0.0033378428248385106
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "shape": [1, 1, 3, 3],
- "data": [
- 0.1933533400297165,
- 0.5446354150772095,
- 0.3565753698348999,
- 0.18010397255420685,
- 0.2787136137485504,
- 0.15542395412921906,
- 0.0051351189613342285,
- 0.07771513611078262,
- 0.0008727149106562138
- ],
- "type": "float32"
- }
- },
- {
- "name": "convTranspose2d float32 4D input and filter tensors options.groups",
- "inputs": {
- "input": {
- "shape": [1, 2, 2, 2],
- "data": [
- 0.8161798343223461,
- 0.544277595043074,
- 0.791066952587467,
- 0.3656411302728415,
- 0.2542919917049826,
- 0.20815767803688034,
- 0.7023073172218113,
- 0.573446998515611
- ],
- "type": "float32"
- },
- "filter": {
- "shape": [2, 1, 2, 2],
- "data": [
- 0.09232201736721923,
- 0.31896016969423147,
- 0.5445202353307315,
- 0.65828078346301,
- 0.9634372989011768,
- 0.01211885979286964,
- 0.9230011822371578,
- 0.4781944254526862
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "groups": 2
- },
- "expected": {
- "shape": [1, 2, 3, 3],
- "data": [
- 0.07535136491060257,
- 0.3105776607990265,
- 0.1736028790473938,
- 0.5174593329429626,
- 1.1197212934494019,
- 0.4749124348163605,
- 0.4307519793510437,
- 0.7198431491851807,
- 0.24069452285766602,
- 0.2449943870306015,
- 0.20362859964370728,
- 0.002522633643820882,
- 0.9113409519195557,
- 0.8747221827507019,
- 0.10648936033248901,
- 0.6482304930686951,
- 0.865131676197052,
- 0.2742191553115845
- ],
- "type": "float32"
- }
- },
- {
- "name": "convTranspose2d float32 4D input and filter tensors options.groups=2 options.strides=[2, 2]",
- "inputs": {
- "input": {
- "shape": [1, 2, 2, 2],
- "data": [
- 0.8161798343223461,
- 0.544277595043074,
- 0.791066952587467,
- 0.3656411302728415,
- 0.2542919917049826,
- 0.20815767803688034,
- 0.7023073172218113,
- 0.573446998515611
- ],
- "type": "float32"
- },
- "filter": {
- "shape": [2, 1, 2, 2],
- "data": [
- 0.09232201736721923,
- 0.31896016969423147,
- 0.5445202353307315,
- 0.65828078346301,
- 0.9634372989011768,
- 0.01211885979286964,
- 0.9230011822371578,
- 0.4781944254526862
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "groups": 2,
- "strides": [2, 2]
- },
- "expected": {
- "shape": [1, 2, 4, 4],
- "data": [
- 0.07535136491060257,
- 0.26032882928848267,
- 0.050248805433511734,
- 0.1736028790473938,
- 0.44442644715309143,
- 0.537275493144989,
- 0.29637017846107483,
- 0.3582874834537506,
- 0.07303289324045181,
- 0.2523188292980194,
- 0.03375672549009323,
- 0.11662495136260986,
- 0.4307519793510437,
- 0.5207441449165344,
- 0.19909898936748505,
- 0.24069452285766602,
- 0.2449943870306015,
- 0.0030817289371043444,
- 0.20054687559604645,
- 0.002522633643820882,
- 0.23471179604530334,
- 0.12160100787878036,
- 0.19212977588176727,
- 0.09953983873128891,
- 0.6766291260719299,
- 0.008511164225637913,
- 0.5524802207946777,
- 0.00694952392950654,
- 0.6482304930686951,
- 0.3358394503593445,
- 0.5292922258377075,
- 0.2742191553115845
- ],
- "type": "float32"
- }
- },
- {
- "name": "convTranspose2d float32 4D input and filter tensors options.padding",
- "inputs": {
- "input": {
- "shape": [1, 1, 2, 2],
- "data": [
- 0.5872158177067033,
- 0.6077792328258038,
- 0.01728916618181975,
- 0.26146076483771563
- ],
- "type": "float32"
- },
- "filter": {
- "shape": [1, 1, 2, 2],
- "data": [
- 0.32927132527587477,
- 0.5866857173772775,
- 0.29701370673751004,
- 0.0033378428248385106
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "padding": [1, 1, 1, 1]
- },
- "expected": {
- "shape": [1, 1, 1, 1],
- "data": [
- 0.2787136137485504
- ],
- "type": "float32"
- }
- },
- {
- "name": "convTranspose2d options.padding is the same upper padding",
- "inputs": {
- "input": {
- "shape": [1, 3, 3, 1],
- "data": [
- 0.5, 0.5, 0.5,
- 0.5, 0.5, 0.5,
- 0.5, 0.5, 0.5
- ],
- "type": "float32"
- },
- "filter": {
- "shape": [2, 3, 3, 1],
- "data": [
- 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
- 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "outputSizes": [6, 6],
- "groups": 1,
- "strides": [2, 2],
- "dilations": [1, 1],
- "padding": [0, 1, 0, 1],
- "filterLayout": "ohwi",
- "inputLayout": "nhwc"
- },
- "expected": {
- "shape": [1, 6, 6, 2],
- "data": [
- 0.5, 0.5, 0.5, 0.5, 1.0, 1.0, 0.5,
- 0.5, 1.0, 1.0, 0.5, 0.5, 0.5, 0.5,
- 0.5, 0.5, 1.0, 1.0, 0.5, 0.5, 1.0,
- 1.0, 0.5, 0.5, 1.0, 1.0, 1.0, 1.0,
- 2.0, 2.0, 1.0, 1.0, 2.0, 2.0, 1.0,
- 1.0, 0.5, 0.5, 0.5, 0.5, 1.0, 1.0,
- 0.5, 0.5, 1.0, 1.0, 0.5, 0.5, 1.0,
- 1.0, 1.0, 1.0, 2.0, 2.0, 1.0, 1.0,
- 2.0, 2.0, 1.0, 1.0, 0.5, 0.5, 0.5,
- 0.5, 1.0, 1.0, 0.5, 0.5, 1.0, 1.0,
- 0.5, 0.5
- ],
- "type": "float32"
- }
- },
- {
- "name": "convTranspose2d float32 4D input and filter tensors options.strides",
- "inputs": {
- "input": {
- "shape": [1, 1, 3, 3],
- "data": [
- 0.05605664967552748,
- 0.7114230061939892,
- 0.6529743817798401,
- 0.3862290922141163,
- 0.38708372734474095,
- 0.9461629334832131,
- 0.0957319185290193,
- 0.9234652551205444,
- 0.6362779541136516
- ],
- "type": "float32"
- },
- "filter": {
- "shape": [1, 2, 3, 3],
- "data": [
- 0.861442276299335,
- 0.6267672619279181,
- 0.6366489967621862,
- 0.8382642064548715,
- 0.11884837321114183,
- 0.9921330460504791,
- 0.3285411258903119,
- 0.8742373539889388,
- 0.7205492498486465,
- 0.9801966684571415,
- 0.06169835353027997,
- 0.3220160786486479,
- 0.7498031716529909,
- 0.39307147694602995,
- 0.1381193362338462,
- 0.283850915413119,
- 0.4235861336377129,
- 0.14485120857485168
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "strides": [3, 2]
- },
- "expected": {
- "shape": [1, 2, 9, 7],
- "data": [
- 0.04828956723213196,
- 0.03513447195291519,
- 0.6485382318496704,
- 0.4458966553211212,
- 1.015426516532898,
- 0.4092629551887512,
- 0.4157154858112335,
- 0.0469902828335762,
- 0.0066622416488826275,
- 0.6519761085510254,
- 0.08455146849155426,
- 1.2531912326812744,
- 0.07760494202375412,
- 0.6478374600410461,
- 0.018416915088891983,
- 0.04900681599974632,
- 0.27412328124046326,
- 0.6219525337219238,
- 0.7271442413330078,
- 0.5708546042442322,
- 0.4705001711845398,
- 0.3327140808105469,
- 0.24207575619220734,
- 0.5793426632881165,
- 0.24261142313480377,
- 1.0615012645721436,
- 0.593023955821991,
- 0.6023737192153931,
- 0.32376202940940857,
- 0.04590269923210144,
- 0.7076690793037415,
- 0.0460042729973793,
- 1.177173137664795,
- 0.11244992911815643,
- 0.9387195110321045,
- 0.12689214944839478,
- 0.3376559019088745,
- 0.40547001361846924,
- 0.3384030759334564,
- 0.5897663235664368,
- 0.8271709680557251,
- 0.6817569732666016,
- 0.08246752619743347,
- 0.06000163406133652,
- 0.8564596176147461,
- 0.5787978172302246,
- 1.1360399723052979,
- 0.39879822731018066,
- 0.4050857424736023,
- 0.0802486464381218,
- 0.011377583257853985,
- 0.8690866827964783,
- 0.1097523421049118,
- 1.4495694637298584,
- 0.0756206065416336,
- 0.6312723755836487,
- 0.03145187348127365,
- 0.08369242399930954,
- 0.37237587571144104,
- 0.8073278069496155,
- 0.8744456768035889,
- 0.556257963180542,
- 0.45846959948539734,
- 0.05494653806090355,
- 0.0034586030524224043,
- 0.7153855562210083,
- 0.04389362782239914,
- 0.869132936000824,
- 0.04028744250535965,
- 0.21026825904846191,
- 0.04203145205974579,
- 0.02203426882624626,
- 0.5411697030067444,
- 0.2796400785446167,
- 0.5878635048866272,
- 0.25666558742523193,
- 0.0901883915066719,
- 0.015911730006337166,
- 0.023744819685816765,
- 0.21005792915821075,
- 0.30134889483451843,
- 0.2883978486061096,
- 0.27659088373184204,
- 0.09458412230014801,
- 0.3785804808139801,
- 0.02382970042526722,
- 0.5037901997566223,
- 0.0238824300467968,
- 1.0520728826522827,
- 0.05837669596076012,
- 0.3046796917915344,
- 0.2895958125591278,
- 0.15181563794612885,
- 0.3435823321342468,
- 0.15215156972408295,
- 0.7628997564315796,
- 0.37190964818000793,
- 0.13068340718746185,
- 0.1096314787864685,
- 0.16360129415988922,
- 0.16581982374191284,
- 0.16396330296993256,
- 0.3246387541294098,
- 0.400781512260437,
- 0.13705284893512726,
- 0.09383610635995865,
- 0.00590650225058198,
- 0.9360047578811646,
- 0.05697628855705261,
- 0.9210482239723206,
- 0.03925730288028717,
- 0.20489174127578735,
- 0.07178010046482086,
- 0.03762948885560036,
- 0.7056396007537842,
- 0.36298784613609314,
- 0.6046316623687744,
- 0.2501027286052704,
- 0.08788229525089264,
- 0.027173593640327454,
- 0.04055071249604225,
- 0.27599334716796875,
- 0.3911670744419098,
- 0.3143731355667114,
- 0.26951852440834045,
- 0.09216563403606415
- ],
- "type": "float32"
- }
- },
- {
- "name": "convTranspose2d float32 4D input and filter tensors options.dilations",
- "inputs": {
- "input": {
- "shape": [1, 1, 3, 3],
- "data": [
- 0.3194596882329144,
- 0.9762163819788108,
- 0.41314086405782646,
- 0.4798294207950651,
- 0.7674162198689658,
- 0.9083173676123812,
- 0.620514237394759,
- 0.6580719790256742,
- 0.6553052148945859
- ],
- "type": "float32"
- },
- "filter": {
- "shape": [1, 1, 2, 2],
- "data": [
- 0.6835425651112257,
- 0.9641214608820772,
- 0.8272836859778003,
- 0.5771222965089409
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "dilations": [2, 2]
- },
- "expected": {
- "shape": [1, 1, 5, 5],
- "data": [
- 0.21836428344249725,
- 0.6672854423522949,
- 0.590397298336029,
- 0.9411911368370056,
- 0.39831796288490295,
- 0.3279838263988495,
- 0.5245616436004639,
- 1.0834873914718628,
- 0.7398824691772461,
- 0.8757283091545105,
- 0.6884316205978394,
- 1.2574280500411987,
- 1.5723320245742798,
- 1.1978574991226196,
- 0.8702266216278076,
- 0.39695504307746887,
- 0.6348709464073181,
- 1.0283564329147339,
- 0.44289299845695496,
- 0.5242102146148682,
- 0.5133413076400757,
- 0.5444121956825256,
- 0.9002358913421631,
- 0.37978801131248474,
- 0.3781912326812744
- ],
- "type": "float32"
- }
- },
- {
- "name": "convTranspose2d float32 4D input and filter tensors options.outputPadding",
- "inputs": {
- "input": {
- "shape": [1, 1, 3, 3],
- "data": [
- 0.05605664967552748,
- 0.7114230061939892,
- 0.6529743817798401,
- 0.3862290922141163,
- 0.38708372734474095,
- 0.9461629334832131,
- 0.0957319185290193,
- 0.9234652551205444,
- 0.6362779541136516
- ],
- "type": "float32"
- },
- "filter": {
- "shape": [1, 2, 3, 3],
- "data": [
- 0.861442276299335,
- 0.6267672619279181,
- 0.6366489967621862,
- 0.8382642064548715,
- 0.11884837321114183,
- 0.9921330460504791,
- 0.3285411258903119,
- 0.8742373539889388,
- 0.7205492498486465,
- 0.9801966684571415,
- 0.06169835353027997,
- 0.3220160786486479,
- 0.7498031716529909,
- 0.39307147694602995,
- 0.1381193362338462,
- 0.283850915413119,
- 0.4235861336377129,
- 0.14485120857485168
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "strides": [3, 2],
- "outputPadding": [1, 1]
- },
- "expected": {
- "shape": [1, 2, 10, 8],
- "data": [
- 0.04828956723213196,
- 0.03513447195291519,
- 0.6485382318496704,
- 0.4458966553211212,
- 1.015426516532898,
- 0.4092629551887512,
- 0.4157154858112335,
- 0,
- 0.0469902828335762,
- 0.0066622416488826275,
- 0.6519761085510254,
- 0.08455146849155426,
- 1.2531912326812744,
- 0.07760494202375412,
- 0.6478374600410461,
- 0,
- 0.018416915088891983,
- 0.04900681599974632,
- 0.27412328124046326,
- 0.6219525337219238,
- 0.7271442413330078,
- 0.5708546042442322,
- 0.4705001711845398,
- 0,
- 0.3327140808105469,
- 0.24207575619220734,
- 0.5793426632881165,
- 0.24261142313480377,
- 1.0615012645721436,
- 0.593023955821991,
- 0.6023737192153931,
- 0,
- 0.32376202940940857,
- 0.04590269923210144,
- 0.7076690793037415,
- 0.0460042729973793,
- 1.177173137664795,
- 0.11244992911815643,
- 0.9387195110321045,
- 0,
- 0.12689214944839478,
- 0.3376559019088745,
- 0.40547001361846924,
- 0.3384030759334564,
- 0.5897663235664368,
- 0.8271709680557251,
- 0.6817569732666016,
- 0,
- 0.08246752619743347,
- 0.06000163406133652,
- 0.8564596176147461,
- 0.5787978172302246,
- 1.1360399723052979,
- 0.39879822731018066,
- 0.4050857424736023,
- 0,
- 0.0802486464381218,
- 0.011377583257853985,
- 0.8690866827964783,
- 0.1097523421049118,
- 1.4495694637298584,
- 0.0756206065416336,
- 0.6312723755836487,
- 0,
- 0.03145187348127365,
- 0.08369242399930954,
- 0.37237587571144104,
- 0.8073278069496155,
- 0.8744456768035889,
- 0.556257963180542,
- 0.45846959948539734,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0.05494653806090355,
- 0.0034586030524224043,
- 0.7153855562210083,
- 0.04389362782239914,
- 0.869132936000824,
- 0.04028744250535965,
- 0.21026825904846191,
- 0,
- 0.04203145205974579,
- 0.02203426882624626,
- 0.5411697030067444,
- 0.2796400785446167,
- 0.5878635048866272,
- 0.25666558742523193,
- 0.0901883915066719,
- 0,
- 0.015911730006337166,
- 0.023744819685816765,
- 0.21005792915821075,
- 0.30134889483451843,
- 0.2883978486061096,
- 0.27659088373184204,
- 0.09458412230014801,
- 0,
- 0.3785804808139801,
- 0.02382970042526722,
- 0.5037901997566223,
- 0.0238824300467968,
- 1.0520728826522827,
- 0.05837669596076012,
- 0.3046796917915344,
- 0,
- 0.2895958125591278,
- 0.15181563794612885,
- 0.3435823321342468,
- 0.15215156972408295,
- 0.7628997564315796,
- 0.37190964818000793,
- 0.13068340718746185,
- 0,
- 0.1096314787864685,
- 0.16360129415988922,
- 0.16581982374191284,
- 0.16396330296993256,
- 0.3246387541294098,
- 0.400781512260437,
- 0.13705284893512726,
- 0,
- 0.09383610635995865,
- 0.00590650225058198,
- 0.9360047578811646,
- 0.05697628855705261,
- 0.9210482239723206,
- 0.03925730288028717,
- 0.20489174127578735,
- 0,
- 0.07178010046482086,
- 0.03762948885560036,
- 0.7056396007537842,
- 0.36298784613609314,
- 0.6046316623687744,
- 0.2501027286052704,
- 0.08788229525089264,
- 0,
- 0.027173593640327454,
- 0.04055071249604225,
- 0.27599334716796875,
- 0.3911670744419098,
- 0.3143731355667114,
- 0.26951852440834045,
- 0.09216563403606415,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- "type": "float32"
- }
- },
- {
- "name": "convTranspose2d float32 4D input and filter tensors options.outputSizes",
- "inputs": {
- "input": {
- "shape": [1, 1, 3, 3],
- "data": [
- 0.05605664967552748,
- 0.7114230061939892,
- 0.6529743817798401,
- 0.3862290922141163,
- 0.38708372734474095,
- 0.9461629334832131,
- 0.0957319185290193,
- 0.9234652551205444,
- 0.6362779541136516
- ],
- "type": "float32"
- },
- "filter": {
- "shape": [1, 2, 3, 3],
- "data": [
- 0.861442276299335,
- 0.6267672619279181,
- 0.6366489967621862,
- 0.8382642064548715,
- 0.11884837321114183,
- 0.9921330460504791,
- 0.3285411258903119,
- 0.8742373539889388,
- 0.7205492498486465,
- 0.9801966684571415,
- 0.06169835353027997,
- 0.3220160786486479,
- 0.7498031716529909,
- 0.39307147694602995,
- 0.1381193362338462,
- 0.283850915413119,
- 0.4235861336377129,
- 0.14485120857485168
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "strides": [3, 2],
- "outputSizes": [10, 8]
- },
- "expected": {
- "shape": [1, 2, 10, 8],
- "data": [
- 0.04828956723213196,
- 0.03513447195291519,
- 0.6485382318496704,
- 0.4458966553211212,
- 1.015426516532898,
- 0.4092629551887512,
- 0.4157154858112335,
- 0,
- 0.0469902828335762,
- 0.0066622416488826275,
- 0.6519761085510254,
- 0.08455146849155426,
- 1.2531912326812744,
- 0.07760494202375412,
- 0.6478374600410461,
- 0,
- 0.018416915088891983,
- 0.04900681599974632,
- 0.27412328124046326,
- 0.6219525337219238,
- 0.7271442413330078,
- 0.5708546042442322,
- 0.4705001711845398,
- 0,
- 0.3327140808105469,
- 0.24207575619220734,
- 0.5793426632881165,
- 0.24261142313480377,
- 1.0615012645721436,
- 0.593023955821991,
- 0.6023737192153931,
- 0,
- 0.32376202940940857,
- 0.04590269923210144,
- 0.7076690793037415,
- 0.0460042729973793,
- 1.177173137664795,
- 0.11244992911815643,
- 0.9387195110321045,
- 0,
- 0.12689214944839478,
- 0.3376559019088745,
- 0.40547001361846924,
- 0.3384030759334564,
- 0.5897663235664368,
- 0.8271709680557251,
- 0.6817569732666016,
- 0,
- 0.08246752619743347,
- 0.06000163406133652,
- 0.8564596176147461,
- 0.5787978172302246,
- 1.1360399723052979,
- 0.39879822731018066,
- 0.4050857424736023,
- 0,
- 0.0802486464381218,
- 0.011377583257853985,
- 0.8690866827964783,
- 0.1097523421049118,
- 1.4495694637298584,
- 0.0756206065416336,
- 0.6312723755836487,
- 0,
- 0.03145187348127365,
- 0.08369242399930954,
- 0.37237587571144104,
- 0.8073278069496155,
- 0.8744456768035889,
- 0.556257963180542,
- 0.45846959948539734,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0.05494653806090355,
- 0.0034586030524224043,
- 0.7153855562210083,
- 0.04389362782239914,
- 0.869132936000824,
- 0.04028744250535965,
- 0.21026825904846191,
- 0,
- 0.04203145205974579,
- 0.02203426882624626,
- 0.5411697030067444,
- 0.2796400785446167,
- 0.5878635048866272,
- 0.25666558742523193,
- 0.0901883915066719,
- 0,
- 0.015911730006337166,
- 0.023744819685816765,
- 0.21005792915821075,
- 0.30134889483451843,
- 0.2883978486061096,
- 0.27659088373184204,
- 0.09458412230014801,
- 0,
- 0.3785804808139801,
- 0.02382970042526722,
- 0.5037901997566223,
- 0.0238824300467968,
- 1.0520728826522827,
- 0.05837669596076012,
- 0.3046796917915344,
- 0,
- 0.2895958125591278,
- 0.15181563794612885,
- 0.3435823321342468,
- 0.15215156972408295,
- 0.7628997564315796,
- 0.37190964818000793,
- 0.13068340718746185,
- 0,
- 0.1096314787864685,
- 0.16360129415988922,
- 0.16581982374191284,
- 0.16396330296993256,
- 0.3246387541294098,
- 0.400781512260437,
- 0.13705284893512726,
- 0,
- 0.09383610635995865,
- 0.00590650225058198,
- 0.9360047578811646,
- 0.05697628855705261,
- 0.9210482239723206,
- 0.03925730288028717,
- 0.20489174127578735,
- 0,
- 0.07178010046482086,
- 0.03762948885560036,
- 0.7056396007537842,
- 0.36298784613609314,
- 0.6046316623687744,
- 0.2501027286052704,
- 0.08788229525089264,
- 0,
- 0.027173593640327454,
- 0.04055071249604225,
- 0.27599334716796875,
- 0.3911670744419098,
- 0.3143731355667114,
- 0.26951852440834045,
- 0.09216563403606415,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- "type": "float32"
- }
- },
- {
- "name": "convTranspose2d float32 4D input and filter tensors options.inputLayout=nchw",
- "inputs": {
- "input": {
- "shape": [1, 1, 3, 3],
- "data": [
- 0.05605664967552748,
- 0.7114230061939892,
- 0.6529743817798401,
- 0.3862290922141163,
- 0.38708372734474095,
- 0.9461629334832131,
- 0.0957319185290193,
- 0.9234652551205444,
- 0.6362779541136516
- ],
- "type": "float32"
- },
- "filter": {
- "shape": [1, 2, 3, 3],
- "data": [
- 0.861442276299335,
- 0.6267672619279181,
- 0.6366489967621862,
- 0.8382642064548715,
- 0.11884837321114183,
- 0.9921330460504791,
- 0.3285411258903119,
- 0.8742373539889388,
- 0.7205492498486465,
- 0.9801966684571415,
- 0.06169835353027997,
- 0.3220160786486479,
- 0.7498031716529909,
- 0.39307147694602995,
- 0.1381193362338462,
- 0.283850915413119,
- 0.4235861336377129,
- 0.14485120857485168
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "inputLayout": "nchw"
- },
- "expected": {
- "shape": [1, 2, 5, 5],
- "data": [
- 0.04828956723213196,
- 0.6479843258857727,
- 1.0440847873687744,
- 0.8621897101402283,
- 0.4157154858112335,
- 0.3797043561935425,
- 1.1785486936569214,
- 1.9911006689071655,
- 1.6228916645050049,
- 1.2502111196517944,
- 0.4246464669704437,
- 1.5086332559585571,
- 3.287064790725708,
- 2.5666797161102295,
- 1.8143054246902466,
- 0.20714078843593597,
- 1.2503143548965454,
- 1.6656538248062134,
- 2.097904920578003,
- 1.313029408454895,
- 0.03145187348127365,
- 0.38708874583244324,
- 1.0853508710861206,
- 1.2216601371765137,
- 0.45846959948539734,
- 0.05494653806090355,
- 0.7007930278778076,
- 0.7019880414009094,
- 0.26937708258628845,
- 0.21026825904846191,
- 0.4206119179725647,
- 0.9587093591690063,
- 1.8526650667190552,
- 0.5379507541656494,
- 0.39486807584762573,
- 0.3993436396121979,
- 1.5788191556930542,
- 2.121230363845825,
- 1.141642689704895,
- 0.4301592707633972,
- 0.18141157925128937,
- 1.0035220384597778,
- 1.3417718410491943,
- 0.8345021605491638,
- 0.2249351441860199,
- 0.027173593640327454,
- 0.3026771545410156,
- 0.5856420397758484,
- 0.40328359603881836,
- 0.09216563403606415
- ],
- "type": "float32"
- }
- },
- {
- "name": "convTranspose2d float32 4D input and filter tensors options.inputLayout=nhwc",
- "inputs": {
- "input": {
- "shape": [1, 3, 3, 1],
- "data": [
- 0.05605664967552748,
- 0.7114230061939892,
- 0.6529743817798401,
- 0.3862290922141163,
- 0.38708372734474095,
- 0.9461629334832131,
- 0.0957319185290193,
- 0.9234652551205444,
- 0.6362779541136516
- ],
- "type": "float32"
- },
- "filter": {
- "shape": [1, 2, 3, 3],
- "data": [
- 0.861442276299335,
- 0.6267672619279181,
- 0.6366489967621862,
- 0.8382642064548715,
- 0.11884837321114183,
- 0.9921330460504791,
- 0.3285411258903119,
- 0.8742373539889388,
- 0.7205492498486465,
- 0.9801966684571415,
- 0.06169835353027997,
- 0.3220160786486479,
- 0.7498031716529909,
- 0.39307147694602995,
- 0.1381193362338462,
- 0.283850915413119,
- 0.4235861336377129,
- 0.14485120857485168
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "inputLayout": "nhwc"
- },
- "expected": {
- "shape": [1, 5, 5, 2],
- "data": [
- 0.04828956723213196,
- 0.05494653806090355,
- 0.6479843258857727,
- 0.7007930278778076,
- 1.0440847873687744,
- 0.7019880414009094,
- 0.8621897101402283,
- 0.26937708258628845,
- 0.4157154858112335,
- 0.21026825904846191,
- 0.3797043561935425,
- 0.4206119179725647,
- 1.1785486936569214,
- 0.9587093591690063,
- 1.9911006689071655,
- 1.8526650667190552,
- 1.6228916645050049,
- 0.5379507541656494,
- 1.2502111196517944,
- 0.39486807584762573,
- 0.4246464669704437,
- 0.3993436396121979,
- 1.5086332559585571,
- 1.5788191556930542,
- 3.287064790725708,
- 2.121230363845825,
- 2.5666797161102295,
- 1.141642689704895,
- 1.8143054246902466,
- 0.4301592707633972,
- 0.20714078843593597,
- 0.18141157925128937,
- 1.2503143548965454,
- 1.0035220384597778,
- 1.6656538248062134,
- 1.3417718410491943,
- 2.097904920578003,
- 0.8345021605491638,
- 1.313029408454895,
- 0.2249351441860199,
- 0.03145187348127365,
- 0.027173593640327454,
- 0.38708874583244324,
- 0.3026771545410156,
- 1.0853508710861206,
- 0.5856420397758484,
- 1.2216601371765137,
- 0.40328359603881836,
- 0.45846959948539734,
- 0.09216563403606415
- ],
- "type": "float32"
- }
- },
- {
- "name": "convTranspose2d float32 4D input and filter tensors options.filterLayout=iohw",
- "inputs": {
- "input": {
- "shape": [1, 1, 3, 3],
- "data": [
- 0.05605664967552748,
- 0.7114230061939892,
- 0.6529743817798401,
- 0.3862290922141163,
- 0.38708372734474095,
- 0.9461629334832131,
- 0.0957319185290193,
- 0.9234652551205444,
- 0.6362779541136516
- ],
- "type": "float32"
- },
- "filter": {
- "shape": [1, 2, 3, 3],
- "data": [
- 0.861442276299335,
- 0.6267672619279181,
- 0.6366489967621862,
- 0.8382642064548715,
- 0.11884837321114183,
- 0.9921330460504791,
- 0.3285411258903119,
- 0.8742373539889388,
- 0.7205492498486465,
- 0.9801966684571415,
- 0.06169835353027997,
- 0.3220160786486479,
- 0.7498031716529909,
- 0.39307147694602995,
- 0.1381193362338462,
- 0.283850915413119,
- 0.4235861336377129,
- 0.14485120857485168
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "filterLayout": "iohw"
- },
- "expected": {
- "shape": [1, 2, 5, 5],
- "data": [
- 0.04828956723213196,
- 0.6479843258857727,
- 1.0440847873687744,
- 0.8621897101402283,
- 0.4157154858112335,
- 0.3797043561935425,
- 1.1785486936569214,
- 1.9911006689071655,
- 1.6228916645050049,
- 1.2502111196517944,
- 0.4246464669704437,
- 1.5086332559585571,
- 3.287064790725708,
- 2.5666797161102295,
- 1.8143054246902466,
- 0.20714078843593597,
- 1.2503143548965454,
- 1.6656538248062134,
- 2.097904920578003,
- 1.313029408454895,
- 0.03145187348127365,
- 0.38708874583244324,
- 1.0853508710861206,
- 1.2216601371765137,
- 0.45846959948539734,
- 0.05494653806090355,
- 0.7007930278778076,
- 0.7019880414009094,
- 0.26937708258628845,
- 0.21026825904846191,
- 0.4206119179725647,
- 0.9587093591690063,
- 1.8526650667190552,
- 0.5379507541656494,
- 0.39486807584762573,
- 0.3993436396121979,
- 1.5788191556930542,
- 2.121230363845825,
- 1.141642689704895,
- 0.4301592707633972,
- 0.18141157925128937,
- 1.0035220384597778,
- 1.3417718410491943,
- 0.8345021605491638,
- 0.2249351441860199,
- 0.027173593640327454,
- 0.3026771545410156,
- 0.5856420397758484,
- 0.40328359603881836,
- 0.09216563403606415
- ],
- "type": "float32"
- }
- },
- {
- "name": "convTranspose2d float32 4D input and filter tensors options.filterLayout=hwoi",
- "inputs": {
- "input": {
- "shape": [1, 1, 3, 3],
- "data": [
- 0.05605664967552748,
- 0.7114230061939892,
- 0.6529743817798401,
- 0.3862290922141163,
- 0.38708372734474095,
- 0.9461629334832131,
- 0.0957319185290193,
- 0.9234652551205444,
- 0.6362779541136516
- ],
- "type": "float32"
- },
- "filter": {
- "shape": [3, 3, 2, 1],
- "data": [
- 0.861442276299335,
- 0.9801966684571415,
- 0.6267672619279181,
- 0.06169835353027997,
- 0.6366489967621862,
- 0.3220160786486479,
- 0.8382642064548715,
- 0.7498031716529909,
- 0.11884837321114183,
- 0.39307147694602995,
- 0.9921330460504791,
- 0.1381193362338462,
- 0.3285411258903119,
- 0.283850915413119,
- 0.8742373539889388,
- 0.4235861336377129,
- 0.7205492498486465,
- 0.14485120857485168
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "filterLayout": "hwoi"
- },
- "expected": {
- "shape": [1, 2, 5, 5],
- "data": [
- 0.04828956723213196,
- 0.6479843258857727,
- 1.0440847873687744,
- 0.8621897101402283,
- 0.4157154858112335,
- 0.3797043561935425,
- 1.1785486936569214,
- 1.9911006689071655,
- 1.6228916645050049,
- 1.2502111196517944,
- 0.4246464669704437,
- 1.5086332559585571,
- 3.287064790725708,
- 2.5666797161102295,
- 1.8143054246902466,
- 0.20714078843593597,
- 1.2503143548965454,
- 1.6656538248062134,
- 2.097904920578003,
- 1.313029408454895,
- 0.03145187348127365,
- 0.38708874583244324,
- 1.0853508710861206,
- 1.2216601371765137,
- 0.45846959948539734,
- 0.05494653806090355,
- 0.7007930278778076,
- 0.7019880414009094,
- 0.26937708258628845,
- 0.21026825904846191,
- 0.4206119179725647,
- 0.9587093591690063,
- 1.8526650667190552,
- 0.5379507541656494,
- 0.39486807584762573,
- 0.3993436396121979,
- 1.5788191556930542,
- 2.121230363845825,
- 1.141642689704895,
- 0.4301592707633972,
- 0.18141157925128937,
- 1.0035220384597778,
- 1.3417718410491943,
- 0.8345021605491638,
- 0.2249351441860199,
- 0.027173593640327454,
- 0.3026771545410156,
- 0.5856420397758484,
- 0.40328359603881836,
- 0.09216563403606415
- ],
- "type": "float32"
- }
- },
- {
- "name": "convTranspose2d float32 4D input and filter tensors options.filterLayout=ohwi",
- "inputs": {
- "input": {
- "shape": [1, 1, 3, 3],
- "data": [
- 0.05605664967552748,
- 0.7114230061939892,
- 0.6529743817798401,
- 0.3862290922141163,
- 0.38708372734474095,
- 0.9461629334832131,
- 0.0957319185290193,
- 0.9234652551205444,
- 0.6362779541136516
- ],
- "type": "float32"
- },
- "filter": {
- "shape": [2, 3, 3, 1],
- "data": [
- 0.861442276299335,
- 0.6267672619279181,
- 0.6366489967621862,
- 0.8382642064548715,
- 0.11884837321114183,
- 0.9921330460504791,
- 0.3285411258903119,
- 0.8742373539889388,
- 0.7205492498486465,
- 0.9801966684571415,
- 0.06169835353027997,
- 0.3220160786486479,
- 0.7498031716529909,
- 0.39307147694602995,
- 0.1381193362338462,
- 0.283850915413119,
- 0.4235861336377129,
- 0.14485120857485168
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "filterLayout": "ohwi"
- },
- "expected": {
- "shape": [1, 2, 5, 5],
- "data": [
- 0.04828956723213196,
- 0.6479843258857727,
- 1.0440847873687744,
- 0.8621897101402283,
- 0.4157154858112335,
- 0.3797043561935425,
- 1.1785486936569214,
- 1.9911006689071655,
- 1.6228916645050049,
- 1.2502111196517944,
- 0.4246464669704437,
- 1.5086332559585571,
- 3.287064790725708,
- 2.5666797161102295,
- 1.8143054246902466,
- 0.20714078843593597,
- 1.2503143548965454,
- 1.6656538248062134,
- 2.097904920578003,
- 1.313029408454895,
- 0.03145187348127365,
- 0.38708874583244324,
- 1.0853508710861206,
- 1.2216601371765137,
- 0.45846959948539734,
- 0.05494653806090355,
- 0.7007930278778076,
- 0.7019880414009094,
- 0.26937708258628845,
- 0.21026825904846191,
- 0.4206119179725647,
- 0.9587093591690063,
- 1.8526650667190552,
- 0.5379507541656494,
- 0.39486807584762573,
- 0.3993436396121979,
- 1.5788191556930542,
- 2.121230363845825,
- 1.141642689704895,
- 0.4301592707633972,
- 0.18141157925128937,
- 1.0035220384597778,
- 1.3417718410491943,
- 0.8345021605491638,
- 0.2249351441860199,
- 0.027173593640327454,
- 0.3026771545410156,
- 0.5856420397758484,
- 0.40328359603881836,
- 0.09216563403606415
- ],
- "type": "float32"
- }
- },
- {
- "name": "convTranspose2d float32 4D input and filter tensors options.inputLayout=nhwc options.filterLayout=iohw",
- "inputs": {
- "input": {
- "shape": [1, 3, 3, 1],
- "data": [
- 0.05605664967552748,
- 0.7114230061939892,
- 0.6529743817798401,
- 0.3862290922141163,
- 0.38708372734474095,
- 0.9461629334832131,
- 0.0957319185290193,
- 0.9234652551205444,
- 0.6362779541136516
- ],
- "type": "float32"
- },
- "filter": {
- "shape": [1, 2, 3, 3],
- "data": [
- 0.861442276299335,
- 0.6267672619279181,
- 0.6366489967621862,
- 0.8382642064548715,
- 0.11884837321114183,
- 0.9921330460504791,
- 0.3285411258903119,
- 0.8742373539889388,
- 0.7205492498486465,
- 0.9801966684571415,
- 0.06169835353027997,
- 0.3220160786486479,
- 0.7498031716529909,
- 0.39307147694602995,
- 0.1381193362338462,
- 0.283850915413119,
- 0.4235861336377129,
- 0.14485120857485168
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "inputLayout": "nhwc",
- "filterLayout": "iohw"
- },
- "expected": {
- "shape": [1, 5, 5, 2],
- "data": [
- 0.04828956723213196,
- 0.05494653806090355,
- 0.6479843258857727,
- 0.7007930278778076,
- 1.0440847873687744,
- 0.7019880414009094,
- 0.8621897101402283,
- 0.26937708258628845,
- 0.4157154858112335,
- 0.21026825904846191,
- 0.3797043561935425,
- 0.4206119179725647,
- 1.1785486936569214,
- 0.9587093591690063,
- 1.9911006689071655,
- 1.8526650667190552,
- 1.6228916645050049,
- 0.5379507541656494,
- 1.2502111196517944,
- 0.39486807584762573,
- 0.4246464669704437,
- 0.3993436396121979,
- 1.5086332559585571,
- 1.5788191556930542,
- 3.287064790725708,
- 2.121230363845825,
- 2.5666797161102295,
- 1.141642689704895,
- 1.8143054246902466,
- 0.4301592707633972,
- 0.20714078843593597,
- 0.18141157925128937,
- 1.2503143548965454,
- 1.0035220384597778,
- 1.6656538248062134,
- 1.3417718410491943,
- 2.097904920578003,
- 0.8345021605491638,
- 1.313029408454895,
- 0.2249351441860199,
- 0.03145187348127365,
- 0.027173593640327454,
- 0.38708874583244324,
- 0.3026771545410156,
- 1.0853508710861206,
- 0.5856420397758484,
- 1.2216601371765137,
- 0.40328359603881836,
- 0.45846959948539734,
- 0.09216563403606415
- ],
- "type": "float32"
- }
- },
- {
- "name": "convTranspose2d float32 4D input and filter tensors options.inputLayout=nhwc options.filterLayout=hwoi",
- "inputs": {
- "input": {
- "shape": [1, 3, 3, 1],
- "data": [
- 0.05605664967552748,
- 0.7114230061939892,
- 0.6529743817798401,
- 0.3862290922141163,
- 0.38708372734474095,
- 0.9461629334832131,
- 0.0957319185290193,
- 0.9234652551205444,
- 0.6362779541136516
- ],
- "type": "float32"
- },
- "filter": {
- "shape": [3, 3, 2, 1],
- "data": [
- 0.861442276299335,
- 0.9801966684571415,
- 0.6267672619279181,
- 0.06169835353027997,
- 0.6366489967621862,
- 0.3220160786486479,
- 0.8382642064548715,
- 0.7498031716529909,
- 0.11884837321114183,
- 0.39307147694602995,
- 0.9921330460504791,
- 0.1381193362338462,
- 0.3285411258903119,
- 0.283850915413119,
- 0.8742373539889388,
- 0.4235861336377129,
- 0.7205492498486465,
- 0.14485120857485168
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "inputLayout": "nhwc",
- "filterLayout": "hwoi"
- },
- "expected": {
- "shape": [1, 5, 5, 2],
- "data": [
- 0.04828956723213196,
- 0.05494653806090355,
- 0.6479843258857727,
- 0.7007930278778076,
- 1.0440847873687744,
- 0.7019880414009094,
- 0.8621897101402283,
- 0.26937708258628845,
- 0.4157154858112335,
- 0.21026825904846191,
- 0.3797043561935425,
- 0.4206119179725647,
- 1.1785486936569214,
- 0.9587093591690063,
- 1.9911006689071655,
- 1.8526650667190552,
- 1.6228916645050049,
- 0.5379507541656494,
- 1.2502111196517944,
- 0.39486807584762573,
- 0.4246464669704437,
- 0.3993436396121979,
- 1.5086332559585571,
- 1.5788191556930542,
- 3.287064790725708,
- 2.121230363845825,
- 2.5666797161102295,
- 1.141642689704895,
- 1.8143054246902466,
- 0.4301592707633972,
- 0.20714078843593597,
- 0.18141157925128937,
- 1.2503143548965454,
- 1.0035220384597778,
- 1.6656538248062134,
- 1.3417718410491943,
- 2.097904920578003,
- 0.8345021605491638,
- 1.313029408454895,
- 0.2249351441860199,
- 0.03145187348127365,
- 0.027173593640327454,
- 0.38708874583244324,
- 0.3026771545410156,
- 1.0853508710861206,
- 0.5856420397758484,
- 1.2216601371765137,
- 0.40328359603881836,
- 0.45846959948539734,
- 0.09216563403606415
- ],
- "type": "float32"
- }
- },
- {
- "name": "convTranspose2d float32 4D input and filter tensors options.inputLayout=nhwc options.filterLayout=ohwi",
- "inputs": {
- "input": {
- "shape": [1, 3, 3, 1],
- "data": [
- 0.05605664967552748,
- 0.7114230061939892,
- 0.6529743817798401,
- 0.3862290922141163,
- 0.38708372734474095,
- 0.9461629334832131,
- 0.0957319185290193,
- 0.9234652551205444,
- 0.6362779541136516
- ],
- "type": "float32"
- },
- "filter": {
- "shape": [2, 3, 3, 1],
- "data": [
- 0.861442276299335,
- 0.6267672619279181,
- 0.6366489967621862,
- 0.8382642064548715,
- 0.11884837321114183,
- 0.9921330460504791,
- 0.3285411258903119,
- 0.8742373539889388,
- 0.7205492498486465,
- 0.9801966684571415,
- 0.06169835353027997,
- 0.3220160786486479,
- 0.7498031716529909,
- 0.39307147694602995,
- 0.1381193362338462,
- 0.283850915413119,
- 0.4235861336377129,
- 0.14485120857485168
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "inputLayout": "nhwc",
- "filterLayout": "ohwi"
- },
- "expected": {
- "shape": [1, 5, 5, 2],
- "data": [
- 0.04828956723213196,
- 0.05494653806090355,
- 0.6479843258857727,
- 0.7007930278778076,
- 1.0440847873687744,
- 0.7019880414009094,
- 0.8621897101402283,
- 0.26937708258628845,
- 0.4157154858112335,
- 0.21026825904846191,
- 0.3797043561935425,
- 0.4206119179725647,
- 1.1785486936569214,
- 0.9587093591690063,
- 1.9911006689071655,
- 1.8526650667190552,
- 1.6228916645050049,
- 0.5379507541656494,
- 1.2502111196517944,
- 0.39486807584762573,
- 0.4246464669704437,
- 0.3993436396121979,
- 1.5086332559585571,
- 1.5788191556930542,
- 3.287064790725708,
- 2.121230363845825,
- 2.5666797161102295,
- 1.141642689704895,
- 1.8143054246902466,
- 0.4301592707633972,
- 0.20714078843593597,
- 0.18141157925128937,
- 1.2503143548965454,
- 1.0035220384597778,
- 1.6656538248062134,
- 1.3417718410491943,
- 2.097904920578003,
- 0.8345021605491638,
- 1.313029408454895,
- 0.2249351441860199,
- 0.03145187348127365,
- 0.027173593640327454,
- 0.38708874583244324,
- 0.3026771545410156,
- 1.0853508710861206,
- 0.5856420397758484,
- 1.2216601371765137,
- 0.40328359603881836,
- 0.45846959948539734,
- 0.09216563403606415
- ],
- "type": "float32"
- }
- },
- {
- "name": "convTranspose2d float32 4D input and filter tensors options.bias",
- "inputs": {
- "input": {
- "shape": [1, 1, 3, 3],
- "data": [
- 0.11095754619056808,
- 0.8681362056660518,
- 0.7342095941654914,
- 0.43077004493855875,
- 0.5981626867187566,
- 0.1232164990736122,
- 0.16109748910776922,
- 0.08840264384189989,
- 0.2910097194319563
- ],
- "type": "float32"
- },
- "filter": {
- "shape": [1, 1, 3, 3],
- "data": [
- 0.6161394585554596,
- 0.262246148184051,
- 0.7951397994036709,
- 0.87305609470791,
- 0.8309101763741125,
- 0.8549605393357718,
- 0.5552039743814143,
- 0.8400921243865438,
- 0.8530843869413023
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "bias": {
- "shape": [1],
- "data": [
- 0.4516736859570645
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "shape": [1, 1, 5, 5],
- "data": [
- 0.5200390219688416,
- 1.01566481590271,
- 1.2199413776397705,
- 1.3345069885253906,
- 1.0354729890823364,
- 0.8139602541923523,
- 1.7833205461502075,
- 2.484194278717041,
- 2.311894178390503,
- 1.1773682832717896,
- 0.9886226654052734,
- 2.0037572383880615,
- 2.9867470264434814,
- 2.5694668292999268,
- 1.41475510597229,
- 0.8314860463142395,
- 1.3567005395889282,
- 1.8553334474563599,
- 1.3828538656234741,
- 0.8055896162986755,
- 0.5411156415939331,
- 0.6360918879508972,
- 0.8249395489692688,
- 0.7715635895729065,
- 0.6999295353889465
- ],
- "type": "float32"
- }
- },
- {
- "name": "convTranspose2d float32 4D input and filter tensors, both negative input tensor and options.bias",
- "inputs": {
- "input": {
- "shape": [1, 1, 3, 3],
- "data": [
- -0.1088905666228781,
- -0.2980190376593821,
- -0.39077856560563506,
- -0.5624061411820445,
- -0.732209362325523,
- -0.8421320780728827,
- -0.3059865397862138,
- -0.9766599001467926,
- -0.014158561610918996
- ],
- "type": "float32"
- },
- "filter": {
- "shape": [1, 1, 3, 3],
- "data": [
- 0.6161394585554596,
- 0.262246148184051,
- 0.7951397994036709,
- 0.87305609470791,
- 0.8309101763741125,
- 0.8549605393357718,
- 0.5552039743814143,
- 0.8400921243865438,
- 0.8530843869413023
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "bias": {
- "shape": [1],
- "data": [
- -0.8457866242505638
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "shape": [1, 1, 5, 5],
- "data": [
- -0.9128783941268921,
- -1.0579640865325928,
- -1.2512983083724976,
- -1.1852335929870605,
- -1.1565102338790894,
- -1.2873748540878296,
- -1.7950842380523682,
- -2.6857638359069824,
- -2.2283377647399902,
- -1.8494995832443237,
- -1.5857856273651123,
- -2.8912975788116455,
- -3.738619565963745,
- -3.5343525409698486,
- -1.910401463508606,
- -1.425180196762085,
- -2.8317112922668457,
- -3.49372935295105,
- -3.0246617794036865,
- -1.5763013362884521,
- -1.0156716108322144,
- -1.645089030265808,
- -1.935164213180542,
- -1.6908544301986694,
- -0.8578650951385498
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/cos.json b/tests/wpt/tests/webnn/resources/test_data/cos.json
deleted file mode 100644
index db7ade11e38..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/cos.json
+++ /dev/null
@@ -1,401 +0,0 @@
-{
- "tests": [
- {
- "name": "cos float32 1D constant tensor",
- "inputs": {
- "x": {
- "shape": [24],
- "data": [
- 85.56368722678593,
- -45.09983640817779,
- -94.6775036804249,
- 83.49029219662862,
- -31.367904335227692,
- 70.1804254973957,
- -90.36229826898601,
- -83.00758001757269,
- 61.51649571682452,
- -32.51877900985289,
- -48.376587517032775,
- -58.02735967650854,
- 89.79197789644661,
- -84.53326629430444,
- -58.23252607768894,
- -76.14168597373077,
- -59.05887786348942,
- 77.38546821194151,
- -98.67289449592316,
- -63.611559926077675,
- 26.857246203003186,
- 83.70417131490925,
- 76.56606838780263,
- -47.83436545380422
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- -0.7380040884017944,
- 0.43789437413215637,
- 0.9090799689292908,
- -0.23584702610969543,
- 0.9988471865653992,
- 0.48416373133659363,
- -0.7358400821685791,
- 0.24218930304050446,
- 0.25266921520233154,
- 0.4510514736175537,
- -0.31276169419288635,
- 0.09197491407394409,
- -0.2537800967693329,
- -0.9583188891410828,
- -0.11282006651163101,
- 0.736129879951477,
- -0.80721116065979,
- -0.4045141637325287,
- -0.283336341381073,
- 0.7111190557479858,
- -0.1531042903661728,
- -0.43673399090766907,
- 0.39213326573371887,
- -0.7580515146255493
- ],
- "type": "float32"
- }
- },
- {
- "name": "cos float32 1D tensor",
- "inputs": {
- "x": {
- "shape": [24],
- "data": [
- 85.56368722678593,
- -45.09983640817779,
- -94.6775036804249,
- 83.49029219662862,
- -31.367904335227692,
- 70.1804254973957,
- -90.36229826898601,
- -83.00758001757269,
- 61.51649571682452,
- -32.51877900985289,
- -48.376587517032775,
- -58.02735967650854,
- 89.79197789644661,
- -84.53326629430444,
- -58.23252607768894,
- -76.14168597373077,
- -59.05887786348942,
- 77.38546821194151,
- -98.67289449592316,
- -63.611559926077675,
- 26.857246203003186,
- 83.70417131490925,
- 76.56606838780263,
- -47.83436545380422
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- -0.7380040884017944,
- 0.43789437413215637,
- 0.9090799689292908,
- -0.23584702610969543,
- 0.9988471865653992,
- 0.48416373133659363,
- -0.7358400821685791,
- 0.24218930304050446,
- 0.25266921520233154,
- 0.4510514736175537,
- -0.31276169419288635,
- 0.09197491407394409,
- -0.2537800967693329,
- -0.9583188891410828,
- -0.11282006651163101,
- 0.736129879951477,
- -0.80721116065979,
- -0.4045141637325287,
- -0.283336341381073,
- 0.7111190557479858,
- -0.1531042903661728,
- -0.43673399090766907,
- 0.39213326573371887,
- -0.7580515146255493
- ],
- "type": "float32"
- }
- },
- {
- "name": "cos float32 2D tensor",
- "inputs": {
- "x": {
- "shape": [4, 6],
- "data": [
- 85.56368722678593,
- -45.09983640817779,
- -94.6775036804249,
- 83.49029219662862,
- -31.367904335227692,
- 70.1804254973957,
- -90.36229826898601,
- -83.00758001757269,
- 61.51649571682452,
- -32.51877900985289,
- -48.376587517032775,
- -58.02735967650854,
- 89.79197789644661,
- -84.53326629430444,
- -58.23252607768894,
- -76.14168597373077,
- -59.05887786348942,
- 77.38546821194151,
- -98.67289449592316,
- -63.611559926077675,
- 26.857246203003186,
- 83.70417131490925,
- 76.56606838780263,
- -47.83436545380422
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- -0.7380040884017944,
- 0.43789437413215637,
- 0.9090799689292908,
- -0.23584702610969543,
- 0.9988471865653992,
- 0.48416373133659363,
- -0.7358400821685791,
- 0.24218930304050446,
- 0.25266921520233154,
- 0.4510514736175537,
- -0.31276169419288635,
- 0.09197491407394409,
- -0.2537800967693329,
- -0.9583188891410828,
- -0.11282006651163101,
- 0.736129879951477,
- -0.80721116065979,
- -0.4045141637325287,
- -0.283336341381073,
- 0.7111190557479858,
- -0.1531042903661728,
- -0.43673399090766907,
- 0.39213326573371887,
- -0.7580515146255493
- ],
- "type": "float32"
- }
- },
- {
- "name": "cos float32 3D tensor",
- "inputs": {
- "x": {
- "shape": [2, 3, 4],
- "data": [
- 85.56368722678593,
- -45.09983640817779,
- -94.6775036804249,
- 83.49029219662862,
- -31.367904335227692,
- 70.1804254973957,
- -90.36229826898601,
- -83.00758001757269,
- 61.51649571682452,
- -32.51877900985289,
- -48.376587517032775,
- -58.02735967650854,
- 89.79197789644661,
- -84.53326629430444,
- -58.23252607768894,
- -76.14168597373077,
- -59.05887786348942,
- 77.38546821194151,
- -98.67289449592316,
- -63.611559926077675,
- 26.857246203003186,
- 83.70417131490925,
- 76.56606838780263,
- -47.83436545380422
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 3, 4],
- "data": [
- -0.7380040884017944,
- 0.43789437413215637,
- 0.9090799689292908,
- -0.23584702610969543,
- 0.9988471865653992,
- 0.48416373133659363,
- -0.7358400821685791,
- 0.24218930304050446,
- 0.25266921520233154,
- 0.4510514736175537,
- -0.31276169419288635,
- 0.09197491407394409,
- -0.2537800967693329,
- -0.9583188891410828,
- -0.11282006651163101,
- 0.736129879951477,
- -0.80721116065979,
- -0.4045141637325287,
- -0.283336341381073,
- 0.7111190557479858,
- -0.1531042903661728,
- -0.43673399090766907,
- 0.39213326573371887,
- -0.7580515146255493
- ],
- "type": "float32"
- }
- },
- {
- "name": "cos float32 4D tensor",
- "inputs": {
- "x": {
- "shape": [2, 2, 2, 3],
- "data": [
- 85.56368722678593,
- -45.09983640817779,
- -94.6775036804249,
- 83.49029219662862,
- -31.367904335227692,
- 70.1804254973957,
- -90.36229826898601,
- -83.00758001757269,
- 61.51649571682452,
- -32.51877900985289,
- -48.376587517032775,
- -58.02735967650854,
- 89.79197789644661,
- -84.53326629430444,
- -58.23252607768894,
- -76.14168597373077,
- -59.05887786348942,
- 77.38546821194151,
- -98.67289449592316,
- -63.611559926077675,
- 26.857246203003186,
- 83.70417131490925,
- 76.56606838780263,
- -47.83436545380422
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- -0.7380040884017944,
- 0.43789437413215637,
- 0.9090799689292908,
- -0.23584702610969543,
- 0.9988471865653992,
- 0.48416373133659363,
- -0.7358400821685791,
- 0.24218930304050446,
- 0.25266921520233154,
- 0.4510514736175537,
- -0.31276169419288635,
- 0.09197491407394409,
- -0.2537800967693329,
- -0.9583188891410828,
- -0.11282006651163101,
- 0.736129879951477,
- -0.80721116065979,
- -0.4045141637325287,
- -0.283336341381073,
- 0.7111190557479858,
- -0.1531042903661728,
- -0.43673399090766907,
- 0.39213326573371887,
- -0.7580515146255493
- ],
- "type": "float32"
- }
- },
- {
- "name": "cos float32 5D tensor",
- "inputs": {
- "x": {
- "shape": [2, 1, 4, 1, 3],
- "data": [
- 85.56368722678593,
- -45.09983640817779,
- -94.6775036804249,
- 83.49029219662862,
- -31.367904335227692,
- 70.1804254973957,
- -90.36229826898601,
- -83.00758001757269,
- 61.51649571682452,
- -32.51877900985289,
- -48.376587517032775,
- -58.02735967650854,
- 89.79197789644661,
- -84.53326629430444,
- -58.23252607768894,
- -76.14168597373077,
- -59.05887786348942,
- 77.38546821194151,
- -98.67289449592316,
- -63.611559926077675,
- 26.857246203003186,
- 83.70417131490925,
- 76.56606838780263,
- -47.83436545380422
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 1, 4, 1, 3],
- "data": [
- -0.7380040884017944,
- 0.43789437413215637,
- 0.9090799689292908,
- -0.23584702610969543,
- 0.9988471865653992,
- 0.48416373133659363,
- -0.7358400821685791,
- 0.24218930304050446,
- 0.25266921520233154,
- 0.4510514736175537,
- -0.31276169419288635,
- 0.09197491407394409,
- -0.2537800967693329,
- -0.9583188891410828,
- -0.11282006651163101,
- 0.736129879951477,
- -0.80721116065979,
- -0.4045141637325287,
- -0.283336341381073,
- 0.7111190557479858,
- -0.1531042903661728,
- -0.43673399090766907,
- 0.39213326573371887,
- -0.7580515146255493
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/div.json b/tests/wpt/tests/webnn/resources/test_data/div.json
deleted file mode 100644
index a60341181d1..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/div.json
+++ /dev/null
@@ -1,882 +0,0 @@
-{
- "tests": [
- {
- "name": "div float32 1D constant tensors",
- "inputs": {
- "a": {
- "shape": [24],
- "data": [
- 60.42374184854583,
- -86.92247771592565,
- -19.496113538677307,
- -15.150616021872224,
- 13.455190756956796,
- 45.4335994568701,
- 61.08286131089616,
- 70.71882919883615,
- -31.27858011424047,
- 56.083543107783214,
- 38.99276571709217,
- -3.275369300234928,
- 32.289323532099786,
- -3.676541725498467,
- 88.4349140505588,
- 14.369060854798647,
- 13.94319409117783,
- 16.861190475721344,
- 4.816806540352701,
- 44.15916607007162,
- -13.083211898368276,
- 44.565997906464105,
- -34.892785072690245,
- -74.09375203216162
- ],
- "type": "float32",
- "constant": true
- },
- "b": {
- "shape": [24],
- "data": [
- -95.02903333542001,
- 62.804865007594174,
- -85.32865597192423,
- -68.20919717822437,
- 79.45568261298038,
- -68.69049322917093,
- -94.46466465496823,
- -10.000411029009541,
- 18.318865013229242,
- -3.623280011603569,
- -5.957828048196006,
- 89.49882849628409,
- 94.95791079054848,
- -79.00059056550418,
- -79.87597038424425,
- 74.997874802068,
- 25.86537368134097,
- 91.54433121797925,
- 81.65287344691947,
- 48.214831959279195,
- 63.37012091471408,
- 10.62638472655793,
- 46.12662564540156,
- 77.2232730204774
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- -0.6358450651168823,
- -1.3840086460113525,
- 0.22848258912563324,
- 0.22211983799934387,
- 0.16934208571910858,
- -0.6614248752593994,
- -0.6466212868690491,
- -7.071591854095459,
- -1.7074518203735352,
- -15.478666305541992,
- -6.544795513153076,
- -0.036596786230802536,
- 0.3400382697582245,
- 0.046538159251213074,
- -1.1071529388427734,
- 0.19159291684627533,
- 0.5390679836273193,
- 0.18418607115745544,
- 0.058991268277168274,
- 0.9158834218978882,
- -0.20645710825920105,
- 4.193900108337402,
- -0.7564564943313599,
- -0.9594743251800537
- ],
- "type": "float32"
- }
- },
- {
- "name": "div float32 1D tensors",
- "inputs": {
- "a": {
- "shape": [24],
- "data": [
- 60.42374184854583,
- -86.92247771592565,
- -19.496113538677307,
- -15.150616021872224,
- 13.455190756956796,
- 45.4335994568701,
- 61.08286131089616,
- 70.71882919883615,
- -31.27858011424047,
- 56.083543107783214,
- 38.99276571709217,
- -3.275369300234928,
- 32.289323532099786,
- -3.676541725498467,
- 88.4349140505588,
- 14.369060854798647,
- 13.94319409117783,
- 16.861190475721344,
- 4.816806540352701,
- 44.15916607007162,
- -13.083211898368276,
- 44.565997906464105,
- -34.892785072690245,
- -74.09375203216162
- ],
- "type": "float32"
- },
- "b": {
- "shape": [24],
- "data": [
- -95.02903333542001,
- 62.804865007594174,
- -85.32865597192423,
- -68.20919717822437,
- 79.45568261298038,
- -68.69049322917093,
- -94.46466465496823,
- -10.000411029009541,
- 18.318865013229242,
- -3.623280011603569,
- -5.957828048196006,
- 89.49882849628409,
- 94.95791079054848,
- -79.00059056550418,
- -79.87597038424425,
- 74.997874802068,
- 25.86537368134097,
- 91.54433121797925,
- 81.65287344691947,
- 48.214831959279195,
- 63.37012091471408,
- 10.62638472655793,
- 46.12662564540156,
- 77.2232730204774
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- -0.6358450651168823,
- -1.3840086460113525,
- 0.22848258912563324,
- 0.22211983799934387,
- 0.16934208571910858,
- -0.6614248752593994,
- -0.6466212868690491,
- -7.071591854095459,
- -1.7074518203735352,
- -15.478666305541992,
- -6.544795513153076,
- -0.036596786230802536,
- 0.3400382697582245,
- 0.046538159251213074,
- -1.1071529388427734,
- 0.19159291684627533,
- 0.5390679836273193,
- 0.18418607115745544,
- 0.058991268277168274,
- 0.9158834218978882,
- -0.20645710825920105,
- 4.193900108337402,
- -0.7564564943313599,
- -0.9594743251800537
- ],
- "type": "float32"
- }
- },
- {
- "name": "div float32 2D tensors",
- "inputs": {
- "a": {
- "shape": [4, 6],
- "data": [
- 60.42374184854583,
- -86.92247771592565,
- -19.496113538677307,
- -15.150616021872224,
- 13.455190756956796,
- 45.4335994568701,
- 61.08286131089616,
- 70.71882919883615,
- -31.27858011424047,
- 56.083543107783214,
- 38.99276571709217,
- -3.275369300234928,
- 32.289323532099786,
- -3.676541725498467,
- 88.4349140505588,
- 14.369060854798647,
- 13.94319409117783,
- 16.861190475721344,
- 4.816806540352701,
- 44.15916607007162,
- -13.083211898368276,
- 44.565997906464105,
- -34.892785072690245,
- -74.09375203216162
- ],
- "type": "float32"
- },
- "b": {
- "shape": [4, 6],
- "data": [
- -95.02903333542001,
- 62.804865007594174,
- -85.32865597192423,
- -68.20919717822437,
- 79.45568261298038,
- -68.69049322917093,
- -94.46466465496823,
- -10.000411029009541,
- 18.318865013229242,
- -3.623280011603569,
- -5.957828048196006,
- 89.49882849628409,
- 94.95791079054848,
- -79.00059056550418,
- -79.87597038424425,
- 74.997874802068,
- 25.86537368134097,
- 91.54433121797925,
- 81.65287344691947,
- 48.214831959279195,
- 63.37012091471408,
- 10.62638472655793,
- 46.12662564540156,
- 77.2232730204774
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- -0.6358450651168823,
- -1.3840086460113525,
- 0.22848258912563324,
- 0.22211983799934387,
- 0.16934208571910858,
- -0.6614248752593994,
- -0.6466212868690491,
- -7.071591854095459,
- -1.7074518203735352,
- -15.478666305541992,
- -6.544795513153076,
- -0.036596786230802536,
- 0.3400382697582245,
- 0.046538159251213074,
- -1.1071529388427734,
- 0.19159291684627533,
- 0.5390679836273193,
- 0.18418607115745544,
- 0.058991268277168274,
- 0.9158834218978882,
- -0.20645710825920105,
- 4.193900108337402,
- -0.7564564943313599,
- -0.9594743251800537
- ],
- "type": "float32"
- }
- },
- {
- "name": "div float32 3D tensors",
- "inputs": {
- "a": {
- "shape": [2, 3, 4],
- "data": [
- 60.42374184854583,
- -86.92247771592565,
- -19.496113538677307,
- -15.150616021872224,
- 13.455190756956796,
- 45.4335994568701,
- 61.08286131089616,
- 70.71882919883615,
- -31.27858011424047,
- 56.083543107783214,
- 38.99276571709217,
- -3.275369300234928,
- 32.289323532099786,
- -3.676541725498467,
- 88.4349140505588,
- 14.369060854798647,
- 13.94319409117783,
- 16.861190475721344,
- 4.816806540352701,
- 44.15916607007162,
- -13.083211898368276,
- 44.565997906464105,
- -34.892785072690245,
- -74.09375203216162
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 3, 4],
- "data": [
- -95.02903333542001,
- 62.804865007594174,
- -85.32865597192423,
- -68.20919717822437,
- 79.45568261298038,
- -68.69049322917093,
- -94.46466465496823,
- -10.000411029009541,
- 18.318865013229242,
- -3.623280011603569,
- -5.957828048196006,
- 89.49882849628409,
- 94.95791079054848,
- -79.00059056550418,
- -79.87597038424425,
- 74.997874802068,
- 25.86537368134097,
- 91.54433121797925,
- 81.65287344691947,
- 48.214831959279195,
- 63.37012091471408,
- 10.62638472655793,
- 46.12662564540156,
- 77.2232730204774
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 3, 4],
- "data": [
- -0.6358450651168823,
- -1.3840086460113525,
- 0.22848258912563324,
- 0.22211983799934387,
- 0.16934208571910858,
- -0.6614248752593994,
- -0.6466212868690491,
- -7.071591854095459,
- -1.7074518203735352,
- -15.478666305541992,
- -6.544795513153076,
- -0.036596786230802536,
- 0.3400382697582245,
- 0.046538159251213074,
- -1.1071529388427734,
- 0.19159291684627533,
- 0.5390679836273193,
- 0.18418607115745544,
- 0.058991268277168274,
- 0.9158834218978882,
- -0.20645710825920105,
- 4.193900108337402,
- -0.7564564943313599,
- -0.9594743251800537
- ],
- "type": "float32"
- }
- },
- {
- "name": "div float32 4D tensors",
- "inputs": {
- "a": {
- "shape": [2, 2, 2, 3],
- "data": [
- 60.42374184854583,
- -86.92247771592565,
- -19.496113538677307,
- -15.150616021872224,
- 13.455190756956796,
- 45.4335994568701,
- 61.08286131089616,
- 70.71882919883615,
- -31.27858011424047,
- 56.083543107783214,
- 38.99276571709217,
- -3.275369300234928,
- 32.289323532099786,
- -3.676541725498467,
- 88.4349140505588,
- 14.369060854798647,
- 13.94319409117783,
- 16.861190475721344,
- 4.816806540352701,
- 44.15916607007162,
- -13.083211898368276,
- 44.565997906464105,
- -34.892785072690245,
- -74.09375203216162
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 2, 3],
- "data": [
- -95.02903333542001,
- 62.804865007594174,
- -85.32865597192423,
- -68.20919717822437,
- 79.45568261298038,
- -68.69049322917093,
- -94.46466465496823,
- -10.000411029009541,
- 18.318865013229242,
- -3.623280011603569,
- -5.957828048196006,
- 89.49882849628409,
- 94.95791079054848,
- -79.00059056550418,
- -79.87597038424425,
- 74.997874802068,
- 25.86537368134097,
- 91.54433121797925,
- 81.65287344691947,
- 48.214831959279195,
- 63.37012091471408,
- 10.62638472655793,
- 46.12662564540156,
- 77.2232730204774
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- -0.6358450651168823,
- -1.3840086460113525,
- 0.22848258912563324,
- 0.22211983799934387,
- 0.16934208571910858,
- -0.6614248752593994,
- -0.6466212868690491,
- -7.071591854095459,
- -1.7074518203735352,
- -15.478666305541992,
- -6.544795513153076,
- -0.036596786230802536,
- 0.3400382697582245,
- 0.046538159251213074,
- -1.1071529388427734,
- 0.19159291684627533,
- 0.5390679836273193,
- 0.18418607115745544,
- 0.058991268277168274,
- 0.9158834218978882,
- -0.20645710825920105,
- 4.193900108337402,
- -0.7564564943313599,
- -0.9594743251800537
- ],
- "type": "float32"
- }
- },
- {
- "name": "div float32 5D tensors",
- "inputs": {
- "a": {
- "shape": [2, 2, 1, 2, 3],
- "data": [
- 60.42374184854583,
- -86.92247771592565,
- -19.496113538677307,
- -15.150616021872224,
- 13.455190756956796,
- 45.4335994568701,
- 61.08286131089616,
- 70.71882919883615,
- -31.27858011424047,
- 56.083543107783214,
- 38.99276571709217,
- -3.275369300234928,
- 32.289323532099786,
- -3.676541725498467,
- 88.4349140505588,
- 14.369060854798647,
- 13.94319409117783,
- 16.861190475721344,
- 4.816806540352701,
- 44.15916607007162,
- -13.083211898368276,
- 44.565997906464105,
- -34.892785072690245,
- -74.09375203216162
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 1, 2, 3],
- "data": [
- -95.02903333542001,
- 62.804865007594174,
- -85.32865597192423,
- -68.20919717822437,
- 79.45568261298038,
- -68.69049322917093,
- -94.46466465496823,
- -10.000411029009541,
- 18.318865013229242,
- -3.623280011603569,
- -5.957828048196006,
- 89.49882849628409,
- 94.95791079054848,
- -79.00059056550418,
- -79.87597038424425,
- 74.997874802068,
- 25.86537368134097,
- 91.54433121797925,
- 81.65287344691947,
- 48.214831959279195,
- 63.37012091471408,
- 10.62638472655793,
- 46.12662564540156,
- 77.2232730204774
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 1, 2, 3],
- "data": [
- -0.6358450651168823,
- -1.3840086460113525,
- 0.22848258912563324,
- 0.22211983799934387,
- 0.16934208571910858,
- -0.6614248752593994,
- -0.6466212868690491,
- -7.071591854095459,
- -1.7074518203735352,
- -15.478666305541992,
- -6.544795513153076,
- -0.036596786230802536,
- 0.3400382697582245,
- 0.046538159251213074,
- -1.1071529388427734,
- 0.19159291684627533,
- 0.5390679836273193,
- 0.18418607115745544,
- 0.058991268277168274,
- 0.9158834218978882,
- -0.20645710825920105,
- 4.193900108337402,
- -0.7564564943313599,
- -0.9594743251800537
- ],
- "type": "float32"
- }
- },
- {
- "name": "div float32 broadcast 1D to 4D",
- "inputs": {
- "a": {
- "shape": [1],
- "data": [
- -41.8274145895075
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 2, 3],
- "data": [
- 60.42374184854583,
- -86.92247771592565,
- -19.496113538677307,
- -15.150616021872224,
- 13.455190756956796,
- 45.4335994568701,
- 61.08286131089616,
- 70.71882919883615,
- -31.27858011424047,
- 56.083543107783214,
- 38.99276571709217,
- -3.275369300234928,
- 32.289323532099786,
- -3.676541725498467,
- 88.4349140505588,
- 14.369060854798647,
- 13.94319409117783,
- 16.861190475721344,
- 4.816806540352701,
- 44.15916607007162,
- -13.083211898368276,
- 44.565997906464105,
- -34.892785072690245,
- -74.09375203216162
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- -0.6922348141670227,
- 0.48120367527008057,
- 2.145423412322998,
- 2.7607734203338623,
- -3.10864520072937,
- -0.9206274151802063,
- -0.6847651600837708,
- -0.5914608240127563,
- 1.337254285812378,
- -0.7458055019378662,
- -1.0726968050003052,
- 12.770289421081543,
- -1.2953946590423584,
- 11.376836776733398,
- -0.4729740023612976,
- -2.910935878753662,
- -2.999844551086426,
- -2.48069167137146,
- -8.683640480041504,
- -0.9471967220306396,
- 3.1970295906066895,
- -0.9385499358177185,
- 1.19874107837677,
- 0.5645201802253723
- ],
- "type": "float32"
- }
- },
- {
- "name": "div float32 broadcast 2D to 4D",
- "inputs": {
- "a": {
- "shape": [2, 2, 2, 3],
- "data": [
- 60.42374184854583,
- -86.92247771592565,
- -19.496113538677307,
- -15.150616021872224,
- 13.455190756956796,
- 45.4335994568701,
- 61.08286131089616,
- 70.71882919883615,
- -31.27858011424047,
- 56.083543107783214,
- 38.99276571709217,
- -3.275369300234928,
- 32.289323532099786,
- -3.676541725498467,
- 88.4349140505588,
- 14.369060854798647,
- 13.94319409117783,
- 16.861190475721344,
- 4.816806540352701,
- 44.15916607007162,
- -13.083211898368276,
- 44.565997906464105,
- -34.892785072690245,
- -74.09375203216162
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 3],
- "data": [
- 97.32406923941622,
- 36.32521858437477,
- 26.03785877293791,
- 99.4716629828894,
- 10.39552272141377,
- -30.788942189398625
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 0.6208509802818298,
- -2.3928961753845215,
- -0.7487602233886719,
- -0.15231086313724518,
- 1.2943254709243774,
- -1.4756466150283813,
- 0.627623438835144,
- 1.946824550628662,
- -1.2012730836868286,
- 0.5638142228126526,
- 3.7509193420410156,
- 0.106381356716156,
- 0.33177119493484497,
- -0.10121183097362518,
- 3.396397352218628,
- 0.14445380866527557,
- 1.3412691354751587,
- -0.5476378798484802,
- 0.049492448568344116,
- 1.2156614065170288,
- -0.5024688243865967,
- 0.4480270743370056,
- -3.356520175933838,
- 2.4065051078796387
- ],
- "type": "float32"
- }
- },
- {
- "name": "div float32 broadcast 3D to 4D",
- "inputs": {
- "a": {
- "shape": [2, 2, 2, 3],
- "data": [
- 60.42374184854583,
- -86.92247771592565,
- -19.496113538677307,
- -15.150616021872224,
- 13.455190756956796,
- 45.4335994568701,
- 61.08286131089616,
- 70.71882919883615,
- -31.27858011424047,
- 56.083543107783214,
- 38.99276571709217,
- -3.275369300234928,
- 32.289323532099786,
- -3.676541725498467,
- 88.4349140505588,
- 14.369060854798647,
- 13.94319409117783,
- 16.861190475721344,
- 4.816806540352701,
- 44.15916607007162,
- -13.083211898368276,
- 44.565997906464105,
- -34.892785072690245,
- -74.09375203216162
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 1],
- "data": [
- 75.08295083033457,
- -46.22666869833023,
- 15.761880659498928,
- 8.922299330668352
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 0.8047597408294678,
- -1.1576858758926392,
- -0.2596609592437744,
- 0.3277462124824524,
- -0.2910698652267456,
- -0.9828438758850098,
- 3.8753535747528076,
- 4.48669958114624,
- -1.9844446182250977,
- 6.285772323608398,
- 4.370259761810303,
- -0.36709925532341003,
- 0.4300486445426941,
- -0.04896639660000801,
- 1.177829384803772,
- -0.3108392059803009,
- -0.30162662267684937,
- -0.36475029587745667,
- 0.3055984377861023,
- 2.801643133163452,
- -0.830053985118866,
- 4.994900703430176,
- -3.910738945007324,
- -8.304333686828613
- ],
- "type": "float32"
- }
- },
- {
- "name": "div float32 broadcast 4D to 4D",
- "inputs": {
- "a": {
- "shape": [1, 1, 1, 1],
- "data": [
- -41.8274145895075
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 2, 3],
- "data": [
- 60.42374184854583,
- -86.92247771592565,
- -19.496113538677307,
- -15.150616021872224,
- 13.455190756956796,
- 45.4335994568701,
- 61.08286131089616,
- 70.71882919883615,
- -31.27858011424047,
- 56.083543107783214,
- 38.99276571709217,
- -3.275369300234928,
- 32.289323532099786,
- -3.676541725498467,
- 88.4349140505588,
- 14.369060854798647,
- 13.94319409117783,
- 16.861190475721344,
- 4.816806540352701,
- 44.15916607007162,
- -13.083211898368276,
- 44.565997906464105,
- -34.892785072690245,
- -74.09375203216162
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- -0.6922348141670227,
- 0.48120367527008057,
- 2.145423412322998,
- 2.7607734203338623,
- -3.10864520072937,
- -0.9206274151802063,
- -0.6847651600837708,
- -0.5914608240127563,
- 1.337254285812378,
- -0.7458055019378662,
- -1.0726968050003052,
- 12.770289421081543,
- -1.2953946590423584,
- 11.376836776733398,
- -0.4729740023612976,
- -2.910935878753662,
- -2.999844551086426,
- -2.48069167137146,
- -8.683640480041504,
- -0.9471967220306396,
- 3.1970295906066895,
- -0.9385499358177185,
- 1.19874107837677,
- 0.5645201802253723
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/elu.json b/tests/wpt/tests/webnn/resources/test_data/elu.json
deleted file mode 100644
index b1c443282e4..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/elu.json
+++ /dev/null
@@ -1,539 +0,0 @@
-{ // elu: The calculation follows the expression max(0, x) + alpha * (exp(min(0, x)) - 1).
- "tests": [
- {
- "name": "elu float32 1D constant tensor default options", // default options: {alpha: 1}
- "inputs": {
- "x": {
- "shape": [24],
- "data": [
- 4.721739616402454,
- 0.37687805459885837,
- 1.4189998297338988,
- -3.866366516102673,
- 1.3590080831697868,
- -3.8641844556612392,
- 7.839725573639406,
- -6.690801377003339,
- 0.545640671378024,
- 5.776711453839759,
- 7.263273186498619,
- -7.419948093040434,
- 5.665064356187175,
- -6.712906923265587,
- -3.3348948531721945,
- -1.2103675328053143,
- 7.255546982014842,
- 8.903468527480992,
- -4.019860311974934,
- 7.114678383091487,
- -0.11212847159184136,
- -3.688840965850466,
- 6.135151096361078,
- -9.895182558358613
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- 4.721739768981934,
- 0.3768780529499054,
- 1.4189997911453247,
- -0.9790657162666321,
- 1.3590080738067627,
- -0.9790199995040894,
- 7.839725494384766,
- -0.9987577199935913,
- 0.5456406474113464,
- 5.776711463928223,
- 7.263273239135742,
- -0.999400794506073,
- 5.665064334869385,
- -0.9987848997116089,
- -0.9643816947937012,
- -0.7019122838973999,
- 7.255547046661377,
- 8.903468132019043,
- -0.982044517993927,
- 7.114678382873535,
- -0.10607059299945831,
- -0.9749990105628967,
- 6.135150909423828,
- -0.99994957447052
- ],
- "type": "float32"
- }
- },
- {
- "name": "elu float32 1D tensor default options", // default options: {alpha: 1}
- "inputs": {
- "x": {
- "shape": [24],
- "data": [
- 4.721739616402454,
- 0.37687805459885837,
- 1.4189998297338988,
- -3.866366516102673,
- 1.3590080831697868,
- -3.8641844556612392,
- 7.839725573639406,
- -6.690801377003339,
- 0.545640671378024,
- 5.776711453839759,
- 7.263273186498619,
- -7.419948093040434,
- 5.665064356187175,
- -6.712906923265587,
- -3.3348948531721945,
- -1.2103675328053143,
- 7.255546982014842,
- 8.903468527480992,
- -4.019860311974934,
- 7.114678383091487,
- -0.11212847159184136,
- -3.688840965850466,
- 6.135151096361078,
- -9.895182558358613
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- 4.721739768981934,
- 0.3768780529499054,
- 1.4189997911453247,
- -0.9790657162666321,
- 1.3590080738067627,
- -0.9790199995040894,
- 7.839725494384766,
- -0.9987577199935913,
- 0.5456406474113464,
- 5.776711463928223,
- 7.263273239135742,
- -0.999400794506073,
- 5.665064334869385,
- -0.9987848997116089,
- -0.9643816947937012,
- -0.7019122838973999,
- 7.255547046661377,
- 8.903468132019043,
- -0.982044517993927,
- 7.114678382873535,
- -0.10607059299945831,
- -0.9749990105628967,
- 6.135150909423828,
- -0.99994957447052
- ],
- "type": "float32"
- }
- },
- {
- "name": "elu float32 2D tensor default options",
- "inputs": {
- "x": {
- "shape": [4, 6],
- "data": [
- 4.721739616402454,
- 0.37687805459885837,
- 1.4189998297338988,
- -3.866366516102673,
- 1.3590080831697868,
- -3.8641844556612392,
- 7.839725573639406,
- -6.690801377003339,
- 0.545640671378024,
- 5.776711453839759,
- 7.263273186498619,
- -7.419948093040434,
- 5.665064356187175,
- -6.712906923265587,
- -3.3348948531721945,
- -1.2103675328053143,
- 7.255546982014842,
- 8.903468527480992,
- -4.019860311974934,
- 7.114678383091487,
- -0.11212847159184136,
- -3.688840965850466,
- 6.135151096361078,
- -9.895182558358613
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- 4.721739768981934,
- 0.3768780529499054,
- 1.4189997911453247,
- -0.9790657162666321,
- 1.3590080738067627,
- -0.9790199995040894,
- 7.839725494384766,
- -0.9987577199935913,
- 0.5456406474113464,
- 5.776711463928223,
- 7.263273239135742,
- -0.999400794506073,
- 5.665064334869385,
- -0.9987848997116089,
- -0.9643816947937012,
- -0.7019122838973999,
- 7.255547046661377,
- 8.903468132019043,
- -0.982044517993927,
- 7.114678382873535,
- -0.10607059299945831,
- -0.9749990105628967,
- 6.135150909423828,
- -0.99994957447052
- ],
- "type": "float32"
- }
- },
- {
- "name": "elu float32 3D tensor default options",
- "inputs": {
- "x": {
- "shape": [2, 3, 4],
- "data": [
- 4.721739616402454,
- 0.37687805459885837,
- 1.4189998297338988,
- -3.866366516102673,
- 1.3590080831697868,
- -3.8641844556612392,
- 7.839725573639406,
- -6.690801377003339,
- 0.545640671378024,
- 5.776711453839759,
- 7.263273186498619,
- -7.419948093040434,
- 5.665064356187175,
- -6.712906923265587,
- -3.3348948531721945,
- -1.2103675328053143,
- 7.255546982014842,
- 8.903468527480992,
- -4.019860311974934,
- 7.114678383091487,
- -0.11212847159184136,
- -3.688840965850466,
- 6.135151096361078,
- -9.895182558358613
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 3, 4],
- "data": [
- 4.721739768981934,
- 0.3768780529499054,
- 1.4189997911453247,
- -0.9790657162666321,
- 1.3590080738067627,
- -0.9790199995040894,
- 7.839725494384766,
- -0.9987577199935913,
- 0.5456406474113464,
- 5.776711463928223,
- 7.263273239135742,
- -0.999400794506073,
- 5.665064334869385,
- -0.9987848997116089,
- -0.9643816947937012,
- -0.7019122838973999,
- 7.255547046661377,
- 8.903468132019043,
- -0.982044517993927,
- 7.114678382873535,
- -0.10607059299945831,
- -0.9749990105628967,
- 6.135150909423828,
- -0.99994957447052
- ],
- "type": "float32"
- }
- },
- {
- "name": "elu float32 4D tensor default options",
- "inputs": {
- "x": {
- "shape": [1, 2, 3, 4],
- "data": [
- 4.721739616402454,
- 0.37687805459885837,
- 1.4189998297338988,
- -3.866366516102673,
- 1.3590080831697868,
- -3.8641844556612392,
- 7.839725573639406,
- -6.690801377003339,
- 0.545640671378024,
- 5.776711453839759,
- 7.263273186498619,
- -7.419948093040434,
- 5.665064356187175,
- -6.712906923265587,
- -3.3348948531721945,
- -1.2103675328053143,
- 7.255546982014842,
- 8.903468527480992,
- -4.019860311974934,
- 7.114678383091487,
- -0.11212847159184136,
- -3.688840965850466,
- 6.135151096361078,
- -9.895182558358613
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 3, 4],
- "data": [
- 4.721739768981934,
- 0.3768780529499054,
- 1.4189997911453247,
- -0.9790657162666321,
- 1.3590080738067627,
- -0.9790199995040894,
- 7.839725494384766,
- -0.9987577199935913,
- 0.5456406474113464,
- 5.776711463928223,
- 7.263273239135742,
- -0.999400794506073,
- 5.665064334869385,
- -0.9987848997116089,
- -0.9643816947937012,
- -0.7019122838973999,
- 7.255547046661377,
- 8.903468132019043,
- -0.982044517993927,
- 7.114678382873535,
- -0.10607059299945831,
- -0.9749990105628967,
- 6.135150909423828,
- -0.99994957447052
- ],
- "type": "float32"
- }
- },
- {
- "name": "elu float32 5D tensor default options",
- "inputs": {
- "x": {
- "shape": [1, 2, 1, 3, 4],
- "data": [
- 4.721739616402454,
- 0.37687805459885837,
- 1.4189998297338988,
- -3.866366516102673,
- 1.3590080831697868,
- -3.8641844556612392,
- 7.839725573639406,
- -6.690801377003339,
- 0.545640671378024,
- 5.776711453839759,
- 7.263273186498619,
- -7.419948093040434,
- 5.665064356187175,
- -6.712906923265587,
- -3.3348948531721945,
- -1.2103675328053143,
- 7.255546982014842,
- 8.903468527480992,
- -4.019860311974934,
- 7.114678383091487,
- -0.11212847159184136,
- -3.688840965850466,
- 6.135151096361078,
- -9.895182558358613
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 1, 3, 4],
- "data": [
- 4.721739768981934,
- 0.3768780529499054,
- 1.4189997911453247,
- -0.9790657162666321,
- 1.3590080738067627,
- -0.9790199995040894,
- 7.839725494384766,
- -0.9987577199935913,
- 0.5456406474113464,
- 5.776711463928223,
- 7.263273239135742,
- -0.999400794506073,
- 5.665064334869385,
- -0.9987848997116089,
- -0.9643816947937012,
- -0.7019122838973999,
- 7.255547046661377,
- 8.903468132019043,
- -0.982044517993927,
- 7.114678382873535,
- -0.10607059299945831,
- -0.9749990105628967,
- 6.135150909423828,
- -0.99994957447052
- ],
- "type": "float32"
- }
- },
- {
- "name": "elu float32 4D tensor positive options.alpha",
- "inputs": {
- "x": {
- "shape": [1, 2, 3, 4],
- "data": [
- 4.721739616402454,
- 0.37687805459885837,
- 1.4189998297338988,
- -3.866366516102673,
- 1.3590080831697868,
- -3.8641844556612392,
- 7.839725573639406,
- -6.690801377003339,
- 0.545640671378024,
- 5.776711453839759,
- 7.263273186498619,
- -7.419948093040434,
- 5.665064356187175,
- -6.712906923265587,
- -3.3348948531721945,
- -1.2103675328053143,
- 7.255546982014842,
- 8.903468527480992,
- -4.019860311974934,
- 7.114678383091487,
- -0.11212847159184136,
- -3.688840965850466,
- 6.135151096361078,
- -9.895182558358613
- ],
- "type": "float32"
- }
- },
- "options": {
- "alpha": 0.3607245505146506
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 3, 4],
- "data": [
- 4.721739768981934,
- 0.3768780529499054,
- 1.4189997911453247,
- -0.35317301750183105,
- 1.3590080738067627,
- -0.35315653681755066,
- 7.839725494384766,
- -0.36027640104293823,
- 0.5456406474113464,
- 5.776711463928223,
- 7.263273239135742,
- -0.36050841212272644,
- 5.665064334869385,
- -0.3602862060070038,
- -0.3478761315345764,
- -0.25319698452949524,
- 7.255547046661377,
- 8.903468132019043,
- -0.3542475700378418,
- 7.114678382873535,
- -0.0382622666656971,
- -0.3517060875892639,
- 6.135150909423828,
- -0.3607063591480255
- ],
- "type": "float32"
- }
- },
- {
- "name": "elu float32 4D tensor negative options.alpha",
- "inputs": {
- "x": {
- "shape": [1, 2, 3, 4],
- "data": [
- 4.721739616402454,
- 0.37687805459885837,
- 1.4189998297338988,
- -3.866366516102673,
- 1.3590080831697868,
- -3.8641844556612392,
- 7.839725573639406,
- -6.690801377003339,
- 0.545640671378024,
- 5.776711453839759,
- 7.263273186498619,
- -7.419948093040434,
- 5.665064356187175,
- -6.712906923265587,
- -3.3348948531721945,
- -1.2103675328053143,
- 7.255546982014842,
- 8.903468527480992,
- -4.019860311974934,
- 7.114678383091487,
- -0.11212847159184136,
- -3.688840965850466,
- 6.135151096361078,
- -9.895182558358613
- ],
- "type": "float32"
- }
- },
- "options": {
- "alpha": -3.468180406374035
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 3, 4],
- "data": [
- 4.721739768981934,
- 0.3768780529499054,
- 1.4189997911453247,
- 3.3955764770507812,
- 1.3590080738067627,
- 3.3954179286956787,
- 7.839725494384766,
- 3.463871955871582,
- 0.5456406474113464,
- 5.776711463928223,
- 7.263273239135742,
- 3.466102361679077,
- 5.665064334869385,
- 3.463966131210327,
- 3.34464955329895,
- 2.434358596801758,
- 7.255547046661377,
- 8.903468132019043,
- 3.40590763092041,
- 7.114678382873535,
- 0.3678719699382782,
- 3.381472587585449,
- 6.135150909423828,
- 3.468005657196045
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/equal.json b/tests/wpt/tests/webnn/resources/test_data/equal.json
deleted file mode 100644
index bbd9143a032..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/equal.json
+++ /dev/null
@@ -1,982 +0,0 @@
-{
- "tests": [
- {
- "name": "equal float32 0D scalar",
- "inputs": {
- "a": {
- "shape": [],
- "data": [
- -0.6285496901988363
- ],
- "type": "float32"
- },
- "b": {
- "shape": [],
- "data": [
- -4.416641209564136
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [],
- "data": [
- 0
- ],
- "type": "uint8"
- }
- },
- {
- "name": "equal float32 1D constant tensors",
- "inputs": {
- "a": {
- "shape": [24],
- "data": [
- 2.8057064434130865,
- 5.588105051769192,
- 2.8552264057573318,
- 4.996258886261531,
- 0.9727277518275201,
- -4.7425998673234115,
- 2.8057064434130865,
- 5.588105051769192,
- -5.107602083264831,
- 6.62414218944782,
- -2.320724650141428,
- -7.053896009779472,
- 2.8057064434130865,
- 5.588105051769192,
- 4.980423911313675,
- -5.440841218751173,
- 1.1459590058073985,
- 7.774532655736756,
- 2.8057064434130865,
- 5.588105051769192,
- -6.245251018074902,
- -2.849073058101119,
- -2.6951117252164236,
- 5.8175630540970715
- ],
- "type": "float32",
- "constant": true
- },
- "b": {
- "shape": [24],
- "data": [
- 2.8057064434130865,
- 5.588105051769192,
- -4.839719707803649,
- 4.996258886261531,
- 0.9727277518275201,
- -6.173707599765419,
- 2.8057064434130865,
- 5.588105051769192,
- 7.767369675510874,
- -4.308908126069415,
- -5.895479626582176,
- -8.532091541161986,
- 2.8057064434130865,
- 5.588105051769192,
- 0.17833953390240076,
- -4.479541639848148,
- 0.6819732148052395,
- -6.687512654244134,
- 2.8057064434130865,
- 5.588105051769192,
- -9.041799605912026,
- -1.972828107164485,
- -3.011512276155144,
- 3.6268343183100704
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- 1,
- 1,
- 0,
- 1,
- 1,
- 0,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- "type": "uint8"
- }
- },
- {
- "name": "equal float32 1D tensors",
- "inputs": {
- "a": {
- "shape": [24],
- "data": [
- 2.8057064434130865,
- 5.588105051769192,
- 2.8552264057573318,
- 4.996258886261531,
- 0.9727277518275201,
- -4.7425998673234115,
- 2.8057064434130865,
- 5.588105051769192,
- -5.107602083264831,
- 6.62414218944782,
- -2.320724650141428,
- -7.053896009779472,
- 2.8057064434130865,
- 5.588105051769192,
- 4.980423911313675,
- -5.440841218751173,
- 1.1459590058073985,
- 7.774532655736756,
- 2.8057064434130865,
- 5.588105051769192,
- -6.245251018074902,
- -2.849073058101119,
- -2.6951117252164236,
- 5.8175630540970715
- ],
- "type": "float32"
- },
- "b": {
- "shape": [24],
- "data": [
- 2.8057064434130865,
- 5.588105051769192,
- -4.839719707803649,
- 4.996258886261531,
- 0.9727277518275201,
- -6.173707599765419,
- 2.8057064434130865,
- 5.588105051769192,
- 7.767369675510874,
- -4.308908126069415,
- -5.895479626582176,
- -8.532091541161986,
- 2.8057064434130865,
- 5.588105051769192,
- 0.17833953390240076,
- -4.479541639848148,
- 0.6819732148052395,
- -6.687512654244134,
- 2.8057064434130865,
- 5.588105051769192,
- -9.041799605912026,
- -1.972828107164485,
- -3.011512276155144,
- 3.6268343183100704
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- 1,
- 1,
- 0,
- 1,
- 1,
- 0,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- "type": "uint8"
- }
- },
- {
- "name": "equal float32 2D tensors",
- "inputs": {
- "a": {
- "shape": [4, 6],
- "data": [
- 2.8057064434130865,
- 5.588105051769192,
- 2.8552264057573318,
- 4.996258886261531,
- 0.9727277518275201,
- -4.7425998673234115,
- 2.8057064434130865,
- 5.588105051769192,
- -5.107602083264831,
- 6.62414218944782,
- -2.320724650141428,
- -7.053896009779472,
- 2.8057064434130865,
- 5.588105051769192,
- 4.980423911313675,
- -5.440841218751173,
- 1.1459590058073985,
- 7.774532655736756,
- 2.8057064434130865,
- 5.588105051769192,
- -6.245251018074902,
- -2.849073058101119,
- -2.6951117252164236,
- 5.8175630540970715
- ],
- "type": "float32"
- },
- "b": {
- "shape": [4, 6],
- "data": [
- 2.8057064434130865,
- 5.588105051769192,
- -4.839719707803649,
- 4.996258886261531,
- 0.9727277518275201,
- -6.173707599765419,
- 2.8057064434130865,
- 5.588105051769192,
- 7.767369675510874,
- -4.308908126069415,
- -5.895479626582176,
- -8.532091541161986,
- 2.8057064434130865,
- 5.588105051769192,
- 0.17833953390240076,
- -4.479541639848148,
- 0.6819732148052395,
- -6.687512654244134,
- 2.8057064434130865,
- 5.588105051769192,
- -9.041799605912026,
- -1.972828107164485,
- -3.011512276155144,
- 3.6268343183100704
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- 1,
- 1,
- 0,
- 1,
- 1,
- 0,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- "type": "uint8"
- }
- },
- {
- "name": "equal float32 3D tensors",
- "inputs": {
- "a": {
- "shape": [2, 3, 4],
- "data": [
- 2.8057064434130865,
- 5.588105051769192,
- 2.8552264057573318,
- 4.996258886261531,
- 0.9727277518275201,
- -4.7425998673234115,
- 2.8057064434130865,
- 5.588105051769192,
- -5.107602083264831,
- 6.62414218944782,
- -2.320724650141428,
- -7.053896009779472,
- 2.8057064434130865,
- 5.588105051769192,
- 4.980423911313675,
- -5.440841218751173,
- 1.1459590058073985,
- 7.774532655736756,
- 2.8057064434130865,
- 5.588105051769192,
- -6.245251018074902,
- -2.849073058101119,
- -2.6951117252164236,
- 5.8175630540970715
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 3, 4],
- "data": [
- 2.8057064434130865,
- 5.588105051769192,
- -4.839719707803649,
- 4.996258886261531,
- 0.9727277518275201,
- -6.173707599765419,
- 2.8057064434130865,
- 5.588105051769192,
- 7.767369675510874,
- -4.308908126069415,
- -5.895479626582176,
- -8.532091541161986,
- 2.8057064434130865,
- 5.588105051769192,
- 0.17833953390240076,
- -4.479541639848148,
- 0.6819732148052395,
- -6.687512654244134,
- 2.8057064434130865,
- 5.588105051769192,
- -9.041799605912026,
- -1.972828107164485,
- -3.011512276155144,
- 3.6268343183100704
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 3, 4],
- "data": [
- 1,
- 1,
- 0,
- 1,
- 1,
- 0,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- "type": "uint8"
- }
- },
- {
- "name": "equal float32 4D tensors",
- "inputs": {
- "a": {
- "shape": [2, 2, 2, 3],
- "data": [
- 2.8057064434130865,
- 5.588105051769192,
- 2.8552264057573318,
- 4.996258886261531,
- 0.9727277518275201,
- -4.7425998673234115,
- 2.8057064434130865,
- 5.588105051769192,
- -5.107602083264831,
- 6.62414218944782,
- -2.320724650141428,
- -7.053896009779472,
- 2.8057064434130865,
- 5.588105051769192,
- 4.980423911313675,
- -5.440841218751173,
- 1.1459590058073985,
- 7.774532655736756,
- 2.8057064434130865,
- 5.588105051769192,
- -6.245251018074902,
- -2.849073058101119,
- -2.6951117252164236,
- 5.8175630540970715
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 2, 3],
- "data": [
- 2.8057064434130865,
- 5.588105051769192,
- -4.839719707803649,
- 4.996258886261531,
- 0.9727277518275201,
- -6.173707599765419,
- 2.8057064434130865,
- 5.588105051769192,
- 7.767369675510874,
- -4.308908126069415,
- -5.895479626582176,
- -8.532091541161986,
- 2.8057064434130865,
- 5.588105051769192,
- 0.17833953390240076,
- -4.479541639848148,
- 0.6819732148052395,
- -6.687512654244134,
- 2.8057064434130865,
- 5.588105051769192,
- -9.041799605912026,
- -1.972828107164485,
- -3.011512276155144,
- 3.6268343183100704
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 1,
- 1,
- 0,
- 1,
- 1,
- 0,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- "type": "uint8"
- }
- },
- {
- "name": "equal float32 5D tensors",
- "inputs": {
- "a": {
- "shape": [2, 2, 1, 2, 3],
- "data": [
- 2.8057064434130865,
- 5.588105051769192,
- 2.8552264057573318,
- 4.996258886261531,
- 0.9727277518275201,
- -4.7425998673234115,
- 2.8057064434130865,
- 5.588105051769192,
- -5.107602083264831,
- 6.62414218944782,
- -2.320724650141428,
- -7.053896009779472,
- 2.8057064434130865,
- 5.588105051769192,
- 4.980423911313675,
- -5.440841218751173,
- 1.1459590058073985,
- 7.774532655736756,
- 2.8057064434130865,
- 5.588105051769192,
- -6.245251018074902,
- -2.849073058101119,
- -2.6951117252164236,
- 5.8175630540970715
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 1, 2, 3],
- "data": [
- 2.8057064434130865,
- 5.588105051769192,
- -4.839719707803649,
- 4.996258886261531,
- 0.9727277518275201,
- -6.173707599765419,
- 2.8057064434130865,
- 5.588105051769192,
- 7.767369675510874,
- -4.308908126069415,
- -5.895479626582176,
- -8.532091541161986,
- 2.8057064434130865,
- 5.588105051769192,
- 0.17833953390240076,
- -4.479541639848148,
- 0.6819732148052395,
- -6.687512654244134,
- 2.8057064434130865,
- 5.588105051769192,
- -9.041799605912026,
- -1.972828107164485,
- -3.011512276155144,
- 3.6268343183100704
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 1, 2, 3],
- "data": [
- 1,
- 1,
- 0,
- 1,
- 1,
- 0,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- "type": "uint8"
- }
- },
- {
- "name": "equal float32 broadcast 0D to 4D",
- "inputs": {
- "a": {
- "shape": [],
- "data": [
- 2.8057064434130865
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 2, 3],
- "data": [
- 2.8057064434130865,
- 5.588105051769192,
- 2.8552264057573318,
- 4.996258886261531,
- 0.9727277518275201,
- -4.7425998673234115,
- 2.8057064434130865,
- 5.588105051769192,
- -5.107602083264831,
- 6.62414218944782,
- -2.320724650141428,
- -7.053896009779472,
- 2.8057064434130865,
- 5.588105051769192,
- 4.980423911313675,
- -5.440841218751173,
- 1.1459590058073985,
- 7.774532655736756,
- 2.8057064434130865,
- 5.588105051769192,
- -6.245251018074902,
- -2.849073058101119,
- -2.6951117252164236,
- 5.8175630540970715
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- "type": "uint8"
- }
- },
- {
- "name": "equal float32 broadcast 1D to 4D",
- "inputs": {
- "a": {
- "shape": [1],
- "data": [
- 2.8057064434130865
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 2, 3],
- "data": [
- 2.8057064434130865,
- 5.588105051769192,
- 2.8552264057573318,
- 4.996258886261531,
- 0.9727277518275201,
- -4.7425998673234115,
- 2.8057064434130865,
- 5.588105051769192,
- -5.107602083264831,
- 6.62414218944782,
- -2.320724650141428,
- -7.053896009779472,
- 2.8057064434130865,
- 5.588105051769192,
- 4.980423911313675,
- -5.440841218751173,
- 1.1459590058073985,
- 7.774532655736756,
- 2.8057064434130865,
- 5.588105051769192,
- -6.245251018074902,
- -2.849073058101119,
- -2.6951117252164236,
- 5.8175630540970715
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- "type": "uint8"
- }
- },
- {
- "name": "equal float32 broadcast 2D to 4D",
- "inputs": {
- "a": {
- "shape": [2, 2, 2, 3],
- "data": [
- 2.8057064434130865,
- 5.588105051769192,
- 2.8552264057573318,
- 4.996258886261531,
- 0.9727277518275201,
- -4.7425998673234115,
- 2.8057064434130865,
- 5.588105051769192,
- -5.107602083264831,
- 6.62414218944782,
- -2.320724650141428,
- -7.053896009779472,
- 2.8057064434130865,
- 5.588105051769192,
- 4.980423911313675,
- -5.440841218751173,
- 1.1459590058073985,
- 7.774532655736756,
- 2.8057064434130865,
- 5.588105051769192,
- -6.245251018074902,
- -2.849073058101119,
- -2.6951117252164236,
- 5.8175630540970715
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 3],
- "data": [
- 2.8057064434130865,
- 5.588105051769192,
- -4.9622954777657835,
- -2.863192149827909,
- -3.011512276155144,
- 3.6268343183100704
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0
- ],
- "type": "uint8"
- }
- },
- {
- "name": "equal float32 broadcast 3D to 4D",
- "inputs": {
- "a": {
- "shape": [2, 2, 2, 3],
- "data": [
- 2.8057064434130865,
- 5.588105051769192,
- 2.8552264057573318,
- 4.996258886261531,
- 0.9727277518275201,
- -4.7425998673234115,
- 2.8057064434130865,
- 5.588105051769192,
- -5.107602083264831,
- 6.62414218944782,
- -2.320724650141428,
- -7.053896009779472,
- 2.8057064434130865,
- 5.588105051769192,
- 4.980423911313675,
- -5.440841218751173,
- 1.1459590058073985,
- 7.774532655736756,
- 2.8057064434130865,
- 5.588105051769192,
- -6.245251018074902,
- -2.849073058101119,
- -2.6951117252164236,
- 5.8175630540970715
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 1],
- "data": [
- 2.8057064434130865,
- 5.588105051769192,
- -9.041799605912026,
- 3.6268343183100704
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- "type": "uint8"
- }
- },
- {
- "name": "equal float32 broadcast 4D to 4D",
- "inputs": {
- "a": {
- "shape": [1, 1, 1, 1],
- "data": [
- 2.8057064434130865
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 2, 3],
- "data": [
- 2.8057064434130865,
- 5.588105051769192,
- 2.8552264057573318,
- 4.996258886261531,
- 0.9727277518275201,
- -4.7425998673234115,
- 2.8057064434130865,
- 5.588105051769192,
- -5.107602083264831,
- 6.62414218944782,
- -2.320724650141428,
- -7.053896009779472,
- 2.8057064434130865,
- 5.588105051769192,
- 4.980423911313675,
- -5.440841218751173,
- 1.1459590058073985,
- 7.774532655736756,
- 2.8057064434130865,
- 5.588105051769192,
- -6.245251018074902,
- -2.849073058101119,
- -2.6951117252164236,
- 5.8175630540970715
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- "type": "uint8"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/erf.json b/tests/wpt/tests/webnn/resources/test_data/erf.json
deleted file mode 100644
index 6f0b550cf79..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/erf.json
+++ /dev/null
@@ -1,421 +0,0 @@
-{
- "tests": [
- {
- "name": "erf float32 0D scalar",
- "inputs": {
- "input": {
- "shape": [],
- "data": [
- -0.004352752727565523
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [],
- "data": [
- -0.004911554511636496
- ],
- "type": "float32"
- }
- },
- {
- "name": "erf float32 1D constant tensor",
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- -0.5883062462825124,
- -0.5323766618091814,
- 0.127987056070479,
- 0.5772181473181615,
- 0.9045778906827358,
- -0.49856746753516346,
- 0.9843886624146143,
- 0.21642259286228738,
- 0.25235170684373465,
- -0.14916697974435467,
- 0.9136939573458718,
- -0.5736439986742754,
- 0.740446832641029,
- 0.5202203195176929,
- -0.16549504687505712,
- 0.8005731834523444,
- 0.4001320000966242,
- -0.7489422658248586,
- -0.8946002438575227,
- -0.392025619231934,
- 0.6854220843685903,
- -0.674490045974586,
- -0.4398081957860396,
- 0.2709762572248531
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- -0.5945858955383301,
- -0.5484867095947266,
- 0.14363321661949158,
- 0.5856771469116211,
- 0.7991966009140015,
- -0.5192402005195618,
- 0.8361185789108276,
- 0.2404468059539795,
- 0.27881762385368347,
- -0.16707675158977509,
- 0.8036975860595703,
- -0.5827808976173401,
- 0.7049695253372192,
- 0.5380884408950806,
- -0.1850501298904419,
- 0.742441713809967,
- 0.4285193383693695,
- -0.710474967956543,
- -0.7941843867301941,
- -0.4207003712654114,
- 0.6676210165023804,
- -0.6598520874977112,
- -0.46604686975479126,
- 0.29844197630882263
- ],
- "type": "float32"
- }
- },
- {
- "name": "erf float32 1D tensor",
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- -0.5883062462825124,
- -0.5323766618091814,
- 0.127987056070479,
- 0.5772181473181615,
- 0.9045778906827358,
- -0.49856746753516346,
- 0.9843886624146143,
- 0.21642259286228738,
- 0.25235170684373465,
- -0.14916697974435467,
- 0.9136939573458718,
- -0.5736439986742754,
- 0.740446832641029,
- 0.5202203195176929,
- -0.16549504687505712,
- 0.8005731834523444,
- 0.4001320000966242,
- -0.7489422658248586,
- -0.8946002438575227,
- -0.392025619231934,
- 0.6854220843685903,
- -0.674490045974586,
- -0.4398081957860396,
- 0.2709762572248531
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- -0.5945858955383301,
- -0.5484867095947266,
- 0.14363321661949158,
- 0.5856771469116211,
- 0.7991966009140015,
- -0.5192402005195618,
- 0.8361185789108276,
- 0.2404468059539795,
- 0.27881762385368347,
- -0.16707675158977509,
- 0.8036975860595703,
- -0.5827808976173401,
- 0.7049695253372192,
- 0.5380884408950806,
- -0.1850501298904419,
- 0.742441713809967,
- 0.4285193383693695,
- -0.710474967956543,
- -0.7941843867301941,
- -0.4207003712654114,
- 0.6676210165023804,
- -0.6598520874977112,
- -0.46604686975479126,
- 0.29844197630882263
- ],
- "type": "float32"
- }
- },
- {
- "name": "erf float32 2D tensor",
- "inputs": {
- "input": {
- "shape": [4, 6],
- "data": [
- -0.5883062462825124,
- -0.5323766618091814,
- 0.127987056070479,
- 0.5772181473181615,
- 0.9045778906827358,
- -0.49856746753516346,
- 0.9843886624146143,
- 0.21642259286228738,
- 0.25235170684373465,
- -0.14916697974435467,
- 0.9136939573458718,
- -0.5736439986742754,
- 0.740446832641029,
- 0.5202203195176929,
- -0.16549504687505712,
- 0.8005731834523444,
- 0.4001320000966242,
- -0.7489422658248586,
- -0.8946002438575227,
- -0.392025619231934,
- 0.6854220843685903,
- -0.674490045974586,
- -0.4398081957860396,
- 0.2709762572248531
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- -0.5945858955383301,
- -0.5484867095947266,
- 0.14363321661949158,
- 0.5856771469116211,
- 0.7991966009140015,
- -0.5192402005195618,
- 0.8361185789108276,
- 0.2404468059539795,
- 0.27881762385368347,
- -0.16707675158977509,
- 0.8036975860595703,
- -0.5827808976173401,
- 0.7049695253372192,
- 0.5380884408950806,
- -0.1850501298904419,
- 0.742441713809967,
- 0.4285193383693695,
- -0.710474967956543,
- -0.7941843867301941,
- -0.4207003712654114,
- 0.6676210165023804,
- -0.6598520874977112,
- -0.46604686975479126,
- 0.29844197630882263
- ],
- "type": "float32"
- }
- },
- {
- "name": "erf float32 3D tensor",
- "inputs": {
- "input": {
- "shape": [2, 3, 4],
- "data": [
- -0.5883062462825124,
- -0.5323766618091814,
- 0.127987056070479,
- 0.5772181473181615,
- 0.9045778906827358,
- -0.49856746753516346,
- 0.9843886624146143,
- 0.21642259286228738,
- 0.25235170684373465,
- -0.14916697974435467,
- 0.9136939573458718,
- -0.5736439986742754,
- 0.740446832641029,
- 0.5202203195176929,
- -0.16549504687505712,
- 0.8005731834523444,
- 0.4001320000966242,
- -0.7489422658248586,
- -0.8946002438575227,
- -0.392025619231934,
- 0.6854220843685903,
- -0.674490045974586,
- -0.4398081957860396,
- 0.2709762572248531
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 3, 4],
- "data": [
- -0.5945858955383301,
- -0.5484867095947266,
- 0.14363321661949158,
- 0.5856771469116211,
- 0.7991966009140015,
- -0.5192402005195618,
- 0.8361185789108276,
- 0.2404468059539795,
- 0.27881762385368347,
- -0.16707675158977509,
- 0.8036975860595703,
- -0.5827808976173401,
- 0.7049695253372192,
- 0.5380884408950806,
- -0.1850501298904419,
- 0.742441713809967,
- 0.4285193383693695,
- -0.710474967956543,
- -0.7941843867301941,
- -0.4207003712654114,
- 0.6676210165023804,
- -0.6598520874977112,
- -0.46604686975479126,
- 0.29844197630882263
- ],
- "type": "float32"
- }
- },
- {
- "name": "erf float32 4D tensor",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- -0.5883062462825124,
- -0.5323766618091814,
- 0.127987056070479,
- 0.5772181473181615,
- 0.9045778906827358,
- -0.49856746753516346,
- 0.9843886624146143,
- 0.21642259286228738,
- 0.25235170684373465,
- -0.14916697974435467,
- 0.9136939573458718,
- -0.5736439986742754,
- 0.740446832641029,
- 0.5202203195176929,
- -0.16549504687505712,
- 0.8005731834523444,
- 0.4001320000966242,
- -0.7489422658248586,
- -0.8946002438575227,
- -0.392025619231934,
- 0.6854220843685903,
- -0.674490045974586,
- -0.4398081957860396,
- 0.2709762572248531
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- -0.5945858955383301,
- -0.5484867095947266,
- 0.14363321661949158,
- 0.5856771469116211,
- 0.7991966009140015,
- -0.5192402005195618,
- 0.8361185789108276,
- 0.2404468059539795,
- 0.27881762385368347,
- -0.16707675158977509,
- 0.8036975860595703,
- -0.5827808976173401,
- 0.7049695253372192,
- 0.5380884408950806,
- -0.1850501298904419,
- 0.742441713809967,
- 0.4285193383693695,
- -0.710474967956543,
- -0.7941843867301941,
- -0.4207003712654114,
- 0.6676210165023804,
- -0.6598520874977112,
- -0.46604686975479126,
- 0.29844197630882263
- ],
- "type": "float32"
- }
- },
- {
- "name": "erf float32 5D tensor",
- "inputs": {
- "input": {
- "shape": [2, 1, 4, 1, 3],
- "data": [
- -0.5883062462825124,
- -0.5323766618091814,
- 0.127987056070479,
- 0.5772181473181615,
- 0.9045778906827358,
- -0.49856746753516346,
- 0.9843886624146143,
- 0.21642259286228738,
- 0.25235170684373465,
- -0.14916697974435467,
- 0.9136939573458718,
- -0.5736439986742754,
- 0.740446832641029,
- 0.5202203195176929,
- -0.16549504687505712,
- 0.8005731834523444,
- 0.4001320000966242,
- -0.7489422658248586,
- -0.8946002438575227,
- -0.392025619231934,
- 0.6854220843685903,
- -0.674490045974586,
- -0.4398081957860396,
- 0.2709762572248531
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 1, 4, 1, 3],
- "data": [
- -0.5945858955383301,
- -0.5484867095947266,
- 0.14363321661949158,
- 0.5856771469116211,
- 0.7991966009140015,
- -0.5192402005195618,
- 0.8361185789108276,
- 0.2404468059539795,
- 0.27881762385368347,
- -0.16707675158977509,
- 0.8036975860595703,
- -0.5827808976173401,
- 0.7049695253372192,
- 0.5380884408950806,
- -0.1850501298904419,
- 0.742441713809967,
- 0.4285193383693695,
- -0.710474967956543,
- -0.7941843867301941,
- -0.4207003712654114,
- 0.6676210165023804,
- -0.6598520874977112,
- -0.46604686975479126,
- 0.29844197630882263
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/exp.json b/tests/wpt/tests/webnn/resources/test_data/exp.json
deleted file mode 100644
index 2de52d951e9..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/exp.json
+++ /dev/null
@@ -1,401 +0,0 @@
-{
- "tests": [
- {
- "name": "exp float32 1D constant tensor",
- "inputs": {
- "x": {
- "shape": [24],
- "data": [
- 0.342143655338516,
- -3.3109650690636583,
- -3.696757542725746,
- -5.105378072825206,
- 5.471040383543361,
- -0.06790750193598072,
- 2.7373435551676373,
- -3.547075850060808,
- 5.3392248393586215,
- -1.2636781380561768,
- -0.9162953518691133,
- -9.088432637604779,
- -4.016050813135332,
- 4.670352907446356,
- 7.326991954708756,
- 8.294342869341662,
- -7.3454139558670795,
- -0.9275799995316945,
- -1.7085379363808997,
- -9.737379277450184,
- -1.9747875652397973,
- 8.203150154065185,
- -7.267597492286808,
- -3.5890684093944714
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- 1.4079625606536865,
- 0.03648095205426216,
- 0.024803820997476578,
- 0.006064045242965221,
- 237.70733642578125,
- 0.9343469142913818,
- 15.44589900970459,
- 0.02880876138806343,
- 208.35113525390625,
- 0.2826126217842102,
- 0.39999815821647644,
- 0.00011296502634650096,
- 0.018024004995822906,
- 106.73540496826172,
- 1520.8004150390625,
- 4001.173583984375,
- 0.0006455459515564144,
- 0.3955096900463104,
- 0.18113042414188385,
- 0.0000590350573475007,
- 0.1387907862663269,
- 3652.4365234375,
- 0.0006977862794883549,
- 0.02762405201792717
- ],
- "type": "float32"
- }
- },
- {
- "name": "exp float32 1D tensor",
- "inputs": {
- "x": {
- "shape": [24],
- "data": [
- 0.342143655338516,
- -3.3109650690636583,
- -3.696757542725746,
- -5.105378072825206,
- 5.471040383543361,
- -0.06790750193598072,
- 2.7373435551676373,
- -3.547075850060808,
- 5.3392248393586215,
- -1.2636781380561768,
- -0.9162953518691133,
- -9.088432637604779,
- -4.016050813135332,
- 4.670352907446356,
- 7.326991954708756,
- 8.294342869341662,
- -7.3454139558670795,
- -0.9275799995316945,
- -1.7085379363808997,
- -9.737379277450184,
- -1.9747875652397973,
- 8.203150154065185,
- -7.267597492286808,
- -3.5890684093944714
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- 1.4079625606536865,
- 0.03648095205426216,
- 0.024803820997476578,
- 0.006064045242965221,
- 237.70733642578125,
- 0.9343469142913818,
- 15.44589900970459,
- 0.02880876138806343,
- 208.35113525390625,
- 0.2826126217842102,
- 0.39999815821647644,
- 0.00011296502634650096,
- 0.018024004995822906,
- 106.73540496826172,
- 1520.8004150390625,
- 4001.173583984375,
- 0.0006455459515564144,
- 0.3955096900463104,
- 0.18113042414188385,
- 0.0000590350573475007,
- 0.1387907862663269,
- 3652.4365234375,
- 0.0006977862794883549,
- 0.02762405201792717
- ],
- "type": "float32"
- }
- },
- {
- "name": "exp float32 2D tensor",
- "inputs": {
- "x": {
- "shape": [4, 6],
- "data": [
- 0.342143655338516,
- -3.3109650690636583,
- -3.696757542725746,
- -5.105378072825206,
- 5.471040383543361,
- -0.06790750193598072,
- 2.7373435551676373,
- -3.547075850060808,
- 5.3392248393586215,
- -1.2636781380561768,
- -0.9162953518691133,
- -9.088432637604779,
- -4.016050813135332,
- 4.670352907446356,
- 7.326991954708756,
- 8.294342869341662,
- -7.3454139558670795,
- -0.9275799995316945,
- -1.7085379363808997,
- -9.737379277450184,
- -1.9747875652397973,
- 8.203150154065185,
- -7.267597492286808,
- -3.5890684093944714
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- 1.4079625606536865,
- 0.03648095205426216,
- 0.024803820997476578,
- 0.006064045242965221,
- 237.70733642578125,
- 0.9343469142913818,
- 15.44589900970459,
- 0.02880876138806343,
- 208.35113525390625,
- 0.2826126217842102,
- 0.39999815821647644,
- 0.00011296502634650096,
- 0.018024004995822906,
- 106.73540496826172,
- 1520.8004150390625,
- 4001.173583984375,
- 0.0006455459515564144,
- 0.3955096900463104,
- 0.18113042414188385,
- 0.0000590350573475007,
- 0.1387907862663269,
- 3652.4365234375,
- 0.0006977862794883549,
- 0.02762405201792717
- ],
- "type": "float32"
- }
- },
- {
- "name": "exp float32 3D tensor",
- "inputs": {
- "x": {
- "shape": [2, 3, 4],
- "data": [
- 0.342143655338516,
- -3.3109650690636583,
- -3.696757542725746,
- -5.105378072825206,
- 5.471040383543361,
- -0.06790750193598072,
- 2.7373435551676373,
- -3.547075850060808,
- 5.3392248393586215,
- -1.2636781380561768,
- -0.9162953518691133,
- -9.088432637604779,
- -4.016050813135332,
- 4.670352907446356,
- 7.326991954708756,
- 8.294342869341662,
- -7.3454139558670795,
- -0.9275799995316945,
- -1.7085379363808997,
- -9.737379277450184,
- -1.9747875652397973,
- 8.203150154065185,
- -7.267597492286808,
- -3.5890684093944714
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 3, 4],
- "data": [
- 1.4079625606536865,
- 0.03648095205426216,
- 0.024803820997476578,
- 0.006064045242965221,
- 237.70733642578125,
- 0.9343469142913818,
- 15.44589900970459,
- 0.02880876138806343,
- 208.35113525390625,
- 0.2826126217842102,
- 0.39999815821647644,
- 0.00011296502634650096,
- 0.018024004995822906,
- 106.73540496826172,
- 1520.8004150390625,
- 4001.173583984375,
- 0.0006455459515564144,
- 0.3955096900463104,
- 0.18113042414188385,
- 0.0000590350573475007,
- 0.1387907862663269,
- 3652.4365234375,
- 0.0006977862794883549,
- 0.02762405201792717
- ],
- "type": "float32"
- }
- },
- {
- "name": "exp float32 4D tensor",
- "inputs": {
- "x": {
- "shape": [2, 2, 2, 3],
- "data": [
- 0.342143655338516,
- -3.3109650690636583,
- -3.696757542725746,
- -5.105378072825206,
- 5.471040383543361,
- -0.06790750193598072,
- 2.7373435551676373,
- -3.547075850060808,
- 5.3392248393586215,
- -1.2636781380561768,
- -0.9162953518691133,
- -9.088432637604779,
- -4.016050813135332,
- 4.670352907446356,
- 7.326991954708756,
- 8.294342869341662,
- -7.3454139558670795,
- -0.9275799995316945,
- -1.7085379363808997,
- -9.737379277450184,
- -1.9747875652397973,
- 8.203150154065185,
- -7.267597492286808,
- -3.5890684093944714
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 1.4079625606536865,
- 0.03648095205426216,
- 0.024803820997476578,
- 0.006064045242965221,
- 237.70733642578125,
- 0.9343469142913818,
- 15.44589900970459,
- 0.02880876138806343,
- 208.35113525390625,
- 0.2826126217842102,
- 0.39999815821647644,
- 0.00011296502634650096,
- 0.018024004995822906,
- 106.73540496826172,
- 1520.8004150390625,
- 4001.173583984375,
- 0.0006455459515564144,
- 0.3955096900463104,
- 0.18113042414188385,
- 0.0000590350573475007,
- 0.1387907862663269,
- 3652.4365234375,
- 0.0006977862794883549,
- 0.02762405201792717
- ],
- "type": "float32"
- }
- },
- {
- "name": "exp float32 5D tensor",
- "inputs": {
- "x": {
- "shape": [2, 1, 4, 1, 3],
- "data": [
- 0.342143655338516,
- -3.3109650690636583,
- -3.696757542725746,
- -5.105378072825206,
- 5.471040383543361,
- -0.06790750193598072,
- 2.7373435551676373,
- -3.547075850060808,
- 5.3392248393586215,
- -1.2636781380561768,
- -0.9162953518691133,
- -9.088432637604779,
- -4.016050813135332,
- 4.670352907446356,
- 7.326991954708756,
- 8.294342869341662,
- -7.3454139558670795,
- -0.9275799995316945,
- -1.7085379363808997,
- -9.737379277450184,
- -1.9747875652397973,
- 8.203150154065185,
- -7.267597492286808,
- -3.5890684093944714
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 1, 4, 1, 3],
- "data": [
- 1.4079625606536865,
- 0.03648095205426216,
- 0.024803820997476578,
- 0.006064045242965221,
- 237.70733642578125,
- 0.9343469142913818,
- 15.44589900970459,
- 0.02880876138806343,
- 208.35113525390625,
- 0.2826126217842102,
- 0.39999815821647644,
- 0.00011296502634650096,
- 0.018024004995822906,
- 106.73540496826172,
- 1520.8004150390625,
- 4001.173583984375,
- 0.0006455459515564144,
- 0.3955096900463104,
- 0.18113042414188385,
- 0.0000590350573475007,
- 0.1387907862663269,
- 3652.4365234375,
- 0.0006977862794883549,
- 0.02762405201792717
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/expand.json b/tests/wpt/tests/webnn/resources/test_data/expand.json
deleted file mode 100644
index 00bf4a37b4e..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/expand.json
+++ /dev/null
@@ -1,994 +0,0 @@
-{
- "tests": [
- {
- "name": "expand float32 0D scalar to 1D",
- "inputs": {
- "input": {
- "shape": [],
- "data": [
- -6.461850643157959
- ],
- "type": "float32"
- }
- },
- "newShape": [24],
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959
- ],
- "type": "float32"
- }
- },
- {
- "name": "expand float32 0D scalar to 2D",
- "inputs": {
- "input": {
- "shape": [],
- "data": [
- -6.461850643157959
- ],
- "type": "float32"
- }
- },
- "newShape": [4, 6],
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959
- ],
- "type": "float32"
- }
- },
- {
- "name": "expand float32 0D scalar to 3D",
- "inputs": {
- "input": {
- "shape": [],
- "data": [
- -6.461850643157959
- ],
- "type": "float32"
- }
- },
- "newShape": [2, 3, 4],
- "expected": {
- "name": "output",
- "shape": [2, 3, 4],
- "data": [
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959
- ],
- "type": "float32"
- }
- },
- {
- "name": "expand float32 0D scalar to 4D",
- "inputs": {
- "input": {
- "shape": [],
- "data": [
- -6.461850643157959
- ],
- "type": "float32"
- }
- },
- "newShape": [2, 2, 2, 3],
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959
- ],
- "type": "float32"
- }
- },
- {
- "name": "expand float32 0D scalar to 5D",
- "inputs": {
- "input": {
- "shape": [],
- "data": [
- -6.461850643157959
- ],
- "type": "float32"
- }
- },
- "newShape": [2, 2, 3, 1, 2],
- "expected": {
- "name": "output",
- "shape": [2, 2, 3, 1, 2],
- "data": [
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959
- ],
- "type": "float32"
- }
- },
- {
- "name": "expand float32 1D constant tensor to 1D",
- "inputs": {
- "input": {
- "shape": [1],
- "data": [
- -6.461850643157959
- ],
- "type": "float32",
- "constant": true
- }
- },
- "newShape": [24],
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959
- ],
- "type": "float32"
- }
- },
- {
- "name": "expand float32 1D tensor to 1D",
- "inputs": {
- "input": {
- "shape": [1],
- "data": [
- -6.461850643157959
- ],
- "type": "float32"
- }
- },
- "newShape": [24],
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959
- ],
- "type": "float32"
- }
- },
- {
- "name": "expand float32 1D tensor to 2D",
- "inputs": {
- "input": {
- "shape": [1],
- "data": [
- -6.461850643157959
- ],
- "type": "float32"
- }
- },
- "newShape": [4, 6],
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959
- ],
- "type": "float32"
- }
- },
- {
- "name": "expand float32 1D tensor to 3D",
- "inputs": {
- "input": {
- "shape": [1],
- "data": [
- -6.461850643157959
- ],
- "type": "float32"
- }
- },
- "newShape": [2, 3, 4],
- "expected": {
- "name": "output",
- "shape": [2, 3, 4],
- "data": [
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959
- ],
- "type": "float32"
- }
- },
- {
- "name": "expand float32 1D tensor to 4D",
- "inputs": {
- "input": {
- "shape": [1],
- "data": [
- -6.461850643157959
- ],
- "type": "float32"
- }
- },
- "newShape": [2, 2, 2, 3],
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959
- ],
- "type": "float32"
- }
- },
- {
- "name": "expand float32 1D tensor to 5D",
- "inputs": {
- "input": {
- "shape": [1],
- "data": [
- -6.461850643157959
- ],
- "type": "float32"
- }
- },
- "newShape": [2, 2, 3, 1, 2],
- "expected": {
- "name": "output",
- "shape": [2, 2, 3, 1, 2],
- "data": [
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959
- ],
- "type": "float32"
- }
- },
- {
- "name": "expand float32 2D tensor to 2D (1st dimension)",
- "inputs": {
- "input": {
- "shape": [1, 6],
- "data": [
- 10.898762702941895,
- -29.391416549682617,
- -73.74250793457031,
- 22.456905364990234,
- -97.5792465209961,
- -76.95013427734375
- ],
- "type": "float32"
- }
- },
- "newShape": [4, 6],
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- 10.898762702941895,
- -29.391416549682617,
- -73.74250793457031,
- 22.456905364990234,
- -97.5792465209961,
- -76.95013427734375,
- 10.898762702941895,
- -29.391416549682617,
- -73.74250793457031,
- 22.456905364990234,
- -97.5792465209961,
- -76.95013427734375,
- 10.898762702941895,
- -29.391416549682617,
- -73.74250793457031,
- 22.456905364990234,
- -97.5792465209961,
- -76.95013427734375,
- 10.898762702941895,
- -29.391416549682617,
- -73.74250793457031,
- 22.456905364990234,
- -97.5792465209961,
- -76.95013427734375
- ],
- "type": "float32"
- }
- },
- {
- "name": "expand float32 2D tensor to 2D (2nd dimension)",
- "inputs": {
- "input": {
- "shape": [4, 1],
- "data": [
- 4.965915679931641,
- 66.14382934570312,
- 75.28175354003906,
- 49.998130798339844
- ],
- "type": "float32"
- }
- },
- "newShape": [4, 6],
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- 4.965915679931641,
- 4.965915679931641,
- 4.965915679931641,
- 4.965915679931641,
- 4.965915679931641,
- 4.965915679931641,
- 66.14382934570312,
- 66.14382934570312,
- 66.14382934570312,
- 66.14382934570312,
- 66.14382934570312,
- 66.14382934570312,
- 75.28175354003906,
- 75.28175354003906,
- 75.28175354003906,
- 75.28175354003906,
- 75.28175354003906,
- 75.28175354003906,
- 49.998130798339844,
- 49.998130798339844,
- 49.998130798339844,
- 49.998130798339844,
- 49.998130798339844,
- 49.998130798339844
- ],
- "type": "float32"
- }
- },
- {
- "name": "expand float32 2D tensor to 2D (all dimensions)",
- "inputs": {
- "input": {
- "shape": [1, 1],
- "data": [
- -6.461850643157959
- ],
- "type": "float32"
- }
- },
- "newShape": [4, 6],
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959
- ],
- "type": "float32"
- }
- },
- {
- "name": "expand float32 2D tensor to 3D",
- "inputs": {
- "input": {
- "shape": [4, 1],
- "data": [
- 4.965915679931641,
- 66.14382934570312,
- 75.28175354003906,
- 49.998130798339844
- ],
- "type": "float32"
- }
- },
- "newShape": [2, 4, 3],
- "expected": {
- "name": "output",
- "shape": [2, 4, 3],
- "data": [
- 4.965915679931641,
- 4.965915679931641,
- 4.965915679931641,
- 66.14382934570312,
- 66.14382934570312,
- 66.14382934570312,
- 75.28175354003906,
- 75.28175354003906,
- 75.28175354003906,
- 49.998130798339844,
- 49.998130798339844,
- 49.998130798339844,
- 4.965915679931641,
- 4.965915679931641,
- 4.965915679931641,
- 66.14382934570312,
- 66.14382934570312,
- 66.14382934570312,
- 75.28175354003906,
- 75.28175354003906,
- 75.28175354003906,
- 49.998130798339844,
- 49.998130798339844,
- 49.998130798339844
- ],
- "type": "float32"
- }
- },
- {
- "name": "expand float32 2D tensor to 4D",
- "inputs": {
- "input": {
- "shape": [1, 6],
- "data": [
- 10.898762702941895,
- -29.391416549682617,
- -73.74250793457031,
- 22.456905364990234,
- -97.5792465209961,
- -76.95013427734375
- ],
- "type": "float32"
- }
- },
- "newShape": [2, 1, 2, 6],
- "expected": {
- "name": "output",
- "shape": [2, 1, 2, 6],
- "data": [
- 10.898762702941895,
- -29.391416549682617,
- -73.74250793457031,
- 22.456905364990234,
- -97.5792465209961,
- -76.95013427734375,
- 10.898762702941895,
- -29.391416549682617,
- -73.74250793457031,
- 22.456905364990234,
- -97.5792465209961,
- -76.95013427734375,
- 10.898762702941895,
- -29.391416549682617,
- -73.74250793457031,
- 22.456905364990234,
- -97.5792465209961,
- -76.95013427734375,
- 10.898762702941895,
- -29.391416549682617,
- -73.74250793457031,
- 22.456905364990234,
- -97.5792465209961,
- -76.95013427734375
- ],
- "type": "float32"
- }
- },
- {
- "name": "expand float32 2D tensor to 5D",
- "inputs": {
- "input": {
- "shape": [1, 1],
- "data": [
- -6.461850643157959
- ],
- "type": "float32"
- }
- },
- "newShape": [2, 1, 3, 2, 2],
- "expected": {
- "name": "output",
- "shape": [2, 1, 3, 2, 2],
- "data": [
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959,
- -6.461850643157959
- ],
- "type": "float32"
- }
- },
- {
- "name": "expand float32 3D tensor to 3D",
- "inputs": {
- "input": {
- "shape": [1, 2, 1],
- "data": [
- 21.694129943847656,
- -72.82571411132812
- ],
- "type": "float32"
- }
- },
- "newShape": [2, 2, 6],
- "expected": {
- "name": "output",
- "shape": [2, 2, 6],
- "data": [
- 21.694129943847656,
- 21.694129943847656,
- 21.694129943847656,
- 21.694129943847656,
- 21.694129943847656,
- 21.694129943847656,
- -72.82571411132812,
- -72.82571411132812,
- -72.82571411132812,
- -72.82571411132812,
- -72.82571411132812,
- -72.82571411132812,
- 21.694129943847656,
- 21.694129943847656,
- 21.694129943847656,
- 21.694129943847656,
- 21.694129943847656,
- 21.694129943847656,
- -72.82571411132812,
- -72.82571411132812,
- -72.82571411132812,
- -72.82571411132812,
- -72.82571411132812,
- -72.82571411132812
- ],
- "type": "float32"
- }
- },
- {
- "name": "expand float32 3D tensor to 4D",
- "inputs": {
- "input": {
- "shape": [1, 2, 1],
- "data": [
- 21.694129943847656,
- -72.82571411132812
- ],
- "type": "float32"
- }
- },
- "newShape": [2, 2, 2, 3],
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 21.694129943847656,
- 21.694129943847656,
- 21.694129943847656,
- -72.82571411132812,
- -72.82571411132812,
- -72.82571411132812,
- 21.694129943847656,
- 21.694129943847656,
- 21.694129943847656,
- -72.82571411132812,
- -72.82571411132812,
- -72.82571411132812,
- 21.694129943847656,
- 21.694129943847656,
- 21.694129943847656,
- -72.82571411132812,
- -72.82571411132812,
- -72.82571411132812,
- 21.694129943847656,
- 21.694129943847656,
- 21.694129943847656,
- -72.82571411132812,
- -72.82571411132812,
- -72.82571411132812
- ],
- "type": "float32"
- }
- },
- {
- "name": "expand float32 3D tensor to 5D",
- "inputs": {
- "input": {
- "shape": [1, 2, 1],
- "data": [
- 21.694129943847656,
- -72.82571411132812
- ],
- "type": "float32"
- }
- },
- "newShape": [2, 1, 2, 2, 3],
- "expected": {
- "name": "output",
- "shape": [2, 1, 2, 2, 3],
- "data": [
- 21.694129943847656,
- 21.694129943847656,
- 21.694129943847656,
- -72.82571411132812,
- -72.82571411132812,
- -72.82571411132812,
- 21.694129943847656,
- 21.694129943847656,
- 21.694129943847656,
- -72.82571411132812,
- -72.82571411132812,
- -72.82571411132812,
- 21.694129943847656,
- 21.694129943847656,
- 21.694129943847656,
- -72.82571411132812,
- -72.82571411132812,
- -72.82571411132812,
- 21.694129943847656,
- 21.694129943847656,
- 21.694129943847656,
- -72.82571411132812,
- -72.82571411132812,
- -72.82571411132812
- ],
- "type": "float32"
- }
- },
- {
- "name": "expand float32 4D tensor to 4D",
- "inputs": {
- "input": {
- "shape": [2, 1, 1, 1],
- "data": [
- 12.799123764038086,
- -26.550199508666992
- ],
- "type": "float32"
- }
- },
- "newShape": [2, 3, 2, 2],
- "expected": {
- "name": "output",
- "shape": [2, 3, 2, 2],
- "data": [
- 12.799123764038086,
- 12.799123764038086,
- 12.799123764038086,
- 12.799123764038086,
- 12.799123764038086,
- 12.799123764038086,
- 12.799123764038086,
- 12.799123764038086,
- 12.799123764038086,
- 12.799123764038086,
- 12.799123764038086,
- 12.799123764038086,
- -26.550199508666992,
- -26.550199508666992,
- -26.550199508666992,
- -26.550199508666992,
- -26.550199508666992,
- -26.550199508666992,
- -26.550199508666992,
- -26.550199508666992,
- -26.550199508666992,
- -26.550199508666992,
- -26.550199508666992,
- -26.550199508666992
- ],
- "type": "float32"
- }
- },
- {
- "name": "expand float32 4D tensor to 5D",
- "inputs": {
- "input": {
- "shape": [2, 1, 1, 1],
- "data": [
- 12.799123764038086,
- -26.550199508666992
- ],
- "type": "float32"
- }
- },
- "newShape": [2, 2, 3, 1, 2],
- "expected": {
- "name": "output",
- "shape": [2, 2, 3, 1, 2],
- "data": [
- 12.799123764038086,
- 12.799123764038086,
- 12.799123764038086,
- 12.799123764038086,
- 12.799123764038086,
- 12.799123764038086,
- -26.550199508666992,
- -26.550199508666992,
- -26.550199508666992,
- -26.550199508666992,
- -26.550199508666992,
- -26.550199508666992,
- 12.799123764038086,
- 12.799123764038086,
- 12.799123764038086,
- 12.799123764038086,
- 12.799123764038086,
- 12.799123764038086,
- -26.550199508666992,
- -26.550199508666992,
- -26.550199508666992,
- -26.550199508666992,
- -26.550199508666992,
- -26.550199508666992
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/floor.json b/tests/wpt/tests/webnn/resources/test_data/floor.json
deleted file mode 100644
index 3b5dba15762..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/floor.json
+++ /dev/null
@@ -1,401 +0,0 @@
-{
- "tests": [
- {
- "name": "floor float32 1D constant tensor",
- "inputs": {
- "x": {
- "shape": [24],
- "data": [
- 89.69458425635187,
- -79.6715006046712,
- -66.80949305244779,
- -71.88439187517632,
- 86.33935218844132,
- 6.823808491438228,
- 24.908446694609452,
- 0.9734055387608578,
- 19.94818517399692,
- 0.8437776596471878,
- -24.75293941821147,
- 77.76482131339927,
- -33.64446543048625,
- 80.77624589277926,
- 44.47844134603099,
- -37.65005913863395,
- -83.78780150071003,
- 65.84009074464839,
- -39.83677499773579,
- 32.52575852910243,
- -21.21354337121204,
- -80.30910898865443,
- 16.674850201817335,
- -72.88893024677465
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- 89,
- -80,
- -67,
- -72,
- 86,
- 6,
- 24,
- 0,
- 19,
- 0,
- -25,
- 77,
- -34,
- 80,
- 44,
- -38,
- -84,
- 65,
- -40,
- 32,
- -22,
- -81,
- 16,
- -73
- ],
- "type": "float32"
- }
- },
- {
- "name": "floor float32 1D tensor",
- "inputs": {
- "x": {
- "shape": [24],
- "data": [
- 89.69458425635187,
- -79.6715006046712,
- -66.80949305244779,
- -71.88439187517632,
- 86.33935218844132,
- 6.823808491438228,
- 24.908446694609452,
- 0.9734055387608578,
- 19.94818517399692,
- 0.8437776596471878,
- -24.75293941821147,
- 77.76482131339927,
- -33.64446543048625,
- 80.77624589277926,
- 44.47844134603099,
- -37.65005913863395,
- -83.78780150071003,
- 65.84009074464839,
- -39.83677499773579,
- 32.52575852910243,
- -21.21354337121204,
- -80.30910898865443,
- 16.674850201817335,
- -72.88893024677465
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- 89,
- -80,
- -67,
- -72,
- 86,
- 6,
- 24,
- 0,
- 19,
- 0,
- -25,
- 77,
- -34,
- 80,
- 44,
- -38,
- -84,
- 65,
- -40,
- 32,
- -22,
- -81,
- 16,
- -73
- ],
- "type": "float32"
- }
- },
- {
- "name": "floor float32 2D tensor",
- "inputs": {
- "x": {
- "shape": [4, 6],
- "data": [
- 89.69458425635187,
- -79.6715006046712,
- -66.80949305244779,
- -71.88439187517632,
- 86.33935218844132,
- 6.823808491438228,
- 24.908446694609452,
- 0.9734055387608578,
- 19.94818517399692,
- 0.8437776596471878,
- -24.75293941821147,
- 77.76482131339927,
- -33.64446543048625,
- 80.77624589277926,
- 44.47844134603099,
- -37.65005913863395,
- -83.78780150071003,
- 65.84009074464839,
- -39.83677499773579,
- 32.52575852910243,
- -21.21354337121204,
- -80.30910898865443,
- 16.674850201817335,
- -72.88893024677465
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- 89,
- -80,
- -67,
- -72,
- 86,
- 6,
- 24,
- 0,
- 19,
- 0,
- -25,
- 77,
- -34,
- 80,
- 44,
- -38,
- -84,
- 65,
- -40,
- 32,
- -22,
- -81,
- 16,
- -73
- ],
- "type": "float32"
- }
- },
- {
- "name": "floor float32 3D tensor",
- "inputs": {
- "x": {
- "shape": [2, 3, 4],
- "data": [
- 89.69458425635187,
- -79.6715006046712,
- -66.80949305244779,
- -71.88439187517632,
- 86.33935218844132,
- 6.823808491438228,
- 24.908446694609452,
- 0.9734055387608578,
- 19.94818517399692,
- 0.8437776596471878,
- -24.75293941821147,
- 77.76482131339927,
- -33.64446543048625,
- 80.77624589277926,
- 44.47844134603099,
- -37.65005913863395,
- -83.78780150071003,
- 65.84009074464839,
- -39.83677499773579,
- 32.52575852910243,
- -21.21354337121204,
- -80.30910898865443,
- 16.674850201817335,
- -72.88893024677465
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 3, 4],
- "data": [
- 89,
- -80,
- -67,
- -72,
- 86,
- 6,
- 24,
- 0,
- 19,
- 0,
- -25,
- 77,
- -34,
- 80,
- 44,
- -38,
- -84,
- 65,
- -40,
- 32,
- -22,
- -81,
- 16,
- -73
- ],
- "type": "float32"
- }
- },
- {
- "name": "floor float32 4D tensor",
- "inputs": {
- "x": {
- "shape": [2, 2, 2, 3],
- "data": [
- 89.69458425635187,
- -79.6715006046712,
- -66.80949305244779,
- -71.88439187517632,
- 86.33935218844132,
- 6.823808491438228,
- 24.908446694609452,
- 0.9734055387608578,
- 19.94818517399692,
- 0.8437776596471878,
- -24.75293941821147,
- 77.76482131339927,
- -33.64446543048625,
- 80.77624589277926,
- 44.47844134603099,
- -37.65005913863395,
- -83.78780150071003,
- 65.84009074464839,
- -39.83677499773579,
- 32.52575852910243,
- -21.21354337121204,
- -80.30910898865443,
- 16.674850201817335,
- -72.88893024677465
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 89,
- -80,
- -67,
- -72,
- 86,
- 6,
- 24,
- 0,
- 19,
- 0,
- -25,
- 77,
- -34,
- 80,
- 44,
- -38,
- -84,
- 65,
- -40,
- 32,
- -22,
- -81,
- 16,
- -73
- ],
- "type": "float32"
- }
- },
- {
- "name": "floor float32 5D tensor",
- "inputs": {
- "x": {
- "shape": [2, 1, 4, 1, 3],
- "data": [
- 89.69458425635187,
- -79.6715006046712,
- -66.80949305244779,
- -71.88439187517632,
- 86.33935218844132,
- 6.823808491438228,
- 24.908446694609452,
- 0.9734055387608578,
- 19.94818517399692,
- 0.8437776596471878,
- -24.75293941821147,
- 77.76482131339927,
- -33.64446543048625,
- 80.77624589277926,
- 44.47844134603099,
- -37.65005913863395,
- -83.78780150071003,
- 65.84009074464839,
- -39.83677499773579,
- 32.52575852910243,
- -21.21354337121204,
- -80.30910898865443,
- 16.674850201817335,
- -72.88893024677465
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 1, 4, 1, 3],
- "data": [
- 89,
- -80,
- -67,
- -72,
- 86,
- 6,
- 24,
- 0,
- 19,
- 0,
- -25,
- 77,
- -34,
- 80,
- 44,
- -38,
- -84,
- 65,
- -40,
- 32,
- -22,
- -81,
- 16,
- -73
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/gather.json b/tests/wpt/tests/webnn/resources/test_data/gather.json
deleted file mode 100644
index a67e708ae20..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/gather.json
+++ /dev/null
@@ -1,1495 +0,0 @@
-{
- "tests": [
- {
- "name": "gather float32 1D tensor and uint32 0D scalar indices default options",
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- -66.05901336669922,
- -68.9197006225586,
- -77.02045440673828,
- -26.158037185668945,
- 89.0337142944336,
- -45.89653396606445,
- 43.84803771972656,
- 48.81806945800781,
- 51.79948425292969,
- 41.94132614135742,
- -1.1303654909133911,
- -50.42131042480469,
- 90.2870101928711,
- 55.620765686035156,
- 44.92119598388672,
- 56.828636169433594,
- 10.829925537109375,
- -19.693084716796875,
- -37.696800231933594,
- 43.11057662963867,
- 0.9129875898361206,
- -7.699817180633545,
- 25.76774024963379,
- 73.60064697265625
- ],
- "type": "float32"
- },
- "indices": {
- "shape": [],
- "data": [
- 4
- ],
- "type": "uint32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [],
- "data": [
- 89.0337142944336
- ],
- "type": "float32"
- }
- },
- {
- "name": "gather float32 1D tensor and int32 0D scalar indices default options",
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- -66.05901336669922,
- -68.9197006225586,
- -77.02045440673828,
- -26.158037185668945,
- 89.0337142944336,
- -45.89653396606445,
- 43.84803771972656,
- 48.81806945800781,
- 51.79948425292969,
- 41.94132614135742,
- -1.1303654909133911,
- -50.42131042480469,
- 90.2870101928711,
- 55.620765686035156,
- 44.92119598388672,
- 56.828636169433594,
- 10.829925537109375,
- -19.693084716796875,
- -37.696800231933594,
- 43.11057662963867,
- 0.9129875898361206,
- -7.699817180633545,
- 25.76774024963379,
- 73.60064697265625
- ],
- "type": "float32"
- },
- "indices": {
- "shape": [],
- "data": [
- 4
- ],
- "type": "int32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [],
- "data": [
- 89.0337142944336
- ],
- "type": "float32"
- }
- },
- {
- "name": "gather float32 1D tensor and int64 0D scalar indices default options",
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- -66.05901336669922,
- -68.9197006225586,
- -77.02045440673828,
- -26.158037185668945,
- 89.0337142944336,
- -45.89653396606445,
- 43.84803771972656,
- 48.81806945800781,
- 51.79948425292969,
- 41.94132614135742,
- -1.1303654909133911,
- -50.42131042480469,
- 90.2870101928711,
- 55.620765686035156,
- 44.92119598388672,
- 56.828636169433594,
- 10.829925537109375,
- -19.693084716796875,
- -37.696800231933594,
- 43.11057662963867,
- 0.9129875898361206,
- -7.699817180633545,
- 25.76774024963379,
- 73.60064697265625
- ],
- "type": "float32"
- },
- "indices": {
- "shape": [],
- "data": [
- 0
- ],
- "type": "int64"
- }
- },
- "expected": {
- "name": "output",
- "shape": [],
- "data": [
- -66.05901336669922
- ],
- "type": "float32"
- }
- },
- {
- "name": "gather float32 1D tensor and int64 1D indices default options",
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- -66.05901336669922,
- -68.9197006225586,
- -77.02045440673828,
- -26.158037185668945,
- 89.0337142944336,
- -45.89653396606445,
- 43.84803771972656,
- 48.81806945800781,
- 51.79948425292969,
- 41.94132614135742,
- -1.1303654909133911,
- -50.42131042480469,
- 90.2870101928711,
- 55.620765686035156,
- 44.92119598388672,
- 56.828636169433594,
- 10.829925537109375,
- -19.693084716796875,
- -37.696800231933594,
- 43.11057662963867,
- 0.9129875898361206,
- -7.699817180633545,
- 25.76774024963379,
- 73.60064697265625
- ],
- "type": "float32"
- },
- "indices": {
- "shape": [8],
- "data": [
- 16,
- 20,
- 6,
- 11,
- 17,
- 19,
- 13,
- 17
- ],
- "type": "int64"
- }
- },
- "expected": {
- "name": "output",
- "shape": [8],
- "data": [
- 10.829925537109375,
- 0.9129875898361206,
- 43.84803771972656,
- -50.42131042480469,
- -19.693084716796875,
- 43.11057662963867,
- 55.620765686035156,
- -19.693084716796875
- ],
- "type": "float32"
- }
- },
- {
- "name": "gather float32 1D tensor and int64 2D indices default options",
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- -66.05901336669922,
- -68.9197006225586,
- -77.02045440673828,
- -26.158037185668945,
- 89.0337142944336,
- -45.89653396606445,
- 43.84803771972656,
- 48.81806945800781,
- 51.79948425292969,
- 41.94132614135742,
- -1.1303654909133911,
- -50.42131042480469,
- 90.2870101928711,
- 55.620765686035156,
- 44.92119598388672,
- 56.828636169433594,
- 10.829925537109375,
- -19.693084716796875,
- -37.696800231933594,
- 43.11057662963867,
- 0.9129875898361206,
- -7.699817180633545,
- 25.76774024963379,
- 73.60064697265625
- ],
- "type": "float32"
- },
- "indices": {
- "shape": [2, 2],
- "data": [
- 14,
- 9,
- 21,
- 17
- ],
- "type": "int64"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2],
- "data": [
- 44.92119598388672,
- 41.94132614135742,
- -7.699817180633545,
- -19.693084716796875
- ],
- "type": "float32"
- }
- },
- {
- "name": "gather float32 1D tensor and int64 3D indices default options",
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- -66.05901336669922,
- -68.9197006225586,
- -77.02045440673828,
- -26.158037185668945,
- 89.0337142944336,
- -45.89653396606445,
- 43.84803771972656,
- 48.81806945800781,
- 51.79948425292969,
- 41.94132614135742,
- -1.1303654909133911,
- -50.42131042480469,
- 90.2870101928711,
- 55.620765686035156,
- 44.92119598388672,
- 56.828636169433594,
- 10.829925537109375,
- -19.693084716796875,
- -37.696800231933594,
- 43.11057662963867,
- 0.9129875898361206,
- -7.699817180633545,
- 25.76774024963379,
- 73.60064697265625
- ],
- "type": "float32"
- },
- "indices": {
- "shape": [2, 3, 3],
- "data": [
- 17,
- 19,
- 14,
- 16,
- 13,
- 0,
- 5,
- 15,
- 18,
- 18,
- 6,
- 20,
- 7,
- 22,
- 5,
- 1,
- 4,
- 19
- ],
- "type": "int64"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 3, 3],
- "data": [
- -19.693084716796875,
- 43.11057662963867,
- 44.92119598388672,
- 10.829925537109375,
- 55.620765686035156,
- -66.05901336669922,
- -45.89653396606445,
- 56.828636169433594,
- -37.696800231933594,
- -37.696800231933594,
- 43.84803771972656,
- 0.9129875898361206,
- 48.81806945800781,
- 25.76774024963379,
- -45.89653396606445,
- -68.9197006225586,
- 89.0337142944336,
- 43.11057662963867
- ],
- "type": "float32"
- }
- },
- {
- "name": "gather float32 1D tensor and int64 4D indices default options",
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- -66.05901336669922,
- -68.9197006225586,
- -77.02045440673828,
- -26.158037185668945,
- 89.0337142944336,
- -45.89653396606445,
- 43.84803771972656,
- 48.81806945800781,
- 51.79948425292969,
- 41.94132614135742,
- -1.1303654909133911,
- -50.42131042480469,
- 90.2870101928711,
- 55.620765686035156,
- 44.92119598388672,
- 56.828636169433594,
- 10.829925537109375,
- -19.693084716796875,
- -37.696800231933594,
- 43.11057662963867,
- 0.9129875898361206,
- -7.699817180633545,
- 25.76774024963379,
- 73.60064697265625
- ],
- "type": "float32"
- },
- "indices": {
- "shape": [1, 2, 2, 3],
- "data": [
- 18,
- 18,
- 22,
- 11,
- 8,
- 15,
- 12,
- 11,
- 7,
- 13,
- 7,
- 7
- ],
- "type": "int64"
- }
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 2, 3],
- "data": [
- -37.696800231933594,
- -37.696800231933594,
- 25.76774024963379,
- -50.42131042480469,
- 51.79948425292969,
- 56.828636169433594,
- 90.2870101928711,
- -50.42131042480469,
- 48.81806945800781,
- 55.620765686035156,
- 48.81806945800781,
- 48.81806945800781
- ],
- "type": "float32"
- }
- },
- {
- "name": "gather float32 2D tensor and 0D scalar indices default options",
- "inputs": {
- "input": {
- "shape": [12, 2],
- "data": [
- -66.05901336669922,
- -68.9197006225586,
- -77.02045440673828,
- -26.158037185668945,
- 89.0337142944336,
- -45.89653396606445,
- 43.84803771972656,
- 48.81806945800781,
- 51.79948425292969,
- 41.94132614135742,
- -1.1303654909133911,
- -50.42131042480469,
- 90.2870101928711,
- 55.620765686035156,
- 44.92119598388672,
- 56.828636169433594,
- 10.829925537109375,
- -19.693084716796875,
- -37.696800231933594,
- 43.11057662963867,
- 0.9129875898361206,
- -7.699817180633545,
- 25.76774024963379,
- 73.60064697265625
- ],
- "type": "float32"
- },
- "indices": {
- "shape": [],
- "data": [
- 11
- ],
- "type": "int64"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2],
- "data": [
- 25.76774024963379,
- 73.60064697265625
- ],
- "type": "float32"
- }
- },
- {
- "name": "gather float32 2D tensor and 1D indices default options",
- "inputs": {
- "input": {
- "shape": [12, 2],
- "data": [
- -66.05901336669922,
- -68.9197006225586,
- -77.02045440673828,
- -26.158037185668945,
- 89.0337142944336,
- -45.89653396606445,
- 43.84803771972656,
- 48.81806945800781,
- 51.79948425292969,
- 41.94132614135742,
- -1.1303654909133911,
- -50.42131042480469,
- 90.2870101928711,
- 55.620765686035156,
- 44.92119598388672,
- 56.828636169433594,
- 10.829925537109375,
- -19.693084716796875,
- -37.696800231933594,
- 43.11057662963867,
- 0.9129875898361206,
- -7.699817180633545,
- 25.76774024963379,
- 73.60064697265625
- ],
- "type": "float32"
- },
- "indices": {
- "shape": [8],
- "data": [
- 1,
- 10,
- 9,
- 0,
- 3,
- 5,
- 3,
- 8
- ],
- "type": "int64"
- }
- },
- "expected": {
- "name": "output",
- "shape": [8, 2],
- "data": [
- -77.02045440673828,
- -26.158037185668945,
- 0.9129875898361206,
- -7.699817180633545,
- -37.696800231933594,
- 43.11057662963867,
- -66.05901336669922,
- -68.9197006225586,
- 43.84803771972656,
- 48.81806945800781,
- -1.1303654909133911,
- -50.42131042480469,
- 43.84803771972656,
- 48.81806945800781,
- 10.829925537109375,
- -19.693084716796875
- ],
- "type": "float32"
- }
- },
- {
- "name": "gather float32 2D tensor and 2D indices default options",
- "inputs": {
- "input": {
- "shape": [12, 2],
- "data": [
- -66.05901336669922,
- -68.9197006225586,
- -77.02045440673828,
- -26.158037185668945,
- 89.0337142944336,
- -45.89653396606445,
- 43.84803771972656,
- 48.81806945800781,
- 51.79948425292969,
- 41.94132614135742,
- -1.1303654909133911,
- -50.42131042480469,
- 90.2870101928711,
- 55.620765686035156,
- 44.92119598388672,
- 56.828636169433594,
- 10.829925537109375,
- -19.693084716796875,
- -37.696800231933594,
- 43.11057662963867,
- 0.9129875898361206,
- -7.699817180633545,
- 25.76774024963379,
- 73.60064697265625
- ],
- "type": "float32"
- },
- "indices": {
- "shape": [2, 2],
- "data": [
- 4,
- 8,
- 9,
- 10
- ],
- "type": "int64"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2],
- "data": [
- 51.79948425292969,
- 41.94132614135742,
- 10.829925537109375,
- -19.693084716796875,
- -37.696800231933594,
- 43.11057662963867,
- 0.9129875898361206,
- -7.699817180633545
- ],
- "type": "float32"
- }
- },
- {
- "name": "gather float32 2D tensor and 3D indices default options",
- "inputs": {
- "input": {
- "shape": [12, 2],
- "data": [
- -66.05901336669922,
- -68.9197006225586,
- -77.02045440673828,
- -26.158037185668945,
- 89.0337142944336,
- -45.89653396606445,
- 43.84803771972656,
- 48.81806945800781,
- 51.79948425292969,
- 41.94132614135742,
- -1.1303654909133911,
- -50.42131042480469,
- 90.2870101928711,
- 55.620765686035156,
- 44.92119598388672,
- 56.828636169433594,
- 10.829925537109375,
- -19.693084716796875,
- -37.696800231933594,
- 43.11057662963867,
- 0.9129875898361206,
- -7.699817180633545,
- 25.76774024963379,
- 73.60064697265625
- ],
- "type": "float32"
- },
- "indices": {
- "shape": [2, 3, 3],
- "data": [
- 8,
- 2,
- 2,
- 3,
- 4,
- 1,
- 2,
- 2,
- 7,
- 11,
- 4,
- 11,
- 6,
- 6,
- 7,
- 3,
- 11,
- 10
- ],
- "type": "int64"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 3, 3, 2],
- "data": [
- 10.829925537109375,
- -19.693084716796875,
- 89.0337142944336,
- -45.89653396606445,
- 89.0337142944336,
- -45.89653396606445,
- 43.84803771972656,
- 48.81806945800781,
- 51.79948425292969,
- 41.94132614135742,
- -77.02045440673828,
- -26.158037185668945,
- 89.0337142944336,
- -45.89653396606445,
- 89.0337142944336,
- -45.89653396606445,
- 44.92119598388672,
- 56.828636169433594,
- 25.76774024963379,
- 73.60064697265625,
- 51.79948425292969,
- 41.94132614135742,
- 25.76774024963379,
- 73.60064697265625,
- 90.2870101928711,
- 55.620765686035156,
- 90.2870101928711,
- 55.620765686035156,
- 44.92119598388672,
- 56.828636169433594,
- 43.84803771972656,
- 48.81806945800781,
- 25.76774024963379,
- 73.60064697265625,
- 0.9129875898361206,
- -7.699817180633545
- ],
- "type": "float32"
- }
- },
- {
- "name": "gather float32 2D tensor and 4D indices default options",
- "inputs": {
- "input": {
- "shape": [12, 2],
- "data": [
- -66.05901336669922,
- -68.9197006225586,
- -77.02045440673828,
- -26.158037185668945,
- 89.0337142944336,
- -45.89653396606445,
- 43.84803771972656,
- 48.81806945800781,
- 51.79948425292969,
- 41.94132614135742,
- -1.1303654909133911,
- -50.42131042480469,
- 90.2870101928711,
- 55.620765686035156,
- 44.92119598388672,
- 56.828636169433594,
- 10.829925537109375,
- -19.693084716796875,
- -37.696800231933594,
- 43.11057662963867,
- 0.9129875898361206,
- -7.699817180633545,
- 25.76774024963379,
- 73.60064697265625
- ],
- "type": "float32"
- },
- "indices": {
- "shape": [1, 2, 2, 3],
- "data": [
- 6,
- 9,
- 7,
- 3,
- 4,
- 7,
- 4,
- 3,
- 7,
- 7,
- 6,
- 0
- ],
- "type": "int64"
- }
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 2, 3, 2],
- "data": [
- 90.2870101928711,
- 55.620765686035156,
- -37.696800231933594,
- 43.11057662963867,
- 44.92119598388672,
- 56.828636169433594,
- 43.84803771972656,
- 48.81806945800781,
- 51.79948425292969,
- 41.94132614135742,
- 44.92119598388672,
- 56.828636169433594,
- 51.79948425292969,
- 41.94132614135742,
- 43.84803771972656,
- 48.81806945800781,
- 44.92119598388672,
- 56.828636169433594,
- 44.92119598388672,
- 56.828636169433594,
- 90.2870101928711,
- 55.620765686035156,
- -66.05901336669922,
- -68.9197006225586
- ],
- "type": "float32"
- }
- },
- {
- "name": "gather float32 3D tensor and 2D indices default options",
- "inputs": {
- "input": {
- "shape": [3, 4, 2],
- "data": [
- -66.05901336669922,
- -68.9197006225586,
- -77.02045440673828,
- -26.158037185668945,
- 89.0337142944336,
- -45.89653396606445,
- 43.84803771972656,
- 48.81806945800781,
- 51.79948425292969,
- 41.94132614135742,
- -1.1303654909133911,
- -50.42131042480469,
- 90.2870101928711,
- 55.620765686035156,
- 44.92119598388672,
- 56.828636169433594,
- 10.829925537109375,
- -19.693084716796875,
- -37.696800231933594,
- 43.11057662963867,
- 0.9129875898361206,
- -7.699817180633545,
- 25.76774024963379,
- 73.60064697265625
- ],
- "type": "float32"
- },
- "indices": {
- "shape": [2, 2],
- "data": [
- 2,
- 1,
- 1,
- 1
- ],
- "type": "int64"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 4, 2],
- "data": [
- 10.829925537109375,
- -19.693084716796875,
- -37.696800231933594,
- 43.11057662963867,
- 0.9129875898361206,
- -7.699817180633545,
- 25.76774024963379,
- 73.60064697265625,
- 51.79948425292969,
- 41.94132614135742,
- -1.1303654909133911,
- -50.42131042480469,
- 90.2870101928711,
- 55.620765686035156,
- 44.92119598388672,
- 56.828636169433594,
- 51.79948425292969,
- 41.94132614135742,
- -1.1303654909133911,
- -50.42131042480469,
- 90.2870101928711,
- 55.620765686035156,
- 44.92119598388672,
- 56.828636169433594,
- 51.79948425292969,
- 41.94132614135742,
- -1.1303654909133911,
- -50.42131042480469,
- 90.2870101928711,
- 55.620765686035156,
- 44.92119598388672,
- 56.828636169433594
- ],
- "type": "float32"
- }
- },
- {
- "name": "gather float32 4D tensor and 2D indices default options",
- "inputs": {
- "input": {
- "shape": [8, 1, 1, 3],
- "data": [
- -66.05901336669922,
- -68.9197006225586,
- -77.02045440673828,
- -26.158037185668945,
- 89.0337142944336,
- -45.89653396606445,
- 43.84803771972656,
- 48.81806945800781,
- 51.79948425292969,
- 41.94132614135742,
- -1.1303654909133911,
- -50.42131042480469,
- 90.2870101928711,
- 55.620765686035156,
- 44.92119598388672,
- 56.828636169433594,
- 10.829925537109375,
- -19.693084716796875,
- -37.696800231933594,
- 43.11057662963867,
- 0.9129875898361206,
- -7.699817180633545,
- 25.76774024963379,
- 73.60064697265625
- ],
- "type": "float32"
- },
- "indices": {
- "shape": [2, 2],
- "data": [
- 0,
- 0,
- 7,
- 4
- ],
- "type": "int64"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 1, 1, 3],
- "data": [
- -66.05901336669922,
- -68.9197006225586,
- -77.02045440673828,
- -66.05901336669922,
- -68.9197006225586,
- -77.02045440673828,
- -7.699817180633545,
- 25.76774024963379,
- 73.60064697265625,
- 90.2870101928711,
- 55.620765686035156,
- 44.92119598388672
- ],
- "type": "float32"
- }
- },
- {
- "name": "gather float32 5D tensor and 1D indices default options",
- "inputs": {
- "input": {
- "shape": [4, 2, 1, 1, 3],
- "data": [
- -66.05901336669922,
- -68.9197006225586,
- -77.02045440673828,
- -26.158037185668945,
- 89.0337142944336,
- -45.89653396606445,
- 43.84803771972656,
- 48.81806945800781,
- 51.79948425292969,
- 41.94132614135742,
- -1.1303654909133911,
- -50.42131042480469,
- 90.2870101928711,
- 55.620765686035156,
- 44.92119598388672,
- 56.828636169433594,
- 10.829925537109375,
- -19.693084716796875,
- -37.696800231933594,
- 43.11057662963867,
- 0.9129875898361206,
- -7.699817180633545,
- 25.76774024963379,
- 73.60064697265625
- ],
- "type": "float32"
- },
- "indices": {
- "shape": [3],
- "data": [
- 3,
- 2,
- 2
- ],
- "type": "int64"
- }
- },
- "expected": {
- "name": "output",
- "shape": [3, 2, 1, 1, 3],
- "data": [
- -37.696800231933594,
- 43.11057662963867,
- 0.9129875898361206,
- -7.699817180633545,
- 25.76774024963379,
- 73.60064697265625,
- 90.2870101928711,
- 55.620765686035156,
- 44.92119598388672,
- 56.828636169433594,
- 10.829925537109375,
- -19.693084716796875,
- 90.2870101928711,
- 55.620765686035156,
- 44.92119598388672,
- 56.828636169433594,
- 10.829925537109375,
- -19.693084716796875
- ],
- "type": "float32"
- }
- },
- {
- "name": "gather float32 3D tensor and 1D indices options.axis=1",
- "inputs": {
- "input": {
- "shape": [3, 4, 2],
- "data": [
- -66.05901336669922,
- -68.9197006225586,
- -77.02045440673828,
- -26.158037185668945,
- 89.0337142944336,
- -45.89653396606445,
- 43.84803771972656,
- 48.81806945800781,
- 51.79948425292969,
- 41.94132614135742,
- -1.1303654909133911,
- -50.42131042480469,
- 90.2870101928711,
- 55.620765686035156,
- 44.92119598388672,
- 56.828636169433594,
- 10.829925537109375,
- -19.693084716796875,
- -37.696800231933594,
- 43.11057662963867,
- 0.9129875898361206,
- -7.699817180633545,
- 25.76774024963379,
- 73.60064697265625
- ],
- "type": "float32"
- },
- "indices": {
- "shape": [3],
- "data": [
- 1,
- 1,
- 2
- ],
- "type": "int64"
- }
- },
- "options": {
- "axis": 1
- },
- "expected": {
- "name": "output",
- "shape": [3, 3, 2],
- "data": [
- -77.02045440673828,
- -26.158037185668945,
- -77.02045440673828,
- -26.158037185668945,
- 89.0337142944336,
- -45.89653396606445,
- -1.1303654909133911,
- -50.42131042480469,
- -1.1303654909133911,
- -50.42131042480469,
- 90.2870101928711,
- 55.620765686035156,
- -37.696800231933594,
- 43.11057662963867,
- -37.696800231933594,
- 43.11057662963867,
- 0.9129875898361206,
- -7.699817180633545
- ],
- "type": "float32"
- }
- },
- {
- "name": "gather float32 3D tensor and 2D indices options.axis=2",
- "inputs": {
- "input": {
- "shape": [3, 4, 2],
- "data": [
- -66.05901336669922,
- -68.9197006225586,
- -77.02045440673828,
- -26.158037185668945,
- 89.0337142944336,
- -45.89653396606445,
- 43.84803771972656,
- 48.81806945800781,
- 51.79948425292969,
- 41.94132614135742,
- -1.1303654909133911,
- -50.42131042480469,
- 90.2870101928711,
- 55.620765686035156,
- 44.92119598388672,
- 56.828636169433594,
- 10.829925537109375,
- -19.693084716796875,
- -37.696800231933594,
- 43.11057662963867,
- 0.9129875898361206,
- -7.699817180633545,
- 25.76774024963379,
- 73.60064697265625
- ],
- "type": "float32"
- },
- "indices": {
- "shape": [2, 2],
- "data": [
- 0,
- 0,
- 0,
- 1
- ],
- "type": "int64"
- }
- },
- "options": {
- "axis": 2
- },
- "expected": {
- "name": "output",
- "shape": [3, 4, 2, 2],
- "data": [
- -66.05901336669922,
- -66.05901336669922,
- -66.05901336669922,
- -68.9197006225586,
- -77.02045440673828,
- -77.02045440673828,
- -77.02045440673828,
- -26.158037185668945,
- 89.0337142944336,
- 89.0337142944336,
- 89.0337142944336,
- -45.89653396606445,
- 43.84803771972656,
- 43.84803771972656,
- 43.84803771972656,
- 48.81806945800781,
- 51.79948425292969,
- 51.79948425292969,
- 51.79948425292969,
- 41.94132614135742,
- -1.1303654909133911,
- -1.1303654909133911,
- -1.1303654909133911,
- -50.42131042480469,
- 90.2870101928711,
- 90.2870101928711,
- 90.2870101928711,
- 55.620765686035156,
- 44.92119598388672,
- 44.92119598388672,
- 44.92119598388672,
- 56.828636169433594,
- 10.829925537109375,
- 10.829925537109375,
- 10.829925537109375,
- -19.693084716796875,
- -37.696800231933594,
- -37.696800231933594,
- -37.696800231933594,
- 43.11057662963867,
- 0.9129875898361206,
- 0.9129875898361206,
- 0.9129875898361206,
- -7.699817180633545,
- 25.76774024963379,
- 25.76774024963379,
- 25.76774024963379,
- 73.60064697265625
- ],
- "type": "float32"
- }
- },
- {
- "name": "gather float32 4D tensor and 2D indices explict options.axis=0",
- "inputs": {
- "input": {
- "shape": [8, 1, 1, 3],
- "data": [
- -66.05901336669922,
- -68.9197006225586,
- -77.02045440673828,
- -26.158037185668945,
- 89.0337142944336,
- -45.89653396606445,
- 43.84803771972656,
- 48.81806945800781,
- 51.79948425292969,
- 41.94132614135742,
- -1.1303654909133911,
- -50.42131042480469,
- 90.2870101928711,
- 55.620765686035156,
- 44.92119598388672,
- 56.828636169433594,
- 10.829925537109375,
- -19.693084716796875,
- -37.696800231933594,
- 43.11057662963867,
- 0.9129875898361206,
- -7.699817180633545,
- 25.76774024963379,
- 73.60064697265625
- ],
- "type": "float32"
- },
- "indices": {
- "shape": [2, 2],
- "data": [
- 0,
- 0,
- 7,
- 4
- ],
- "type": "int64"
- }
- },
- "options": {
- "axis": 0
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 1, 1, 3],
- "data": [
- -66.05901336669922,
- -68.9197006225586,
- -77.02045440673828,
- -66.05901336669922,
- -68.9197006225586,
- -77.02045440673828,
- -7.699817180633545,
- 25.76774024963379,
- 73.60064697265625,
- 90.2870101928711,
- 55.620765686035156,
- 44.92119598388672
- ],
- "type": "float32"
- }
- },
- {
- "name": "gather float32 5D tensor and 0D scalar indices options.axis=4",
- "inputs": {
- "input": {
- "shape": [4, 2, 1, 1, 3],
- "data": [
- -66.05901336669922,
- -68.9197006225586,
- -77.02045440673828,
- -26.158037185668945,
- 89.0337142944336,
- -45.89653396606445,
- 43.84803771972656,
- 48.81806945800781,
- 51.79948425292969,
- 41.94132614135742,
- -1.1303654909133911,
- -50.42131042480469,
- 90.2870101928711,
- 55.620765686035156,
- 44.92119598388672,
- 56.828636169433594,
- 10.829925537109375,
- -19.693084716796875,
- -37.696800231933594,
- 43.11057662963867,
- 0.9129875898361206,
- -7.699817180633545,
- 25.76774024963379,
- 73.60064697265625
- ],
- "type": "float32"
- },
- "indices": {
- "shape": [],
- "data": [
- 1
- ],
- "type": "int64"
- }
- },
- "options": {
- "axis": 4
- },
- "expected": {
- "name": "output",
- "shape": [4, 2, 1, 1],
- "data": [
- -68.9197006225586,
- 89.0337142944336,
- 48.81806945800781,
- -1.1303654909133911,
- 55.620765686035156,
- 10.829925537109375,
- 43.11057662963867,
- 25.76774024963379
- ],
- "type": "float32"
- }
- },
- {
- "name": "gather float32 2D tensor and int32 0D negative indices default options",
- "inputs": {
- "input": {
- "shape": [2, 12],
- "data": [
- -66.05901336669922,
- -68.9197006225586,
- -77.02045440673828,
- -26.158037185668945,
- 89.0337142944336,
- -45.89653396606445,
- 43.84803771972656,
- 48.81806945800781,
- 51.79948425292969,
- 41.94132614135742,
- -1.1303654909133911,
- -50.42131042480469,
- 90.2870101928711,
- 55.620765686035156,
- 44.92119598388672,
- 56.828636169433594,
- 10.829925537109375,
- -19.693084716796875,
- -37.696800231933594,
- 43.11057662963867,
- 0.9129875898361206,
- -7.699817180633545,
- 25.76774024963379,
- 73.60064697265625
- ],
- "type": "float32"
- },
- "indices": {
- "shape": [],
- "data": [-2],
- "type": "int32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [12],
- "data": [
- -66.05901336669922,
- -68.9197006225586,
- -77.02045440673828,
- -26.158037185668945,
- 89.0337142944336,
- -45.89653396606445,
- 43.84803771972656,
- 48.81806945800781,
- 51.79948425292969,
- 41.94132614135742,
- -1.1303654909133911,
- -50.42131042480469
- ],
- "type": "float32"
- }
- },
- {
- "name": "gather float32 2D tensor and int32 0D out-of-bound positive indices default options",
- "inputs": {
- "input": {
- "shape": [2, 12],
- "data": [
- -66.05901336669922,
- -68.9197006225586,
- -77.02045440673828,
- -26.158037185668945,
- 89.0337142944336,
- -45.89653396606445,
- 43.84803771972656,
- 48.81806945800781,
- 51.79948425292969,
- 41.94132614135742,
- -1.1303654909133911,
- -50.42131042480469,
- 90.2870101928711,
- 55.620765686035156,
- 44.92119598388672,
- 56.828636169433594,
- 10.829925537109375,
- -19.693084716796875,
- -37.696800231933594,
- 43.11057662963867,
- 0.9129875898361206,
- -7.699817180633545,
- 25.76774024963379,
- 73.60064697265625
- ],
- "type": "float32"
- },
- "indices": {
- "shape": [],
- "data": [10],
- "type": "int32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [12],
- "data": [
- 90.2870101928711,
- 55.620765686035156,
- 44.92119598388672,
- 56.828636169433594,
- 10.829925537109375,
- -19.693084716796875,
- -37.696800231933594,
- 43.11057662963867,
- 0.9129875898361206,
- -7.699817180633545,
- 25.76774024963379,
- 73.60064697265625
- ],
- "type": "float32"
- }
- },
- {
- "name": "gather float32 2D tensor and int32 0D out-of-bound negative indices default options",
- "inputs": {
- "input": {
- "shape": [2, 12],
- "data": [
- -66.05901336669922,
- -68.9197006225586,
- -77.02045440673828,
- -26.158037185668945,
- 89.0337142944336,
- -45.89653396606445,
- 43.84803771972656,
- 48.81806945800781,
- 51.79948425292969,
- 41.94132614135742,
- -1.1303654909133911,
- -50.42131042480469,
- 90.2870101928711,
- 55.620765686035156,
- 44.92119598388672,
- 56.828636169433594,
- 10.829925537109375,
- -19.693084716796875,
- -37.696800231933594,
- 43.11057662963867,
- 0.9129875898361206,
- -7.699817180633545,
- 25.76774024963379,
- 73.60064697265625
- ],
- "type": "float32"
- },
- "indices": {
- "shape": [],
- "data": [-10],
- "type": "int32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [12],
- "data": [
- -66.05901336669922,
- -68.9197006225586,
- -77.02045440673828,
- -26.158037185668945,
- 89.0337142944336,
- -45.89653396606445,
- 43.84803771972656,
- 48.81806945800781,
- 51.79948425292969,
- 41.94132614135742,
- -1.1303654909133911,
- -50.42131042480469
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/gelu.json b/tests/wpt/tests/webnn/resources/test_data/gelu.json
deleted file mode 100644
index 3adf4b6a2b6..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/gelu.json
+++ /dev/null
@@ -1,771 +0,0 @@
-{
- "tests": [
- {
- "name": "gelu float32 0D scalar",
- "inputs": {
- "input": {
- "shape": [],
- "data": [
- -0.044885843992233276
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [],
- "data": [
- -0.021639423444867134
- ],
- "type": "float32"
- }
- },
- {
- "name": "gelu float16 0D scalar",
- "inputs": {
- "input": {
- "shape": [],
- "data": [
- -0.044891357421875
- ],
- "type": "float16"
- }
- },
- "expected": {
- "name": "output",
- "shape": [],
- "data": [
- -0.021636962890625
- ],
- "type": "float16"
- }
- },
- {
- "name": "gelu float32 1D tensor",
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- 0.878292441368103,
- -0.09706497937440872,
- 0.1367187649011612,
- 0.46406492590904236,
- -0.26635801792144775,
- -0.8252315521240234,
- 0.8530909419059753,
- 0.3846154808998108,
- 0.6772316694259644,
- -0.4811072051525116,
- 0.2983909249305725,
- 0.6777864098548889,
- -0.526228129863739,
- 0.3497541546821594,
- -0.12918996810913086,
- 0.5853934288024902,
- -0.8950720429420471,
- 0.028302494436502457,
- -0.09901237487792969,
- -0.8838679790496826,
- -0.596120297908783,
- 0.31863871216773987,
- 0.4794037640094757,
- -0.06489315629005432
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- 0.7115113139152527,
- -0.0447796992957592,
- 0.07579325884580612,
- 0.3149605691432953,
- -0.10520657151937485,
- -0.16885890066623688,
- 0.6851989030838013,
- 0.24989959597587585,
- 0.508513331413269,
- -0.1516546905040741,
- 0.18419598042964935,
- 0.509049117565155,
- -0.15753419697284698,
- 0.22270187735557556,
- -0.05795508995652199,
- 0.42198580503463745,
- -0.1659233123064041,
- 0.014470770955085754,
- -0.04560155048966408,
- -0.1665063202381134,
- -0.1642593890428543,
- 0.19914908707141876,
- 0.3279957175254822,
- -0.030767757445573807
- ],
- "type": "float32"
- }
- },
- {
- "name": "gelu float32 1D constant tensor",
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- 0.878292441368103,
- -0.09706497937440872,
- 0.1367187649011612,
- 0.46406492590904236,
- -0.26635801792144775,
- -0.8252315521240234,
- 0.8530909419059753,
- 0.3846154808998108,
- 0.6772316694259644,
- -0.4811072051525116,
- 0.2983909249305725,
- 0.6777864098548889,
- -0.526228129863739,
- 0.3497541546821594,
- -0.12918996810913086,
- 0.5853934288024902,
- -0.8950720429420471,
- 0.028302494436502457,
- -0.09901237487792969,
- -0.8838679790496826,
- -0.596120297908783,
- 0.31863871216773987,
- 0.4794037640094757,
- -0.06489315629005432
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- 0.7115113139152527,
- -0.0447796992957592,
- 0.07579325884580612,
- 0.3149605691432953,
- -0.10520657151937485,
- -0.16885890066623688,
- 0.6851989030838013,
- 0.24989959597587585,
- 0.508513331413269,
- -0.1516546905040741,
- 0.18419598042964935,
- 0.509049117565155,
- -0.15753419697284698,
- 0.22270187735557556,
- -0.05795508995652199,
- 0.42198580503463745,
- -0.1659233123064041,
- 0.014470770955085754,
- -0.04560155048966408,
- -0.1665063202381134,
- -0.1642593890428543,
- 0.19914908707141876,
- 0.3279957175254822,
- -0.030767757445573807
- ],
- "type": "float32"
- }
- },
- {
- "name": "gelu float16 1D tensor",
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- 0.87841796875,
- -0.0970458984375,
- 0.13671875,
- 0.464111328125,
- -0.266357421875,
- -0.8251953125,
- 0.85302734375,
- 0.384521484375,
- 0.67724609375,
- -0.481201171875,
- 0.29833984375,
- 0.677734375,
- -0.5263671875,
- 0.349853515625,
- -0.129150390625,
- 0.58544921875,
- -0.89501953125,
- 0.0283050537109375,
- -0.0989990234375,
- -0.8837890625,
- -0.59619140625,
- 0.318603515625,
- 0.4794921875,
- -0.06488037109375
- ],
- "type": "float16"
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- 0.71142578125,
- -0.044769287109375,
- 0.0758056640625,
- 0.31494140625,
- -0.105224609375,
- -0.1688232421875,
- 0.68505859375,
- 0.2498779296875,
- 0.50830078125,
- -0.151611328125,
- 0.1842041015625,
- 0.5087890625,
- -0.1575927734375,
- 0.2227783203125,
- -0.057952880859375,
- 0.422119140625,
- -0.1658935546875,
- 0.01447296142578125,
- -0.04559326171875,
- -0.16650390625,
- -0.164306640625,
- 0.1990966796875,
- 0.328125,
- -0.03076171875
- ],
- "type": "float16"
- }
- },
- {
- "name": "gelu float32 2D tensor",
- "inputs": {
- "input": {
- "shape": [4, 6],
- "data": [
- 0.878292441368103,
- -0.09706497937440872,
- 0.1367187649011612,
- 0.46406492590904236,
- -0.26635801792144775,
- -0.8252315521240234,
- 0.8530909419059753,
- 0.3846154808998108,
- 0.6772316694259644,
- -0.4811072051525116,
- 0.2983909249305725,
- 0.6777864098548889,
- -0.526228129863739,
- 0.3497541546821594,
- -0.12918996810913086,
- 0.5853934288024902,
- -0.8950720429420471,
- 0.028302494436502457,
- -0.09901237487792969,
- -0.8838679790496826,
- -0.596120297908783,
- 0.31863871216773987,
- 0.4794037640094757,
- -0.06489315629005432
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- 0.7115113139152527,
- -0.0447796992957592,
- 0.07579325884580612,
- 0.3149605691432953,
- -0.10520657151937485,
- -0.16885890066623688,
- 0.6851989030838013,
- 0.24989959597587585,
- 0.508513331413269,
- -0.1516546905040741,
- 0.18419598042964935,
- 0.509049117565155,
- -0.15753419697284698,
- 0.22270187735557556,
- -0.05795508995652199,
- 0.42198580503463745,
- -0.1659233123064041,
- 0.014470770955085754,
- -0.04560155048966408,
- -0.1665063202381134,
- -0.1642593890428543,
- 0.19914908707141876,
- 0.3279957175254822,
- -0.030767757445573807
- ],
- "type": "float32"
- }
- },
- {
- "name": "gelu float16 2D tensor",
- "inputs": {
- "input": {
- "shape": [4, 6],
- "data": [
- 0.87841796875,
- -0.0970458984375,
- 0.13671875,
- 0.464111328125,
- -0.266357421875,
- -0.8251953125,
- 0.85302734375,
- 0.384521484375,
- 0.67724609375,
- -0.481201171875,
- 0.29833984375,
- 0.677734375,
- -0.5263671875,
- 0.349853515625,
- -0.129150390625,
- 0.58544921875,
- -0.89501953125,
- 0.0283050537109375,
- -0.0989990234375,
- -0.8837890625,
- -0.59619140625,
- 0.318603515625,
- 0.4794921875,
- -0.06488037109375
- ],
- "type": "float16"
- }
- },
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- 0.71142578125,
- -0.044769287109375,
- 0.0758056640625,
- 0.31494140625,
- -0.105224609375,
- -0.1688232421875,
- 0.68505859375,
- 0.2498779296875,
- 0.50830078125,
- -0.151611328125,
- 0.1842041015625,
- 0.5087890625,
- -0.1575927734375,
- 0.2227783203125,
- -0.057952880859375,
- 0.422119140625,
- -0.1658935546875,
- 0.01447296142578125,
- -0.04559326171875,
- -0.16650390625,
- -0.164306640625,
- 0.1990966796875,
- 0.328125,
- -0.03076171875
- ],
- "type": "float16"
- }
- },
- {
- "name": "gelu float32 3D tensor",
- "inputs": {
- "input": {
- "shape": [2, 3, 4],
- "data": [
- 0.878292441368103,
- -0.09706497937440872,
- 0.1367187649011612,
- 0.46406492590904236,
- -0.26635801792144775,
- -0.8252315521240234,
- 0.8530909419059753,
- 0.3846154808998108,
- 0.6772316694259644,
- -0.4811072051525116,
- 0.2983909249305725,
- 0.6777864098548889,
- -0.526228129863739,
- 0.3497541546821594,
- -0.12918996810913086,
- 0.5853934288024902,
- -0.8950720429420471,
- 0.028302494436502457,
- -0.09901237487792969,
- -0.8838679790496826,
- -0.596120297908783,
- 0.31863871216773987,
- 0.4794037640094757,
- -0.06489315629005432
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 3, 4],
- "data": [
- 0.7115113139152527,
- -0.0447796992957592,
- 0.07579325884580612,
- 0.3149605691432953,
- -0.10520657151937485,
- -0.16885890066623688,
- 0.6851989030838013,
- 0.24989959597587585,
- 0.508513331413269,
- -0.1516546905040741,
- 0.18419598042964935,
- 0.509049117565155,
- -0.15753419697284698,
- 0.22270187735557556,
- -0.05795508995652199,
- 0.42198580503463745,
- -0.1659233123064041,
- 0.014470770955085754,
- -0.04560155048966408,
- -0.1665063202381134,
- -0.1642593890428543,
- 0.19914908707141876,
- 0.3279957175254822,
- -0.030767757445573807
- ],
- "type": "float32"
- }
- },
- {
- "name": "gelu float16 3D tensor",
- "inputs": {
- "input": {
- "shape": [2, 3, 4],
- "data": [
- 0.87841796875,
- -0.0970458984375,
- 0.13671875,
- 0.464111328125,
- -0.266357421875,
- -0.8251953125,
- 0.85302734375,
- 0.384521484375,
- 0.67724609375,
- -0.481201171875,
- 0.29833984375,
- 0.677734375,
- -0.5263671875,
- 0.349853515625,
- -0.129150390625,
- 0.58544921875,
- -0.89501953125,
- 0.0283050537109375,
- -0.0989990234375,
- -0.8837890625,
- -0.59619140625,
- 0.318603515625,
- 0.4794921875,
- -0.06488037109375
- ],
- "type": "float16"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 3, 4],
- "data": [
- 0.71142578125,
- -0.044769287109375,
- 0.0758056640625,
- 0.31494140625,
- -0.105224609375,
- -0.1688232421875,
- 0.68505859375,
- 0.2498779296875,
- 0.50830078125,
- -0.151611328125,
- 0.1842041015625,
- 0.5087890625,
- -0.1575927734375,
- 0.2227783203125,
- -0.057952880859375,
- 0.422119140625,
- -0.1658935546875,
- 0.01447296142578125,
- -0.04559326171875,
- -0.16650390625,
- -0.164306640625,
- 0.1990966796875,
- 0.328125,
- -0.03076171875
- ],
- "type": "float16"
- }
- },
- {
- "name": "gelu float32 4D tensor",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 0.878292441368103,
- -0.09706497937440872,
- 0.1367187649011612,
- 0.46406492590904236,
- -0.26635801792144775,
- -0.8252315521240234,
- 0.8530909419059753,
- 0.3846154808998108,
- 0.6772316694259644,
- -0.4811072051525116,
- 0.2983909249305725,
- 0.6777864098548889,
- -0.526228129863739,
- 0.3497541546821594,
- -0.12918996810913086,
- 0.5853934288024902,
- -0.8950720429420471,
- 0.028302494436502457,
- -0.09901237487792969,
- -0.8838679790496826,
- -0.596120297908783,
- 0.31863871216773987,
- 0.4794037640094757,
- -0.06489315629005432
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 0.7115113139152527,
- -0.0447796992957592,
- 0.07579325884580612,
- 0.3149605691432953,
- -0.10520657151937485,
- -0.16885890066623688,
- 0.6851989030838013,
- 0.24989959597587585,
- 0.508513331413269,
- -0.1516546905040741,
- 0.18419598042964935,
- 0.509049117565155,
- -0.15753419697284698,
- 0.22270187735557556,
- -0.05795508995652199,
- 0.42198580503463745,
- -0.1659233123064041,
- 0.014470770955085754,
- -0.04560155048966408,
- -0.1665063202381134,
- -0.1642593890428543,
- 0.19914908707141876,
- 0.3279957175254822,
- -0.030767757445573807
- ],
- "type": "float32"
- }
- },
- {
- "name": "gelu float16 4D tensor",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 0.87841796875,
- -0.0970458984375,
- 0.13671875,
- 0.464111328125,
- -0.266357421875,
- -0.8251953125,
- 0.85302734375,
- 0.384521484375,
- 0.67724609375,
- -0.481201171875,
- 0.29833984375,
- 0.677734375,
- -0.5263671875,
- 0.349853515625,
- -0.129150390625,
- 0.58544921875,
- -0.89501953125,
- 0.0283050537109375,
- -0.0989990234375,
- -0.8837890625,
- -0.59619140625,
- 0.318603515625,
- 0.4794921875,
- -0.06488037109375
- ],
- "type": "float16"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 0.71142578125,
- -0.044769287109375,
- 0.0758056640625,
- 0.31494140625,
- -0.105224609375,
- -0.1688232421875,
- 0.68505859375,
- 0.2498779296875,
- 0.50830078125,
- -0.151611328125,
- 0.1842041015625,
- 0.5087890625,
- -0.1575927734375,
- 0.2227783203125,
- -0.057952880859375,
- 0.422119140625,
- -0.1658935546875,
- 0.01447296142578125,
- -0.04559326171875,
- -0.16650390625,
- -0.164306640625,
- 0.1990966796875,
- 0.328125,
- -0.03076171875
- ],
- "type": "float16"
- }
- },
- {
- "name": "gelu float32 5D tensor",
- "inputs": {
- "input": {
- "shape": [2, 1, 4, 1, 3],
- "data": [
- 0.878292441368103,
- -0.09706497937440872,
- 0.1367187649011612,
- 0.46406492590904236,
- -0.26635801792144775,
- -0.8252315521240234,
- 0.8530909419059753,
- 0.3846154808998108,
- 0.6772316694259644,
- -0.4811072051525116,
- 0.2983909249305725,
- 0.6777864098548889,
- -0.526228129863739,
- 0.3497541546821594,
- -0.12918996810913086,
- 0.5853934288024902,
- -0.8950720429420471,
- 0.028302494436502457,
- -0.09901237487792969,
- -0.8838679790496826,
- -0.596120297908783,
- 0.31863871216773987,
- 0.4794037640094757,
- -0.06489315629005432
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 1, 4, 1, 3],
- "data": [
- 0.7115113139152527,
- -0.0447796992957592,
- 0.07579325884580612,
- 0.3149605691432953,
- -0.10520657151937485,
- -0.16885890066623688,
- 0.6851989030838013,
- 0.24989959597587585,
- 0.508513331413269,
- -0.1516546905040741,
- 0.18419598042964935,
- 0.509049117565155,
- -0.15753419697284698,
- 0.22270187735557556,
- -0.05795508995652199,
- 0.42198580503463745,
- -0.1659233123064041,
- 0.014470770955085754,
- -0.04560155048966408,
- -0.1665063202381134,
- -0.1642593890428543,
- 0.19914908707141876,
- 0.3279957175254822,
- -0.030767757445573807
- ],
- "type": "float32"
- }
- },
- {
- "name": "gelu float16 5D tensor",
- "inputs": {
- "input": {
- "shape": [2, 1, 4, 1, 3],
- "data": [
- 0.87841796875,
- -0.0970458984375,
- 0.13671875,
- 0.464111328125,
- -0.266357421875,
- -0.8251953125,
- 0.85302734375,
- 0.384521484375,
- 0.67724609375,
- -0.481201171875,
- 0.29833984375,
- 0.677734375,
- -0.5263671875,
- 0.349853515625,
- -0.129150390625,
- 0.58544921875,
- -0.89501953125,
- 0.0283050537109375,
- -0.0989990234375,
- -0.8837890625,
- -0.59619140625,
- 0.318603515625,
- 0.4794921875,
- -0.06488037109375
- ],
- "type": "float16"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 1, 4, 1, 3],
- "data": [
- 0.71142578125,
- -0.044769287109375,
- 0.0758056640625,
- 0.31494140625,
- -0.105224609375,
- -0.1688232421875,
- 0.68505859375,
- 0.2498779296875,
- 0.50830078125,
- -0.151611328125,
- 0.1842041015625,
- 0.5087890625,
- -0.1575927734375,
- 0.2227783203125,
- -0.057952880859375,
- 0.422119140625,
- -0.1658935546875,
- 0.01447296142578125,
- -0.04559326171875,
- -0.16650390625,
- -0.164306640625,
- 0.1990966796875,
- 0.328125,
- -0.03076171875
- ],
- "type": "float16"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/gemm.json b/tests/wpt/tests/webnn/resources/test_data/gemm.json
deleted file mode 100644
index 23a18b316ca..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/gemm.json
+++ /dev/null
@@ -1,1953 +0,0 @@
-{
- "tests": [
- {
- "name": "gemm two float32 2D tensors (b is non-constant) default options",
- "inputs": {
- "a": {
- "shape": [3, 4],
- "data": [
- 82.98884511142329,
- 90.51641254722982,
- 59.6385201162642,
- 36.27187180381433,
- 18.96485038946509,
- 43.89479290862091,
- 98.89487912764056,
- 91.46013741088626,
- 50.51683887619669,
- 40.45679629199866,
- 50.76741460760452,
- 9.336554329198155
- ],
- "type": "float32"
- },
- "b": {
- "shape": [4, 5],
- "data": [
- 25.14739246484985,
- 66.69238549579231,
- 63.29909902139696,
- 10.629964783998469,
- 61.32737573972831,
- 0.003725653326558387,
- 16.499146388625483,
- 3.0366680571384252,
- 93.14021782678614,
- 70.08265680040718,
- 75.74880854000601,
- 96.6068806977233,
- 99.10042039275365,
- 23.243775283337477,
- 86.1185682132947,
- 42.90679144336773,
- 34.08055187293266,
- 87.37654561544477,
- 92.34209530787089,
- 60.32208994273669
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [3, 5],
- "data": [
- 8161.14697265625,
- 14025.82421875,
- 14607.5009765625,
- 14048.5322265625,
- 18757.09765625,
- 11892.5107421875,
- 14659.9755859375,
- 19125.74609375,
- 15034.27734375,
- 18273.080078125,
- 5516.6904296875,
- 9259.267578125,
- 9167.3916015625,
- 6347.330078125,
- 10868.6025390625
- ],
- "type": "float32"
- }
- },
- {
- "name": "gemm two float32 2D tensors default options",
- "inputs": {
- "a": {
- "shape": [3, 4],
- "data": [
- 82.98884511142329,
- 90.51641254722982,
- 59.6385201162642,
- 36.27187180381433,
- 18.96485038946509,
- 43.89479290862091,
- 98.89487912764056,
- 91.46013741088626,
- 50.51683887619669,
- 40.45679629199866,
- 50.76741460760452,
- 9.336554329198155
- ],
- "type": "float32"
- },
- "b": {
- "shape": [4, 5],
- "data": [
- 25.14739246484985,
- 66.69238549579231,
- 63.29909902139696,
- 10.629964783998469,
- 61.32737573972831,
- 0.003725653326558387,
- 16.499146388625483,
- 3.0366680571384252,
- 93.14021782678614,
- 70.08265680040718,
- 75.74880854000601,
- 96.6068806977233,
- 99.10042039275365,
- 23.243775283337477,
- 86.1185682132947,
- 42.90679144336773,
- 34.08055187293266,
- 87.37654561544477,
- 92.34209530787089,
- 60.32208994273669
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [3, 5],
- "data": [
- 8161.14697265625,
- 14025.82421875,
- 14607.5009765625,
- 14048.5322265625,
- 18757.09765625,
- 11892.5107421875,
- 14659.9755859375,
- 19125.74609375,
- 15034.27734375,
- 18273.080078125,
- 5516.6904296875,
- 9259.267578125,
- 9167.3916015625,
- 6347.330078125,
- 10868.6025390625
- ],
- "type": "float32"
- }
- },
- // options.c
- {
- "name": "gemm two float32 2D constant tensors options.c",
- "inputs": {
- "a": {
- "shape": [3, 4],
- "data": [
- 82.98884511142329,
- 90.51641254722982,
- 59.6385201162642,
- 36.27187180381433,
- 18.96485038946509,
- 43.89479290862091,
- 98.89487912764056,
- 91.46013741088626,
- 50.51683887619669,
- 40.45679629199866,
- 50.76741460760452,
- 9.336554329198155
- ],
- "type": "float32",
- "constant": true
- },
- "b": {
- "shape": [4, 5],
- "data": [
- 25.14739246484985,
- 66.69238549579231,
- 63.29909902139696,
- 10.629964783998469,
- 61.32737573972831,
- 0.003725653326558387,
- 16.499146388625483,
- 3.0366680571384252,
- 93.14021782678614,
- 70.08265680040718,
- 75.74880854000601,
- 96.6068806977233,
- 99.10042039275365,
- 23.243775283337477,
- 86.1185682132947,
- 42.90679144336773,
- 34.08055187293266,
- 87.37654561544477,
- 92.34209530787089,
- 60.32208994273669
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "c": {
- "shape": [3, 5],
- "data": [
- 82.77202028708963,
- 91.38520749770859,
- 12.651897708721549,
- 20.12200327935334,
- 68.51224585053419,
- 35.2024171023056,
- 13.33466578964102,
- 50.785469741049205,
- 88.61195160882922,
- 30.577471042677097,
- 69.47062151883239,
- 7.166217909076766,
- 28.337108113083744,
- 90.69412588106762,
- 71.23025762837965
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [3, 5],
- "data": [
- 8243.9189453125,
- 14117.208984375,
- 14620.15234375,
- 14068.654296875,
- 18825.609375,
- 11927.712890625,
- 14673.310546875,
- 19176.533203125,
- 15122.8896484375,
- 18303.658203125,
- 5586.16064453125,
- 9266.43359375,
- 9195.7294921875,
- 6438.0244140625,
- 10939.8330078125
- ],
- "type": "float32"
- }
- },
- {
- "name": "gemm two float32 2D tensors options.c",
- "inputs": {
- "a": {
- "shape": [3, 4],
- "data": [
- 82.98884511142329,
- 90.51641254722982,
- 59.6385201162642,
- 36.27187180381433,
- 18.96485038946509,
- 43.89479290862091,
- 98.89487912764056,
- 91.46013741088626,
- 50.51683887619669,
- 40.45679629199866,
- 50.76741460760452,
- 9.336554329198155
- ],
- "type": "float32"
- },
- "b": {
- "shape": [4, 5],
- "data": [
- 25.14739246484985,
- 66.69238549579231,
- 63.29909902139696,
- 10.629964783998469,
- 61.32737573972831,
- 0.003725653326558387,
- 16.499146388625483,
- 3.0366680571384252,
- 93.14021782678614,
- 70.08265680040718,
- 75.74880854000601,
- 96.6068806977233,
- 99.10042039275365,
- 23.243775283337477,
- 86.1185682132947,
- 42.90679144336773,
- 34.08055187293266,
- 87.37654561544477,
- 92.34209530787089,
- 60.32208994273669
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "c": {
- "shape": [3, 5],
- "data": [
- 82.77202028708963,
- 91.38520749770859,
- 12.651897708721549,
- 20.12200327935334,
- 68.51224585053419,
- 35.2024171023056,
- 13.33466578964102,
- 50.785469741049205,
- 88.61195160882922,
- 30.577471042677097,
- 69.47062151883239,
- 7.166217909076766,
- 28.337108113083744,
- 90.69412588106762,
- 71.23025762837965
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [3, 5],
- "data": [
- 8243.9189453125,
- 14117.208984375,
- 14620.15234375,
- 14068.654296875,
- 18825.609375,
- 11927.712890625,
- 14673.310546875,
- 19176.533203125,
- 15122.8896484375,
- 18303.658203125,
- 5586.16064453125,
- 9266.43359375,
- 9195.7294921875,
- 6438.0244140625,
- 10939.8330078125
- ],
- "type": "float32"
- }
- },
- {
- "name": "gemm two float32 2D tensors broadcast options.c [1, 5] => [3, 5]",
- "inputs": {
- "a": {
- "shape": [3, 4],
- "data": [
- 82.98884511142329,
- 90.51641254722982,
- 59.6385201162642,
- 36.27187180381433,
- 18.96485038946509,
- 43.89479290862091,
- 98.89487912764056,
- 91.46013741088626,
- 50.51683887619669,
- 40.45679629199866,
- 50.76741460760452,
- 9.336554329198155
- ],
- "type": "float32"
- },
- "b": {
- "shape": [4, 5],
- "data": [
- 25.14739246484985,
- 66.69238549579231,
- 63.29909902139696,
- 10.629964783998469,
- 61.32737573972831,
- 0.003725653326558387,
- 16.499146388625483,
- 3.0366680571384252,
- 93.14021782678614,
- 70.08265680040718,
- 75.74880854000601,
- 96.6068806977233,
- 99.10042039275365,
- 23.243775283337477,
- 86.1185682132947,
- 42.90679144336773,
- 34.08055187293266,
- 87.37654561544477,
- 92.34209530787089,
- 60.32208994273669
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "c": {
- "shape": [1, 5],
- "data": [
- 85.90813142403118,
- 39.375354775876346,
- 50.94260262706696,
- 31.87430758223413,
- 31.210525151769097
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [3, 5],
- "data": [
- 8247.0546875,
- 14065.19921875,
- 14658.443359375,
- 14080.40625,
- 18788.30859375,
- 11978.4189453125,
- 14699.3505859375,
- 19176.689453125,
- 15066.1513671875,
- 18304.291015625,
- 5602.5986328125,
- 9298.642578125,
- 9218.3349609375,
- 6379.20458984375,
- 10899.8125
- ],
- "type": "float32"
- }
- },
- {
- "name": "gemm two float32 2D tensors broadcast options.c [3, 1] => [3, 5]",
- "inputs": {
- "a": {
- "shape": [3, 4],
- "data": [
- 82.98884511142329,
- 90.51641254722982,
- 59.6385201162642,
- 36.27187180381433,
- 18.96485038946509,
- 43.89479290862091,
- 98.89487912764056,
- 91.46013741088626,
- 50.51683887619669,
- 40.45679629199866,
- 50.76741460760452,
- 9.336554329198155
- ],
- "type": "float32"
- },
- "b": {
- "shape": [4, 5],
- "data": [
- 25.14739246484985,
- 66.69238549579231,
- 63.29909902139696,
- 10.629964783998469,
- 61.32737573972831,
- 0.003725653326558387,
- 16.499146388625483,
- 3.0366680571384252,
- 93.14021782678614,
- 70.08265680040718,
- 75.74880854000601,
- 96.6068806977233,
- 99.10042039275365,
- 23.243775283337477,
- 86.1185682132947,
- 42.90679144336773,
- 34.08055187293266,
- 87.37654561544477,
- 92.34209530787089,
- 60.32208994273669
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "c": {
- "shape": [3, 1],
- "data": [
- 6.2025197606838445,
- 81.40642123187278,
- 73.00516839070796
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [3, 5],
- "data": [
- 8167.349609375,
- 14032.0263671875,
- 14613.703125,
- 14054.734375,
- 18763.30078125,
- 11973.9169921875,
- 14741.3818359375,
- 19207.154296875,
- 15115.68359375,
- 18354.486328125,
- 5589.6953125,
- 9332.2724609375,
- 9240.3974609375,
- 6420.33544921875,
- 10941.607421875
- ],
- "type": "float32"
- }
- },
- {
- "name": "gemm two float32 2D tensors broadcast options.c [1, 1] => [3, 5]",
- "inputs": {
- "a": {
- "shape": [3, 4],
- "data": [
- 82.98884511142329,
- 90.51641254722982,
- 59.6385201162642,
- 36.27187180381433,
- 18.96485038946509,
- 43.89479290862091,
- 98.89487912764056,
- 91.46013741088626,
- 50.51683887619669,
- 40.45679629199866,
- 50.76741460760452,
- 9.336554329198155
- ],
- "type": "float32"
- },
- "b": {
- "shape": [4, 5],
- "data": [
- 25.14739246484985,
- 66.69238549579231,
- 63.29909902139696,
- 10.629964783998469,
- 61.32737573972831,
- 0.003725653326558387,
- 16.499146388625483,
- 3.0366680571384252,
- 93.14021782678614,
- 70.08265680040718,
- 75.74880854000601,
- 96.6068806977233,
- 99.10042039275365,
- 23.243775283337477,
- 86.1185682132947,
- 42.90679144336773,
- 34.08055187293266,
- 87.37654561544477,
- 92.34209530787089,
- 60.32208994273669
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "c": {
- "shape": [1, 1],
- "data": [18.78192846614879],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [3, 5],
- "data": [
- 8179.9287109375,
- 14044.6064453125,
- 14626.2822265625,
- 14067.314453125,
- 18775.87890625,
- 11911.29296875,
- 14678.7578125,
- 19144.529296875,
- 15053.0595703125,
- 18291.86328125,
- 5535.47216796875,
- 9278.048828125,
- 9186.173828125,
- 6366.1123046875,
- 10887.384765625
- ],
- "type": "float32"
- }
- },
- {
- "name": "gemm two float32 2D tensors broadcast options.c [5] => [3, 5]",
- "inputs": {
- "a": {
- "shape": [3, 4],
- "data": [
- 82.98884511142329,
- 90.51641254722982,
- 59.6385201162642,
- 36.27187180381433,
- 18.96485038946509,
- 43.89479290862091,
- 98.89487912764056,
- 91.46013741088626,
- 50.51683887619669,
- 40.45679629199866,
- 50.76741460760452,
- 9.336554329198155
- ],
- "type": "float32"
- },
- "b": {
- "shape": [4, 5],
- "data": [
- 25.14739246484985,
- 66.69238549579231,
- 63.29909902139696,
- 10.629964783998469,
- 61.32737573972831,
- 0.003725653326558387,
- 16.499146388625483,
- 3.0366680571384252,
- 93.14021782678614,
- 70.08265680040718,
- 75.74880854000601,
- 96.6068806977233,
- 99.10042039275365,
- 23.243775283337477,
- 86.1185682132947,
- 42.90679144336773,
- 34.08055187293266,
- 87.37654561544477,
- 92.34209530787089,
- 60.32208994273669
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "c": {
- "shape": [5],
- "data": [
- 85.90813142403118,
- 39.375354775876346,
- 50.94260262706696,
- 31.87430758223413,
- 31.210525151769097
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [3, 5],
- "data": [
- 8247.0546875,
- 14065.19921875,
- 14658.443359375,
- 14080.40625,
- 18788.30859375,
- 11978.4189453125,
- 14699.3505859375,
- 19176.689453125,
- 15066.1513671875,
- 18304.291015625,
- 5602.5986328125,
- 9298.642578125,
- 9218.3349609375,
- 6379.20458984375,
- 10899.8125
- ],
- "type": "float32"
- }
- },
- {
- "name": "gemm two float32 2D tensors broadcast options.c [1] => [3, 5]",
- "inputs": {
- "a": {
- "shape": [3, 4],
- "data": [
- 82.98884511142329,
- 90.51641254722982,
- 59.6385201162642,
- 36.27187180381433,
- 18.96485038946509,
- 43.89479290862091,
- 98.89487912764056,
- 91.46013741088626,
- 50.51683887619669,
- 40.45679629199866,
- 50.76741460760452,
- 9.336554329198155
- ],
- "type": "float32"
- },
- "b": {
- "shape": [4, 5],
- "data": [
- 25.14739246484985,
- 66.69238549579231,
- 63.29909902139696,
- 10.629964783998469,
- 61.32737573972831,
- 0.003725653326558387,
- 16.499146388625483,
- 3.0366680571384252,
- 93.14021782678614,
- 70.08265680040718,
- 75.74880854000601,
- 96.6068806977233,
- 99.10042039275365,
- 23.243775283337477,
- 86.1185682132947,
- 42.90679144336773,
- 34.08055187293266,
- 87.37654561544477,
- 92.34209530787089,
- 60.32208994273669
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "c": {
- "shape": [1],
- "data": [18.78192846614879],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [3, 5],
- "data": [
- 8179.9287109375,
- 14044.6064453125,
- 14626.2822265625,
- 14067.314453125,
- 18775.87890625,
- 11911.29296875,
- 14678.7578125,
- 19144.529296875,
- 15053.0595703125,
- 18291.86328125,
- 5535.47216796875,
- 9278.048828125,
- 9186.173828125,
- 6366.1123046875,
- 10887.384765625
- ],
- "type": "float32"
- }
- },
- {
- "name": "gemm two float32 2D tensors scalar options.c",
- "inputs": {
- "a": {
- "shape": [3, 4],
- "data": [
- 82.98884511142329,
- 90.51641254722982,
- 59.6385201162642,
- 36.27187180381433,
- 18.96485038946509,
- 43.89479290862091,
- 98.89487912764056,
- 91.46013741088626,
- 50.51683887619669,
- 40.45679629199866,
- 50.76741460760452,
- 9.336554329198155
- ],
- "type": "float32"
- },
- "b": {
- "shape": [4, 5],
- "data": [
- 25.14739246484985,
- 66.69238549579231,
- 63.29909902139696,
- 10.629964783998469,
- 61.32737573972831,
- 0.003725653326558387,
- 16.499146388625483,
- 3.0366680571384252,
- 93.14021782678614,
- 70.08265680040718,
- 75.74880854000601,
- 96.6068806977233,
- 99.10042039275365,
- 23.243775283337477,
- 86.1185682132947,
- 42.90679144336773,
- 34.08055187293266,
- 87.37654561544477,
- 92.34209530787089,
- 60.32208994273669
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "c": 18.78192846614879
- },
- "expected": {
- "name": "output",
- "shape": [3, 5],
- "data": [
- 8179.9287109375,
- 14044.6064453125,
- 14626.2822265625,
- 14067.314453125,
- 18775.87890625,
- 11911.29296875,
- 14678.7578125,
- 19144.529296875,
- 15053.0595703125,
- 18291.86328125,
- 5535.47216796875,
- 9278.048828125,
- 9186.173828125,
- 6366.1123046875,
- 10887.384765625
- ],
- "type": "float32"
- }
- },
- {
- "name": "gemm two float32 2D tensors options.alpha",
- "inputs": {
- "a": {
- "shape": [3, 4],
- "data": [
- 82.98884511142329,
- 90.51641254722982,
- 59.6385201162642,
- 36.27187180381433,
- 18.96485038946509,
- 43.89479290862091,
- 98.89487912764056,
- 91.46013741088626,
- 50.51683887619669,
- 40.45679629199866,
- 50.76741460760452,
- 9.336554329198155
- ],
- "type": "float32"
- },
- "b": {
- "shape": [4, 5],
- "data": [
- 25.14739246484985,
- 66.69238549579231,
- 63.29909902139696,
- 10.629964783998469,
- 61.32737573972831,
- 0.003725653326558387,
- 16.499146388625483,
- 3.0366680571384252,
- 93.14021782678614,
- 70.08265680040718,
- 75.74880854000601,
- 96.6068806977233,
- 99.10042039275365,
- 23.243775283337477,
- 86.1185682132947,
- 42.90679144336773,
- 34.08055187293266,
- 87.37654561544477,
- 92.34209530787089,
- 60.32208994273669
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "alpha": 74.43204170482103
- },
- "expected": {
- "name": "output",
- "shape": [3, 5],
- "data": [
- 607450.875,
- 1043970.75,
- 1087266.125,
- 1045661,
- 1396129.125,
- 885183.875,
- 1091172,
- 1423568.5,
- 1119032,
- 1360102.75,
- 410618.53125,
- 689186.1875,
- 682347.75,
- 472444.78125,
- 808972.3125
- ],
- "type": "float32"
- }
- },
- {
- "name": "gemm two float32 2D tensors options.beta",
- "inputs": {
- "a": {
- "shape": [3, 4],
- "data": [
- 82.98884511142329,
- 90.51641254722982,
- 59.6385201162642,
- 36.27187180381433,
- 18.96485038946509,
- 43.89479290862091,
- 98.89487912764056,
- 91.46013741088626,
- 50.51683887619669,
- 40.45679629199866,
- 50.76741460760452,
- 9.336554329198155
- ],
- "type": "float32"
- },
- "b": {
- "shape": [4, 5],
- "data": [
- 25.14739246484985,
- 66.69238549579231,
- 63.29909902139696,
- 10.629964783998469,
- 61.32737573972831,
- 0.003725653326558387,
- 16.499146388625483,
- 3.0366680571384252,
- 93.14021782678614,
- 70.08265680040718,
- 75.74880854000601,
- 96.6068806977233,
- 99.10042039275365,
- 23.243775283337477,
- 86.1185682132947,
- 42.90679144336773,
- 34.08055187293266,
- 87.37654561544477,
- 92.34209530787089,
- 60.32208994273669
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "beta": 62.01828598608989
- },
- "expected": {
- "name": "output",
- "shape": [3, 5],
- "data": [
- 8161.14697265625,
- 14025.82421875,
- 14607.5009765625,
- 14048.5322265625,
- 18757.09765625,
- 11892.5107421875,
- 14659.9755859375,
- 19125.74609375,
- 15034.27734375,
- 18273.080078125,
- 5516.6904296875,
- 9259.267578125,
- 9167.3916015625,
- 6347.330078125,
- 10868.6025390625
- ],
- "type": "float32"
- }
- },
- {
- "name": "gemm two float32 2D tensors options.c and options.beta",
- "inputs": {
- "a": {
- "shape": [3, 4],
- "data": [
- 82.98884511142329,
- 90.51641254722982,
- 59.6385201162642,
- 36.27187180381433,
- 18.96485038946509,
- 43.89479290862091,
- 98.89487912764056,
- 91.46013741088626,
- 50.51683887619669,
- 40.45679629199866,
- 50.76741460760452,
- 9.336554329198155
- ],
- "type": "float32"
- },
- "b": {
- "shape": [4, 5],
- "data": [
- 25.14739246484985,
- 66.69238549579231,
- 63.29909902139696,
- 10.629964783998469,
- 61.32737573972831,
- 0.003725653326558387,
- 16.499146388625483,
- 3.0366680571384252,
- 93.14021782678614,
- 70.08265680040718,
- 75.74880854000601,
- 96.6068806977233,
- 99.10042039275365,
- 23.243775283337477,
- 86.1185682132947,
- 42.90679144336773,
- 34.08055187293266,
- 87.37654561544477,
- 92.34209530787089,
- 60.32208994273669
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "c": {
- "shape": [3, 5],
- "data": [
- 82.77202028708963,
- 91.38520749770859,
- 12.651897708721549,
- 20.12200327935334,
- 68.51224585053419,
- 35.2024171023056,
- 13.33466578964102,
- 50.785469741049205,
- 88.61195160882922,
- 30.577471042677097,
- 69.47062151883239,
- 7.166217909076766,
- 28.337108113083744,
- 90.69412588106762,
- 71.23025762837965
- ],
- "type": "float32"
- },
- "beta": 62.01828598608989
- },
- "expected": {
- "name": "output",
- "shape": [3, 5],
- "data": [
- 13294.525390625,
- 19693.37890625,
- 15392.1494140625,
- 15296.4638671875,
- 23006.109375,
- 14075.7041015625,
- 15486.96875,
- 22275.375,
- 20529.83984375,
- 20169.443359375,
- 9825.138671875,
- 9703.7041015625,
- 10924.810546875,
- 11972.0244140625,
- 15286.1806640625
- ],
- "type": "float32"
- }
- },
- {
- "name": "gemm two float32 2D tensors options.aTranspose being true",
- "inputs": {
- "a": {
- "shape": [4, 3],
- "data": [
- 82.98884511142329,
- 18.96485038946509,
- 50.51683887619669,
- 90.51641254722982,
- 43.89479290862091,
- 40.45679629199866,
- 59.6385201162642,
- 98.89487912764056,
- 50.76741460760452,
- 36.27187180381433,
- 91.46013741088626,
- 9.336554329198155
- ],
- "type": "float32"
- },
- "b": {
- "shape": [4, 5],
- "data": [
- 25.14739246484985,
- 66.69238549579231,
- 63.29909902139696,
- 10.629964783998469,
- 61.32737573972831,
- 0.003725653326558387,
- 16.499146388625483,
- 3.0366680571384252,
- 93.14021782678614,
- 70.08265680040718,
- 75.74880854000601,
- 96.6068806977233,
- 99.10042039275365,
- 23.243775283337477,
- 86.1185682132947,
- 42.90679144336773,
- 34.08055187293266,
- 87.37654561544477,
- 92.34209530787089,
- 60.32208994273669
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "aTranspose": true
- },
- "expected": {
- "name": "output",
- "shape": [3, 5],
- "data": [
- 8161.14697265625,
- 14025.82421875,
- 14607.5009765625,
- 14048.5322265625,
- 18757.09765625,
- 11892.5107421875,
- 14659.9755859375,
- 19125.74609375,
- 15034.27734375,
- 18273.080078125,
- 5516.6904296875,
- 9259.267578125,
- 9167.3916015625,
- 6347.330078125,
- 10868.6025390625
- ],
- "type": "float32"
- }
- },
- {
- "name": "gemm two float32 2D tensors options.aTranspose being explicit false",
- "inputs": {
- "a": {
- "shape": [3, 4],
- "data": [
- 82.98884511142329,
- 90.51641254722982,
- 59.6385201162642,
- 36.27187180381433,
- 18.96485038946509,
- 43.89479290862091,
- 98.89487912764056,
- 91.46013741088626,
- 50.51683887619669,
- 40.45679629199866,
- 50.76741460760452,
- 9.336554329198155
- ],
- "type": "float32"
- },
- "b": {
- "shape": [4, 5],
- "data": [
- 25.14739246484985,
- 66.69238549579231,
- 63.29909902139696,
- 10.629964783998469,
- 61.32737573972831,
- 0.003725653326558387,
- 16.499146388625483,
- 3.0366680571384252,
- 93.14021782678614,
- 70.08265680040718,
- 75.74880854000601,
- 96.6068806977233,
- 99.10042039275365,
- 23.243775283337477,
- 86.1185682132947,
- 42.90679144336773,
- 34.08055187293266,
- 87.37654561544477,
- 92.34209530787089,
- 60.32208994273669
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "aTranspose": false
- },
- "expected": {
- "name": "output",
- "shape": [3, 5],
- "data": [
- 8161.14697265625,
- 14025.82421875,
- 14607.5009765625,
- 14048.5322265625,
- 18757.09765625,
- 11892.5107421875,
- 14659.9755859375,
- 19125.74609375,
- 15034.27734375,
- 18273.080078125,
- 5516.6904296875,
- 9259.267578125,
- 9167.3916015625,
- 6347.330078125,
- 10868.6025390625
- ],
- "type": "float32"
- }
- },
- {
- "name": "gemm two float32 2D tensors options.bTranspose being true",
- "inputs": {
- "a": {
- "shape": [3, 4],
- "data": [
- 82.98884511142329,
- 90.51641254722982,
- 59.6385201162642,
- 36.27187180381433,
- 18.96485038946509,
- 43.89479290862091,
- 98.89487912764056,
- 91.46013741088626,
- 50.51683887619669,
- 40.45679629199866,
- 50.76741460760452,
- 9.336554329198155
- ],
- "type": "float32"
- },
- "b": {
- "shape": [5, 4],
- "data": [
- 25.14739246484985,
- 0.003725653326558387,
- 75.74880854000601,
- 42.90679144336773,
- 66.69238549579231,
- 16.499146388625483,
- 96.6068806977233,
- 34.08055187293266,
- 63.29909902139696,
- 3.0366680571384252,
- 99.10042039275365,
- 87.37654561544477,
- 10.629964783998469,
- 93.14021782678614,
- 23.243775283337477,
- 92.34209530787089,
- 61.32737573972831,
- 70.08265680040718,
- 86.1185682132947,
- 60.32208994273669
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "bTranspose": true
- },
- "expected": {
- "name": "output",
- "shape": [3, 5],
- "data": [
- 8161.14697265625,
- 14025.82421875,
- 14607.5009765625,
- 14048.5322265625,
- 18757.09765625,
- 11892.5107421875,
- 14659.9755859375,
- 19125.74609375,
- 15034.27734375,
- 18273.080078125,
- 5516.6904296875,
- 9259.267578125,
- 9167.3916015625,
- 6347.330078125,
- 10868.6025390625
- ],
- "type": "float32"
- }
- },
- {
- "name": "gemm two float32 2D tensors options.bTranspose being explicit false",
- "inputs": {
- "a": {
- "shape": [3, 4],
- "data": [
- 82.98884511142329,
- 90.51641254722982,
- 59.6385201162642,
- 36.27187180381433,
- 18.96485038946509,
- 43.89479290862091,
- 98.89487912764056,
- 91.46013741088626,
- 50.51683887619669,
- 40.45679629199866,
- 50.76741460760452,
- 9.336554329198155
- ],
- "type": "float32"
- },
- "b": {
- "shape": [4, 5],
- "data": [
- 25.14739246484985,
- 66.69238549579231,
- 63.29909902139696,
- 10.629964783998469,
- 61.32737573972831,
- 0.003725653326558387,
- 16.499146388625483,
- 3.0366680571384252,
- 93.14021782678614,
- 70.08265680040718,
- 75.74880854000601,
- 96.6068806977233,
- 99.10042039275365,
- 23.243775283337477,
- 86.1185682132947,
- 42.90679144336773,
- 34.08055187293266,
- 87.37654561544477,
- 92.34209530787089,
- 60.32208994273669
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "bTranspose": false
- },
- "expected": {
- "name": "output",
- "shape": [3, 5],
- "data": [
- 8161.14697265625,
- 14025.82421875,
- 14607.5009765625,
- 14048.5322265625,
- 18757.09765625,
- 11892.5107421875,
- 14659.9755859375,
- 19125.74609375,
- 15034.27734375,
- 18273.080078125,
- 5516.6904296875,
- 9259.267578125,
- 9167.3916015625,
- 6347.330078125,
- 10868.6025390625
- ],
- "type": "float32"
- }
- },
- // alpha * A x B + beta * C
- {
- "name": "gemm two float32 2D tensors all options", // All alpha, A, B, beta and C are positive
- "inputs": {
- "a": {
- "shape": [4, 3],
- "data": [
- 82.98884511142329,
- 18.96485038946509,
- 50.51683887619669,
- 90.51641254722982,
- 43.89479290862091,
- 40.45679629199866,
- 59.6385201162642,
- 98.89487912764056,
- 50.76741460760452,
- 36.27187180381433,
- 91.46013741088626,
- 9.336554329198155
- ],
- "type": "float32"
- },
- "b": {
- "shape": [5, 4],
- "data": [
- 25.14739246484985,
- 0.003725653326558387,
- 75.74880854000601,
- 42.90679144336773,
- 66.69238549579231,
- 16.499146388625483,
- 96.6068806977233,
- 34.08055187293266,
- 63.29909902139696,
- 3.0366680571384252,
- 99.10042039275365,
- 87.37654561544477,
- 10.629964783998469,
- 93.14021782678614,
- 23.243775283337477,
- 92.34209530787089,
- 61.32737573972831,
- 70.08265680040718,
- 86.1185682132947,
- 60.32208994273669
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "c": {
- "shape": [3, 5],
- "data": [
- 82.77202028708963,
- 91.38520749770859,
- 12.651897708721549,
- 20.12200327935334,
- 68.51224585053419,
- 35.2024171023056,
- 13.33466578964102,
- 50.785469741049205,
- 88.61195160882922,
- 30.577471042677097,
- 69.47062151883239,
- 7.166217909076766,
- 28.337108113083744,
- 90.69412588106762,
- 71.23025762837965
- ],
- "type": "float32"
- },
- "alpha": 74.43204170482103,
- "beta": 62.01828598608989,
- "aTranspose": true,
- "bTranspose": true
- },
- "expected": {
- "name": "output",
- "shape": [3, 5],
- "data": [
- 612584.25,
- 1049638.375,
- 1088050.75,
- 1046908.875,
- 1400378.125,
- 887367.0625,
- 1091999,
- 1426718.125,
- 1124527.625,
- 1361999.125,
- 414927,
- 689630.625,
- 684105.1875,
- 478069.46875,
- 813389.875
- ],
- "type": "float32"
- }
- },
- {
- "name": "gemm both negative options.alpha and 1st float32 input tensor",
- "inputs": {
- "a": {
- "shape": [3, 4],
- "data": [
- -87.94973451710236,
- -14.765121645895519,
- -80.86310680534218,
- -59.27638399609938,
- -28.748250806066665,
- -9.038779559502402,
- -76.04662906780386,
- -83.94807592959552,
- -95.02689722012639,
- -47.897331378960686,
- -69.01161938187514,
- -86.66899315604435
- ],
- "type": "float32"
- },
- "b": {
- "shape": [4, 5],
- "data": [
- 25.14739246484985,
- 66.69238549579231,
- 63.29909902139696,
- 10.629964783998469,
- 61.32737573972831,
- 0.003725653326558387,
- 16.499146388625483,
- 3.0366680571384252,
- 93.14021782678614,
- 70.08265680040718,
- 75.74880854000601,
- 96.6068806977233,
- 99.10042039275365,
- 23.243775283337477,
- 86.1185682132947,
- 42.90679144336773,
- 34.08055187293266,
- 87.37654561544477,
- 92.34209530787089,
- 60.32208994273669
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "c": {
- "shape": [3, 5],
- "data": [
- 82.77202028708963,
- 91.38520749770859,
- 12.651897708721549,
- 20.12200327935334,
- 68.51224585053419,
- 35.2024171023056,
- 13.33466578964102,
- 50.785469741049205,
- 88.61195160882922,
- 30.577471042677097,
- 69.47062151883239,
- 7.166217909076766,
- 28.337108113083744,
- 90.69412588106762,
- 71.23025762837965
- ],
- "type": "float32"
- },
- "alpha": -22.611149749186296
- },
- "expected": {
- "name": "output",
- "shape": [3, 5],
- "data": [
- 246101.234375,
- 360542.34375,
- 425213.25,
- 218520.65625,
- 383734.40625,
- 228076.8125,
- 277543.625,
- 378076,
- 241282.15625,
- 316800.71875,
- 256391.5625,
- 378711.34375,
- 465195.8125,
- 341034.875,
- 460338.3125
- ],
- "type": "float32"
- }
- },
- {
- "name": "gemm both negative options.alpha and 2nd float32 input tensor",
- "inputs": {
- "a": {
- "shape": [3, 4],
- "data": [
- 82.98884511142329,
- 90.51641254722982,
- 59.6385201162642,
- 36.27187180381433,
- 18.96485038946509,
- 43.89479290862091,
- 98.89487912764056,
- 91.46013741088626,
- 50.51683887619669,
- 40.45679629199866,
- 50.76741460760452,
- 9.336554329198155
- ],
- "type": "float32"
- },
- "b": {
- "shape": [4, 5],
- "data": [
- -64.35197380859643,
- -87.64981186480712,
- -96.04495397065658,
- -31.07155980709375,
- -6.548066933465876,
- -64.64146348646094,
- -14.020616857474465,
- -88.93306726614543,
- -24.17941082566574,
- -97.31866304932058,
- -93.46081221136554,
- -39.49039520100528,
- -94.37982420323672,
- -75.8333604154835,
- -11.403324388031308,
- -26.28259194817595,
- -56.237981538646295,
- -46.474048229320665,
- -89.20683997562287,
- -53.49532488423292
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "c": {
- "shape": [3, 5],
- "data": [
- 82.77202028708963,
- 91.38520749770859,
- 12.651897708721549,
- 20.12200327935334,
- 68.51224585053419,
- 35.2024171023056,
- 13.33466578964102,
- 50.785469741049205,
- 88.61195160882922,
- 30.577471042677097,
- 69.47062151883239,
- 7.166217909076766,
- 28.337108113083744,
- 90.69412588106762,
- 71.23025762837965
- ],
- "type": "float32"
- },
- "alpha": -22.611149749186296
- },
- "expected": {
- "name": "output",
- "shape": [3, 5],
- "data": [
- 400725.03125,
- 292635.75,
- 527642.375,
- 283236.40625,
- 270787.40625,
- 355130.96875,
- 256121.421875,
- 436658.0625,
- 391465.40625,
- 235557.03125,
- 245540.5625,
- 170154.125,
- 309239.4375,
- 163583.015625,
- 120958.7578125
- ],
- "type": "float32"
- }
- },
- {
- "name": "gemm both negative options.beta and 3rd float32 input tensor (options.c)",
- "inputs": {
- "a": {
- "shape": [3, 4],
- "data": [
- 82.98884511142329,
- 90.51641254722982,
- 59.6385201162642,
- 36.27187180381433,
- 18.96485038946509,
- 43.89479290862091,
- 98.89487912764056,
- 91.46013741088626,
- 50.51683887619669,
- 40.45679629199866,
- 50.76741460760452,
- 9.336554329198155
- ],
- "type": "float32"
- },
- "b": {
- "shape": [4, 5],
- "data": [
- 25.14739246484985,
- 66.69238549579231,
- 63.29909902139696,
- 10.629964783998469,
- 61.32737573972831,
- 0.003725653326558387,
- 16.499146388625483,
- 3.0366680571384252,
- 93.14021782678614,
- 70.08265680040718,
- 75.74880854000601,
- 96.6068806977233,
- 99.10042039275365,
- 23.243775283337477,
- 86.1185682132947,
- 42.90679144336773,
- 34.08055187293266,
- 87.37654561544477,
- 92.34209530787089,
- 60.32208994273669
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "c": {
- "shape": [3, 5],
- "data": [
- -42.66268253622787,
- -93.66379731044412,
- -40.7084931979834,
- -45.060979792171786,
- -87.90339205403255,
- -71.16189172949525,
- -85.56422647952868,
- -10.049133962829984,
- -46.105405162474256,
- -66.76168168609703,
- -25.392492019110875,
- -65.6298788225413,
- -40.50155350367264,
- -81.5303936185148,
- -41.396294482178405
- ],
- "type": "float32"
- },
- "beta": -11.68521964935509
- },
- "expected": {
- "name": "output",
- "shape": [3, 5],
- "data": [
- 8659.669921875,
- 15120.3056640625,
- 15083.1884765625,
- 14575.0791015625,
- 19784.267578125,
- 12724.052734375,
- 15659.8125,
- 19243.173828125,
- 15573.029296875,
- 19053.205078125,
- 5813.4072265625,
- 10026.1669921875,
- 9640.6611328125,
- 7300.03076171875,
- 11352.3271484375
- ],
- "type": "float32"
- }
- },
- {
- "name": "gemm both negative options.alpha and options.beta",
- "inputs": {
- "a": {
- "shape": [3, 4],
- "data": [
- 82.98884511142329,
- 90.51641254722982,
- 59.6385201162642,
- 36.27187180381433,
- 18.96485038946509,
- 43.89479290862091,
- 98.89487912764056,
- 91.46013741088626,
- 50.51683887619669,
- 40.45679629199866,
- 50.76741460760452,
- 9.336554329198155
- ],
- "type": "float32"
- },
- "b": {
- "shape": [4, 5],
- "data": [
- 25.14739246484985,
- 66.69238549579231,
- 63.29909902139696,
- 10.629964783998469,
- 61.32737573972831,
- 0.003725653326558387,
- 16.499146388625483,
- 3.0366680571384252,
- 93.14021782678614,
- 70.08265680040718,
- 75.74880854000601,
- 96.6068806977233,
- 99.10042039275365,
- 23.243775283337477,
- 86.1185682132947,
- 42.90679144336773,
- 34.08055187293266,
- 87.37654561544477,
- 92.34209530787089,
- 60.32208994273669
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "c": {
- "shape": [3, 5],
- "data": [
- 82.77202028708963,
- 91.38520749770859,
- 12.651897708721549,
- 20.12200327935334,
- 68.51224585053419,
- 35.2024171023056,
- 13.33466578964102,
- 50.785469741049205,
- 88.61195160882922,
- 30.577471042677097,
- 69.47062151883239,
- 7.166217909076766,
- 28.337108113083744,
- 90.69412588106762,
- 71.23025762837965
- ],
- "type": "float32"
- },
- "alpha": -22.611149749186296,
- "beta": -11.68521964935509
- },
- "expected": {
- "name": "output",
- "shape": [3, 5],
- "data": [
- -185500.109375,
- -318207.84375,
- -330440.21875,
- -317888.59375,
- -424920.125,
- -269314.6875,
- -331634.71875,
- -433048.5625,
- -340977.71875,
- -413532.65625,
- -125550.484375,
- -209446.40625,
- -207616.390625,
- -144580.21875,
- -246583.921875
- ],
- "type": "float32"
- }
- },
- {
- "name": "gemm both negative options.alpha and 3rd float32 input tensor (options.c)",
- "inputs": {
- "a": {
- "shape": [3, 4],
- "data": [
- 82.98884511142329,
- 90.51641254722982,
- 59.6385201162642,
- 36.27187180381433,
- 18.96485038946509,
- 43.89479290862091,
- 98.89487912764056,
- 91.46013741088626,
- 50.51683887619669,
- 40.45679629199866,
- 50.76741460760452,
- 9.336554329198155
- ],
- "type": "float32"
- },
- "b": {
- "shape": [4, 5],
- "data": [
- 25.14739246484985,
- 66.69238549579231,
- 63.29909902139696,
- 10.629964783998469,
- 61.32737573972831,
- 0.003725653326558387,
- 16.499146388625483,
- 3.0366680571384252,
- 93.14021782678614,
- 70.08265680040718,
- 75.74880854000601,
- 96.6068806977233,
- 99.10042039275365,
- 23.243775283337477,
- 86.1185682132947,
- 42.90679144336773,
- 34.08055187293266,
- 87.37654561544477,
- 92.34209530787089,
- 60.32208994273669
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "c": {
- "shape": [3, 5],
- "data": [
- -42.66268253622787,
- -93.66379731044412,
- -40.7084931979834,
- -45.060979792171786,
- -87.90339205403255,
- -71.16189172949525,
- -85.56422647952868,
- -10.049133962829984,
- -46.105405162474256,
- -66.76168168609703,
- -25.392492019110875,
- -65.6298788225413,
- -40.50155350367264,
- -81.5303936185148,
- -41.396294482178405
- ],
- "type": "float32"
- },
- "alpha": -22.611149749186296
- },
- "expected": {
- "name": "output",
- "shape": [3, 5],
- "data": [
- -184575.5625,
- -317233.65625,
- -330333.09375,
- -317698.5,
- -424207.4375,
- -268974.5,
- -331564.4375,
- -432465.15625,
- -339988.375,
- -413242.09375,
- -124764.09375,
- -209428.296875,
- -207325.765625,
- -143601.96875,
- -245792.984375
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/greater.json b/tests/wpt/tests/webnn/resources/test_data/greater.json
deleted file mode 100644
index d7dc34d18bb..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/greater.json
+++ /dev/null
@@ -1,982 +0,0 @@
-{
- "tests": [
- {
- "name": "greater float32 0D scalar",
- "inputs": {
- "a": {
- "shape": [],
- "data": [
- 3.6851014232119716
- ],
- "type": "float32"
- },
- "b": {
- "shape": [],
- "data": [
- 1.7231997782518338
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [],
- "data": [
- 1
- ],
- "type": "uint8"
- }
- },
- {
- "name": "greater float32 1D constant tensors",
- "inputs": {
- "a": {
- "shape": [24],
- "data": [
- -5.394711458674926,
- -7.189248660357093,
- -3.108176577372168,
- 4.977657240654292,
- 5.111654167277017,
- -1.538657969029952,
- 1.4143663572463936,
- -0.9362112515011844,
- -6.029961511382025,
- -3.0134198095493225,
- 0.17085531331013115,
- 7.395327146335315,
- 7.178691694492247,
- -4.826237489933036,
- -2.0204401018636275,
- -3.267887959306748,
- 8.944384478538513,
- -5.9321008596864555,
- 0.7069857360876597,
- 2.7764204012258844,
- 0.9788337909419198,
- -6.254901877789392,
- 4.40903450389083,
- -6.775286805113776
- ],
- "type": "float32",
- "constant": true
- },
- "b": {
- "shape": [24],
- "data": [
- -6.155234276085855,
- -4.023341341511664,
- 5.9525983178014386,
- 2.3066237309537883,
- -2.7692292888690817,
- -0.9711201246625745,
- 1.2222066588909755,
- 4.590261643319389,
- 9.101232896619365,
- -4.997007709812857,
- -4.807293508200368,
- 8.919360491720344,
- 0.900502762346548,
- -2.8414556193065543,
- -2.8280412040974845,
- 8.479845345966147,
- -7.840679465875833,
- 9.213960197279938,
- 4.982364937519449,
- -2.5073192467116145,
- -4.518013838492472,
- 8.351094603114355,
- -6.161073167579363,
- 0.7364829132932815
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- 1,
- 0,
- 0,
- 1,
- 1,
- 0,
- 1,
- 0,
- 0,
- 1,
- 1,
- 0,
- 1,
- 0,
- 1,
- 0,
- 1,
- 0,
- 0,
- 1,
- 1,
- 0,
- 1,
- 0
- ],
- "type": "uint8"
- }
- },
- {
- "name": "greater float32 1D tensors",
- "inputs": {
- "a": {
- "shape": [24],
- "data": [
- -5.394711458674926,
- -7.189248660357093,
- -3.108176577372168,
- 4.977657240654292,
- 5.111654167277017,
- -1.538657969029952,
- 1.4143663572463936,
- -0.9362112515011844,
- -6.029961511382025,
- -3.0134198095493225,
- 0.17085531331013115,
- 7.395327146335315,
- 7.178691694492247,
- -4.826237489933036,
- -2.0204401018636275,
- -3.267887959306748,
- 8.944384478538513,
- -5.9321008596864555,
- 0.7069857360876597,
- 2.7764204012258844,
- 0.9788337909419198,
- -6.254901877789392,
- 4.40903450389083,
- -6.775286805113776
- ],
- "type": "float32"
- },
- "b": {
- "shape": [24],
- "data": [
- -6.155234276085855,
- -4.023341341511664,
- 5.9525983178014386,
- 2.3066237309537883,
- -2.7692292888690817,
- -0.9711201246625745,
- 1.2222066588909755,
- 4.590261643319389,
- 9.101232896619365,
- -4.997007709812857,
- -4.807293508200368,
- 8.919360491720344,
- 0.900502762346548,
- -2.8414556193065543,
- -2.8280412040974845,
- 8.479845345966147,
- -7.840679465875833,
- 9.213960197279938,
- 4.982364937519449,
- -2.5073192467116145,
- -4.518013838492472,
- 8.351094603114355,
- -6.161073167579363,
- 0.7364829132932815
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- 1,
- 0,
- 0,
- 1,
- 1,
- 0,
- 1,
- 0,
- 0,
- 1,
- 1,
- 0,
- 1,
- 0,
- 1,
- 0,
- 1,
- 0,
- 0,
- 1,
- 1,
- 0,
- 1,
- 0
- ],
- "type": "uint8"
- }
- },
- {
- "name": "greater float32 2D tensors",
- "inputs": {
- "a": {
- "shape": [4, 6],
- "data": [
- -5.394711458674926,
- -7.189248660357093,
- -3.108176577372168,
- 4.977657240654292,
- 5.111654167277017,
- -1.538657969029952,
- 1.4143663572463936,
- -0.9362112515011844,
- -6.029961511382025,
- -3.0134198095493225,
- 0.17085531331013115,
- 7.395327146335315,
- 7.178691694492247,
- -4.826237489933036,
- -2.0204401018636275,
- -3.267887959306748,
- 8.944384478538513,
- -5.9321008596864555,
- 0.7069857360876597,
- 2.7764204012258844,
- 0.9788337909419198,
- -6.254901877789392,
- 4.40903450389083,
- -6.775286805113776
- ],
- "type": "float32"
- },
- "b": {
- "shape": [4, 6],
- "data": [
- -6.155234276085855,
- -4.023341341511664,
- 5.9525983178014386,
- 2.3066237309537883,
- -2.7692292888690817,
- -0.9711201246625745,
- 1.2222066588909755,
- 4.590261643319389,
- 9.101232896619365,
- -4.997007709812857,
- -4.807293508200368,
- 8.919360491720344,
- 0.900502762346548,
- -2.8414556193065543,
- -2.8280412040974845,
- 8.479845345966147,
- -7.840679465875833,
- 9.213960197279938,
- 4.982364937519449,
- -2.5073192467116145,
- -4.518013838492472,
- 8.351094603114355,
- -6.161073167579363,
- 0.7364829132932815
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- 1,
- 0,
- 0,
- 1,
- 1,
- 0,
- 1,
- 0,
- 0,
- 1,
- 1,
- 0,
- 1,
- 0,
- 1,
- 0,
- 1,
- 0,
- 0,
- 1,
- 1,
- 0,
- 1,
- 0
- ],
- "type": "uint8"
- }
- },
- {
- "name": "greater float32 3D tensors",
- "inputs": {
- "a": {
- "shape": [2, 3, 4],
- "data": [
- -5.394711458674926,
- -7.189248660357093,
- -3.108176577372168,
- 4.977657240654292,
- 5.111654167277017,
- -1.538657969029952,
- 1.4143663572463936,
- -0.9362112515011844,
- -6.029961511382025,
- -3.0134198095493225,
- 0.17085531331013115,
- 7.395327146335315,
- 7.178691694492247,
- -4.826237489933036,
- -2.0204401018636275,
- -3.267887959306748,
- 8.944384478538513,
- -5.9321008596864555,
- 0.7069857360876597,
- 2.7764204012258844,
- 0.9788337909419198,
- -6.254901877789392,
- 4.40903450389083,
- -6.775286805113776
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 3, 4],
- "data": [
- -6.155234276085855,
- -4.023341341511664,
- 5.9525983178014386,
- 2.3066237309537883,
- -2.7692292888690817,
- -0.9711201246625745,
- 1.2222066588909755,
- 4.590261643319389,
- 9.101232896619365,
- -4.997007709812857,
- -4.807293508200368,
- 8.919360491720344,
- 0.900502762346548,
- -2.8414556193065543,
- -2.8280412040974845,
- 8.479845345966147,
- -7.840679465875833,
- 9.213960197279938,
- 4.982364937519449,
- -2.5073192467116145,
- -4.518013838492472,
- 8.351094603114355,
- -6.161073167579363,
- 0.7364829132932815
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 3, 4],
- "data": [
- 1,
- 0,
- 0,
- 1,
- 1,
- 0,
- 1,
- 0,
- 0,
- 1,
- 1,
- 0,
- 1,
- 0,
- 1,
- 0,
- 1,
- 0,
- 0,
- 1,
- 1,
- 0,
- 1,
- 0
- ],
- "type": "uint8"
- }
- },
- {
- "name": "greater float32 4D tensors",
- "inputs": {
- "a": {
- "shape": [2, 2, 2, 3],
- "data": [
- -5.394711458674926,
- -7.189248660357093,
- -3.108176577372168,
- 4.977657240654292,
- 5.111654167277017,
- -1.538657969029952,
- 1.4143663572463936,
- -0.9362112515011844,
- -6.029961511382025,
- -3.0134198095493225,
- 0.17085531331013115,
- 7.395327146335315,
- 7.178691694492247,
- -4.826237489933036,
- -2.0204401018636275,
- -3.267887959306748,
- 8.944384478538513,
- -5.9321008596864555,
- 0.7069857360876597,
- 2.7764204012258844,
- 0.9788337909419198,
- -6.254901877789392,
- 4.40903450389083,
- -6.775286805113776
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 2, 3],
- "data": [
- -6.155234276085855,
- -4.023341341511664,
- 5.9525983178014386,
- 2.3066237309537883,
- -2.7692292888690817,
- -0.9711201246625745,
- 1.2222066588909755,
- 4.590261643319389,
- 9.101232896619365,
- -4.997007709812857,
- -4.807293508200368,
- 8.919360491720344,
- 0.900502762346548,
- -2.8414556193065543,
- -2.8280412040974845,
- 8.479845345966147,
- -7.840679465875833,
- 9.213960197279938,
- 4.982364937519449,
- -2.5073192467116145,
- -4.518013838492472,
- 8.351094603114355,
- -6.161073167579363,
- 0.7364829132932815
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 1,
- 0,
- 0,
- 1,
- 1,
- 0,
- 1,
- 0,
- 0,
- 1,
- 1,
- 0,
- 1,
- 0,
- 1,
- 0,
- 1,
- 0,
- 0,
- 1,
- 1,
- 0,
- 1,
- 0
- ],
- "type": "uint8"
- }
- },
- {
- "name": "greater float32 5D tensors",
- "inputs": {
- "a": {
- "shape": [2, 2, 1, 2, 3],
- "data": [
- -5.394711458674926,
- -7.189248660357093,
- -3.108176577372168,
- 4.977657240654292,
- 5.111654167277017,
- -1.538657969029952,
- 1.4143663572463936,
- -0.9362112515011844,
- -6.029961511382025,
- -3.0134198095493225,
- 0.17085531331013115,
- 7.395327146335315,
- 7.178691694492247,
- -4.826237489933036,
- -2.0204401018636275,
- -3.267887959306748,
- 8.944384478538513,
- -5.9321008596864555,
- 0.7069857360876597,
- 2.7764204012258844,
- 0.9788337909419198,
- -6.254901877789392,
- 4.40903450389083,
- -6.775286805113776
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 1, 2, 3],
- "data": [
- -6.155234276085855,
- -4.023341341511664,
- 5.9525983178014386,
- 2.3066237309537883,
- -2.7692292888690817,
- -0.9711201246625745,
- 1.2222066588909755,
- 4.590261643319389,
- 9.101232896619365,
- -4.997007709812857,
- -4.807293508200368,
- 8.919360491720344,
- 0.900502762346548,
- -2.8414556193065543,
- -2.8280412040974845,
- 8.479845345966147,
- -7.840679465875833,
- 9.213960197279938,
- 4.982364937519449,
- -2.5073192467116145,
- -4.518013838492472,
- 8.351094603114355,
- -6.161073167579363,
- 0.7364829132932815
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 1, 2, 3],
- "data": [
- 1,
- 0,
- 0,
- 1,
- 1,
- 0,
- 1,
- 0,
- 0,
- 1,
- 1,
- 0,
- 1,
- 0,
- 1,
- 0,
- 1,
- 0,
- 0,
- 1,
- 1,
- 0,
- 1,
- 0
- ],
- "type": "uint8"
- }
- },
- {
- "name": "greater float32 broadcast 0D to 4D",
- "inputs": {
- "a": {
- "shape": [],
- "data": [
- 6.22164122692616
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 2, 3],
- "data": [
- -5.394711458674926,
- -7.189248660357093,
- -3.108176577372168,
- 4.977657240654292,
- 5.111654167277017,
- -1.538657969029952,
- 1.4143663572463936,
- -0.9362112515011844,
- -6.029961511382025,
- -3.0134198095493225,
- 0.17085531331013115,
- 7.395327146335315,
- 7.178691694492247,
- -4.826237489933036,
- -2.0204401018636275,
- -3.267887959306748,
- 8.944384478538513,
- -5.9321008596864555,
- 0.7069857360876597,
- 2.7764204012258844,
- 0.9788337909419198,
- -6.254901877789392,
- 4.40903450389083,
- -6.775286805113776
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1
- ],
- "type": "uint8"
- }
- },
- {
- "name": "greater float32 broadcast 1D to 4D",
- "inputs": {
- "a": {
- "shape": [1],
- "data": [
- 6.22164122692616
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 2, 3],
- "data": [
- -5.394711458674926,
- -7.189248660357093,
- -3.108176577372168,
- 4.977657240654292,
- 5.111654167277017,
- -1.538657969029952,
- 1.4143663572463936,
- -0.9362112515011844,
- -6.029961511382025,
- -3.0134198095493225,
- 0.17085531331013115,
- 7.395327146335315,
- 7.178691694492247,
- -4.826237489933036,
- -2.0204401018636275,
- -3.267887959306748,
- 8.944384478538513,
- -5.9321008596864555,
- 0.7069857360876597,
- 2.7764204012258844,
- 0.9788337909419198,
- -6.254901877789392,
- 4.40903450389083,
- -6.775286805113776
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1
- ],
- "type": "uint8"
- }
- },
- {
- "name": "greater float32 broadcast 2D to 4D",
- "inputs": {
- "a": {
- "shape": [2, 2, 2, 3],
- "data": [
- -5.394711458674926,
- -7.189248660357093,
- -3.108176577372168,
- 4.977657240654292,
- 5.111654167277017,
- -1.538657969029952,
- 1.4143663572463936,
- -0.9362112515011844,
- -6.029961511382025,
- -3.0134198095493225,
- 0.17085531331013115,
- 7.395327146335315,
- 7.178691694492247,
- -4.826237489933036,
- -2.0204401018636275,
- -3.267887959306748,
- 8.944384478538513,
- -5.9321008596864555,
- 0.7069857360876597,
- 2.7764204012258844,
- 0.9788337909419198,
- -6.254901877789392,
- 4.40903450389083,
- -6.775286805113776
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 3],
- "data": [
- -2.684664470849163,
- 6.170023353490912,
- 9.487744366422781,
- -2.555641152388084,
- -2.0436435571200873,
- 8.533930402669746
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 0,
- 0,
- 0,
- 1,
- 1,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0
- ],
- "type": "uint8"
- }
- },
- {
- "name": "greater float32 broadcast 3D to 4D",
- "inputs": {
- "a": {
- "shape": [2, 2, 2, 3],
- "data": [
- -5.394711458674926,
- -7.189248660357093,
- -3.108176577372168,
- 4.977657240654292,
- 5.111654167277017,
- -1.538657969029952,
- 1.4143663572463936,
- -0.9362112515011844,
- -6.029961511382025,
- -3.0134198095493225,
- 0.17085531331013115,
- 7.395327146335315,
- 7.178691694492247,
- -4.826237489933036,
- -2.0204401018636275,
- -3.267887959306748,
- 8.944384478538513,
- -5.9321008596864555,
- 0.7069857360876597,
- 2.7764204012258844,
- 0.9788337909419198,
- -6.254901877789392,
- 4.40903450389083,
- -6.775286805113776
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 1],
- "data": [
- -7.099076082908593,
- -7.781408238233589,
- 8.782817806924719,
- -8.948624418290514
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 1,
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1
- ],
- "type": "uint8"
- }
- },
- {
- "name": "greater float32 broadcast 4D to 4D",
- "inputs": {
- "a": {
- "shape": [1, 1, 1, 1],
- "data": [
- 6.22164122692616
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 2, 3],
- "data": [
- -5.394711458674926,
- -7.189248660357093,
- -3.108176577372168,
- 4.977657240654292,
- 5.111654167277017,
- -1.538657969029952,
- 1.4143663572463936,
- -0.9362112515011844,
- -6.029961511382025,
- -3.0134198095493225,
- 0.17085531331013115,
- 7.395327146335315,
- 7.178691694492247,
- -4.826237489933036,
- -2.0204401018636275,
- -3.267887959306748,
- 8.944384478538513,
- -5.9321008596864555,
- 0.7069857360876597,
- 2.7764204012258844,
- 0.9788337909419198,
- -6.254901877789392,
- 4.40903450389083,
- -6.775286805113776
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1
- ],
- "type": "uint8"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/greater_or_equal.json b/tests/wpt/tests/webnn/resources/test_data/greater_or_equal.json
deleted file mode 100644
index e47ac4350ab..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/greater_or_equal.json
+++ /dev/null
@@ -1,970 +0,0 @@
-{
- "tests": [
- {
- "name": "greaterOrEqual float32 0D scalar",
- "inputs": {
- "a": {
- "shape": [],
- "data": [
- 0.2829853513361833
- ],
- "type": "float32"
- },
- "b": {
- "shape": [],
- "data": [
- 6.156983509735351
- ],
- "type": "float32"
- }
- },
- "expected": {
- "shape": [],
- "data": [
- 0
- ],
- "type": "uint8"
- }
- },
- {
- "name": "greaterOrEqual float32 1D constant tensors",
- "inputs": {
- "a": {
- "shape": [24],
- "data": [
- -8.049108184315305,
- -5.522611295148119,
- -2.097508268712267,
- -7.455326346855671,
- -5.4503762765457475,
- 9.802918209039795,
- -3.6045179646016123,
- 4.088084930154503,
- -5.068354954162224,
- 1.5821936652025705,
- 5.675583814922739,
- -4.34159498166756,
- 1.6946222397391875,
- 2.926734617639429,
- -7.000074175864097,
- -2.5270822950013105,
- 1.4437268276959525,
- 7.862768559473771,
- 5.782288879751384,
- 1.8712013338616238,
- -0.5233999645803635,
- 0.43433289218891247,
- 8.938365119196128,
- 1.65683957584843
- ],
- "type": "float32",
- "constant": true
- },
- "b": {
- "shape": [24],
- "data": [
- -7.028095113692983,
- 1.9109992244501228,
- 3.576529209692282,
- 1.7167964605289043,
- 2.846137548919838,
- -2.311762981138341,
- -6.086130252861408,
- -3.437926736129744,
- -3.4764428213302656,
- -2.194656398262036,
- 2.9962267558939892,
- -5.540947945499273,
- 5.098470133217425,
- 6.775498827056623,
- 2.4505413384295913,
- 5.210598812779001,
- -9.710094050019439,
- -2.413028179599279,
- 8.678308853275162,
- -9.449530756013411,
- 0.7702168987269076,
- -1.518607415508292,
- -9.15394321549195,
- -4.9917360557925194
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "shape": [24],
- "data": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 0,
- 1,
- 0,
- 1,
- 1,
- 1
- ],
- "type": "uint8"
- }
- },
- {
- "name": "greaterOrEqual float32 1D tensors",
- "inputs": {
- "a": {
- "shape": [24],
- "data": [
- -8.049108184315305,
- -5.522611295148119,
- -2.097508268712267,
- -7.455326346855671,
- -5.4503762765457475,
- 9.802918209039795,
- -3.6045179646016123,
- 4.088084930154503,
- -5.068354954162224,
- 1.5821936652025705,
- 5.675583814922739,
- -4.34159498166756,
- 1.6946222397391875,
- 2.926734617639429,
- -7.000074175864097,
- -2.5270822950013105,
- 1.4437268276959525,
- 7.862768559473771,
- 5.782288879751384,
- 1.8712013338616238,
- -0.5233999645803635,
- 0.43433289218891247,
- 8.938365119196128,
- 1.65683957584843
- ],
- "type": "float32"
- },
- "b": {
- "shape": [24],
- "data": [
- -7.028095113692983,
- 1.9109992244501228,
- 3.576529209692282,
- 1.7167964605289043,
- 2.846137548919838,
- -2.311762981138341,
- -6.086130252861408,
- -3.437926736129744,
- -3.4764428213302656,
- -2.194656398262036,
- 2.9962267558939892,
- -5.540947945499273,
- 5.098470133217425,
- 6.775498827056623,
- 2.4505413384295913,
- 5.210598812779001,
- -9.710094050019439,
- -2.413028179599279,
- 8.678308853275162,
- -9.449530756013411,
- 0.7702168987269076,
- -1.518607415508292,
- -9.15394321549195,
- -4.9917360557925194
- ],
- "type": "float32"
- }
- },
- "expected": {
- "shape": [24],
- "data": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 0,
- 1,
- 0,
- 1,
- 1,
- 1
- ],
- "type": "uint8"
- }
- },
- {
- "name": "greaterOrEqual float32 2D tensors",
- "inputs": {
- "a": {
- "shape": [4, 6],
- "data": [
- -8.049108184315305,
- -5.522611295148119,
- -2.097508268712267,
- -7.455326346855671,
- -5.4503762765457475,
- 9.802918209039795,
- -3.6045179646016123,
- 4.088084930154503,
- -5.068354954162224,
- 1.5821936652025705,
- 5.675583814922739,
- -4.34159498166756,
- 1.6946222397391875,
- 2.926734617639429,
- -7.000074175864097,
- -2.5270822950013105,
- 1.4437268276959525,
- 7.862768559473771,
- 5.782288879751384,
- 1.8712013338616238,
- -0.5233999645803635,
- 0.43433289218891247,
- 8.938365119196128,
- 1.65683957584843
- ],
- "type": "float32"
- },
- "b": {
- "shape": [4, 6],
- "data": [
- -7.028095113692983,
- 1.9109992244501228,
- 3.576529209692282,
- 1.7167964605289043,
- 2.846137548919838,
- -2.311762981138341,
- -6.086130252861408,
- -3.437926736129744,
- -3.4764428213302656,
- -2.194656398262036,
- 2.9962267558939892,
- -5.540947945499273,
- 5.098470133217425,
- 6.775498827056623,
- 2.4505413384295913,
- 5.210598812779001,
- -9.710094050019439,
- -2.413028179599279,
- 8.678308853275162,
- -9.449530756013411,
- 0.7702168987269076,
- -1.518607415508292,
- -9.15394321549195,
- -4.9917360557925194
- ],
- "type": "float32"
- }
- },
- "expected": {
- "shape": [4, 6],
- "data": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 0,
- 1,
- 0,
- 1,
- 1,
- 1
- ],
- "type": "uint8"
- }
- },
- {
- "name": "greaterOrEqual float32 3D tensors",
- "inputs": {
- "a": {
- "shape": [2, 3, 4],
- "data": [
- -8.049108184315305,
- -5.522611295148119,
- -2.097508268712267,
- -7.455326346855671,
- -5.4503762765457475,
- 9.802918209039795,
- -3.6045179646016123,
- 4.088084930154503,
- -5.068354954162224,
- 1.5821936652025705,
- 5.675583814922739,
- -4.34159498166756,
- 1.6946222397391875,
- 2.926734617639429,
- -7.000074175864097,
- -2.5270822950013105,
- 1.4437268276959525,
- 7.862768559473771,
- 5.782288879751384,
- 1.8712013338616238,
- -0.5233999645803635,
- 0.43433289218891247,
- 8.938365119196128,
- 1.65683957584843
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 3, 4],
- "data": [
- -7.028095113692983,
- 1.9109992244501228,
- 3.576529209692282,
- 1.7167964605289043,
- 2.846137548919838,
- -2.311762981138341,
- -6.086130252861408,
- -3.437926736129744,
- -3.4764428213302656,
- -2.194656398262036,
- 2.9962267558939892,
- -5.540947945499273,
- 5.098470133217425,
- 6.775498827056623,
- 2.4505413384295913,
- 5.210598812779001,
- -9.710094050019439,
- -2.413028179599279,
- 8.678308853275162,
- -9.449530756013411,
- 0.7702168987269076,
- -1.518607415508292,
- -9.15394321549195,
- -4.9917360557925194
- ],
- "type": "float32"
- }
- },
- "expected": {
- "shape": [2, 3, 4],
- "data": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 0,
- 1,
- 0,
- 1,
- 1,
- 1
- ],
- "type": "uint8"
- }
- },
- {
- "name": "greaterOrEqual float32 4D tensors",
- "inputs": {
- "a": {
- "shape": [2, 2, 2, 3],
- "data": [
- -8.049108184315305,
- -5.522611295148119,
- -2.097508268712267,
- -7.455326346855671,
- -5.4503762765457475,
- 9.802918209039795,
- -3.6045179646016123,
- 4.088084930154503,
- -5.068354954162224,
- 1.5821936652025705,
- 5.675583814922739,
- -4.34159498166756,
- 1.6946222397391875,
- 2.926734617639429,
- -7.000074175864097,
- -2.5270822950013105,
- 1.4437268276959525,
- 7.862768559473771,
- 5.782288879751384,
- 1.8712013338616238,
- -0.5233999645803635,
- 0.43433289218891247,
- 8.938365119196128,
- 1.65683957584843
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 2, 3],
- "data": [
- -7.028095113692983,
- 1.9109992244501228,
- 3.576529209692282,
- 1.7167964605289043,
- 2.846137548919838,
- -2.311762981138341,
- -6.086130252861408,
- -3.437926736129744,
- -3.4764428213302656,
- -2.194656398262036,
- 2.9962267558939892,
- -5.540947945499273,
- 5.098470133217425,
- 6.775498827056623,
- 2.4505413384295913,
- 5.210598812779001,
- -9.710094050019439,
- -2.413028179599279,
- 8.678308853275162,
- -9.449530756013411,
- 0.7702168987269076,
- -1.518607415508292,
- -9.15394321549195,
- -4.9917360557925194
- ],
- "type": "float32"
- }
- },
- "expected": {
- "shape": [2, 2, 2, 3],
- "data": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 0,
- 1,
- 0,
- 1,
- 1,
- 1
- ],
- "type": "uint8"
- }
- },
- {
- "name": "greaterOrEqual float32 5D tensors",
- "inputs": {
- "a": {
- "shape": [2, 2, 1, 2, 3],
- "data": [
- -8.049108184315305,
- -5.522611295148119,
- -2.097508268712267,
- -7.455326346855671,
- -5.4503762765457475,
- 9.802918209039795,
- -3.6045179646016123,
- 4.088084930154503,
- -5.068354954162224,
- 1.5821936652025705,
- 5.675583814922739,
- -4.34159498166756,
- 1.6946222397391875,
- 2.926734617639429,
- -7.000074175864097,
- -2.5270822950013105,
- 1.4437268276959525,
- 7.862768559473771,
- 5.782288879751384,
- 1.8712013338616238,
- -0.5233999645803635,
- 0.43433289218891247,
- 8.938365119196128,
- 1.65683957584843
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 1, 2, 3],
- "data": [
- -7.028095113692983,
- 1.9109992244501228,
- 3.576529209692282,
- 1.7167964605289043,
- 2.846137548919838,
- -2.311762981138341,
- -6.086130252861408,
- -3.437926736129744,
- -3.4764428213302656,
- -2.194656398262036,
- 2.9962267558939892,
- -5.540947945499273,
- 5.098470133217425,
- 6.775498827056623,
- 2.4505413384295913,
- 5.210598812779001,
- -9.710094050019439,
- -2.413028179599279,
- 8.678308853275162,
- -9.449530756013411,
- 0.7702168987269076,
- -1.518607415508292,
- -9.15394321549195,
- -4.9917360557925194
- ],
- "type": "float32"
- }
- },
- "expected": {
- "shape": [2, 2, 1, 2, 3],
- "data": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 0,
- 1,
- 0,
- 1,
- 1,
- 1
- ],
- "type": "uint8"
- }
- },
- {
- "name": "greaterOrEqual float32 broadcast 0D to 4D",
- "inputs": {
- "a": {
- "shape": [],
- "data": [
- -1.0187572964482339
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 2, 3],
- "data": [
- -8.049108184315305,
- -5.522611295148119,
- -2.097508268712267,
- -7.455326346855671,
- -5.4503762765457475,
- 9.802918209039795,
- -3.6045179646016123,
- 4.088084930154503,
- -5.068354954162224,
- 1.5821936652025705,
- 5.675583814922739,
- -4.34159498166756,
- 1.6946222397391875,
- 2.926734617639429,
- -7.000074175864097,
- -2.5270822950013105,
- 1.4437268276959525,
- 7.862768559473771,
- 5.782288879751384,
- 1.8712013338616238,
- -0.5233999645803635,
- 0.43433289218891247,
- 8.938365119196128,
- 1.65683957584843
- ],
- "type": "float32"
- }
- },
- "expected": {
- "shape": [2, 2, 2, 3],
- "data": [
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 1,
- 0,
- 1,
- 0,
- 0,
- 1,
- 0,
- 0,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- "type": "uint8"
- }
- },
- {
- "name": "greaterOrEqual float32 broadcast 1D to 4D",
- "inputs": {
- "a": {
- "shape": [1],
- "data": [
- -1.0187572964482339
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 2, 3],
- "data": [
- -8.049108184315305,
- -5.522611295148119,
- -2.097508268712267,
- -7.455326346855671,
- -5.4503762765457475,
- 9.802918209039795,
- -3.6045179646016123,
- 4.088084930154503,
- -5.068354954162224,
- 1.5821936652025705,
- 5.675583814922739,
- -4.34159498166756,
- 1.6946222397391875,
- 2.926734617639429,
- -7.000074175864097,
- -2.5270822950013105,
- 1.4437268276959525,
- 7.862768559473771,
- 5.782288879751384,
- 1.8712013338616238,
- -0.5233999645803635,
- 0.43433289218891247,
- 8.938365119196128,
- 1.65683957584843
- ],
- "type": "float32"
- }
- },
- "expected": {
- "shape": [2, 2, 2, 3],
- "data": [
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 1,
- 0,
- 1,
- 0,
- 0,
- 1,
- 0,
- 0,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- "type": "uint8"
- }
- },
- {
- "name": "greaterOrEqual float32 broadcast 2D to 4D",
- "inputs": {
- "a": {
- "shape": [2, 2, 2, 3],
- "data": [
- -8.049108184315305,
- -5.522611295148119,
- -2.097508268712267,
- -7.455326346855671,
- -5.4503762765457475,
- 9.802918209039795,
- -3.6045179646016123,
- 4.088084930154503,
- -5.068354954162224,
- 1.5821936652025705,
- 5.675583814922739,
- -4.34159498166756,
- 1.6946222397391875,
- 2.926734617639429,
- -7.000074175864097,
- -2.5270822950013105,
- 1.4437268276959525,
- 7.862768559473771,
- 5.782288879751384,
- 1.8712013338616238,
- -0.5233999645803635,
- 0.43433289218891247,
- 8.938365119196128,
- 1.65683957584843
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 3],
- "data": [
- -4.19451362795888,
- 3.8917840404002177,
- -3.5139974150349484,
- 6.279316420756992,
- 0.0017881708061917578,
- -0.7928582491851124
- ],
- "type": "float32"
- }
- },
- "expected": {
- "shape": [2, 2, 2, 3],
- "data": [
- 0,
- 0,
- 1,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0,
- 0,
- 1,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0,
- 1,
- 0,
- 1,
- 1
- ],
- "type": "uint8"
- }
- },
- {
- "name": "greaterOrEqual float32 broadcast 3D to 4D",
- "inputs": {
- "a": {
- "shape": [2, 2, 2, 3],
- "data": [
- -8.049108184315305,
- -5.522611295148119,
- -2.097508268712267,
- -7.455326346855671,
- -5.4503762765457475,
- 9.802918209039795,
- -3.6045179646016123,
- 4.088084930154503,
- -5.068354954162224,
- 1.5821936652025705,
- 5.675583814922739,
- -4.34159498166756,
- 1.6946222397391875,
- 2.926734617639429,
- -7.000074175864097,
- -2.5270822950013105,
- 1.4437268276959525,
- 7.862768559473771,
- 5.782288879751384,
- 1.8712013338616238,
- -0.5233999645803635,
- 0.43433289218891247,
- 8.938365119196128,
- 1.65683957584843
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 1],
- "data": [
- -3.282304702993888,
- -1.397563682654157,
- 0.4905360718662557,
- -6.882648917469618
- ],
- "type": "float32"
- }
- },
- "expected": {
- "shape": [2, 2, 2, 3],
- "data": [
- 0,
- 0,
- 1,
- 0,
- 0,
- 1,
- 0,
- 1,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 1,
- 1,
- 1
- ],
- "type": "uint8"
- }
- },
- {
- "name": "greaterOrEqual float32 broadcast 4D to 4D",
- "inputs": {
- "a": {
- "shape": [1, 1, 1, 1],
- "data": [
- -1.0187572964482339
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 2, 3],
- "data": [
- -8.049108184315305,
- -5.522611295148119,
- -2.097508268712267,
- -7.455326346855671,
- -5.4503762765457475,
- 9.802918209039795,
- -3.6045179646016123,
- 4.088084930154503,
- -5.068354954162224,
- 1.5821936652025705,
- 5.675583814922739,
- -4.34159498166756,
- 1.6946222397391875,
- 2.926734617639429,
- -7.000074175864097,
- -2.5270822950013105,
- 1.4437268276959525,
- 7.862768559473771,
- 5.782288879751384,
- 1.8712013338616238,
- -0.5233999645803635,
- 0.43433289218891247,
- 8.938365119196128,
- 1.65683957584843
- ],
- "type": "float32"
- }
- },
- "expected": {
- "shape": [2, 2, 2, 3],
- "data": [
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 1,
- 0,
- 1,
- 0,
- 0,
- 1,
- 0,
- 0,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- "type": "uint8"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/hard_sigmoid.json b/tests/wpt/tests/webnn/resources/test_data/hard_sigmoid.json
deleted file mode 100644
index 5d8c0c5daf1..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/hard_sigmoid.json
+++ /dev/null
@@ -1,957 +0,0 @@
-{ // hardSigmoid: Calculate the non-smooth function used in place of a sigmoid function on the input tensor.
- "tests": [
- {
- "name": "hardSigmoid float32 positive 1D constant tensor default options", // default options: {alpha: 0.2, beta: 0.5}
- "inputs": {
- "x": {
- "shape": [24],
- "data": [
- 0.05907066981577147,
- 0.7076089198897,
- 0.5228405296259637,
- 0.42310158753617455,
- 0.6643692569867639,
- 0.9502940424761401,
- 0.10918906453593258,
- 0.012977113903015258,
- 0.4755297159390164,
- 0.5322551665299613,
- 0.684307857800798,
- 0.4662107602754757,
- 0.3048996433987061,
- 0.8025872652109942,
- 0.2485963985673023,
- 0.6636898942337357,
- 0.554761182646025,
- 0.5542584257213008,
- 0.7311381962152534,
- 0.48809603333206986,
- 0.7766845231174959,
- 0.8455570201933926,
- 0.5553020911955322,
- 0.5603444395469193
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- 0.5118141174316406,
- 0.6415218114852905,
- 0.6045681238174438,
- 0.5846202969551086,
- 0.6328738331794739,
- 0.6900588274002075,
- 0.5218378305435181,
- 0.5025954246520996,
- 0.5951059460639954,
- 0.6064510345458984,
- 0.6368615627288818,
- 0.5932421684265137,
- 0.5609799027442932,
- 0.6605174541473389,
- 0.5497192740440369,
- 0.6327379941940308,
- 0.6109522581100464,
- 0.6108517050743103,
- 0.6462276577949524,
- 0.5976191759109497,
- 0.6553369164466858,
- 0.669111430644989,
- 0.6110604405403137,
- 0.6120688915252686
- ],
- "type": "float32"
- }
- },
- {
- "name": "hardSigmoid float32 positive 1D tensor default options", // default options: {alpha: 0.2, beta: 0.5}
- "inputs": {
- "x": {
- "shape": [24],
- "data": [
- 0.05907066981577147,
- 0.7076089198897,
- 0.5228405296259637,
- 0.42310158753617455,
- 0.6643692569867639,
- 0.9502940424761401,
- 0.10918906453593258,
- 0.012977113903015258,
- 0.4755297159390164,
- 0.5322551665299613,
- 0.684307857800798,
- 0.4662107602754757,
- 0.3048996433987061,
- 0.8025872652109942,
- 0.2485963985673023,
- 0.6636898942337357,
- 0.554761182646025,
- 0.5542584257213008,
- 0.7311381962152534,
- 0.48809603333206986,
- 0.7766845231174959,
- 0.8455570201933926,
- 0.5553020911955322,
- 0.5603444395469193
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- 0.5118141174316406,
- 0.6415218114852905,
- 0.6045681238174438,
- 0.5846202969551086,
- 0.6328738331794739,
- 0.6900588274002075,
- 0.5218378305435181,
- 0.5025954246520996,
- 0.5951059460639954,
- 0.6064510345458984,
- 0.6368615627288818,
- 0.5932421684265137,
- 0.5609799027442932,
- 0.6605174541473389,
- 0.5497192740440369,
- 0.6327379941940308,
- 0.6109522581100464,
- 0.6108517050743103,
- 0.6462276577949524,
- 0.5976191759109497,
- 0.6553369164466858,
- 0.669111430644989,
- 0.6110604405403137,
- 0.6120688915252686
- ],
- "type": "float32"
- }
- },
- {
- "name": "hardSigmoid float32 positive 2D tensor default options",
- "inputs": {
- "x": {
- "shape": [4, 6],
- "data": [
- 0.05907066981577147,
- 0.7076089198897,
- 0.5228405296259637,
- 0.42310158753617455,
- 0.6643692569867639,
- 0.9502940424761401,
- 0.10918906453593258,
- 0.012977113903015258,
- 0.4755297159390164,
- 0.5322551665299613,
- 0.684307857800798,
- 0.4662107602754757,
- 0.3048996433987061,
- 0.8025872652109942,
- 0.2485963985673023,
- 0.6636898942337357,
- 0.554761182646025,
- 0.5542584257213008,
- 0.7311381962152534,
- 0.48809603333206986,
- 0.7766845231174959,
- 0.8455570201933926,
- 0.5553020911955322,
- 0.5603444395469193
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- 0.5118141174316406,
- 0.6415218114852905,
- 0.6045681238174438,
- 0.5846202969551086,
- 0.6328738331794739,
- 0.6900588274002075,
- 0.5218378305435181,
- 0.5025954246520996,
- 0.5951059460639954,
- 0.6064510345458984,
- 0.6368615627288818,
- 0.5932421684265137,
- 0.5609799027442932,
- 0.6605174541473389,
- 0.5497192740440369,
- 0.6327379941940308,
- 0.6109522581100464,
- 0.6108517050743103,
- 0.6462276577949524,
- 0.5976191759109497,
- 0.6553369164466858,
- 0.669111430644989,
- 0.6110604405403137,
- 0.6120688915252686
- ],
- "type": "float32"
- }
- },
- {
- "name": "hardSigmoid float32 positive 3D tensor default options",
- "inputs": {
- "x": {
- "shape": [2, 3, 4],
- "data": [
- 0.05907066981577147,
- 0.7076089198897,
- 0.5228405296259637,
- 0.42310158753617455,
- 0.6643692569867639,
- 0.9502940424761401,
- 0.10918906453593258,
- 0.012977113903015258,
- 0.4755297159390164,
- 0.5322551665299613,
- 0.684307857800798,
- 0.4662107602754757,
- 0.3048996433987061,
- 0.8025872652109942,
- 0.2485963985673023,
- 0.6636898942337357,
- 0.554761182646025,
- 0.5542584257213008,
- 0.7311381962152534,
- 0.48809603333206986,
- 0.7766845231174959,
- 0.8455570201933926,
- 0.5553020911955322,
- 0.5603444395469193
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 3, 4],
- "data": [
- 0.5118141174316406,
- 0.6415218114852905,
- 0.6045681238174438,
- 0.5846202969551086,
- 0.6328738331794739,
- 0.6900588274002075,
- 0.5218378305435181,
- 0.5025954246520996,
- 0.5951059460639954,
- 0.6064510345458984,
- 0.6368615627288818,
- 0.5932421684265137,
- 0.5609799027442932,
- 0.6605174541473389,
- 0.5497192740440369,
- 0.6327379941940308,
- 0.6109522581100464,
- 0.6108517050743103,
- 0.6462276577949524,
- 0.5976191759109497,
- 0.6553369164466858,
- 0.669111430644989,
- 0.6110604405403137,
- 0.6120688915252686
- ],
- "type": "float32"
- }
- },
- {
- "name": "hardSigmoid float32 positive 4D tensor default options",
- "inputs": {
- "x": {
- "shape": [1, 2, 3, 4],
- "data": [
- 0.05907066981577147,
- 0.7076089198897,
- 0.5228405296259637,
- 0.42310158753617455,
- 0.6643692569867639,
- 0.9502940424761401,
- 0.10918906453593258,
- 0.012977113903015258,
- 0.4755297159390164,
- 0.5322551665299613,
- 0.684307857800798,
- 0.4662107602754757,
- 0.3048996433987061,
- 0.8025872652109942,
- 0.2485963985673023,
- 0.6636898942337357,
- 0.554761182646025,
- 0.5542584257213008,
- 0.7311381962152534,
- 0.48809603333206986,
- 0.7766845231174959,
- 0.8455570201933926,
- 0.5553020911955322,
- 0.5603444395469193
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 3, 4],
- "data": [
- 0.5118141174316406,
- 0.6415218114852905,
- 0.6045681238174438,
- 0.5846202969551086,
- 0.6328738331794739,
- 0.6900588274002075,
- 0.5218378305435181,
- 0.5025954246520996,
- 0.5951059460639954,
- 0.6064510345458984,
- 0.6368615627288818,
- 0.5932421684265137,
- 0.5609799027442932,
- 0.6605174541473389,
- 0.5497192740440369,
- 0.6327379941940308,
- 0.6109522581100464,
- 0.6108517050743103,
- 0.6462276577949524,
- 0.5976191759109497,
- 0.6553369164466858,
- 0.669111430644989,
- 0.6110604405403137,
- 0.6120688915252686
- ],
- "type": "float32"
- }
- },
- {
- "name": "hardSigmoid float32 positive 5D tensor default options",
- "inputs": {
- "x": {
- "shape": [1, 2, 1, 3, 4],
- "data": [
- 0.05907066981577147,
- 0.7076089198897,
- 0.5228405296259637,
- 0.42310158753617455,
- 0.6643692569867639,
- 0.9502940424761401,
- 0.10918906453593258,
- 0.012977113903015258,
- 0.4755297159390164,
- 0.5322551665299613,
- 0.684307857800798,
- 0.4662107602754757,
- 0.3048996433987061,
- 0.8025872652109942,
- 0.2485963985673023,
- 0.6636898942337357,
- 0.554761182646025,
- 0.5542584257213008,
- 0.7311381962152534,
- 0.48809603333206986,
- 0.7766845231174959,
- 0.8455570201933926,
- 0.5553020911955322,
- 0.5603444395469193
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 1, 3, 4],
- "data": [
- 0.5118141174316406,
- 0.6415218114852905,
- 0.6045681238174438,
- 0.5846202969551086,
- 0.6328738331794739,
- 0.6900588274002075,
- 0.5218378305435181,
- 0.5025954246520996,
- 0.5951059460639954,
- 0.6064510345458984,
- 0.6368615627288818,
- 0.5932421684265137,
- 0.5609799027442932,
- 0.6605174541473389,
- 0.5497192740440369,
- 0.6327379941940308,
- 0.6109522581100464,
- 0.6108517050743103,
- 0.6462276577949524,
- 0.5976191759109497,
- 0.6553369164466858,
- 0.669111430644989,
- 0.6110604405403137,
- 0.6120688915252686
- ],
- "type": "float32"
- }
- },
- {
- "name": "hardSigmoid float32 positive 4D tensor specified positive options.alpha default options.beta",
- "inputs": {
- "x": {
- "shape": [1, 2, 3, 4],
- "data": [
- 0.05907066981577147,
- 0.7076089198897,
- 0.5228405296259637,
- 0.42310158753617455,
- 0.6643692569867639,
- 0.9502940424761401,
- 0.10918906453593258,
- 0.012977113903015258,
- 0.4755297159390164,
- 0.5322551665299613,
- 0.684307857800798,
- 0.4662107602754757,
- 0.3048996433987061,
- 0.8025872652109942,
- 0.2485963985673023,
- 0.6636898942337357,
- 0.554761182646025,
- 0.5542584257213008,
- 0.7311381962152534,
- 0.48809603333206986,
- 0.7766845231174959,
- 0.8455570201933926,
- 0.5553020911955322,
- 0.5603444395469193
- ],
- "type": "float32"
- }
- },
- "options": {
- "alpha": 0.7854232544278235
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 3, 4],
- "data": [
- 0.546395480632782,
- 1,
- 0.9106510877609253,
- 0.8323138356208801,
- 1,
- 1,
- 0.5857596397399902,
- 0.5101925134658813,
- 0.8734921216964722,
- 0.9180455803871155,
- 1,
- 0.8661727905273438,
- 0.7394752502441406,
- 1,
- 0.6952533721923828,
- 1,
- 0.9357223510742188,
- 0.9353274703025818,
- 1,
- 0.8833619952201843,
- 1,
- 1,
- 0.936147153377533,
- 0.9401075839996338
- ],
- "type": "float32"
- }
- },
- {
- "name": "hardSigmoid float32 negative 4D tensor specified negative options.alpha default options.beta",
- "inputs": {
- "x": {
- "shape": [1, 2, 3, 4],
- "data": [
- -0.05907066981577147,
- -0.7076089198897,
- -0.5228405296259637,
- -0.42310158753617455,
- -0.6643692569867639,
- -0.9502940424761401,
- -0.10918906453593258,
- -0.012977113903015258,
- -0.4755297159390164,
- -0.5322551665299613,
- -0.684307857800798,
- -0.4662107602754757,
- -0.3048996433987061,
- -0.8025872652109942,
- -0.2485963985673023,
- -0.6636898942337357,
- -0.554761182646025,
- -0.5542584257213008,
- -0.7311381962152534,
- -0.48809603333206986,
- -0.7766845231174959,
- -0.8455570201933926,
- -0.5553020911955322,
- -0.5603444395469193
- ],
- "type": "float32"
- }
- },
- "options": {
- "alpha": -0.7854232544278235
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 3, 4],
- "data": [
- 0.546395480632782,
- 1,
- 0.9106510877609253,
- 0.8323138356208801,
- 1,
- 1,
- 0.5857596397399902,
- 0.5101925134658813,
- 0.8734921216964722,
- 0.9180455803871155,
- 1,
- 0.8661727905273438,
- 0.7394752502441406,
- 1,
- 0.6952533721923828,
- 1,
- 0.9357223510742188,
- 0.9353274703025818,
- 1,
- 0.8833619952201843,
- 1,
- 1,
- 0.936147153377533,
- 0.9401075839996338
- ],
- "type": "float32"
- }
- },
- {
- "name": "hardSigmoid float32 positive 4D tensor specified positive options.beta default options.alpha",
- "inputs": {
- "x": {
- "shape": [1, 2, 3, 4],
- "data": [
- 0.05907066981577147,
- 0.7076089198897,
- 0.5228405296259637,
- 0.42310158753617455,
- 0.6643692569867639,
- 0.9502940424761401,
- 0.10918906453593258,
- 0.012977113903015258,
- 0.4755297159390164,
- 0.5322551665299613,
- 0.684307857800798,
- 0.4662107602754757,
- 0.3048996433987061,
- 0.8025872652109942,
- 0.2485963985673023,
- 0.6636898942337357,
- 0.554761182646025,
- 0.5542584257213008,
- 0.7311381962152534,
- 0.48809603333206986,
- 0.7766845231174959,
- 0.8455570201933926,
- 0.5553020911955322,
- 0.5603444395469193
- ],
- "type": "float32"
- }
- },
- "options": {
- "beta": 0.4361860418530341
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 3, 4],
- "data": [
- 0.4480001926422119,
- 0.577707827091217,
- 0.5407541394233704,
- 0.5208063721656799,
- 0.5690599083900452,
- 0.626244843006134,
- 0.4580238461494446,
- 0.4387814700603485,
- 0.5312919616699219,
- 0.5426371097564697,
- 0.5730476379394531,
- 0.5294281840324402,
- 0.4971659779548645,
- 0.5967035293579102,
- 0.48590531945228577,
- 0.5689240097999573,
- 0.5471382737159729,
- 0.5470377206802368,
- 0.5824136734008789,
- 0.533805251121521,
- 0.5915229320526123,
- 0.6052974462509155,
- 0.5472464561462402,
- 0.5482549667358398
- ],
- "type": "float32"
- }
- },
- {
- "name": "hardSigmoid float32 negative 4D tensor specified negative options.beta default options.alpha",
- "inputs": {
- "x": {
- "shape": [1, 2, 3, 4],
- "data": [
- -0.05907066981577147,
- -0.7076089198897,
- -0.5228405296259637,
- -0.42310158753617455,
- -0.6643692569867639,
- -0.9502940424761401,
- -0.10918906453593258,
- -0.012977113903015258,
- -0.4755297159390164,
- -0.5322551665299613,
- -0.684307857800798,
- -0.4662107602754757,
- -0.3048996433987061,
- -0.8025872652109942,
- -0.2485963985673023,
- -0.6636898942337357,
- -0.554761182646025,
- -0.5542584257213008,
- -0.7311381962152534,
- -0.48809603333206986,
- -0.7766845231174959,
- -0.8455570201933926,
- -0.5553020911955322,
- -0.5603444395469193
- ],
- "type": "float32"
- }
- },
- "options": {
- "beta": -0.436186041853034
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 3, 4],
- "data": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- "type": "float32"
- }
- },
- {
- "name": "hardSigmoid float32 positive 4D tensor specified all options (positive options.alpha and positive options.beta)",
- "inputs": {
- "x": {
- "shape": [1, 2, 3, 4],
- "data": [
- 0.05907066981577147,
- 0.7076089198897,
- 0.5228405296259637,
- 0.42310158753617455,
- 0.6643692569867639,
- 0.9502940424761401,
- 0.10918906453593258,
- 0.012977113903015258,
- 0.4755297159390164,
- 0.5322551665299613,
- 0.684307857800798,
- 0.4662107602754757,
- 0.3048996433987061,
- 0.8025872652109942,
- 0.2485963985673023,
- 0.6636898942337357,
- 0.554761182646025,
- 0.5542584257213008,
- 0.7311381962152534,
- 0.48809603333206986,
- 0.7766845231174959,
- 0.8455570201933926,
- 0.5553020911955322,
- 0.5603444395469193
- ],
- "type": "float32"
- }
- },
- "options": {
- "alpha": 0.7854232544278235,
- "beta": 0.4361860418530341
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 3, 4],
- "data": [
- 0.4825815260410309,
- 0.9919585585594177,
- 0.8468371629714966,
- 0.7684998512268066,
- 0.9579971432685852,
- 1,
- 0.5219456553459167,
- 0.44637855887413025,
- 0.8096781373023987,
- 0.8542316555976868,
- 0.9736573696136475,
- 0.8023588061332703,
- 0.6756613254547119,
- 1,
- 0.6314394474029541,
- 0.9574635624885559,
- 0.8719083666801453,
- 0.8715134859085083,
- 1,
- 0.8195480108261108,
- 1,
- 1,
- 0.8723332285881042,
- 0.8762935996055603
- ],
- "type": "float32"
- }
- },
- {
- "name": "hardSigmoid float32 positive 4D tensor specified all options (negative options.alpha and negative options.beta)",
- "inputs": {
- "x": {
- "shape": [1, 2, 3, 4],
- "data": [
- 0.05907066981577147,
- 0.7076089198897,
- 0.5228405296259637,
- 0.42310158753617455,
- 0.6643692569867639,
- 0.9502940424761401,
- 0.10918906453593258,
- 0.012977113903015258,
- 0.4755297159390164,
- 0.5322551665299613,
- 0.684307857800798,
- 0.4662107602754757,
- 0.3048996433987061,
- 0.8025872652109942,
- 0.2485963985673023,
- 0.6636898942337357,
- 0.554761182646025,
- 0.5542584257213008,
- 0.7311381962152534,
- 0.48809603333206986,
- 0.7766845231174959,
- 0.8455570201933926,
- 0.5553020911955322,
- 0.5603444395469193
- ],
- "type": "float32"
- }
- },
- "options": {
- "alpha": -0.7854232544278235,
- "beta": -0.4361860418530341
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 3, 4],
- "data": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- "type": "float32"
- }
- },
- {
- "name": "hardSigmoid float32 negative 4D tensor all options (positive options.alpha and negative options.beta)",
- "inputs": {
- "x": {
- "shape": [1, 2, 3, 4],
- "data": [
- -0.05907066981577147,
- -0.7076089198897,
- -0.5228405296259637,
- -0.42310158753617455,
- -0.6643692569867639,
- -0.9502940424761401,
- -0.10918906453593258,
- -0.012977113903015258,
- -0.4755297159390164,
- -0.5322551665299613,
- -0.684307857800798,
- -0.4662107602754757,
- -0.3048996433987061,
- -0.8025872652109942,
- -0.2485963985673023,
- -0.6636898942337357,
- -0.554761182646025,
- -0.5542584257213008,
- -0.7311381962152534,
- -0.48809603333206986,
- -0.7766845231174959,
- -0.8455570201933926,
- -0.5553020911955322,
- -0.5603444395469193
- ],
- "type": "float32"
- }
- },
- "options": {
- "alpha": 0.7854232544278235,
- "beta": -0.4361860418530341
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 3, 4],
- "data": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- "type": "float32"
- }
- },
- {
- "name": "hardSigmoid float32 negative 4D tensor specified all options (negative options.alpha and positive options.beta)",
- "inputs": {
- "x": {
- "shape": [1, 2, 3, 4],
- "data": [
- -0.05907066981577147,
- -0.7076089198897,
- -0.5228405296259637,
- -0.42310158753617455,
- -0.6643692569867639,
- -0.9502940424761401,
- -0.10918906453593258,
- -0.012977113903015258,
- -0.4755297159390164,
- -0.5322551665299613,
- -0.684307857800798,
- -0.4662107602754757,
- -0.3048996433987061,
- -0.8025872652109942,
- -0.2485963985673023,
- -0.6636898942337357,
- -0.554761182646025,
- -0.5542584257213008,
- -0.7311381962152534,
- -0.48809603333206986,
- -0.7766845231174959,
- -0.8455570201933926,
- -0.5553020911955322,
- -0.5603444395469193
- ],
- "type": "float32"
- }
- },
- "options": {
- "alpha": -0.7854232544278235,
- "beta": 0.4361860418530341
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 3, 4],
- "data": [
- 0.4825815260410309,
- 0.9919585585594177,
- 0.8468371629714966,
- 0.7684998512268066,
- 0.9579971432685852,
- 1,
- 0.5219456553459167,
- 0.44637855887413025,
- 0.8096781373023987,
- 0.8542316555976868,
- 0.9736573696136475,
- 0.8023588061332703,
- 0.6756613254547119,
- 1,
- 0.6314394474029541,
- 0.9574635624885559,
- 0.8719083666801453,
- 0.8715134859085083,
- 1,
- 0.8195480108261108,
- 1,
- 1,
- 0.8723332285881042,
- 0.8762935996055603
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/hard_swish.json b/tests/wpt/tests/webnn/resources/test_data/hard_swish.json
deleted file mode 100644
index e43f62ede0e..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/hard_swish.json
+++ /dev/null
@@ -1,401 +0,0 @@
-{
- "tests": [
- {
- "name": "hardSwish float32 1D constant tensor",
- "inputs": {
- "x": {
- "shape": [24],
- "data": [
- 0.7341583533045579,
- 9.118859151005996,
- 3.545238531520827,
- 2.621943879280181,
- -6.445507690595167,
- -1.6835596550754381,
- 5.523179785756591,
- -5.958856051028132,
- -9.169189933081544,
- 6.420943542920213,
- -3.293031330275471,
- 1.0410166785810624,
- -7.246322671816956,
- -0.9472730969847909,
- -5.778352255817807,
- 3.185229125228698,
- -7.261818072290236,
- 4.174602615173795,
- 3.7802628241590686,
- -6.07124038718255,
- -9.909919471919547,
- -7.744259390113584,
- -8.286120816748381,
- 8.083491160956697
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- 0.4569105803966522,
- 9.11885929107666,
- 3.545238494873047,
- 2.4567370414733887,
- 0,
- -0.3693843185901642,
- 5.52318000793457,
- 0,
- 0,
- 6.420943737030029,
- 0,
- 0.7011276483535767,
- 0,
- -0.3240821659564972,
- 0,
- 3.1852290630340576,
- 0,
- 4.174602508544922,
- 3.7802627086639404,
- 0,
- 0,
- 0,
- 0,
- 8.083491325378418
- ],
- "type": "float32"
- }
- },
- {
- "name": "hardSwish float32 1D tensor",
- "inputs": {
- "x": {
- "shape": [24],
- "data": [
- 0.7341583533045579,
- 9.118859151005996,
- 3.545238531520827,
- 2.621943879280181,
- -6.445507690595167,
- -1.6835596550754381,
- 5.523179785756591,
- -5.958856051028132,
- -9.169189933081544,
- 6.420943542920213,
- -3.293031330275471,
- 1.0410166785810624,
- -7.246322671816956,
- -0.9472730969847909,
- -5.778352255817807,
- 3.185229125228698,
- -7.261818072290236,
- 4.174602615173795,
- 3.7802628241590686,
- -6.07124038718255,
- -9.909919471919547,
- -7.744259390113584,
- -8.286120816748381,
- 8.083491160956697
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- 0.4569105803966522,
- 9.11885929107666,
- 3.545238494873047,
- 2.4567370414733887,
- 0,
- -0.3693843185901642,
- 5.52318000793457,
- 0,
- 0,
- 6.420943737030029,
- 0,
- 0.7011276483535767,
- 0,
- -0.3240821659564972,
- 0,
- 3.1852290630340576,
- 0,
- 4.174602508544922,
- 3.7802627086639404,
- 0,
- 0,
- 0,
- 0,
- 8.083491325378418
- ],
- "type": "float32"
- }
- },
- {
- "name": "hardSwish float32 2D tensor",
- "inputs": {
- "x": {
- "shape": [4, 6],
- "data": [
- 0.7341583533045579,
- 9.118859151005996,
- 3.545238531520827,
- 2.621943879280181,
- -6.445507690595167,
- -1.6835596550754381,
- 5.523179785756591,
- -5.958856051028132,
- -9.169189933081544,
- 6.420943542920213,
- -3.293031330275471,
- 1.0410166785810624,
- -7.246322671816956,
- -0.9472730969847909,
- -5.778352255817807,
- 3.185229125228698,
- -7.261818072290236,
- 4.174602615173795,
- 3.7802628241590686,
- -6.07124038718255,
- -9.909919471919547,
- -7.744259390113584,
- -8.286120816748381,
- 8.083491160956697
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- 0.4569105803966522,
- 9.11885929107666,
- 3.545238494873047,
- 2.4567370414733887,
- 0,
- -0.3693843185901642,
- 5.52318000793457,
- 0,
- 0,
- 6.420943737030029,
- 0,
- 0.7011276483535767,
- 0,
- -0.3240821659564972,
- 0,
- 3.1852290630340576,
- 0,
- 4.174602508544922,
- 3.7802627086639404,
- 0,
- 0,
- 0,
- 0,
- 8.083491325378418
- ],
- "type": "float32"
- }
- },
- {
- "name": "hardSwish float32 3D tensor",
- "inputs": {
- "x": {
- "shape": [2, 3, 4],
- "data": [
- 0.7341583533045579,
- 9.118859151005996,
- 3.545238531520827,
- 2.621943879280181,
- -6.445507690595167,
- -1.6835596550754381,
- 5.523179785756591,
- -5.958856051028132,
- -9.169189933081544,
- 6.420943542920213,
- -3.293031330275471,
- 1.0410166785810624,
- -7.246322671816956,
- -0.9472730969847909,
- -5.778352255817807,
- 3.185229125228698,
- -7.261818072290236,
- 4.174602615173795,
- 3.7802628241590686,
- -6.07124038718255,
- -9.909919471919547,
- -7.744259390113584,
- -8.286120816748381,
- 8.083491160956697
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 3, 4],
- "data": [
- 0.4569105803966522,
- 9.11885929107666,
- 3.545238494873047,
- 2.4567370414733887,
- 0,
- -0.3693843185901642,
- 5.52318000793457,
- 0,
- 0,
- 6.420943737030029,
- 0,
- 0.7011276483535767,
- 0,
- -0.3240821659564972,
- 0,
- 3.1852290630340576,
- 0,
- 4.174602508544922,
- 3.7802627086639404,
- 0,
- 0,
- 0,
- 0,
- 8.083491325378418
- ],
- "type": "float32"
- }
- },
- {
- "name": "hardSwish float32 4D tensor",
- "inputs": {
- "x": {
- "shape": [2, 2, 2, 3],
- "data": [
- 0.7341583533045579,
- 9.118859151005996,
- 3.545238531520827,
- 2.621943879280181,
- -6.445507690595167,
- -1.6835596550754381,
- 5.523179785756591,
- -5.958856051028132,
- -9.169189933081544,
- 6.420943542920213,
- -3.293031330275471,
- 1.0410166785810624,
- -7.246322671816956,
- -0.9472730969847909,
- -5.778352255817807,
- 3.185229125228698,
- -7.261818072290236,
- 4.174602615173795,
- 3.7802628241590686,
- -6.07124038718255,
- -9.909919471919547,
- -7.744259390113584,
- -8.286120816748381,
- 8.083491160956697
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 0.4569105803966522,
- 9.11885929107666,
- 3.545238494873047,
- 2.4567370414733887,
- 0,
- -0.3693843185901642,
- 5.52318000793457,
- 0,
- 0,
- 6.420943737030029,
- 0,
- 0.7011276483535767,
- 0,
- -0.3240821659564972,
- 0,
- 3.1852290630340576,
- 0,
- 4.174602508544922,
- 3.7802627086639404,
- 0,
- 0,
- 0,
- 0,
- 8.083491325378418
- ],
- "type": "float32"
- }
- },
- {
- "name": "hardSwish float32 5D tensor",
- "inputs": {
- "x": {
- "shape": [2, 1, 4, 1, 3],
- "data": [
- 0.7341583533045579,
- 9.118859151005996,
- 3.545238531520827,
- 2.621943879280181,
- -6.445507690595167,
- -1.6835596550754381,
- 5.523179785756591,
- -5.958856051028132,
- -9.169189933081544,
- 6.420943542920213,
- -3.293031330275471,
- 1.0410166785810624,
- -7.246322671816956,
- -0.9472730969847909,
- -5.778352255817807,
- 3.185229125228698,
- -7.261818072290236,
- 4.174602615173795,
- 3.7802628241590686,
- -6.07124038718255,
- -9.909919471919547,
- -7.744259390113584,
- -8.286120816748381,
- 8.083491160956697
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 1, 4, 1, 3],
- "data": [
- 0.4569105803966522,
- 9.11885929107666,
- 3.545238494873047,
- 2.4567370414733887,
- 0,
- -0.3693843185901642,
- 5.52318000793457,
- 0,
- 0,
- 6.420943737030029,
- 0,
- 0.7011276483535767,
- 0,
- -0.3240821659564972,
- 0,
- 3.1852290630340576,
- 0,
- 4.174602508544922,
- 3.7802627086639404,
- 0,
- 0,
- 0,
- 0,
- 8.083491325378418
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/identity.json b/tests/wpt/tests/webnn/resources/test_data/identity.json
deleted file mode 100644
index 6024e8786fb..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/identity.json
+++ /dev/null
@@ -1,422 +0,0 @@
-{
- "tests": [
- {
- "name": "identity float32 0D scalar",
- "inputs": {
- "input": {
- "shape": [],
- "data": [
- -4.273642352495437
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [],
- "data": [
- -4.273642539978027
- ],
- "type": "float32"
- }
- },
- {
- "name": "identity float32 1D constant tensor",
- "inputs": {
- "input": {
- "shape":[24],
- "data": [
- 0.3775514170243319,
- -0.8890897684684553,
- 9.965806154214683,
- 7.964576323402355,
- -4.207889285235442,
- -3.748703004469509,
- -2.5114005246358584,
- 5.777673182705456,
- -4.472823584733945,
- -8.405767426137253,
- -3.857972358579822,
- 6.0361876313443865,
- 9.076417609486516,
- 7.101912233390028,
- 1.4166420410053604,
- -5.644308337756456,
- -2.598648114422626,
- -7.264847061642685,
- -9.782458548766716,
- 5.4966995825042275,
- -9.967339588615012,
- -6.901016518448189,
- -2.850190435789366,
- 3.279616439989832
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- 0.377551406621933,
- -0.8890897631645203,
- 9.965806007385254,
- 7.964576244354248,
- -4.207889080047607,
- -3.7487030029296875,
- -2.5114004611968994,
- 5.777673244476318,
- -4.472823619842529,
- -8.405767440795898,
- -3.8579723834991455,
- 6.036187648773193,
- 9.076417922973633,
- 7.101912021636963,
- 1.4166420698165894,
- -5.644308567047119,
- -2.5986480712890625,
- -7.264847278594971,
- -9.782458305358887,
- 5.496699810028076,
- -9.967339515686035,
- -6.901016712188721,
- -2.8501904010772705,
- 3.279616355895996
- ],
- "type": "float32",
- "constant": true
- }
- },
- {
- "name": "identity float32 1D tensor",
- "inputs": {
- "input": {
- "shape":[24],
- "data": [
- 0.3775514170243319,
- -0.8890897684684553,
- 9.965806154214683,
- 7.964576323402355,
- -4.207889285235442,
- -3.748703004469509,
- -2.5114005246358584,
- 5.777673182705456,
- -4.472823584733945,
- -8.405767426137253,
- -3.857972358579822,
- 6.0361876313443865,
- 9.076417609486516,
- 7.101912233390028,
- 1.4166420410053604,
- -5.644308337756456,
- -2.598648114422626,
- -7.264847061642685,
- -9.782458548766716,
- 5.4966995825042275,
- -9.967339588615012,
- -6.901016518448189,
- -2.850190435789366,
- 3.279616439989832
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- 0.377551406621933,
- -0.8890897631645203,
- 9.965806007385254,
- 7.964576244354248,
- -4.207889080047607,
- -3.7487030029296875,
- -2.5114004611968994,
- 5.777673244476318,
- -4.472823619842529,
- -8.405767440795898,
- -3.8579723834991455,
- 6.036187648773193,
- 9.076417922973633,
- 7.101912021636963,
- 1.4166420698165894,
- -5.644308567047119,
- -2.5986480712890625,
- -7.264847278594971,
- -9.782458305358887,
- 5.496699810028076,
- -9.967339515686035,
- -6.901016712188721,
- -2.8501904010772705,
- 3.279616355895996
- ],
- "type": "float32"
- }
- },
- {
- "name": "identity float32 2D tensor",
- "inputs": {
- "input": {
- "shape":[4, 6],
- "data": [
- 0.3775514170243319,
- -0.8890897684684553,
- 9.965806154214683,
- 7.964576323402355,
- -4.207889285235442,
- -3.748703004469509,
- -2.5114005246358584,
- 5.777673182705456,
- -4.472823584733945,
- -8.405767426137253,
- -3.857972358579822,
- 6.0361876313443865,
- 9.076417609486516,
- 7.101912233390028,
- 1.4166420410053604,
- -5.644308337756456,
- -2.598648114422626,
- -7.264847061642685,
- -9.782458548766716,
- 5.4966995825042275,
- -9.967339588615012,
- -6.901016518448189,
- -2.850190435789366,
- 3.279616439989832
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- 0.377551406621933,
- -0.8890897631645203,
- 9.965806007385254,
- 7.964576244354248,
- -4.207889080047607,
- -3.7487030029296875,
- -2.5114004611968994,
- 5.777673244476318,
- -4.472823619842529,
- -8.405767440795898,
- -3.8579723834991455,
- 6.036187648773193,
- 9.076417922973633,
- 7.101912021636963,
- 1.4166420698165894,
- -5.644308567047119,
- -2.5986480712890625,
- -7.264847278594971,
- -9.782458305358887,
- 5.496699810028076,
- -9.967339515686035,
- -6.901016712188721,
- -2.8501904010772705,
- 3.279616355895996
- ],
- "type": "float32"
- }
- },
- {
- "name": "identity float32 3D tensor",
- "inputs": {
- "input": {
- "shape":[2, 3, 4],
- "data": [
- 0.3775514170243319,
- -0.8890897684684553,
- 9.965806154214683,
- 7.964576323402355,
- -4.207889285235442,
- -3.748703004469509,
- -2.5114005246358584,
- 5.777673182705456,
- -4.472823584733945,
- -8.405767426137253,
- -3.857972358579822,
- 6.0361876313443865,
- 9.076417609486516,
- 7.101912233390028,
- 1.4166420410053604,
- -5.644308337756456,
- -2.598648114422626,
- -7.264847061642685,
- -9.782458548766716,
- 5.4966995825042275,
- -9.967339588615012,
- -6.901016518448189,
- -2.850190435789366,
- 3.279616439989832
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 3, 4],
- "data": [
- 0.377551406621933,
- -0.8890897631645203,
- 9.965806007385254,
- 7.964576244354248,
- -4.207889080047607,
- -3.7487030029296875,
- -2.5114004611968994,
- 5.777673244476318,
- -4.472823619842529,
- -8.405767440795898,
- -3.8579723834991455,
- 6.036187648773193,
- 9.076417922973633,
- 7.101912021636963,
- 1.4166420698165894,
- -5.644308567047119,
- -2.5986480712890625,
- -7.264847278594971,
- -9.782458305358887,
- 5.496699810028076,
- -9.967339515686035,
- -6.901016712188721,
- -2.8501904010772705,
- 3.279616355895996
- ],
- "type": "float32"
- }
- },
- {
- "name": "identity float32 4D tensor",
- "inputs": {
- "input": {
- "shape":[2, 2, 2, 3],
- "data": [
- 0.3775514170243319,
- -0.8890897684684553,
- 9.965806154214683,
- 7.964576323402355,
- -4.207889285235442,
- -3.748703004469509,
- -2.5114005246358584,
- 5.777673182705456,
- -4.472823584733945,
- -8.405767426137253,
- -3.857972358579822,
- 6.0361876313443865,
- 9.076417609486516,
- 7.101912233390028,
- 1.4166420410053604,
- -5.644308337756456,
- -2.598648114422626,
- -7.264847061642685,
- -9.782458548766716,
- 5.4966995825042275,
- -9.967339588615012,
- -6.901016518448189,
- -2.850190435789366,
- 3.279616439989832
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 0.377551406621933,
- -0.8890897631645203,
- 9.965806007385254,
- 7.964576244354248,
- -4.207889080047607,
- -3.7487030029296875,
- -2.5114004611968994,
- 5.777673244476318,
- -4.472823619842529,
- -8.405767440795898,
- -3.8579723834991455,
- 6.036187648773193,
- 9.076417922973633,
- 7.101912021636963,
- 1.4166420698165894,
- -5.644308567047119,
- -2.5986480712890625,
- -7.264847278594971,
- -9.782458305358887,
- 5.496699810028076,
- -9.967339515686035,
- -6.901016712188721,
- -2.8501904010772705,
- 3.279616355895996
- ],
- "type": "float32"
- }
- },
- {
- "name": "identity float32 5D tensor",
- "inputs": {
- "input": {
- "shape":[2, 1, 4, 1, 3],
- "data": [
- 0.3775514170243319,
- -0.8890897684684553,
- 9.965806154214683,
- 7.964576323402355,
- -4.207889285235442,
- -3.748703004469509,
- -2.5114005246358584,
- 5.777673182705456,
- -4.472823584733945,
- -8.405767426137253,
- -3.857972358579822,
- 6.0361876313443865,
- 9.076417609486516,
- 7.101912233390028,
- 1.4166420410053604,
- -5.644308337756456,
- -2.598648114422626,
- -7.264847061642685,
- -9.782458548766716,
- 5.4966995825042275,
- -9.967339588615012,
- -6.901016518448189,
- -2.850190435789366,
- 3.279616439989832
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 1, 4, 1, 3],
- "data": [
- 0.377551406621933,
- -0.8890897631645203,
- 9.965806007385254,
- 7.964576244354248,
- -4.207889080047607,
- -3.7487030029296875,
- -2.5114004611968994,
- 5.777673244476318,
- -4.472823619842529,
- -8.405767440795898,
- -3.8579723834991455,
- 6.036187648773193,
- 9.076417922973633,
- 7.101912021636963,
- 1.4166420698165894,
- -5.644308567047119,
- -2.5986480712890625,
- -7.264847278594971,
- -9.782458305358887,
- 5.496699810028076,
- -9.967339515686035,
- -6.901016712188721,
- -2.8501904010772705,
- 3.279616355895996
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/instance_normalization.json b/tests/wpt/tests/webnn/resources/test_data/instance_normalization.json
deleted file mode 100644
index a9fd493c992..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/instance_normalization.json
+++ /dev/null
@@ -1,519 +0,0 @@
-{
- "tests": [
- {
- "name": "instanceNormalization float32 4D tensor default options",
- "inputs": {
- "input": {
- "shape": [2, 3, 2, 2],
- "data": [
- -97.949951171875,
- 29.44037628173828,
- -73.92131042480469,
- -38.11185836791992,
- 41.33772659301758,
- -59.77853012084961,
- -74.66901397705078,
- -68.16508483886719,
- 35.82481384277344,
- -6.948329448699951,
- 54.42462158203125,
- 47.53074645996094,
- 66.93562316894531,
- 76.74034881591797,
- 5.6758809089660645,
- 25.68659210205078,
- 37.37651062011719,
- 56.252689361572266,
- -16.574905395507812,
- 42.949893951416016,
- 73.8739242553711,
- -99.00035095214844,
- -33.11322784423828,
- -17.380685806274414
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 3, 2, 2],
- "data": [
- -1.0995290279388428,
- 1.5525832176208496,
- -0.5992818474769592,
- 0.14622758328914642,
- 1.72129487991333,
- -0.41020718216896057,
- -0.7240943908691406,
- -0.586993396282196,
- 0.13073226809501648,
- -1.6633318662643433,
- 0.9108771681785583,
- 0.6217224597930908,
- 0.7947131395339966,
- 1.1309205293655396,
- -1.3059037923812866,
- -0.6197298169136047,
- 0.2657700479030609,
- 0.9459608793258667,
- -1.6783342361450195,
- 0.46660327911376953,
- 1.5037200450897217,
- -1.2981476783752441,
- -0.2302791178226471,
- 0.024706769734621048
- ],
- "type": "float32"
- }
- },
- {
- "name": "instanceNormalization float32 4D tensor options.scale",
- "inputs": {
- "input": {
- "shape": [2, 3, 2, 2],
- "data": [
- -97.949951171875,
- 29.44037628173828,
- -73.92131042480469,
- -38.11185836791992,
- 41.33772659301758,
- -59.77853012084961,
- -74.66901397705078,
- -68.16508483886719,
- 35.82481384277344,
- -6.948329448699951,
- 54.42462158203125,
- 47.53074645996094,
- 66.93562316894531,
- 76.74034881591797,
- 5.6758809089660645,
- 25.68659210205078,
- 37.37651062011719,
- 56.252689361572266,
- -16.574905395507812,
- 42.949893951416016,
- 73.8739242553711,
- -99.00035095214844,
- -33.11322784423828,
- -17.380685806274414
- ],
- "type": "float32"
- }
- },
- "options": {
- "scale": {
- "shape": [3],
- "data": [
- -94.42772674560547,
- 66.69620513916016,
- -98.56572723388672
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 3, 2, 2],
- "data": [
- 103.8260269165039,
- -146.60690307617188,
- 56.58882141113281,
- -13.807937622070312,
- 114.80384063720703,
- -27.359262466430664,
- -48.29434585571289,
- -39.150230407714844,
- -12.885721206665039,
- 163.94752502441406,
- -89.78126525878906,
- -61.2805290222168,
- -75.04296112060547,
- -106.79025268554688,
- 123.31352996826172,
- 58.51968002319336,
- 17.725852966308594,
- 63.09199905395508,
- -111.93852233886719,
- 31.120668411254883,
- -148.2152557373047,
- 127.95286560058594,
- 22.697628021240234,
- -2.4352407455444336
- ],
- "type": "float32"
- }
- },
- {
- "name": "instanceNormalization float32 4D tensor options.bias",
- "inputs": {
- "input": {
- "shape": [2, 3, 2, 2],
- "data": [
- -97.949951171875,
- 29.44037628173828,
- -73.92131042480469,
- -38.11185836791992,
- 41.33772659301758,
- -59.77853012084961,
- -74.66901397705078,
- -68.16508483886719,
- 35.82481384277344,
- -6.948329448699951,
- 54.42462158203125,
- 47.53074645996094,
- 66.93562316894531,
- 76.74034881591797,
- 5.6758809089660645,
- 25.68659210205078,
- 37.37651062011719,
- 56.252689361572266,
- -16.574905395507812,
- 42.949893951416016,
- 73.8739242553711,
- -99.00035095214844,
- -33.11322784423828,
- -17.380685806274414
- ],
- "type": "float32"
- }
- },
- "options": {
- "bias": {
- "shape": [3],
- "data": [
- -33.048641204833984,
- 4.511423587799072,
- -37.93617248535156
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 3, 2, 2],
- "data": [
- -34.148170471191406,
- -31.496057510375977,
- -33.64792251586914,
- -32.90241241455078,
- 6.232718467712402,
- 4.1012163162231445,
- 3.7873291969299316,
- 3.9244301319122314,
- -37.80543899536133,
- -39.59950256347656,
- -37.02529525756836,
- -37.314449310302734,
- -32.253929138183594,
- -31.917720794677734,
- -34.35454559326172,
- -33.66836929321289,
- 4.777193546295166,
- 5.4573845863342285,
- 2.8330893516540527,
- 4.978026866912842,
- -36.43245315551758,
- -39.23432159423828,
- -38.16645050048828,
- -37.91146469116211
- ],
- "type": "float32"
- }
- },
- {
- "name": "instanceNormalization float32 4D tensor options.epsilon",
- "inputs": {
- "input": {
- "shape": [2, 3, 2, 2],
- "data": [
- -97.949951171875,
- 29.44037628173828,
- -73.92131042480469,
- -38.11185836791992,
- 41.33772659301758,
- -59.77853012084961,
- -74.66901397705078,
- -68.16508483886719,
- 35.82481384277344,
- -6.948329448699951,
- 54.42462158203125,
- 47.53074645996094,
- 66.93562316894531,
- 76.74034881591797,
- 5.6758809089660645,
- 25.68659210205078,
- 37.37651062011719,
- 56.252689361572266,
- -16.574905395507812,
- 42.949893951416016,
- 73.8739242553711,
- -99.00035095214844,
- -33.11322784423828,
- -17.380685806274414
- ],
- "type": "float32"
- }
- },
- "options": {
- "epsilon": 0.000001
- },
- "expected": {
- "name": "output",
- "shape": [2, 3, 2, 2],
- "data": [
- -1.0995290279388428,
- 1.5525832176208496,
- -0.5992818474769592,
- 0.14622758328914642,
- 1.72129487991333,
- -0.41020718216896057,
- -0.7240943908691406,
- -0.586993396282196,
- 0.13073226809501648,
- -1.6633318662643433,
- 0.9108771681785583,
- 0.6217224597930908,
- 0.7947131991386414,
- 1.1309205293655396,
- -1.3059037923812866,
- -0.6197298765182495,
- 0.2657700479030609,
- 0.9459608793258667,
- -1.6783342361450195,
- 0.46660327911376953,
- 1.5037200450897217,
- -1.2981476783752441,
- -0.2302791178226471,
- 0.024706769734621048
- ],
- "type": "float32"
- }
- },
- {
- "name": "instanceNormalization float32 4D tensor explict options.layout='nchw'",
- "inputs": {
- "input": {
- "shape": [2, 3, 2, 2],
- "data": [
- -97.949951171875,
- 29.44037628173828,
- -73.92131042480469,
- -38.11185836791992,
- 41.33772659301758,
- -59.77853012084961,
- -74.66901397705078,
- -68.16508483886719,
- 35.82481384277344,
- -6.948329448699951,
- 54.42462158203125,
- 47.53074645996094,
- 66.93562316894531,
- 76.74034881591797,
- 5.6758809089660645,
- 25.68659210205078,
- 37.37651062011719,
- 56.252689361572266,
- -16.574905395507812,
- 42.949893951416016,
- 73.8739242553711,
- -99.00035095214844,
- -33.11322784423828,
- -17.380685806274414
- ],
- "type": "float32"
- }
- },
- "options": {
- "layout": "nchw"
- },
- "expected": {
- "name": "output",
- "shape": [2, 3, 2, 2],
- "data": [
- -1.0995290279388428,
- 1.5525832176208496,
- -0.5992818474769592,
- 0.14622758328914642,
- 1.72129487991333,
- -0.41020718216896057,
- -0.7240943908691406,
- -0.586993396282196,
- 0.13073226809501648,
- -1.6633318662643433,
- 0.9108771681785583,
- 0.6217224597930908,
- 0.7947131395339966,
- 1.1309205293655396,
- -1.3059037923812866,
- -0.6197298169136047,
- 0.2657700479030609,
- 0.9459608793258667,
- -1.6783342361450195,
- 0.46660327911376953,
- 1.5037200450897217,
- -1.2981476783752441,
- -0.2302791178226471,
- 0.024706769734621048
- ],
- "type": "float32"
- }
- },
- {
- "name": "instanceNormalization float32 4D tensor options.layout='nhwc'",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- -97.949951171875,
- 41.33772659301758,
- 35.82481384277344,
- 29.44037628173828,
- -59.77853012084961,
- -6.948329448699951,
- -73.92131042480469,
- -74.66901397705078,
- 54.42462158203125,
- -38.11185836791992,
- -68.16508483886719,
- 47.53074645996094,
- 66.93562316894531,
- 37.37651062011719,
- 73.8739242553711,
- 76.74034881591797,
- 56.252689361572266,
- -99.00035095214844,
- 5.6758809089660645,
- -16.574905395507812,
- -33.11322784423828,
- 25.68659210205078,
- 42.949893951416016,
- -17.380685806274414
- ],
- "type": "float32"
- }
- },
- "options": {
- "layout": "nhwc"
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- -1.0995290279388428,
- 1.72129487991333,
- 0.13073226809501648,
- 1.5525832176208496,
- -0.41020718216896057,
- -1.6633318662643433,
- -0.5992818474769592,
- -0.7240943908691406,
- 0.9108771681785583,
- 0.14622758328914642,
- -0.586993396282196,
- 0.6217224597930908,
- 0.7947131395339966,
- 0.2657700479030609,
- 1.5037200450897217,
- 1.1309205293655396,
- 0.9459608793258667,
- -1.2981476783752441,
- -1.3059037923812866,
- -1.6783342361450195,
- -0.2302791178226471,
- -0.6197298169136047,
- 0.46660327911376953,
- 0.024706769734621048
- ],
- "type": "float32"
- }
- },
- {
- "name": "instanceNormalization float32 4D tensor all options",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- -97.949951171875,
- 41.33772659301758,
- 35.82481384277344,
- 29.44037628173828,
- -59.77853012084961,
- -6.948329448699951,
- -73.92131042480469,
- -74.66901397705078,
- 54.42462158203125,
- -38.11185836791992,
- -68.16508483886719,
- 47.53074645996094,
- 66.93562316894531,
- 37.37651062011719,
- 73.8739242553711,
- 76.74034881591797,
- 56.252689361572266,
- -99.00035095214844,
- 5.6758809089660645,
- -16.574905395507812,
- -33.11322784423828,
- 25.68659210205078,
- 42.949893951416016,
- -17.380685806274414
- ],
- "type": "float32"
- }
- },
- "options": {
- "scale": {
- "shape": [3],
- "data": [
- -94.42772674560547,
- 66.69620513916016,
- -98.56572723388672
- ],
- "type": "float32"
- },
- "bias": {
- "shape": [3],
- "data": [
- -33.048641204833984,
- 4.511423587799072,
- -37.93617248535156
- ],
- "type": "float32"
- },
- "epsilon": 0.000001,
- "layout": "nhwc"
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 70.77738189697266,
- 119.31526184082031,
- -50.821895599365234,
- -179.65554809570312,
- -22.847837448120117,
- 126.01134490966797,
- 23.540178298950195,
- -43.782920837402344,
- -127.71744537353516,
- -46.8565788269043,
- -34.6388053894043,
- -99.2166976928711,
- -108.09159851074219,
- 22.237276077270508,
- -186.15142822265625,
- -139.83889770507812,
- 67.60342407226562,
- 90.01669311523438,
- 90.26488494873047,
- -107.4271011352539,
- -15.238543510437012,
- 25.471038818359375,
- 35.6320915222168,
- -40.37141418457031
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/l2_pool2d.json b/tests/wpt/tests/webnn/resources/test_data/l2_pool2d.json
deleted file mode 100644
index a65687721a3..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/l2_pool2d.json
+++ /dev/null
@@ -1,1174 +0,0 @@
-{
- "tests": [
- {
- "name": "l2Pool2d float32 4D constant tensor all positive default options",
- "inputs": {
- "input": {
- "shape": [1, 2, 5, 5],
- "data": [
- 94.07447814941406,
- 76.55464172363281,
- 62.71847152709961,
- 83.8726577758789,
- 73.10235595703125,
- 41.52470779418945,
- 39.3339729309082,
- 86.59486389160156,
- 23.09039306640625,
- 53.650146484375,
- 0.00902052316814661,
- 42.78899383544922,
- 81.03960418701172,
- 33.48585510253906,
- 33.67196273803711,
- 0.42822372913360596,
- 80.07991790771484,
- 5.929991722106934,
- 48.89164733886719,
- 15.282920837402344,
- 13.335721969604492,
- 39.06557846069336,
- 97.06050109863281,
- 83.68133544921875,
- 21.79571533203125,
- 52.027313232421875,
- 6.397815227508545,
- 84.54785919189453,
- 18.622516632080078,
- 34.10626220703125,
- 73.96932220458984,
- 36.1437873840332,
- 60.73781967163086,
- 55.09187316894531,
- 63.8924446105957,
- 59.36124038696289,
- 50.91202926635742,
- 50.339813232421875,
- 59.31963348388672,
- 70.78031921386719,
- 35.56179428100586,
- 82.53382873535156,
- 7.572360038757324,
- 61.90089416503906,
- 14.084012985229492,
- 90.86540985107422,
- 39.56248474121094,
- 67.77167510986328,
- 69.69512176513672,
- 89.54518127441406
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 1, 1],
- "data": [
- 289.01953125,
- 292.6146545410156
- ],
- "type": "float32"
- }
- },
- {
- "name": "l2Pool2d float32 4D tensor default all positive options",
- "inputs": {
- "input": {
- "shape": [1, 2, 5, 5],
- "data": [
- 94.07447814941406,
- 76.55464172363281,
- 62.71847152709961,
- 83.8726577758789,
- 73.10235595703125,
- 41.52470779418945,
- 39.3339729309082,
- 86.59486389160156,
- 23.09039306640625,
- 53.650146484375,
- 0.00902052316814661,
- 42.78899383544922,
- 81.03960418701172,
- 33.48585510253906,
- 33.67196273803711,
- 0.42822372913360596,
- 80.07991790771484,
- 5.929991722106934,
- 48.89164733886719,
- 15.282920837402344,
- 13.335721969604492,
- 39.06557846069336,
- 97.06050109863281,
- 83.68133544921875,
- 21.79571533203125,
- 52.027313232421875,
- 6.397815227508545,
- 84.54785919189453,
- 18.622516632080078,
- 34.10626220703125,
- 73.96932220458984,
- 36.1437873840332,
- 60.73781967163086,
- 55.09187316894531,
- 63.8924446105957,
- 59.36124038696289,
- 50.91202926635742,
- 50.339813232421875,
- 59.31963348388672,
- 70.78031921386719,
- 35.56179428100586,
- 82.53382873535156,
- 7.572360038757324,
- 61.90089416503906,
- 14.084012985229492,
- 90.86540985107422,
- 39.56248474121094,
- 67.77167510986328,
- 69.69512176513672,
- 89.54518127441406
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 1, 1],
- "data": [
- 289.01953125,
- 292.6146545410156
- ],
- "type": "float32"
- }
- },
- {
- "name": "l2Pool2d float32 4D tensor default all negative options",
- "inputs": {
- "input": {
- "shape": [1, 2, 5, 5],
- "data": [
- -1.1957088708877563,
- -9.706199645996094,
- -39.54935836791992,
- -82.34971618652344,
- -32.87415313720703,
- -50.22603225708008,
- -31.17849349975586,
- -55.817893981933594,
- -46.70829391479492,
- -38.68181228637695,
- -63.299320220947266,
- -35.09224319458008,
- -80.93848419189453,
- -82.8619613647461,
- -40.41627502441406,
- -34.86458206176758,
- -84.33639526367188,
- -84.11852264404297,
- -5.525088787078857,
- -99.03114318847656,
- -75.505126953125,
- -91.43389129638672,
- -96.71258544921875,
- -16.722585678100586,
- -17.98292350769043,
- -58.06570816040039,
- -11.846800804138184,
- -97.90313720703125,
- -38.69822692871094,
- -80.19510650634766,
- -48.72047805786133,
- -90.86722564697266,
- -99.10758209228516,
- -79.70288848876953,
- -59.3824462890625,
- -9.967330932617188,
- -39.27534866333008,
- -10.469644546508789,
- -27.565326690673828,
- -2.0468990802764893,
- -81.88761901855469,
- -66.88040161132812,
- -85.98504638671875,
- -29.674592971801758,
- -19.649417877197266,
- -89.39192199707031,
- -61.13504409790039,
- -84.16869354248047,
- -77.36112213134766,
- -91.17266082763672
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 1, 1],
- "data": [
- 298.928955078125,
- 326.83587646484375
- ],
- "type": "float32"
- }
- },
- {
- "name": "l2Pool2d float32 4D tensor options.windowDimensions",
- "inputs": {
- "input": {
- "shape": [1, 2, 5, 5],
- "data": [
- 94.07447814941406,
- 76.55464172363281,
- 62.71847152709961,
- 83.8726577758789,
- 73.10235595703125,
- 41.52470779418945,
- 39.3339729309082,
- 86.59486389160156,
- 23.09039306640625,
- 53.650146484375,
- 0.00902052316814661,
- 42.78899383544922,
- 81.03960418701172,
- 33.48585510253906,
- 33.67196273803711,
- 0.42822372913360596,
- 80.07991790771484,
- 5.929991722106934,
- 48.89164733886719,
- 15.282920837402344,
- 13.335721969604492,
- 39.06557846069336,
- 97.06050109863281,
- 83.68133544921875,
- 21.79571533203125,
- 52.027313232421875,
- 6.397815227508545,
- 84.54785919189453,
- 18.622516632080078,
- 34.10626220703125,
- 73.96932220458984,
- 36.1437873840332,
- 60.73781967163086,
- 55.09187316894531,
- 63.8924446105957,
- 59.36124038696289,
- 50.91202926635742,
- 50.339813232421875,
- 59.31963348388672,
- 70.78031921386719,
- 35.56179428100586,
- 82.53382873535156,
- 7.572360038757324,
- 61.90089416503906,
- 14.084012985229492,
- 90.86540985107422,
- 39.56248474121094,
- 67.77167510986328,
- 69.69512176513672,
- 89.54518127441406
- ],
- "type": "float32"
- }
- },
- "options": {
- "windowDimensions": [3, 3]
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 3, 3],
- "data": [
- 194.45481872558594,
- 189.54539489746094,
- 189.85488891601562,
- 160.0518341064453,
- 167.1435546875,
- 149.63897705078125,
- 161.15570068359375,
- 190.5449981689453,
- 168.4636688232422,
- 170.331787109375,
- 155.60073852539062,
- 174.72145080566406,
- 165.07762145996094,
- 165.45819091796875,
- 161.11062622070312,
- 176.6307373046875,
- 174.245361328125,
- 180.60714721679688
- ],
- "type": "float32"
- }
- },
- {
- "name": "l2Pool2d float32 4D tensor options.padding",
- "inputs": {
- "input": {
- "shape": [1, 2, 5, 5],
- "data": [
- 94.07447814941406,
- 76.55464172363281,
- 62.71847152709961,
- 83.8726577758789,
- 73.10235595703125,
- 41.52470779418945,
- 39.3339729309082,
- 86.59486389160156,
- 23.09039306640625,
- 53.650146484375,
- 0.00902052316814661,
- 42.78899383544922,
- 81.03960418701172,
- 33.48585510253906,
- 33.67196273803711,
- 0.42822372913360596,
- 80.07991790771484,
- 5.929991722106934,
- 48.89164733886719,
- 15.282920837402344,
- 13.335721969604492,
- 39.06557846069336,
- 97.06050109863281,
- 83.68133544921875,
- 21.79571533203125,
- 52.027313232421875,
- 6.397815227508545,
- 84.54785919189453,
- 18.622516632080078,
- 34.10626220703125,
- 73.96932220458984,
- 36.1437873840332,
- 60.73781967163086,
- 55.09187316894531,
- 63.8924446105957,
- 59.36124038696289,
- 50.91202926635742,
- 50.339813232421875,
- 59.31963348388672,
- 70.78031921386719,
- 35.56179428100586,
- 82.53382873535156,
- 7.572360038757324,
- 61.90089416503906,
- 14.084012985229492,
- 90.86540985107422,
- 39.56248474121094,
- 67.77167510986328,
- 69.69512176513672,
- 89.54518127441406
- ],
- "type": "float32"
- }
- },
- "options": {
- "padding": [1, 0, 0, 1]
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 2, 2],
- "data": [
- 254.81358337402344,
- 233.14259338378906,
- 289.01953125,
- 269.777587890625,
- 241.52200317382812,
- 212.99337768554688,
- 292.6146545410156,
- 253.77178955078125
- ],
- "type": "float32"
- }
- },
- {
- "name": "l2Pool2d float32 4D tensor options.strides",
- "inputs": {
- "input": {
- "shape": [1, 2, 5, 5],
- "data": [
- 94.07447814941406,
- 76.55464172363281,
- 62.71847152709961,
- 83.8726577758789,
- 73.10235595703125,
- 41.52470779418945,
- 39.3339729309082,
- 86.59486389160156,
- 23.09039306640625,
- 53.650146484375,
- 0.00902052316814661,
- 42.78899383544922,
- 81.03960418701172,
- 33.48585510253906,
- 33.67196273803711,
- 0.42822372913360596,
- 80.07991790771484,
- 5.929991722106934,
- 48.89164733886719,
- 15.282920837402344,
- 13.335721969604492,
- 39.06557846069336,
- 97.06050109863281,
- 83.68133544921875,
- 21.79571533203125,
- 52.027313232421875,
- 6.397815227508545,
- 84.54785919189453,
- 18.622516632080078,
- 34.10626220703125,
- 73.96932220458984,
- 36.1437873840332,
- 60.73781967163086,
- 55.09187316894531,
- 63.8924446105957,
- 59.36124038696289,
- 50.91202926635742,
- 50.339813232421875,
- 59.31963348388672,
- 70.78031921386719,
- 35.56179428100586,
- 82.53382873535156,
- 7.572360038757324,
- 61.90089416503906,
- 14.084012985229492,
- 90.86540985107422,
- 39.56248474121094,
- 67.77167510986328,
- 69.69512176513672,
- 89.54518127441406
- ],
- "type": "float32"
- }
- },
- "options": {
- "windowDimensions": [3, 3],
- "strides": [2, 2]
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 2, 2],
- "data": [
- 194.45481872558594,
- 189.85488891601562,
- 161.15570068359375,
- 168.4636688232422,
- 170.331787109375,
- 174.72145080566406,
- 176.6307373046875,
- 180.60714721679688
- ],
- "type": "float32"
- }
- },
- {
- "name": "l2Pool2d float32 4D tensor options.dilations",
- "inputs": {
- "input": {
- "shape": [1, 2, 5, 5],
- "data": [
- 94.07447814941406,
- 76.55464172363281,
- 62.71847152709961,
- 83.8726577758789,
- 73.10235595703125,
- 41.52470779418945,
- 39.3339729309082,
- 86.59486389160156,
- 23.09039306640625,
- 53.650146484375,
- 0.00902052316814661,
- 42.78899383544922,
- 81.03960418701172,
- 33.48585510253906,
- 33.67196273803711,
- 0.42822372913360596,
- 80.07991790771484,
- 5.929991722106934,
- 48.89164733886719,
- 15.282920837402344,
- 13.335721969604492,
- 39.06557846069336,
- 97.06050109863281,
- 83.68133544921875,
- 21.79571533203125,
- 52.027313232421875,
- 6.397815227508545,
- 84.54785919189453,
- 18.622516632080078,
- 34.10626220703125,
- 73.96932220458984,
- 36.1437873840332,
- 60.73781967163086,
- 55.09187316894531,
- 63.8924446105957,
- 59.36124038696289,
- 50.91202926635742,
- 50.339813232421875,
- 59.31963348388672,
- 70.78031921386719,
- 35.56179428100586,
- 82.53382873535156,
- 7.572360038757324,
- 61.90089416503906,
- 14.084012985229492,
- 90.86540985107422,
- 39.56248474121094,
- 67.77167510986328,
- 69.69512176513672,
- 89.54518127441406
- ],
- "type": "float32"
- }
- },
- "options": {
- "windowDimensions": [3, 3],
- "dilations": [2, 2]
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 1, 1],
- "data": [
- 189.47933959960938,
- 207.25343322753906
- ],
- "type": "float32"
- }
- },
- {
- "name": "l2Pool2d float32 4D tensor options.layout=nchw",
- "inputs": {
- "input": {
- "shape": [1, 2, 5, 5],
- "data": [
- 94.07447814941406,
- 76.55464172363281,
- 62.71847152709961,
- 83.8726577758789,
- 73.10235595703125,
- 41.52470779418945,
- 39.3339729309082,
- 86.59486389160156,
- 23.09039306640625,
- 53.650146484375,
- 0.00902052316814661,
- 42.78899383544922,
- 81.03960418701172,
- 33.48585510253906,
- 33.67196273803711,
- 0.42822372913360596,
- 80.07991790771484,
- 5.929991722106934,
- 48.89164733886719,
- 15.282920837402344,
- 13.335721969604492,
- 39.06557846069336,
- 97.06050109863281,
- 83.68133544921875,
- 21.79571533203125,
- 52.027313232421875,
- 6.397815227508545,
- 84.54785919189453,
- 18.622516632080078,
- 34.10626220703125,
- 73.96932220458984,
- 36.1437873840332,
- 60.73781967163086,
- 55.09187316894531,
- 63.8924446105957,
- 59.36124038696289,
- 50.91202926635742,
- 50.339813232421875,
- 59.31963348388672,
- 70.78031921386719,
- 35.56179428100586,
- 82.53382873535156,
- 7.572360038757324,
- 61.90089416503906,
- 14.084012985229492,
- 90.86540985107422,
- 39.56248474121094,
- 67.77167510986328,
- 69.69512176513672,
- 89.54518127441406
- ],
- "type": "float32"
- }
- },
- "options": {
- "layout": "nchw"
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 1, 1],
- "data": [
- 289.01953125,
- 292.6146545410156
- ],
- "type": "float32"
- }
- },
- {
- "name": "l2Pool2d float32 4D tensor options.layout=nhwc",
- "inputs": {
- "input": {
- "shape": [1, 5, 5, 2],
- "data": [
- 94.07447814941406,
- 52.027313232421875,
- 76.55464172363281,
- 6.397815227508545,
- 62.71847152709961,
- 84.54785919189453,
- 83.8726577758789,
- 18.622516632080078,
- 73.10235595703125,
- 34.10626220703125,
- 41.52470779418945,
- 73.96932220458984,
- 39.3339729309082,
- 36.1437873840332,
- 86.59486389160156,
- 60.73781967163086,
- 23.09039306640625,
- 55.09187316894531,
- 53.650146484375,
- 63.8924446105957,
- 0.00902052316814661,
- 59.36124038696289,
- 42.78899383544922,
- 50.91202926635742,
- 81.03960418701172,
- 50.339813232421875,
- 33.48585510253906,
- 59.31963348388672,
- 33.67196273803711,
- 70.78031921386719,
- 0.42822372913360596,
- 35.56179428100586,
- 80.07991790771484,
- 82.53382873535156,
- 5.929991722106934,
- 7.572360038757324,
- 48.89164733886719,
- 61.90089416503906,
- 15.282920837402344,
- 14.084012985229492,
- 13.335721969604492,
- 90.86540985107422,
- 39.06557846069336,
- 39.56248474121094,
- 97.06050109863281,
- 67.77167510986328,
- 83.68133544921875,
- 69.69512176513672,
- 21.79571533203125,
- 89.54518127441406
- ],
- "type": "float32"
- }
- },
- "options": {
- "layout": "nhwc"
- },
- "expected": {
- "name": "output",
- "shape": [1, 1, 1, 2],
- "data": [
- 289.01953125,
- 292.6146545410156
- ],
- "type": "float32"
- }
- },
- {
- "name": "l2Pool2d float32 4D tensor options.roundingType=floor",
- "inputs": {
- "input": {
- "shape": [1, 2, 5, 5],
- "data": [
- 94.07447814941406,
- 76.55464172363281,
- 62.71847152709961,
- 83.8726577758789,
- 73.10235595703125,
- 41.52470779418945,
- 39.3339729309082,
- 86.59486389160156,
- 23.09039306640625,
- 53.650146484375,
- 0.00902052316814661,
- 42.78899383544922,
- 81.03960418701172,
- 33.48585510253906,
- 33.67196273803711,
- 0.42822372913360596,
- 80.07991790771484,
- 5.929991722106934,
- 48.89164733886719,
- 15.282920837402344,
- 13.335721969604492,
- 39.06557846069336,
- 97.06050109863281,
- 83.68133544921875,
- 21.79571533203125,
- 52.027313232421875,
- 6.397815227508545,
- 84.54785919189453,
- 18.622516632080078,
- 34.10626220703125,
- 73.96932220458984,
- 36.1437873840332,
- 60.73781967163086,
- 55.09187316894531,
- 63.8924446105957,
- 59.36124038696289,
- 50.91202926635742,
- 50.339813232421875,
- 59.31963348388672,
- 70.78031921386719,
- 35.56179428100586,
- 82.53382873535156,
- 7.572360038757324,
- 61.90089416503906,
- 14.084012985229492,
- 90.86540985107422,
- 39.56248474121094,
- 67.77167510986328,
- 69.69512176513672,
- 89.54518127441406
- ],
- "type": "float32"
- }
- },
- "options": {
- "windowDimensions": [3, 3],
- "padding": [1, 0, 0, 1],
- "strides": [2, 2],
- "roundingType": "floor"
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 2, 2],
- "data": [
- 171.5061492919922,
- 164.9919891357422,
- 160.0518341064453,
- 149.63897705078125,
- 142.6990966796875,
- 139.51637268066406,
- 165.07762145996094,
- 161.11062622070312
- ],
- "type": "float32"
- }
- },
- {
- "name": "l2Pool2d float32 4D tensor options.roundingType=ceil",
- "inputs": {
- "input": {
- "shape": [1, 2, 5, 5],
- "data": [
- 94.07447814941406,
- 76.55464172363281,
- 62.71847152709961,
- 83.8726577758789,
- 73.10235595703125,
- 41.52470779418945,
- 39.3339729309082,
- 86.59486389160156,
- 23.09039306640625,
- 53.650146484375,
- 0.00902052316814661,
- 42.78899383544922,
- 81.03960418701172,
- 33.48585510253906,
- 33.67196273803711,
- 0.42822372913360596,
- 80.07991790771484,
- 5.929991722106934,
- 48.89164733886719,
- 15.282920837402344,
- 13.335721969604492,
- 39.06557846069336,
- 97.06050109863281,
- 83.68133544921875,
- 21.79571533203125,
- 52.027313232421875,
- 6.397815227508545,
- 84.54785919189453,
- 18.622516632080078,
- 34.10626220703125,
- 73.96932220458984,
- 36.1437873840332,
- 60.73781967163086,
- 55.09187316894531,
- 63.8924446105957,
- 59.36124038696289,
- 50.91202926635742,
- 50.339813232421875,
- 59.31963348388672,
- 70.78031921386719,
- 35.56179428100586,
- 82.53382873535156,
- 7.572360038757324,
- 61.90089416503906,
- 14.084012985229492,
- 90.86540985107422,
- 39.56248474121094,
- 67.77167510986328,
- 69.69512176513672,
- 89.54518127441406
- ],
- "type": "float32"
- }
- },
- "options": {
- "windowDimensions": [3, 3],
- "padding": [1, 0, 0, 1],
- "strides": [2, 2],
- "roundingType": "ceil"
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 3, 3],
- "data": [
- 171.5061492919922,
- 164.9919891357422,
- 8222.29296875,
- 160.0518341064453,
- 149.63897705078125,
- 65.15908813476562,
- 132.56260681152344,
- 139.84808349609375,
- 708.620849609375,
- 142.6990966796875,
- 139.51637268066406,
- 5245.4814453125,
- 165.07762145996094,
- 161.11062622070312,
- 96.38701629638672,
- 150.1616668701172,
- 146.8201904296875,
- 8216.69921875
- ],
- "type": "float32"
- }
- },
- {
- "name": "l2Pool2d float32 4D tensor options.outputSizes ignores options.roundingType=floor",
- "inputs": {
- "input": {
- "shape": [1, 2, 5, 5],
- "data": [
- 94.07447814941406,
- 76.55464172363281,
- 62.71847152709961,
- 83.8726577758789,
- 73.10235595703125,
- 41.52470779418945,
- 39.3339729309082,
- 86.59486389160156,
- 23.09039306640625,
- 53.650146484375,
- 0.00902052316814661,
- 42.78899383544922,
- 81.03960418701172,
- 33.48585510253906,
- 33.67196273803711,
- 0.42822372913360596,
- 80.07991790771484,
- 5.929991722106934,
- 48.89164733886719,
- 15.282920837402344,
- 13.335721969604492,
- 39.06557846069336,
- 97.06050109863281,
- 83.68133544921875,
- 21.79571533203125,
- 52.027313232421875,
- 6.397815227508545,
- 84.54785919189453,
- 18.622516632080078,
- 34.10626220703125,
- 73.96932220458984,
- 36.1437873840332,
- 60.73781967163086,
- 55.09187316894531,
- 63.8924446105957,
- 59.36124038696289,
- 50.91202926635742,
- 50.339813232421875,
- 59.31963348388672,
- 70.78031921386719,
- 35.56179428100586,
- 82.53382873535156,
- 7.572360038757324,
- 61.90089416503906,
- 14.084012985229492,
- 90.86540985107422,
- 39.56248474121094,
- 67.77167510986328,
- 69.69512176513672,
- 89.54518127441406
- ],
- "type": "float32"
- }
- },
- "options": {
- "windowDimensions": [3, 3],
- "padding": [1, 0, 0, 1],
- "strides": [2, 2],
- "roundingType": "floor",
- "outputSizes": [3, 3]
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 3, 3],
- "data": [
- 171.5061492919922,
- 164.9919891357422,
- 8222.29296875,
- 160.0518341064453,
- 149.63897705078125,
- 65.15908813476562,
- 132.56260681152344,
- 139.84808349609375,
- 708.620849609375,
- 142.6990966796875,
- 139.51637268066406,
- 5245.4814453125,
- 165.07762145996094,
- 161.11062622070312,
- 96.38701629638672,
- 150.1616668701172,
- 146.8201904296875,
- 8216.69921875
- ],
- "type": "float32"
- }
- },
- {
- "name": "l2Pool2d float32 4D tensor options.outputSizes ignores options.roundingType=ceil",
- "inputs": {
- "input": {
- "shape": [1, 2, 5, 5],
- "data": [
- 94.07447814941406,
- 76.55464172363281,
- 62.71847152709961,
- 83.8726577758789,
- 73.10235595703125,
- 41.52470779418945,
- 39.3339729309082,
- 86.59486389160156,
- 23.09039306640625,
- 53.650146484375,
- 0.00902052316814661,
- 42.78899383544922,
- 81.03960418701172,
- 33.48585510253906,
- 33.67196273803711,
- 0.42822372913360596,
- 80.07991790771484,
- 5.929991722106934,
- 48.89164733886719,
- 15.282920837402344,
- 13.335721969604492,
- 39.06557846069336,
- 97.06050109863281,
- 83.68133544921875,
- 21.79571533203125,
- 52.027313232421875,
- 6.397815227508545,
- 84.54785919189453,
- 18.622516632080078,
- 34.10626220703125,
- 73.96932220458984,
- 36.1437873840332,
- 60.73781967163086,
- 55.09187316894531,
- 63.8924446105957,
- 59.36124038696289,
- 50.91202926635742,
- 50.339813232421875,
- 59.31963348388672,
- 70.78031921386719,
- 35.56179428100586,
- 82.53382873535156,
- 7.572360038757324,
- 61.90089416503906,
- 14.084012985229492,
- 90.86540985107422,
- 39.56248474121094,
- 67.77167510986328,
- 69.69512176513672,
- 89.54518127441406
- ],
- "type": "float32"
- }
- },
- "options": {
- "windowDimensions": [3, 3],
- "padding": [1, 0, 0, 1],
- "strides": [2, 2],
- "roundingType": "ceil",
- "outputSizes": [2, 2]
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 2, 2],
- "data": [
- 171.5061492919922,
- 164.9919891357422,
- 160.0518341064453,
- 149.63897705078125,
- 142.6990966796875,
- 139.51637268066406,
- 165.07762145996094,
- 161.11062622070312
- ],
- "type": "float32"
- }
- },
- {
- "name": "l2Pool2d float32 4D tensor options.dilations with options.strides",
- "inputs": {
- "input": {
- "shape": [1, 7, 7, 2],
- "data": [
- 6.5550384521484375,
- 26.254413604736328,
- 28.47271156311035,
- 64.81202697753906,
- 39.65838623046875,
- 10.465584754943848,
- 47.94060134887695,
- 42.208946228027344,
- 36.834041595458984,
- 68.50249481201172,
- 2.0496721267700195,
- 49.73927688598633,
- 59.97947311401367,
- 71.08380889892578,
- 0.20033331215381622,
- 19.39293670654297,
- 70.1269302368164,
- 86.8837661743164,
- 84.28858184814453,
- 9.695697784423828,
- 62.69126510620117,
- 51.924110412597656,
- 5.412675857543945,
- 70.82118225097656,
- 81.61302947998047,
- 29.148712158203125,
- 85.83409881591797,
- 71.36548614501953,
- 44.09445571899414,
- 58.343570709228516,
- 43.37118148803711,
- 54.025882720947266,
- 85.50556945800781,
- 93.19215393066406,
- 10.992993354797363,
- 34.864158630371094,
- 96.2605209350586,
- 44.29584503173828,
- 61.12482833862305,
- 79.62699127197266,
- 4.066447734832764,
- 64.89644622802734,
- 97.5897445678711,
- 11.257055282592773,
- 61.151283264160156,
- 20.312341690063477,
- 39.862640380859375,
- 68.747314453125,
- 89.61034393310547,
- 22.28224754333496,
- 41.36311721801758,
- 62.9378662109375,
- 79.54936218261719,
- 55.64254379272461,
- 54.47548294067383,
- 77.04864501953125,
- 56.83576965332031,
- 80.57747650146484,
- 70.43293762207031,
- 85.67094421386719,
- 19.527807235717773,
- 33.87490463256836,
- 14.498117446899414,
- 92.85955810546875,
- 96.8167724609375,
- 28.399721145629883,
- 99.917236328125,
- 48.76692199707031,
- 86.08634948730469,
- 47.32324981689453,
- 7.223662376403809,
- 82.97200775146484,
- 38.374778747558594,
- 22.10988426208496,
- 14.797550201416016,
- 2.3872148990631104,
- 83.26342010498047,
- 46.41500473022461,
- 28.659175872802734,
- 13.919462203979492,
- 55.413089752197266,
- 62.68498992919922,
- 78.54127502441406,
- 31.142845153808594,
- 4.806727886199951,
- 33.233642578125,
- 24.749773025512695,
- 1.529007077217102,
- 42.976322174072266,
- 93.08572387695312,
- 77.908935546875,
- 45.74395751953125,
- 62.868892669677734,
- 60.689762115478516,
- 20.046878814697266,
- 13.203198432922363,
- 33.33952713012695,
- 0.5279953479766846
- ],
- "type": "float32"
- }
- },
- "options": {
- "windowDimensions": [3, 3],
- "padding": [1, 0, 0, 1],
- "strides": [2, 2],
- "dilations": [1, 1],
- "layout": "nhwc"
- },
- "expected": {
- "name": "output",
- "shape": [1, 3, 3, 2],
- "data": [
- 120.20333862304688,
- 114.0977783203125,
- 127.63969421386719,
- 119.95613861083984,
- 137.89837646484375,
- 152.24261474609375,
- 194.9647216796875,
- 168.20205688476562,
- 197.7173309326172,
- 169.85887145996094,
- 195.1484832763672,
- 190.96127319335938,
- 158.64576721191406,
- 166.2051544189453,
- 171.07916259765625,
- 148.70985412597656,
- 218.7123260498047,
- 153.33311462402344
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/layer_normalization.json b/tests/wpt/tests/webnn/resources/test_data/layer_normalization.json
deleted file mode 100644
index 6005776de5e..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/layer_normalization.json
+++ /dev/null
@@ -1,842 +0,0 @@
-{
- "tests": [
- {
- "name": "layerNormalization float32 2D tensor default options",
- "inputs": {
- "input": {
- "shape": [4, 6],
- "data": [
- -35.51446620394829,
- 54.735407789317094,
- 19.65901979009459,
- -15.882677905820188,
- 65.48657727565143,
- 25.818493353057278,
- 97.5530279802174,
- -8.057161374785466,
- 62.941297318740425,
- -48.91555566709158,
- 91.90643767958213,
- 46.67098666459884,
- -74.85331462850246,
- 30.12636276060539,
- 26.130894553011203,
- 59.302706651602165,
- -60.36199702412532,
- 18.556152152037427,
- -88.0373081005649,
- -26.566773146168643,
- 70.81292942844541,
- 9.1056120562301,
- 56.66746139054709,
- 21.78444497295007
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- -1.5257738828659058,
- 0.997844934463501,
- 0.017018765211105347,
- -0.9768186211585999,
- 1.2984753847122192,
- 0.18925349414348602,
- 1.0812907218933105,
- -0.915019690990448,
- 0.4270379841327667,
- -1.6873507499694824,
- 0.9745554327964783,
- 0.11948632448911667,
- -1.5086692571640015,
- 0.6123882532119751,
- 0.5316619873046875,
- 1.2018805742263794,
- -1.215880036354065,
- 0.378618448972702,
- -1.795186161994934,
- -0.6376377940177917,
- 1.1961140632629395,
- 0.034106940031051636,
- 0.9297415614128113,
- 0.2728613615036011
- ],
- "type": "float32"
- }
- },
- {
- "name": "layerNormalization float32 3D tensor default options",
- "inputs": {
- "input": {
- "shape": [2, 3, 4],
- "data": [
- -35.51446620394829,
- 54.735407789317094,
- 19.65901979009459,
- -15.882677905820188,
- 65.48657727565143,
- 25.818493353057278,
- 97.5530279802174,
- -8.057161374785466,
- 62.941297318740425,
- -48.91555566709158,
- 91.90643767958213,
- 46.67098666459884,
- -74.85331462850246,
- 30.12636276060539,
- 26.130894553011203,
- 59.302706651602165,
- -60.36199702412532,
- 18.556152152037427,
- -88.0373081005649,
- -26.566773146168643,
- 70.81292942844541,
- 9.1056120562301,
- 56.66746139054709,
- 21.78444497295007
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 3, 4],
- "data": [
- -1.4057259559631348,
- 0.5396455526351929,
- -0.21643976867198944,
- -0.9825550317764282,
- 0.7713912725448608,
- -0.08366990834474564,
- 1.46259605884552,
- -0.8138729333877563,
- 0.7165266871452332,
- -1.6945916414260864,
- 1.3408818244934082,
- 0.3658137917518616,
- -1.5234858989715576,
- 0.5162702202796936,
- 0.43863821029663086,
- 1.0831668376922607,
- -1.2419193983078003,
- 0.29146093130111694,
- -1.7796510457992554,
- -0.5852779150009155,
- 1.3068104982376099,
- 0.10783683508634567,
- 1.0319640636444092,
- 0.35418668389320374
- ],
- "type": "float32"
- }
- },
- {
- "name": "layerNormalization float32 4D tensor default options",
- "inputs": {
- "input": {
- "shape": [2, 1, 4, 3],
- "data": [
- -35.51446620394829,
- 54.735407789317094,
- 19.65901979009459,
- -15.882677905820188,
- 65.48657727565143,
- 25.818493353057278,
- 97.5530279802174,
- -8.057161374785466,
- 62.941297318740425,
- -48.91555566709158,
- 91.90643767958213,
- 46.67098666459884,
- -74.85331462850246,
- 30.12636276060539,
- 26.130894553011203,
- 59.302706651602165,
- -60.36199702412532,
- 18.556152152037427,
- -88.0373081005649,
- -26.566773146168643,
- 70.81292942844541,
- 9.1056120562301,
- 56.66746139054709,
- 21.78444497295007
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 1, 4, 3],
- "data": [
- -1.4057259559631348,
- 0.5396455526351929,
- -0.21643976867198944,
- -0.9825550317764282,
- 0.7713912725448608,
- -0.08366990834474564,
- 1.46259605884552,
- -0.8138729333877563,
- 0.7165266871452332,
- -1.6945916414260864,
- 1.3408818244934082,
- 0.3658137917518616,
- -1.5234858989715576,
- 0.5162702202796936,
- 0.43863821029663086,
- 1.0831668376922607,
- -1.2419193983078003,
- 0.29146093130111694,
- -1.7796510457992554,
- -0.5852779150009155,
- 1.3068104982376099,
- 0.10783683508634567,
- 1.0319640636444092,
- 0.35418668389320374
- ],
- "type": "float32"
- }
- },
- {
- "name": "layerNormalization float32 5D tensor default options",
- "inputs": {
- "input": {
- "shape": [2, 1, 2, 2, 3],
- "data": [
- -35.51446620394829,
- 54.735407789317094,
- 19.65901979009459,
- -15.882677905820188,
- 65.48657727565143,
- 25.818493353057278,
- 97.5530279802174,
- -8.057161374785466,
- 62.941297318740425,
- -48.91555566709158,
- 91.90643767958213,
- 46.67098666459884,
- -74.85331462850246,
- 30.12636276060539,
- 26.130894553011203,
- 59.302706651602165,
- -60.36199702412532,
- 18.556152152037427,
- -88.0373081005649,
- -26.566773146168643,
- 70.81292942844541,
- 9.1056120562301,
- 56.66746139054709,
- 21.78444497295007
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 1, 2, 2, 3],
- "data": [
- -1.4057259559631348,
- 0.5396455526351929,
- -0.21643976867198944,
- -0.9825550317764282,
- 0.7713912725448608,
- -0.08366990834474564,
- 1.46259605884552,
- -0.8138729333877563,
- 0.7165266871452332,
- -1.6945916414260864,
- 1.3408818244934082,
- 0.3658137917518616,
- -1.5234858989715576,
- 0.5162702202796936,
- 0.43863821029663086,
- 1.0831668376922607,
- -1.2419193983078003,
- 0.29146093130111694,
- -1.7796510457992554,
- -0.5852779150009155,
- 1.3068104982376099,
- 0.10783683508634567,
- 1.0319640636444092,
- 0.35418668389320374
- ],
- "type": "float32"
- }
- },
- {
- "name": "layerNormalization float32 4D tensor options.scale",
- "inputs": {
- "input": {
- "shape": [2, 1, 4, 3],
- "data": [
- -35.51446620394829,
- 54.735407789317094,
- 19.65901979009459,
- -15.882677905820188,
- 65.48657727565143,
- 25.818493353057278,
- 97.5530279802174,
- -8.057161374785466,
- 62.941297318740425,
- -48.91555566709158,
- 91.90643767958213,
- 46.67098666459884,
- -74.85331462850246,
- 30.12636276060539,
- 26.130894553011203,
- 59.302706651602165,
- -60.36199702412532,
- 18.556152152037427,
- -88.0373081005649,
- -26.566773146168643,
- 70.81292942844541,
- 9.1056120562301,
- 56.66746139054709,
- 21.78444497295007
- ],
- "type": "float32"
- }
- },
- "options": {
- "scale": {
- "shape": [1, 4, 3],
- "data": [
- -3.822842326186211,
- -5.4524582226774365,
- 0.6776165732478745,
- -4.027037630534966,
- -3.7771617295664717,
- -9.327335252346955,
- 7.181691199879712,
- 1.5054303426700422,
- 3.1208942770408132,
- 0.5214731591212676,
- 2.6719749293214345,
- -3.5713709254192016
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 1, 4, 3],
- "data": [
- 5.373868465423584,
- -2.942394971847534,
- -0.14666318893432617,
- 3.9567861557006836,
- -2.9136698246002197,
- 0.780417263507843,
- 10.503913879394531,
- -1.225229024887085,
- 2.236203908920288,
- -0.8836840987205505,
- 3.5828025341033936,
- -1.3064566850662231,
- 5.824046611785889,
- -2.814941883087158,
- 0.29722854495048523,
- -4.3619537353515625,
- 4.6909308433532715,
- -2.7185537815093994,
- -12.780903816223145,
- -0.8810951709747314,
- 4.0784173011779785,
- 0.05623401328921318,
- 2.7573819160461426,
- -1.2649319171905518
- ],
- "type": "float32"
- }
- },
- {
- "name": "layerNormalization float32 4D tensor options.bias",
- "inputs": {
- "input": {
- "shape": [2, 1, 4, 3],
- "data": [
- -35.51446620394829,
- 54.735407789317094,
- 19.65901979009459,
- -15.882677905820188,
- 65.48657727565143,
- 25.818493353057278,
- 97.5530279802174,
- -8.057161374785466,
- 62.941297318740425,
- -48.91555566709158,
- 91.90643767958213,
- 46.67098666459884,
- -74.85331462850246,
- 30.12636276060539,
- 26.130894553011203,
- 59.302706651602165,
- -60.36199702412532,
- 18.556152152037427,
- -88.0373081005649,
- -26.566773146168643,
- 70.81292942844541,
- 9.1056120562301,
- 56.66746139054709,
- 21.78444497295007
- ],
- "type": "float32"
- }
- },
- "options": {
- "bias": {
- "shape": [1, 4, 3],
- "data": [
- 7.86298294434458,
- -3.660304771854861,
- -6.955524501645973,
- -6.397322772511171,
- 3.2689586393414984,
- -2.7498081789293094,
- -4.080942283863029,
- -7.137991900788561,
- 8.465653688103547,
- 2.762545157541174,
- 0.8230442324150911,
- -3.8275613744392922
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 1, 4, 3],
- "data": [
- 6.45725679397583,
- -3.120659112930298,
- -7.171964168548584,
- -7.37987756729126,
- 4.040349960327148,
- -2.8334779739379883,
- -2.6183459758758545,
- -7.951864719390869,
- 9.182180404663086,
- 1.0679534673690796,
- 2.163926124572754,
- -3.461747646331787,
- 6.339496612548828,
- -3.1440346240997314,
- -6.516886234283447,
- -5.314155578613281,
- 2.027039051055908,
- -2.4583470821380615,
- -5.860593318939209,
- -7.723269939422607,
- 9.77246379852295,
- 2.8703818321228027,
- 1.8550082445144653,
- -3.473374605178833
- ],
- "type": "float32"
- }
- },
- {
- "name": "layerNormalization float32 4D tensor options.axes=[2]",
- "inputs": {
- "input": {
- "shape": [2, 1, 4, 3],
- "data": [
- -35.51446620394829,
- 54.735407789317094,
- 19.65901979009459,
- -15.882677905820188,
- 65.48657727565143,
- 25.818493353057278,
- 97.5530279802174,
- -8.057161374785466,
- 62.941297318740425,
- -48.91555566709158,
- 91.90643767958213,
- 46.67098666459884,
- -74.85331462850246,
- 30.12636276060539,
- 26.130894553011203,
- 59.302706651602165,
- -60.36199702412532,
- 18.556152152037427,
- -88.0373081005649,
- -26.566773146168643,
- 70.81292942844541,
- 9.1056120562301,
- 56.66746139054709,
- 21.78444497295007
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": [2]
- },
- "expected": {
- "name": "output",
- "shape": [2, 1, 4, 3],
- "data": [
- -0.6012066006660461,
- 0.10132180899381638,
- -1.112992763519287,
- -0.26228588819503784,
- 0.3943416476249695,
- -0.7543209195137024,
- 1.6960537433624268,
- -1.6100702285766602,
- 1.4073745012283325,
- -0.8325613141059875,
- 1.114406704902649,
- 0.45993921160697937,
- -0.8445013165473938,
- 0.6554933190345764,
- -0.3856155574321747,
- 1.3668763637542725,
- -1.3111618757247925,
- -0.7422532439231873,
- -1.0618212223052979,
- -0.5766634941101074,
- 1.7181260585784912,
- 0.539446234703064,
- 1.2323321104049683,
- -0.5902572274208069
- ],
- "type": "float32"
- }
- },
- {
- "name": "layerNormalization float32 4D tensor options.epsilon",
- "inputs": {
- "input": {
- "shape": [2, 1, 4, 3],
- "data": [
- -35.51446620394829,
- 54.735407789317094,
- 19.65901979009459,
- -15.882677905820188,
- 65.48657727565143,
- 25.818493353057278,
- 97.5530279802174,
- -8.057161374785466,
- 62.941297318740425,
- -48.91555566709158,
- 91.90643767958213,
- 46.67098666459884,
- -74.85331462850246,
- 30.12636276060539,
- 26.130894553011203,
- 59.302706651602165,
- -60.36199702412532,
- 18.556152152037427,
- -88.0373081005649,
- -26.566773146168643,
- 70.81292942844541,
- 9.1056120562301,
- 56.66746139054709,
- 21.78444497295007
- ],
- "type": "float32"
- }
- },
- "options": {
- "epsilon": 1e-4
- },
- "expected": {
- "name": "output",
- "shape": [2, 1, 4, 3],
- "data": [
- -1.4057258367538452,
- 0.5396455526351929,
- -0.21643976867198944,
- -0.9825550317764282,
- 0.7713912725448608,
- -0.08366990089416504,
- 1.46259605884552,
- -0.8138729333877563,
- 0.7165266871452332,
- -1.6945916414260864,
- 1.3408817052841187,
- 0.3658137619495392,
- -1.5234858989715576,
- 0.5162702202796936,
- 0.43863821029663086,
- 1.0831668376922607,
- -1.2419193983078003,
- 0.29146093130111694,
- -1.7796509265899658,
- -0.5852779150009155,
- 1.3068104982376099,
- 0.10783682763576508,
- 1.0319639444351196,
- 0.35418668389320374
- ],
- "type": "float32"
- }
- },
- {
- "name": "layerNormalization float32 4D tensor options.scale and options.axes=[0, 2]",
- "inputs": {
- "input": {
- "shape": [2, 1, 4, 3],
- "data": [
- -35.51446620394829,
- 54.735407789317094,
- 19.65901979009459,
- -15.882677905820188,
- 65.48657727565143,
- 25.818493353057278,
- 97.5530279802174,
- -8.057161374785466,
- 62.941297318740425,
- -48.91555566709158,
- 91.90643767958213,
- 46.67098666459884,
- -74.85331462850246,
- 30.12636276060539,
- 26.130894553011203,
- 59.302706651602165,
- -60.36199702412532,
- 18.556152152037427,
- -88.0373081005649,
- -26.566773146168643,
- 70.81292942844541,
- 9.1056120562301,
- 56.66746139054709,
- 21.78444497295007
- ],
- "type": "float32"
- }
- },
- "options": {
- "scale": {
- "shape": [2, 4],
- "data": [
- 8.726573383699723,
- -5.388210753831433,
- -6.811323199504957,
- 4.707905497256553,
- -4.705779931167426,
- -5.143046959493542,
- -1.1115549861715444,
- 5.250569701742819
- ],
- "type": "float32"
- },
- "axes": [0, 2]
- },
- "expected": {
- "name": "output",
- "shape": [2, 1, 4, 3],
- "data": [
- -3.3744184970855713,
- 5.22746467590332,
- -7.580371856689453,
- 0.3324689269065857,
- -4.414334774017334,
- 2.973374605178833,
- -12.369945526123047,
- 4.680946350097656,
- -9.247408866882324,
- -2.8648624420166016,
- 6.40486478805542,
- 2.4516794681549072,
- 4.884079456329346,
- -0.44672244787216187,
- 2.521172285079956,
- -6.083702564239502,
- 9.044846534729004,
- 4.759283065795898,
- 1.3962621688842773,
- 1.185346245765686,
- -1.959165334701538,
- 1.8479242324829102,
- 3.3530402183532715,
- -3.986907958984375
- ],
- "type": "float32"
- }
- },
- {
- "name": "layerNormalization float32 4D tensor options.bias and options.axes=[3, 1, 2]",
- "inputs": {
- "input": {
- "shape": [2, 1, 4, 3],
- "data": [
- -35.51446620394829,
- 54.735407789317094,
- 19.65901979009459,
- -15.882677905820188,
- 65.48657727565143,
- 25.818493353057278,
- 97.5530279802174,
- -8.057161374785466,
- 62.941297318740425,
- -48.91555566709158,
- 91.90643767958213,
- 46.67098666459884,
- -74.85331462850246,
- 30.12636276060539,
- 26.130894553011203,
- 59.302706651602165,
- -60.36199702412532,
- 18.556152152037427,
- -88.0373081005649,
- -26.566773146168643,
- 70.81292942844541,
- 9.1056120562301,
- 56.66746139054709,
- 21.78444497295007
- ],
- "type": "float32"
- }
- },
- "options": {
- "bias": {
- "shape": [3, 1, 4],
- "data": [
- -0.1396923067429423,
- -6.156772261512771,
- 4.3632959655495505,
- 8.859804790093527,
- 9.772650559072677,
- -3.4626546514711087,
- 9.74495010474131,
- -0.39589682596727016,
- -8.497353592778571,
- 6.1725369732984525,
- -2.893046077750334,
- 1.7220044503066347
- ],
- "type": "float32"
- },
- "axes": [3, 1, 2]
- },
- "expected": {
- "name": "output",
- "shape": [2, 1, 4, 3],
- "data": [
- -1.5454182624816895,
- 10.312295913696289,
- -8.713793754577637,
- -7.139327049255371,
- -2.691263198852539,
- 6.088866710662842,
- 5.825891971588135,
- 8.931077003479004,
- -2.1765193939208984,
- 7.165213584899902,
- 0.9449849724769592,
- 2.087818145751953,
- -1.6631782054901123,
- 10.288921356201172,
- -8.058714866638184,
- -5.073605060577393,
- -4.704574108123779,
- 6.463997840881348,
- 2.5836451053619385,
- 9.159672737121582,
- -1.5862356424331665,
- 8.967641830444336,
- 0.6360672116279602,
- 2.0761911869049072
- ],
- "type": "float32"
- }
- },
- {
- "name": "layerNormalization float32 4D tensor all options",
- "inputs": {
- "input": {
- "shape": [2, 1, 4, 3],
- "data": [
- -35.51446620394829,
- 54.735407789317094,
- 19.65901979009459,
- -15.882677905820188,
- 65.48657727565143,
- 25.818493353057278,
- 97.5530279802174,
- -8.057161374785466,
- 62.941297318740425,
- -48.91555566709158,
- 91.90643767958213,
- 46.67098666459884,
- -74.85331462850246,
- 30.12636276060539,
- 26.130894553011203,
- 59.302706651602165,
- -60.36199702412532,
- 18.556152152037427,
- -88.0373081005649,
- -26.566773146168643,
- 70.81292942844541,
- 9.1056120562301,
- 56.66746139054709,
- 21.78444497295007
- ],
- "type": "float32"
- }
- },
- "options": {
- "scale": {
- "shape": [2, 3, 1],
- "data": [
- 7.715926600551629,
- 1.737107960115587,
- 9.139651060226974,
- 5.7588235611312335,
- -2.8198351834129154,
- -0.6866958235000595
- ],
- "type": "float32"
- },
- "bias": {
- "shape": [2, 3, 1],
- "data": [
- -8.71067229356711,
- -7.642980873415213,
- 4.937538370466076,
- -2.1876746145760695,
- -4.0676126709354765,
- -6.83625459268332
- ],
- "type": "float32"
- },
- "axes": [0, 3, 1],
- "epsilon": 1e-4
- },
- "expected": {
- "name": "output",
- "shape": [2, 1, 4, 3],
- "data": [
- -15.487034797668457,
- -5.628695964813232,
- 8.29687786102295,
- -14.294686317443848,
- -5.639192581176758,
- 7.11608362197876,
- 0.7769554257392883,
- -8.346451759338379,
- 11.279659271240234,
- -22.506288528442383,
- -5.173816204071045,
- 8.506545066833496,
- -12.360523223876953,
- -5.77052116394043,
- -7.18900203704834,
- 3.6336634159088135,
- 0.8666883707046509,
- -6.884884357452393,
- -11.648612976074219,
- -2.117840528488159,
- -7.396423816680908,
- -4.869131088256836,
- -5.8111701011657715,
- -6.714934349060059
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/leaky_relu.json b/tests/wpt/tests/webnn/resources/test_data/leaky_relu.json
deleted file mode 100644
index be810a90cea..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/leaky_relu.json
+++ /dev/null
@@ -1,609 +0,0 @@
-{
- "tests": [
- {
- "name": "leakyRelu float32 1D constant tensor default options", // default options.alpha=0.01
- "inputs": {
- "x": {
- "shape": [24],
- "data": [
- -19.053641157857015,
- 50.77590443347373,
- -69.54966768567536,
- -80.57432185346957,
- -90.40109641580112,
- 76.02884674163622,
- 66.33873525494391,
- -84.10186452043264,
- -17.19101282693427,
- -87.47624329964907,
- -3.4164664941905585,
- -22.7723589638245,
- -2.509489125727569,
- 18.933284857582677,
- 98.61402761165104,
- 55.33923216295767,
- -33.178605382176,
- -46.03901297809681,
- -61.47925538549912,
- 64.26514742116822,
- 21.46934200700099,
- -31.51468946013378,
- -41.27694294131783,
- -65.59528852425132
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- -0.19053640961647034,
- 50.77590560913086,
- -0.695496678352356,
- -0.8057432770729065,
- -0.9040110111236572,
- 76.02884674072266,
- 66.33873748779297,
- -0.8410186767578125,
- -0.1719101369380951,
- -0.8747624158859253,
- -0.0341646634042263,
- -0.2277235984802246,
- -0.02509489096701145,
- 18.933284759521484,
- 98.61402893066406,
- 55.3392333984375,
- -0.33178603649139404,
- -0.4603901207447052,
- -0.6147925853729248,
- 64.26514434814453,
- 21.469341278076172,
- -0.31514689326286316,
- -0.4127694368362427,
- -0.6559529304504395
- ],
- "type": "float32"
- }
- },
- {
- "name": "leakyRelu float32 1D tensor default options", // default options.alpha=0.01
- "inputs": {
- "x": {
- "shape": [24],
- "data": [
- -19.053641157857015,
- 50.77590443347373,
- -69.54966768567536,
- -80.57432185346957,
- -90.40109641580112,
- 76.02884674163622,
- 66.33873525494391,
- -84.10186452043264,
- -17.19101282693427,
- -87.47624329964907,
- -3.4164664941905585,
- -22.7723589638245,
- -2.509489125727569,
- 18.933284857582677,
- 98.61402761165104,
- 55.33923216295767,
- -33.178605382176,
- -46.03901297809681,
- -61.47925538549912,
- 64.26514742116822,
- 21.46934200700099,
- -31.51468946013378,
- -41.27694294131783,
- -65.59528852425132
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- -0.19053640961647034,
- 50.77590560913086,
- -0.695496678352356,
- -0.8057432770729065,
- -0.9040110111236572,
- 76.02884674072266,
- 66.33873748779297,
- -0.8410186767578125,
- -0.1719101369380951,
- -0.8747624158859253,
- -0.0341646634042263,
- -0.2277235984802246,
- -0.02509489096701145,
- 18.933284759521484,
- 98.61402893066406,
- 55.3392333984375,
- -0.33178603649139404,
- -0.4603901207447052,
- -0.6147925853729248,
- 64.26514434814453,
- 21.469341278076172,
- -0.31514689326286316,
- -0.4127694368362427,
- -0.6559529304504395
- ],
- "type": "float32"
- }
- },
- {
- "name": "leakyRelu float32 2D tensor default options",
- "inputs": {
- "x": {
- "shape": [4, 6],
- "data": [
- -19.053641157857015,
- 50.77590443347373,
- -69.54966768567536,
- -80.57432185346957,
- -90.40109641580112,
- 76.02884674163622,
- 66.33873525494391,
- -84.10186452043264,
- -17.19101282693427,
- -87.47624329964907,
- -3.4164664941905585,
- -22.7723589638245,
- -2.509489125727569,
- 18.933284857582677,
- 98.61402761165104,
- 55.33923216295767,
- -33.178605382176,
- -46.03901297809681,
- -61.47925538549912,
- 64.26514742116822,
- 21.46934200700099,
- -31.51468946013378,
- -41.27694294131783,
- -65.59528852425132
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- -0.19053640961647034,
- 50.77590560913086,
- -0.695496678352356,
- -0.8057432770729065,
- -0.9040110111236572,
- 76.02884674072266,
- 66.33873748779297,
- -0.8410186767578125,
- -0.1719101369380951,
- -0.8747624158859253,
- -0.0341646634042263,
- -0.2277235984802246,
- -0.02509489096701145,
- 18.933284759521484,
- 98.61402893066406,
- 55.3392333984375,
- -0.33178603649139404,
- -0.4603901207447052,
- -0.6147925853729248,
- 64.26514434814453,
- 21.469341278076172,
- -0.31514689326286316,
- -0.4127694368362427,
- -0.6559529304504395
- ],
- "type": "float32"
- }
- },
- {
- "name": "leakyRelu float32 3D tensor default options",
- "inputs": {
- "x": {
- "shape": [2, 3, 4],
- "data": [
- -19.053641157857015,
- 50.77590443347373,
- -69.54966768567536,
- -80.57432185346957,
- -90.40109641580112,
- 76.02884674163622,
- 66.33873525494391,
- -84.10186452043264,
- -17.19101282693427,
- -87.47624329964907,
- -3.4164664941905585,
- -22.7723589638245,
- -2.509489125727569,
- 18.933284857582677,
- 98.61402761165104,
- 55.33923216295767,
- -33.178605382176,
- -46.03901297809681,
- -61.47925538549912,
- 64.26514742116822,
- 21.46934200700099,
- -31.51468946013378,
- -41.27694294131783,
- -65.59528852425132
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 3, 4],
- "data": [
- -0.19053640961647034,
- 50.77590560913086,
- -0.695496678352356,
- -0.8057432770729065,
- -0.9040110111236572,
- 76.02884674072266,
- 66.33873748779297,
- -0.8410186767578125,
- -0.1719101369380951,
- -0.8747624158859253,
- -0.0341646634042263,
- -0.2277235984802246,
- -0.02509489096701145,
- 18.933284759521484,
- 98.61402893066406,
- 55.3392333984375,
- -0.33178603649139404,
- -0.4603901207447052,
- -0.6147925853729248,
- 64.26514434814453,
- 21.469341278076172,
- -0.31514689326286316,
- -0.4127694368362427,
- -0.6559529304504395
- ],
- "type": "float32"
- }
- },
- {
- "name": "leakyRelu float32 4D tensor default options",
- "inputs": {
- "x": {
- "shape": [1, 2, 3, 4],
- "data": [
- -19.053641157857015,
- 50.77590443347373,
- -69.54966768567536,
- -80.57432185346957,
- -90.40109641580112,
- 76.02884674163622,
- 66.33873525494391,
- -84.10186452043264,
- -17.19101282693427,
- -87.47624329964907,
- -3.4164664941905585,
- -22.7723589638245,
- -2.509489125727569,
- 18.933284857582677,
- 98.61402761165104,
- 55.33923216295767,
- -33.178605382176,
- -46.03901297809681,
- -61.47925538549912,
- 64.26514742116822,
- 21.46934200700099,
- -31.51468946013378,
- -41.27694294131783,
- -65.59528852425132
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 3, 4],
- "data": [
- -0.19053640961647034,
- 50.77590560913086,
- -0.695496678352356,
- -0.8057432770729065,
- -0.9040110111236572,
- 76.02884674072266,
- 66.33873748779297,
- -0.8410186767578125,
- -0.1719101369380951,
- -0.8747624158859253,
- -0.0341646634042263,
- -0.2277235984802246,
- -0.02509489096701145,
- 18.933284759521484,
- 98.61402893066406,
- 55.3392333984375,
- -0.33178603649139404,
- -0.4603901207447052,
- -0.6147925853729248,
- 64.26514434814453,
- 21.469341278076172,
- -0.31514689326286316,
- -0.4127694368362427,
- -0.6559529304504395
- ],
- "type": "float32"
- }
- },
- {
- "name": "leakyRelu float32 5D tensor default options",
- "inputs": {
- "x": {
- "shape": [1, 2, 1, 3, 4],
- "data": [
- -19.053641157857015,
- 50.77590443347373,
- -69.54966768567536,
- -80.57432185346957,
- -90.40109641580112,
- 76.02884674163622,
- 66.33873525494391,
- -84.10186452043264,
- -17.19101282693427,
- -87.47624329964907,
- -3.4164664941905585,
- -22.7723589638245,
- -2.509489125727569,
- 18.933284857582677,
- 98.61402761165104,
- 55.33923216295767,
- -33.178605382176,
- -46.03901297809681,
- -61.47925538549912,
- 64.26514742116822,
- 21.46934200700099,
- -31.51468946013378,
- -41.27694294131783,
- -65.59528852425132
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 1, 3, 4],
- "data": [
- -0.19053640961647034,
- 50.77590560913086,
- -0.695496678352356,
- -0.8057432770729065,
- -0.9040110111236572,
- 76.02884674072266,
- 66.33873748779297,
- -0.8410186767578125,
- -0.1719101369380951,
- -0.8747624158859253,
- -0.0341646634042263,
- -0.2277235984802246,
- -0.02509489096701145,
- 18.933284759521484,
- 98.61402893066406,
- 55.3392333984375,
- -0.33178603649139404,
- -0.4603901207447052,
- -0.6147925853729248,
- 64.26514434814453,
- 21.469341278076172,
- -0.31514689326286316,
- -0.4127694368362427,
- -0.6559529304504395
- ],
- "type": "float32"
- }
- },
- {
- "name": "leakyRelu float32 1D tensor negative options.alpha",
- "inputs": {
- "x": {
- "shape": [24],
- "data": [
- -19.053641157857015,
- 50.77590443347373,
- -69.54966768567536,
- -80.57432185346957,
- -90.40109641580112,
- 76.02884674163622,
- 66.33873525494391,
- -84.10186452043264,
- -17.19101282693427,
- -87.47624329964907,
- -3.4164664941905585,
- -22.7723589638245,
- -2.509489125727569,
- 18.933284857582677,
- 98.61402761165104,
- 55.33923216295767,
- -33.178605382176,
- -46.03901297809681,
- -61.47925538549912,
- 64.26514742116822,
- 21.46934200700099,
- -31.51468946013378,
- -41.27694294131783,
- -65.59528852425132
- ],
- "type": "float32"
- }
- },
- "options": {
- "alpha": -97.70109193608776
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- 1861.5615234375,
- 50.77590560913086,
- 6795.07861328125,
- 7872.19970703125,
- 8832.2861328125,
- 76.02884674072266,
- 66.33873748779297,
- 8216.8447265625,
- 1679.580810546875,
- 8546.5244140625,
- 333.7925109863281,
- 2224.884521484375,
- 245.17982482910156,
- 18.933284759521484,
- 98.61402893066406,
- 55.3392333984375,
- 3241.5859375,
- 4498.06201171875,
- 6006.5908203125,
- 64.26514434814453,
- 21.469341278076172,
- 3079.019775390625,
- 4032.802490234375,
- 6408.73193359375
- ],
- "type": "float32"
- }
- },
- {
- "name": "leakyRelu float32 2D tensor positive options.alpha",
- "inputs": {
- "x": {
- "shape": [4, 6],
- "data": [
- -19.053641157857015,
- 50.77590443347373,
- -69.54966768567536,
- -80.57432185346957,
- -90.40109641580112,
- 76.02884674163622,
- 66.33873525494391,
- -84.10186452043264,
- -17.19101282693427,
- -87.47624329964907,
- -3.4164664941905585,
- -22.7723589638245,
- -2.509489125727569,
- 18.933284857582677,
- 98.61402761165104,
- 55.33923216295767,
- -33.178605382176,
- -46.03901297809681,
- -61.47925538549912,
- 64.26514742116822,
- 21.46934200700099,
- -31.51468946013378,
- -41.27694294131783,
- -65.59528852425132
- ],
- "type": "float32"
- }
- },
- "options": {
- "alpha": 35.799162942273234
- },
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- -682.1043701171875,
- 50.77590560913086,
- -2489.81982421875,
- -2884.493408203125,
- -3236.28369140625,
- 76.02884674072266,
- 66.33873748779297,
- -3010.776611328125,
- -615.4238891601562,
- -3131.576416015625,
- -122.306640625,
- -815.2314453125,
- -89.83760833740234,
- 18.933284759521484,
- 98.61402893066406,
- 55.3392333984375,
- -1187.7662353515625,
- -1648.158203125,
- -2200.906005859375,
- 64.26514434814453,
- 21.469341278076172,
- -1128.1995849609375,
- -1477.6800537109375,
- -2348.256591796875
- ],
- "type": "float32"
- }
- },
- {
- "name": "leakyRelu float32 5D tensor options.alpha=0.0", // relu
- "inputs": {
- "x": {
- "shape": [1, 2, 1, 3, 4],
- "data": [
- -19.053641157857015,
- 50.77590443347373,
- -69.54966768567536,
- -80.57432185346957,
- -90.40109641580112,
- 76.02884674163622,
- 66.33873525494391,
- -84.10186452043264,
- -17.19101282693427,
- -87.47624329964907,
- -3.4164664941905585,
- -22.7723589638245,
- -2.509489125727569,
- 18.933284857582677,
- 98.61402761165104,
- 55.33923216295767,
- -33.178605382176,
- -46.03901297809681,
- -61.47925538549912,
- 64.26514742116822,
- 21.46934200700099,
- -31.51468946013378,
- -41.27694294131783,
- -65.59528852425132
- ],
- "type": "float32"
- }
- },
- "options": {
- "alpha": 0.0
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 1, 3, 4],
- "data": [
- 0,
- 50.77590560913086,
- 0,
- 0,
- 0,
- 76.02884674072266,
- 66.33873748779297,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 18.933284759521484,
- 98.61402893066406,
- 55.3392333984375,
- 0,
- 0,
- 0,
- 64.26514434814453,
- 21.469341278076172,
- 0,
- 0,
- 0
- ],
- "type": "float32"
- },
- "type": "float32"
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/lesser.json b/tests/wpt/tests/webnn/resources/test_data/lesser.json
deleted file mode 100644
index 7527ea5c53a..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/lesser.json
+++ /dev/null
@@ -1,970 +0,0 @@
-{
- "tests": [
- {
- "name": "lesser float32 0D scalar",
- "inputs": {
- "a": {
- "shape": [],
- "data": [
- -0.5228080371919397
- ],
- "type": "float32"
- },
- "b": {
- "shape": [],
- "data": [
- 0.8150388698055
- ],
- "type": "float32"
- }
- },
- "expected": {
- "shape": [],
- "data": [
- 1
- ],
- "type": "uint8"
- }
- },
- {
- "name": "lesser float32 1D constant tensors",
- "inputs": {
- "a": {
- "shape": [24],
- "data": [
- -1.1472189199107738,
- -8.409373914977403,
- -2.2753309465448535,
- -0.5770801181952088,
- 8.171789524073006,
- -0.907120961653046,
- 5.290845327676683,
- -3.9134646002455975,
- 9.825094822582592,
- -8.931730412646708,
- -3.4574016573266553,
- -7.331231867596579,
- 1.2320041500405665,
- 4.312076818806343,
- 1.2715546106634825,
- 4.184540686856884,
- -6.710920186561022,
- 3.0768423616317655,
- 1.0030865825397903,
- -9.076244529342748,
- 8.907161848861044,
- 4.232614785327211,
- 2.1005889661509425,
- -6.201345656840638
- ],
- "type": "float32",
- "constant": true
- },
- "b": {
- "shape": [24],
- "data": [
- 2.9453755897484726,
- 3.7304716829497266,
- 4.025375190729793,
- -4.718355239722074,
- 6.773274305103257,
- -2.042813441289626,
- -6.526761957285996,
- 6.826299715878466,
- -9.267172939567224,
- 6.118424090729771,
- -2.0017322775193014,
- 1.779831042224643,
- 9.660093887317394,
- -2.7473158972960476,
- -3.4345008109025033,
- -4.7510974486127955,
- -6.092621934151237,
- -0.43348063367342426,
- -1.4069053013420518,
- -0.23742098855005445,
- -9.105970612932852,
- 6.811780042167808,
- -6.768326860738436,
- -8.952353121501568
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "shape": [24],
- "data": [
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 1,
- 0,
- 1,
- 0,
- 0
- ],
- "type": "uint8"
- }
- },
- {
- "name": "lesser float32 1D tensors",
- "inputs": {
- "a": {
- "shape": [24],
- "data": [
- -1.1472189199107738,
- -8.409373914977403,
- -2.2753309465448535,
- -0.5770801181952088,
- 8.171789524073006,
- -0.907120961653046,
- 5.290845327676683,
- -3.9134646002455975,
- 9.825094822582592,
- -8.931730412646708,
- -3.4574016573266553,
- -7.331231867596579,
- 1.2320041500405665,
- 4.312076818806343,
- 1.2715546106634825,
- 4.184540686856884,
- -6.710920186561022,
- 3.0768423616317655,
- 1.0030865825397903,
- -9.076244529342748,
- 8.907161848861044,
- 4.232614785327211,
- 2.1005889661509425,
- -6.201345656840638
- ],
- "type": "float32"
- },
- "b": {
- "shape": [24],
- "data": [
- 2.9453755897484726,
- 3.7304716829497266,
- 4.025375190729793,
- -4.718355239722074,
- 6.773274305103257,
- -2.042813441289626,
- -6.526761957285996,
- 6.826299715878466,
- -9.267172939567224,
- 6.118424090729771,
- -2.0017322775193014,
- 1.779831042224643,
- 9.660093887317394,
- -2.7473158972960476,
- -3.4345008109025033,
- -4.7510974486127955,
- -6.092621934151237,
- -0.43348063367342426,
- -1.4069053013420518,
- -0.23742098855005445,
- -9.105970612932852,
- 6.811780042167808,
- -6.768326860738436,
- -8.952353121501568
- ],
- "type": "float32"
- }
- },
- "expected": {
- "shape": [24],
- "data": [
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 1,
- 0,
- 1,
- 0,
- 0
- ],
- "type": "uint8"
- }
- },
- {
- "name": "lesser float32 2D tensors",
- "inputs": {
- "a": {
- "shape": [4, 6],
- "data": [
- -1.1472189199107738,
- -8.409373914977403,
- -2.2753309465448535,
- -0.5770801181952088,
- 8.171789524073006,
- -0.907120961653046,
- 5.290845327676683,
- -3.9134646002455975,
- 9.825094822582592,
- -8.931730412646708,
- -3.4574016573266553,
- -7.331231867596579,
- 1.2320041500405665,
- 4.312076818806343,
- 1.2715546106634825,
- 4.184540686856884,
- -6.710920186561022,
- 3.0768423616317655,
- 1.0030865825397903,
- -9.076244529342748,
- 8.907161848861044,
- 4.232614785327211,
- 2.1005889661509425,
- -6.201345656840638
- ],
- "type": "float32"
- },
- "b": {
- "shape": [4, 6],
- "data": [
- 2.9453755897484726,
- 3.7304716829497266,
- 4.025375190729793,
- -4.718355239722074,
- 6.773274305103257,
- -2.042813441289626,
- -6.526761957285996,
- 6.826299715878466,
- -9.267172939567224,
- 6.118424090729771,
- -2.0017322775193014,
- 1.779831042224643,
- 9.660093887317394,
- -2.7473158972960476,
- -3.4345008109025033,
- -4.7510974486127955,
- -6.092621934151237,
- -0.43348063367342426,
- -1.4069053013420518,
- -0.23742098855005445,
- -9.105970612932852,
- 6.811780042167808,
- -6.768326860738436,
- -8.952353121501568
- ],
- "type": "float32"
- }
- },
- "expected": {
- "shape": [4, 6],
- "data": [
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 1,
- 0,
- 1,
- 0,
- 0
- ],
- "type": "uint8"
- }
- },
- {
- "name": "lesser float32 3D tensors",
- "inputs": {
- "a": {
- "shape": [2, 3, 4],
- "data": [
- -1.1472189199107738,
- -8.409373914977403,
- -2.2753309465448535,
- -0.5770801181952088,
- 8.171789524073006,
- -0.907120961653046,
- 5.290845327676683,
- -3.9134646002455975,
- 9.825094822582592,
- -8.931730412646708,
- -3.4574016573266553,
- -7.331231867596579,
- 1.2320041500405665,
- 4.312076818806343,
- 1.2715546106634825,
- 4.184540686856884,
- -6.710920186561022,
- 3.0768423616317655,
- 1.0030865825397903,
- -9.076244529342748,
- 8.907161848861044,
- 4.232614785327211,
- 2.1005889661509425,
- -6.201345656840638
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 3, 4],
- "data": [
- 2.9453755897484726,
- 3.7304716829497266,
- 4.025375190729793,
- -4.718355239722074,
- 6.773274305103257,
- -2.042813441289626,
- -6.526761957285996,
- 6.826299715878466,
- -9.267172939567224,
- 6.118424090729771,
- -2.0017322775193014,
- 1.779831042224643,
- 9.660093887317394,
- -2.7473158972960476,
- -3.4345008109025033,
- -4.7510974486127955,
- -6.092621934151237,
- -0.43348063367342426,
- -1.4069053013420518,
- -0.23742098855005445,
- -9.105970612932852,
- 6.811780042167808,
- -6.768326860738436,
- -8.952353121501568
- ],
- "type": "float32"
- }
- },
- "expected": {
- "shape": [2, 3, 4],
- "data": [
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 1,
- 0,
- 1,
- 0,
- 0
- ],
- "type": "uint8"
- }
- },
- {
- "name": "lesser float32 4D tensors",
- "inputs": {
- "a": {
- "shape": [2, 2, 2, 3],
- "data": [
- -1.1472189199107738,
- -8.409373914977403,
- -2.2753309465448535,
- -0.5770801181952088,
- 8.171789524073006,
- -0.907120961653046,
- 5.290845327676683,
- -3.9134646002455975,
- 9.825094822582592,
- -8.931730412646708,
- -3.4574016573266553,
- -7.331231867596579,
- 1.2320041500405665,
- 4.312076818806343,
- 1.2715546106634825,
- 4.184540686856884,
- -6.710920186561022,
- 3.0768423616317655,
- 1.0030865825397903,
- -9.076244529342748,
- 8.907161848861044,
- 4.232614785327211,
- 2.1005889661509425,
- -6.201345656840638
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 2, 3],
- "data": [
- 2.9453755897484726,
- 3.7304716829497266,
- 4.025375190729793,
- -4.718355239722074,
- 6.773274305103257,
- -2.042813441289626,
- -6.526761957285996,
- 6.826299715878466,
- -9.267172939567224,
- 6.118424090729771,
- -2.0017322775193014,
- 1.779831042224643,
- 9.660093887317394,
- -2.7473158972960476,
- -3.4345008109025033,
- -4.7510974486127955,
- -6.092621934151237,
- -0.43348063367342426,
- -1.4069053013420518,
- -0.23742098855005445,
- -9.105970612932852,
- 6.811780042167808,
- -6.768326860738436,
- -8.952353121501568
- ],
- "type": "float32"
- }
- },
- "expected": {
- "shape": [2, 2, 2, 3],
- "data": [
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 1,
- 0,
- 1,
- 0,
- 0
- ],
- "type": "uint8"
- }
- },
- {
- "name": "lesser float32 5D tensors",
- "inputs": {
- "a": {
- "shape": [2, 2, 1, 2, 3],
- "data": [
- -1.1472189199107738,
- -8.409373914977403,
- -2.2753309465448535,
- -0.5770801181952088,
- 8.171789524073006,
- -0.907120961653046,
- 5.290845327676683,
- -3.9134646002455975,
- 9.825094822582592,
- -8.931730412646708,
- -3.4574016573266553,
- -7.331231867596579,
- 1.2320041500405665,
- 4.312076818806343,
- 1.2715546106634825,
- 4.184540686856884,
- -6.710920186561022,
- 3.0768423616317655,
- 1.0030865825397903,
- -9.076244529342748,
- 8.907161848861044,
- 4.232614785327211,
- 2.1005889661509425,
- -6.201345656840638
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 1, 2, 3],
- "data": [
- 2.9453755897484726,
- 3.7304716829497266,
- 4.025375190729793,
- -4.718355239722074,
- 6.773274305103257,
- -2.042813441289626,
- -6.526761957285996,
- 6.826299715878466,
- -9.267172939567224,
- 6.118424090729771,
- -2.0017322775193014,
- 1.779831042224643,
- 9.660093887317394,
- -2.7473158972960476,
- -3.4345008109025033,
- -4.7510974486127955,
- -6.092621934151237,
- -0.43348063367342426,
- -1.4069053013420518,
- -0.23742098855005445,
- -9.105970612932852,
- 6.811780042167808,
- -6.768326860738436,
- -8.952353121501568
- ],
- "type": "float32"
- }
- },
- "expected": {
- "shape": [2, 2, 1, 2, 3],
- "data": [
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 1,
- 0,
- 1,
- 0,
- 0
- ],
- "type": "uint8"
- }
- },
- {
- "name": "lesser float32 broadcast 0D to 4D",
- "inputs": {
- "a": {
- "shape": [],
- "data": [
- -5.678369818327527
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 2, 3],
- "data": [
- -1.1472189199107738,
- -8.409373914977403,
- -2.2753309465448535,
- -0.5770801181952088,
- 8.171789524073006,
- -0.907120961653046,
- 5.290845327676683,
- -3.9134646002455975,
- 9.825094822582592,
- -8.931730412646708,
- -3.4574016573266553,
- -7.331231867596579,
- 1.2320041500405665,
- 4.312076818806343,
- 1.2715546106634825,
- 4.184540686856884,
- -6.710920186561022,
- 3.0768423616317655,
- 1.0030865825397903,
- -9.076244529342748,
- 8.907161848861044,
- 4.232614785327211,
- 2.1005889661509425,
- -6.201345656840638
- ],
- "type": "float32"
- }
- },
- "expected": {
- "shape": [2, 2, 2, 3],
- "data": [
- 1,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 1,
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 1,
- 1,
- 0,
- 1,
- 1,
- 1,
- 0
- ],
- "type": "uint8"
- }
- },
- {
- "name": "lesser float32 broadcast 1D to 4D",
- "inputs": {
- "a": {
- "shape": [1],
- "data": [
- -5.678369818327527
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 2, 3],
- "data": [
- -1.1472189199107738,
- -8.409373914977403,
- -2.2753309465448535,
- -0.5770801181952088,
- 8.171789524073006,
- -0.907120961653046,
- 5.290845327676683,
- -3.9134646002455975,
- 9.825094822582592,
- -8.931730412646708,
- -3.4574016573266553,
- -7.331231867596579,
- 1.2320041500405665,
- 4.312076818806343,
- 1.2715546106634825,
- 4.184540686856884,
- -6.710920186561022,
- 3.0768423616317655,
- 1.0030865825397903,
- -9.076244529342748,
- 8.907161848861044,
- 4.232614785327211,
- 2.1005889661509425,
- -6.201345656840638
- ],
- "type": "float32"
- }
- },
- "expected": {
- "shape": [2, 2, 2, 3],
- "data": [
- 1,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 1,
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 1,
- 1,
- 0,
- 1,
- 1,
- 1,
- 0
- ],
- "type": "uint8"
- }
- },
- {
- "name": "lesser float32 broadcast 2D to 4D",
- "inputs": {
- "a": {
- "shape": [2, 2, 2, 3],
- "data": [
- -1.1472189199107738,
- -8.409373914977403,
- -2.2753309465448535,
- -0.5770801181952088,
- 8.171789524073006,
- -0.907120961653046,
- 5.290845327676683,
- -3.9134646002455975,
- 9.825094822582592,
- -8.931730412646708,
- -3.4574016573266553,
- -7.331231867596579,
- 1.2320041500405665,
- 4.312076818806343,
- 1.2715546106634825,
- 4.184540686856884,
- -6.710920186561022,
- 3.0768423616317655,
- 1.0030865825397903,
- -9.076244529342748,
- 8.907161848861044,
- 4.232614785327211,
- 2.1005889661509425,
- -6.201345656840638
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 3],
- "data":[
- 3.5869946313397314,
- -2.8533321455054805,
- -3.684652687308483,
- 2.4055018033797815,
- -4.358371438779294,
- 5.5484749560652915
- ],
- "type": "float32"
- }
- },
- "expected": {
- "shape": [2, 2, 2, 3],
- "data": [
- 1,
- 1,
- 0,
- 1,
- 0,
- 1,
- 0,
- 1,
- 0,
- 1,
- 0,
- 1,
- 1,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 1
- ],
- "type": "uint8"
- }
- },
- {
- "name": "lesser float32 broadcast 3D to 4D",
- "inputs": {
- "a": {
- "shape": [2, 2, 2, 3],
- "data": [
- -1.1472189199107738,
- -8.409373914977403,
- -2.2753309465448535,
- -0.5770801181952088,
- 8.171789524073006,
- -0.907120961653046,
- 5.290845327676683,
- -3.9134646002455975,
- 9.825094822582592,
- -8.931730412646708,
- -3.4574016573266553,
- -7.331231867596579,
- 1.2320041500405665,
- 4.312076818806343,
- 1.2715546106634825,
- 4.184540686856884,
- -6.710920186561022,
- 3.0768423616317655,
- 1.0030865825397903,
- -9.076244529342748,
- 8.907161848861044,
- 4.232614785327211,
- 2.1005889661509425,
- -6.201345656840638
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 1],
- "data": [
- -4.439523740453941,
- 2.751832334938049,
- 3.6359436309279225,
- -2.808992101634189
- ],
- "type": "float32"
- }
- },
- "expected": {
- "shape": [2, 2, 2, 3],
- "data": [
- 0,
- 1,
- 0,
- 1,
- 0,
- 1,
- 0,
- 1,
- 0,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 1,
- 1,
- 0,
- 0,
- 0,
- 1
- ],
- "type": "uint8"
- }
- },
- {
- "name": "lesser float32 broadcast 4D to 4D",
- "inputs": {
- "a": {
- "shape": [1, 1, 1, 1],
- "data": [
- -5.678369818327527
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 2, 3],
- "data": [
- -1.1472189199107738,
- -8.409373914977403,
- -2.2753309465448535,
- -0.5770801181952088,
- 8.171789524073006,
- -0.907120961653046,
- 5.290845327676683,
- -3.9134646002455975,
- 9.825094822582592,
- -8.931730412646708,
- -3.4574016573266553,
- -7.331231867596579,
- 1.2320041500405665,
- 4.312076818806343,
- 1.2715546106634825,
- 4.184540686856884,
- -6.710920186561022,
- 3.0768423616317655,
- 1.0030865825397903,
- -9.076244529342748,
- 8.907161848861044,
- 4.232614785327211,
- 2.1005889661509425,
- -6.201345656840638
- ],
- "type": "float32"
- }
- },
- "expected": {
- "shape": [2, 2, 2, 3],
- "data": [
- 1,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 1,
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 1,
- 1,
- 0,
- 1,
- 1,
- 1,
- 0
- ],
- "type": "uint8"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/lesser_or_equal.json b/tests/wpt/tests/webnn/resources/test_data/lesser_or_equal.json
deleted file mode 100644
index f47bd3b9d9c..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/lesser_or_equal.json
+++ /dev/null
@@ -1,970 +0,0 @@
-{
- "tests": [
- {
- "name": "lesserOrEqual float32 0D scalar",
- "inputs": {
- "a": {
- "shape": [],
- "data": [
- -6.978766599337822
- ],
- "type": "float32"
- },
- "b": {
- "shape": [],
- "data": [
- 6.613064588921308
- ],
- "type": "float32"
- }
- },
- "expected": {
- "shape": [],
- "data": [
- 1
- ],
- "type": "uint8"
- }
- },
- {
- "name": "lesserOrEqual float32 1D constant tensors",
- "inputs": {
- "a": {
- "shape": [24],
- "data": [
- -8.28400872674051,
- -3.2192645259702735,
- -6.543179908675301,
- -0.5402850743134735,
- -5.413843546081334,
- 5.5837429023307585,
- 1.5017805895450707,
- 6.592243911021967,
- -9.925486373960158,
- -7.134800104191736,
- -4.915772925181514,
- -9.137166899591985,
- 9.403683415346574,
- -9.831502572671727,
- -2.01231810920369,
- -6.5976898409038665,
- -8.269321065543842,
- 8.281030248217476,
- 1.645282309888799,
- -1.486272662516086,
- -4.998753723234106,
- -0.9209934547883556,
- -9.434256078100471,
- 9.81323851825412
- ],
- "type": "float32",
- "constant": true
- },
- "b": {
- "shape": [24],
- "data": [
- 5.498841374763742,
- 1.7662660534986596,
- -2.815573112568557,
- -6.048312187382399,
- 9.49753657859197,
- -2.1015747067374635,
- -4.079037092104509,
- 5.314039986892048,
- 0.0387145550620982,
- -0.30728287605858995,
- 4.975426828050438,
- 3.4626017503711424,
- 8.605685214066689,
- 1.5140481393702743,
- 2.009095893644295,
- -0.3105867764637402,
- -4.244836158037981,
- -3.5506834915660024,
- -2.5953286338985615,
- -4.999806170449843,
- 3.1189506609780526,
- 9.70514084988082,
- 9.546739178733759,
- -6.189505543544822
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "shape": [24],
- "data": [
- 1,
- 1,
- 1,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0
- ],
- "type": "uint8"
- }
- },
- {
- "name": "lesserOrEqual float32 1D tensors",
- "inputs": {
- "a": {
- "shape": [24],
- "data": [
- -8.28400872674051,
- -3.2192645259702735,
- -6.543179908675301,
- -0.5402850743134735,
- -5.413843546081334,
- 5.5837429023307585,
- 1.5017805895450707,
- 6.592243911021967,
- -9.925486373960158,
- -7.134800104191736,
- -4.915772925181514,
- -9.137166899591985,
- 9.403683415346574,
- -9.831502572671727,
- -2.01231810920369,
- -6.5976898409038665,
- -8.269321065543842,
- 8.281030248217476,
- 1.645282309888799,
- -1.486272662516086,
- -4.998753723234106,
- -0.9209934547883556,
- -9.434256078100471,
- 9.81323851825412
- ],
- "type": "float32"
- },
- "b": {
- "shape": [24],
- "data": [
- 5.498841374763742,
- 1.7662660534986596,
- -2.815573112568557,
- -6.048312187382399,
- 9.49753657859197,
- -2.1015747067374635,
- -4.079037092104509,
- 5.314039986892048,
- 0.0387145550620982,
- -0.30728287605858995,
- 4.975426828050438,
- 3.4626017503711424,
- 8.605685214066689,
- 1.5140481393702743,
- 2.009095893644295,
- -0.3105867764637402,
- -4.244836158037981,
- -3.5506834915660024,
- -2.5953286338985615,
- -4.999806170449843,
- 3.1189506609780526,
- 9.70514084988082,
- 9.546739178733759,
- -6.189505543544822
- ],
- "type": "float32"
- }
- },
- "expected": {
- "shape": [24],
- "data": [
- 1,
- 1,
- 1,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0
- ],
- "type": "uint8"
- }
- },
- {
- "name": "lesserOrEqual float32 2D tensors",
- "inputs": {
- "a": {
- "shape": [4, 6],
- "data": [
- -8.28400872674051,
- -3.2192645259702735,
- -6.543179908675301,
- -0.5402850743134735,
- -5.413843546081334,
- 5.5837429023307585,
- 1.5017805895450707,
- 6.592243911021967,
- -9.925486373960158,
- -7.134800104191736,
- -4.915772925181514,
- -9.137166899591985,
- 9.403683415346574,
- -9.831502572671727,
- -2.01231810920369,
- -6.5976898409038665,
- -8.269321065543842,
- 8.281030248217476,
- 1.645282309888799,
- -1.486272662516086,
- -4.998753723234106,
- -0.9209934547883556,
- -9.434256078100471,
- 9.81323851825412
- ],
- "type": "float32"
- },
- "b": {
- "shape": [4, 6],
- "data": [
- 5.498841374763742,
- 1.7662660534986596,
- -2.815573112568557,
- -6.048312187382399,
- 9.49753657859197,
- -2.1015747067374635,
- -4.079037092104509,
- 5.314039986892048,
- 0.0387145550620982,
- -0.30728287605858995,
- 4.975426828050438,
- 3.4626017503711424,
- 8.605685214066689,
- 1.5140481393702743,
- 2.009095893644295,
- -0.3105867764637402,
- -4.244836158037981,
- -3.5506834915660024,
- -2.5953286338985615,
- -4.999806170449843,
- 3.1189506609780526,
- 9.70514084988082,
- 9.546739178733759,
- -6.189505543544822
- ],
- "type": "float32"
- }
- },
- "expected": {
- "shape": [4, 6],
- "data": [
- 1,
- 1,
- 1,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0
- ],
- "type": "uint8"
- }
- },
- {
- "name": "lesserOrEqual float32 3D tensors",
- "inputs": {
- "a": {
- "shape": [2, 3, 4],
- "data": [
- -8.28400872674051,
- -3.2192645259702735,
- -6.543179908675301,
- -0.5402850743134735,
- -5.413843546081334,
- 5.5837429023307585,
- 1.5017805895450707,
- 6.592243911021967,
- -9.925486373960158,
- -7.134800104191736,
- -4.915772925181514,
- -9.137166899591985,
- 9.403683415346574,
- -9.831502572671727,
- -2.01231810920369,
- -6.5976898409038665,
- -8.269321065543842,
- 8.281030248217476,
- 1.645282309888799,
- -1.486272662516086,
- -4.998753723234106,
- -0.9209934547883556,
- -9.434256078100471,
- 9.81323851825412
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 3, 4],
- "data": [
- 5.498841374763742,
- 1.7662660534986596,
- -2.815573112568557,
- -6.048312187382399,
- 9.49753657859197,
- -2.1015747067374635,
- -4.079037092104509,
- 5.314039986892048,
- 0.0387145550620982,
- -0.30728287605858995,
- 4.975426828050438,
- 3.4626017503711424,
- 8.605685214066689,
- 1.5140481393702743,
- 2.009095893644295,
- -0.3105867764637402,
- -4.244836158037981,
- -3.5506834915660024,
- -2.5953286338985615,
- -4.999806170449843,
- 3.1189506609780526,
- 9.70514084988082,
- 9.546739178733759,
- -6.189505543544822
- ],
- "type": "float32"
- }
- },
- "expected": {
- "shape": [2, 3, 4],
- "data": [
- 1,
- 1,
- 1,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0
- ],
- "type": "uint8"
- }
- },
- {
- "name": "lesserOrEqual float32 4D tensors",
- "inputs": {
- "a": {
- "shape": [2, 2, 2, 3],
- "data": [
- -8.28400872674051,
- -3.2192645259702735,
- -6.543179908675301,
- -0.5402850743134735,
- -5.413843546081334,
- 5.5837429023307585,
- 1.5017805895450707,
- 6.592243911021967,
- -9.925486373960158,
- -7.134800104191736,
- -4.915772925181514,
- -9.137166899591985,
- 9.403683415346574,
- -9.831502572671727,
- -2.01231810920369,
- -6.5976898409038665,
- -8.269321065543842,
- 8.281030248217476,
- 1.645282309888799,
- -1.486272662516086,
- -4.998753723234106,
- -0.9209934547883556,
- -9.434256078100471,
- 9.81323851825412
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 2, 3],
- "data": [
- 5.498841374763742,
- 1.7662660534986596,
- -2.815573112568557,
- -6.048312187382399,
- 9.49753657859197,
- -2.1015747067374635,
- -4.079037092104509,
- 5.314039986892048,
- 0.0387145550620982,
- -0.30728287605858995,
- 4.975426828050438,
- 3.4626017503711424,
- 8.605685214066689,
- 1.5140481393702743,
- 2.009095893644295,
- -0.3105867764637402,
- -4.244836158037981,
- -3.5506834915660024,
- -2.5953286338985615,
- -4.999806170449843,
- 3.1189506609780526,
- 9.70514084988082,
- 9.546739178733759,
- -6.189505543544822
- ],
- "type": "float32"
- }
- },
- "expected": {
- "shape": [2, 2, 2, 3],
- "data": [
- 1,
- 1,
- 1,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0
- ],
- "type": "uint8"
- }
- },
- {
- "name": "lesserOrEqual float32 5D tensors",
- "inputs": {
- "a": {
- "shape": [2, 2, 1, 2, 3],
- "data": [
- -8.28400872674051,
- -3.2192645259702735,
- -6.543179908675301,
- -0.5402850743134735,
- -5.413843546081334,
- 5.5837429023307585,
- 1.5017805895450707,
- 6.592243911021967,
- -9.925486373960158,
- -7.134800104191736,
- -4.915772925181514,
- -9.137166899591985,
- 9.403683415346574,
- -9.831502572671727,
- -2.01231810920369,
- -6.5976898409038665,
- -8.269321065543842,
- 8.281030248217476,
- 1.645282309888799,
- -1.486272662516086,
- -4.998753723234106,
- -0.9209934547883556,
- -9.434256078100471,
- 9.81323851825412
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 1, 2, 3],
- "data": [
- 5.498841374763742,
- 1.7662660534986596,
- -2.815573112568557,
- -6.048312187382399,
- 9.49753657859197,
- -2.1015747067374635,
- -4.079037092104509,
- 5.314039986892048,
- 0.0387145550620982,
- -0.30728287605858995,
- 4.975426828050438,
- 3.4626017503711424,
- 8.605685214066689,
- 1.5140481393702743,
- 2.009095893644295,
- -0.3105867764637402,
- -4.244836158037981,
- -3.5506834915660024,
- -2.5953286338985615,
- -4.999806170449843,
- 3.1189506609780526,
- 9.70514084988082,
- 9.546739178733759,
- -6.189505543544822
- ],
- "type": "float32"
- }
- },
- "expected": {
- "shape": [2, 2, 1, 2, 3],
- "data": [
- 1,
- 1,
- 1,
- 0,
- 1,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0
- ],
- "type": "uint8"
- }
- },
- {
- "name": "lesserOrEqual float32 broadcast 0D to 4D",
- "inputs": {
- "a": {
- "shape": [],
- "data": [
- 4.840611135629258
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 2, 3],
- "data": [
- -8.28400872674051,
- -3.2192645259702735,
- -6.543179908675301,
- -0.5402850743134735,
- -5.413843546081334,
- 5.5837429023307585,
- 1.5017805895450707,
- 6.592243911021967,
- -9.925486373960158,
- -7.134800104191736,
- -4.915772925181514,
- -9.137166899591985,
- 9.403683415346574,
- -9.831502572671727,
- -2.01231810920369,
- -6.5976898409038665,
- -8.269321065543842,
- 8.281030248217476,
- 1.645282309888799,
- -1.486272662516086,
- -4.998753723234106,
- -0.9209934547883556,
- -9.434256078100471,
- 9.81323851825412
- ],
- "type": "float32"
- }
- },
- "expected": {
- "shape": [2, 2, 2, 3],
- "data": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- "type": "uint8"
- }
- },
- {
- "name": "lesserOrEqual float32 broadcast 1D to 4D",
- "inputs": {
- "a": {
- "shape": [1],
- "data": [
- 4.840611135629258
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 2, 3],
- "data": [
- -8.28400872674051,
- -3.2192645259702735,
- -6.543179908675301,
- -0.5402850743134735,
- -5.413843546081334,
- 5.5837429023307585,
- 1.5017805895450707,
- 6.592243911021967,
- -9.925486373960158,
- -7.134800104191736,
- -4.915772925181514,
- -9.137166899591985,
- 9.403683415346574,
- -9.831502572671727,
- -2.01231810920369,
- -6.5976898409038665,
- -8.269321065543842,
- 8.281030248217476,
- 1.645282309888799,
- -1.486272662516086,
- -4.998753723234106,
- -0.9209934547883556,
- -9.434256078100471,
- 9.81323851825412
- ],
- "type": "float32"
- }
- },
- "expected": {
- "shape": [2, 2, 2, 3],
- "data": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- "type": "uint8"
- }
- },
- {
- "name": "lesserOrEqual float32 broadcast 2D to 4D",
- "inputs": {
- "a": {
- "shape": [2, 2, 2, 3],
- "data": [
- -8.28400872674051,
- -3.2192645259702735,
- -6.543179908675301,
- -0.5402850743134735,
- -5.413843546081334,
- 5.5837429023307585,
- 1.5017805895450707,
- 6.592243911021967,
- -9.925486373960158,
- -7.134800104191736,
- -4.915772925181514,
- -9.137166899591985,
- 9.403683415346574,
- -9.831502572671727,
- -2.01231810920369,
- -6.5976898409038665,
- -8.269321065543842,
- 8.281030248217476,
- 1.645282309888799,
- -1.486272662516086,
- -4.998753723234106,
- -0.9209934547883556,
- -9.434256078100471,
- 9.81323851825412
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 3],
- "data": [
- -8.499546963452499,
- -8.321309725362518,
- -7.182070889034953,
- 3.418306360706925,
- 5.389469370006754,
- 6.9043128878217
- ],
- "type": "float32"
- }
- },
- "expected": {
- "shape": [2, 2, 2, 3],
- "data": [
- 0,
- 0,
- 0,
- 1,
- 1,
- 1,
- 0,
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 1,
- 0,
- 1,
- 1,
- 0,
- 0,
- 0,
- 0,
- 1,
- 1,
- 0
- ],
- "type": "uint8"
- }
- },
- {
- "name": "lesserOrEqual float32 broadcast 3D to 4D",
- "inputs": {
- "a": {
- "shape": [2, 2, 2, 3],
- "data": [
- -8.28400872674051,
- -3.2192645259702735,
- -6.543179908675301,
- -0.5402850743134735,
- -5.413843546081334,
- 5.5837429023307585,
- 1.5017805895450707,
- 6.592243911021967,
- -9.925486373960158,
- -7.134800104191736,
- -4.915772925181514,
- -9.137166899591985,
- 9.403683415346574,
- -9.831502572671727,
- -2.01231810920369,
- -6.5976898409038665,
- -8.269321065543842,
- 8.281030248217476,
- 1.645282309888799,
- -1.486272662516086,
- -4.998753723234106,
- -0.9209934547883556,
- -9.434256078100471,
- 9.81323851825412
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 1],
- "data": [
- 4.195140983741625,
- 7.828658911400325,
- 6.690202989995797,
- 0.924701041097018
- ],
- "type": "float32"
- }
- },
- "expected": {
- "shape": [2, 2, 2, 3],
- "data": [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0,
- 1,
- 1,
- 1,
- 1,
- 0,
- 1,
- 1,
- 1,
- 1,
- 1,
- 0
- ],
- "type": "uint8"
- }
- },
- {
- "name": "lesserOrEqual float32 broadcast 4D to 4D",
- "inputs": {
- "a": {
- "shape": [1, 1, 1, 1],
- "data": [
- 4.840611135629258
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 2, 3],
- "data": [
- -8.28400872674051,
- -3.2192645259702735,
- -6.543179908675301,
- -0.5402850743134735,
- -5.413843546081334,
- 5.5837429023307585,
- 1.5017805895450707,
- 6.592243911021967,
- -9.925486373960158,
- -7.134800104191736,
- -4.915772925181514,
- -9.137166899591985,
- 9.403683415346574,
- -9.831502572671727,
- -2.01231810920369,
- -6.5976898409038665,
- -8.269321065543842,
- 8.281030248217476,
- 1.645282309888799,
- -1.486272662516086,
- -4.998753723234106,
- -0.9209934547883556,
- -9.434256078100471,
- 9.81323851825412
- ],
- "type": "float32"
- }
- },
- "expected": {
- "shape": [2, 2, 2, 3],
- "data": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1
- ],
- "type": "uint8"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/linear.json b/tests/wpt/tests/webnn/resources/test_data/linear.json
deleted file mode 100644
index 6cbb84e9cb0..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/linear.json
+++ /dev/null
@@ -1,818 +0,0 @@
-{ // linear: Calculate a linear function y = alpha * x + beta on the input tensor.
- "tests": [
- {
- "name": "linear float32 1D constant tensor default options", // default options: {alpha: 1, beta: 0}
- "inputs": {
- "x": {
- "shape": [24],
- "data": [
- -1.1225161816883542,
- -6.605223195131225,
- -1.9555539248683687,
- -4.598548331438281,
- 4.234208072658522,
- 3.097542121236385,
- 3.7465923873418348,
- -4.487029772637743,
- 6.407402114982858,
- -4.354544013606705,
- -5.8190925441357955,
- 3.7214346452179328,
- -6.330114110872294,
- 8.580595073862398,
- -6.764922344398516,
- 6.433565829855674,
- -9.708685944356201,
- 2.6431380232113746,
- 5.214088864824586,
- 9.658617012096975,
- -8.72174939837989,
- -0.4533396492565025,
- 9.992619953447026,
- -6.469674921617137
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- -1.12251615524292,
- -6.605223178863525,
- -1.9555538892745972,
- -4.598548412322998,
- 4.234208106994629,
- 3.0975420475006104,
- 3.7465922832489014,
- -4.487029552459717,
- 6.407402038574219,
- -4.354544162750244,
- -5.819092750549316,
- 3.7214345932006836,
- -6.330113887786865,
- 8.580595016479492,
- -6.764922142028809,
- 6.433565616607666,
- -9.708685874938965,
- 2.6431379318237305,
- 5.2140889167785645,
- 9.65861701965332,
- -8.721749305725098,
- -0.4533396363258362,
- 9.992619514465332,
- -6.469675064086914
- ],
- "type": "float32"
- }
- },
- {
- "name": "linear float32 1D tensor default options", // default options: {alpha: 1, beta: 0}
- "inputs": {
- "x": {
- "shape": [24],
- "data": [
- -1.1225161816883542,
- -6.605223195131225,
- -1.9555539248683687,
- -4.598548331438281,
- 4.234208072658522,
- 3.097542121236385,
- 3.7465923873418348,
- -4.487029772637743,
- 6.407402114982858,
- -4.354544013606705,
- -5.8190925441357955,
- 3.7214346452179328,
- -6.330114110872294,
- 8.580595073862398,
- -6.764922344398516,
- 6.433565829855674,
- -9.708685944356201,
- 2.6431380232113746,
- 5.214088864824586,
- 9.658617012096975,
- -8.72174939837989,
- -0.4533396492565025,
- 9.992619953447026,
- -6.469674921617137
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- -1.12251615524292,
- -6.605223178863525,
- -1.9555538892745972,
- -4.598548412322998,
- 4.234208106994629,
- 3.0975420475006104,
- 3.7465922832489014,
- -4.487029552459717,
- 6.407402038574219,
- -4.354544162750244,
- -5.819092750549316,
- 3.7214345932006836,
- -6.330113887786865,
- 8.580595016479492,
- -6.764922142028809,
- 6.433565616607666,
- -9.708685874938965,
- 2.6431379318237305,
- 5.2140889167785645,
- 9.65861701965332,
- -8.721749305725098,
- -0.4533396363258362,
- 9.992619514465332,
- -6.469675064086914
- ],
- "type": "float32"
- }
- },
- {
- "name": "linear float32 2D tensor default options",
- "inputs": {
- "x": {
- "shape": [4, 6],
- "data": [
- -1.1225161816883542,
- -6.605223195131225,
- -1.9555539248683687,
- -4.598548331438281,
- 4.234208072658522,
- 3.097542121236385,
- 3.7465923873418348,
- -4.487029772637743,
- 6.407402114982858,
- -4.354544013606705,
- -5.8190925441357955,
- 3.7214346452179328,
- -6.330114110872294,
- 8.580595073862398,
- -6.764922344398516,
- 6.433565829855674,
- -9.708685944356201,
- 2.6431380232113746,
- 5.214088864824586,
- 9.658617012096975,
- -8.72174939837989,
- -0.4533396492565025,
- 9.992619953447026,
- -6.469674921617137
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- -1.12251615524292,
- -6.605223178863525,
- -1.9555538892745972,
- -4.598548412322998,
- 4.234208106994629,
- 3.0975420475006104,
- 3.7465922832489014,
- -4.487029552459717,
- 6.407402038574219,
- -4.354544162750244,
- -5.819092750549316,
- 3.7214345932006836,
- -6.330113887786865,
- 8.580595016479492,
- -6.764922142028809,
- 6.433565616607666,
- -9.708685874938965,
- 2.6431379318237305,
- 5.2140889167785645,
- 9.65861701965332,
- -8.721749305725098,
- -0.4533396363258362,
- 9.992619514465332,
- -6.469675064086914
- ],
- "type": "float32"
- }
- },
- {
- "name": "linear float32 3D tensor default options",
- "inputs": {
- "x": {
- "shape": [2, 3, 4],
- "data": [
- -1.1225161816883542,
- -6.605223195131225,
- -1.9555539248683687,
- -4.598548331438281,
- 4.234208072658522,
- 3.097542121236385,
- 3.7465923873418348,
- -4.487029772637743,
- 6.407402114982858,
- -4.354544013606705,
- -5.8190925441357955,
- 3.7214346452179328,
- -6.330114110872294,
- 8.580595073862398,
- -6.764922344398516,
- 6.433565829855674,
- -9.708685944356201,
- 2.6431380232113746,
- 5.214088864824586,
- 9.658617012096975,
- -8.72174939837989,
- -0.4533396492565025,
- 9.992619953447026,
- -6.469674921617137
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 3, 4],
- "data": [
- -1.12251615524292,
- -6.605223178863525,
- -1.9555538892745972,
- -4.598548412322998,
- 4.234208106994629,
- 3.0975420475006104,
- 3.7465922832489014,
- -4.487029552459717,
- 6.407402038574219,
- -4.354544162750244,
- -5.819092750549316,
- 3.7214345932006836,
- -6.330113887786865,
- 8.580595016479492,
- -6.764922142028809,
- 6.433565616607666,
- -9.708685874938965,
- 2.6431379318237305,
- 5.2140889167785645,
- 9.65861701965332,
- -8.721749305725098,
- -0.4533396363258362,
- 9.992619514465332,
- -6.469675064086914
- ],
- "type": "float32"
- }
- },
- {
- "name": "linear float32 4D tensor default options",
- "inputs": {
- "x": {
- "shape": [2, 2, 2, 3],
- "data": [
- -1.1225161816883542,
- -6.605223195131225,
- -1.9555539248683687,
- -4.598548331438281,
- 4.234208072658522,
- 3.097542121236385,
- 3.7465923873418348,
- -4.487029772637743,
- 6.407402114982858,
- -4.354544013606705,
- -5.8190925441357955,
- 3.7214346452179328,
- -6.330114110872294,
- 8.580595073862398,
- -6.764922344398516,
- 6.433565829855674,
- -9.708685944356201,
- 2.6431380232113746,
- 5.214088864824586,
- 9.658617012096975,
- -8.72174939837989,
- -0.4533396492565025,
- 9.992619953447026,
- -6.469674921617137
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- -1.12251615524292,
- -6.605223178863525,
- -1.9555538892745972,
- -4.598548412322998,
- 4.234208106994629,
- 3.0975420475006104,
- 3.7465922832489014,
- -4.487029552459717,
- 6.407402038574219,
- -4.354544162750244,
- -5.819092750549316,
- 3.7214345932006836,
- -6.330113887786865,
- 8.580595016479492,
- -6.764922142028809,
- 6.433565616607666,
- -9.708685874938965,
- 2.6431379318237305,
- 5.2140889167785645,
- 9.65861701965332,
- -8.721749305725098,
- -0.4533396363258362,
- 9.992619514465332,
- -6.469675064086914
- ],
- "type": "float32"
- }
- },
- {
- "name": "linear float32 5D tensor default options",
- "inputs": {
- "x": {
- "shape": [2, 1, 4, 1, 3],
- "data": [
- -1.1225161816883542,
- -6.605223195131225,
- -1.9555539248683687,
- -4.598548331438281,
- 4.234208072658522,
- 3.097542121236385,
- 3.7465923873418348,
- -4.487029772637743,
- 6.407402114982858,
- -4.354544013606705,
- -5.8190925441357955,
- 3.7214346452179328,
- -6.330114110872294,
- 8.580595073862398,
- -6.764922344398516,
- 6.433565829855674,
- -9.708685944356201,
- 2.6431380232113746,
- 5.214088864824586,
- 9.658617012096975,
- -8.72174939837989,
- -0.4533396492565025,
- 9.992619953447026,
- -6.469674921617137
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 1, 4, 1, 3],
- "data": [
- -1.12251615524292,
- -6.605223178863525,
- -1.9555538892745972,
- -4.598548412322998,
- 4.234208106994629,
- 3.0975420475006104,
- 3.7465922832489014,
- -4.487029552459717,
- 6.407402038574219,
- -4.354544162750244,
- -5.819092750549316,
- 3.7214345932006836,
- -6.330113887786865,
- 8.580595016479492,
- -6.764922142028809,
- 6.433565616607666,
- -9.708685874938965,
- 2.6431379318237305,
- 5.2140889167785645,
- 9.65861701965332,
- -8.721749305725098,
- -0.4533396363258362,
- 9.992619514465332,
- -6.469675064086914
- ],
- "type": "float32"
- }
- },
- {
- "name": "linear float32 4D tensor specified options.alpha and default options.beta",
- "inputs": {
- "x": {
- "shape": [2, 2, 2, 3],
- "data": [
- -1.1225161816883542,
- -6.605223195131225,
- -1.9555539248683687,
- -4.598548331438281,
- 4.234208072658522,
- 3.097542121236385,
- 3.7465923873418348,
- -4.487029772637743,
- 6.407402114982858,
- -4.354544013606705,
- -5.8190925441357955,
- 3.7214346452179328,
- -6.330114110872294,
- 8.580595073862398,
- -6.764922344398516,
- 6.433565829855674,
- -9.708685944356201,
- 2.6431380232113746,
- 5.214088864824586,
- 9.658617012096975,
- -8.72174939837989,
- -0.4533396492565025,
- 9.992619953447026,
- -6.469674921617137
- ],
- "type": "float32"
- }
- },
- "options": {
- "alpha": 7.398793812746618
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- -8.305265426635742,
- -48.87068176269531,
- -14.46873950958252,
- -34.023712158203125,
- 31.328031539916992,
- 22.918073654174805,
- 27.72026252746582,
- -33.198604583740234,
- 47.407047271728516,
- -32.2183723449707,
- -43.05426788330078,
- 27.53412628173828,
- -46.835205078125,
- 63.486053466796875,
- -50.05226516723633,
- 47.600624084472656,
- -71.83256530761719,
- 19.556032180786133,
- 38.57796859741211,
- 71.46211242675781,
- -64.53042602539062,
- -3.3541665077209473,
- 73.9333267211914,
- -47.86779022216797
- ],
- "type": "float32"
- }
- },
- {
- "name": "linear float32 positive 4D tensor specified positive options.beta and default options.alpha",
- "inputs": {
- "x": {
- "shape": [2, 2, 2, 3],
- "data": [
- 5.098545948694657,
- 3.381463063963137,
- 8.054763200467299,
- 8.074773950900846,
- 0.47079092139064027,
- 5.243823847381135,
- 3.8273059380736973,
- 5.369768658136882,
- 6.103317088913478,
- 3.75057871122652,
- 0.7479738402058334,
- 1.8931976115227744,
- 1.9056464154414843,
- 7.8633162842491355,
- 4.580754697122725,
- 9.373635444757738,
- 6.584214206038917,
- 9.344809838863029,
- 5.16057820830762,
- 0.8060914255567009,
- 9.13053330505177,
- 3.193740457592318,
- 5.748293601645558,
- 4.113487804502045
- ],
- "type": "float32"
- }
- },
- "options": {
- "beta": 5.919095653700928
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 11.017641067504883,
- 9.300558090209961,
- 13.973857879638672,
- 13.99386978149414,
- 6.389886379241943,
- 11.162919998168945,
- 9.7464017868042,
- 11.288864135742188,
- 12.02241325378418,
- 9.669673919677734,
- 6.667069435119629,
- 7.81229305267334,
- 7.824741840362549,
- 13.782411575317383,
- 10.499850273132324,
- 15.292730331420898,
- 12.50330924987793,
- 15.263904571533203,
- 11.079673767089844,
- 6.725186824798584,
- 15.049629211425781,
- 9.112835884094238,
- 11.667388916015625,
- 10.032583236694336
- ],
- "type": "float32"
- }
- },
- {
- "name": "linear float32 negative 4D tensor specified negative options.beta and default options.alpha",
- "inputs": {
- "x": {
- "shape": [2, 2, 2, 3],
- "data": [
- -5.098545948694657,
- -3.381463063963137,
- -8.054763200467299,
- -8.074773950900846,
- -0.47079092139064027,
- -5.243823847381135,
- -3.8273059380736973,
- -5.369768658136882,
- -6.103317088913478,
- -3.75057871122652,
- -0.7479738402058334,
- -1.8931976115227744,
- -1.9056464154414843,
- -7.8633162842491355,
- -4.580754697122725,
- -9.373635444757738,
- -6.584214206038917,
- -9.344809838863029,
- -5.16057820830762,
- -0.8060914255567009,
- -9.13053330505177,
- -3.193740457592318,
- -5.748293601645558,
- -4.113487804502045
- ],
- "type": "float32"
- }
- },
- "options": {
- "beta": -5.919095653700928
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- -11.017641067504883,
- -9.300558090209961,
- -13.973857879638672,
- -13.99386978149414,
- -6.389886379241943,
- -11.162919998168945,
- -9.7464017868042,
- -11.288864135742188,
- -12.02241325378418,
- -9.669673919677734,
- -6.667069435119629,
- -7.81229305267334,
- -7.824741840362549,
- -13.782411575317383,
- -10.499850273132324,
- -15.292730331420898,
- -12.50330924987793,
- -15.263904571533203,
- -11.079673767089844,
- -6.725186824798584,
- -15.049629211425781,
- -9.112835884094238,
- -11.667388916015625,
- -10.032583236694336
- ],
- "type": "float32"
- }
- },
- {
- "name": "linear float32 positive 4D tensor all options (positive options.alpha and positive options.beta)",
- "inputs": {
- "x": {
- "shape": [2, 2, 2, 3],
- "data": [
- 5.098545948694657,
- 3.381463063963137,
- 8.054763200467299,
- 8.074773950900846,
- 0.47079092139064027,
- 5.243823847381135,
- 3.8273059380736973,
- 5.369768658136882,
- 6.103317088913478,
- 3.75057871122652,
- 0.7479738402058334,
- 1.8931976115227744,
- 1.9056464154414843,
- 7.8633162842491355,
- 4.580754697122725,
- 9.373635444757738,
- 6.584214206038917,
- 9.344809838863029,
- 5.16057820830762,
- 0.8060914255567009,
- 9.13053330505177,
- 3.193740457592318,
- 5.748293601645558,
- 4.113487804502045
- ],
- "type": "float32"
- }
- },
- "options": {
- "alpha": 7.398793812746618,
- "beta": 5.919095653700928
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 43.64218521118164,
- 30.937843322753906,
- 65.5146255493164,
- 65.66268157958984,
- 9.402379989624023,
- 44.71706771850586,
- 34.236541748046875,
- 45.64890670776367,
- 51.0762825012207,
- 33.668853759765625,
- 11.45319938659668,
- 19.92647361755371,
- 20.018579483032227,
- 64.09815216064453,
- 39.811153411865234,
- 75.27268981933594,
- 54.63433837890625,
- 75.05941009521484,
- 44.10115051269531,
- 11.883199691772461,
- 73.47402954101562,
- 29.548921585083008,
- 48.44953155517578,
- 36.35394287109375
- ],
- "type": "float32"
- }
- },
- {
- "name": "linear float32 positive 4D tensor all options (negative options.alpha and negative options.beta)",
- "inputs": {
- "x": {
- "shape": [2, 2, 2, 3],
- "data": [
- 5.098545948694657,
- 3.381463063963137,
- 8.054763200467299,
- 8.074773950900846,
- 0.47079092139064027,
- 5.243823847381135,
- 3.8273059380736973,
- 5.369768658136882,
- 6.103317088913478,
- 3.75057871122652,
- 0.7479738402058334,
- 1.8931976115227744,
- 1.9056464154414843,
- 7.8633162842491355,
- 4.580754697122725,
- 9.373635444757738,
- 6.584214206038917,
- 9.344809838863029,
- 5.16057820830762,
- 0.8060914255567009,
- 9.13053330505177,
- 3.193740457592318,
- 5.748293601645558,
- 4.113487804502045
- ],
- "type": "float32"
- }
- },
- "options": {
- "alpha": -7.398793812746618,
- "beta": -5.919095653700928
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- -43.64218521118164,
- -30.937843322753906,
- -65.5146255493164,
- -65.66268157958984,
- -9.402379989624023,
- -44.71706771850586,
- -34.236541748046875,
- -45.64890670776367,
- -51.0762825012207,
- -33.668853759765625,
- -11.45319938659668,
- -19.92647361755371,
- -20.018579483032227,
- -64.09815216064453,
- -39.811153411865234,
- -75.27268981933594,
- -54.63433837890625,
- -75.05941009521484,
- -44.10115051269531,
- -11.883199691772461,
- -73.47402954101562,
- -29.548921585083008,
- -48.44953155517578,
- -36.35394287109375
- ],
- "type": "float32"
- }
- },
- {
- "name": "linear float32 negative 4D tensor all options (positive options.alpha and negative options.beta)",
- "inputs": {
- "x": {
- "shape": [2, 2, 2, 3],
- "data": [
- -5.098545948694657,
- -3.381463063963137,
- -8.054763200467299,
- -8.074773950900846,
- -0.47079092139064027,
- -5.243823847381135,
- -3.8273059380736973,
- -5.369768658136882,
- -6.103317088913478,
- -3.75057871122652,
- -0.7479738402058334,
- -1.8931976115227744,
- -1.9056464154414843,
- -7.8633162842491355,
- -4.580754697122725,
- -9.373635444757738,
- -6.584214206038917,
- -9.344809838863029,
- -5.16057820830762,
- -0.8060914255567009,
- -9.13053330505177,
- -3.193740457592318,
- -5.748293601645558,
- -4.113487804502045
- ],
- "type": "float32"
- }
- },
- "options": {
- "alpha": 7.398793812746618,
- "beta": -5.919095653700928
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- -43.64218521118164,
- -30.937843322753906,
- -65.5146255493164,
- -65.66268157958984,
- -9.402379989624023,
- -44.71706771850586,
- -34.236541748046875,
- -45.64890670776367,
- -51.0762825012207,
- -33.668853759765625,
- -11.45319938659668,
- -19.92647361755371,
- -20.018579483032227,
- -64.09815216064453,
- -39.811153411865234,
- -75.27268981933594,
- -54.63433837890625,
- -75.05941009521484,
- -44.10115051269531,
- -11.883199691772461,
- -73.47402954101562,
- -29.548921585083008,
- -48.44953155517578,
- -36.35394287109375
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/log.json b/tests/wpt/tests/webnn/resources/test_data/log.json
deleted file mode 100644
index 0481061272d..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/log.json
+++ /dev/null
@@ -1,401 +0,0 @@
-{
- "tests": [
- {
- "name": "log float32 positive 1D constant tensor",
- "inputs": {
- "x": {
- "shape": [24],
- "data":[
- 63.82541897073002,
- 25.31772341801677,
- 96.44790987312221,
- 40.9185632583299,
- 36.57906966041302,
- 57.81629837118902,
- 10.057244454482062,
- 17.836828533595984,
- 50.79246415149721,
- 83.86059370830392,
- 12.065509440949572,
- 22.702478725761654,
- 47.55981402665108,
- 17.543881349985526,
- 32.65243800095941,
- 20.35301082726726,
- 52.54472350026202,
- 45.60880392588138,
- 30.38581309524917,
- 13.70955827062823,
- 10.39676015729949,
- 50.840946828645464,
- 5.682034333775321,
- 94.02275663421658
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- 4.15615177154541,
- 3.2315046787261963,
- 4.569003105163574,
- 3.7115838527679443,
- 3.5994763374328613,
- 4.057270526885986,
- 2.308293104171753,
- 2.88126540184021,
- 3.927747964859009,
- 4.4291558265686035,
- 2.4903509616851807,
- 3.122474193572998,
- 3.861988067626953,
- 2.8647050857543945,
- 3.48591947555542,
- 3.0132288932800293,
- 3.9616646766662598,
- 3.820100784301758,
- 3.413975715637207,
- 2.618093252182007,
- 2.34149432182312,
- 3.9287021160125732,
- 1.7373093366622925,
- 4.54353666305542
- ],
- "type": "float32"
- }
- },
- {
- "name": "log float32 positive 1D tensor",
- "inputs": {
- "x": {
- "shape": [24],
- "data":[
- 63.82541897073002,
- 25.31772341801677,
- 96.44790987312221,
- 40.9185632583299,
- 36.57906966041302,
- 57.81629837118902,
- 10.057244454482062,
- 17.836828533595984,
- 50.79246415149721,
- 83.86059370830392,
- 12.065509440949572,
- 22.702478725761654,
- 47.55981402665108,
- 17.543881349985526,
- 32.65243800095941,
- 20.35301082726726,
- 52.54472350026202,
- 45.60880392588138,
- 30.38581309524917,
- 13.70955827062823,
- 10.39676015729949,
- 50.840946828645464,
- 5.682034333775321,
- 94.02275663421658
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- 4.15615177154541,
- 3.2315046787261963,
- 4.569003105163574,
- 3.7115838527679443,
- 3.5994763374328613,
- 4.057270526885986,
- 2.308293104171753,
- 2.88126540184021,
- 3.927747964859009,
- 4.4291558265686035,
- 2.4903509616851807,
- 3.122474193572998,
- 3.861988067626953,
- 2.8647050857543945,
- 3.48591947555542,
- 3.0132288932800293,
- 3.9616646766662598,
- 3.820100784301758,
- 3.413975715637207,
- 2.618093252182007,
- 2.34149432182312,
- 3.9287021160125732,
- 1.7373093366622925,
- 4.54353666305542
- ],
- "type": "float32"
- }
- },
- {
- "name": "log float32 positive 2D tensor",
- "inputs": {
- "x": {
- "shape": [4, 6],
- "data":[
- 63.82541897073002,
- 25.31772341801677,
- 96.44790987312221,
- 40.9185632583299,
- 36.57906966041302,
- 57.81629837118902,
- 10.057244454482062,
- 17.836828533595984,
- 50.79246415149721,
- 83.86059370830392,
- 12.065509440949572,
- 22.702478725761654,
- 47.55981402665108,
- 17.543881349985526,
- 32.65243800095941,
- 20.35301082726726,
- 52.54472350026202,
- 45.60880392588138,
- 30.38581309524917,
- 13.70955827062823,
- 10.39676015729949,
- 50.840946828645464,
- 5.682034333775321,
- 94.02275663421658
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- 4.15615177154541,
- 3.2315046787261963,
- 4.569003105163574,
- 3.7115838527679443,
- 3.5994763374328613,
- 4.057270526885986,
- 2.308293104171753,
- 2.88126540184021,
- 3.927747964859009,
- 4.4291558265686035,
- 2.4903509616851807,
- 3.122474193572998,
- 3.861988067626953,
- 2.8647050857543945,
- 3.48591947555542,
- 3.0132288932800293,
- 3.9616646766662598,
- 3.820100784301758,
- 3.413975715637207,
- 2.618093252182007,
- 2.34149432182312,
- 3.9287021160125732,
- 1.7373093366622925,
- 4.54353666305542
- ],
- "type": "float32"
- }
- },
- {
- "name": "log float32 positive 3D tensor",
- "inputs": {
- "x": {
- "shape": [2, 3, 4],
- "data":[
- 63.82541897073002,
- 25.31772341801677,
- 96.44790987312221,
- 40.9185632583299,
- 36.57906966041302,
- 57.81629837118902,
- 10.057244454482062,
- 17.836828533595984,
- 50.79246415149721,
- 83.86059370830392,
- 12.065509440949572,
- 22.702478725761654,
- 47.55981402665108,
- 17.543881349985526,
- 32.65243800095941,
- 20.35301082726726,
- 52.54472350026202,
- 45.60880392588138,
- 30.38581309524917,
- 13.70955827062823,
- 10.39676015729949,
- 50.840946828645464,
- 5.682034333775321,
- 94.02275663421658
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 3, 4],
- "data": [
- 4.15615177154541,
- 3.2315046787261963,
- 4.569003105163574,
- 3.7115838527679443,
- 3.5994763374328613,
- 4.057270526885986,
- 2.308293104171753,
- 2.88126540184021,
- 3.927747964859009,
- 4.4291558265686035,
- 2.4903509616851807,
- 3.122474193572998,
- 3.861988067626953,
- 2.8647050857543945,
- 3.48591947555542,
- 3.0132288932800293,
- 3.9616646766662598,
- 3.820100784301758,
- 3.413975715637207,
- 2.618093252182007,
- 2.34149432182312,
- 3.9287021160125732,
- 1.7373093366622925,
- 4.54353666305542
- ],
- "type": "float32"
- }
- },
- {
- "name": "log float32 positive 4D tensor",
- "inputs": {
- "x": {
- "shape": [2, 2, 2, 3],
- "data":[
- 63.82541897073002,
- 25.31772341801677,
- 96.44790987312221,
- 40.9185632583299,
- 36.57906966041302,
- 57.81629837118902,
- 10.057244454482062,
- 17.836828533595984,
- 50.79246415149721,
- 83.86059370830392,
- 12.065509440949572,
- 22.702478725761654,
- 47.55981402665108,
- 17.543881349985526,
- 32.65243800095941,
- 20.35301082726726,
- 52.54472350026202,
- 45.60880392588138,
- 30.38581309524917,
- 13.70955827062823,
- 10.39676015729949,
- 50.840946828645464,
- 5.682034333775321,
- 94.02275663421658
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 4.15615177154541,
- 3.2315046787261963,
- 4.569003105163574,
- 3.7115838527679443,
- 3.5994763374328613,
- 4.057270526885986,
- 2.308293104171753,
- 2.88126540184021,
- 3.927747964859009,
- 4.4291558265686035,
- 2.4903509616851807,
- 3.122474193572998,
- 3.861988067626953,
- 2.8647050857543945,
- 3.48591947555542,
- 3.0132288932800293,
- 3.9616646766662598,
- 3.820100784301758,
- 3.413975715637207,
- 2.618093252182007,
- 2.34149432182312,
- 3.9287021160125732,
- 1.7373093366622925,
- 4.54353666305542
- ],
- "type": "float32"
- }
- },
- {
- "name": "log float32 positive 5D tensor",
- "inputs": {
- "x": {
- "shape": [2, 1, 4, 1, 3],
- "data":[
- 63.82541897073002,
- 25.31772341801677,
- 96.44790987312221,
- 40.9185632583299,
- 36.57906966041302,
- 57.81629837118902,
- 10.057244454482062,
- 17.836828533595984,
- 50.79246415149721,
- 83.86059370830392,
- 12.065509440949572,
- 22.702478725761654,
- 47.55981402665108,
- 17.543881349985526,
- 32.65243800095941,
- 20.35301082726726,
- 52.54472350026202,
- 45.60880392588138,
- 30.38581309524917,
- 13.70955827062823,
- 10.39676015729949,
- 50.840946828645464,
- 5.682034333775321,
- 94.02275663421658
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 1, 4, 1, 3],
- "data": [
- 4.15615177154541,
- 3.2315046787261963,
- 4.569003105163574,
- 3.7115838527679443,
- 3.5994763374328613,
- 4.057270526885986,
- 2.308293104171753,
- 2.88126540184021,
- 3.927747964859009,
- 4.4291558265686035,
- 2.4903509616851807,
- 3.122474193572998,
- 3.861988067626953,
- 2.8647050857543945,
- 3.48591947555542,
- 3.0132288932800293,
- 3.9616646766662598,
- 3.820100784301758,
- 3.413975715637207,
- 2.618093252182007,
- 2.34149432182312,
- 3.9287021160125732,
- 1.7373093366622925,
- 4.54353666305542
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/logical_not.json b/tests/wpt/tests/webnn/resources/test_data/logical_not.json
deleted file mode 100644
index 3a37652a134..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/logical_not.json
+++ /dev/null
@@ -1,421 +0,0 @@
-{
- "tests": [
- {
- "name": "logicalNot uint8 0D scalar",
- "inputs": {
- "x": {
- "shape": [],
- "data": [
- 1
- ],
- "type": "uint8"
- }
- },
- "expected": {
- "name": "output",
- "shape": [],
- "data": [
- 0
- ],
- "type": "uint8"
- }
- },
- {
- "name": "logicalNot uint8 1D constant tensor",
- "inputs": {
- "x": {
- "shape": [24],
- "data": [
- 204,
- 130,
- 90,
- 0,
- 147,
- 42,
- 10,
- 18,
- 13,
- 235,
- 0,
- 233,
- 53,
- 83,
- 9,
- 254,
- 69,
- 56,
- 219,
- 109,
- 171,
- 0,
- 228,
- 135
- ],
- "type": "uint8",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0
- ],
- "type": "uint8"
- }
- },
- {
- "name": "logicalNot uint8 1D tensor",
- "inputs": {
- "x": {
- "shape": [24],
- "data": [
- 204,
- 130,
- 90,
- 0,
- 147,
- 42,
- 10,
- 18,
- 13,
- 235,
- 0,
- 233,
- 53,
- 83,
- 9,
- 254,
- 69,
- 56,
- 219,
- 109,
- 171,
- 0,
- 228,
- 135
- ],
- "type": "uint8"
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0
- ],
- "type": "uint8"
- }
- },
- {
- "name": "logicalNot uint8 2D tensor",
- "inputs": {
- "x": {
- "shape": [4, 6],
- "data": [
- 204,
- 130,
- 90,
- 0,
- 147,
- 42,
- 10,
- 18,
- 13,
- 235,
- 0,
- 233,
- 53,
- 83,
- 9,
- 254,
- 69,
- 56,
- 219,
- 109,
- 171,
- 0,
- 228,
- 135
- ],
- "type": "uint8"
- }
- },
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0
- ],
- "type": "uint8"
- }
- },
- {
- "name": "logicalNot uint8 3D tensor",
- "inputs": {
- "x": {
- "shape": [2, 3, 4],
- "data": [
- 204,
- 130,
- 90,
- 0,
- 147,
- 42,
- 10,
- 18,
- 13,
- 235,
- 0,
- 233,
- 53,
- 83,
- 9,
- 254,
- 69,
- 56,
- 219,
- 109,
- 171,
- 0,
- 228,
- 135
- ],
- "type": "uint8"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 3, 4],
- "data": [
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0
- ],
- "type": "uint8"
- }
- },
- {
- "name": "logicalNot uint8 4D tensor",
- "inputs": {
- "x": {
- "shape": [2, 2, 2, 3],
- "data": [
- 204,
- 130,
- 90,
- 0,
- 147,
- 42,
- 10,
- 18,
- 13,
- 235,
- 0,
- 233,
- 53,
- 83,
- 9,
- 254,
- 69,
- 56,
- 219,
- 109,
- 171,
- 0,
- 228,
- 135
- ],
- "type": "uint8"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0
- ],
- "type": "uint8"
- }
- },
- {
- "name": "logicalNot uint8 5D tensor",
- "inputs": {
- "x": {
- "shape": [2, 1, 4, 1, 3],
- "data": [
- 204,
- 130,
- 90,
- 0,
- 147,
- 42,
- 10,
- 18,
- 13,
- 235,
- 0,
- 233,
- 53,
- 83,
- 9,
- 254,
- 69,
- 56,
- 219,
- 109,
- 171,
- 0,
- 228,
- 135
- ],
- "type": "uint8"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 1, 4, 1, 3],
- "data": [
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0
- ],
- "type": "uint8"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/matmul.json b/tests/wpt/tests/webnn/resources/test_data/matmul.json
deleted file mode 100644
index cc1789ee25f..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/matmul.json
+++ /dev/null
@@ -1,1055 +0,0 @@
-{
- "tests": [
- {
- "name": "matmul float32 2D and 2D tensors",
- "inputs": {
- "a": {
- "shape": [3, 4],
- "data": [
- 10.43066143431215,
- 24.46751944495327,
- 55.88757596028084,
- 3.241082746029833,
- 87.58891110272717,
- 22.401545251921174,
- 79.85144951531564,
- 99.64449452911536,
- 24.740541547653283,
- 65.96242676599853,
- 38.1360764688486,
- 87.11140260507597
- ],
- "type": "float32"
- },
- "b": {
- "shape": [4, 5],
- "data": [
- 88.17004408170853,
- 78.40126706348094,
- 14.819002753540623,
- 3.692303791736573,
- 45.9064286713635,
- 43.08391896733015,
- 47.19946845924572,
- 60.925216107016425,
- 8.162760351602216,
- 20.33326305093228,
- 20.438397895943282,
- 27.01940859922867,
- 15.601424432184263,
- 87.46969388883927,
- 65.79554455585657,
- 69.31696864490797,
- 31.984439910782992,
- 12.291812891860388,
- 13.304834654547172,
- 85.26705387930089
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [3, 5],
- "data": [
- 3340.7431640625,
- 3586.344482421875,
- 2557.025634765625,
- 5169.8271484375,
- 4929.85009765625,
- 17226.955078125,
- 13269.03515625,
- 5133.4072265625,
- 8816.5986328125,
- 18226.65234375,
- 11841.033203125,
- 8869.705078125,
- 6051.1396484375,
- 5124.5390625,
- 12413.8984375
- ],
- "type": "float32"
- }
- },
- {
- "name": "matmul float32 3D and 3D tensors",
- "inputs": {
- "a": {
- "shape": [2, 3, 4],
- "data": [
- 56.46701250066562,
- 99.86045478237251,
- 71.05493372292567,
- 32.45438455331333,
- 17.310747999630017,
- 2.586275053048559,
- 92.31499166302054,
- 96.9758519231732,
- 26.4721315276526,
- 77.67031776320978,
- 29.278788710989147,
- 82.12142428847062,
- 89.89308471484885,
- 82.49795321217854,
- 64.36866008901963,
- 23.75928513568486,
- 6.67026681065197,
- 81.55583129445503,
- 16.142963270263433,
- 57.45134849716054,
- 26.82641739603182,
- 85.0296980735713,
- 36.198863464757956,
- 89.60960360138286
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 4, 5],
- "data": [
- 70.38780515954635,
- 25.489176068987597,
- 28.25419591483602,
- 84.51486608529449,
- 58.87341530615436,
- 46.252837428713555,
- 24.897335441310766,
- 44.09449366886899,
- 51.865646783698985,
- 1.123237180407144,
- 4.187554708673558,
- 71.24650172124491,
- 16.0345266486708,
- 23.677297120787454,
- 61.277276711169094,
- 65.15946418752658,
- 58.392497125216906,
- 70.12740970610143,
- 9.119727538574839,
- 24.17997835305117,
- 84.42636665997716,
- 78.55551451746716,
- 38.482969428827076,
- 80.65414903244603,
- 57.15212267967695,
- 46.10971199065528,
- 28.41227860070996,
- 90.9256677352717,
- 94.66067935241847,
- 61.772877196686295,
- 60.324859158187635,
- 70.97433442190315,
- 10.631051143172332,
- 55.616284948780525,
- 35.0523090419651,
- 22.128390497020668,
- 38.19757703840079,
- 78.17564687251797,
- 62.57684276680773,
- 88.35256743439288
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 3, 5],
- "data": [
- 11005.6748046875,
- 10883.064453125,
- 9414.0009765625,
- 11929.9931640625,
- 8575.3720703125,
- 8043.556640625,
- 12745.41015625,
- 8884.0341796875,
- 4667.3173828125,
- 9023.7333984375,
- 10929.3818359375,
- 9489.8232421875,
- 10401.216796875,
- 7707.87744140625,
- 5425.5654296875,
- 15802.0888671875,
- 14881.6220703125,
- 13502.23828125,
- 20126.2890625,
- 14589.1806640625,
- 6568.7900390625,
- 6181.41162109375,
- 12335.123046875,
- 12751.05078125,
- 11060.98046875,
- 10352.16015625,
- 10515.310546875,
- 16153.86328125,
- 17833.36328125,
- 15971.80859375
- ],
- "type": "float32"
- }
- },
- {
- "name": "matmul float32 4D and 4D tensors",
- "inputs": {
- "a": {
- "shape": [2, 1, 3, 4],
- "data": [
- 56.46701250066562,
- 99.86045478237251,
- 71.05493372292567,
- 32.45438455331333,
- 17.310747999630017,
- 2.586275053048559,
- 92.31499166302054,
- 96.9758519231732,
- 26.4721315276526,
- 77.67031776320978,
- 29.278788710989147,
- 82.12142428847062,
- 89.89308471484885,
- 82.49795321217854,
- 64.36866008901963,
- 23.75928513568486,
- 6.67026681065197,
- 81.55583129445503,
- 16.142963270263433,
- 57.45134849716054,
- 26.82641739603182,
- 85.0296980735713,
- 36.198863464757956,
- 89.60960360138286
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 1, 4, 5],
- "data": [
- 70.38780515954635,
- 25.489176068987597,
- 28.25419591483602,
- 84.51486608529449,
- 58.87341530615436,
- 46.252837428713555,
- 24.897335441310766,
- 44.09449366886899,
- 51.865646783698985,
- 1.123237180407144,
- 4.187554708673558,
- 71.24650172124491,
- 16.0345266486708,
- 23.677297120787454,
- 61.277276711169094,
- 65.15946418752658,
- 58.392497125216906,
- 70.12740970610143,
- 9.119727538574839,
- 24.17997835305117,
- 84.42636665997716,
- 78.55551451746716,
- 38.482969428827076,
- 80.65414903244603,
- 57.15212267967695,
- 46.10971199065528,
- 28.41227860070996,
- 90.9256677352717,
- 94.66067935241847,
- 61.772877196686295,
- 60.324859158187635,
- 70.97433442190315,
- 10.631051143172332,
- 55.616284948780525,
- 35.0523090419651,
- 22.128390497020668,
- 38.19757703840079,
- 78.17564687251797,
- 62.57684276680773,
- 88.35256743439288
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 1, 3, 5],
- "data": [
- 11005.6748046875,
- 10883.064453125,
- 9414.0009765625,
- 11929.9931640625,
- 8575.3720703125,
- 8043.556640625,
- 12745.41015625,
- 8884.0341796875,
- 4667.3173828125,
- 9023.7333984375,
- 10929.3818359375,
- 9489.8232421875,
- 10401.216796875,
- 7707.87744140625,
- 5425.5654296875,
- 15802.0888671875,
- 14881.6220703125,
- 13502.23828125,
- 20126.2890625,
- 14589.1806640625,
- 6568.7900390625,
- 6181.41162109375,
- 12335.123046875,
- 12751.05078125,
- 11060.98046875,
- 10352.16015625,
- 10515.310546875,
- 16153.86328125,
- 17833.36328125,
- 15971.80859375
- ],
- "type": "float32"
- }
- },
- {
- "name": "matmul float32 3D and 3D (broadcast) tensors",
- "inputs": {
- "a": {
- "shape": [2, 3, 4],
- "data": [
- 56.46701250066562,
- 99.86045478237251,
- 71.05493372292567,
- 32.45438455331333,
- 17.310747999630017,
- 2.586275053048559,
- 92.31499166302054,
- 96.9758519231732,
- 26.4721315276526,
- 77.67031776320978,
- 29.278788710989147,
- 82.12142428847062,
- 89.89308471484885,
- 82.49795321217854,
- 64.36866008901963,
- 23.75928513568486,
- 6.67026681065197,
- 81.55583129445503,
- 16.142963270263433,
- 57.45134849716054,
- 26.82641739603182,
- 85.0296980735713,
- 36.198863464757956,
- 89.60960360138286
- ],
- "type": "float32"
- },
- "b": {
- "shape": [1, 4, 1],
- "data": [
- 27.829805134194842,
- 83.14548502311283,
- 34.4128942110155,
- 83.20379675185079
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 3, 1],
- "data": [
- 15019.9462890625,
- 11942.376953125,
- 15035.0322265625,
- 13553.013671875,
- 12302.328125,
- 16517.9765625
- ],
- "type": "float32"
- }
- },
- {
- "name": "matmul float32 3D and 2D tensors",
- "inputs": {
- "a": {
- "shape": [2, 3, 4],
- "data": [
- 56.46701250066562,
- 99.86045478237251,
- 71.05493372292567,
- 32.45438455331333,
- 17.310747999630017,
- 2.586275053048559,
- 92.31499166302054,
- 96.9758519231732,
- 26.4721315276526,
- 77.67031776320978,
- 29.278788710989147,
- 82.12142428847062,
- 89.89308471484885,
- 82.49795321217854,
- 64.36866008901963,
- 23.75928513568486,
- 6.67026681065197,
- 81.55583129445503,
- 16.142963270263433,
- 57.45134849716054,
- 26.82641739603182,
- 85.0296980735713,
- 36.198863464757956,
- 89.60960360138286
- ],
- "type": "float32"
- },
- "b": {
- "shape": [4, 1],
- "data": [
- 27.829805134194842,
- 83.14548502311283,
- 34.4128942110155,
- 83.20379675185079
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 3, 1],
- "data": [
- 15019.9462890625,
- 11942.376953125,
- 15035.0322265625,
- 13553.013671875,
- 12302.328125,
- 16517.9765625
- ],
- "type": "float32"
- }
- },
- {
- "name": "matmul float32 4D and 4D (broadcast) tensors",
- "inputs": {
- "a": {
- "shape": [2, 2, 3, 4],
- "data": [
- 33.759571073537195,
- 97.24552988493511,
- 83.70851840974835,
- 64.53984433339888,
- 29.579379819004714,
- 17.1992392523348,
- 67.94749248305698,
- 97.45838011362066,
- 54.44928258357935,
- 29.552200144620187,
- 51.99970332220345,
- 36.031014589568585,
- 9.701058359869318,
- 27.048420991685028,
- 6.020919350370768,
- 22.94090320010824,
- 53.12438840861784,
- 15.292234456978937,
- 48.21302721807221,
- 87.40800039569459,
- 51.344420382168174,
- 21.15575571555004,
- 27.58948746939598,
- 58.41238372971891,
- 5.963276160098108,
- 84.74937985741033,
- 55.457381638128126,
- 50.858698377713,
- 23.76357555039641,
- 62.330927022798434,
- 35.77495779930495,
- 17.340241762611043,
- 29.16901397355762,
- 23.19136101699426,
- 27.060928414739994,
- 1.2828527630654118,
- 8.720425533325615,
- 48.4528113654477,
- 99.01303756634434,
- 65.86412386674365,
- 92.69683028841827,
- 85.43540981621389,
- 37.49127872314042,
- 51.39713319355885,
- 53.19015180051876,
- 38.33119168879018,
- 75.20586450347592,
- 3.853793976963038
- ],
- "type": "float32"
- },
- "b": {
- "shape": [1, 1, 4, 5],
- "data": [
- 88.17004408170853,
- 78.40126706348094,
- 14.819002753540623,
- 3.692303791736573,
- 45.9064286713635,
- 43.08391896733015,
- 47.19946845924572,
- 60.925216107016425,
- 8.162760351602216,
- 20.33326305093228,
- 20.438397895943282,
- 27.01940859922867,
- 15.601424432184263,
- 87.46969388883927,
- 65.79554455585657,
- 69.31696864490797,
- 31.984439910782992,
- 12.291812891860388,
- 13.304834654547172,
- 85.26705387930089
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 3, 5],
- "data": [
- 13350.8759765625,
- 11562.755859375,
- 8524.271484375,
- 9099.0927734375,
- 14537.8701171875,
- 11493.283203125,
- 8083.90869140625,
- 3744.22216796875,
- 7489.62353515625,
- 14488.2314453125,
- 9634.3720703125,
- 8221.173828125,
- 3861.51416015625,
- 5470.0556640625,
- 9594.072265625,
- 3733.946533203125,
- 2933.679931640625,
- 2167.611083984375,
- 1088.48193359375,
- 3347.576416015625,
- 12387.083984375,
- 8985.1884765625,
- 3545.52783203125,
- 5701.10595703125,
- 13374.9169921875,
- 10051.3671875,
- 7637.7470703125,
- 3198.221435546875,
- 3552.6796875,
- 9583.1220703125,
- 8835.94921875,
- 7592.7666015625,
- 6742.10400390625,
- 6241.31396484375,
- 9982.404296875,
- 6713.85205078125,
- 6326.3173828125,
- 4920.9609375,
- 3956.46875,
- 6190.67626953125,
- 4213.013671875,
- 4153.708984375,
- 2283.152099609375,
- 2681.085693359375,
- 3700.47509765625,
- 9445.5869140625,
- 7752.5400390625,
- 5435.56005859375,
- 9964.6591796875,
- 13516.18359375,
- 16182.931640625,
- 13956.9560546875,
- 7795.52685546875,
- 5002.8349609375,
- 12841.802734375,
- 8145.45654296875,
- 8134.66650390625,
- 4344.25,
- 7138.79052734375,
- 8497.98046875
- ],
- "type": "float32"
- }
- },
- {
- "name": "matmul float32 4D and 3D tensors",
- "inputs": {
- "a": {
- "shape": [2, 2, 3, 4],
- "data": [
- 33.759571073537195,
- 97.24552988493511,
- 83.70851840974835,
- 64.53984433339888,
- 29.579379819004714,
- 17.1992392523348,
- 67.94749248305698,
- 97.45838011362066,
- 54.44928258357935,
- 29.552200144620187,
- 51.99970332220345,
- 36.031014589568585,
- 9.701058359869318,
- 27.048420991685028,
- 6.020919350370768,
- 22.94090320010824,
- 53.12438840861784,
- 15.292234456978937,
- 48.21302721807221,
- 87.40800039569459,
- 51.344420382168174,
- 21.15575571555004,
- 27.58948746939598,
- 58.41238372971891,
- 5.963276160098108,
- 84.74937985741033,
- 55.457381638128126,
- 50.858698377713,
- 23.76357555039641,
- 62.330927022798434,
- 35.77495779930495,
- 17.340241762611043,
- 29.16901397355762,
- 23.19136101699426,
- 27.060928414739994,
- 1.2828527630654118,
- 8.720425533325615,
- 48.4528113654477,
- 99.01303756634434,
- 65.86412386674365,
- 92.69683028841827,
- 85.43540981621389,
- 37.49127872314042,
- 51.39713319355885,
- 53.19015180051876,
- 38.33119168879018,
- 75.20586450347592,
- 3.853793976963038
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 4, 5],
- "data": [
- 70.38780515954635,
- 25.489176068987597,
- 28.25419591483602,
- 84.51486608529449,
- 58.87341530615436,
- 46.252837428713555,
- 24.897335441310766,
- 44.09449366886899,
- 51.865646783698985,
- 1.123237180407144,
- 4.187554708673558,
- 71.24650172124491,
- 16.0345266486708,
- 23.677297120787454,
- 61.277276711169094,
- 65.15946418752658,
- 58.392497125216906,
- 70.12740970610143,
- 9.119727538574839,
- 24.17997835305117,
- 84.42636665997716,
- 78.55551451746716,
- 38.482969428827076,
- 80.65414903244603,
- 57.15212267967695,
- 46.10971199065528,
- 28.41227860070996,
- 90.9256677352717,
- 94.66067935241847,
- 61.772877196686295,
- 60.324859158187635,
- 70.97433442190315,
- 10.631051143172332,
- 55.616284948780525,
- 35.0523090419651,
- 22.128390497020668,
- 38.19757703840079,
- 78.17564687251797,
- 62.57684276680773,
- 88.35256743439288
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 3, 5],
- "data": [
- 11430.05859375,
- 13014.2392578125,
- 11110.080078125,
- 10467.46484375,
- 8786.7724609375,
- 9512.4111328125,
- 11714.0283203125,
- 9518.1435546875,
- 5889.55419921875,
- 8280.9365234375,
- 7764.95166015625,
- 7932.3759765625,
- 6202.0625,
- 7694.32373046875,
- 7296.4384765625,
- 2937.076416015625,
- 2834.196533203125,
- 4690.14990234375,
- 5113.283203125,
- 4463.22998046875,
- 10032.8623046875,
- 11368.3623046875,
- 10780.572265625,
- 13883.421875,
- 13393.5166015625,
- 8267.212890625,
- 8823.828125,
- 8759.2177734375,
- 11333.4462890625,
- 10369.25390625,
- 7885.7978515625,
- 9182.943359375,
- 8361.2900390625,
- 6676.46533203125,
- 5074.3115234375,
- 5835.33837890625,
- 5718.96875,
- 5209.5322265625,
- 6246.40185546875,
- 4080.533935546875,
- 3322.71826171875,
- 3323.802490234375,
- 2370.630615234375,
- 4320.47900390625,
- 3432.568115234375,
- 10400.7939453125,
- 11604.9267578125,
- 10942.7744140625,
- 14918.220703125,
- 12781.3603515625,
- 15164.451171875,
- 14333.4267578125,
- 15752.0966796875,
- 20865.154296875,
- 16430.63671875,
- 10880.1533203125,
- 10752.34765625,
- 6632.99462890625,
- 12342.2919921875,
- 8384.3896484375
- ],
- "type": "float32"
- }
- },
- {
- "name": "matmul float32 5D and 5D tensors",
- "inputs": {
- "a": {
- "shape": [2, 2, 1, 3, 4],
- "data": [
- 33.759571073537195,
- 97.24552988493511,
- 83.70851840974835,
- 64.53984433339888,
- 29.579379819004714,
- 17.1992392523348,
- 67.94749248305698,
- 97.45838011362066,
- 54.44928258357935,
- 29.552200144620187,
- 51.99970332220345,
- 36.031014589568585,
- 9.701058359869318,
- 27.048420991685028,
- 6.020919350370768,
- 22.94090320010824,
- 53.12438840861784,
- 15.292234456978937,
- 48.21302721807221,
- 87.40800039569459,
- 51.344420382168174,
- 21.15575571555004,
- 27.58948746939598,
- 58.41238372971891,
- 5.963276160098108,
- 84.74937985741033,
- 55.457381638128126,
- 50.858698377713,
- 23.76357555039641,
- 62.330927022798434,
- 35.77495779930495,
- 17.340241762611043,
- 29.16901397355762,
- 23.19136101699426,
- 27.060928414739994,
- 1.2828527630654118,
- 8.720425533325615,
- 48.4528113654477,
- 99.01303756634434,
- 65.86412386674365,
- 92.69683028841827,
- 85.43540981621389,
- 37.49127872314042,
- 51.39713319355885,
- 53.19015180051876,
- 38.33119168879018,
- 75.20586450347592,
- 3.853793976963038
- ],
- "type": "float32"
- },
- "b": {
- "shape": [1, 1, 1, 4, 5],
- "data": [
- 88.17004408170853,
- 78.40126706348094,
- 14.819002753540623,
- 3.692303791736573,
- 45.9064286713635,
- 43.08391896733015,
- 47.19946845924572,
- 60.925216107016425,
- 8.162760351602216,
- 20.33326305093228,
- 20.438397895943282,
- 27.01940859922867,
- 15.601424432184263,
- 87.46969388883927,
- 65.79554455585657,
- 69.31696864490797,
- 31.984439910782992,
- 12.291812891860388,
- 13.304834654547172,
- 85.26705387930089
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 1, 3, 5],
- "data": [
- 13350.8759765625,
- 11562.755859375,
- 8524.271484375,
- 9099.0927734375,
- 14537.8701171875,
- 11493.283203125,
- 8083.90869140625,
- 3744.22216796875,
- 7489.62353515625,
- 14488.2314453125,
- 9634.3720703125,
- 8221.173828125,
- 3861.51416015625,
- 5470.0556640625,
- 9594.072265625,
- 3733.946533203125,
- 2933.679931640625,
- 2167.611083984375,
- 1088.48193359375,
- 3347.576416015625,
- 12387.083984375,
- 8985.1884765625,
- 3545.52783203125,
- 5701.10595703125,
- 13374.9169921875,
- 10051.3671875,
- 7637.7470703125,
- 3198.221435546875,
- 3552.6796875,
- 9583.1220703125,
- 8835.94921875,
- 7592.7666015625,
- 6742.10400390625,
- 6241.31396484375,
- 9982.404296875,
- 6713.85205078125,
- 6326.3173828125,
- 4920.9609375,
- 3956.46875,
- 6190.67626953125,
- 4213.013671875,
- 4153.708984375,
- 2283.152099609375,
- 2681.085693359375,
- 3700.47509765625,
- 9445.5869140625,
- 7752.5400390625,
- 5435.56005859375,
- 9964.6591796875,
- 13516.18359375,
- 16182.931640625,
- 13956.9560546875,
- 7795.52685546875,
- 5002.8349609375,
- 12841.802734375,
- 8145.45654296875,
- 8134.66650390625,
- 4344.25,
- 7138.79052734375,
- 8497.98046875
- ],
- "type": "float32"
- }
- },
- {
- "name": "matmul float32 5D and 2D tensors",
- "inputs": {
- "a": {
- "shape": [2, 2, 1, 3, 4],
- "data": [
- 33.759571073537195,
- 97.24552988493511,
- 83.70851840974835,
- 64.53984433339888,
- 29.579379819004714,
- 17.1992392523348,
- 67.94749248305698,
- 97.45838011362066,
- 54.44928258357935,
- 29.552200144620187,
- 51.99970332220345,
- 36.031014589568585,
- 9.701058359869318,
- 27.048420991685028,
- 6.020919350370768,
- 22.94090320010824,
- 53.12438840861784,
- 15.292234456978937,
- 48.21302721807221,
- 87.40800039569459,
- 51.344420382168174,
- 21.15575571555004,
- 27.58948746939598,
- 58.41238372971891,
- 5.963276160098108,
- 84.74937985741033,
- 55.457381638128126,
- 50.858698377713,
- 23.76357555039641,
- 62.330927022798434,
- 35.77495779930495,
- 17.340241762611043,
- 29.16901397355762,
- 23.19136101699426,
- 27.060928414739994,
- 1.2828527630654118,
- 8.720425533325615,
- 48.4528113654477,
- 99.01303756634434,
- 65.86412386674365,
- 92.69683028841827,
- 85.43540981621389,
- 37.49127872314042,
- 51.39713319355885,
- 53.19015180051876,
- 38.33119168879018,
- 75.20586450347592,
- 3.853793976963038
- ],
- "type": "float32"
- },
- "b": {
- "shape": [4, 5],
- "data": [
- 88.17004408170853,
- 78.40126706348094,
- 14.819002753540623,
- 3.692303791736573,
- 45.9064286713635,
- 43.08391896733015,
- 47.19946845924572,
- 60.925216107016425,
- 8.162760351602216,
- 20.33326305093228,
- 20.438397895943282,
- 27.01940859922867,
- 15.601424432184263,
- 87.46969388883927,
- 65.79554455585657,
- 69.31696864490797,
- 31.984439910782992,
- 12.291812891860388,
- 13.304834654547172,
- 85.26705387930089
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 1, 3, 5],
- "data": [
- 13350.8759765625,
- 11562.755859375,
- 8524.271484375,
- 9099.0927734375,
- 14537.8701171875,
- 11493.283203125,
- 8083.90869140625,
- 3744.22216796875,
- 7489.62353515625,
- 14488.2314453125,
- 9634.3720703125,
- 8221.173828125,
- 3861.51416015625,
- 5470.0556640625,
- 9594.072265625,
- 3733.946533203125,
- 2933.679931640625,
- 2167.611083984375,
- 1088.48193359375,
- 3347.576416015625,
- 12387.083984375,
- 8985.1884765625,
- 3545.52783203125,
- 5701.10595703125,
- 13374.9169921875,
- 10051.3671875,
- 7637.7470703125,
- 3198.221435546875,
- 3552.6796875,
- 9583.1220703125,
- 8835.94921875,
- 7592.7666015625,
- 6742.10400390625,
- 6241.31396484375,
- 9982.404296875,
- 6713.85205078125,
- 6326.3173828125,
- 4920.9609375,
- 3956.46875,
- 6190.67626953125,
- 4213.013671875,
- 4153.708984375,
- 2283.152099609375,
- 2681.085693359375,
- 3700.47509765625,
- 9445.5869140625,
- 7752.5400390625,
- 5435.56005859375,
- 9964.6591796875,
- 13516.18359375,
- 16182.931640625,
- 13956.9560546875,
- 7795.52685546875,
- 5002.8349609375,
- 12841.802734375,
- 8145.45654296875,
- 8134.66650390625,
- 4344.25,
- 7138.79052734375,
- 8497.98046875
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/max.json b/tests/wpt/tests/webnn/resources/test_data/max.json
deleted file mode 100644
index 26285042d04..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/max.json
+++ /dev/null
@@ -1,882 +0,0 @@
-{
- "tests": [
- {
- "name": "max float32 1D constant tensors",
- "inputs": {
- "a": {
- "shape": [24],
- "data": [
- 17.729091355190548,
- 88.14807331138127,
- -12.79482748560001,
- 11.817361453415515,
- 19.513022179766494,
- -62.87843656259127,
- 50.77191512294212,
- -56.91352259821851,
- 50.572543533605796,
- -96.00484496901664,
- 50.21433885008736,
- 20.59501102482639,
- -60.69954854047626,
- -96.84203452345174,
- 57.258868129331574,
- -56.29146148481858,
- 73.7165958518618,
- 21.347652653042374,
- 79.85667318536576,
- -22.91845979108436,
- 1.2300019204149066,
- 65.67965067534072,
- 99.89971317042682,
- -62.321684141101045
- ],
- "type": "float32",
- "constant": true
- },
- "b": {
- "shape": [24],
- "data": [
- -34.504351374665106,
- 85.7347144113418,
- 25.81801706847253,
- -91.37040900746763,
- 87.01370408789617,
- 0.17744044937266779,
- 74.88266681438157,
- -4.169913633773888,
- -73.76497938350255,
- 55.38879910920386,
- -58.69169647961585,
- -67.62333258102981,
- -89.83530842960631,
- -8.275739745367574,
- 97.5957755490123,
- -48.96886862489005,
- 95.34497928951401,
- -97.36359789785926,
- -59.90717913787087,
- 97.15334887926792,
- -40.226924090258805,
- -61.51427015643396,
- 33.36324314194775,
- 12.693191672027254
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- 17.72909164428711,
- 88.1480712890625,
- 25.818017959594727,
- 11.817361831665039,
- 87.01370239257812,
- 0.17744044959545135,
- 74.8826675415039,
- -4.1699137687683105,
- 50.57254409790039,
- 55.388797760009766,
- 50.21434020996094,
- 20.59501075744629,
- -60.699546813964844,
- -8.275739669799805,
- 97.59577178955078,
- -48.968868255615234,
- 95.34497833251953,
- 21.347652435302734,
- 79.85667419433594,
- 97.15335083007812,
- 1.2300019264221191,
- 65.67964935302734,
- 99.89971160888672,
- 12.693191528320312
- ],
- "type": "float32"
- }
- },
- {
- "name": "max float32 1D tensors",
- "inputs": {
- "a": {
- "shape": [24],
- "data": [
- 17.729091355190548,
- 88.14807331138127,
- -12.79482748560001,
- 11.817361453415515,
- 19.513022179766494,
- -62.87843656259127,
- 50.77191512294212,
- -56.91352259821851,
- 50.572543533605796,
- -96.00484496901664,
- 50.21433885008736,
- 20.59501102482639,
- -60.69954854047626,
- -96.84203452345174,
- 57.258868129331574,
- -56.29146148481858,
- 73.7165958518618,
- 21.347652653042374,
- 79.85667318536576,
- -22.91845979108436,
- 1.2300019204149066,
- 65.67965067534072,
- 99.89971317042682,
- -62.321684141101045
- ],
- "type": "float32"
- },
- "b": {
- "shape": [24],
- "data": [
- -34.504351374665106,
- 85.7347144113418,
- 25.81801706847253,
- -91.37040900746763,
- 87.01370408789617,
- 0.17744044937266779,
- 74.88266681438157,
- -4.169913633773888,
- -73.76497938350255,
- 55.38879910920386,
- -58.69169647961585,
- -67.62333258102981,
- -89.83530842960631,
- -8.275739745367574,
- 97.5957755490123,
- -48.96886862489005,
- 95.34497928951401,
- -97.36359789785926,
- -59.90717913787087,
- 97.15334887926792,
- -40.226924090258805,
- -61.51427015643396,
- 33.36324314194775,
- 12.693191672027254
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- 17.72909164428711,
- 88.1480712890625,
- 25.818017959594727,
- 11.817361831665039,
- 87.01370239257812,
- 0.17744044959545135,
- 74.8826675415039,
- -4.1699137687683105,
- 50.57254409790039,
- 55.388797760009766,
- 50.21434020996094,
- 20.59501075744629,
- -60.699546813964844,
- -8.275739669799805,
- 97.59577178955078,
- -48.968868255615234,
- 95.34497833251953,
- 21.347652435302734,
- 79.85667419433594,
- 97.15335083007812,
- 1.2300019264221191,
- 65.67964935302734,
- 99.89971160888672,
- 12.693191528320312
- ],
- "type": "float32"
- }
- },
- {
- "name": "max float32 2D tensors",
- "inputs": {
- "a": {
- "shape": [4, 6],
- "data": [
- 17.729091355190548,
- 88.14807331138127,
- -12.79482748560001,
- 11.817361453415515,
- 19.513022179766494,
- -62.87843656259127,
- 50.77191512294212,
- -56.91352259821851,
- 50.572543533605796,
- -96.00484496901664,
- 50.21433885008736,
- 20.59501102482639,
- -60.69954854047626,
- -96.84203452345174,
- 57.258868129331574,
- -56.29146148481858,
- 73.7165958518618,
- 21.347652653042374,
- 79.85667318536576,
- -22.91845979108436,
- 1.2300019204149066,
- 65.67965067534072,
- 99.89971317042682,
- -62.321684141101045
- ],
- "type": "float32"
- },
- "b": {
- "shape": [4, 6],
- "data": [
- -34.504351374665106,
- 85.7347144113418,
- 25.81801706847253,
- -91.37040900746763,
- 87.01370408789617,
- 0.17744044937266779,
- 74.88266681438157,
- -4.169913633773888,
- -73.76497938350255,
- 55.38879910920386,
- -58.69169647961585,
- -67.62333258102981,
- -89.83530842960631,
- -8.275739745367574,
- 97.5957755490123,
- -48.96886862489005,
- 95.34497928951401,
- -97.36359789785926,
- -59.90717913787087,
- 97.15334887926792,
- -40.226924090258805,
- -61.51427015643396,
- 33.36324314194775,
- 12.693191672027254
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- 17.72909164428711,
- 88.1480712890625,
- 25.818017959594727,
- 11.817361831665039,
- 87.01370239257812,
- 0.17744044959545135,
- 74.8826675415039,
- -4.1699137687683105,
- 50.57254409790039,
- 55.388797760009766,
- 50.21434020996094,
- 20.59501075744629,
- -60.699546813964844,
- -8.275739669799805,
- 97.59577178955078,
- -48.968868255615234,
- 95.34497833251953,
- 21.347652435302734,
- 79.85667419433594,
- 97.15335083007812,
- 1.2300019264221191,
- 65.67964935302734,
- 99.89971160888672,
- 12.693191528320312
- ],
- "type": "float32"
- }
- },
- {
- "name": "max float32 3D tensors",
- "inputs": {
- "a": {
- "shape": [2, 3, 4],
- "data": [
- 17.729091355190548,
- 88.14807331138127,
- -12.79482748560001,
- 11.817361453415515,
- 19.513022179766494,
- -62.87843656259127,
- 50.77191512294212,
- -56.91352259821851,
- 50.572543533605796,
- -96.00484496901664,
- 50.21433885008736,
- 20.59501102482639,
- -60.69954854047626,
- -96.84203452345174,
- 57.258868129331574,
- -56.29146148481858,
- 73.7165958518618,
- 21.347652653042374,
- 79.85667318536576,
- -22.91845979108436,
- 1.2300019204149066,
- 65.67965067534072,
- 99.89971317042682,
- -62.321684141101045
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 3, 4],
- "data": [
- -34.504351374665106,
- 85.7347144113418,
- 25.81801706847253,
- -91.37040900746763,
- 87.01370408789617,
- 0.17744044937266779,
- 74.88266681438157,
- -4.169913633773888,
- -73.76497938350255,
- 55.38879910920386,
- -58.69169647961585,
- -67.62333258102981,
- -89.83530842960631,
- -8.275739745367574,
- 97.5957755490123,
- -48.96886862489005,
- 95.34497928951401,
- -97.36359789785926,
- -59.90717913787087,
- 97.15334887926792,
- -40.226924090258805,
- -61.51427015643396,
- 33.36324314194775,
- 12.693191672027254
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 3, 4],
- "data": [
- 17.72909164428711,
- 88.1480712890625,
- 25.818017959594727,
- 11.817361831665039,
- 87.01370239257812,
- 0.17744044959545135,
- 74.8826675415039,
- -4.1699137687683105,
- 50.57254409790039,
- 55.388797760009766,
- 50.21434020996094,
- 20.59501075744629,
- -60.699546813964844,
- -8.275739669799805,
- 97.59577178955078,
- -48.968868255615234,
- 95.34497833251953,
- 21.347652435302734,
- 79.85667419433594,
- 97.15335083007812,
- 1.2300019264221191,
- 65.67964935302734,
- 99.89971160888672,
- 12.693191528320312
- ],
- "type": "float32"
- }
- },
- {
- "name": "max float32 4D tensors",
- "inputs": {
- "a": {
- "shape": [2, 2, 2, 3],
- "data": [
- 17.729091355190548,
- 88.14807331138127,
- -12.79482748560001,
- 11.817361453415515,
- 19.513022179766494,
- -62.87843656259127,
- 50.77191512294212,
- -56.91352259821851,
- 50.572543533605796,
- -96.00484496901664,
- 50.21433885008736,
- 20.59501102482639,
- -60.69954854047626,
- -96.84203452345174,
- 57.258868129331574,
- -56.29146148481858,
- 73.7165958518618,
- 21.347652653042374,
- 79.85667318536576,
- -22.91845979108436,
- 1.2300019204149066,
- 65.67965067534072,
- 99.89971317042682,
- -62.321684141101045
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 2, 3],
- "data": [
- -34.504351374665106,
- 85.7347144113418,
- 25.81801706847253,
- -91.37040900746763,
- 87.01370408789617,
- 0.17744044937266779,
- 74.88266681438157,
- -4.169913633773888,
- -73.76497938350255,
- 55.38879910920386,
- -58.69169647961585,
- -67.62333258102981,
- -89.83530842960631,
- -8.275739745367574,
- 97.5957755490123,
- -48.96886862489005,
- 95.34497928951401,
- -97.36359789785926,
- -59.90717913787087,
- 97.15334887926792,
- -40.226924090258805,
- -61.51427015643396,
- 33.36324314194775,
- 12.693191672027254
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 17.72909164428711,
- 88.1480712890625,
- 25.818017959594727,
- 11.817361831665039,
- 87.01370239257812,
- 0.17744044959545135,
- 74.8826675415039,
- -4.1699137687683105,
- 50.57254409790039,
- 55.388797760009766,
- 50.21434020996094,
- 20.59501075744629,
- -60.699546813964844,
- -8.275739669799805,
- 97.59577178955078,
- -48.968868255615234,
- 95.34497833251953,
- 21.347652435302734,
- 79.85667419433594,
- 97.15335083007812,
- 1.2300019264221191,
- 65.67964935302734,
- 99.89971160888672,
- 12.693191528320312
- ],
- "type": "float32"
- }
- },
- {
- "name": "max float32 5D tensors",
- "inputs": {
- "a": {
- "shape": [2, 2, 1, 2, 3],
- "data": [
- 17.729091355190548,
- 88.14807331138127,
- -12.79482748560001,
- 11.817361453415515,
- 19.513022179766494,
- -62.87843656259127,
- 50.77191512294212,
- -56.91352259821851,
- 50.572543533605796,
- -96.00484496901664,
- 50.21433885008736,
- 20.59501102482639,
- -60.69954854047626,
- -96.84203452345174,
- 57.258868129331574,
- -56.29146148481858,
- 73.7165958518618,
- 21.347652653042374,
- 79.85667318536576,
- -22.91845979108436,
- 1.2300019204149066,
- 65.67965067534072,
- 99.89971317042682,
- -62.321684141101045
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 1, 2, 3],
- "data": [
- -34.504351374665106,
- 85.7347144113418,
- 25.81801706847253,
- -91.37040900746763,
- 87.01370408789617,
- 0.17744044937266779,
- 74.88266681438157,
- -4.169913633773888,
- -73.76497938350255,
- 55.38879910920386,
- -58.69169647961585,
- -67.62333258102981,
- -89.83530842960631,
- -8.275739745367574,
- 97.5957755490123,
- -48.96886862489005,
- 95.34497928951401,
- -97.36359789785926,
- -59.90717913787087,
- 97.15334887926792,
- -40.226924090258805,
- -61.51427015643396,
- 33.36324314194775,
- 12.693191672027254
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 1, 2, 3],
- "data": [
- 17.72909164428711,
- 88.1480712890625,
- 25.818017959594727,
- 11.817361831665039,
- 87.01370239257812,
- 0.17744044959545135,
- 74.8826675415039,
- -4.1699137687683105,
- 50.57254409790039,
- 55.388797760009766,
- 50.21434020996094,
- 20.59501075744629,
- -60.699546813964844,
- -8.275739669799805,
- 97.59577178955078,
- -48.968868255615234,
- 95.34497833251953,
- 21.347652435302734,
- 79.85667419433594,
- 97.15335083007812,
- 1.2300019264221191,
- 65.67964935302734,
- 99.89971160888672,
- 12.693191528320312
- ],
- "type": "float32"
- }
- },
- {
- "name": "max float32 broadcast 1D to 4D",
- "inputs": {
- "a": {
- "shape": [1],
- "data": [
- 48.261154377933934
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 2, 3],
- "data": [
- 17.729091355190548,
- 88.14807331138127,
- -12.79482748560001,
- 11.817361453415515,
- 19.513022179766494,
- -62.87843656259127,
- 50.77191512294212,
- -56.91352259821851,
- 50.572543533605796,
- -96.00484496901664,
- 50.21433885008736,
- 20.59501102482639,
- -60.69954854047626,
- -96.84203452345174,
- 57.258868129331574,
- -56.29146148481858,
- 73.7165958518618,
- 21.347652653042374,
- 79.85667318536576,
- -22.91845979108436,
- 1.2300019204149066,
- 65.67965067534072,
- 99.89971317042682,
- -62.321684141101045
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 48.26115417480469,
- 88.1480712890625,
- 48.26115417480469,
- 48.26115417480469,
- 48.26115417480469,
- 48.26115417480469,
- 50.771915435791016,
- 48.26115417480469,
- 50.57254409790039,
- 48.26115417480469,
- 50.21434020996094,
- 48.26115417480469,
- 48.26115417480469,
- 48.26115417480469,
- 57.25886917114258,
- 48.26115417480469,
- 73.71659851074219,
- 48.26115417480469,
- 79.85667419433594,
- 48.26115417480469,
- 48.26115417480469,
- 65.67964935302734,
- 99.89971160888672,
- 48.26115417480469
- ],
- "type": "float32"
- }
- },
- {
- "name": "max float32 broadcast 2D to 4D",
- "inputs": {
- "a": {
- "shape": [2, 2, 2, 3],
- "data": [
- 17.729091355190548,
- 88.14807331138127,
- -12.79482748560001,
- 11.817361453415515,
- 19.513022179766494,
- -62.87843656259127,
- 50.77191512294212,
- -56.91352259821851,
- 50.572543533605796,
- -96.00484496901664,
- 50.21433885008736,
- 20.59501102482639,
- -60.69954854047626,
- -96.84203452345174,
- 57.258868129331574,
- -56.29146148481858,
- 73.7165958518618,
- 21.347652653042374,
- 79.85667318536576,
- -22.91845979108436,
- 1.2300019204149066,
- 65.67965067534072,
- 99.89971317042682,
- -62.321684141101045
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 3],
- "data": [
- 49.523128811715225,
- -61.55576225687129,
- -6.564808468730291,
- 93.32226979251419,
- 3.3104185798987515,
- -98.31839935789897
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 49.523128509521484,
- 88.1480712890625,
- -6.564808368682861,
- 93.32227325439453,
- 19.51302146911621,
- -62.87843704223633,
- 50.771915435791016,
- -56.91352081298828,
- 50.57254409790039,
- 93.32227325439453,
- 50.21434020996094,
- 20.59501075744629,
- 49.523128509521484,
- -61.555763244628906,
- 57.25886917114258,
- 93.32227325439453,
- 73.71659851074219,
- 21.347652435302734,
- 79.85667419433594,
- -22.918458938598633,
- 1.2300019264221191,
- 93.32227325439453,
- 99.89971160888672,
- -62.321685791015625
- ],
- "type": "float32"
- }
- },
- {
- "name": "max float32 broadcast 3D to 4D",
- "inputs": {
- "a": {
- "shape": [2, 2, 2, 3],
- "data": [
- 17.729091355190548,
- 88.14807331138127,
- -12.79482748560001,
- 11.817361453415515,
- 19.513022179766494,
- -62.87843656259127,
- 50.77191512294212,
- -56.91352259821851,
- 50.572543533605796,
- -96.00484496901664,
- 50.21433885008736,
- 20.59501102482639,
- -60.69954854047626,
- -96.84203452345174,
- 57.258868129331574,
- -56.29146148481858,
- 73.7165958518618,
- 21.347652653042374,
- 79.85667318536576,
- -22.91845979108436,
- 1.2300019204149066,
- 65.67965067534072,
- 99.89971317042682,
- -62.321684141101045
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 1],
- "data": [
- 39.32178507655172,
- 44.523740611524744,
- 58.046287381834105,
- 84.13702482473266
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 39.32178497314453,
- 88.1480712890625,
- 39.32178497314453,
- 44.523738861083984,
- 44.523738861083984,
- 44.523738861083984,
- 58.046287536621094,
- 58.046287536621094,
- 58.046287536621094,
- 84.13702392578125,
- 84.13702392578125,
- 84.13702392578125,
- 39.32178497314453,
- 39.32178497314453,
- 57.25886917114258,
- 44.523738861083984,
- 73.71659851074219,
- 44.523738861083984,
- 79.85667419433594,
- 58.046287536621094,
- 58.046287536621094,
- 84.13702392578125,
- 99.89971160888672,
- 84.13702392578125
- ],
- "type": "float32"
- }
- },
- {
- "name": "max float32 broadcast 4D to 4D",
- "inputs": {
- "a": {
- "shape": [1, 1, 1, 1],
- "data": [
- 48.261154377933934
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 2, 3],
- "data": [
- 17.729091355190548,
- 88.14807331138127,
- -12.79482748560001,
- 11.817361453415515,
- 19.513022179766494,
- -62.87843656259127,
- 50.77191512294212,
- -56.91352259821851,
- 50.572543533605796,
- -96.00484496901664,
- 50.21433885008736,
- 20.59501102482639,
- -60.69954854047626,
- -96.84203452345174,
- 57.258868129331574,
- -56.29146148481858,
- 73.7165958518618,
- 21.347652653042374,
- 79.85667318536576,
- -22.91845979108436,
- 1.2300019204149066,
- 65.67965067534072,
- 99.89971317042682,
- -62.321684141101045
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 48.26115417480469,
- 88.1480712890625,
- 48.26115417480469,
- 48.26115417480469,
- 48.26115417480469,
- 48.26115417480469,
- 50.771915435791016,
- 48.26115417480469,
- 50.57254409790039,
- 48.26115417480469,
- 50.21434020996094,
- 48.26115417480469,
- 48.26115417480469,
- 48.26115417480469,
- 57.25886917114258,
- 48.26115417480469,
- 73.71659851074219,
- 48.26115417480469,
- 79.85667419433594,
- 48.26115417480469,
- 48.26115417480469,
- 65.67964935302734,
- 99.89971160888672,
- 48.26115417480469
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/max_pool2d.json b/tests/wpt/tests/webnn/resources/test_data/max_pool2d.json
deleted file mode 100644
index 216b4c55ddb..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/max_pool2d.json
+++ /dev/null
@@ -1,1104 +0,0 @@
-{
- "tests": [
- {
- "name": "maxPool2d float32 4D constant tensor default options",
- "inputs": {
- "input": {
- "shape": [1, 2, 5, 5],
- "data": [
- 89.00830216793153,
- -45.720390400208274,
- -61.3061304134967,
- -4.014514560596496,
- -94.54893342858352,
- 46.28090328619564,
- 99.28312923953135,
- -10.057873368956962,
- 9.742474583994337,
- -39.03501766575275,
- 75.08192382950091,
- 12.819415189421207,
- -33.01505690327188,
- 38.691340789603316,
- 66.09259104681504,
- 97.903480409299,
- -8.737769993284147,
- -53.4216238072017,
- 72.10852084777076,
- -40.42309116918719,
- -35.68864442661396,
- -87.64779401381033,
- 38.87424286093716,
- 39.38360329656629,
- 7.429088108317444,
- -76.72171237621149,
- 50.21706410294061,
- -52.89547724835329,
- -44.64233565670091,
- -97.86752535352848,
- 81.73119248706783,
- 5.428491238061412,
- -29.227728678237995,
- 72.44899280781078,
- -59.34124718116585,
- 39.19959912145927,
- -65.99438957588619,
- -4.204323589500888,
- -60.5458643662661,
- 55.89052583821697,
- 80.30483906634527,
- 72.88830243502153,
- -46.59610987974246,
- 20.503878887964206,
- -31.126462826158445,
- -57.29456052682171,
- -26.62357805164706,
- 15.93575469730375,
- -78.77953474824318,
- 72.33577555559427
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 1, 1],
- "data": [
- 99.28312683105469,
- 81.73119354248047
- ],
- "type": "float32"
- }
- },
- {
- "name": "maxPool2d float32 4D tensor default options",
- "inputs": {
- "input": {
- "shape": [1, 2, 5, 5],
- "data": [
- 89.00830216793153,
- -45.720390400208274,
- -61.3061304134967,
- -4.014514560596496,
- -94.54893342858352,
- 46.28090328619564,
- 99.28312923953135,
- -10.057873368956962,
- 9.742474583994337,
- -39.03501766575275,
- 75.08192382950091,
- 12.819415189421207,
- -33.01505690327188,
- 38.691340789603316,
- 66.09259104681504,
- 97.903480409299,
- -8.737769993284147,
- -53.4216238072017,
- 72.10852084777076,
- -40.42309116918719,
- -35.68864442661396,
- -87.64779401381033,
- 38.87424286093716,
- 39.38360329656629,
- 7.429088108317444,
- -76.72171237621149,
- 50.21706410294061,
- -52.89547724835329,
- -44.64233565670091,
- -97.86752535352848,
- 81.73119248706783,
- 5.428491238061412,
- -29.227728678237995,
- 72.44899280781078,
- -59.34124718116585,
- 39.19959912145927,
- -65.99438957588619,
- -4.204323589500888,
- -60.5458643662661,
- 55.89052583821697,
- 80.30483906634527,
- 72.88830243502153,
- -46.59610987974246,
- 20.503878887964206,
- -31.126462826158445,
- -57.29456052682171,
- -26.62357805164706,
- 15.93575469730375,
- -78.77953474824318,
- 72.33577555559427
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 1, 1],
- "data": [
- 99.28312683105469,
- 81.73119354248047
- ],
- "type": "float32"
- }
- },
- {
- "name": "maxPool2d float32 4D tensor options.windowDimensions",
- "inputs":{
- "input": {
- "shape": [1, 2, 5, 5],
- "data": [
- 89.00830216793153,
- -45.720390400208274,
- -61.3061304134967,
- -4.014514560596496,
- -94.54893342858352,
- 46.28090328619564,
- 99.28312923953135,
- -10.057873368956962,
- 9.742474583994337,
- -39.03501766575275,
- 75.08192382950091,
- 12.819415189421207,
- -33.01505690327188,
- 38.691340789603316,
- 66.09259104681504,
- 97.903480409299,
- -8.737769993284147,
- -53.4216238072017,
- 72.10852084777076,
- -40.42309116918719,
- -35.68864442661396,
- -87.64779401381033,
- 38.87424286093716,
- 39.38360329656629,
- 7.429088108317444,
- -76.72171237621149,
- 50.21706410294061,
- -52.89547724835329,
- -44.64233565670091,
- -97.86752535352848,
- 81.73119248706783,
- 5.428491238061412,
- -29.227728678237995,
- 72.44899280781078,
- -59.34124718116585,
- 39.19959912145927,
- -65.99438957588619,
- -4.204323589500888,
- -60.5458643662661,
- 55.89052583821697,
- 80.30483906634527,
- 72.88830243502153,
- -46.59610987974246,
- 20.503878887964206,
- -31.126462826158445,
- -57.29456052682171,
- -26.62357805164706,
- 15.93575469730375,
- -78.77953474824318,
- 72.33577555559427
- ],
- "type": "float32"
- }
- },
- "options": {
- "windowDimensions": [3, 3]
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 3, 3],
- "data": [
- 99.28312683105469,
- 99.28312683105469,
- 66.09259033203125,
- 99.28312683105469,
- 99.28312683105469,
- 72.1085205078125,
- 97.90348052978516,
- 72.1085205078125,
- 72.1085205078125,
- 81.73119354248047,
- 72.44898986816406,
- 72.44898986816406,
- 81.73119354248047,
- 72.8883056640625,
- 72.44898986816406,
- 80.30484008789062,
- 72.8883056640625,
- 72.33577728271484
- ],
- "type": "float32"
- }
- },
- {
- "name": "maxPool2d float32 4D tensor options.padding",
- "inputs": {
- "input": {
- "shape": [1, 2, 5, 5],
- "data": [
- 89.00830216793153,
- -45.720390400208274,
- -61.3061304134967,
- -4.014514560596496,
- -94.54893342858352,
- 46.28090328619564,
- 99.28312923953135,
- -10.057873368956962,
- 9.742474583994337,
- -39.03501766575275,
- 75.08192382950091,
- 12.819415189421207,
- -33.01505690327188,
- 38.691340789603316,
- 66.09259104681504,
- 97.903480409299,
- -8.737769993284147,
- -53.4216238072017,
- 72.10852084777076,
- -40.42309116918719,
- -35.68864442661396,
- -87.64779401381033,
- 38.87424286093716,
- 39.38360329656629,
- 7.429088108317444,
- -76.72171237621149,
- 50.21706410294061,
- -52.89547724835329,
- -44.64233565670091,
- -97.86752535352848,
- 81.73119248706783,
- 5.428491238061412,
- -29.227728678237995,
- 72.44899280781078,
- -59.34124718116585,
- 39.19959912145927,
- -65.99438957588619,
- -4.204323589500888,
- -60.5458643662661,
- 55.89052583821697,
- 80.30483906634527,
- 72.88830243502153,
- -46.59610987974246,
- 20.503878887964206,
- -31.126462826158445,
- -57.29456052682171,
- -26.62357805164706,
- 15.93575469730375,
- -78.77953474824318,
- 72.33577555559427
- ],
- "type": "float32"
- }
- },
- "options": {
- "padding": [1, 0, 0, 1]
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 2, 2],
- "data": [
- 99.28312683105469,
- 99.28312683105469,
- 99.28312683105469,
- 99.28312683105469,
- 81.73119354248047,
- 72.8883056640625,
- 81.73119354248047,
- 72.8883056640625
- ],
- "type": "float32"
- }
- },
- {
- "name": "maxPool2d float32 4D tensor options.strides",
- "inputs": {
- "input": {
- "shape": [1, 2, 5, 5],
- "data": [
- 89.00830216793153,
- -45.720390400208274,
- -61.3061304134967,
- -4.014514560596496,
- -94.54893342858352,
- 46.28090328619564,
- 99.28312923953135,
- -10.057873368956962,
- 9.742474583994337,
- -39.03501766575275,
- 75.08192382950091,
- 12.819415189421207,
- -33.01505690327188,
- 38.691340789603316,
- 66.09259104681504,
- 97.903480409299,
- -8.737769993284147,
- -53.4216238072017,
- 72.10852084777076,
- -40.42309116918719,
- -35.68864442661396,
- -87.64779401381033,
- 38.87424286093716,
- 39.38360329656629,
- 7.429088108317444,
- -76.72171237621149,
- 50.21706410294061,
- -52.89547724835329,
- -44.64233565670091,
- -97.86752535352848,
- 81.73119248706783,
- 5.428491238061412,
- -29.227728678237995,
- 72.44899280781078,
- -59.34124718116585,
- 39.19959912145927,
- -65.99438957588619,
- -4.204323589500888,
- -60.5458643662661,
- 55.89052583821697,
- 80.30483906634527,
- 72.88830243502153,
- -46.59610987974246,
- 20.503878887964206,
- -31.126462826158445,
- -57.29456052682171,
- -26.62357805164706,
- 15.93575469730375,
- -78.77953474824318,
- 72.33577555559427
- ],
- "type": "float32"
- }
- },
- "options": {
- "windowDimensions": [3, 3],
- "strides": [2, 2]
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 2, 2],
- "data": [
- 99.28312683105469,
- 66.09259033203125,
- 97.90348052978516,
- 72.1085205078125,
- 81.73119354248047,
- 72.44898986816406,
- 80.30484008789062,
- 72.33577728271484
- ],
- "type": "float32"
- }
- },
- {
- "name": "maxPool2d float32 4D tensor options.dilations",
- "inputs": {
- "input": {
- "shape": [1, 2, 5, 5],
- "data": [
- 89.00830216793153,
- -45.720390400208274,
- -61.3061304134967,
- -4.014514560596496,
- -94.54893342858352,
- 46.28090328619564,
- 99.28312923953135,
- -10.057873368956962,
- 9.742474583994337,
- -39.03501766575275,
- 75.08192382950091,
- 12.819415189421207,
- -33.01505690327188,
- 38.691340789603316,
- 66.09259104681504,
- 97.903480409299,
- -8.737769993284147,
- -53.4216238072017,
- 72.10852084777076,
- -40.42309116918719,
- -35.68864442661396,
- -87.64779401381033,
- 38.87424286093716,
- 39.38360329656629,
- 7.429088108317444,
- -76.72171237621149,
- 50.21706410294061,
- -52.89547724835329,
- -44.64233565670091,
- -97.86752535352848,
- 81.73119248706783,
- 5.428491238061412,
- -29.227728678237995,
- 72.44899280781078,
- -59.34124718116585,
- 39.19959912145927,
- -65.99438957588619,
- -4.204323589500888,
- -60.5458643662661,
- 55.89052583821697,
- 80.30483906634527,
- 72.88830243502153,
- -46.59610987974246,
- 20.503878887964206,
- -31.126462826158445,
- -57.29456052682171,
- -26.62357805164706,
- 15.93575469730375,
- -78.77953474824318,
- 72.33577555559427
- ],
- "type": "float32"
- }
- },
- "options": {
- "windowDimensions": [3, 3],
- "dilations": [2, 2]
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 1, 1],
- "data": [
- 89.00830078125,
- 72.33577728271484
- ],
- "type": "float32"
- }
- },
- {
- "name": "maxPool2d float32 4D tensor options.layout=nchw",
- "inputs": {
- "input": {
- "shape": [1, 2, 5, 5],
- "data": [
- 89.00830216793153,
- -45.720390400208274,
- -61.3061304134967,
- -4.014514560596496,
- -94.54893342858352,
- 46.28090328619564,
- 99.28312923953135,
- -10.057873368956962,
- 9.742474583994337,
- -39.03501766575275,
- 75.08192382950091,
- 12.819415189421207,
- -33.01505690327188,
- 38.691340789603316,
- 66.09259104681504,
- 97.903480409299,
- -8.737769993284147,
- -53.4216238072017,
- 72.10852084777076,
- -40.42309116918719,
- -35.68864442661396,
- -87.64779401381033,
- 38.87424286093716,
- 39.38360329656629,
- 7.429088108317444,
- -76.72171237621149,
- 50.21706410294061,
- -52.89547724835329,
- -44.64233565670091,
- -97.86752535352848,
- 81.73119248706783,
- 5.428491238061412,
- -29.227728678237995,
- 72.44899280781078,
- -59.34124718116585,
- 39.19959912145927,
- -65.99438957588619,
- -4.204323589500888,
- -60.5458643662661,
- 55.89052583821697,
- 80.30483906634527,
- 72.88830243502153,
- -46.59610987974246,
- 20.503878887964206,
- -31.126462826158445,
- -57.29456052682171,
- -26.62357805164706,
- 15.93575469730375,
- -78.77953474824318,
- 72.33577555559427
- ],
- "type": "float32"
- }
- },
- "options": {
- "layout": "nchw"
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 1, 1],
- "data": [
- 99.28312683105469,
- 81.73119354248047
- ],
- "type": "float32"
- }
- },
- {
- "name": "maxPool2d float32 4D tensor options.layout=nhwc",
- "inputs": {
- "input": {
- "shape": [1, 5, 5, 2],
- "data": [
- 89.00830216793153,
- -76.72171237621149,
- -45.720390400208274,
- 50.21706410294061,
- -61.3061304134967,
- -52.89547724835329,
- -4.014514560596496,
- -44.64233565670091,
- -94.54893342858352,
- -97.86752535352848,
- 46.28090328619564,
- 81.73119248706783,
- 99.28312923953135,
- 5.428491238061412,
- -10.057873368956962,
- -29.227728678237995,
- 9.742474583994337,
- 72.44899280781078,
- -39.03501766575275,
- -59.34124718116585,
- 75.08192382950091,
- 39.19959912145927,
- 12.819415189421207,
- -65.99438957588619,
- -33.01505690327188,
- -4.204323589500888,
- 38.691340789603316,
- -60.5458643662661,
- 66.09259104681504,
- 55.89052583821697,
- 97.903480409299,
- 80.30483906634527,
- -8.737769993284147,
- 72.88830243502153,
- -53.4216238072017,
- -46.59610987974246,
- 72.10852084777076,
- 20.503878887964206,
- -40.42309116918719,
- -31.126462826158445,
- -35.68864442661396,
- -57.29456052682171,
- -87.64779401381033,
- -26.62357805164706,
- 38.87424286093716,
- 15.93575469730375,
- 39.38360329656629,
- -78.77953474824318,
- 7.429088108317444,
- 72.33577555559427
- ],
- "type": "float32"
- }
- },
- "options": {
- "layout": "nhwc"
- },
- "expected": {
- "name": "output",
- "shape": [1, 1, 1, 2],
- "data": [
- 99.28312683105469,
- 81.73119354248047
- ],
- "type": "float32"
- }
- },
- {
- "name": "maxPool2d float32 4D tensor options.roundingType=floor",
- "inputs": {
- "input": {
- "shape": [1, 2, 5, 5],
- "data": [
- 89.00830216793153,
- -45.720390400208274,
- -61.3061304134967,
- -4.014514560596496,
- -94.54893342858352,
- 46.28090328619564,
- 99.28312923953135,
- -10.057873368956962,
- 9.742474583994337,
- -39.03501766575275,
- 75.08192382950091,
- 12.819415189421207,
- -33.01505690327188,
- 38.691340789603316,
- 66.09259104681504,
- 97.903480409299,
- -8.737769993284147,
- -53.4216238072017,
- 72.10852084777076,
- -40.42309116918719,
- -35.68864442661396,
- -87.64779401381033,
- 38.87424286093716,
- 39.38360329656629,
- 7.429088108317444,
- -76.72171237621149,
- 50.21706410294061,
- -52.89547724835329,
- -44.64233565670091,
- -97.86752535352848,
- 81.73119248706783,
- 5.428491238061412,
- -29.227728678237995,
- 72.44899280781078,
- -59.34124718116585,
- 39.19959912145927,
- -65.99438957588619,
- -4.204323589500888,
- -60.5458643662661,
- 55.89052583821697,
- 80.30483906634527,
- 72.88830243502153,
- -46.59610987974246,
- 20.503878887964206,
- -31.126462826158445,
- -57.29456052682171,
- -26.62357805164706,
- 15.93575469730375,
- -78.77953474824318,
- 72.33577555559427
- ],
- "type": "float32"
- }
- },
- "options": {
- "windowDimensions": [3, 3],
- "padding": [1, 0, 0, 1],
- "strides": [2, 2],
- "roundingType": "floor"
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 2, 2],
- "data": [
- 99.28312683105469,
- 9.742474555969238,
- 99.28312683105469,
- 72.1085205078125,
- 81.73119354248047,
- 72.44898986816406,
- 81.73119354248047,
- 72.44898986816406
- ],
- "type": "float32"
- }
- },
- {
- "name": "maxPool2d float32 4D tensor options.roundingType=ceil",
- "inputs": {
- "input": {
- "shape": [1, 2, 5, 5],
- "data": [
- 89.00830216793153,
- -45.720390400208274,
- -61.3061304134967,
- -4.014514560596496,
- -94.54893342858352,
- 46.28090328619564,
- 99.28312923953135,
- -10.057873368956962,
- 9.742474583994337,
- -39.03501766575275,
- 75.08192382950091,
- 12.819415189421207,
- -33.01505690327188,
- 38.691340789603316,
- 66.09259104681504,
- 97.903480409299,
- -8.737769993284147,
- -53.4216238072017,
- 72.10852084777076,
- -40.42309116918719,
- -35.68864442661396,
- -87.64779401381033,
- 38.87424286093716,
- 39.38360329656629,
- 7.429088108317444,
- -76.72171237621149,
- 50.21706410294061,
- -52.89547724835329,
- -44.64233565670091,
- -97.86752535352848,
- 81.73119248706783,
- 5.428491238061412,
- -29.227728678237995,
- 72.44899280781078,
- -59.34124718116585,
- 39.19959912145927,
- -65.99438957588619,
- -4.204323589500888,
- -60.5458643662661,
- 55.89052583821697,
- 80.30483906634527,
- 72.88830243502153,
- -46.59610987974246,
- 20.503878887964206,
- -31.126462826158445,
- -57.29456052682171,
- -26.62357805164706,
- 15.93575469730375,
- -78.77953474824318,
- 72.33577555559427
- ],
- "type": "float32"
- }
- },
- "options": {
- "windowDimensions": [3, 3],
- "padding": [1, 0, 0, 1],
- "strides": [2, 2],
- "roundingType": "ceil"
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 3, 3],
- "data": [
- 99.28312683105469,
- 9.742474555969238,
- -39.03501892089844,
- 99.28312683105469,
- 72.1085205078125,
- 66.09259033203125,
- 97.90348052978516,
- 72.1085205078125,
- 7.429088115692139,
- 81.73119354248047,
- 72.44898986816406,
- -59.34124755859375,
- 81.73119354248047,
- 72.44898986816406,
- 55.890525817871094,
- 80.30484008789062,
- 72.33577728271484,
- 72.33577728271484
- ],
- "type": "float32"
- }
- },
- {
- "name": "maxPool2d float32 4D tensor options.outputSizes ignores options.roundingType=floor",
- "inputs": {
- "input": {
- "shape": [1, 2, 5, 5],
- "data": [
- 89.00830216793153,
- -45.720390400208274,
- -61.3061304134967,
- -4.014514560596496,
- -94.54893342858352,
- 46.28090328619564,
- 99.28312923953135,
- -10.057873368956962,
- 9.742474583994337,
- -39.03501766575275,
- 75.08192382950091,
- 12.819415189421207,
- -33.01505690327188,
- 38.691340789603316,
- 66.09259104681504,
- 97.903480409299,
- -8.737769993284147,
- -53.4216238072017,
- 72.10852084777076,
- -40.42309116918719,
- -35.68864442661396,
- -87.64779401381033,
- 38.87424286093716,
- 39.38360329656629,
- 7.429088108317444,
- -76.72171237621149,
- 50.21706410294061,
- -52.89547724835329,
- -44.64233565670091,
- -97.86752535352848,
- 81.73119248706783,
- 5.428491238061412,
- -29.227728678237995,
- 72.44899280781078,
- -59.34124718116585,
- 39.19959912145927,
- -65.99438957588619,
- -4.204323589500888,
- -60.5458643662661,
- 55.89052583821697,
- 80.30483906634527,
- 72.88830243502153,
- -46.59610987974246,
- 20.503878887964206,
- -31.126462826158445,
- -57.29456052682171,
- -26.62357805164706,
- 15.93575469730375,
- -78.77953474824318,
- 72.33577555559427
- ],
- "type": "float32"
- }
- },
- "options": {
- "windowDimensions": [3, 3],
- "padding": [1, 0, 0, 1],
- "strides": [2, 2],
- "roundingType": "floor",
- "outputSizes": [3, 3]
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 3, 3],
- "data": [
- 99.28312683105469,
- 9.742474555969238,
- -39.03501892089844,
- 99.28312683105469,
- 72.1085205078125,
- 66.09259033203125,
- 97.90348052978516,
- 72.1085205078125,
- 7.429088115692139,
- 81.73119354248047,
- 72.44898986816406,
- -59.34124755859375,
- 81.73119354248047,
- 72.44898986816406,
- 55.890525817871094,
- 80.30484008789062,
- 72.33577728271484,
- 72.33577728271484
- ],
- "type": "float32"
- }
- },
- {
- "name": "maxPool2d float32 4D tensor options.outputSizes ignores options.roundingType=ceil",
- "inputs": {
- "input": {
- "shape": [1, 2, 5, 5],
- "data": [
- 89.00830216793153,
- -45.720390400208274,
- -61.3061304134967,
- -4.014514560596496,
- -94.54893342858352,
- 46.28090328619564,
- 99.28312923953135,
- -10.057873368956962,
- 9.742474583994337,
- -39.03501766575275,
- 75.08192382950091,
- 12.819415189421207,
- -33.01505690327188,
- 38.691340789603316,
- 66.09259104681504,
- 97.903480409299,
- -8.737769993284147,
- -53.4216238072017,
- 72.10852084777076,
- -40.42309116918719,
- -35.68864442661396,
- -87.64779401381033,
- 38.87424286093716,
- 39.38360329656629,
- 7.429088108317444,
- -76.72171237621149,
- 50.21706410294061,
- -52.89547724835329,
- -44.64233565670091,
- -97.86752535352848,
- 81.73119248706783,
- 5.428491238061412,
- -29.227728678237995,
- 72.44899280781078,
- -59.34124718116585,
- 39.19959912145927,
- -65.99438957588619,
- -4.204323589500888,
- -60.5458643662661,
- 55.89052583821697,
- 80.30483906634527,
- 72.88830243502153,
- -46.59610987974246,
- 20.503878887964206,
- -31.126462826158445,
- -57.29456052682171,
- -26.62357805164706,
- 15.93575469730375,
- -78.77953474824318,
- 72.33577555559427
- ],
- "type": "float32"
- }
- },
- "options": {
- "windowDimensions": [3, 3],
- "padding": [1, 0, 0, 1],
- "strides": [2, 2],
- "roundingType": "ceil",
- "outputSizes": [2, 2]
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 2, 2],
- "data": [
- 99.28312683105469,
- 9.742474555969238,
- 99.28312683105469,
- 72.1085205078125,
- 81.73119354248047,
- 72.44898986816406,
- 81.73119354248047,
- 72.44898986816406
- ],
- "type": "float32"
- }
- },
- {
- "name": "maxPool2d float32 4D tensor options.dilations with options.strides",
- "inputs": {
- "input": {
- "shape": [1, 7, 7, 2],
- "data": [
- 34.69258129387845,
- -24.706248375920524,
- -60.42807114468629,
- 35.93883484387953,
- 60.896094267313345,
- 79.42220031805164,
- -77.85906306951374,
- 54.18820945858141,
- -21.57693529351286,
- -49.103906741859404,
- 78.55176346486067,
- 74.28213308844582,
- -87.92769416001408,
- 79.82047109868057,
- 11.680922626564922,
- -12.1545053403525,
- -22.332939699432202,
- 33.08486279636597,
- 8.640676946303174,
- 47.04064404360258,
- 95.78234680258441,
- -88.01998403139729,
- -98.53630176965567,
- 16.15897660557981,
- 21.396089910647248,
- 95.13234999362083,
- -40.80724330720389,
- -88.70921764059032,
- -40.772770487731826,
- 67.89843024034857,
- -50.337466344983504,
- -96.56610664792846,
- 12.508098405268967,
- -6.63581156175988,
- -44.80198313101762,
- 80.27474506768564,
- -65.68411481136147,
- -14.884790604208746,
- -66.54857566488332,
- 20.07233794529273,
- -27.954270006840204,
- -56.62217270552601,
- 82.74794838911092,
- 93.30175304845017,
- -34.07339352229894,
- -22.871643145139146,
- 73.25525716488457,
- 41.14021562026471,
- -19.755147411323023,
- 80.07700931110838,
- -69.89277244982563,
- 14.013250274581338,
- -61.36640253626604,
- 51.53046561516868,
- 43.538863140698226,
- -89.5888690731458,
- 51.45121768091764,
- 73.92397095355011,
- -80.25264684029128,
- 94.72747432067723,
- 95.25411370348488,
- 58.12575321550594,
- 19.885722826536778,
- -70.030129951855,
- 63.41951918063978,
- -54.11785116480967,
- -97.2280762988258,
- -60.65826309587585,
- -31.049980820398645,
- -14.64655330832754,
- -63.73688919275588,
- 47.34630581820389,
- 85.5640530081308,
- -53.38925321464192,
- -70.84739324778467,
- 47.35504709117748,
- 83.38397624574233,
- 7.36169510433227,
- 46.85823546522715,
- 98.13465616102368,
- -43.93968566738362,
- 50.33780282391024,
- 37.455634062049,
- -54.52760852219014,
- -6.212307719031031,
- 34.41734148282714,
- 11.816772365254153,
- 72.44517799372989,
- 86.34609553228327,
- 4.146569170394486,
- 88.33040249135547,
- 98.29994529007328,
- -66.72379613555366,
- 58.06434425465281,
- -51.168278021154954,
- -17.768582927864657,
- 9.961172472871425,
- -52.738431655100946
- ],
- "type": "float32"
- }
- },
- "options": {
- "windowDimensions": [3, 3],
- "padding": [1, 0, 0, 1],
- "strides": [2, 2],
- "dilations": [1, 1],
- "layout": "nhwc"
- },
- "expected": {
- "name": "output",
- "shape": [1, 3, 3, 2],
- "data": [
- 60.896095275878906,
- 79.42220306396484,
- 95.7823486328125,
- 79.42220306396484,
- 78.55176544189453,
- 95.1323471069336,
- 82.7479476928711,
- 93.30175018310547,
- 95.7823486328125,
- 80.27474212646484,
- 43.53886413574219,
- 95.1323471069336,
- 95.25411224365234,
- 94.72747802734375,
- 95.25411224365234,
- 98.13465881347656,
- 63.419517517089844,
- 98.13465881347656
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/min.json b/tests/wpt/tests/webnn/resources/test_data/min.json
deleted file mode 100644
index a08e6514286..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/min.json
+++ /dev/null
@@ -1,882 +0,0 @@
-{
- "tests": [
- {
- "name": "min float32 1D constant tensors",
- "inputs": {
- "a": {
- "shape": [24],
- "data": [
- -36.069532266228244,
- -38.22545078196744,
- 62.07444236586957,
- -16.61026674714678,
- 65.99324808387394,
- -17.772129967582686,
- -76.01381209267042,
- -69.59134776850009,
- 53.60376804727625,
- -39.096100673437164,
- 96.94400927938446,
- -40.391302324618295,
- 74.14437371697878,
- 0.032831973556398,
- 38.79835449778915,
- -17.720786393721696,
- 17.383201301159886,
- -82.30993955305293,
- -80.47379030810471,
- -31.38984799993598,
- -73.27236113112741,
- -33.7456195461658,
- -21.701524895337613,
- 4.945605121041879
- ],
- "type": "float32",
- "constant": true
- },
- "b": {
- "shape": [24],
- "data": [
- -40.10139268078632,
- 86.25190598846055,
- 51.28017397936523,
- -57.64906164772099,
- -97.56107437073234,
- -28.88173031289574,
- 80.49570909929332,
- 46.665406947365625,
- 62.8068578280876,
- 49.815340723067976,
- -76.5204323768335,
- 84.59909684299188,
- 50.472812621661944,
- -18.017285676776623,
- 5.198459215825707,
- -47.82608331903404,
- 46.4500784043023,
- -71.25122869019421,
- -69.8506659654443,
- 40.676491548922655,
- -18.700123336900987,
- 20.14988118692149,
- 41.950685196569594,
- 23.482911517986963
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- -40.10139083862305,
- -38.2254524230957,
- 51.280174255371094,
- -57.64906311035156,
- -97.56107330322266,
- -28.881731033325195,
- -76.01380920410156,
- -69.59134674072266,
- 53.60376739501953,
- -39.096099853515625,
- -76.52043151855469,
- -40.39130401611328,
- 50.47281265258789,
- -18.01728630065918,
- 5.198459148406982,
- -47.82608413696289,
- 17.383201599121094,
- -82.3099365234375,
- -80.47379302978516,
- -31.389848709106445,
- -73.2723617553711,
- -33.74562072753906,
- -21.70152473449707,
- 4.945605278015137
- ],
- "type": "float32"
- }
- },
- {
- "name": "min float32 1D tensors",
- "inputs": {
- "a": {
- "shape": [24],
- "data": [
- -36.069532266228244,
- -38.22545078196744,
- 62.07444236586957,
- -16.61026674714678,
- 65.99324808387394,
- -17.772129967582686,
- -76.01381209267042,
- -69.59134776850009,
- 53.60376804727625,
- -39.096100673437164,
- 96.94400927938446,
- -40.391302324618295,
- 74.14437371697878,
- 0.032831973556398,
- 38.79835449778915,
- -17.720786393721696,
- 17.383201301159886,
- -82.30993955305293,
- -80.47379030810471,
- -31.38984799993598,
- -73.27236113112741,
- -33.7456195461658,
- -21.701524895337613,
- 4.945605121041879
- ],
- "type": "float32"
- },
- "b": {
- "shape": [24],
- "data": [
- -40.10139268078632,
- 86.25190598846055,
- 51.28017397936523,
- -57.64906164772099,
- -97.56107437073234,
- -28.88173031289574,
- 80.49570909929332,
- 46.665406947365625,
- 62.8068578280876,
- 49.815340723067976,
- -76.5204323768335,
- 84.59909684299188,
- 50.472812621661944,
- -18.017285676776623,
- 5.198459215825707,
- -47.82608331903404,
- 46.4500784043023,
- -71.25122869019421,
- -69.8506659654443,
- 40.676491548922655,
- -18.700123336900987,
- 20.14988118692149,
- 41.950685196569594,
- 23.482911517986963
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- -40.10139083862305,
- -38.2254524230957,
- 51.280174255371094,
- -57.64906311035156,
- -97.56107330322266,
- -28.881731033325195,
- -76.01380920410156,
- -69.59134674072266,
- 53.60376739501953,
- -39.096099853515625,
- -76.52043151855469,
- -40.39130401611328,
- 50.47281265258789,
- -18.01728630065918,
- 5.198459148406982,
- -47.82608413696289,
- 17.383201599121094,
- -82.3099365234375,
- -80.47379302978516,
- -31.389848709106445,
- -73.2723617553711,
- -33.74562072753906,
- -21.70152473449707,
- 4.945605278015137
- ],
- "type": "float32"
- }
- },
- {
- "name": "min float32 2D tensors",
- "inputs": {
- "a": {
- "shape": [4, 6],
- "data": [
- -36.069532266228244,
- -38.22545078196744,
- 62.07444236586957,
- -16.61026674714678,
- 65.99324808387394,
- -17.772129967582686,
- -76.01381209267042,
- -69.59134776850009,
- 53.60376804727625,
- -39.096100673437164,
- 96.94400927938446,
- -40.391302324618295,
- 74.14437371697878,
- 0.032831973556398,
- 38.79835449778915,
- -17.720786393721696,
- 17.383201301159886,
- -82.30993955305293,
- -80.47379030810471,
- -31.38984799993598,
- -73.27236113112741,
- -33.7456195461658,
- -21.701524895337613,
- 4.945605121041879
- ],
- "type": "float32"
- },
- "b": {
- "shape": [4, 6],
- "data": [
- -40.10139268078632,
- 86.25190598846055,
- 51.28017397936523,
- -57.64906164772099,
- -97.56107437073234,
- -28.88173031289574,
- 80.49570909929332,
- 46.665406947365625,
- 62.8068578280876,
- 49.815340723067976,
- -76.5204323768335,
- 84.59909684299188,
- 50.472812621661944,
- -18.017285676776623,
- 5.198459215825707,
- -47.82608331903404,
- 46.4500784043023,
- -71.25122869019421,
- -69.8506659654443,
- 40.676491548922655,
- -18.700123336900987,
- 20.14988118692149,
- 41.950685196569594,
- 23.482911517986963
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- -40.10139083862305,
- -38.2254524230957,
- 51.280174255371094,
- -57.64906311035156,
- -97.56107330322266,
- -28.881731033325195,
- -76.01380920410156,
- -69.59134674072266,
- 53.60376739501953,
- -39.096099853515625,
- -76.52043151855469,
- -40.39130401611328,
- 50.47281265258789,
- -18.01728630065918,
- 5.198459148406982,
- -47.82608413696289,
- 17.383201599121094,
- -82.3099365234375,
- -80.47379302978516,
- -31.389848709106445,
- -73.2723617553711,
- -33.74562072753906,
- -21.70152473449707,
- 4.945605278015137
- ],
- "type": "float32"
- }
- },
- {
- "name": "min float32 3D tensors",
- "inputs": {
- "a": {
- "shape": [2, 3, 4],
- "data": [
- -36.069532266228244,
- -38.22545078196744,
- 62.07444236586957,
- -16.61026674714678,
- 65.99324808387394,
- -17.772129967582686,
- -76.01381209267042,
- -69.59134776850009,
- 53.60376804727625,
- -39.096100673437164,
- 96.94400927938446,
- -40.391302324618295,
- 74.14437371697878,
- 0.032831973556398,
- 38.79835449778915,
- -17.720786393721696,
- 17.383201301159886,
- -82.30993955305293,
- -80.47379030810471,
- -31.38984799993598,
- -73.27236113112741,
- -33.7456195461658,
- -21.701524895337613,
- 4.945605121041879
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 3, 4],
- "data": [
- -40.10139268078632,
- 86.25190598846055,
- 51.28017397936523,
- -57.64906164772099,
- -97.56107437073234,
- -28.88173031289574,
- 80.49570909929332,
- 46.665406947365625,
- 62.8068578280876,
- 49.815340723067976,
- -76.5204323768335,
- 84.59909684299188,
- 50.472812621661944,
- -18.017285676776623,
- 5.198459215825707,
- -47.82608331903404,
- 46.4500784043023,
- -71.25122869019421,
- -69.8506659654443,
- 40.676491548922655,
- -18.700123336900987,
- 20.14988118692149,
- 41.950685196569594,
- 23.482911517986963
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 3, 4],
- "data": [
- -40.10139083862305,
- -38.2254524230957,
- 51.280174255371094,
- -57.64906311035156,
- -97.56107330322266,
- -28.881731033325195,
- -76.01380920410156,
- -69.59134674072266,
- 53.60376739501953,
- -39.096099853515625,
- -76.52043151855469,
- -40.39130401611328,
- 50.47281265258789,
- -18.01728630065918,
- 5.198459148406982,
- -47.82608413696289,
- 17.383201599121094,
- -82.3099365234375,
- -80.47379302978516,
- -31.389848709106445,
- -73.2723617553711,
- -33.74562072753906,
- -21.70152473449707,
- 4.945605278015137
- ],
- "type": "float32"
- }
- },
- {
- "name": "min float32 4D tensors",
- "inputs": {
- "a": {
- "shape": [2, 2, 2, 3],
- "data": [
- -36.069532266228244,
- -38.22545078196744,
- 62.07444236586957,
- -16.61026674714678,
- 65.99324808387394,
- -17.772129967582686,
- -76.01381209267042,
- -69.59134776850009,
- 53.60376804727625,
- -39.096100673437164,
- 96.94400927938446,
- -40.391302324618295,
- 74.14437371697878,
- 0.032831973556398,
- 38.79835449778915,
- -17.720786393721696,
- 17.383201301159886,
- -82.30993955305293,
- -80.47379030810471,
- -31.38984799993598,
- -73.27236113112741,
- -33.7456195461658,
- -21.701524895337613,
- 4.945605121041879
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 2, 3],
- "data": [
- -40.10139268078632,
- 86.25190598846055,
- 51.28017397936523,
- -57.64906164772099,
- -97.56107437073234,
- -28.88173031289574,
- 80.49570909929332,
- 46.665406947365625,
- 62.8068578280876,
- 49.815340723067976,
- -76.5204323768335,
- 84.59909684299188,
- 50.472812621661944,
- -18.017285676776623,
- 5.198459215825707,
- -47.82608331903404,
- 46.4500784043023,
- -71.25122869019421,
- -69.8506659654443,
- 40.676491548922655,
- -18.700123336900987,
- 20.14988118692149,
- 41.950685196569594,
- 23.482911517986963
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- -40.10139083862305,
- -38.2254524230957,
- 51.280174255371094,
- -57.64906311035156,
- -97.56107330322266,
- -28.881731033325195,
- -76.01380920410156,
- -69.59134674072266,
- 53.60376739501953,
- -39.096099853515625,
- -76.52043151855469,
- -40.39130401611328,
- 50.47281265258789,
- -18.01728630065918,
- 5.198459148406982,
- -47.82608413696289,
- 17.383201599121094,
- -82.3099365234375,
- -80.47379302978516,
- -31.389848709106445,
- -73.2723617553711,
- -33.74562072753906,
- -21.70152473449707,
- 4.945605278015137
- ],
- "type": "float32"
- }
- },
- {
- "name": "min float32 5D tensors",
- "inputs": {
- "a": {
- "shape": [2, 2, 1, 2, 3],
- "data": [
- -36.069532266228244,
- -38.22545078196744,
- 62.07444236586957,
- -16.61026674714678,
- 65.99324808387394,
- -17.772129967582686,
- -76.01381209267042,
- -69.59134776850009,
- 53.60376804727625,
- -39.096100673437164,
- 96.94400927938446,
- -40.391302324618295,
- 74.14437371697878,
- 0.032831973556398,
- 38.79835449778915,
- -17.720786393721696,
- 17.383201301159886,
- -82.30993955305293,
- -80.47379030810471,
- -31.38984799993598,
- -73.27236113112741,
- -33.7456195461658,
- -21.701524895337613,
- 4.945605121041879
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 1, 2, 3],
- "data": [
- -40.10139268078632,
- 86.25190598846055,
- 51.28017397936523,
- -57.64906164772099,
- -97.56107437073234,
- -28.88173031289574,
- 80.49570909929332,
- 46.665406947365625,
- 62.8068578280876,
- 49.815340723067976,
- -76.5204323768335,
- 84.59909684299188,
- 50.472812621661944,
- -18.017285676776623,
- 5.198459215825707,
- -47.82608331903404,
- 46.4500784043023,
- -71.25122869019421,
- -69.8506659654443,
- 40.676491548922655,
- -18.700123336900987,
- 20.14988118692149,
- 41.950685196569594,
- 23.482911517986963
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 1, 2, 3],
- "data": [
- -40.10139083862305,
- -38.2254524230957,
- 51.280174255371094,
- -57.64906311035156,
- -97.56107330322266,
- -28.881731033325195,
- -76.01380920410156,
- -69.59134674072266,
- 53.60376739501953,
- -39.096099853515625,
- -76.52043151855469,
- -40.39130401611328,
- 50.47281265258789,
- -18.01728630065918,
- 5.198459148406982,
- -47.82608413696289,
- 17.383201599121094,
- -82.3099365234375,
- -80.47379302978516,
- -31.389848709106445,
- -73.2723617553711,
- -33.74562072753906,
- -21.70152473449707,
- 4.945605278015137
- ],
- "type": "float32"
- }
- },
- {
- "name": "min float32 broadcast 1D to 4D",
- "inputs": {
- "a": {
- "shape": [1],
- "data": [
- 34.42634415560107
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 2, 3],
- "data": [
- -36.069532266228244,
- -38.22545078196744,
- 62.07444236586957,
- -16.61026674714678,
- 65.99324808387394,
- -17.772129967582686,
- -76.01381209267042,
- -69.59134776850009,
- 53.60376804727625,
- -39.096100673437164,
- 96.94400927938446,
- -40.391302324618295,
- 74.14437371697878,
- 0.032831973556398,
- 38.79835449778915,
- -17.720786393721696,
- 17.383201301159886,
- -82.30993955305293,
- -80.47379030810471,
- -31.38984799993598,
- -73.27236113112741,
- -33.7456195461658,
- -21.701524895337613,
- 4.945605121041879
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- -36.06953048706055,
- -38.2254524230957,
- 34.42634582519531,
- -16.610267639160156,
- 34.42634582519531,
- -17.77212905883789,
- -76.01380920410156,
- -69.59134674072266,
- 34.42634582519531,
- -39.096099853515625,
- 34.42634582519531,
- -40.39130401611328,
- 34.42634582519531,
- 0.03283197432756424,
- 34.42634582519531,
- -17.720787048339844,
- 17.383201599121094,
- -82.3099365234375,
- -80.47379302978516,
- -31.389848709106445,
- -73.2723617553711,
- -33.74562072753906,
- -21.70152473449707,
- 4.945605278015137
- ],
- "type": "float32"
- }
- },
- {
- "name": "min float32 broadcast 2D to 4D",
- "inputs": {
- "a": {
- "shape": [2, 2, 2, 3],
- "data": [
- -36.069532266228244,
- -38.22545078196744,
- 62.07444236586957,
- -16.61026674714678,
- 65.99324808387394,
- -17.772129967582686,
- -76.01381209267042,
- -69.59134776850009,
- 53.60376804727625,
- -39.096100673437164,
- 96.94400927938446,
- -40.391302324618295,
- 74.14437371697878,
- 0.032831973556398,
- 38.79835449778915,
- -17.720786393721696,
- 17.383201301159886,
- -82.30993955305293,
- -80.47379030810471,
- -31.38984799993598,
- -73.27236113112741,
- -33.7456195461658,
- -21.701524895337613,
- 4.945605121041879
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 3],
- "data": [
- -19.072667739078668,
- -78.27516046519088,
- -13.43624418749556,
- -93.01346559564098,
- -72.27899383005467,
- 63.141107125830274
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- -36.06953048706055,
- -78.27516174316406,
- -13.436244010925293,
- -93.01346588134766,
- -72.27899169921875,
- -17.77212905883789,
- -76.01380920410156,
- -78.27516174316406,
- -13.436244010925293,
- -93.01346588134766,
- -72.27899169921875,
- -40.39130401611328,
- -19.072668075561523,
- -78.27516174316406,
- -13.436244010925293,
- -93.01346588134766,
- -72.27899169921875,
- -82.3099365234375,
- -80.47379302978516,
- -78.27516174316406,
- -73.2723617553711,
- -93.01346588134766,
- -72.27899169921875,
- 4.945605278015137
- ],
- "type": "float32"
- }
- },
- {
- "name": "min float32 broadcast 3D to 4D",
- "inputs": {
- "a": {
- "shape": [2, 2, 2, 3],
- "data": [
- -36.069532266228244,
- -38.22545078196744,
- 62.07444236586957,
- -16.61026674714678,
- 65.99324808387394,
- -17.772129967582686,
- -76.01381209267042,
- -69.59134776850009,
- 53.60376804727625,
- -39.096100673437164,
- 96.94400927938446,
- -40.391302324618295,
- 74.14437371697878,
- 0.032831973556398,
- 38.79835449778915,
- -17.720786393721696,
- 17.383201301159886,
- -82.30993955305293,
- -80.47379030810471,
- -31.38984799993598,
- -73.27236113112741,
- -33.7456195461658,
- -21.701524895337613,
- 4.945605121041879
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 1],
- "data": [
- 23.231731176710824,
- 84.62673735224791,
- -83.33529487921453,
- -22.824559006255328
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- -36.06953048706055,
- -38.2254524230957,
- 23.231731414794922,
- -16.610267639160156,
- 65.99324798583984,
- -17.77212905883789,
- -83.33529663085938,
- -83.33529663085938,
- -83.33529663085938,
- -39.096099853515625,
- -22.82455825805664,
- -40.39130401611328,
- 23.231731414794922,
- 0.03283197432756424,
- 23.231731414794922,
- -17.720787048339844,
- 17.383201599121094,
- -82.3099365234375,
- -83.33529663085938,
- -83.33529663085938,
- -83.33529663085938,
- -33.74562072753906,
- -22.82455825805664,
- -22.82455825805664
- ],
- "type": "float32"
- }
- },
- {
- "name": "min float32 broadcast 4D to 4D",
- "inputs": {
- "a": {
- "shape": [1, 1, 1, 1],
- "data": [
- 34.42634415560107
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 2, 3],
- "data": [
- -36.069532266228244,
- -38.22545078196744,
- 62.07444236586957,
- -16.61026674714678,
- 65.99324808387394,
- -17.772129967582686,
- -76.01381209267042,
- -69.59134776850009,
- 53.60376804727625,
- -39.096100673437164,
- 96.94400927938446,
- -40.391302324618295,
- 74.14437371697878,
- 0.032831973556398,
- 38.79835449778915,
- -17.720786393721696,
- 17.383201301159886,
- -82.30993955305293,
- -80.47379030810471,
- -31.38984799993598,
- -73.27236113112741,
- -33.7456195461658,
- -21.701524895337613,
- 4.945605121041879
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- -36.06953048706055,
- -38.2254524230957,
- 34.42634582519531,
- -16.610267639160156,
- 34.42634582519531,
- -17.77212905883789,
- -76.01380920410156,
- -69.59134674072266,
- 34.42634582519531,
- -39.096099853515625,
- 34.42634582519531,
- -40.39130401611328,
- 34.42634582519531,
- 0.03283197432756424,
- 34.42634582519531,
- -17.720787048339844,
- 17.383201599121094,
- -82.3099365234375,
- -80.47379302978516,
- -31.389848709106445,
- -73.2723617553711,
- -33.74562072753906,
- -21.70152473449707,
- 4.945605278015137
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/mul.json b/tests/wpt/tests/webnn/resources/test_data/mul.json
deleted file mode 100644
index 3de90184273..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/mul.json
+++ /dev/null
@@ -1,882 +0,0 @@
-{
- "tests": [
- {
- "name": "mul float32 1D constant tensors",
- "inputs": {
- "a": {
- "shape": [24],
- "data": [
- 49.11121736270019,
- 11.907459336794048,
- -21.11579579294029,
- 70.74900132517587,
- -94.51628388361728,
- -93.78905645837338,
- 11.178888261493995,
- -32.80592265135466,
- 83.31897732883382,
- 91.12072661737204,
- -0.11235756222869497,
- 15.397956296694915,
- -13.45921729974026,
- -50.62647440827837,
- -31.176256208308388,
- -6.616114020780813,
- 21.727578749239072,
- 22.03150842852844,
- -84.02170952786258,
- -94.06756015115154,
- 58.807274013013654,
- -63.0597856263404,
- 3.3092826784791214,
- 9.88400353323415
- ],
- "type": "float32",
- "constant": true
- },
- "b": {
- "shape": [24],
- "data": [
- 74.96137241031886,
- -34.53953260336324,
- -33.316162844150114,
- 53.92023954353448,
- -83.69075015721262,
- 19.78522024290173,
- 36.2811360289287,
- -34.31147605027482,
- 49.10429164239241,
- -54.538850393716665,
- 70.77384875070422,
- -55.18768187759977,
- -93.96233815307488,
- 60.0829826673602,
- -92.73415188611666,
- 87.60998747867865,
- -8.881865647983787,
- 71.79511481665139,
- -26.158620254037416,
- -18.935444705499236,
- 34.64671570053736,
- -60.95826678087097,
- -11.11965362061676,
- 77.50324337143496
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- 3681.4443359375,
- -411.278076171875,
- 703.4972534179688,
- 3814.802978515625,
- 7910.138671875,
- -1855.63720703125,
- 405.582763671875,
- 1125.6197509765625,
- 4091.3193359375,
- -4969.61962890625,
- -7.951977252960205,
- -849.7775268554688,
- 1264.6595458984375,
- -3041.78955078125,
- 2891.103759765625,
- -579.6376342773438,
- -192.98143005371094,
- 1581.7545166015625,
- 2197.89208984375,
- 1781.2109375,
- 2037.47900390625,
- 3844.01513671875,
- -36.79807662963867,
- 766.0423583984375
- ],
- "type": "float32"
- }
- },
- {
- "name": "mul float32 1D tensors",
- "inputs": {
- "a": {
- "shape": [24],
- "data": [
- 49.11121736270019,
- 11.907459336794048,
- -21.11579579294029,
- 70.74900132517587,
- -94.51628388361728,
- -93.78905645837338,
- 11.178888261493995,
- -32.80592265135466,
- 83.31897732883382,
- 91.12072661737204,
- -0.11235756222869497,
- 15.397956296694915,
- -13.45921729974026,
- -50.62647440827837,
- -31.176256208308388,
- -6.616114020780813,
- 21.727578749239072,
- 22.03150842852844,
- -84.02170952786258,
- -94.06756015115154,
- 58.807274013013654,
- -63.0597856263404,
- 3.3092826784791214,
- 9.88400353323415
- ],
- "type": "float32"
- },
- "b": {
- "shape": [24],
- "data": [
- 74.96137241031886,
- -34.53953260336324,
- -33.316162844150114,
- 53.92023954353448,
- -83.69075015721262,
- 19.78522024290173,
- 36.2811360289287,
- -34.31147605027482,
- 49.10429164239241,
- -54.538850393716665,
- 70.77384875070422,
- -55.18768187759977,
- -93.96233815307488,
- 60.0829826673602,
- -92.73415188611666,
- 87.60998747867865,
- -8.881865647983787,
- 71.79511481665139,
- -26.158620254037416,
- -18.935444705499236,
- 34.64671570053736,
- -60.95826678087097,
- -11.11965362061676,
- 77.50324337143496
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- 3681.4443359375,
- -411.278076171875,
- 703.4972534179688,
- 3814.802978515625,
- 7910.138671875,
- -1855.63720703125,
- 405.582763671875,
- 1125.6197509765625,
- 4091.3193359375,
- -4969.61962890625,
- -7.951977252960205,
- -849.7775268554688,
- 1264.6595458984375,
- -3041.78955078125,
- 2891.103759765625,
- -579.6376342773438,
- -192.98143005371094,
- 1581.7545166015625,
- 2197.89208984375,
- 1781.2109375,
- 2037.47900390625,
- 3844.01513671875,
- -36.79807662963867,
- 766.0423583984375
- ],
- "type": "float32"
- }
- },
- {
- "name": "mul float32 2D tensors",
- "inputs": {
- "a": {
- "shape": [4, 6],
- "data": [
- 49.11121736270019,
- 11.907459336794048,
- -21.11579579294029,
- 70.74900132517587,
- -94.51628388361728,
- -93.78905645837338,
- 11.178888261493995,
- -32.80592265135466,
- 83.31897732883382,
- 91.12072661737204,
- -0.11235756222869497,
- 15.397956296694915,
- -13.45921729974026,
- -50.62647440827837,
- -31.176256208308388,
- -6.616114020780813,
- 21.727578749239072,
- 22.03150842852844,
- -84.02170952786258,
- -94.06756015115154,
- 58.807274013013654,
- -63.0597856263404,
- 3.3092826784791214,
- 9.88400353323415
- ],
- "type": "float32"
- },
- "b": {
- "shape": [4, 6],
- "data": [
- 74.96137241031886,
- -34.53953260336324,
- -33.316162844150114,
- 53.92023954353448,
- -83.69075015721262,
- 19.78522024290173,
- 36.2811360289287,
- -34.31147605027482,
- 49.10429164239241,
- -54.538850393716665,
- 70.77384875070422,
- -55.18768187759977,
- -93.96233815307488,
- 60.0829826673602,
- -92.73415188611666,
- 87.60998747867865,
- -8.881865647983787,
- 71.79511481665139,
- -26.158620254037416,
- -18.935444705499236,
- 34.64671570053736,
- -60.95826678087097,
- -11.11965362061676,
- 77.50324337143496
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- 3681.4443359375,
- -411.278076171875,
- 703.4972534179688,
- 3814.802978515625,
- 7910.138671875,
- -1855.63720703125,
- 405.582763671875,
- 1125.6197509765625,
- 4091.3193359375,
- -4969.61962890625,
- -7.951977252960205,
- -849.7775268554688,
- 1264.6595458984375,
- -3041.78955078125,
- 2891.103759765625,
- -579.6376342773438,
- -192.98143005371094,
- 1581.7545166015625,
- 2197.89208984375,
- 1781.2109375,
- 2037.47900390625,
- 3844.01513671875,
- -36.79807662963867,
- 766.0423583984375
- ],
- "type": "float32"
- }
- },
- {
- "name": "mul float32 3D tensors",
- "inputs": {
- "a": {
- "shape": [2, 3, 4],
- "data": [
- 49.11121736270019,
- 11.907459336794048,
- -21.11579579294029,
- 70.74900132517587,
- -94.51628388361728,
- -93.78905645837338,
- 11.178888261493995,
- -32.80592265135466,
- 83.31897732883382,
- 91.12072661737204,
- -0.11235756222869497,
- 15.397956296694915,
- -13.45921729974026,
- -50.62647440827837,
- -31.176256208308388,
- -6.616114020780813,
- 21.727578749239072,
- 22.03150842852844,
- -84.02170952786258,
- -94.06756015115154,
- 58.807274013013654,
- -63.0597856263404,
- 3.3092826784791214,
- 9.88400353323415
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 3, 4],
- "data": [
- 74.96137241031886,
- -34.53953260336324,
- -33.316162844150114,
- 53.92023954353448,
- -83.69075015721262,
- 19.78522024290173,
- 36.2811360289287,
- -34.31147605027482,
- 49.10429164239241,
- -54.538850393716665,
- 70.77384875070422,
- -55.18768187759977,
- -93.96233815307488,
- 60.0829826673602,
- -92.73415188611666,
- 87.60998747867865,
- -8.881865647983787,
- 71.79511481665139,
- -26.158620254037416,
- -18.935444705499236,
- 34.64671570053736,
- -60.95826678087097,
- -11.11965362061676,
- 77.50324337143496
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 3, 4],
- "data": [
- 3681.4443359375,
- -411.278076171875,
- 703.4972534179688,
- 3814.802978515625,
- 7910.138671875,
- -1855.63720703125,
- 405.582763671875,
- 1125.6197509765625,
- 4091.3193359375,
- -4969.61962890625,
- -7.951977252960205,
- -849.7775268554688,
- 1264.6595458984375,
- -3041.78955078125,
- 2891.103759765625,
- -579.6376342773438,
- -192.98143005371094,
- 1581.7545166015625,
- 2197.89208984375,
- 1781.2109375,
- 2037.47900390625,
- 3844.01513671875,
- -36.79807662963867,
- 766.0423583984375
- ],
- "type": "float32"
- }
- },
- {
- "name": "mul float32 4D tensors",
- "inputs": {
- "a": {
- "shape": [2, 2, 2, 3],
- "data": [
- 49.11121736270019,
- 11.907459336794048,
- -21.11579579294029,
- 70.74900132517587,
- -94.51628388361728,
- -93.78905645837338,
- 11.178888261493995,
- -32.80592265135466,
- 83.31897732883382,
- 91.12072661737204,
- -0.11235756222869497,
- 15.397956296694915,
- -13.45921729974026,
- -50.62647440827837,
- -31.176256208308388,
- -6.616114020780813,
- 21.727578749239072,
- 22.03150842852844,
- -84.02170952786258,
- -94.06756015115154,
- 58.807274013013654,
- -63.0597856263404,
- 3.3092826784791214,
- 9.88400353323415
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 2, 3],
- "data": [
- 74.96137241031886,
- -34.53953260336324,
- -33.316162844150114,
- 53.92023954353448,
- -83.69075015721262,
- 19.78522024290173,
- 36.2811360289287,
- -34.31147605027482,
- 49.10429164239241,
- -54.538850393716665,
- 70.77384875070422,
- -55.18768187759977,
- -93.96233815307488,
- 60.0829826673602,
- -92.73415188611666,
- 87.60998747867865,
- -8.881865647983787,
- 71.79511481665139,
- -26.158620254037416,
- -18.935444705499236,
- 34.64671570053736,
- -60.95826678087097,
- -11.11965362061676,
- 77.50324337143496
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 3681.4443359375,
- -411.278076171875,
- 703.4972534179688,
- 3814.802978515625,
- 7910.138671875,
- -1855.63720703125,
- 405.582763671875,
- 1125.6197509765625,
- 4091.3193359375,
- -4969.61962890625,
- -7.951977252960205,
- -849.7775268554688,
- 1264.6595458984375,
- -3041.78955078125,
- 2891.103759765625,
- -579.6376342773438,
- -192.98143005371094,
- 1581.7545166015625,
- 2197.89208984375,
- 1781.2109375,
- 2037.47900390625,
- 3844.01513671875,
- -36.79807662963867,
- 766.0423583984375
- ],
- "type": "float32"
- }
- },
- {
- "name": "mul float32 5D tensors",
- "inputs": {
- "a": {
- "shape": [2, 2, 1, 2, 3],
- "data": [
- 49.11121736270019,
- 11.907459336794048,
- -21.11579579294029,
- 70.74900132517587,
- -94.51628388361728,
- -93.78905645837338,
- 11.178888261493995,
- -32.80592265135466,
- 83.31897732883382,
- 91.12072661737204,
- -0.11235756222869497,
- 15.397956296694915,
- -13.45921729974026,
- -50.62647440827837,
- -31.176256208308388,
- -6.616114020780813,
- 21.727578749239072,
- 22.03150842852844,
- -84.02170952786258,
- -94.06756015115154,
- 58.807274013013654,
- -63.0597856263404,
- 3.3092826784791214,
- 9.88400353323415
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 1, 2, 3],
- "data": [
- 74.96137241031886,
- -34.53953260336324,
- -33.316162844150114,
- 53.92023954353448,
- -83.69075015721262,
- 19.78522024290173,
- 36.2811360289287,
- -34.31147605027482,
- 49.10429164239241,
- -54.538850393716665,
- 70.77384875070422,
- -55.18768187759977,
- -93.96233815307488,
- 60.0829826673602,
- -92.73415188611666,
- 87.60998747867865,
- -8.881865647983787,
- 71.79511481665139,
- -26.158620254037416,
- -18.935444705499236,
- 34.64671570053736,
- -60.95826678087097,
- -11.11965362061676,
- 77.50324337143496
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 1, 2, 3],
- "data": [
- 3681.4443359375,
- -411.278076171875,
- 703.4972534179688,
- 3814.802978515625,
- 7910.138671875,
- -1855.63720703125,
- 405.582763671875,
- 1125.6197509765625,
- 4091.3193359375,
- -4969.61962890625,
- -7.951977252960205,
- -849.7775268554688,
- 1264.6595458984375,
- -3041.78955078125,
- 2891.103759765625,
- -579.6376342773438,
- -192.98143005371094,
- 1581.7545166015625,
- 2197.89208984375,
- 1781.2109375,
- 2037.47900390625,
- 3844.01513671875,
- -36.79807662963867,
- 766.0423583984375
- ],
- "type": "float32"
- }
- },
- {
- "name": "mul float32 broadcast 1D to 4D",
- "inputs": {
- "a": {
- "shape": [1],
- "data": [
- 67.50372094970106
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 2, 3],
- "data": [
- 49.11121736270019,
- 11.907459336794048,
- -21.11579579294029,
- 70.74900132517587,
- -94.51628388361728,
- -93.78905645837338,
- 11.178888261493995,
- -32.80592265135466,
- 83.31897732883382,
- 91.12072661737204,
- -0.11235756222869497,
- 15.397956296694915,
- -13.45921729974026,
- -50.62647440827837,
- -31.176256208308388,
- -6.616114020780813,
- 21.727578749239072,
- 22.03150842852844,
- -84.02170952786258,
- -94.06756015115154,
- 58.807274013013654,
- -63.0597856263404,
- 3.3092826784791214,
- 9.88400353323415
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 3315.18994140625,
- 803.7978515625,
- -1425.394775390625,
- 4775.82080078125,
- -6380.20068359375,
- -6331.1103515625,
- 754.6165771484375,
- -2214.52197265625,
- 5624.34130859375,
- 6150.98828125,
- -7.5845537185668945,
- 1039.4193115234375,
- -908.5472412109375,
- -3417.4755859375,
- -2104.513427734375,
- -446.6123352050781,
- 1466.6925048828125,
- 1487.208740234375,
- -5671.7783203125,
- -6349.91064453125,
- 3969.7099609375,
- -4256.77001953125,
- 223.388916015625,
- 667.20703125
- ],
- "type": "float32"
- }
- },
- {
- "name": "mul float32 broadcast 2D to 4D",
- "inputs": {
- "a": {
- "shape": [2, 2, 2, 3],
- "data": [
- 49.11121736270019,
- 11.907459336794048,
- -21.11579579294029,
- 70.74900132517587,
- -94.51628388361728,
- -93.78905645837338,
- 11.178888261493995,
- -32.80592265135466,
- 83.31897732883382,
- 91.12072661737204,
- -0.11235756222869497,
- 15.397956296694915,
- -13.45921729974026,
- -50.62647440827837,
- -31.176256208308388,
- -6.616114020780813,
- 21.727578749239072,
- 22.03150842852844,
- -84.02170952786258,
- -94.06756015115154,
- 58.807274013013654,
- -63.0597856263404,
- 3.3092826784791214,
- 9.88400353323415
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 3],
- "data": [
- -97.2933957218157,
- -81.70872307646576,
- -63.85933809294562,
- -25.192203473799253,
- 94.61556753087658,
- -20.3817901013323
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- -4778.197265625,
- -972.9432983398438,
- 1348.440673828125,
- -1782.3232421875,
- -8942.7119140625,
- 1911.5888671875,
- -1087.6319580078125,
- 2680.5302734375,
- -5320.69482421875,
- -2295.531982421875,
- -10.630775451660156,
- -313.8379211425781,
- 1309.492919921875,
- 4136.625,
- 1990.89501953125,
- 166.67449951171875,
- 2055.767333984375,
- -449.04156494140625,
- 8174.7578125,
- 7686.14013671875,
- -3755.3935546875,
- 1588.6148681640625,
- 313.10968017578125,
- -201.4536895751953
- ],
- "type": "float32"
- }
- },
- {
- "name": "mul float32 broadcast 3D to 4D",
- "inputs": {
- "a": {
- "shape": [2, 2, 2, 3],
- "data": [
- 49.11121736270019,
- 11.907459336794048,
- -21.11579579294029,
- 70.74900132517587,
- -94.51628388361728,
- -93.78905645837338,
- 11.178888261493995,
- -32.80592265135466,
- 83.31897732883382,
- 91.12072661737204,
- -0.11235756222869497,
- 15.397956296694915,
- -13.45921729974026,
- -50.62647440827837,
- -31.176256208308388,
- -6.616114020780813,
- 21.727578749239072,
- 22.03150842852844,
- -84.02170952786258,
- -94.06756015115154,
- 58.807274013013654,
- -63.0597856263404,
- 3.3092826784791214,
- 9.88400353323415
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 1],
- "data": [
- 8.696772886979204,
- 48.377688521793914,
- 97.75158873035582,
- 62.215746875745594
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 427.1091003417969,
- 103.55646514892578,
- -183.63926696777344,
- 3422.673095703125,
- -4572.4794921875,
- -4537.2978515625,
- 1092.7540283203125,
- -3206.8310546875,
- 8144.5625,
- 5669.14404296875,
- -6.990409851074219,
- 957.995361328125,
- -117.05175018310547,
- -440.2869567871094,
- -271.1328125,
- -320.07232666015625,
- 1051.130126953125,
- 1065.8333740234375,
- -8213.255859375,
- -9195.2529296875,
- 5748.50439453125,
- -3923.3115234375,
- 205.88949584960938,
- 614.940673828125
- ],
- "type": "float32"
- }
- },
- {
- "name": "mul float32 broadcast 4D to 4D",
- "inputs": {
- "a": {
- "shape": [1, 1, 1, 1],
- "data": [
- 67.50372094970106
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 2, 3],
- "data": [
- 49.11121736270019,
- 11.907459336794048,
- -21.11579579294029,
- 70.74900132517587,
- -94.51628388361728,
- -93.78905645837338,
- 11.178888261493995,
- -32.80592265135466,
- 83.31897732883382,
- 91.12072661737204,
- -0.11235756222869497,
- 15.397956296694915,
- -13.45921729974026,
- -50.62647440827837,
- -31.176256208308388,
- -6.616114020780813,
- 21.727578749239072,
- 22.03150842852844,
- -84.02170952786258,
- -94.06756015115154,
- 58.807274013013654,
- -63.0597856263404,
- 3.3092826784791214,
- 9.88400353323415
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 3315.18994140625,
- 803.7978515625,
- -1425.394775390625,
- 4775.82080078125,
- -6380.20068359375,
- -6331.1103515625,
- 754.6165771484375,
- -2214.52197265625,
- 5624.34130859375,
- 6150.98828125,
- -7.5845537185668945,
- 1039.4193115234375,
- -908.5472412109375,
- -3417.4755859375,
- -2104.513427734375,
- -446.6123352050781,
- 1466.6925048828125,
- 1487.208740234375,
- -5671.7783203125,
- -6349.91064453125,
- 3969.7099609375,
- -4256.77001953125,
- 223.388916015625,
- 667.20703125
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/neg.json b/tests/wpt/tests/webnn/resources/test_data/neg.json
deleted file mode 100644
index 34dee53df16..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/neg.json
+++ /dev/null
@@ -1,401 +0,0 @@
-{
- "tests": [
- {
- "name": "neg float32 1D constant tensor",
- "inputs": {
- "x": {
- "shape": [24],
- "data": [
- -58.334503020192145,
- 94.230451435346,
- -67.69306915096101,
- -36.06663941646238,
- 17.11511438752673,
- 59.26063208864457,
- -43.77507923449166,
- -14.875581781743236,
- 22.508566808333796,
- 98.67680207393127,
- 2.3155421451545237,
- -89.86896422605746,
- -14.288547289891255,
- 16.222452140079383,
- -4.68841786135998,
- -44.46965063391528,
- -52.13925804400618,
- 24.165389381806392,
- -66.45778331338028,
- -11.172323888318175,
- -25.024961990153656,
- 22.26478329228287,
- 35.29130058751991,
- -86.18817022134313
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- 58.334503173828125,
- -94.23045349121094,
- 67.69306945800781,
- 36.0666389465332,
- -17.115114212036133,
- -59.2606315612793,
- 43.77507781982422,
- 14.875581741333008,
- -22.50856590270996,
- -98.67680358886719,
- -2.315542221069336,
- 89.86896514892578,
- 14.28854751586914,
- -16.22245216369629,
- 4.688417911529541,
- 44.46965026855469,
- 52.139259338378906,
- -24.165390014648438,
- 66.4577865600586,
- 11.172324180603027,
- 25.024961471557617,
- -22.26478385925293,
- -35.29130172729492,
- 86.18817138671875
- ],
- "type": "float32"
- }
- },
- {
- "name": "neg float32 1D tensor",
- "inputs": {
- "x": {
- "shape": [24],
- "data": [
- -58.334503020192145,
- 94.230451435346,
- -67.69306915096101,
- -36.06663941646238,
- 17.11511438752673,
- 59.26063208864457,
- -43.77507923449166,
- -14.875581781743236,
- 22.508566808333796,
- 98.67680207393127,
- 2.3155421451545237,
- -89.86896422605746,
- -14.288547289891255,
- 16.222452140079383,
- -4.68841786135998,
- -44.46965063391528,
- -52.13925804400618,
- 24.165389381806392,
- -66.45778331338028,
- -11.172323888318175,
- -25.024961990153656,
- 22.26478329228287,
- 35.29130058751991,
- -86.18817022134313
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- 58.334503173828125,
- -94.23045349121094,
- 67.69306945800781,
- 36.0666389465332,
- -17.115114212036133,
- -59.2606315612793,
- 43.77507781982422,
- 14.875581741333008,
- -22.50856590270996,
- -98.67680358886719,
- -2.315542221069336,
- 89.86896514892578,
- 14.28854751586914,
- -16.22245216369629,
- 4.688417911529541,
- 44.46965026855469,
- 52.139259338378906,
- -24.165390014648438,
- 66.4577865600586,
- 11.172324180603027,
- 25.024961471557617,
- -22.26478385925293,
- -35.29130172729492,
- 86.18817138671875
- ],
- "type": "float32"
- }
- },
- {
- "name": "neg float32 2D tensor",
- "inputs": {
- "x": {
- "shape": [4, 6],
- "data": [
- -58.334503020192145,
- 94.230451435346,
- -67.69306915096101,
- -36.06663941646238,
- 17.11511438752673,
- 59.26063208864457,
- -43.77507923449166,
- -14.875581781743236,
- 22.508566808333796,
- 98.67680207393127,
- 2.3155421451545237,
- -89.86896422605746,
- -14.288547289891255,
- 16.222452140079383,
- -4.68841786135998,
- -44.46965063391528,
- -52.13925804400618,
- 24.165389381806392,
- -66.45778331338028,
- -11.172323888318175,
- -25.024961990153656,
- 22.26478329228287,
- 35.29130058751991,
- -86.18817022134313
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- 58.334503173828125,
- -94.23045349121094,
- 67.69306945800781,
- 36.0666389465332,
- -17.115114212036133,
- -59.2606315612793,
- 43.77507781982422,
- 14.875581741333008,
- -22.50856590270996,
- -98.67680358886719,
- -2.315542221069336,
- 89.86896514892578,
- 14.28854751586914,
- -16.22245216369629,
- 4.688417911529541,
- 44.46965026855469,
- 52.139259338378906,
- -24.165390014648438,
- 66.4577865600586,
- 11.172324180603027,
- 25.024961471557617,
- -22.26478385925293,
- -35.29130172729492,
- 86.18817138671875
- ],
- "type": "float32"
- }
- },
- {
- "name": "neg float32 3D tensor",
- "inputs": {
- "x": {
- "shape": [2, 3, 4],
- "data": [
- -58.334503020192145,
- 94.230451435346,
- -67.69306915096101,
- -36.06663941646238,
- 17.11511438752673,
- 59.26063208864457,
- -43.77507923449166,
- -14.875581781743236,
- 22.508566808333796,
- 98.67680207393127,
- 2.3155421451545237,
- -89.86896422605746,
- -14.288547289891255,
- 16.222452140079383,
- -4.68841786135998,
- -44.46965063391528,
- -52.13925804400618,
- 24.165389381806392,
- -66.45778331338028,
- -11.172323888318175,
- -25.024961990153656,
- 22.26478329228287,
- 35.29130058751991,
- -86.18817022134313
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 3, 4],
- "data": [
- 58.334503173828125,
- -94.23045349121094,
- 67.69306945800781,
- 36.0666389465332,
- -17.115114212036133,
- -59.2606315612793,
- 43.77507781982422,
- 14.875581741333008,
- -22.50856590270996,
- -98.67680358886719,
- -2.315542221069336,
- 89.86896514892578,
- 14.28854751586914,
- -16.22245216369629,
- 4.688417911529541,
- 44.46965026855469,
- 52.139259338378906,
- -24.165390014648438,
- 66.4577865600586,
- 11.172324180603027,
- 25.024961471557617,
- -22.26478385925293,
- -35.29130172729492,
- 86.18817138671875
- ],
- "type": "float32"
- }
- },
- {
- "name": "neg float32 4D tensor",
- "inputs": {
- "x": {
- "shape": [2, 2, 2, 3],
- "data": [
- -58.334503020192145,
- 94.230451435346,
- -67.69306915096101,
- -36.06663941646238,
- 17.11511438752673,
- 59.26063208864457,
- -43.77507923449166,
- -14.875581781743236,
- 22.508566808333796,
- 98.67680207393127,
- 2.3155421451545237,
- -89.86896422605746,
- -14.288547289891255,
- 16.222452140079383,
- -4.68841786135998,
- -44.46965063391528,
- -52.13925804400618,
- 24.165389381806392,
- -66.45778331338028,
- -11.172323888318175,
- -25.024961990153656,
- 22.26478329228287,
- 35.29130058751991,
- -86.18817022134313
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 58.334503173828125,
- -94.23045349121094,
- 67.69306945800781,
- 36.0666389465332,
- -17.115114212036133,
- -59.2606315612793,
- 43.77507781982422,
- 14.875581741333008,
- -22.50856590270996,
- -98.67680358886719,
- -2.315542221069336,
- 89.86896514892578,
- 14.28854751586914,
- -16.22245216369629,
- 4.688417911529541,
- 44.46965026855469,
- 52.139259338378906,
- -24.165390014648438,
- 66.4577865600586,
- 11.172324180603027,
- 25.024961471557617,
- -22.26478385925293,
- -35.29130172729492,
- 86.18817138671875
- ],
- "type": "float32"
- }
- },
- {
- "name": "neg float32 5D tensor",
- "inputs": {
- "x": {
- "shape": [2, 1, 4, 1, 3],
- "data": [
- -58.334503020192145,
- 94.230451435346,
- -67.69306915096101,
- -36.06663941646238,
- 17.11511438752673,
- 59.26063208864457,
- -43.77507923449166,
- -14.875581781743236,
- 22.508566808333796,
- 98.67680207393127,
- 2.3155421451545237,
- -89.86896422605746,
- -14.288547289891255,
- 16.222452140079383,
- -4.68841786135998,
- -44.46965063391528,
- -52.13925804400618,
- 24.165389381806392,
- -66.45778331338028,
- -11.172323888318175,
- -25.024961990153656,
- 22.26478329228287,
- 35.29130058751991,
- -86.18817022134313
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 1, 4, 1, 3],
- "data": [
- 58.334503173828125,
- -94.23045349121094,
- 67.69306945800781,
- 36.0666389465332,
- -17.115114212036133,
- -59.2606315612793,
- 43.77507781982422,
- 14.875581741333008,
- -22.50856590270996,
- -98.67680358886719,
- -2.315542221069336,
- 89.86896514892578,
- 14.28854751586914,
- -16.22245216369629,
- 4.688417911529541,
- 44.46965026855469,
- 52.139259338378906,
- -24.165390014648438,
- 66.4577865600586,
- 11.172324180603027,
- 25.024961471557617,
- -22.26478385925293,
- -35.29130172729492,
- 86.18817138671875
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/pad.json b/tests/wpt/tests/webnn/resources/test_data/pad.json
deleted file mode 100644
index 53e8ed8f597..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/pad.json
+++ /dev/null
@@ -1,797 +0,0 @@
-{
- "tests": [
- {
- "name": "pad float32 1D constant tensor default options",
- "inputs": {
- "input": {
- "shape": [9],
- "data": [
- 22.763617617214834,
- -21.16852940391331,
- -91.66169283838785,
- 16.863798710594182,
- 60.51471999839896,
- -70.56754852642953,
- -60.64327110324324,
- -47.88219132680065,
- 68.7255776612235
- ],
- "type": "float32",
- "constant": true
- }
- },
- "beginningPadding": [1],
- "endingPadding": [1],
- "expected": {
- "shape": [11],
- "data": [
- 0,
- 22.76361846923828,
- -21.168529510498047,
- -91.66168975830078,
- 16.863798141479492,
- 60.51472091674805,
- -70.56755065917969,
- -60.643272399902344,
- -47.8821907043457,
- 68.72557830810547,
- 0
- ],
- "type": "float32"
- }
- },
- {
- "name": "pad float32 1D tensor default options",
- "inputs": {
- "input": {
- "shape": [9],
- "data": [
- 22.763617617214834,
- -21.16852940391331,
- -91.66169283838785,
- 16.863798710594182,
- 60.51471999839896,
- -70.56754852642953,
- -60.64327110324324,
- -47.88219132680065,
- 68.7255776612235
- ],
- "type": "float32"
- }
- },
- "beginningPadding": [1],
- "endingPadding": [1],
- "expected": {
- "shape": [11],
- "data": [
- 0,
- 22.76361846923828,
- -21.168529510498047,
- -91.66168975830078,
- 16.863798141479492,
- 60.51472091674805,
- -70.56755065917969,
- -60.643272399902344,
- -47.8821907043457,
- 68.72557830810547,
- 0
- ],
- "type": "float32"
- }
- },
- {
- "name": "pad float32 2D tensor default options",
- "inputs": {
- "input": {
- "shape": [3, 3],
- "data": [
- 22.763617617214834,
- -21.16852940391331,
- -91.66169283838785,
- 16.863798710594182,
- 60.51471999839896,
- -70.56754852642953,
- -60.64327110324324,
- -47.88219132680065,
- 68.7255776612235
- ],
- "type": "float32"
- }
- },
- "beginningPadding": [1, 1],
- "endingPadding": [1, 1],
- "expected": {
- "shape": [5, 5],
- "data": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 22.76361846923828,
- -21.168529510498047,
- -91.66168975830078,
- 0,
- 0,
- 16.863798141479492,
- 60.51472091674805,
- -70.56755065917969,
- 0,
- 0,
- -60.643272399902344,
- -47.8821907043457,
- 68.72557830810547,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- "type": "float32"
- }
- },
- {
- "name": "pad float32 3D tensor default options",
- "inputs": {
- "input": {
- "shape": [1, 3, 3],
- "data": [
- 22.763617617214834,
- -21.16852940391331,
- -91.66169283838785,
- 16.863798710594182,
- 60.51471999839896,
- -70.56754852642953,
- -60.64327110324324,
- -47.88219132680065,
- 68.7255776612235
- ],
- "type": "float32"
- }
- },
- "beginningPadding": [1, 1, 1],
- "endingPadding": [1, 1, 1],
- "expected": {
- "shape": [3, 5, 5],
- "data": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 22.76361846923828,
- -21.168529510498047,
- -91.66168975830078,
- 0,
- 0,
- 16.863798141479492,
- 60.51472091674805,
- -70.56755065917969,
- 0,
- 0,
- -60.643272399902344,
- -47.8821907043457,
- 68.72557830810547,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- "type": "float32"
- }
- },
- {
- "name": "pad float32 4D tensor default options",
- "inputs": {
- "input": {
- "shape": [1, 3, 3, 1],
- "data": [
- 22.763617617214834,
- -21.16852940391331,
- -91.66169283838785,
- 16.863798710594182,
- 60.51471999839896,
- -70.56754852642953,
- -60.64327110324324,
- -47.88219132680065,
- 68.7255776612235
- ],
- "type": "float32"
- }
- },
- "beginningPadding": [0, 1, 1, 1],
- "endingPadding": [0, 1, 1, 1],
- "expected": {
- "shape": [1, 5, 5, 3],
- "data": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 22.76361846923828,
- 0,
- 0,
- -21.168529510498047,
- 0,
- 0,
- -91.66168975830078,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 16.863798141479492,
- 0,
- 0,
- 60.51472091674805,
- 0,
- 0,
- -70.56755065917969,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- -60.643272399902344,
- 0,
- 0,
- -47.8821907043457,
- 0,
- 0,
- 68.72557830810547,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- "type": "float32"
- }
- },
- {
- "name": "pad float32 5D tensor default options",
- "inputs": {
- "input": {
- "shape": [1, 3, 3, 1, 1],
- "data": [
- 22.763617617214834,
- -21.16852940391331,
- -91.66169283838785,
- 16.863798710594182,
- 60.51471999839896,
- -70.56754852642953,
- -60.64327110324324,
- -47.88219132680065,
- 68.7255776612235
- ],
- "type": "float32"
- }
- },
- "beginningPadding": [0, 1, 1, 0, 1],
- "endingPadding": [0, 1, 1, 0, 1],
- "expected": {
- "shape": [1, 5, 5, 1, 3],
- "data": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 22.76361846923828,
- 0,
- 0,
- -21.168529510498047,
- 0,
- 0,
- -91.66168975830078,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 16.863798141479492,
- 0,
- 0,
- 60.51472091674805,
- 0,
- 0,
- -70.56755065917969,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- -60.643272399902344,
- 0,
- 0,
- -47.8821907043457,
- 0,
- 0,
- 68.72557830810547,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- "type": "float32"
- }
- },
- {
- "name": "pad float32 2D tensor explicit options.mode='constant'",
- "inputs": {
- "input": {
- "shape": [3, 3],
- "data": [
- 22.763617617214834,
- -21.16852940391331,
- -91.66169283838785,
- 16.863798710594182,
- 60.51471999839896,
- -70.56754852642953,
- -60.64327110324324,
- -47.88219132680065,
- 68.7255776612235
- ],
- "type": "float32"
- }
- },
- "beginningPadding": [1, 1],
- "endingPadding": [1, 1],
- "options": {
- "mode": "constant"
- },
- "expected": {
- "shape": [5, 5],
- "data": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 22.76361846923828,
- -21.168529510498047,
- -91.66168975830078,
- 0,
- 0,
- 16.863798141479492,
- 60.51472091674805,
- -70.56755065917969,
- 0,
- 0,
- -60.643272399902344,
- -47.8821907043457,
- 68.72557830810547,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- "type": "float32"
- }
- },
- {
- "name": "pad float32 2D tensor options.value default constant mode",
- "inputs": {
- "input": {
- "shape": [3, 3],
- "data": [
- 22.763617617214834,
- -21.16852940391331,
- -91.66169283838785,
- 16.863798710594182,
- 60.51471999839896,
- -70.56754852642953,
- -60.64327110324324,
- -47.88219132680065,
- 68.7255776612235
- ],
- "type": "float32"
- }
- },
- "beginningPadding": [1, 1],
- "endingPadding": [1, 1],
- "options": {
- "value": 1.0
- },
- "expected": {
- "shape": [5, 5],
- "data": [
- 1,
- 1,
- 1,
- 1,
- 1,
- 1,
- 22.76361846923828,
- -21.168529510498047,
- -91.66168975830078,
- 1,
- 1,
- 16.863798141479492,
- 60.51472091674805,
- -70.56755065917969,
- 1,
- 1,
- -60.643272399902344,
- -47.8821907043457,
- 68.72557830810547,
- 1,
- 1,
- 1,
- 1,
- 1,
- 1
- ],
- "type": "float32"
- }
- },
- {
- "name": "pad float32 4D tensor options.mode='edge'",
- "inputs": {
- "input": {
- "shape": [1, 3, 3, 1],
- "data": [
- 22.763617617214834,
- -21.16852940391331,
- -91.66169283838785,
- 16.863798710594182,
- 60.51471999839896,
- -70.56754852642953,
- -60.64327110324324,
- -47.88219132680065,
- 68.7255776612235
- ],
- "type": "float32"
- }
- },
- "beginningPadding": [0, 2, 2, 0],
- "endingPadding": [0, 2, 2, 0],
- "options": {
- "mode": "edge"
- },
- "expected": {
- "shape": [1, 7, 7, 1],
- "data": [
- 22.76361846923828,
- 22.76361846923828,
- 22.76361846923828,
- -21.168529510498047,
- -91.66168975830078,
- -91.66168975830078,
- -91.66168975830078,
- 22.76361846923828,
- 22.76361846923828,
- 22.76361846923828,
- -21.168529510498047,
- -91.66168975830078,
- -91.66168975830078,
- -91.66168975830078,
- 22.76361846923828,
- 22.76361846923828,
- 22.76361846923828,
- -21.168529510498047,
- -91.66168975830078,
- -91.66168975830078,
- -91.66168975830078,
- 16.863798141479492,
- 16.863798141479492,
- 16.863798141479492,
- 60.51472091674805,
- -70.56755065917969,
- -70.56755065917969,
- -70.56755065917969,
- -60.643272399902344,
- -60.643272399902344,
- -60.643272399902344,
- -47.8821907043457,
- 68.72557830810547,
- 68.72557830810547,
- 68.72557830810547,
- -60.643272399902344,
- -60.643272399902344,
- -60.643272399902344,
- -47.8821907043457,
- 68.72557830810547,
- 68.72557830810547,
- 68.72557830810547,
- -60.643272399902344,
- -60.643272399902344,
- -60.643272399902344,
- -47.8821907043457,
- 68.72557830810547,
- 68.72557830810547,
- 68.72557830810547
- ],
- "type": "float32"
- }
- },
- {
- "name": "pad float32 4D tensor options.mode='reflection'",
- "inputs": {
- "input": {
- "shape": [1, 3, 3, 1],
- "data": [
- 22.763617617214834,
- -21.16852940391331,
- -91.66169283838785,
- 16.863798710594182,
- 60.51471999839896,
- -70.56754852642953,
- -60.64327110324324,
- -47.88219132680065,
- 68.7255776612235
- ],
- "type": "float32"
- }
- },
- "beginningPadding": [0, 2, 2, 0],
- "endingPadding": [0, 2, 2, 0],
- "options": {
- "mode": "reflection"
- },
- "expected": {
- "shape": [1, 7, 7, 1],
- "data": [
- 68.72557830810547,
- -47.8821907043457,
- -60.643272399902344,
- -47.8821907043457,
- 68.72557830810547,
- -47.8821907043457,
- -60.643272399902344,
- -70.56755065917969,
- 60.51472091674805,
- 16.863798141479492,
- 60.51472091674805,
- -70.56755065917969,
- 60.51472091674805,
- 16.863798141479492,
- -91.66168975830078,
- -21.168529510498047,
- 22.76361846923828,
- -21.168529510498047,
- -91.66168975830078,
- -21.168529510498047,
- 22.76361846923828,
- -70.56755065917969,
- 60.51472091674805,
- 16.863798141479492,
- 60.51472091674805,
- -70.56755065917969,
- 60.51472091674805,
- 16.863798141479492,
- 68.72557830810547,
- -47.8821907043457,
- -60.643272399902344,
- -47.8821907043457,
- 68.72557830810547,
- -47.8821907043457,
- -60.643272399902344,
- -70.56755065917969,
- 60.51472091674805,
- 16.863798141479492,
- 60.51472091674805,
- -70.56755065917969,
- 60.51472091674805,
- 16.863798141479492,
- -91.66168975830078,
- -21.168529510498047,
- 22.76361846923828,
- -21.168529510498047,
- -91.66168975830078,
- -21.168529510498047,
- 22.76361846923828
- ],
- "type": "float32"
- }
- },
- {
- "name": "pad float32 4D tensor options.mode='symmetric'",
- "inputs": {
- "input": {
- "shape": [1, 3, 3, 1],
- "data": [
- 22.763617617214834,
- -21.16852940391331,
- -91.66169283838785,
- 16.863798710594182,
- 60.51471999839896,
- -70.56754852642953,
- -60.64327110324324,
- -47.88219132680065,
- 68.7255776612235
- ],
- "type": "float32"
- }
- },
- "beginningPadding": [0, 2, 2, 0],
- "endingPadding": [0, 2, 2, 0],
- "options": {
- "mode": "symmetric"
- },
- "expected": {
- "shape": [1, 7, 7, 1],
- "data": [
- 60.51472091674805,
- 16.863798141479492,
- 16.863798141479492,
- 60.51472091674805,
- -70.56755065917969,
- -70.56755065917969,
- 60.51472091674805,
- -21.168529510498047,
- 22.76361846923828,
- 22.76361846923828,
- -21.168529510498047,
- -91.66168975830078,
- -91.66168975830078,
- -21.168529510498047,
- -21.168529510498047,
- 22.76361846923828,
- 22.76361846923828,
- -21.168529510498047,
- -91.66168975830078,
- -91.66168975830078,
- -21.168529510498047,
- 60.51472091674805,
- 16.863798141479492,
- 16.863798141479492,
- 60.51472091674805,
- -70.56755065917969,
- -70.56755065917969,
- 60.51472091674805,
- -47.8821907043457,
- -60.643272399902344,
- -60.643272399902344,
- -47.8821907043457,
- 68.72557830810547,
- 68.72557830810547,
- -47.8821907043457,
- -47.8821907043457,
- -60.643272399902344,
- -60.643272399902344,
- -47.8821907043457,
- 68.72557830810547,
- 68.72557830810547,
- -47.8821907043457,
- 60.51472091674805,
- 16.863798141479492,
- 16.863798141479492,
- 60.51472091674805,
- -70.56755065917969,
- -70.56755065917969,
- 60.51472091674805
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/pow.json b/tests/wpt/tests/webnn/resources/test_data/pow.json
deleted file mode 100644
index 1738722b10b..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/pow.json
+++ /dev/null
@@ -1,880 +0,0 @@
-{
- "tests": [
- {
- "name": "pow float32 constant 1D base tensor and 1D integer exponent tensor",
- "inputs": {
- "a": {
- "shape": [24],
- "data": [
- 17.84601042972939,
- -0.06310698009783522,
- -9.868203150557209,
- 11.177720889025082,
- -17.346274412274497,
- 11.862249907078805,
- -16.832276297112916,
- 2.657481705284937,
- -2.783346559701183,
- -13.756399883988184,
- 13.131383020668672,
- -0.4376337155223524,
- -15.678688537967744,
- 10.283306376871472,
- 14.89317426754188,
- -4.941208383494091,
- -14.231812435141862,
- 3.2646027287637835,
- 17.229148713687444,
- -2.885918185998449,
- -1.440015043233842,
- -5.757015935913907,
- 17.41126899618849,
- 17.415215284302022
- ],
- "type": "float32",
- "constant": true
- },
- "b": {
- "shape": [24],
- "data": [
- 1,
- 6,
- -7,
- 7,
- -2,
- 1,
- 4,
- -10,
- -2,
- -5,
- -2,
- -10,
- -8,
- -7,
- -1,
- -3,
- -9,
- 6,
- -6,
- 7,
- -5,
- -5,
- 7,
- -6
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- 17.846010208129883,
- 6.316321332633379e-8,
- -1.0973203501407625e-7,
- 21800822,
- 0.0033234376460313797,
- 11.862250328063965,
- 80273.3359375,
- 0.00005692423656000756,
- 0.12908191978931427,
- -0.0000020299064544815337,
- 0.005799346603453159,
- 3880.540283203125,
- 2.7385585465999895e-10,
- 8.223764069725803e-8,
- 0.06714485585689545,
- -0.008288968354463577,
- -4.1750155416186985e-11,
- 1210.5478515625,
- 3.8231124932508465e-8,
- -1667.201416015625,
- -0.16149713099002838,
- -0.00015812950732652098,
- 485079424,
- 3.584487018315485e-8
- ],
- "type": "float32"
- }
- },
- {
- "name": "pow float32 1D base tensor and 1D integer exponent tensor",
- "inputs": {
- "a": {
- "shape": [24],
- "data": [
- 17.84601042972939,
- -0.06310698009783522,
- -9.868203150557209,
- 11.177720889025082,
- -17.346274412274497,
- 11.862249907078805,
- -16.832276297112916,
- 2.657481705284937,
- -2.783346559701183,
- -13.756399883988184,
- 13.131383020668672,
- -0.4376337155223524,
- -15.678688537967744,
- 10.283306376871472,
- 14.89317426754188,
- -4.941208383494091,
- -14.231812435141862,
- 3.2646027287637835,
- 17.229148713687444,
- -2.885918185998449,
- -1.440015043233842,
- -5.757015935913907,
- 17.41126899618849,
- 17.415215284302022
- ],
- "type": "float32"
- },
- "b": {
- "shape": [24],
- "data": [
- 1,
- 6,
- -7,
- 7,
- -2,
- 1,
- 4,
- -10,
- -2,
- -5,
- -2,
- -10,
- -8,
- -7,
- -1,
- -3,
- -9,
- 6,
- -6,
- 7,
- -5,
- -5,
- 7,
- -6
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- 17.846010208129883,
- 6.316321332633379e-8,
- -1.0973203501407625e-7,
- 21800822,
- 0.0033234376460313797,
- 11.862250328063965,
- 80273.3359375,
- 0.00005692423656000756,
- 0.12908191978931427,
- -0.0000020299064544815337,
- 0.005799346603453159,
- 3880.540283203125,
- 2.7385585465999895e-10,
- 8.223764069725803e-8,
- 0.06714485585689545,
- -0.008288968354463577,
- -4.1750155416186985e-11,
- 1210.5478515625,
- 3.8231124932508465e-8,
- -1667.201416015625,
- -0.16149713099002838,
- -0.00015812950732652098,
- 485079424,
- 3.584487018315485e-8
- ],
- "type": "float32"
- }
- },
- {
- "name": "pow float32 2D base tensor and 2D integer exponent tensor",
- "inputs": {
- "a": {
- "shape": [4, 6],
- "data": [
- 17.84601042972939,
- -0.06310698009783522,
- -9.868203150557209,
- 11.177720889025082,
- -17.346274412274497,
- 11.862249907078805,
- -16.832276297112916,
- 2.657481705284937,
- -2.783346559701183,
- -13.756399883988184,
- 13.131383020668672,
- -0.4376337155223524,
- -15.678688537967744,
- 10.283306376871472,
- 14.89317426754188,
- -4.941208383494091,
- -14.231812435141862,
- 3.2646027287637835,
- 17.229148713687444,
- -2.885918185998449,
- -1.440015043233842,
- -5.757015935913907,
- 17.41126899618849,
- 17.415215284302022
- ],
- "type": "float32"
- },
- "b": {
- "shape": [4, 6],
- "data": [
- 1,
- 6,
- -7,
- 7,
- -2,
- 1,
- 4,
- -10,
- -2,
- -5,
- -2,
- -10,
- -8,
- -7,
- -1,
- -3,
- -9,
- 6,
- -6,
- 7,
- -5,
- -5,
- 7,
- -6
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- 17.846010208129883,
- 6.316321332633379e-8,
- -1.0973203501407625e-7,
- 21800822,
- 0.0033234376460313797,
- 11.862250328063965,
- 80273.3359375,
- 0.00005692423656000756,
- 0.12908191978931427,
- -0.0000020299064544815337,
- 0.005799346603453159,
- 3880.540283203125,
- 2.7385585465999895e-10,
- 8.223764069725803e-8,
- 0.06714485585689545,
- -0.008288968354463577,
- -4.1750155416186985e-11,
- 1210.5478515625,
- 3.8231124932508465e-8,
- -1667.201416015625,
- -0.16149713099002838,
- -0.00015812950732652098,
- 485079424,
- 3.584487018315485e-8
- ],
- "type": "float32"
- }
- },
- {
- "name": "pow float32 3D base tensor and 3D integer exponent tensor",
- "inputs": {
- "a": {
- "shape": [2, 3, 4],
- "data": [
- 17.84601042972939,
- -0.06310698009783522,
- -9.868203150557209,
- 11.177720889025082,
- -17.346274412274497,
- 11.862249907078805,
- -16.832276297112916,
- 2.657481705284937,
- -2.783346559701183,
- -13.756399883988184,
- 13.131383020668672,
- -0.4376337155223524,
- -15.678688537967744,
- 10.283306376871472,
- 14.89317426754188,
- -4.941208383494091,
- -14.231812435141862,
- 3.2646027287637835,
- 17.229148713687444,
- -2.885918185998449,
- -1.440015043233842,
- -5.757015935913907,
- 17.41126899618849,
- 17.415215284302022
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 3, 4],
- "data": [
- 1,
- 6,
- -7,
- 7,
- -2,
- 1,
- 4,
- -10,
- -2,
- -5,
- -2,
- -10,
- -8,
- -7,
- -1,
- -3,
- -9,
- 6,
- -6,
- 7,
- -5,
- -5,
- 7,
- -6
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 3, 4],
- "data": [
- 17.846010208129883,
- 6.316321332633379e-8,
- -1.0973203501407625e-7,
- 21800822,
- 0.0033234376460313797,
- 11.862250328063965,
- 80273.3359375,
- 0.00005692423656000756,
- 0.12908191978931427,
- -0.0000020299064544815337,
- 0.005799346603453159,
- 3880.540283203125,
- 2.7385585465999895e-10,
- 8.223764069725803e-8,
- 0.06714485585689545,
- -0.008288968354463577,
- -4.1750155416186985e-11,
- 1210.5478515625,
- 3.8231124932508465e-8,
- -1667.201416015625,
- -0.16149713099002838,
- -0.00015812950732652098,
- 485079424,
- 3.584487018315485e-8
- ],
- "type": "float32"
- }
- },
- {
- "name": "pow float32 4D base tensor and 4D integer exponent tensor",
- "inputs": {
- "a": {
- "shape": [2, 2, 2, 3],
- "data": [
- 17.84601042972939,
- -0.06310698009783522,
- -9.868203150557209,
- 11.177720889025082,
- -17.346274412274497,
- 11.862249907078805,
- -16.832276297112916,
- 2.657481705284937,
- -2.783346559701183,
- -13.756399883988184,
- 13.131383020668672,
- -0.4376337155223524,
- -15.678688537967744,
- 10.283306376871472,
- 14.89317426754188,
- -4.941208383494091,
- -14.231812435141862,
- 3.2646027287637835,
- 17.229148713687444,
- -2.885918185998449,
- -1.440015043233842,
- -5.757015935913907,
- 17.41126899618849,
- 17.415215284302022
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 2, 3],
- "data": [
- 1,
- 6,
- -7,
- 7,
- -2,
- 1,
- 4,
- -10,
- -2,
- -5,
- -2,
- -10,
- -8,
- -7,
- -1,
- -3,
- -9,
- 6,
- -6,
- 7,
- -5,
- -5,
- 7,
- -6
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 17.846010208129883,
- 6.316321332633379e-8,
- -1.0973203501407625e-7,
- 21800822,
- 0.0033234376460313797,
- 11.862250328063965,
- 80273.3359375,
- 0.00005692423656000756,
- 0.12908191978931427,
- -0.0000020299064544815337,
- 0.005799346603453159,
- 3880.540283203125,
- 2.7385585465999895e-10,
- 8.223764069725803e-8,
- 0.06714485585689545,
- -0.008288968354463577,
- -4.1750155416186985e-11,
- 1210.5478515625,
- 3.8231124932508465e-8,
- -1667.201416015625,
- -0.16149713099002838,
- -0.00015812950732652098,
- 485079424,
- 3.584487018315485e-8
- ],
- "type": "float32"
- }
- },
- {
- "name": "pow float32 5D base tensor and 5D integer exponent tensor",
- "inputs": {
- "a": {
- "shape": [2, 2, 1, 2, 3],
- "data": [
- 17.84601042972939,
- -0.06310698009783522,
- -9.868203150557209,
- 11.177720889025082,
- -17.346274412274497,
- 11.862249907078805,
- -16.832276297112916,
- 2.657481705284937,
- -2.783346559701183,
- -13.756399883988184,
- 13.131383020668672,
- -0.4376337155223524,
- -15.678688537967744,
- 10.283306376871472,
- 14.89317426754188,
- -4.941208383494091,
- -14.231812435141862,
- 3.2646027287637835,
- 17.229148713687444,
- -2.885918185998449,
- -1.440015043233842,
- -5.757015935913907,
- 17.41126899618849,
- 17.415215284302022
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 1, 2, 3],
- "data": [
- 1,
- 6,
- -7,
- 7,
- -2,
- 1,
- 4,
- -10,
- -2,
- -5,
- -2,
- -10,
- -8,
- -7,
- -1,
- -3,
- -9,
- 6,
- -6,
- 7,
- -5,
- -5,
- 7,
- -6
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 1, 2, 3],
- "data": [
- 17.846010208129883,
- 6.316321332633379e-8,
- -1.0973203501407625e-7,
- 21800822,
- 0.0033234376460313797,
- 11.862250328063965,
- 80273.3359375,
- 0.00005692423656000756,
- 0.12908191978931427,
- -0.0000020299064544815337,
- 0.005799346603453159,
- 3880.540283203125,
- 2.7385585465999895e-10,
- 8.223764069725803e-8,
- 0.06714485585689545,
- -0.008288968354463577,
- -4.1750155416186985e-11,
- 1210.5478515625,
- 3.8231124932508465e-8,
- -1667.201416015625,
- -0.16149713099002838,
- -0.00015812950732652098,
- 485079424,
- 3.584487018315485e-8
- ],
- "type": "float32"
- }
- },
- {
- "name": "pow (square) float32 4D base tensor and broadcastable 0D integer exponent scalar",
- "inputs": {
- "a": {
- "shape": [2, 2, 2, 3],
- "data": [
- 17.84601042972939,
- -0.06310698009783522,
- -9.868203150557209,
- 11.177720889025082,
- -17.346274412274497,
- 11.862249907078805,
- -16.832276297112916,
- 2.657481705284937,
- -2.783346559701183,
- -13.756399883988184,
- 13.131383020668672,
- -0.4376337155223524,
- -15.678688537967744,
- 10.283306376871472,
- 14.89317426754188,
- -4.941208383494091,
- -14.231812435141862,
- 3.2646027287637835,
- 17.229148713687444,
- -2.885918185998449,
- -1.440015043233842,
- -5.757015935913907,
- 17.41126899618849,
- 17.415215284302022
- ],
- "type": "float32"
- },
- "b": {
- "shape": [],
- "data": [2], // square
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 318.4800720214844,
- 0.00398249039426446,
- 97.38143157958984,
- 124.94144439697266,
- 300.8932800292969,
- 140.71298217773438,
- 283.32550048828125,
- 7.062208652496338,
- 7.747018814086914,
- 189.23854064941406,
- 172.43321228027344,
- 0.19152326881885529,
- 245.8212890625,
- 105.74638366699219,
- 221.806640625,
- 24.41554069519043,
- 202.5444793701172,
- 10.657630920410156,
- 296.84356689453125,
- 8.328523635864258,
- 2.073643445968628,
- 33.14323043823242,
- 303.1522521972656,
- 303.2897033691406
- ],
- "type": "float32"
- }
- },
- {
- "name": "pow (sqrt) float32 4D positive base tensor and broadcastable 0D integer exponent scalar",
- "inputs": {
- "a": {
- "shape": [2, 2, 2, 3],
- "data": [
- 1.4186520416325132,
- 19.384846302672862,
- 12.983916515701083,
- 2.460315836803,
- 7.818154966175683,
- 6.944444510618668,
- 12.183951502858129,
- 17.91247403540764,
- 11.35656818684932,
- 8.924248275595188,
- 17.63682367890858,
- 11.49622917976384,
- 18.51627975602645,
- 2.2580489773802714,
- 2.231948203000913,
- 13.629855345962834,
- 17.54841363842334,
- 0.5390733851574936,
- 5.891367616729561,
- 0.12803148642270834,
- 19.654494983574544,
- 3.412272498152542,
- 4.9450348267065225,
- 4.437101298745225
- ],
- "type": "float32"
- },
- "b": {
- "shape": [],
- "data": [0.5], // sqrt
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 1.19107186794281,
- 4.402822494506836,
- 3.6033201217651367,
- 1.5685393810272217,
- 2.7960963249206543,
- 2.6352314949035645,
- 3.490551710128784,
- 4.23231315612793,
- 3.369950771331787,
- 2.9873480796813965,
- 4.199621677398682,
- 3.3906090259552,
- 4.3030548095703125,
- 1.5026806592941284,
- 1.4939706325531006,
- 3.6918632984161377,
- 4.189082622528076,
- 0.7342162132263184,
- 2.4272139072418213,
- 0.35781487822532654,
- 4.4333391189575195,
- 1.847233772277832,
- 2.223743438720703,
- 2.106442928314209
- ],
- "type": "float32"
- }
- },
- {
- "name": "pow float32 4D base tensor and broadcastable 2D integer exponent tensor",
- "inputs": {
- "a": {
- "shape": [2, 2, 2, 3],
- "data": [
- 17.84601042972939,
- -0.06310698009783522,
- -9.868203150557209,
- 11.177720889025082,
- -17.346274412274497,
- 11.862249907078805,
- -16.832276297112916,
- 2.657481705284937,
- -2.783346559701183,
- -13.756399883988184,
- 13.131383020668672,
- -0.4376337155223524,
- -15.678688537967744,
- 10.283306376871472,
- 14.89317426754188,
- -4.941208383494091,
- -14.231812435141862,
- 3.2646027287637835,
- 17.229148713687444,
- -2.885918185998449,
- -1.440015043233842,
- -5.757015935913907,
- 17.41126899618849,
- 17.415215284302022
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 3],
- "data": [
- 5,
- -10,
- -10,
- 7,
- -7,
- -9
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 1810113,
- 998220038144,
- 1.1418765932802444e-10,
- 21800822,
- -2.11619832768406e-9,
- 2.1502860603206386e-10,
- -1351182.875,
- 0.00005692423656000756,
- 0.000035836616007145494,
- -93225256,
- 1.4853429597394552e-8,
- -1698.2552490234375,
- -947433.5,
- 7.562621362477984e-11,
- 1.8626330946375225e-12,
- -71917.1015625,
- -8.45626324519344e-9,
- 0.00002374253199377563,
- 1518165.5,
- 0.00002495513399480842,
- 0.026081321761012077,
- -209595.46875,
- 2.0615180673644318e-9,
- 6.786416914539295e-12
- ],
- "type": "float32"
- }
- },
- {
- "name": "pow float32 4D base tensor and broadcastable 3D integer exponent tensor",
- "inputs": {
- "a": {
- "shape": [2, 2, 2, 3],
- "data": [
- 17.84601042972939,
- -0.06310698009783522,
- -9.868203150557209,
- 11.177720889025082,
- -17.346274412274497,
- 11.862249907078805,
- -16.832276297112916,
- 2.657481705284937,
- -2.783346559701183,
- -13.756399883988184,
- 13.131383020668672,
- -0.4376337155223524,
- -15.678688537967744,
- 10.283306376871472,
- 14.89317426754188,
- -4.941208383494091,
- -14.231812435141862,
- 3.2646027287637835,
- 17.229148713687444,
- -2.885918185998449,
- -1.440015043233842,
- -5.757015935913907,
- 17.41126899618849,
- 17.415215284302022
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 1],
- "data": [
- -5,
- -10,
- 9,
- -6
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 5.524516950572433e-7,
- -999109.625,
- -0.000010685862434911542,
- 3.284485530774539e-11,
- 4.0545030440680696e-13,
- 1.81271334748212e-11,
- -108463955968,
- 6610.47265625,
- -10025.4921875,
- 1.4756086841316574e-7,
- 1.9504606996179064e-7,
- 142.34274291992188,
- -0.0000010554830396358739,
- 0.000008696333679836243,
- 0.0000013647832020069472,
- 1.1525726506533829e-7,
- 2.9335795945217846e-12,
- 0.000007272717084561009,
- 133774827520,
- -13885.326171875,
- -26.625843048095703,
- 0.000027467271138448268,
- 3.5893645389251105e-8,
- 3.584487018315485e-8
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/prelu.json b/tests/wpt/tests/webnn/resources/test_data/prelu.json
deleted file mode 100644
index 14a7c412dd7..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/prelu.json
+++ /dev/null
@@ -1,994 +0,0 @@
-{
- "tests": [
- {
- "name": "prelu float32 0D scalar",
- "inputs": {
- "x": {
- "shape": [],
- "data": [
- -4.794857500523286
- ],
- "type": "float32"
- },
- "slope": {
- "shape": [],
- "data": [
- 1.1202747481570352
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [],
- "data": [
- -5.371557712554932
- ],
- "type": "float32"
- }
- },
- {
- "name": "prelu float32 1D constant tensors",
- "inputs": {
- "x": {
- "shape": [24],
- "data": [
- -2.5491681672317235,
- -4.794857500523286,
- 8.413617520687886,
- 6.108623511441287,
- -8.492292847462334,
- 3.3143364551069876,
- 1.1687212422078108,
- -0.1417628422981423,
- -6.714651930677875,
- 5.787421746282195,
- -3.7556274239369847,
- -4.898286418001732,
- 7.329515995865023,
- -3.9542297833176665,
- 7.067297201348715,
- 9.439736453375971,
- -2.5581801134299775,
- -8.658834185932482,
- 8.475073893236225,
- 4.551425642121982,
- -9.267870491380243,
- -0.26217744010265776,
- 1.325895534951659,
- -7.418311114031475
- ],
- "type": "float32",
- "constant": true
- },
- "slope": {
- "shape": [24],
- "data": [
- 9.343093097130314,
- 0.2800687126385206,
- -4.617085001507579,
- 1.1202747481570352,
- -1.4334710772165593,
- -3.157594908065091,
- -6.289953987035659,
- -5.010787777546328,
- -6.899077379471157,
- 3.572534824190212,
- 6.861966530502535,
- -1.9615313732548287,
- 4.583203900668886,
- 2.664350255679274,
- 9.19295531798543,
- -9.554700087649,
- -5.505102187715796,
- -2.3927369956553557,
- 3.5821293765315954,
- -2.32240037283157,
- -1.9816573593209075,
- 4.155890213640276,
- -1.7995220850663962,
- 9.29585020267449
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- -23.817113876342773,
- -1.342889666557312,
- 8.413617134094238,
- 6.108623504638672,
- 12.173455238342285,
- 3.3143365383148193,
- 1.1687211990356445,
- 0.7103435397148132,
- 46.32490539550781,
- 5.787421703338623,
- -25.7709903717041,
- 9.608142852783203,
- 7.3295159339904785,
- -10.535453796386719,
- 7.067296981811523,
- 9.439736366271973,
- 14.083043098449707,
- 20.718313217163086,
- 8.47507381439209,
- 4.551425457000732,
- 18.365745544433594,
- -1.0895805358886719,
- 1.3258955478668213,
- -68.95950317382812
- ],
- "type": "float32"
- }
- },
- {
- "name": "prelu float32 1D tensors",
- "inputs": {
- "x": {
- "shape": [24],
- "data": [
- -2.5491681672317235,
- -4.794857500523286,
- 8.413617520687886,
- 6.108623511441287,
- -8.492292847462334,
- 3.3143364551069876,
- 1.1687212422078108,
- -0.1417628422981423,
- -6.714651930677875,
- 5.787421746282195,
- -3.7556274239369847,
- -4.898286418001732,
- 7.329515995865023,
- -3.9542297833176665,
- 7.067297201348715,
- 9.439736453375971,
- -2.5581801134299775,
- -8.658834185932482,
- 8.475073893236225,
- 4.551425642121982,
- -9.267870491380243,
- -0.26217744010265776,
- 1.325895534951659,
- -7.418311114031475
- ],
- "type": "float32"
- },
- "slope": {
- "shape": [24],
- "data": [
- 9.343093097130314,
- 0.2800687126385206,
- -4.617085001507579,
- 1.1202747481570352,
- -1.4334710772165593,
- -3.157594908065091,
- -6.289953987035659,
- -5.010787777546328,
- -6.899077379471157,
- 3.572534824190212,
- 6.861966530502535,
- -1.9615313732548287,
- 4.583203900668886,
- 2.664350255679274,
- 9.19295531798543,
- -9.554700087649,
- -5.505102187715796,
- -2.3927369956553557,
- 3.5821293765315954,
- -2.32240037283157,
- -1.9816573593209075,
- 4.155890213640276,
- -1.7995220850663962,
- 9.29585020267449
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- -23.817113876342773,
- -1.342889666557312,
- 8.413617134094238,
- 6.108623504638672,
- 12.173455238342285,
- 3.3143365383148193,
- 1.1687211990356445,
- 0.7103435397148132,
- 46.32490539550781,
- 5.787421703338623,
- -25.7709903717041,
- 9.608142852783203,
- 7.3295159339904785,
- -10.535453796386719,
- 7.067296981811523,
- 9.439736366271973,
- 14.083043098449707,
- 20.718313217163086,
- 8.47507381439209,
- 4.551425457000732,
- 18.365745544433594,
- -1.0895805358886719,
- 1.3258955478668213,
- -68.95950317382812
- ],
- "type": "float32"
- }
- },
- {
- "name": "prelu float32 2D tensors",
- "inputs": {
- "x": {
- "shape": [4, 6],
- "data": [
- -2.5491681672317235,
- -4.794857500523286,
- 8.413617520687886,
- 6.108623511441287,
- -8.492292847462334,
- 3.3143364551069876,
- 1.1687212422078108,
- -0.1417628422981423,
- -6.714651930677875,
- 5.787421746282195,
- -3.7556274239369847,
- -4.898286418001732,
- 7.329515995865023,
- -3.9542297833176665,
- 7.067297201348715,
- 9.439736453375971,
- -2.5581801134299775,
- -8.658834185932482,
- 8.475073893236225,
- 4.551425642121982,
- -9.267870491380243,
- -0.26217744010265776,
- 1.325895534951659,
- -7.418311114031475
- ],
- "type": "float32"
- },
- "slope": {
- "shape": [4, 6],
- "data": [
- 9.343093097130314,
- 0.2800687126385206,
- -4.617085001507579,
- 1.1202747481570352,
- -1.4334710772165593,
- -3.157594908065091,
- -6.289953987035659,
- -5.010787777546328,
- -6.899077379471157,
- 3.572534824190212,
- 6.861966530502535,
- -1.9615313732548287,
- 4.583203900668886,
- 2.664350255679274,
- 9.19295531798543,
- -9.554700087649,
- -5.505102187715796,
- -2.3927369956553557,
- 3.5821293765315954,
- -2.32240037283157,
- -1.9816573593209075,
- 4.155890213640276,
- -1.7995220850663962,
- 9.29585020267449
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- -23.817113876342773,
- -1.342889666557312,
- 8.413617134094238,
- 6.108623504638672,
- 12.173455238342285,
- 3.3143365383148193,
- 1.1687211990356445,
- 0.7103435397148132,
- 46.32490539550781,
- 5.787421703338623,
- -25.7709903717041,
- 9.608142852783203,
- 7.3295159339904785,
- -10.535453796386719,
- 7.067296981811523,
- 9.439736366271973,
- 14.083043098449707,
- 20.718313217163086,
- 8.47507381439209,
- 4.551425457000732,
- 18.365745544433594,
- -1.0895805358886719,
- 1.3258955478668213,
- -68.95950317382812
- ],
- "type": "float32"
- }
- },
- {
- "name": "prelu float32 3D tensors",
- "inputs": {
- "x": {
- "shape": [2, 3, 4],
- "data": [
- -2.5491681672317235,
- -4.794857500523286,
- 8.413617520687886,
- 6.108623511441287,
- -8.492292847462334,
- 3.3143364551069876,
- 1.1687212422078108,
- -0.1417628422981423,
- -6.714651930677875,
- 5.787421746282195,
- -3.7556274239369847,
- -4.898286418001732,
- 7.329515995865023,
- -3.9542297833176665,
- 7.067297201348715,
- 9.439736453375971,
- -2.5581801134299775,
- -8.658834185932482,
- 8.475073893236225,
- 4.551425642121982,
- -9.267870491380243,
- -0.26217744010265776,
- 1.325895534951659,
- -7.418311114031475
- ],
- "type": "float32"
- },
- "slope": {
- "shape": [2, 3, 4],
- "data": [
- 9.343093097130314,
- 0.2800687126385206,
- -4.617085001507579,
- 1.1202747481570352,
- -1.4334710772165593,
- -3.157594908065091,
- -6.289953987035659,
- -5.010787777546328,
- -6.899077379471157,
- 3.572534824190212,
- 6.861966530502535,
- -1.9615313732548287,
- 4.583203900668886,
- 2.664350255679274,
- 9.19295531798543,
- -9.554700087649,
- -5.505102187715796,
- -2.3927369956553557,
- 3.5821293765315954,
- -2.32240037283157,
- -1.9816573593209075,
- 4.155890213640276,
- -1.7995220850663962,
- 9.29585020267449
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 3, 4],
- "data": [
- -23.817113876342773,
- -1.342889666557312,
- 8.413617134094238,
- 6.108623504638672,
- 12.173455238342285,
- 3.3143365383148193,
- 1.1687211990356445,
- 0.7103435397148132,
- 46.32490539550781,
- 5.787421703338623,
- -25.7709903717041,
- 9.608142852783203,
- 7.3295159339904785,
- -10.535453796386719,
- 7.067296981811523,
- 9.439736366271973,
- 14.083043098449707,
- 20.718313217163086,
- 8.47507381439209,
- 4.551425457000732,
- 18.365745544433594,
- -1.0895805358886719,
- 1.3258955478668213,
- -68.95950317382812
- ],
- "type": "float32"
- }
- },
- {
- "name": "prelu float32 4D tensors",
- "inputs": {
- "x": {
- "shape": [2, 2, 2, 3],
- "data": [
- -2.5491681672317235,
- -4.794857500523286,
- 8.413617520687886,
- 6.108623511441287,
- -8.492292847462334,
- 3.3143364551069876,
- 1.1687212422078108,
- -0.1417628422981423,
- -6.714651930677875,
- 5.787421746282195,
- -3.7556274239369847,
- -4.898286418001732,
- 7.329515995865023,
- -3.9542297833176665,
- 7.067297201348715,
- 9.439736453375971,
- -2.5581801134299775,
- -8.658834185932482,
- 8.475073893236225,
- 4.551425642121982,
- -9.267870491380243,
- -0.26217744010265776,
- 1.325895534951659,
- -7.418311114031475
- ],
- "type": "float32"
- },
- "slope": {
- "shape": [2, 2, 2, 3],
- "data": [
- 9.343093097130314,
- 0.2800687126385206,
- -4.617085001507579,
- 1.1202747481570352,
- -1.4334710772165593,
- -3.157594908065091,
- -6.289953987035659,
- -5.010787777546328,
- -6.899077379471157,
- 3.572534824190212,
- 6.861966530502535,
- -1.9615313732548287,
- 4.583203900668886,
- 2.664350255679274,
- 9.19295531798543,
- -9.554700087649,
- -5.505102187715796,
- -2.3927369956553557,
- 3.5821293765315954,
- -2.32240037283157,
- -1.9816573593209075,
- 4.155890213640276,
- -1.7995220850663962,
- 9.29585020267449
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- -23.817113876342773,
- -1.342889666557312,
- 8.413617134094238,
- 6.108623504638672,
- 12.173455238342285,
- 3.3143365383148193,
- 1.1687211990356445,
- 0.7103435397148132,
- 46.32490539550781,
- 5.787421703338623,
- -25.7709903717041,
- 9.608142852783203,
- 7.3295159339904785,
- -10.535453796386719,
- 7.067296981811523,
- 9.439736366271973,
- 14.083043098449707,
- 20.718313217163086,
- 8.47507381439209,
- 4.551425457000732,
- 18.365745544433594,
- -1.0895805358886719,
- 1.3258955478668213,
- -68.95950317382812
- ],
- "type": "float32"
- }
- },
- {
- "name": "prelu float32 5D tensors",
- "inputs": {
- "x": {
- "shape": [2, 2, 1, 2, 3],
- "data": [
- -2.5491681672317235,
- -4.794857500523286,
- 8.413617520687886,
- 6.108623511441287,
- -8.492292847462334,
- 3.3143364551069876,
- 1.1687212422078108,
- -0.1417628422981423,
- -6.714651930677875,
- 5.787421746282195,
- -3.7556274239369847,
- -4.898286418001732,
- 7.329515995865023,
- -3.9542297833176665,
- 7.067297201348715,
- 9.439736453375971,
- -2.5581801134299775,
- -8.658834185932482,
- 8.475073893236225,
- 4.551425642121982,
- -9.267870491380243,
- -0.26217744010265776,
- 1.325895534951659,
- -7.418311114031475
- ],
- "type": "float32"
- },
- "slope": {
- "shape": [2, 2, 1, 2, 3],
- "data": [
- 9.343093097130314,
- 0.2800687126385206,
- -4.617085001507579,
- 1.1202747481570352,
- -1.4334710772165593,
- -3.157594908065091,
- -6.289953987035659,
- -5.010787777546328,
- -6.899077379471157,
- 3.572534824190212,
- 6.861966530502535,
- -1.9615313732548287,
- 4.583203900668886,
- 2.664350255679274,
- 9.19295531798543,
- -9.554700087649,
- -5.505102187715796,
- -2.3927369956553557,
- 3.5821293765315954,
- -2.32240037283157,
- -1.9816573593209075,
- 4.155890213640276,
- -1.7995220850663962,
- 9.29585020267449
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 1, 2, 3],
- "data": [
- -23.817113876342773,
- -1.342889666557312,
- 8.413617134094238,
- 6.108623504638672,
- 12.173455238342285,
- 3.3143365383148193,
- 1.1687211990356445,
- 0.7103435397148132,
- 46.32490539550781,
- 5.787421703338623,
- -25.7709903717041,
- 9.608142852783203,
- 7.3295159339904785,
- -10.535453796386719,
- 7.067296981811523,
- 9.439736366271973,
- 14.083043098449707,
- 20.718313217163086,
- 8.47507381439209,
- 4.551425457000732,
- 18.365745544433594,
- -1.0895805358886719,
- 1.3258955478668213,
- -68.95950317382812
- ],
- "type": "float32"
- }
- },
- {
- "name": "prelu float32 broadcast 4D x 1D slope",
- "inputs": {
- "x": {
- "shape": [2, 2, 2, 3],
- "data": [
- -2.5491681672317235,
- -4.794857500523286,
- 8.413617520687886,
- 6.108623511441287,
- -8.492292847462334,
- 3.3143364551069876,
- 1.1687212422078108,
- -0.1417628422981423,
- -6.714651930677875,
- 5.787421746282195,
- -3.7556274239369847,
- -4.898286418001732,
- 7.329515995865023,
- -3.9542297833176665,
- 7.067297201348715,
- 9.439736453375971,
- -2.5581801134299775,
- -8.658834185932482,
- 8.475073893236225,
- 4.551425642121982,
- -9.267870491380243,
- -0.26217744010265776,
- 1.325895534951659,
- -7.418311114031475
- ],
- "type": "float32"
- },
- "slope": {
- "shape": [3], // broadcast [3] --> [2, 2, 2, 3]
- "data": [
- 5.073923296191488,
- 0.48077445494619653,
- -7.091750168010829
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- -12.934283256530762,
- -2.3052449226379395,
- 8.413617134094238,
- 6.108623504638672,
- -4.082877159118652,
- 3.3143365383148193,
- 1.1687211990356445,
- -0.06815595179796219,
- 47.61863327026367,
- 5.787421703338623,
- -1.8056097030639648,
- 34.737422943115234,
- 7.3295159339904785,
- -1.901092767715454,
- 7.067296981811523,
- 9.439736366271973,
- -1.2299076318740845,
- 61.40629196166992,
- 8.47507381439209,
- 4.551425457000732,
- 65.72542572021484,
- -1.330268144607544,
- 1.3258955478668213,
- 52.60881042480469
- ],
- "type": "float32"
- }
- },
- {
- "name": "prelu float32 broadcast 4D x 1D slope of shape [1]",
- "inputs": {
- "x": {
- "shape": [2, 2, 2, 3],
- "data": [
- -2.5491681672317235,
- -4.794857500523286,
- 8.413617520687886,
- 6.108623511441287,
- -8.492292847462334,
- 3.3143364551069876,
- 1.1687212422078108,
- -0.1417628422981423,
- -6.714651930677875,
- 5.787421746282195,
- -3.7556274239369847,
- -4.898286418001732,
- 7.329515995865023,
- -3.9542297833176665,
- 7.067297201348715,
- 9.439736453375971,
- -2.5581801134299775,
- -8.658834185932482,
- 8.475073893236225,
- 4.551425642121982,
- -9.267870491380243,
- -0.26217744010265776,
- 1.325895534951659,
- -7.418311114031475
- ],
- "type": "float32"
- },
- "slope": {
- "shape": [1], // broadcast [1] --> [2, 2, 2, 3]
- "data": [
- 5.0114545056636395
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- -12.775040626525879,
- -24.029211044311523,
- 8.413617134094238,
- 6.108623504638672,
- -42.558738708496094,
- 3.3143365383148193,
- 1.1687211990356445,
- -0.7104380130767822,
- -33.65017318725586,
- 5.787421703338623,
- -18.821155548095703,
- -24.54753875732422,
- 7.3295159339904785,
- -19.816442489624023,
- 7.067296981811523,
- 9.439736366271973,
- -12.82020378112793,
- -43.39335632324219,
- 8.47507381439209,
- 4.551425457000732,
- -46.44551467895508,
- -1.3138903379440308,
- 1.3258955478668213,
- -37.17652893066406
- ],
- "type": "float32"
- }
- },
- {
- "name": "prelu float32 broadcast 4D x 2D slope",
- "inputs": {
- "x": {
- "shape": [2, 2, 2, 3],
- "data": [
- -2.5491681672317235,
- -4.794857500523286,
- 8.413617520687886,
- 6.108623511441287,
- -8.492292847462334,
- 3.3143364551069876,
- 1.1687212422078108,
- -0.1417628422981423,
- -6.714651930677875,
- 5.787421746282195,
- -3.7556274239369847,
- -4.898286418001732,
- 7.329515995865023,
- -3.9542297833176665,
- 7.067297201348715,
- 9.439736453375971,
- -2.5581801134299775,
- -8.658834185932482,
- 8.475073893236225,
- 4.551425642121982,
- -9.267870491380243,
- -0.26217744010265776,
- 1.325895534951659,
- -7.418311114031475
- ],
- "type": "float32"
- },
- "slope": {
- "shape": [2, 3], // broadcast [2, 3] --> [2, 2, 2, 3]
- "data": [
- 4.8742760041637645,
- -8.50163357869285,
- 1.1819270477816914,
- -9.985190366937573,
- -4.424202960837338,
- -6.654683521499036
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- -12.425349235534668,
- 40.764122009277344,
- 8.413617134094238,
- 6.108623504638672,
- 37.571624755859375,
- 3.3143365383148193,
- 1.1687211990356445,
- 1.2052156925201416,
- -7.936229228973389,
- 5.787421703338623,
- 16.615657806396484,
- 32.5965461730957,
- 7.3295159339904785,
- 33.61741256713867,
- 7.067296981811523,
- 9.439736366271973,
- 11.31790828704834,
- 57.621803283691406,
- 8.47507381439209,
- 4.551425457000732,
- -10.953948020935059,
- 2.617891550064087,
- 1.3258955478668213,
- 49.366512298583984
- ],
- "type": "float32"
- }
- },
- {
- "name": "prelu float32 broadcast 4D x 3D slope",
- "inputs": {
- "x": {
- "shape": [2, 2, 2, 3],
- "data": [
- -2.5491681672317235,
- -4.794857500523286,
- 8.413617520687886,
- 6.108623511441287,
- -8.492292847462334,
- 3.3143364551069876,
- 1.1687212422078108,
- -0.1417628422981423,
- -6.714651930677875,
- 5.787421746282195,
- -3.7556274239369847,
- -4.898286418001732,
- 7.329515995865023,
- -3.9542297833176665,
- 7.067297201348715,
- 9.439736453375971,
- -2.5581801134299775,
- -8.658834185932482,
- 8.475073893236225,
- 4.551425642121982,
- -9.267870491380243,
- -0.26217744010265776,
- 1.325895534951659,
- -7.418311114031475
- ],
- "type": "float32"
- },
- "slope": {
- "shape": [1, 1, 3], // broadcast [1, 1, 3] --> [2, 2, 2, 3]
- "data": [
- 5.073923296191488,
- 0.48077445494619653,
- -7.091750168010829
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- -12.934283256530762,
- -2.3052449226379395,
- 8.413617134094238,
- 6.108623504638672,
- -4.082877159118652,
- 3.3143365383148193,
- 1.1687211990356445,
- -0.06815595179796219,
- 47.61863327026367,
- 5.787421703338623,
- -1.8056097030639648,
- 34.737422943115234,
- 7.3295159339904785,
- -1.901092767715454,
- 7.067296981811523,
- 9.439736366271973,
- -1.2299076318740845,
- 61.40629196166992,
- 8.47507381439209,
- 4.551425457000732,
- 65.72542572021484,
- -1.330268144607544,
- 1.3258955478668213,
- 52.60881042480469
- ],
- "type": "float32"
- }
- },
- {
- "name": "prelu float32 broadcast 4D x 4D slope",
- "inputs": {
- "x": {
- "shape": [2, 2, 2, 3],
- "data": [
- -2.5491681672317235,
- -4.794857500523286,
- 8.413617520687886,
- 6.108623511441287,
- -8.492292847462334,
- 3.3143364551069876,
- 1.1687212422078108,
- -0.1417628422981423,
- -6.714651930677875,
- 5.787421746282195,
- -3.7556274239369847,
- -4.898286418001732,
- 7.329515995865023,
- -3.9542297833176665,
- 7.067297201348715,
- 9.439736453375971,
- -2.5581801134299775,
- -8.658834185932482,
- 8.475073893236225,
- 4.551425642121982,
- -9.267870491380243,
- -0.26217744010265776,
- 1.325895534951659,
- -7.418311114031475
- ],
- "type": "float32"
- },
- "slope": {
- "shape": [1, 1, 1, 1], // broadcast [1, 1, 1, 1] --> [2, 2, 2, 3]
- "data": [
- 5.0114545056636395
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- -12.775040626525879,
- -24.029211044311523,
- 8.413617134094238,
- 6.108623504638672,
- -42.558738708496094,
- 3.3143365383148193,
- 1.1687211990356445,
- -0.7104380130767822,
- -33.65017318725586,
- 5.787421703338623,
- -18.821155548095703,
- -24.54753875732422,
- 7.3295159339904785,
- -19.816442489624023,
- 7.067296981811523,
- 9.439736366271973,
- -12.82020378112793,
- -43.39335632324219,
- 8.47507381439209,
- 4.551425457000732,
- -46.44551467895508,
- -1.3138903379440308,
- 1.3258955478668213,
- -37.17652893066406
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/reciprocal.json b/tests/wpt/tests/webnn/resources/test_data/reciprocal.json
deleted file mode 100644
index c71ac280050..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/reciprocal.json
+++ /dev/null
@@ -1,421 +0,0 @@
-{
- "tests": [
- {
- "name": "reciprocal float32 0D scalar",
- "inputs": {
- "x": {
- "shape": [],
- "data": [
- -9.363490722293237
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [],
- "data": [
- -0.10679777711629868
- ],
- "type": "float32"
- }
- },
- {
- "name": "reciprocal float32 1D constant tensor",
- "inputs": {
- "x": {
- "shape": [24],
- "data": [
- -1.011086269320547,
- 4.6215385203163315,
- 2.4173768502126727,
- -8.934871773645101,
- -3.348558485147799,
- -8.803302423903414,
- 8.82632175955639,
- 6.572828698368518,
- 6.639494748363678,
- 2.6842704650429496,
- -4.627160556770815,
- -6.873653395070409,
- -1.185412145486616,
- 0.9572811852263605,
- 0.021320551999082227,
- 0.35645850544829827,
- 4.827780063442164,
- 1.312808185701284,
- 8.246278209083616,
- -0.20391698798075097,
- -9.039937028172055,
- 9.94280947774324,
- -9.540112102987099,
- -0.08022661906399975
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- -0.9890353083610535,
- 0.21637815237045288,
- 0.4136715531349182,
- -0.111921027302742,
- -0.29863595962524414,
- -0.11359372735023499,
- 0.1132974773645401,
- 0.1521414965391159,
- 0.15061387419700623,
- 0.3725407123565674,
- -0.21611526608467102,
- -0.14548304677009583,
- -0.8435884118080139,
- 1.044625163078308,
- 46.90310287475586,
- 2.805375576019287,
- 0.20713452994823456,
- 0.761725902557373,
- 0.12126683443784714,
- -4.903956413269043,
- -0.11062023788690567,
- 0.10057520121335983,
- -0.10482056438922882,
- -12.464690208435059
- ],
- "type": "float32"
- }
- },
- {
- "name": "reciprocal float32 1D tensor",
- "inputs": {
- "x": {
- "shape": [24],
- "data": [
- -1.011086269320547,
- 4.6215385203163315,
- 2.4173768502126727,
- -8.934871773645101,
- -3.348558485147799,
- -8.803302423903414,
- 8.82632175955639,
- 6.572828698368518,
- 6.639494748363678,
- 2.6842704650429496,
- -4.627160556770815,
- -6.873653395070409,
- -1.185412145486616,
- 0.9572811852263605,
- 0.021320551999082227,
- 0.35645850544829827,
- 4.827780063442164,
- 1.312808185701284,
- 8.246278209083616,
- -0.20391698798075097,
- -9.039937028172055,
- 9.94280947774324,
- -9.540112102987099,
- -0.08022661906399975
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- -0.9890353083610535,
- 0.21637815237045288,
- 0.4136715531349182,
- -0.111921027302742,
- -0.29863595962524414,
- -0.11359372735023499,
- 0.1132974773645401,
- 0.1521414965391159,
- 0.15061387419700623,
- 0.3725407123565674,
- -0.21611526608467102,
- -0.14548304677009583,
- -0.8435884118080139,
- 1.044625163078308,
- 46.90310287475586,
- 2.805375576019287,
- 0.20713452994823456,
- 0.761725902557373,
- 0.12126683443784714,
- -4.903956413269043,
- -0.11062023788690567,
- 0.10057520121335983,
- -0.10482056438922882,
- -12.464690208435059
- ],
- "type": "float32"
- }
- },
- {
- "name": "reciprocal float32 2D tensor",
- "inputs": {
- "x": {
- "shape": [4, 6],
- "data": [
- -1.011086269320547,
- 4.6215385203163315,
- 2.4173768502126727,
- -8.934871773645101,
- -3.348558485147799,
- -8.803302423903414,
- 8.82632175955639,
- 6.572828698368518,
- 6.639494748363678,
- 2.6842704650429496,
- -4.627160556770815,
- -6.873653395070409,
- -1.185412145486616,
- 0.9572811852263605,
- 0.021320551999082227,
- 0.35645850544829827,
- 4.827780063442164,
- 1.312808185701284,
- 8.246278209083616,
- -0.20391698798075097,
- -9.039937028172055,
- 9.94280947774324,
- -9.540112102987099,
- -0.08022661906399975
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- -0.9890353083610535,
- 0.21637815237045288,
- 0.4136715531349182,
- -0.111921027302742,
- -0.29863595962524414,
- -0.11359372735023499,
- 0.1132974773645401,
- 0.1521414965391159,
- 0.15061387419700623,
- 0.3725407123565674,
- -0.21611526608467102,
- -0.14548304677009583,
- -0.8435884118080139,
- 1.044625163078308,
- 46.90310287475586,
- 2.805375576019287,
- 0.20713452994823456,
- 0.761725902557373,
- 0.12126683443784714,
- -4.903956413269043,
- -0.11062023788690567,
- 0.10057520121335983,
- -0.10482056438922882,
- -12.464690208435059
- ],
- "type": "float32"
- }
- },
- {
- "name": "reciprocal float32 3D tensor",
- "inputs": {
- "x": {
- "shape": [2, 3, 4],
- "data": [
- -1.011086269320547,
- 4.6215385203163315,
- 2.4173768502126727,
- -8.934871773645101,
- -3.348558485147799,
- -8.803302423903414,
- 8.82632175955639,
- 6.572828698368518,
- 6.639494748363678,
- 2.6842704650429496,
- -4.627160556770815,
- -6.873653395070409,
- -1.185412145486616,
- 0.9572811852263605,
- 0.021320551999082227,
- 0.35645850544829827,
- 4.827780063442164,
- 1.312808185701284,
- 8.246278209083616,
- -0.20391698798075097,
- -9.039937028172055,
- 9.94280947774324,
- -9.540112102987099,
- -0.08022661906399975
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 3, 4],
- "data": [
- -0.9890353083610535,
- 0.21637815237045288,
- 0.4136715531349182,
- -0.111921027302742,
- -0.29863595962524414,
- -0.11359372735023499,
- 0.1132974773645401,
- 0.1521414965391159,
- 0.15061387419700623,
- 0.3725407123565674,
- -0.21611526608467102,
- -0.14548304677009583,
- -0.8435884118080139,
- 1.044625163078308,
- 46.90310287475586,
- 2.805375576019287,
- 0.20713452994823456,
- 0.761725902557373,
- 0.12126683443784714,
- -4.903956413269043,
- -0.11062023788690567,
- 0.10057520121335983,
- -0.10482056438922882,
- -12.464690208435059
- ],
- "type": "float32"
- }
- },
- {
- "name": "reciprocal float32 4D tensor",
- "inputs": {
- "x": {
- "shape": [2, 2, 2, 3],
- "data": [
- -1.011086269320547,
- 4.6215385203163315,
- 2.4173768502126727,
- -8.934871773645101,
- -3.348558485147799,
- -8.803302423903414,
- 8.82632175955639,
- 6.572828698368518,
- 6.639494748363678,
- 2.6842704650429496,
- -4.627160556770815,
- -6.873653395070409,
- -1.185412145486616,
- 0.9572811852263605,
- 0.021320551999082227,
- 0.35645850544829827,
- 4.827780063442164,
- 1.312808185701284,
- 8.246278209083616,
- -0.20391698798075097,
- -9.039937028172055,
- 9.94280947774324,
- -9.540112102987099,
- -0.08022661906399975
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- -0.9890353083610535,
- 0.21637815237045288,
- 0.4136715531349182,
- -0.111921027302742,
- -0.29863595962524414,
- -0.11359372735023499,
- 0.1132974773645401,
- 0.1521414965391159,
- 0.15061387419700623,
- 0.3725407123565674,
- -0.21611526608467102,
- -0.14548304677009583,
- -0.8435884118080139,
- 1.044625163078308,
- 46.90310287475586,
- 2.805375576019287,
- 0.20713452994823456,
- 0.761725902557373,
- 0.12126683443784714,
- -4.903956413269043,
- -0.11062023788690567,
- 0.10057520121335983,
- -0.10482056438922882,
- -12.464690208435059
- ],
- "type": "float32"
- }
- },
- {
- "name": "reciprocal float32 5D tensor",
- "inputs": {
- "x": {
- "shape": [2, 1, 4, 1, 3],
- "data": [
- -1.011086269320547,
- 4.6215385203163315,
- 2.4173768502126727,
- -8.934871773645101,
- -3.348558485147799,
- -8.803302423903414,
- 8.82632175955639,
- 6.572828698368518,
- 6.639494748363678,
- 2.6842704650429496,
- -4.627160556770815,
- -6.873653395070409,
- -1.185412145486616,
- 0.9572811852263605,
- 0.021320551999082227,
- 0.35645850544829827,
- 4.827780063442164,
- 1.312808185701284,
- 8.246278209083616,
- -0.20391698798075097,
- -9.039937028172055,
- 9.94280947774324,
- -9.540112102987099,
- -0.08022661906399975
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 1, 4, 1, 3],
- "data": [
- -0.9890353083610535,
- 0.21637815237045288,
- 0.4136715531349182,
- -0.111921027302742,
- -0.29863595962524414,
- -0.11359372735023499,
- 0.1132974773645401,
- 0.1521414965391159,
- 0.15061387419700623,
- 0.3725407123565674,
- -0.21611526608467102,
- -0.14548304677009583,
- -0.8435884118080139,
- 1.044625163078308,
- 46.90310287475586,
- 2.805375576019287,
- 0.20713452994823456,
- 0.761725902557373,
- 0.12126683443784714,
- -4.903956413269043,
- -0.11062023788690567,
- 0.10057520121335983,
- -0.10482056438922882,
- -12.464690208435059
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/reduce_l1.json b/tests/wpt/tests/webnn/resources/test_data/reduce_l1.json
deleted file mode 100644
index 7637c02be23..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/reduce_l1.json
+++ /dev/null
@@ -1,784 +0,0 @@
-{
- "tests": [
- {
- "name": "reduceL1 float32 0D constant tensor default options", // default options: {axes: null, keepDimensions: false}
- "inputs": {
- "input": {
- "shape": [],
- "data": [
- 5.50882625579834
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "data": 5.50882625579834,
- "type": "float32"
- }
- },
- {
- "name": "reduceL1 float32 0D constant tensor empty axes",
- "inputs": {
- "input": {
- "shape": [],
- "data": [
- 5.50882625579834
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "axes": []
- },
- "expected": {
- "name": "output",
- "data": 5.50882625579834,
- "type": "float32"
- }
- },
- {
- "name": "reduceL1 float32 1D constant tensor all positive default options", // default options: {axes: null, keepDimensions: false}
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- 5.508826448139126,
- 50.61575563515446,
- 1.6773050539454992,
- 84.21352292914005,
- 15.664374631289203,
- 52.89714899357876,
- 9.12515782683123,
- 28.93762412170997,
- 12.567061064158146,
- 11.399989904078245,
- 86.91246376729916,
- 64.51329469980782,
- 71.28342153263038,
- 76.34410635436484,
- 41.53409150301335,
- 97.56533284219819,
- 31.803831597266385,
- 6.0897547388209405,
- 61.70843555684953,
- 69.76119433406723,
- 38.91940474525253,
- 52.28833355637117,
- 22.31783714884341,
- 99.0719229634137
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "data": 1092.72021484375,
- "type": "float32"
- }
- },
- {
- "name": "reduceL1 float32 1D tensor all positive default options", // default options: {axes: null, keepDimensions: false}
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- 5.508826448139126,
- 50.61575563515446,
- 1.6773050539454992,
- 84.21352292914005,
- 15.664374631289203,
- 52.89714899357876,
- 9.12515782683123,
- 28.93762412170997,
- 12.567061064158146,
- 11.399989904078245,
- 86.91246376729916,
- 64.51329469980782,
- 71.28342153263038,
- 76.34410635436484,
- 41.53409150301335,
- 97.56533284219819,
- 31.803831597266385,
- 6.0897547388209405,
- 61.70843555684953,
- 69.76119433406723,
- 38.91940474525253,
- 52.28833355637117,
- 22.31783714884341,
- 99.0719229634137
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 1092.72021484375,
- "type": "float32"
- }
- },
- {
- "name": "reduceL1 float32 1D tensor all negative default options",
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- -98.83928567774318,
- -57.66743928106195,
- -57.101201850012814,
- -6.693042101576822,
- -45.305847421047595,
- -86.68338950685379,
- -74.71875033016443,
- -76.46740234611214,
- -75.37676973458242,
- -18.22093937407911,
- -54.64426752595342,
- -36.45240031615904,
- -18.322682023656796,
- -47.94379514838312,
- -40.1997828250384,
- -15.830483512310494,
- -48.88335705253115,
- -41.60024225085446,
- -20.65563368305152,
- -92.29933856234294,
- -46.288581883419646,
- -80.57185804741187,
- -25.494730168492268,
- -48.96730121051369
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 1215.228515625,
- "type": "float32"
- }
- },
- {
- "name": "reduceL1 float32 1D tensor all positive integers default options", // test with float32 values which are equivalent to integers
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- 18,
- 29,
- 35,
- 36,
- 4,
- 76,
- 41,
- 18,
- 53,
- 29,
- 25,
- 94,
- 26,
- 1,
- 3,
- 68,
- 39,
- 25,
- 87,
- 30,
- 39,
- 75,
- 76,
- 66
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 993,
- "type": "float32"
- }
- },
- {
- "name": "reduceL1 float32 1D tensor all negative integers default options", // test with float32 values which are equivalent to integers
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- -92,
- -52,
- -88,
- -78,
- -20,
- -73,
- -42,
- -57,
- -39,
- -75,
- -17,
- -36,
- -81,
- -24,
- -88,
- -91,
- -76,
- -5,
- -44,
- -66,
- -96,
- -8,
- -69,
- -27
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 1344,
- "type": "float32"
- }
- },
- {
- "name": "reduceL1 float32 2D tensor default options",
- "inputs": {
- "input": {
- "shape": [4, 6],
- "data": [
- 5.508826448139126,
- 50.61575563515446,
- 1.6773050539454992,
- 84.21352292914005,
- 15.664374631289203,
- 52.89714899357876,
- 9.12515782683123,
- 28.93762412170997,
- 12.567061064158146,
- 11.399989904078245,
- 86.91246376729916,
- 64.51329469980782,
- 71.28342153263038,
- 76.34410635436484,
- 41.53409150301335,
- 97.56533284219819,
- 31.803831597266385,
- 6.0897547388209405,
- 61.70843555684953,
- 69.76119433406723,
- 38.91940474525253,
- 52.28833355637117,
- 22.31783714884341,
- 99.0719229634137
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 1092.72021484375,
- "type": "float32"
- }
- },
- {
- "name": "reduceL1 float32 3D tensor default options",
- "inputs": {
- "input": {
- "shape": [2, 3, 4],
- "data": [
- 5.508826448139126,
- 50.61575563515446,
- 1.6773050539454992,
- 84.21352292914005,
- 15.664374631289203,
- 52.89714899357876,
- 9.12515782683123,
- 28.93762412170997,
- 12.567061064158146,
- 11.399989904078245,
- 86.91246376729916,
- 64.51329469980782,
- 71.28342153263038,
- 76.34410635436484,
- 41.53409150301335,
- 97.56533284219819,
- 31.803831597266385,
- 6.0897547388209405,
- 61.70843555684953,
- 69.76119433406723,
- 38.91940474525253,
- 52.28833355637117,
- 22.31783714884341,
- 99.0719229634137
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 1092.72021484375,
- "type": "float32"
- }
- },
- {
- "name": "reduceL1 float32 4D tensor default options",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 5.508826448139126,
- 50.61575563515446,
- 1.6773050539454992,
- 84.21352292914005,
- 15.664374631289203,
- 52.89714899357876,
- 9.12515782683123,
- 28.93762412170997,
- 12.567061064158146,
- 11.399989904078245,
- 86.91246376729916,
- 64.51329469980782,
- 71.28342153263038,
- 76.34410635436484,
- 41.53409150301335,
- 97.56533284219819,
- 31.803831597266385,
- 6.0897547388209405,
- 61.70843555684953,
- 69.76119433406723,
- 38.91940474525253,
- 52.28833355637117,
- 22.31783714884341,
- 99.0719229634137
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 1092.72021484375,
- "type": "float32"
- }
- },
- {
- "name": "reduceL1 float32 5D tensor default options",
- "inputs": {
- "input": {
- "shape": [2, 1, 4, 1, 3],
- "data": [
- 5.508826448139126,
- 50.61575563515446,
- 1.6773050539454992,
- 84.21352292914005,
- 15.664374631289203,
- 52.89714899357876,
- 9.12515782683123,
- 28.93762412170997,
- 12.567061064158146,
- 11.399989904078245,
- 86.91246376729916,
- 64.51329469980782,
- 71.28342153263038,
- 76.34410635436484,
- 41.53409150301335,
- 97.56533284219819,
- 31.803831597266385,
- 6.0897547388209405,
- 61.70843555684953,
- 69.76119433406723,
- 38.91940474525253,
- 52.28833355637117,
- 22.31783714884341,
- 99.0719229634137
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 1092.72021484375,
- "type": "float32"
- }
- },
- {
- "name": "reduceL1 float32 3D tensor options.axes",
- "inputs": {
- "input": {
- "shape": [2, 3, 4],
- "data": [
- 5.508826448139126,
- 50.61575563515446,
- 1.6773050539454992,
- 84.21352292914005,
- 15.664374631289203,
- 52.89714899357876,
- 9.12515782683123,
- 28.93762412170997,
- 12.567061064158146,
- 11.399989904078245,
- 86.91246376729916,
- 64.51329469980782,
- 71.28342153263038,
- 76.34410635436484,
- 41.53409150301335,
- 97.56533284219819,
- 31.803831597266385,
- 6.0897547388209405,
- 61.70843555684953,
- 69.76119433406723,
- 38.91940474525253,
- 52.28833355637117,
- 22.31783714884341,
- 99.0719229634137
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": [2]
- },
- "expected": {
- "name": "output",
- "shape": [2, 3],
- "data": [
- 142.01541137695312,
- 106.62430572509766,
- 175.39280700683594,
- 286.7269592285156,
- 169.36322021484375,
- 212.59750366210938
- ],
- "type": "float32"
- }
- },
- {
- "name": "reduceL1 float32 4D tensor options.axes",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 5.508826448139126,
- 50.61575563515446,
- 1.6773050539454992,
- 84.21352292914005,
- 15.664374631289203,
- 52.89714899357876,
- 9.12515782683123,
- 28.93762412170997,
- 12.567061064158146,
- 11.399989904078245,
- 86.91246376729916,
- 64.51329469980782,
- 71.28342153263038,
- 76.34410635436484,
- 41.53409150301335,
- 97.56533284219819,
- 31.803831597266385,
- 6.0897547388209405,
- 61.70843555684953,
- 69.76119433406723,
- 38.91940474525253,
- 52.28833355637117,
- 22.31783714884341,
- 99.0719229634137
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": [0, 2]
- },
- "expected": {
- "name": "output",
- "shape": [2, 3],
- "data": [
- 258.57110595703125,
- 174.42807006835938,
- 102.19830322265625,
- 134.52191162109375,
- 207.92910766601562,
- 215.07168579101562
- ],
- "type": "float32"
- }
- },
- {
- "name": "reduceL1 float32 3D tensor options.keepDimensions=false",
- "inputs": {
- "input": {
- "shape": [2, 3, 4],
- "data": [
- 5.508826448139126,
- 50.61575563515446,
- 1.6773050539454992,
- 84.21352292914005,
- 15.664374631289203,
- 52.89714899357876,
- 9.12515782683123,
- 28.93762412170997,
- 12.567061064158146,
- 11.399989904078245,
- 86.91246376729916,
- 64.51329469980782,
- 71.28342153263038,
- 76.34410635436484,
- 41.53409150301335,
- 97.56533284219819,
- 31.803831597266385,
- 6.0897547388209405,
- 61.70843555684953,
- 69.76119433406723,
- 38.91940474525253,
- 52.28833355637117,
- 22.31783714884341,
- 99.0719229634137
- ],
- "type": "float32"
- }
- },
- "options": {
- "keepDimensions": false
- },
- "expected": {
- "name": "output",
- "data": 1092.72021484375,
- "type": "float32"
- }
- },
- {
- "name": "reduceL1 float32 3D tensor options.keepDimensions=true",
- "inputs": {
- "input": {
- "shape": [2, 3, 4],
- "data": [
- 5.508826448139126,
- 50.61575563515446,
- 1.6773050539454992,
- 84.21352292914005,
- 15.664374631289203,
- 52.89714899357876,
- 9.12515782683123,
- 28.93762412170997,
- 12.567061064158146,
- 11.399989904078245,
- 86.91246376729916,
- 64.51329469980782,
- 71.28342153263038,
- 76.34410635436484,
- 41.53409150301335,
- 97.56533284219819,
- 31.803831597266385,
- 6.0897547388209405,
- 61.70843555684953,
- 69.76119433406723,
- 38.91940474525253,
- 52.28833355637117,
- 22.31783714884341,
- 99.0719229634137
- ],
- "type": "float32"
- }
- },
- "options": {
- "keepDimensions": true
- },
- "expected": {
- "name": "output",
- "shape": [1, 1, 1],
- "data": [
- 1092.72021484375
- ],
- "type": "float32"
- }
- },
- {
- "name": "reduceL1 float32 4D tensor options.keepDimensions=false",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 5.508826448139126,
- 50.61575563515446,
- 1.6773050539454992,
- 84.21352292914005,
- 15.664374631289203,
- 52.89714899357876,
- 9.12515782683123,
- 28.93762412170997,
- 12.567061064158146,
- 11.399989904078245,
- 86.91246376729916,
- 64.51329469980782,
- 71.28342153263038,
- 76.34410635436484,
- 41.53409150301335,
- 97.56533284219819,
- 31.803831597266385,
- 6.0897547388209405,
- 61.70843555684953,
- 69.76119433406723,
- 38.91940474525253,
- 52.28833355637117,
- 22.31783714884341,
- 99.0719229634137
- ],
- "type": "float32"
- }
- },
- "options": {
- "keepDimensions": false
- },
- "expected": {
- "name": "output",
- "data": 1092.72021484375,
- "type": "float32"
- }
- },
- {
- "name": "reduceL1 float32 4D tensor options.keepDimensions=true",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 5.508826448139126,
- 50.61575563515446,
- 1.6773050539454992,
- 84.21352292914005,
- 15.664374631289203,
- 52.89714899357876,
- 9.12515782683123,
- 28.93762412170997,
- 12.567061064158146,
- 11.399989904078245,
- 86.91246376729916,
- 64.51329469980782,
- 71.28342153263038,
- 76.34410635436484,
- 41.53409150301335,
- 97.56533284219819,
- 31.803831597266385,
- 6.0897547388209405,
- 61.70843555684953,
- 69.76119433406723,
- 38.91940474525253,
- 52.28833355637117,
- 22.31783714884341,
- 99.0719229634137
- ],
- "type": "float32"
- }
- },
- "options": {
- "keepDimensions": true
- },
- "expected": {
- "name": "output",
- "shape": [1, 1, 1, 1],
- "data": [
- 1092.72021484375
- ],
- "type": "float32"
- }
- },
- {
- "name": "reduceL1 float32 4D tensor options.axes with options.keepDimensions=false",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 5.508826448139126,
- 50.61575563515446,
- 1.6773050539454992,
- 84.21352292914005,
- 15.664374631289203,
- 52.89714899357876,
- 9.12515782683123,
- 28.93762412170997,
- 12.567061064158146,
- 11.399989904078245,
- 86.91246376729916,
- 64.51329469980782,
- 71.28342153263038,
- 76.34410635436484,
- 41.53409150301335,
- 97.56533284219819,
- 31.803831597266385,
- 6.0897547388209405,
- 61.70843555684953,
- 69.76119433406723,
- 38.91940474525253,
- 52.28833355637117,
- 22.31783714884341,
- 99.0719229634137
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": [1, 3],
- "keepDimensions": false
- },
- "expected": {
- "name": "output",
- "shape": [2, 2],
- "data": [
- 108.43173217773438,
- 315.6007995605469,
- 359.5506591796875,
- 309.13702392578125
- ],
- "type": "float32"
- }
- },
- {
- "name": "reduceL1 float32 4D tensor options.axes with options.keepDimensions=true",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 5.508826448139126,
- 50.61575563515446,
- 1.6773050539454992,
- 84.21352292914005,
- 15.664374631289203,
- 52.89714899357876,
- 9.12515782683123,
- 28.93762412170997,
- 12.567061064158146,
- 11.399989904078245,
- 86.91246376729916,
- 64.51329469980782,
- 71.28342153263038,
- 76.34410635436484,
- 41.53409150301335,
- 97.56533284219819,
- 31.803831597266385,
- 6.0897547388209405,
- 61.70843555684953,
- 69.76119433406723,
- 38.91940474525253,
- 52.28833355637117,
- 22.31783714884341,
- 99.0719229634137
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": [1, 3],
- "keepDimensions": true
- },
- "expected": {
- "name": "output",
- "shape": [2, 1, 2, 1],
- "data": [
- 108.43173217773438,
- 315.6007995605469,
- 359.5506591796875,
- 309.13702392578125
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/reduce_l2.json b/tests/wpt/tests/webnn/resources/test_data/reduce_l2.json
deleted file mode 100644
index b4d270a7019..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/reduce_l2.json
+++ /dev/null
@@ -1,784 +0,0 @@
-{
- "tests": [
- {
- "name": "reduceL2 float32 0D constant tensor default options", // default options: {axes: null, keepDimensions: false}
- "inputs": {
- "input": {
- "shape": [],
- "data": [
- 4.860228061676025
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "data": 4.860228061676025,
- "type": "float32"
- }
- },
- {
- "name": "reduceL2 float32 0D constant tensor empty axes",
- "inputs": {
- "input": {
- "shape": [],
- "data": [
- 4.860228061676025
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "axes": []
- },
- "expected": {
- "name": "output",
- "data": 4.860228061676025,
- "type": "float32"
- }
- },
- {
- "name": "reduceL2 float32 1D constant tensor all positive default options", // default options: {axes: null, keepDimensions: false}
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- 4.860227954324237,
- 88.23184532015614,
- 54.489688892595865,
- 64.75027573238448,
- 6.855991445231058,
- 91.3987084155092,
- 41.888577644260664,
- 73.65445188651776,
- 35.31573479319383,
- 48.345430062443896,
- 82.3919051922353,
- 77.86200561022456,
- 93.31141688733462,
- 62.486883544675194,
- 60.292898644959706,
- 13.23059966965019,
- 20.535988317971942,
- 53.451616950541414,
- 11.32008585820996,
- 64.75763553379184,
- 43.65894603418228,
- 0.8374307376408652,
- 0.6848266407317727,
- 33.504704671527506
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "data": 272.0996398925781,
- "type": "float32"
- }
- },
- {
- "name": "reduceL2 float32 1D tensor all positive default options", // default options: {axes: null, keepDimensions: false}
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- 4.860227954324237,
- 88.23184532015614,
- 54.489688892595865,
- 64.75027573238448,
- 6.855991445231058,
- 91.3987084155092,
- 41.888577644260664,
- 73.65445188651776,
- 35.31573479319383,
- 48.345430062443896,
- 82.3919051922353,
- 77.86200561022456,
- 93.31141688733462,
- 62.486883544675194,
- 60.292898644959706,
- 13.23059966965019,
- 20.535988317971942,
- 53.451616950541414,
- 11.32008585820996,
- 64.75763553379184,
- 43.65894603418228,
- 0.8374307376408652,
- 0.6848266407317727,
- 33.504704671527506
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 272.0996398925781,
- "type": "float32"
- }
- },
- {
- "name": "reduceL2 float32 1D tensor all negative default options",
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- -66.80042739154972,
- -53.00005108985402,
- -59.58587770117833,
- -46.14393008028177,
- -49.60613922872308,
- -12.832738832929593,
- -88.05061277508285,
- -75.56246522621561,
- -50.767774970060664,
- -36.96630141451547,
- -26.34404432713906,
- -58.905464928590476,
- -94.28752832403735,
- -22.780279721601616,
- -84.34877530084705,
- -60.477345782692815,
- -41.45580712299912,
- -92.84781353832356,
- -85.0544854150549,
- -30.23526041853337,
- -47.33807956591096,
- -25.26842900087003,
- -78.1195878278582,
- -28.3309437256642
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 292.57574462890625,
- "type": "float32"
- }
- },
- {
- "name": "reduceL2 float32 1D tensor all positive integers default options", // test with float32 values which are equivalent to integers
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- 4,
- 29,
- 8,
- 56,
- 42,
- 78,
- 89,
- 64,
- 56,
- 81,
- 85,
- 18,
- 6,
- 39,
- 35,
- 63,
- 87,
- 50,
- 81,
- 89,
- 5,
- 8,
- 37,
- 37
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 274.4029846191406,
- "type": "float32"
- }
- },
- {
- "name": "reduceL2 float32 1D tensor all negative integers default options", // test with float32 values which are equivalent to integers
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- -70,
- -78,
- -65,
- -77,
- -25,
- -47,
- -63,
- -67,
- -66,
- -15,
- -28,
- -75,
- -88,
- -54,
- -13,
- -27,
- -5,
- -18,
- -68,
- -71,
- -50,
- -56,
- -99,
- -99
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 300.3830871582031,
- "type": "float32"
- }
- },
- {
- "name": "reduceL2 float32 2D tensor default options",
- "inputs": {
- "input": {
- "shape": [4, 6],
- "data": [
- 4.860227954324237,
- 88.23184532015614,
- 54.489688892595865,
- 64.75027573238448,
- 6.855991445231058,
- 91.3987084155092,
- 41.888577644260664,
- 73.65445188651776,
- 35.31573479319383,
- 48.345430062443896,
- 82.3919051922353,
- 77.86200561022456,
- 93.31141688733462,
- 62.486883544675194,
- 60.292898644959706,
- 13.23059966965019,
- 20.535988317971942,
- 53.451616950541414,
- 11.32008585820996,
- 64.75763553379184,
- 43.65894603418228,
- 0.8374307376408652,
- 0.6848266407317727,
- 33.504704671527506
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 272.0996398925781,
- "type": "float32"
- }
- },
- {
- "name": "reduceL2 float32 3D tensor default options",
- "inputs": {
- "input": {
- "shape": [2, 3, 4],
- "data": [
- 4.860227954324237,
- 88.23184532015614,
- 54.489688892595865,
- 64.75027573238448,
- 6.855991445231058,
- 91.3987084155092,
- 41.888577644260664,
- 73.65445188651776,
- 35.31573479319383,
- 48.345430062443896,
- 82.3919051922353,
- 77.86200561022456,
- 93.31141688733462,
- 62.486883544675194,
- 60.292898644959706,
- 13.23059966965019,
- 20.535988317971942,
- 53.451616950541414,
- 11.32008585820996,
- 64.75763553379184,
- 43.65894603418228,
- 0.8374307376408652,
- 0.6848266407317727,
- 33.504704671527506
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 272.0996398925781,
- "type": "float32"
- }
- },
- {
- "name": "reduceL2 float32 4D tensor default options",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 4.860227954324237,
- 88.23184532015614,
- 54.489688892595865,
- 64.75027573238448,
- 6.855991445231058,
- 91.3987084155092,
- 41.888577644260664,
- 73.65445188651776,
- 35.31573479319383,
- 48.345430062443896,
- 82.3919051922353,
- 77.86200561022456,
- 93.31141688733462,
- 62.486883544675194,
- 60.292898644959706,
- 13.23059966965019,
- 20.535988317971942,
- 53.451616950541414,
- 11.32008585820996,
- 64.75763553379184,
- 43.65894603418228,
- 0.8374307376408652,
- 0.6848266407317727,
- 33.504704671527506
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 272.0996398925781,
- "type": "float32"
- }
- },
- {
- "name": "reduceL2 float32 5D tensor default options",
- "inputs": {
- "input": {
- "shape": [2, 1, 4, 1, 3],
- "data": [
- 4.860227954324237,
- 88.23184532015614,
- 54.489688892595865,
- 64.75027573238448,
- 6.855991445231058,
- 91.3987084155092,
- 41.888577644260664,
- 73.65445188651776,
- 35.31573479319383,
- 48.345430062443896,
- 82.3919051922353,
- 77.86200561022456,
- 93.31141688733462,
- 62.486883544675194,
- 60.292898644959706,
- 13.23059966965019,
- 20.535988317971942,
- 53.451616950541414,
- 11.32008585820996,
- 64.75763553379184,
- 43.65894603418228,
- 0.8374307376408652,
- 0.6848266407317727,
- 33.504704671527506
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 272.0996398925781,
- "type": "float32"
- }
- },
- {
- "name": "reduceL2 float32 3D tensor options.axes",
- "inputs": {
- "input": {
- "shape": [2, 3, 4],
- "data": [
- 4.860227954324237,
- 88.23184532015614,
- 54.489688892595865,
- 64.75027573238448,
- 6.855991445231058,
- 91.3987084155092,
- 41.888577644260664,
- 73.65445188651776,
- 35.31573479319383,
- 48.345430062443896,
- 82.3919051922353,
- 77.86200561022456,
- 93.31141688733462,
- 62.486883544675194,
- 60.292898644959706,
- 13.23059966965019,
- 20.535988317971942,
- 53.451616950541414,
- 11.32008585820996,
- 64.75763553379184,
- 43.65894603418228,
- 0.8374307376408652,
- 0.6848266407317727,
- 33.504704671527506
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": [2]
- },
- "expected": {
- "name": "output",
- "shape": [2, 3],
- "data": [
- 122.352783203125,
- 124.8213119506836,
- 128.20062255859375,
- 128.14801025390625,
- 87.18083953857422,
- 55.043975830078125
- ],
- "type": "float32"
- }
- },
- {
- "name": "reduceL2 float32 4D tensor options.axes",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 4.860227954324237,
- 88.23184532015614,
- 54.489688892595865,
- 64.75027573238448,
- 6.855991445231058,
- 91.3987084155092,
- 41.888577644260664,
- 73.65445188651776,
- 35.31573479319383,
- 48.345430062443896,
- 82.3919051922353,
- 77.86200561022456,
- 93.31141688733462,
- 62.486883544675194,
- 60.292898644959706,
- 13.23059966965019,
- 20.535988317971942,
- 53.451616950541414,
- 11.32008585820996,
- 64.75763553379184,
- 43.65894603418228,
- 0.8374307376408652,
- 0.6848266407317727,
- 33.504704671527506
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": [0, 2]
- },
- "expected": {
- "name": "output",
- "shape": [2, 3],
- "data": [
- 114.44775390625,
- 110.26422882080078,
- 133.47344970703125,
- 64.96752166748047,
- 128.0914764404297,
- 101.677734375
- ],
- "type": "float32"
- }
- },
- {
- "name": "reduceL2 float32 3D tensor options.keepDimensions=false",
- "inputs": {
- "input": {
- "shape": [2, 3, 4],
- "data": [
- 4.860227954324237,
- 88.23184532015614,
- 54.489688892595865,
- 64.75027573238448,
- 6.855991445231058,
- 91.3987084155092,
- 41.888577644260664,
- 73.65445188651776,
- 35.31573479319383,
- 48.345430062443896,
- 82.3919051922353,
- 77.86200561022456,
- 93.31141688733462,
- 62.486883544675194,
- 60.292898644959706,
- 13.23059966965019,
- 20.535988317971942,
- 53.451616950541414,
- 11.32008585820996,
- 64.75763553379184,
- 43.65894603418228,
- 0.8374307376408652,
- 0.6848266407317727,
- 33.504704671527506
- ],
- "type": "float32"
- }
- },
- "options": {
- "keepDimensions": false
- },
- "expected": {
- "name": "output",
- "data": 272.0996398925781,
- "type": "float32"
- }
- },
- {
- "name": "reduceL2 float32 3D tensor options.keepDimensions=true",
- "inputs": {
- "input": {
- "shape": [2, 3, 4],
- "data": [
- 4.860227954324237,
- 88.23184532015614,
- 54.489688892595865,
- 64.75027573238448,
- 6.855991445231058,
- 91.3987084155092,
- 41.888577644260664,
- 73.65445188651776,
- 35.31573479319383,
- 48.345430062443896,
- 82.3919051922353,
- 77.86200561022456,
- 93.31141688733462,
- 62.486883544675194,
- 60.292898644959706,
- 13.23059966965019,
- 20.535988317971942,
- 53.451616950541414,
- 11.32008585820996,
- 64.75763553379184,
- 43.65894603418228,
- 0.8374307376408652,
- 0.6848266407317727,
- 33.504704671527506
- ],
- "type": "float32"
- }
- },
- "options": {
- "keepDimensions": true
- },
- "expected": {
- "name": "output",
- "shape": [1, 1, 1],
- "data": [
- 272.0996398925781
- ],
- "type": "float32"
- }
- },
- {
- "name": "reduceL2 float32 4D tensor options.keepDimensions=false",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 4.860227954324237,
- 88.23184532015614,
- 54.489688892595865,
- 64.75027573238448,
- 6.855991445231058,
- 91.3987084155092,
- 41.888577644260664,
- 73.65445188651776,
- 35.31573479319383,
- 48.345430062443896,
- 82.3919051922353,
- 77.86200561022456,
- 93.31141688733462,
- 62.486883544675194,
- 60.292898644959706,
- 13.23059966965019,
- 20.535988317971942,
- 53.451616950541414,
- 11.32008585820996,
- 64.75763553379184,
- 43.65894603418228,
- 0.8374307376408652,
- 0.6848266407317727,
- 33.504704671527506
- ],
- "type": "float32"
- }
- },
- "options": {
- "keepDimensions": false
- },
- "expected": {
- "name": "output",
- "data": 272.0996398925781,
- "type": "float32"
- }
- },
- {
- "name": "reduceL2 float32 4D tensor options.keepDimensions=true",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 4.860227954324237,
- 88.23184532015614,
- 54.489688892595865,
- 64.75027573238448,
- 6.855991445231058,
- 91.3987084155092,
- 41.888577644260664,
- 73.65445188651776,
- 35.31573479319383,
- 48.345430062443896,
- 82.3919051922353,
- 77.86200561022456,
- 93.31141688733462,
- 62.486883544675194,
- 60.292898644959706,
- 13.23059966965019,
- 20.535988317971942,
- 53.451616950541414,
- 11.32008585820996,
- 64.75763553379184,
- 43.65894603418228,
- 0.8374307376408652,
- 0.6848266407317727,
- 33.504704671527506
- ],
- "type": "float32"
- }
- },
- "options": {
- "keepDimensions": true
- },
- "expected": {
- "name": "output",
- "shape": [1, 1, 1, 1],
- "data": [
- 272.0996398925781
- ],
- "type": "float32"
- }
- },
- {
- "name": "reduceL2 float32 4D tensor options.axes with options.keepDimensions=false",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 4.860227954324237,
- 88.23184532015614,
- 54.489688892595865,
- 64.75027573238448,
- 6.855991445231058,
- 91.3987084155092,
- 41.888577644260664,
- 73.65445188651776,
- 35.31573479319383,
- 48.345430062443896,
- 82.3919051922353,
- 77.86200561022456,
- 93.31141688733462,
- 62.486883544675194,
- 60.292898644959706,
- 13.23059966965019,
- 20.535988317971942,
- 53.451616950541414,
- 11.32008585820996,
- 64.75763553379184,
- 43.65894603418228,
- 0.8374307376408652,
- 0.6848266407317727,
- 33.504704671527506
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": [1, 3],
- "keepDimensions": false
- },
- "expected": {
- "name": "output",
- "shape": [2, 2],
- "data": [
- 138.580078125,
- 166.67791748046875,
- 149.91552734375,
- 67.6578598022461
- ],
- "type": "float32"
- }
- },
- {
- "name": "reduceL2 float32 4D tensor options.axes with options.keepDimensions=true",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 4.860227954324237,
- 88.23184532015614,
- 54.489688892595865,
- 64.75027573238448,
- 6.855991445231058,
- 91.3987084155092,
- 41.888577644260664,
- 73.65445188651776,
- 35.31573479319383,
- 48.345430062443896,
- 82.3919051922353,
- 77.86200561022456,
- 93.31141688733462,
- 62.486883544675194,
- 60.292898644959706,
- 13.23059966965019,
- 20.535988317971942,
- 53.451616950541414,
- 11.32008585820996,
- 64.75763553379184,
- 43.65894603418228,
- 0.8374307376408652,
- 0.6848266407317727,
- 33.504704671527506
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": [1, 3],
- "keepDimensions": true
- },
- "expected": {
- "name": "output",
- "shape": [2, 1, 2, 1],
- "data": [
- 138.580078125,
- 166.67791748046875,
- 149.91552734375,
- 67.6578598022461
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/reduce_log_sum.json b/tests/wpt/tests/webnn/resources/test_data/reduce_log_sum.json
deleted file mode 100644
index f3de240e458..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/reduce_log_sum.json
+++ /dev/null
@@ -1,704 +0,0 @@
-{
- "tests": [
- {
- "name": "reduceLogSum float32 0D constant tensor default options", // default options: {axes: null, keepDimensions: false}
- "inputs": {
- "input": {
- "shape": [],
- "data": [
- 64.54827117919922
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "data": 4.167413234710693,
- "type": "float32"
- }
- },
- {
- "name": "reduceLogSum float32 0D constant tensor empty axes",
- "inputs": {
- "input": {
- "shape": [],
- "data": [
- 64.54827117919922
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "axes": []
- },
- "expected": {
- "name": "output",
- "data": 4.167413234710693,
- "type": "float32"
- }
- },
- {
- "name": "reduceLogSum float32 1D constant tensor all non-negative default options", // default options: {axes: null, keepDimensions: false}
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- 64.54826901463852,
- 97.87423374006126,
- 26.529027351852186,
- 79.79046651888517,
- 50.394988743199434,
- 14.578406888832252,
- 20.86681803845336,
- 32.43873432263156,
- 64.91234005889837,
- 71.54029915166349,
- 11.13706890220647,
- 55.07930697185586,
- 43.791352286892106,
- 13.831947671728972,
- 97.39019470916091,
- 35.50775651228035,
- 52.275862097336166,
- 82.838655037009,
- 8.568099335705881,
- 0.8337112078307563,
- 69.23145833259072,
- 3.8541642374881446,
- 70.55673656397397,
- 71.99264788951747
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "data": 7.039101600646973,
- "type": "float32"
- }
- },
- {
- "name": "reduceLogSum float32 1D tensor all non-negative default options", // default options: {axes: null, keepDimensions: false}
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- 64.54826901463852,
- 97.87423374006126,
- 26.529027351852186,
- 79.79046651888517,
- 50.394988743199434,
- 14.578406888832252,
- 20.86681803845336,
- 32.43873432263156,
- 64.91234005889837,
- 71.54029915166349,
- 11.13706890220647,
- 55.07930697185586,
- 43.791352286892106,
- 13.831947671728972,
- 97.39019470916091,
- 35.50775651228035,
- 52.275862097336166,
- 82.838655037009,
- 8.568099335705881,
- 0.8337112078307563,
- 69.23145833259072,
- 3.8541642374881446,
- 70.55673656397397,
- 71.99264788951747
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 7.039101600646973,
- "type": "float32"
- }
- },
- {
- "name": "reduceLogSum float32 1D tensor all non-negative integers default options", // test with float32 values which are equivalent to integers
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- 63,
- 82,
- 49,
- 23,
- 98,
- 67,
- 15,
- 9,
- 89,
- 7,
- 69,
- 61,
- 47,
- 50,
- 41,
- 39,
- 58,
- 52,
- 35,
- 83,
- 81,
- 7,
- 34,
- 9
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 7.063048362731934,
- "type": "float32"
- }
- },
- {
- "name": "reduceLogSum float32 2D tensor default options",
- "inputs": {
- "input": {
- "shape": [4, 6],
- "data": [
- 64.54826901463852,
- 97.87423374006126,
- 26.529027351852186,
- 79.79046651888517,
- 50.394988743199434,
- 14.578406888832252,
- 20.86681803845336,
- 32.43873432263156,
- 64.91234005889837,
- 71.54029915166349,
- 11.13706890220647,
- 55.07930697185586,
- 43.791352286892106,
- 13.831947671728972,
- 97.39019470916091,
- 35.50775651228035,
- 52.275862097336166,
- 82.838655037009,
- 8.568099335705881,
- 0.8337112078307563,
- 69.23145833259072,
- 3.8541642374881446,
- 70.55673656397397,
- 71.99264788951747
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 7.039101600646973,
- "type": "float32"
- }
- },
- {
- "name": "reduceLogSum float32 3D tensor default options",
- "inputs": {
- "input": {
- "shape": [2, 3, 4],
- "data": [
- 64.54826901463852,
- 97.87423374006126,
- 26.529027351852186,
- 79.79046651888517,
- 50.394988743199434,
- 14.578406888832252,
- 20.86681803845336,
- 32.43873432263156,
- 64.91234005889837,
- 71.54029915166349,
- 11.13706890220647,
- 55.07930697185586,
- 43.791352286892106,
- 13.831947671728972,
- 97.39019470916091,
- 35.50775651228035,
- 52.275862097336166,
- 82.838655037009,
- 8.568099335705881,
- 0.8337112078307563,
- 69.23145833259072,
- 3.8541642374881446,
- 70.55673656397397,
- 71.99264788951747
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 7.039101600646973,
- "type": "float32"
- }
- },
- {
- "name": "reduceLogSum float32 4D tensor default options",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 64.54826901463852,
- 97.87423374006126,
- 26.529027351852186,
- 79.79046651888517,
- 50.394988743199434,
- 14.578406888832252,
- 20.86681803845336,
- 32.43873432263156,
- 64.91234005889837,
- 71.54029915166349,
- 11.13706890220647,
- 55.07930697185586,
- 43.791352286892106,
- 13.831947671728972,
- 97.39019470916091,
- 35.50775651228035,
- 52.275862097336166,
- 82.838655037009,
- 8.568099335705881,
- 0.8337112078307563,
- 69.23145833259072,
- 3.8541642374881446,
- 70.55673656397397,
- 71.99264788951747
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 7.039101600646973,
- "type": "float32"
- }
- },
- {
- "name": "reduceLogSum float32 5D tensor default options",
- "inputs": {
- "input": {
- "shape": [2, 1, 4, 1, 3],
- "data": [
- 64.54826901463852,
- 97.87423374006126,
- 26.529027351852186,
- 79.79046651888517,
- 50.394988743199434,
- 14.578406888832252,
- 20.86681803845336,
- 32.43873432263156,
- 64.91234005889837,
- 71.54029915166349,
- 11.13706890220647,
- 55.07930697185586,
- 43.791352286892106,
- 13.831947671728972,
- 97.39019470916091,
- 35.50775651228035,
- 52.275862097336166,
- 82.838655037009,
- 8.568099335705881,
- 0.8337112078307563,
- 69.23145833259072,
- 3.8541642374881446,
- 70.55673656397397,
- 71.99264788951747
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 7.039101600646973,
- "type": "float32"
- }
- },
- {
- "name": "reduceLogSum float32 3D tensor options.axes",
- "inputs": {
- "input": {
- "shape": [2, 3, 4],
- "data": [
- 64.54826901463852,
- 97.87423374006126,
- 26.529027351852186,
- 79.79046651888517,
- 50.394988743199434,
- 14.578406888832252,
- 20.86681803845336,
- 32.43873432263156,
- 64.91234005889837,
- 71.54029915166349,
- 11.13706890220647,
- 55.07930697185586,
- 43.791352286892106,
- 13.831947671728972,
- 97.39019470916091,
- 35.50775651228035,
- 52.275862097336166,
- 82.838655037009,
- 8.568099335705881,
- 0.8337112078307563,
- 69.23145833259072,
- 3.8541642374881446,
- 70.55673656397397,
- 71.99264788951747
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": [2]
- },
- "expected": {
- "name": "output",
- "shape": [2, 3],
- "data": [
- 5.593751907348633,
- 4.773046016693115,
- 5.3115739822387695,
- 5.2497639656066895,
- 4.973392486572266,
- 5.373587131500244
- ],
- "type": "float32"
- }
- },
- {
- "name": "reduceLogSum float32 4D tensor options.axes",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 64.54826901463852,
- 97.87423374006126,
- 26.529027351852186,
- 79.79046651888517,
- 50.394988743199434,
- 14.578406888832252,
- 20.86681803845336,
- 32.43873432263156,
- 64.91234005889837,
- 71.54029915166349,
- 11.13706890220647,
- 55.07930697185586,
- 43.791352286892106,
- 13.831947671728972,
- 97.39019470916091,
- 35.50775651228035,
- 52.275862097336166,
- 82.838655037009,
- 8.568099335705881,
- 0.8337112078307563,
- 69.23145833259072,
- 3.8541642374881446,
- 70.55673656397397,
- 71.99264788951747
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": [0, 2]
- },
- "expected": {
- "name": "output",
- "shape": [2, 3],
- "data": [
- 5.410027980804443,
- 5.367736339569092,
- 5.399682998657227,
- 4.652334213256836,
- 4.744638442993164,
- 5.565346717834473
- ],
- "type": "float32"
- }
- },
- {
- "name": "reduceLogSum float32 3D tensor options.keepDimensions=false",
- "inputs": {
- "input": {
- "shape": [2, 3, 4],
- "data": [
- 64.54826901463852,
- 97.87423374006126,
- 26.529027351852186,
- 79.79046651888517,
- 50.394988743199434,
- 14.578406888832252,
- 20.86681803845336,
- 32.43873432263156,
- 64.91234005889837,
- 71.54029915166349,
- 11.13706890220647,
- 55.07930697185586,
- 43.791352286892106,
- 13.831947671728972,
- 97.39019470916091,
- 35.50775651228035,
- 52.275862097336166,
- 82.838655037009,
- 8.568099335705881,
- 0.8337112078307563,
- 69.23145833259072,
- 3.8541642374881446,
- 70.55673656397397,
- 71.99264788951747
- ],
- "type": "float32"
- }
- },
- "options": {
- "keepDimensions": false
- },
- "expected": {
- "name": "output",
- "data": 7.039101600646973,
- "type": "float32"
- }
- },
- {
- "name": "reduceLogSum float32 3D tensor options.keepDimensions=true",
- "inputs": {
- "input": {
- "shape": [2, 3, 4],
- "data": [
- 64.54826901463852,
- 97.87423374006126,
- 26.529027351852186,
- 79.79046651888517,
- 50.394988743199434,
- 14.578406888832252,
- 20.86681803845336,
- 32.43873432263156,
- 64.91234005889837,
- 71.54029915166349,
- 11.13706890220647,
- 55.07930697185586,
- 43.791352286892106,
- 13.831947671728972,
- 97.39019470916091,
- 35.50775651228035,
- 52.275862097336166,
- 82.838655037009,
- 8.568099335705881,
- 0.8337112078307563,
- 69.23145833259072,
- 3.8541642374881446,
- 70.55673656397397,
- 71.99264788951747
- ],
- "type": "float32"
- }
- },
- "options": {
- "keepDimensions": true
- },
- "expected": {
- "name": "output",
- "shape": [1, 1, 1],
- "data": [
- 7.039101600646973
- ],
- "type": "float32"
- }
- },
- {
- "name": "reduceLogSum float32 4D tensor options.keepDimensions=false",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 64.54826901463852,
- 97.87423374006126,
- 26.529027351852186,
- 79.79046651888517,
- 50.394988743199434,
- 14.578406888832252,
- 20.86681803845336,
- 32.43873432263156,
- 64.91234005889837,
- 71.54029915166349,
- 11.13706890220647,
- 55.07930697185586,
- 43.791352286892106,
- 13.831947671728972,
- 97.39019470916091,
- 35.50775651228035,
- 52.275862097336166,
- 82.838655037009,
- 8.568099335705881,
- 0.8337112078307563,
- 69.23145833259072,
- 3.8541642374881446,
- 70.55673656397397,
- 71.99264788951747
- ],
- "type": "float32"
- }
- },
- "options": {
- "keepDimensions": false
- },
- "expected": {
- "name": "output",
- "data": 7.039101600646973,
- "type": "float32"
- }
- },
- {
- "name": "reduceLogSum float32 4D tensor options.keepDimensions=true",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 64.54826901463852,
- 97.87423374006126,
- 26.529027351852186,
- 79.79046651888517,
- 50.394988743199434,
- 14.578406888832252,
- 20.86681803845336,
- 32.43873432263156,
- 64.91234005889837,
- 71.54029915166349,
- 11.13706890220647,
- 55.07930697185586,
- 43.791352286892106,
- 13.831947671728972,
- 97.39019470916091,
- 35.50775651228035,
- 52.275862097336166,
- 82.838655037009,
- 8.568099335705881,
- 0.8337112078307563,
- 69.23145833259072,
- 3.8541642374881446,
- 70.55673656397397,
- 71.99264788951747
- ],
- "type": "float32"
- }
- },
- "options": {
- "keepDimensions": true
- },
- "expected": {
- "name": "output",
- "shape": [1, 1, 1, 1],
- "data": [
- 7.039101600646973
- ],
- "type": "float32"
- }
- },
- {
- "name": "reduceLogSum float32 4D tensor options.axes with options.keepDimensions=false",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 64.54826901463852,
- 97.87423374006126,
- 26.529027351852186,
- 79.79046651888517,
- 50.394988743199434,
- 14.578406888832252,
- 20.86681803845336,
- 32.43873432263156,
- 64.91234005889837,
- 71.54029915166349,
- 11.13706890220647,
- 55.07930697185586,
- 43.791352286892106,
- 13.831947671728972,
- 97.39019470916091,
- 35.50775651228035,
- 52.275862097336166,
- 82.838655037009,
- 8.568099335705881,
- 0.8337112078307563,
- 69.23145833259072,
- 3.8541642374881446,
- 70.55673656397397,
- 71.99264788951747
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": [1, 3],
- "keepDimensions": false
- },
- "expected": {
- "name": "output",
- "shape": [2, 2],
- "data": [
- 5.7273993492126465,
- 5.64375114440918,
- 5.453810214996338,
- 5.758983135223389
- ],
- "type": "float32"
- }
- },
- {
- "name": "reduceLogSum float32 4D tensor options.axes with options.keepDimensions=true",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 64.54826901463852,
- 97.87423374006126,
- 26.529027351852186,
- 79.79046651888517,
- 50.394988743199434,
- 14.578406888832252,
- 20.86681803845336,
- 32.43873432263156,
- 64.91234005889837,
- 71.54029915166349,
- 11.13706890220647,
- 55.07930697185586,
- 43.791352286892106,
- 13.831947671728972,
- 97.39019470916091,
- 35.50775651228035,
- 52.275862097336166,
- 82.838655037009,
- 8.568099335705881,
- 0.8337112078307563,
- 69.23145833259072,
- 3.8541642374881446,
- 70.55673656397397,
- 71.99264788951747
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": [1, 3],
- "keepDimensions": true
- },
- "expected": {
- "name": "output",
- "shape": [2, 1, 2, 1],
- "data": [
- 5.7273993492126465,
- 5.64375114440918,
- 5.453810214996338,
- 5.758983135223389
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/reduce_log_sum_exp.json b/tests/wpt/tests/webnn/resources/test_data/reduce_log_sum_exp.json
deleted file mode 100644
index b999a567aa5..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/reduce_log_sum_exp.json
+++ /dev/null
@@ -1,784 +0,0 @@
-{
- "tests": [
- {
- "name": "reduceLogSumExp float32 0D constant tensor default options", // default options: {axes: null, keepDimensions: false}
- "inputs": {
- "input": {
- "shape": [],
- "data": [
- 0.7974132895469666
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "data": 0.7974132895469666,
- "type": "float32"
- }
- },
- {
- "name": "reduceLogSumExp float32 0D constant tensor empty axes",
- "inputs": {
- "input": {
- "shape": [],
- "data": [
- 0.7974132895469666
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "axes": []
- },
- "expected": {
- "name": "output",
- "data": 0.7974132895469666,
- "type": "float32"
- }
- },
- {
- "name": "reduceLogSumExp float32 1D constant tensor all positive default options", // default options: {axes: null, keepDimensions: false}
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- 0.7974132976078829,
- 5.046889970229296,
- 8.520371090961714,
- 1.4063042363728728,
- 0.11882661415275164,
- 0.285854490277071,
- 1.9325640291685864,
- 3.7939957856803797,
- 2.6040233063490925,
- 4.937509735746763,
- 4.571482286709769,
- 0.7865120436262685,
- 0.21018670996660216,
- 9.063042370844672,
- 4.099809553408898,
- 4.596248815627706,
- 0.2549232349678032,
- 1.1594801326588255,
- 6.802876838759606,
- 5.23432518570901,
- 8.914905562420849,
- 9.166799240859705,
- 5.71750713886038,
- 0.3255050658627967
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "data": 10.39477825164795,
- "type": "float32"
- }
- },
- {
- "name": "reduceLogSumExp float32 1D tensor all positive default options", // default options: {axes: null, keepDimensions: false}
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- 0.7974132976078829,
- 5.046889970229296,
- 8.520371090961714,
- 1.4063042363728728,
- 0.11882661415275164,
- 0.285854490277071,
- 1.9325640291685864,
- 3.7939957856803797,
- 2.6040233063490925,
- 4.937509735746763,
- 4.571482286709769,
- 0.7865120436262685,
- 0.21018670996660216,
- 9.063042370844672,
- 4.099809553408898,
- 4.596248815627706,
- 0.2549232349678032,
- 1.1594801326588255,
- 6.802876838759606,
- 5.23432518570901,
- 8.914905562420849,
- 9.166799240859705,
- 5.71750713886038,
- 0.3255050658627967
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 10.39477825164795,
- "type": "float32"
- }
- },
- {
- "name": "reduceLogSumExp float32 1D tensor all negative default options",
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- -4.025670276125137,
- -9.44434807349057,
- -3.1193981742372,
- -5.943697868896303,
- -0.37018045102283637,
- -4.3971262954406605,
- -6.6059682563332744,
- -5.534277354031625,
- -7.361471172291552,
- -1.9987547534811796,
- -9.093968158437377,
- -8.693618799659165,
- -8.416788434713155,
- -1.010741070662755,
- -9.814584506221344,
- -9.725259665431539,
- -9.157071010493805,
- -0.0016988189527857855,
- -9.963414768875285,
- -5.991659641614526,
- -6.180599892028498,
- -1.2336505614624649,
- -0.44234340543470196,
- -6.990072309054243
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 1.1666961908340454,
- "type": "float32"
- }
- },
- {
- "name": "reduceLogSumExp float32 1D tensor all positive integers default options", // test with float32 values which are equivalent to integers
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- 1,
- 5,
- 7,
- 5,
- 7,
- 5,
- 4,
- 2,
- 1,
- 5,
- 8,
- 2,
- 4,
- 1,
- 4,
- 5,
- 4,
- 8,
- 6,
- 2,
- 7,
- 7,
- 8,
- 5
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 9.607237815856934,
- "type": "float32"
- }
- },
- {
- "name": "reduceLogSumExp float32 1D tensor all negative integers default options", // test with float32 values which are equivalent to integers
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- -6,
- -3,
- -5,
- -1,
- -9,
- -5,
- -1,
- -2,
- -10,
- -1,
- -5,
- -7,
- -7,
- -3,
- -10,
- -10,
- -8,
- -6,
- -2,
- -6,
- -1,
- -9,
- -5,
- -2
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 0.7001367211341858,
- "type": "float32"
- }
- },
- {
- "name": "reduceLogSumExp float32 2D tensor default options",
- "inputs": {
- "input": {
- "shape": [4, 6],
- "data": [
- 0.7974132976078829,
- 5.046889970229296,
- 8.520371090961714,
- 1.4063042363728728,
- 0.11882661415275164,
- 0.285854490277071,
- 1.9325640291685864,
- 3.7939957856803797,
- 2.6040233063490925,
- 4.937509735746763,
- 4.571482286709769,
- 0.7865120436262685,
- 0.21018670996660216,
- 9.063042370844672,
- 4.099809553408898,
- 4.596248815627706,
- 0.2549232349678032,
- 1.1594801326588255,
- 6.802876838759606,
- 5.23432518570901,
- 8.914905562420849,
- 9.166799240859705,
- 5.71750713886038,
- 0.3255050658627967
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 10.39477825164795,
- "type": "float32"
- }
- },
- {
- "name": "reduceLogSumExp float32 3D tensor default options",
- "inputs": {
- "input": {
- "shape": [2, 3, 4],
- "data": [
- 0.7974132976078829,
- 5.046889970229296,
- 8.520371090961714,
- 1.4063042363728728,
- 0.11882661415275164,
- 0.285854490277071,
- 1.9325640291685864,
- 3.7939957856803797,
- 2.6040233063490925,
- 4.937509735746763,
- 4.571482286709769,
- 0.7865120436262685,
- 0.21018670996660216,
- 9.063042370844672,
- 4.099809553408898,
- 4.596248815627706,
- 0.2549232349678032,
- 1.1594801326588255,
- 6.802876838759606,
- 5.23432518570901,
- 8.914905562420849,
- 9.166799240859705,
- 5.71750713886038,
- 0.3255050658627967
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 10.39477825164795,
- "type": "float32"
- }
- },
- {
- "name": "reduceLogSumExp float32 4D tensor default options",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 0.7974132976078829,
- 5.046889970229296,
- 8.520371090961714,
- 1.4063042363728728,
- 0.11882661415275164,
- 0.285854490277071,
- 1.9325640291685864,
- 3.7939957856803797,
- 2.6040233063490925,
- 4.937509735746763,
- 4.571482286709769,
- 0.7865120436262685,
- 0.21018670996660216,
- 9.063042370844672,
- 4.099809553408898,
- 4.596248815627706,
- 0.2549232349678032,
- 1.1594801326588255,
- 6.802876838759606,
- 5.23432518570901,
- 8.914905562420849,
- 9.166799240859705,
- 5.71750713886038,
- 0.3255050658627967
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 10.39477825164795,
- "type": "float32"
- }
- },
- {
- "name": "reduceLogSumExp float32 5D tensor default options",
- "inputs": {
- "input": {
- "shape": [2, 1, 4, 1, 3],
- "data": [
- 0.7974132976078829,
- 5.046889970229296,
- 8.520371090961714,
- 1.4063042363728728,
- 0.11882661415275164,
- 0.285854490277071,
- 1.9325640291685864,
- 3.7939957856803797,
- 2.6040233063490925,
- 4.937509735746763,
- 4.571482286709769,
- 0.7865120436262685,
- 0.21018670996660216,
- 9.063042370844672,
- 4.099809553408898,
- 4.596248815627706,
- 0.2549232349678032,
- 1.1594801326588255,
- 6.802876838759606,
- 5.23432518570901,
- 8.914905562420849,
- 9.166799240859705,
- 5.71750713886038,
- 0.3255050658627967
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 10.39477825164795,
- "type": "float32"
- }
- },
- {
- "name": "reduceLogSumExp float32 3D tensor options.axes",
- "inputs": {
- "input": {
- "shape": [2, 3, 4],
- "data": [
- 0.7974132976078829,
- 5.046889970229296,
- 8.520371090961714,
- 1.4063042363728728,
- 0.11882661415275164,
- 0.285854490277071,
- 1.9325640291685864,
- 3.7939957856803797,
- 2.6040233063490925,
- 4.937509735746763,
- 4.571482286709769,
- 0.7865120436262685,
- 0.21018670996660216,
- 9.063042370844672,
- 4.099809553408898,
- 4.596248815627706,
- 0.2549232349678032,
- 1.1594801326588255,
- 6.802876838759606,
- 5.23432518570901,
- 8.914905562420849,
- 9.166799240859705,
- 5.71750713886038,
- 0.3255050658627967
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": [2]
- },
- "expected": {
- "name": "output",
- "shape": [2, 3],
- "data": [
- 8.55212688446045,
- 3.985233783721924,
- 5.52872896194458,
- 9.081488609313965,
- 6.996237754821777,
- 9.759706497192383
- ],
- "type": "float32"
- }
- },
- {
- "name": "reduceLogSumExp float32 4D tensor options.axes",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 0.7974132976078829,
- 5.046889970229296,
- 8.520371090961714,
- 1.4063042363728728,
- 0.11882661415275164,
- 0.285854490277071,
- 1.9325640291685864,
- 3.7939957856803797,
- 2.6040233063490925,
- 4.937509735746763,
- 4.571482286709769,
- 0.7865120436262685,
- 0.21018670996660216,
- 9.063042370844672,
- 4.099809553408898,
- 4.596248815627706,
- 0.2549232349678032,
- 1.1594801326588255,
- 6.802876838759606,
- 5.23432518570901,
- 8.914905562420849,
- 9.166799240859705,
- 5.71750713886038,
- 0.3255050658627967
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": [0, 2]
- },
- "expected": {
- "name": "output",
- "shape": [2, 3],
- "data": [
- 4.66951847076416,
- 9.08117961883545,
- 8.533217430114746,
- 9.270560264587402,
- 6.450263977050781,
- 8.917200088500977
- ],
- "type": "float32"
- }
- },
- {
- "name": "reduceLogSumExp float32 3D tensor options.keepDimensions=false",
- "inputs": {
- "input": {
- "shape": [2, 3, 4],
- "data": [
- 0.7974132976078829,
- 5.046889970229296,
- 8.520371090961714,
- 1.4063042363728728,
- 0.11882661415275164,
- 0.285854490277071,
- 1.9325640291685864,
- 3.7939957856803797,
- 2.6040233063490925,
- 4.937509735746763,
- 4.571482286709769,
- 0.7865120436262685,
- 0.21018670996660216,
- 9.063042370844672,
- 4.099809553408898,
- 4.596248815627706,
- 0.2549232349678032,
- 1.1594801326588255,
- 6.802876838759606,
- 5.23432518570901,
- 8.914905562420849,
- 9.166799240859705,
- 5.71750713886038,
- 0.3255050658627967
- ],
- "type": "float32"
- }
- },
- "options": {
- "keepDimensions": false
- },
- "expected": {
- "name": "output",
- "data": 10.39477825164795,
- "type": "float32"
- }
- },
- {
- "name": "reduceLogSumExp float32 3D tensor options.keepDimensions=true",
- "inputs": {
- "input": {
- "shape": [2, 3, 4],
- "data": [
- 0.7974132976078829,
- 5.046889970229296,
- 8.520371090961714,
- 1.4063042363728728,
- 0.11882661415275164,
- 0.285854490277071,
- 1.9325640291685864,
- 3.7939957856803797,
- 2.6040233063490925,
- 4.937509735746763,
- 4.571482286709769,
- 0.7865120436262685,
- 0.21018670996660216,
- 9.063042370844672,
- 4.099809553408898,
- 4.596248815627706,
- 0.2549232349678032,
- 1.1594801326588255,
- 6.802876838759606,
- 5.23432518570901,
- 8.914905562420849,
- 9.166799240859705,
- 5.71750713886038,
- 0.3255050658627967
- ],
- "type": "float32"
- }
- },
- "options": {
- "keepDimensions": true
- },
- "expected": {
- "name": "output",
- "shape": [1, 1, 1],
- "data": [
- 10.39477825164795
- ],
- "type": "float32"
- }
- },
- {
- "name": "reduceLogSumExp float32 4D tensor options.keepDimensions=false",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 0.7974132976078829,
- 5.046889970229296,
- 8.520371090961714,
- 1.4063042363728728,
- 0.11882661415275164,
- 0.285854490277071,
- 1.9325640291685864,
- 3.7939957856803797,
- 2.6040233063490925,
- 4.937509735746763,
- 4.571482286709769,
- 0.7865120436262685,
- 0.21018670996660216,
- 9.063042370844672,
- 4.099809553408898,
- 4.596248815627706,
- 0.2549232349678032,
- 1.1594801326588255,
- 6.802876838759606,
- 5.23432518570901,
- 8.914905562420849,
- 9.166799240859705,
- 5.71750713886038,
- 0.3255050658627967
- ],
- "type": "float32"
- }
- },
- "options": {
- "keepDimensions": false
- },
- "expected": {
- "name": "output",
- "data": 10.39477825164795,
- "type": "float32"
- }
- },
- {
- "name": "reduceLogSumExp float32 4D tensor options.keepDimensions=true",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 0.7974132976078829,
- 5.046889970229296,
- 8.520371090961714,
- 1.4063042363728728,
- 0.11882661415275164,
- 0.285854490277071,
- 1.9325640291685864,
- 3.7939957856803797,
- 2.6040233063490925,
- 4.937509735746763,
- 4.571482286709769,
- 0.7865120436262685,
- 0.21018670996660216,
- 9.063042370844672,
- 4.099809553408898,
- 4.596248815627706,
- 0.2549232349678032,
- 1.1594801326588255,
- 6.802876838759606,
- 5.23432518570901,
- 8.914905562420849,
- 9.166799240859705,
- 5.71750713886038,
- 0.3255050658627967
- ],
- "type": "float32"
- }
- },
- "options": {
- "keepDimensions": true
- },
- "expected": {
- "name": "output",
- "shape": [1, 1, 1, 1],
- "data": [
- 10.39477825164795
- ],
- "type": "float32"
- }
- },
- {
- "name": "reduceLogSumExp float32 4D tensor options.axes with options.keepDimensions=false",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 0.7974132976078829,
- 5.046889970229296,
- 8.520371090961714,
- 1.4063042363728728,
- 0.11882661415275164,
- 0.285854490277071,
- 1.9325640291685864,
- 3.7939957856803797,
- 2.6040233063490925,
- 4.937509735746763,
- 4.571482286709769,
- 0.7865120436262685,
- 0.21018670996660216,
- 9.063042370844672,
- 4.099809553408898,
- 4.596248815627706,
- 0.2549232349678032,
- 1.1594801326588255,
- 6.802876838759606,
- 5.23432518570901,
- 8.914905562420849,
- 9.166799240859705,
- 5.71750713886038,
- 0.3255050658627967
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": [1, 3],
- "keepDimensions": false
- },
- "expected": {
- "name": "output",
- "shape": [2, 2],
- "data": [
- 8.563796997070312,
- 5.500619411468506,
- 9.753945350646973,
- 9.20864486694336
- ],
- "type": "float32"
- }
- },
- {
- "name": "reduceLogSumExp float32 4D tensor options.axes with options.keepDimensions=true",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 0.7974132976078829,
- 5.046889970229296,
- 8.520371090961714,
- 1.4063042363728728,
- 0.11882661415275164,
- 0.285854490277071,
- 1.9325640291685864,
- 3.7939957856803797,
- 2.6040233063490925,
- 4.937509735746763,
- 4.571482286709769,
- 0.7865120436262685,
- 0.21018670996660216,
- 9.063042370844672,
- 4.099809553408898,
- 4.596248815627706,
- 0.2549232349678032,
- 1.1594801326588255,
- 6.802876838759606,
- 5.23432518570901,
- 8.914905562420849,
- 9.166799240859705,
- 5.71750713886038,
- 0.3255050658627967
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": [1, 3],
- "keepDimensions": true
- },
- "expected": {
- "name": "output",
- "shape": [2, 1, 2, 1],
- "data": [
- 8.563796997070312,
- 5.500619411468506,
- 9.753945350646973,
- 9.20864486694336
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/reduce_max.json b/tests/wpt/tests/webnn/resources/test_data/reduce_max.json
deleted file mode 100644
index 6cd55492692..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/reduce_max.json
+++ /dev/null
@@ -1,664 +0,0 @@
-{
- "tests": [
- {
- "name": "reduceMax float32 0D constant tensor default options",
- "inputs": {
- "input": {
- "shape": [],
- "data": [
- 32.16658401489258
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "data": 32.16658401489258,
- "type": "float32"
- }
- },
- {
- "name": "reduceMax float32 0D constant tensor empty axes",
- "inputs": {
- "input": {
- "shape": [],
- "data": [
- 32.16658401489258
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "axes": []
- },
- "expected": {
- "name": "output",
- "data": 32.16658401489258,
- "type": "float32"
- }
- },
- {
- "name": "reduceMax float32 1D constant tensor default options",
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- 32.166585683408215,
- 90.42288038051404,
- -26.341795469529572,
- -7.147959324354275,
- 75.90379209491468,
- -48.204211355965356,
- -53.094252997077795,
- 66.66099234322033,
- -96.16854360851454,
- -88.30545253131574,
- 94.99645116994563,
- 37.28493087456198,
- -42.209860696518845,
- 96.55397216250705,
- 0.8807230095547567,
- 62.504641219832195,
- 36.650633791794576,
- 99.77313292829271,
- -72.86485546227293,
- -46.03200926418318,
- 20.253753500247612,
- -21.55738542170144,
- -51.287275192229046,
- -42.588327517032454
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "data": 99.77313232421875,
- "type": "float32"
- }
- },
- {
- "name": "reduceMax float32 1D tensor default options",
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- 32.166585683408215,
- 90.42288038051404,
- -26.341795469529572,
- -7.147959324354275,
- 75.90379209491468,
- -48.204211355965356,
- -53.094252997077795,
- 66.66099234322033,
- -96.16854360851454,
- -88.30545253131574,
- 94.99645116994563,
- 37.28493087456198,
- -42.209860696518845,
- 96.55397216250705,
- 0.8807230095547567,
- 62.504641219832195,
- 36.650633791794576,
- 99.77313292829271,
- -72.86485546227293,
- -46.03200926418318,
- 20.253753500247612,
- -21.55738542170144,
- -51.287275192229046,
- -42.588327517032454
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 99.77313232421875,
- "type": "float32"
- }
- },
- {
- "name": "reduceMax float32 2D tensor default options",
- "inputs": {
- "input": {
- "shape": [4, 6],
- "data": [
- 32.166585683408215,
- 90.42288038051404,
- -26.341795469529572,
- -7.147959324354275,
- 75.90379209491468,
- -48.204211355965356,
- -53.094252997077795,
- 66.66099234322033,
- -96.16854360851454,
- -88.30545253131574,
- 94.99645116994563,
- 37.28493087456198,
- -42.209860696518845,
- 96.55397216250705,
- 0.8807230095547567,
- 62.504641219832195,
- 36.650633791794576,
- 99.77313292829271,
- -72.86485546227293,
- -46.03200926418318,
- 20.253753500247612,
- -21.55738542170144,
- -51.287275192229046,
- -42.588327517032454
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 99.77313232421875,
- "type": "float32"
- }
- },
- {
- "name": "reduceMax float32 3D tensor default options",
- "inputs": {
- "input": {
- "shape": [2, 3, 4],
- "data": [
- 32.166585683408215,
- 90.42288038051404,
- -26.341795469529572,
- -7.147959324354275,
- 75.90379209491468,
- -48.204211355965356,
- -53.094252997077795,
- 66.66099234322033,
- -96.16854360851454,
- -88.30545253131574,
- 94.99645116994563,
- 37.28493087456198,
- -42.209860696518845,
- 96.55397216250705,
- 0.8807230095547567,
- 62.504641219832195,
- 36.650633791794576,
- 99.77313292829271,
- -72.86485546227293,
- -46.03200926418318,
- 20.253753500247612,
- -21.55738542170144,
- -51.287275192229046,
- -42.588327517032454
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 99.77313232421875,
- "type": "float32"
- }
- },
- {
- "name": "reduceMax float32 4D tensor default options",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 32.166585683408215,
- 90.42288038051404,
- -26.341795469529572,
- -7.147959324354275,
- 75.90379209491468,
- -48.204211355965356,
- -53.094252997077795,
- 66.66099234322033,
- -96.16854360851454,
- -88.30545253131574,
- 94.99645116994563,
- 37.28493087456198,
- -42.209860696518845,
- 96.55397216250705,
- 0.8807230095547567,
- 62.504641219832195,
- 36.650633791794576,
- 99.77313292829271,
- -72.86485546227293,
- -46.03200926418318,
- 20.253753500247612,
- -21.55738542170144,
- -51.287275192229046,
- -42.588327517032454
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 99.77313232421875,
- "type": "float32"
- }
- },
- {
- "name": "reduceMax float32 5D tensor default options",
- "inputs": {
- "input": {
- "shape": [2, 1, 4, 1, 3],
- "data": [
- 32.166585683408215,
- 90.42288038051404,
- -26.341795469529572,
- -7.147959324354275,
- 75.90379209491468,
- -48.204211355965356,
- -53.094252997077795,
- 66.66099234322033,
- -96.16854360851454,
- -88.30545253131574,
- 94.99645116994563,
- 37.28493087456198,
- -42.209860696518845,
- 96.55397216250705,
- 0.8807230095547567,
- 62.504641219832195,
- 36.650633791794576,
- 99.77313292829271,
- -72.86485546227293,
- -46.03200926418318,
- 20.253753500247612,
- -21.55738542170144,
- -51.287275192229046,
- -42.588327517032454
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 99.77313232421875,
- "type": "float32"
- }
- },
- {
- "name": "reduceMax float32 3D tensor options.axes",
- "inputs": {
- "input": {
- "shape": [2, 3, 4],
- "data": [
- 32.166585683408215,
- 90.42288038051404,
- -26.341795469529572,
- -7.147959324354275,
- 75.90379209491468,
- -48.204211355965356,
- -53.094252997077795,
- 66.66099234322033,
- -96.16854360851454,
- -88.30545253131574,
- 94.99645116994563,
- 37.28493087456198,
- -42.209860696518845,
- 96.55397216250705,
- 0.8807230095547567,
- 62.504641219832195,
- 36.650633791794576,
- 99.77313292829271,
- -72.86485546227293,
- -46.03200926418318,
- 20.253753500247612,
- -21.55738542170144,
- -51.287275192229046,
- -42.588327517032454
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": [2]
- },
- "expected": {
- "name": "output",
- "shape": [2, 3],
- "data": [
- 90.42288208007812,
- 75.90379333496094,
- 94.99645233154297,
- 96.55397033691406,
- 99.77313232421875,
- 20.253753662109375
- ],
- "type": "float32"
- }
- },
- {
- "name": "reduceMax float32 4D tensor options.axes",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 32.166585683408215,
- 90.42288038051404,
- -26.341795469529572,
- -7.147959324354275,
- 75.90379209491468,
- -48.204211355965356,
- -53.094252997077795,
- 66.66099234322033,
- -96.16854360851454,
- -88.30545253131574,
- 94.99645116994563,
- 37.28493087456198,
- -42.209860696518845,
- 96.55397216250705,
- 0.8807230095547567,
- 62.504641219832195,
- 36.650633791794576,
- 99.77313292829271,
- -72.86485546227293,
- -46.03200926418318,
- 20.253753500247612,
- -21.55738542170144,
- -51.287275192229046,
- -42.588327517032454
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": [0, 2]
- },
- "expected": {
- "name": "output",
- "shape": [2, 3],
- "data": [
- 62.504642486572266,
- 96.55397033691406,
- 99.77313232421875,
- -21.557384490966797,
- 94.99645233154297,
- 37.28493118286133
- ],
- "type": "float32"
- }
- },
- {
- "name": "reduceMax float32 3D tensor options.keepDimensions=false",
- "inputs": {
- "input": {
- "shape": [2, 3, 4],
- "data": [
- 32.166585683408215,
- 90.42288038051404,
- -26.341795469529572,
- -7.147959324354275,
- 75.90379209491468,
- -48.204211355965356,
- -53.094252997077795,
- 66.66099234322033,
- -96.16854360851454,
- -88.30545253131574,
- 94.99645116994563,
- 37.28493087456198,
- -42.209860696518845,
- 96.55397216250705,
- 0.8807230095547567,
- 62.504641219832195,
- 36.650633791794576,
- 99.77313292829271,
- -72.86485546227293,
- -46.03200926418318,
- 20.253753500247612,
- -21.55738542170144,
- -51.287275192229046,
- -42.588327517032454
- ],
- "type": "float32"
- }
- },
- "options": {
- "keepDimensions": false
- },
- "expected": {
- "name": "output",
- "data": 99.77313232421875,
- "type": "float32"
- }
- },
- {
- "name": "reduceMax float32 3D tensor options.keepDimensions=true",
- "inputs": {
- "input": {
- "shape": [2, 3, 4],
- "data": [
- 32.166585683408215,
- 90.42288038051404,
- -26.341795469529572,
- -7.147959324354275,
- 75.90379209491468,
- -48.204211355965356,
- -53.094252997077795,
- 66.66099234322033,
- -96.16854360851454,
- -88.30545253131574,
- 94.99645116994563,
- 37.28493087456198,
- -42.209860696518845,
- 96.55397216250705,
- 0.8807230095547567,
- 62.504641219832195,
- 36.650633791794576,
- 99.77313292829271,
- -72.86485546227293,
- -46.03200926418318,
- 20.253753500247612,
- -21.55738542170144,
- -51.287275192229046,
- -42.588327517032454
- ],
- "type": "float32"
- }
- },
- "options": {
- "keepDimensions": true
- },
- "expected": {
- "name": "output",
- "shape": [1, 1, 1],
- "data": [
- 99.77313232421875
- ],
- "type": "float32"
- }
- },
- {
- "name": "reduceMax float32 4D tensor options.keepDimensions=false",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 32.166585683408215,
- 90.42288038051404,
- -26.341795469529572,
- -7.147959324354275,
- 75.90379209491468,
- -48.204211355965356,
- -53.094252997077795,
- 66.66099234322033,
- -96.16854360851454,
- -88.30545253131574,
- 94.99645116994563,
- 37.28493087456198,
- -42.209860696518845,
- 96.55397216250705,
- 0.8807230095547567,
- 62.504641219832195,
- 36.650633791794576,
- 99.77313292829271,
- -72.86485546227293,
- -46.03200926418318,
- 20.253753500247612,
- -21.55738542170144,
- -51.287275192229046,
- -42.588327517032454
- ],
- "type": "float32"
- }
- },
- "options": {
- "keepDimensions": false
- },
- "expected": {
- "name": "output",
- "data": 99.77313232421875,
- "type": "float32"
- }
- },
- {
- "name": "reduceMax float32 4D tensor options.keepDimensions=true",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 32.166585683408215,
- 90.42288038051404,
- -26.341795469529572,
- -7.147959324354275,
- 75.90379209491468,
- -48.204211355965356,
- -53.094252997077795,
- 66.66099234322033,
- -96.16854360851454,
- -88.30545253131574,
- 94.99645116994563,
- 37.28493087456198,
- -42.209860696518845,
- 96.55397216250705,
- 0.8807230095547567,
- 62.504641219832195,
- 36.650633791794576,
- 99.77313292829271,
- -72.86485546227293,
- -46.03200926418318,
- 20.253753500247612,
- -21.55738542170144,
- -51.287275192229046,
- -42.588327517032454
- ],
- "type": "float32"
- }
- },
- "options": {
- "keepDimensions": true
- },
- "expected": {
- "name": "output",
- "shape": [1, 1, 1, 1],
- "data": [
- 99.77313232421875
- ],
- "type": "float32"
- }
- },
- {
- "name": "reduceMax float32 4D tensor options.axes with options.keepDimensions=false",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 32.166585683408215,
- 90.42288038051404,
- -26.341795469529572,
- -7.147959324354275,
- 75.90379209491468,
- -48.204211355965356,
- -53.094252997077795,
- 66.66099234322033,
- -96.16854360851454,
- -88.30545253131574,
- 94.99645116994563,
- 37.28493087456198,
- -42.209860696518845,
- 96.55397216250705,
- 0.8807230095547567,
- 62.504641219832195,
- 36.650633791794576,
- 99.77313292829271,
- -72.86485546227293,
- -46.03200926418318,
- 20.253753500247612,
- -21.55738542170144,
- -51.287275192229046,
- -42.588327517032454
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": [1, 3],
- "keepDimensions": false
- },
- "expected": {
- "name": "output",
- "shape": [2, 2],
- "data": [
- 90.42288208007812,
- 94.99645233154297,
- 96.55397033691406,
- 99.77313232421875
- ],
- "type": "float32"
- }
- },
- {
- "name": "reduceMax float32 4D tensor options.axes with options.keepDimensions=true",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 32.166585683408215,
- 90.42288038051404,
- -26.341795469529572,
- -7.147959324354275,
- 75.90379209491468,
- -48.204211355965356,
- -53.094252997077795,
- 66.66099234322033,
- -96.16854360851454,
- -88.30545253131574,
- 94.99645116994563,
- 37.28493087456198,
- -42.209860696518845,
- 96.55397216250705,
- 0.8807230095547567,
- 62.504641219832195,
- 36.650633791794576,
- 99.77313292829271,
- -72.86485546227293,
- -46.03200926418318,
- 20.253753500247612,
- -21.55738542170144,
- -51.287275192229046,
- -42.588327517032454
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": [1, 3],
- "keepDimensions": true
- },
- "expected": {
- "name": "output",
- "shape": [2, 1, 2, 1],
- "data": [
- 90.42288208007812,
- 94.99645233154297,
- 96.55397033691406,
- 99.77313232421875
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/reduce_mean.json b/tests/wpt/tests/webnn/resources/test_data/reduce_mean.json
deleted file mode 100644
index b990b0f93bb..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/reduce_mean.json
+++ /dev/null
@@ -1,776 +0,0 @@
-{
- "tests": [
- {
- "name": "reduceMean float32 0D constant tensor default options",
- "inputs": {
- "input": {
- "shape": [],
- "data": [
- 95.84498596191406
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "data": 95.84498596191406,
- "type": "float32"
- }
- },
- {
- "name": "reduceMean float32 0D constant tensor empty axes",
- "inputs": {
- "input": {
- "shape": [],
- "data": [
- 95.84498596191406
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "axes": []
- },
- "expected": {
- "name": "output",
- "data": 95.84498596191406,
- "type": "float32"
- }
- },
- {
- "name": "reduceMean float32 1D constant tensor all positive default options",
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- 95.84498772347054,
- 75.69370054099012,
- 1.5417720846181426,
- 8.787033906673592,
- 70.08280339173061,
- 13.784331379836544,
- 20.006068194857885,
- 94.80963809344851,
- 25.829190184293417,
- 94.13260521032214,
- 67.72958187044576,
- 16.099351117563778,
- 92.19433555001908,
- 11.567352371276595,
- 52.705496151946285,
- 22.471793133903972,
- 3.6623324286590764,
- 20.2102781903039,
- 58.56523137489753,
- 28.673493080608758,
- 42.134198143189195,
- 21.637750690378144,
- 14.160698325191756,
- 15.127351396412191
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "data": 40.31047439575195,
- "type": "float32"
- }
- },
- {
- "name": "reduceMean float32 1D tensor all positive default options",
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- 95.84498772347054,
- 75.69370054099012,
- 1.5417720846181426,
- 8.787033906673592,
- 70.08280339173061,
- 13.784331379836544,
- 20.006068194857885,
- 94.80963809344851,
- 25.829190184293417,
- 94.13260521032214,
- 67.72958187044576,
- 16.099351117563778,
- 92.19433555001908,
- 11.567352371276595,
- 52.705496151946285,
- 22.471793133903972,
- 3.6623324286590764,
- 20.2102781903039,
- 58.56523137489753,
- 28.673493080608758,
- 42.134198143189195,
- 21.637750690378144,
- 14.160698325191756,
- 15.127351396412191
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 40.31047439575195,
- "type": "float32"
- }
- },
- {
- "name": "reduceMean float32 1D tensor all negative default options",
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- -37.14687069315612,
- -44.50042209159177,
- -6.126548413219496,
- -6.321792976064302,
- -76.5389783512652,
- -4.137693032746782,
- -20.763563935321017,
- -38.74917461116718,
- -36.81039848179957,
- -26.274377028592966,
- -12.56681966278282,
- -55.28200785289164,
- -20.697565065775606,
- -34.19586340660584,
- -45.36002983401583,
- -34.996193368480235,
- -67.84308553425207,
- -0.7434244205683882,
- -21.981258134364538,
- -61.31269509631454,
- -58.59896180690518,
- -76.02979877636918,
- -23.917405754606236,
- -22.941872716763513
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": -34.74319839477539,
- "type": "float32"
- }
- },
- {
- "name": "reduceMean float32 1D tensor all positive integers default options", // test with float32 values which are equivalent to integers
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- 42,
- 24,
- 44,
- 38,
- 82,
- 93,
- 64,
- 40,
- 48,
- 78,
- 81,
- 59,
- 45,
- 18,
- 3,
- 77,
- 60,
- 19,
- 66,
- 8,
- 21,
- 19,
- 62,
- 71
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 48.41666793823242,
- "type": "float32"
- }
- },
- {
- "name": "reduceMean float32 1D tensor all negative integers default options", // test with float32 values which are equivalent to integers
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- -73,
- -8,
- -55,
- -73,
- -61,
- -54,
- -5,
- -39,
- -66,
- -53,
- -57,
- -39,
- -62,
- -98,
- -36,
- -1,
- -75,
- -8,
- -71,
- -72,
- -67,
- -16,
- -21,
- -31
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": -47.54166793823242,
- "type": "float32"
- }
- },
- {
- "name": "reduceMean float32 2D tensor default options",
- "inputs": {
- "input": {
- "shape": [4, 6],
- "data": [
- 95.84498772347054,
- 75.69370054099012,
- 1.5417720846181426,
- 8.787033906673592,
- 70.08280339173061,
- 13.784331379836544,
- 20.006068194857885,
- 94.80963809344851,
- 25.829190184293417,
- 94.13260521032214,
- 67.72958187044576,
- 16.099351117563778,
- 92.19433555001908,
- 11.567352371276595,
- 52.705496151946285,
- 22.471793133903972,
- 3.6623324286590764,
- 20.2102781903039,
- 58.56523137489753,
- 28.673493080608758,
- 42.134198143189195,
- 21.637750690378144,
- 14.160698325191756,
- 15.127351396412191
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 40.31047439575195,
- "type": "float32"
- }
- },
- {
- "name": "reduceMean float32 3D tensor default options",
- "inputs": {
- "input": {
- "shape": [2, 3, 4],
- "data": [
- 95.84498772347054,
- 75.69370054099012,
- 1.5417720846181426,
- 8.787033906673592,
- 70.08280339173061,
- 13.784331379836544,
- 20.006068194857885,
- 94.80963809344851,
- 25.829190184293417,
- 94.13260521032214,
- 67.72958187044576,
- 16.099351117563778,
- 92.19433555001908,
- 11.567352371276595,
- 52.705496151946285,
- 22.471793133903972,
- 3.6623324286590764,
- 20.2102781903039,
- 58.56523137489753,
- 28.673493080608758,
- 42.134198143189195,
- 21.637750690378144,
- 14.160698325191756,
- 15.127351396412191
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 40.31047439575195,
- "type": "float32"
- }
- },
- {
- "name": "reduceMean float32 4D tensor default options",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 95.84498772347054,
- 75.69370054099012,
- 1.5417720846181426,
- 8.787033906673592,
- 70.08280339173061,
- 13.784331379836544,
- 20.006068194857885,
- 94.80963809344851,
- 25.829190184293417,
- 94.13260521032214,
- 67.72958187044576,
- 16.099351117563778,
- 92.19433555001908,
- 11.567352371276595,
- 52.705496151946285,
- 22.471793133903972,
- 3.6623324286590764,
- 20.2102781903039,
- 58.56523137489753,
- 28.673493080608758,
- 42.134198143189195,
- 21.637750690378144,
- 14.160698325191756,
- 15.127351396412191
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 40.31047439575195,
- "type": "float32"
- }
- },
- {
- "name": "reduceMean float32 5D tensor default options",
- "inputs": {
- "input": {
- "shape": [2, 1, 4, 1, 3],
- "data": [
- 95.84498772347054,
- 75.69370054099012,
- 1.5417720846181426,
- 8.787033906673592,
- 70.08280339173061,
- 13.784331379836544,
- 20.006068194857885,
- 94.80963809344851,
- 25.829190184293417,
- 94.13260521032214,
- 67.72958187044576,
- 16.099351117563778,
- 92.19433555001908,
- 11.567352371276595,
- 52.705496151946285,
- 22.471793133903972,
- 3.6623324286590764,
- 20.2102781903039,
- 58.56523137489753,
- 28.673493080608758,
- 42.134198143189195,
- 21.637750690378144,
- 14.160698325191756,
- 15.127351396412191
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 40.31047439575195,
- "type": "float32"
- }
- },
- {
- "name": "reduceMean float32 3D tensor options.axes",
- "inputs": {
- "input": {
- "shape": [2, 3, 4],
- "data": [
- 95.84498772347054,
- 75.69370054099012,
- 1.5417720846181426,
- 8.787033906673592,
- 70.08280339173061,
- 13.784331379836544,
- 20.006068194857885,
- 94.80963809344851,
- 25.829190184293417,
- 94.13260521032214,
- 67.72958187044576,
- 16.099351117563778,
- 92.19433555001908,
- 11.567352371276595,
- 52.705496151946285,
- 22.471793133903972,
- 3.6623324286590764,
- 20.2102781903039,
- 58.56523137489753,
- 28.673493080608758,
- 42.134198143189195,
- 21.637750690378144,
- 14.160698325191756,
- 15.127351396412191
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": [2]
- },
- "expected": {
- "shape": [2, 3],
- "data": [
- 45.46687316894531,
- 49.670711517333984,
- 50.94768142700195,
- 44.734745025634766,
- 27.777833938598633,
- 23.264999389648438
- ],
- "type": "float32"
- }
- },
- {
- "name": "reduceMean float32 4D tensor options.axes",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 95.84498772347054,
- 75.69370054099012,
- 1.5417720846181426,
- 8.787033906673592,
- 70.08280339173061,
- 13.784331379836544,
- 20.006068194857885,
- 94.80963809344851,
- 25.829190184293417,
- 94.13260521032214,
- 67.72958187044576,
- 16.099351117563778,
- 92.19433555001908,
- 11.567352371276595,
- 52.705496151946285,
- 22.471793133903972,
- 3.6623324286590764,
- 20.2102781903039,
- 58.56523137489753,
- 28.673493080608758,
- 42.134198143189195,
- 21.637750690378144,
- 14.160698325191756,
- 15.127351396412191
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": [0, 2]
- },
- "expected": {
- "shape": [2, 3],
- "data": [
- 54.82453536987305,
- 40.251548767089844,
- 22.060470581054688,
- 48.58541488647461,
- 51.343353271484375,
- 24.797523498535156
- ],
- "type": "float32"
- }
- },
- {
- "name": "reduceMean float32 3D tensor options.keepDimensions=false",
- "inputs": {
- "input": {
- "shape": [2, 3, 4],
- "data": [
- 95.84498772347054,
- 75.69370054099012,
- 1.5417720846181426,
- 8.787033906673592,
- 70.08280339173061,
- 13.784331379836544,
- 20.006068194857885,
- 94.80963809344851,
- 25.829190184293417,
- 94.13260521032214,
- 67.72958187044576,
- 16.099351117563778,
- 92.19433555001908,
- 11.567352371276595,
- 52.705496151946285,
- 22.471793133903972,
- 3.6623324286590764,
- 20.2102781903039,
- 58.56523137489753,
- 28.673493080608758,
- 42.134198143189195,
- 21.637750690378144,
- 14.160698325191756,
- 15.127351396412191
- ],
- "type": "float32"
- }
- },
- "options": {
- "keepDimensions": false
- },
- "expected": {
- "data": 40.31047439575195,
- "type": "float32"
- }
- },
- {
- "name": "reduceMean float32 3D tensor options.keepDimensions=true",
- "inputs": {
- "input": {
- "shape": [2, 3, 4],
- "data": [
- 95.84498772347054,
- 75.69370054099012,
- 1.5417720846181426,
- 8.787033906673592,
- 70.08280339173061,
- 13.784331379836544,
- 20.006068194857885,
- 94.80963809344851,
- 25.829190184293417,
- 94.13260521032214,
- 67.72958187044576,
- 16.099351117563778,
- 92.19433555001908,
- 11.567352371276595,
- 52.705496151946285,
- 22.471793133903972,
- 3.6623324286590764,
- 20.2102781903039,
- 58.56523137489753,
- 28.673493080608758,
- 42.134198143189195,
- 21.637750690378144,
- 14.160698325191756,
- 15.127351396412191
- ],
- "type": "float32"
- }
- },
- "options": {
- "keepDimensions": true
- },
- "expected": {
- "shape": [1, 1, 1],
- "data": [
- 40.31047439575195
- ],
- "type": "float32"
- }
- },
- {
- "name": "reduceMean float32 4D tensor options.keepDimensions=false",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 95.84498772347054,
- 75.69370054099012,
- 1.5417720846181426,
- 8.787033906673592,
- 70.08280339173061,
- 13.784331379836544,
- 20.006068194857885,
- 94.80963809344851,
- 25.829190184293417,
- 94.13260521032214,
- 67.72958187044576,
- 16.099351117563778,
- 92.19433555001908,
- 11.567352371276595,
- 52.705496151946285,
- 22.471793133903972,
- 3.6623324286590764,
- 20.2102781903039,
- 58.56523137489753,
- 28.673493080608758,
- 42.134198143189195,
- 21.637750690378144,
- 14.160698325191756,
- 15.127351396412191
- ],
- "type": "float32"
- }
- },
- "options": {
- "keepDimensions": false
- },
- "expected": {
- "data": 40.31047439575195,
- "type": "float32"
- }
- },
- {
- "name": "reduceMean float32 4D tensor options.keepDimensions=true",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 95.84498772347054,
- 75.69370054099012,
- 1.5417720846181426,
- 8.787033906673592,
- 70.08280339173061,
- 13.784331379836544,
- 20.006068194857885,
- 94.80963809344851,
- 25.829190184293417,
- 94.13260521032214,
- 67.72958187044576,
- 16.099351117563778,
- 92.19433555001908,
- 11.567352371276595,
- 52.705496151946285,
- 22.471793133903972,
- 3.6623324286590764,
- 20.2102781903039,
- 58.56523137489753,
- 28.673493080608758,
- 42.134198143189195,
- 21.637750690378144,
- 14.160698325191756,
- 15.127351396412191
- ],
- "type": "float32"
- }
- },
- "options": {
- "keepDimensions": true
- },
- "expected": {
- "shape": [1, 1, 1, 1],
- "data": [
- 40.31047439575195
- ],
- "type": "float32"
- }
- },
- {
- "name": "reduceMean float32 4D tensor options.axes with options.keepDimensions=false",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 95.84498772347054,
- 75.69370054099012,
- 1.5417720846181426,
- 8.787033906673592,
- 70.08280339173061,
- 13.784331379836544,
- 20.006068194857885,
- 94.80963809344851,
- 25.829190184293417,
- 94.13260521032214,
- 67.72958187044576,
- 16.099351117563778,
- 92.19433555001908,
- 11.567352371276595,
- 52.705496151946285,
- 22.471793133903972,
- 3.6623324286590764,
- 20.2102781903039,
- 58.56523137489753,
- 28.673493080608758,
- 42.134198143189195,
- 21.637750690378144,
- 14.160698325191756,
- 15.127351396412191
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": [1, 3],
- "keepDimensions": false
- },
- "expected": {
- "shape": [2, 2],
- "data": [
- 52.287559509277344,
- 45.10261917114258,
- 47.640018463134766,
- 16.211700439453125
- ],
- "type": "float32"
- }
- },
- {
- "name": "reduceMean float32 4D tensor options.axes with options.keepDimensions=true",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 95.84498772347054,
- 75.69370054099012,
- 1.5417720846181426,
- 8.787033906673592,
- 70.08280339173061,
- 13.784331379836544,
- 20.006068194857885,
- 94.80963809344851,
- 25.829190184293417,
- 94.13260521032214,
- 67.72958187044576,
- 16.099351117563778,
- 92.19433555001908,
- 11.567352371276595,
- 52.705496151946285,
- 22.471793133903972,
- 3.6623324286590764,
- 20.2102781903039,
- 58.56523137489753,
- 28.673493080608758,
- 42.134198143189195,
- 21.637750690378144,
- 14.160698325191756,
- 15.127351396412191
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": [1, 3],
- "keepDimensions": true
- },
- "expected": {
- "shape": [2, 1, 2, 1],
- "data": [
- 52.287559509277344,
- 45.10261917114258,
- 47.640018463134766,
- 16.211700439453125
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/reduce_min.json b/tests/wpt/tests/webnn/resources/test_data/reduce_min.json
deleted file mode 100644
index 4d91480bb95..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/reduce_min.json
+++ /dev/null
@@ -1,664 +0,0 @@
-{
- "tests": [
- {
- "name": "reduceMin float32 0D constant tensor default options",
- "inputs": {
- "input": {
- "shape": [],
- "data": [
- -58.76195526123047
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "data": -58.76195526123047,
- "type": "float32"
- }
- },
- {
- "name": "reduceMin float32 0D constant tensor empty axes",
- "inputs": {
- "input": {
- "shape": [],
- "data": [
- -58.76195526123047
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "axes": []
- },
- "expected": {
- "name": "output",
- "data": -58.76195526123047,
- "type": "float32"
- }
- },
- {
- "name": "reduceMin float32 1D constant tensor default options",
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- -58.76195671214997,
- -87.962299829198,
- -70.13690195964651,
- -53.61766646981643,
- -39.50931280469092,
- 76.48815138549966,
- -18.705087479309455,
- 44.78261924634546,
- 30.70233967738929,
- 61.463613873181146,
- 77.84043646028437,
- -53.747413472322414,
- -31.713543832764827,
- -9.735438243016588,
- 77.93652481771113,
- 99.01705821629525,
- 73.39929943432298,
- 92.08459468237234,
- -59.40851905900759,
- -84.40769111096932,
- 75.88834177123843,
- 96.02651672898816,
- -55.976554418350545,
- -1.791101785391234
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "data": -87.9623031616211,
- "type": "float32"
- }
- },
- {
- "name": "reduceMin float32 1D tensor default options",
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- -58.76195671214997,
- -87.962299829198,
- -70.13690195964651,
- -53.61766646981643,
- -39.50931280469092,
- 76.48815138549966,
- -18.705087479309455,
- 44.78261924634546,
- 30.70233967738929,
- 61.463613873181146,
- 77.84043646028437,
- -53.747413472322414,
- -31.713543832764827,
- -9.735438243016588,
- 77.93652481771113,
- 99.01705821629525,
- 73.39929943432298,
- 92.08459468237234,
- -59.40851905900759,
- -84.40769111096932,
- 75.88834177123843,
- 96.02651672898816,
- -55.976554418350545,
- -1.791101785391234
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": -87.9623031616211,
- "type": "float32"
- }
- },
- {
- "name": "reduceMin float32 2D tensor default options",
- "inputs": {
- "input": {
- "shape": [4, 6],
- "data": [
- -58.76195671214997,
- -87.962299829198,
- -70.13690195964651,
- -53.61766646981643,
- -39.50931280469092,
- 76.48815138549966,
- -18.705087479309455,
- 44.78261924634546,
- 30.70233967738929,
- 61.463613873181146,
- 77.84043646028437,
- -53.747413472322414,
- -31.713543832764827,
- -9.735438243016588,
- 77.93652481771113,
- 99.01705821629525,
- 73.39929943432298,
- 92.08459468237234,
- -59.40851905900759,
- -84.40769111096932,
- 75.88834177123843,
- 96.02651672898816,
- -55.976554418350545,
- -1.791101785391234
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": -87.9623031616211,
- "type": "float32"
- }
- },
- {
- "name": "reduceMin float32 3D tensor default options",
- "inputs": {
- "input": {
- "shape": [2, 3, 4],
- "data": [
- -58.76195671214997,
- -87.962299829198,
- -70.13690195964651,
- -53.61766646981643,
- -39.50931280469092,
- 76.48815138549966,
- -18.705087479309455,
- 44.78261924634546,
- 30.70233967738929,
- 61.463613873181146,
- 77.84043646028437,
- -53.747413472322414,
- -31.713543832764827,
- -9.735438243016588,
- 77.93652481771113,
- 99.01705821629525,
- 73.39929943432298,
- 92.08459468237234,
- -59.40851905900759,
- -84.40769111096932,
- 75.88834177123843,
- 96.02651672898816,
- -55.976554418350545,
- -1.791101785391234
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": -87.9623031616211,
- "type": "float32"
- }
- },
- {
- "name": "reduceMin float32 4D tensor default options",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- -58.76195671214997,
- -87.962299829198,
- -70.13690195964651,
- -53.61766646981643,
- -39.50931280469092,
- 76.48815138549966,
- -18.705087479309455,
- 44.78261924634546,
- 30.70233967738929,
- 61.463613873181146,
- 77.84043646028437,
- -53.747413472322414,
- -31.713543832764827,
- -9.735438243016588,
- 77.93652481771113,
- 99.01705821629525,
- 73.39929943432298,
- 92.08459468237234,
- -59.40851905900759,
- -84.40769111096932,
- 75.88834177123843,
- 96.02651672898816,
- -55.976554418350545,
- -1.791101785391234
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": -87.9623031616211,
- "type": "float32"
- }
- },
- {
- "name": "reduceMin float32 5D tensor default options",
- "inputs": {
- "input": {
- "shape": [2, 1, 4, 1, 3],
- "data": [
- -58.76195671214997,
- -87.962299829198,
- -70.13690195964651,
- -53.61766646981643,
- -39.50931280469092,
- 76.48815138549966,
- -18.705087479309455,
- 44.78261924634546,
- 30.70233967738929,
- 61.463613873181146,
- 77.84043646028437,
- -53.747413472322414,
- -31.713543832764827,
- -9.735438243016588,
- 77.93652481771113,
- 99.01705821629525,
- 73.39929943432298,
- 92.08459468237234,
- -59.40851905900759,
- -84.40769111096932,
- 75.88834177123843,
- 96.02651672898816,
- -55.976554418350545,
- -1.791101785391234
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": -87.9623031616211,
- "type": "float32"
- }
- },
- {
- "name": "reduceMin float32 3D tensor options.axes",
- "inputs": {
- "input": {
- "shape": [2, 3, 4],
- "data": [
- -58.76195671214997,
- -87.962299829198,
- -70.13690195964651,
- -53.61766646981643,
- -39.50931280469092,
- 76.48815138549966,
- -18.705087479309455,
- 44.78261924634546,
- 30.70233967738929,
- 61.463613873181146,
- 77.84043646028437,
- -53.747413472322414,
- -31.713543832764827,
- -9.735438243016588,
- 77.93652481771113,
- 99.01705821629525,
- 73.39929943432298,
- 92.08459468237234,
- -59.40851905900759,
- -84.40769111096932,
- 75.88834177123843,
- 96.02651672898816,
- -55.976554418350545,
- -1.791101785391234
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": [2]
- },
- "expected": {
- "name": "output",
- "shape": [2, 3],
- "data": [
- -87.9623031616211,
- -39.50931167602539,
- -53.747413635253906,
- -31.713542938232422,
- -84.4076919555664,
- -55.97655487060547
- ],
- "type": "float32"
- }
- },
- {
- "name": "reduceMin float32 4D tensor options.axes",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- -58.76195671214997,
- -87.962299829198,
- -70.13690195964651,
- -53.61766646981643,
- -39.50931280469092,
- 76.48815138549966,
- -18.705087479309455,
- 44.78261924634546,
- 30.70233967738929,
- 61.463613873181146,
- 77.84043646028437,
- -53.747413472322414,
- -31.713543832764827,
- -9.735438243016588,
- 77.93652481771113,
- 99.01705821629525,
- 73.39929943432298,
- 92.08459468237234,
- -59.40851905900759,
- -84.40769111096932,
- 75.88834177123843,
- 96.02651672898816,
- -55.976554418350545,
- -1.791101785391234
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": [0, 2]
- },
- "expected": {
- "name": "output",
- "shape": [2, 3],
- "data": [
- -58.76195526123047,
- -87.9623031616211,
- -70.13690185546875,
- -59.40851974487305,
- -84.4076919555664,
- -53.747413635253906
- ],
- "type": "float32"
- }
- },
- {
- "name": "reduceMin float32 3D tensor options.keepDimensions=false",
- "inputs": {
- "input": {
- "shape": [2, 3, 4],
- "data": [
- -58.76195671214997,
- -87.962299829198,
- -70.13690195964651,
- -53.61766646981643,
- -39.50931280469092,
- 76.48815138549966,
- -18.705087479309455,
- 44.78261924634546,
- 30.70233967738929,
- 61.463613873181146,
- 77.84043646028437,
- -53.747413472322414,
- -31.713543832764827,
- -9.735438243016588,
- 77.93652481771113,
- 99.01705821629525,
- 73.39929943432298,
- 92.08459468237234,
- -59.40851905900759,
- -84.40769111096932,
- 75.88834177123843,
- 96.02651672898816,
- -55.976554418350545,
- -1.791101785391234
- ],
- "type": "float32"
- }
- },
- "options": {
- "keepDimensions": false
- },
- "expected": {
- "name": "output",
- "data": -87.9623031616211,
- "type": "float32"
- }
- },
- {
- "name": "reduceMin float32 3D tensor options.keepDimensions=true",
- "inputs": {
- "input": {
- "shape": [2, 3, 4],
- "data": [
- -58.76195671214997,
- -87.962299829198,
- -70.13690195964651,
- -53.61766646981643,
- -39.50931280469092,
- 76.48815138549966,
- -18.705087479309455,
- 44.78261924634546,
- 30.70233967738929,
- 61.463613873181146,
- 77.84043646028437,
- -53.747413472322414,
- -31.713543832764827,
- -9.735438243016588,
- 77.93652481771113,
- 99.01705821629525,
- 73.39929943432298,
- 92.08459468237234,
- -59.40851905900759,
- -84.40769111096932,
- 75.88834177123843,
- 96.02651672898816,
- -55.976554418350545,
- -1.791101785391234
- ],
- "type": "float32"
- }
- },
- "options": {
- "keepDimensions": true
- },
- "expected": {
- "name": "output",
- "shape": [1, 1, 1],
- "data": [
- -87.9623031616211
- ],
- "type": "float32"
- }
- },
- {
- "name": "reduceMin float32 4D tensor options.keepDimensions=false",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- -58.76195671214997,
- -87.962299829198,
- -70.13690195964651,
- -53.61766646981643,
- -39.50931280469092,
- 76.48815138549966,
- -18.705087479309455,
- 44.78261924634546,
- 30.70233967738929,
- 61.463613873181146,
- 77.84043646028437,
- -53.747413472322414,
- -31.713543832764827,
- -9.735438243016588,
- 77.93652481771113,
- 99.01705821629525,
- 73.39929943432298,
- 92.08459468237234,
- -59.40851905900759,
- -84.40769111096932,
- 75.88834177123843,
- 96.02651672898816,
- -55.976554418350545,
- -1.791101785391234
- ],
- "type": "float32"
- }
- },
- "options": {
- "keepDimensions": false
- },
- "expected": {
- "name": "output",
- "data": -87.9623031616211,
- "type": "float32"
- }
- },
- {
- "name": "reduceMin float32 4D tensor options.keepDimensions=true",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- -58.76195671214997,
- -87.962299829198,
- -70.13690195964651,
- -53.61766646981643,
- -39.50931280469092,
- 76.48815138549966,
- -18.705087479309455,
- 44.78261924634546,
- 30.70233967738929,
- 61.463613873181146,
- 77.84043646028437,
- -53.747413472322414,
- -31.713543832764827,
- -9.735438243016588,
- 77.93652481771113,
- 99.01705821629525,
- 73.39929943432298,
- 92.08459468237234,
- -59.40851905900759,
- -84.40769111096932,
- 75.88834177123843,
- 96.02651672898816,
- -55.976554418350545,
- -1.791101785391234
- ],
- "type": "float32"
- }
- },
- "options": {
- "keepDimensions": true
- },
- "expected": {
- "name": "output",
- "shape": [1, 1, 1, 1],
- "data": [
- -87.9623031616211
- ],
- "type": "float32"
- }
- },
- {
- "name": "reduceMin float32 4D tensor options.axes with options.keepDimensions=false",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- -58.76195671214997,
- -87.962299829198,
- -70.13690195964651,
- -53.61766646981643,
- -39.50931280469092,
- 76.48815138549966,
- -18.705087479309455,
- 44.78261924634546,
- 30.70233967738929,
- 61.463613873181146,
- 77.84043646028437,
- -53.747413472322414,
- -31.713543832764827,
- -9.735438243016588,
- 77.93652481771113,
- 99.01705821629525,
- 73.39929943432298,
- 92.08459468237234,
- -59.40851905900759,
- -84.40769111096932,
- 75.88834177123843,
- 96.02651672898816,
- -55.976554418350545,
- -1.791101785391234
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": [1, 3],
- "keepDimensions": false
- },
- "expected": {
- "name": "output",
- "shape": [2, 2],
- "data": [
- -87.9623031616211,
- -53.747413635253906,
- -84.4076919555664,
- -55.97655487060547
- ],
- "type": "float32"
- }
- },
- {
- "name": "reduceMin float32 4D tensor options.axes with options.keepDimensions=true",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- -58.76195671214997,
- -87.962299829198,
- -70.13690195964651,
- -53.61766646981643,
- -39.50931280469092,
- 76.48815138549966,
- -18.705087479309455,
- 44.78261924634546,
- 30.70233967738929,
- 61.463613873181146,
- 77.84043646028437,
- -53.747413472322414,
- -31.713543832764827,
- -9.735438243016588,
- 77.93652481771113,
- 99.01705821629525,
- 73.39929943432298,
- 92.08459468237234,
- -59.40851905900759,
- -84.40769111096932,
- 75.88834177123843,
- 96.02651672898816,
- -55.976554418350545,
- -1.791101785391234
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": [1, 3],
- "keepDimensions": true
- },
- "expected": {
- "name": "output",
- "shape": [2, 1, 2, 1],
- "data": [
- -87.9623031616211,
- -53.747413635253906,
- -84.4076919555664,
- -55.97655487060547
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/reduce_product.json b/tests/wpt/tests/webnn/resources/test_data/reduce_product.json
deleted file mode 100644
index e9b2dc34c26..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/reduce_product.json
+++ /dev/null
@@ -1,664 +0,0 @@
-{
- "tests": [
- {
- "name": "reduceProduct float32 0D constant tensor default options",
- "inputs": {
- "input": {
- "shape": [],
- "data": [
- -68.75911712646484
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "data": -68.75911712646484,
- "type": "float32"
- }
- },
- {
- "name": "reduceProduct float32 0D constant tensor empty axes",
- "inputs": {
- "input": {
- "shape": [],
- "data": [
- -68.75911712646484
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "axes": []
- },
- "expected": {
- "name": "output",
- "data": -68.75911712646484,
- "type": "float32"
- }
- },
- {
- "name": "reduceProduct float32 1D constant tensor default options",
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- -68.75911760233478,
- 99.4496130391401,
- 24.860555622046746,
- -44.23515424391753,
- -22.69974404385384,
- 79.97555172142995,
- 14.46502415218545,
- 49.231095225588376,
- 30.058706923717068,
- 69.45106401985521,
- -20.15709647137976,
- -58.02551401530734,
- 51.89660954258355,
- -2.020799112914105,
- 39.392973241316554,
- 26.780734701055266,
- -97.97651593223856,
- 48.66154478867011,
- -85.19523905815305,
- -18.169861657911653,
- 64.83759066937682,
- -14.958838503675935,
- -74.50931980014732,
- -11.319679210869765
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "data": 1.5855958784642327e+37,
- "type": "float32"
- }
- },
- {
- "name": "reduceProduct float32 1D tensor default options",
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- -68.75911760233478,
- 99.4496130391401,
- 24.860555622046746,
- -44.23515424391753,
- -22.69974404385384,
- 79.97555172142995,
- 14.46502415218545,
- 49.231095225588376,
- 30.058706923717068,
- 69.45106401985521,
- -20.15709647137976,
- -58.02551401530734,
- 51.89660954258355,
- -2.020799112914105,
- 39.392973241316554,
- 26.780734701055266,
- -97.97651593223856,
- 48.66154478867011,
- -85.19523905815305,
- -18.169861657911653,
- 64.83759066937682,
- -14.958838503675935,
- -74.50931980014732,
- -11.319679210869765
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 1.5855958784642327e+37,
- "type": "float32"
- }
- },
- {
- "name": "reduceProduct float32 2D tensor default options",
- "inputs": {
- "input": {
- "shape": [4, 6],
- "data": [
- -68.75911760233478,
- 99.4496130391401,
- 24.860555622046746,
- -44.23515424391753,
- -22.69974404385384,
- 79.97555172142995,
- 14.46502415218545,
- 49.231095225588376,
- 30.058706923717068,
- 69.45106401985521,
- -20.15709647137976,
- -58.02551401530734,
- 51.89660954258355,
- -2.020799112914105,
- 39.392973241316554,
- 26.780734701055266,
- -97.97651593223856,
- 48.66154478867011,
- -85.19523905815305,
- -18.169861657911653,
- 64.83759066937682,
- -14.958838503675935,
- -74.50931980014732,
- -11.319679210869765
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 1.5855958784642327e+37,
- "type": "float32"
- }
- },
- {
- "name": "reduceProduct float32 3D tensor default options",
- "inputs": {
- "input": {
- "shape": [2, 3, 4],
- "data": [
- -68.75911760233478,
- 99.4496130391401,
- 24.860555622046746,
- -44.23515424391753,
- -22.69974404385384,
- 79.97555172142995,
- 14.46502415218545,
- 49.231095225588376,
- 30.058706923717068,
- 69.45106401985521,
- -20.15709647137976,
- -58.02551401530734,
- 51.89660954258355,
- -2.020799112914105,
- 39.392973241316554,
- 26.780734701055266,
- -97.97651593223856,
- 48.66154478867011,
- -85.19523905815305,
- -18.169861657911653,
- 64.83759066937682,
- -14.958838503675935,
- -74.50931980014732,
- -11.319679210869765
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 1.5855958784642327e+37,
- "type": "float32"
- }
- },
- {
- "name": "reduceProduct float32 4D tensor default options",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- -68.75911760233478,
- 99.4496130391401,
- 24.860555622046746,
- -44.23515424391753,
- -22.69974404385384,
- 79.97555172142995,
- 14.46502415218545,
- 49.231095225588376,
- 30.058706923717068,
- 69.45106401985521,
- -20.15709647137976,
- -58.02551401530734,
- 51.89660954258355,
- -2.020799112914105,
- 39.392973241316554,
- 26.780734701055266,
- -97.97651593223856,
- 48.66154478867011,
- -85.19523905815305,
- -18.169861657911653,
- 64.83759066937682,
- -14.958838503675935,
- -74.50931980014732,
- -11.319679210869765
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 1.5855958784642327e+37,
- "type": "float32"
- }
- },
- {
- "name": "reduceProduct float32 5D tensor default options",
- "inputs": {
- "input": {
- "shape": [2, 1, 4, 1, 3],
- "data": [
- -68.75911760233478,
- 99.4496130391401,
- 24.860555622046746,
- -44.23515424391753,
- -22.69974404385384,
- 79.97555172142995,
- 14.46502415218545,
- 49.231095225588376,
- 30.058706923717068,
- 69.45106401985521,
- -20.15709647137976,
- -58.02551401530734,
- 51.89660954258355,
- -2.020799112914105,
- 39.392973241316554,
- 26.780734701055266,
- -97.97651593223856,
- 48.66154478867011,
- -85.19523905815305,
- -18.169861657911653,
- 64.83759066937682,
- -14.958838503675935,
- -74.50931980014732,
- -11.319679210869765
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 1.5855958784642327e+37,
- "type": "float32"
- }
- },
- {
- "name": "reduceProduct float32 3D tensor options.axes",
- "inputs": {
- "input": {
- "shape": [2, 3, 4],
- "data": [
- -68.75911760233478,
- 99.4496130391401,
- 24.860555622046746,
- -44.23515424391753,
- -22.69974404385384,
- 79.97555172142995,
- 14.46502415218545,
- 49.231095225588376,
- 30.058706923717068,
- 69.45106401985521,
- -20.15709647137976,
- -58.02551401530734,
- 51.89660954258355,
- -2.020799112914105,
- 39.392973241316554,
- 26.780734701055266,
- -97.97651593223856,
- 48.66154478867011,
- -85.19523905815305,
- -18.169861657911653,
- 64.83759066937682,
- -14.958838503675935,
- -74.50931980014732,
- -11.319679210869765
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": [2]
- },
- "expected": {
- "name": "output",
- "shape": [2, 3],
- "data": [
- 7519895,
- -1292816.375,
- 2441721.75,
- -110637.7734375,
- -7380313.5,
- -818030.5
- ],
- "type": "float32"
- }
- },
- {
- "name": "reduceProduct float32 4D tensor options.axes",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- -68.75911760233478,
- 99.4496130391401,
- 24.860555622046746,
- -44.23515424391753,
- -22.69974404385384,
- 79.97555172142995,
- 14.46502415218545,
- 49.231095225588376,
- 30.058706923717068,
- 69.45106401985521,
- -20.15709647137976,
- -58.02551401530734,
- 51.89660954258355,
- -2.020799112914105,
- 39.392973241316554,
- 26.780734701055266,
- -97.97651593223856,
- 48.66154478867011,
- -85.19523905815305,
- -18.169861657911653,
- 64.83759066937682,
- -14.958838503675935,
- -74.50931980014732,
- -11.319679210869765
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": [0, 2]
- },
- "expected": {
- "name": "output",
- "shape": [2, 3],
- "data": [
- 4227263.5,
- -446960.5625,
- 3811296.75,
- 1280298.5,
- -1343475.375,
- 1280118.75
- ],
- "type": "float32"
- }
- },
- {
- "name": "reduceProduct float32 3D tensor options.keepDimensions=false",
- "inputs": {
- "input": {
- "shape": [2, 3, 4],
- "data": [
- -68.75911760233478,
- 99.4496130391401,
- 24.860555622046746,
- -44.23515424391753,
- -22.69974404385384,
- 79.97555172142995,
- 14.46502415218545,
- 49.231095225588376,
- 30.058706923717068,
- 69.45106401985521,
- -20.15709647137976,
- -58.02551401530734,
- 51.89660954258355,
- -2.020799112914105,
- 39.392973241316554,
- 26.780734701055266,
- -97.97651593223856,
- 48.66154478867011,
- -85.19523905815305,
- -18.169861657911653,
- 64.83759066937682,
- -14.958838503675935,
- -74.50931980014732,
- -11.319679210869765
- ],
- "type": "float32"
- }
- },
- "options": {
- "keepDimensions": false
- },
- "expected": {
- "name": "output",
- "data": 1.5855958784642327e+37,
- "type": "float32"
- }
- },
- {
- "name": "reduceProduct float32 3D tensor options.keepDimensions=true",
- "inputs": {
- "input": {
- "shape": [2, 3, 4],
- "data": [
- -68.75911760233478,
- 99.4496130391401,
- 24.860555622046746,
- -44.23515424391753,
- -22.69974404385384,
- 79.97555172142995,
- 14.46502415218545,
- 49.231095225588376,
- 30.058706923717068,
- 69.45106401985521,
- -20.15709647137976,
- -58.02551401530734,
- 51.89660954258355,
- -2.020799112914105,
- 39.392973241316554,
- 26.780734701055266,
- -97.97651593223856,
- 48.66154478867011,
- -85.19523905815305,
- -18.169861657911653,
- 64.83759066937682,
- -14.958838503675935,
- -74.50931980014732,
- -11.319679210869765
- ],
- "type": "float32"
- }
- },
- "options": {
- "keepDimensions": true
- },
- "expected": {
- "name": "output",
- "shape": [1, 1, 1],
- "data": [
- 1.5855958784642327e+37
- ],
- "type": "float32"
- }
- },
- {
- "name": "reduceProduct float32 4D tensor options.keepDimensions=false",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- -68.75911760233478,
- 99.4496130391401,
- 24.860555622046746,
- -44.23515424391753,
- -22.69974404385384,
- 79.97555172142995,
- 14.46502415218545,
- 49.231095225588376,
- 30.058706923717068,
- 69.45106401985521,
- -20.15709647137976,
- -58.02551401530734,
- 51.89660954258355,
- -2.020799112914105,
- 39.392973241316554,
- 26.780734701055266,
- -97.97651593223856,
- 48.66154478867011,
- -85.19523905815305,
- -18.169861657911653,
- 64.83759066937682,
- -14.958838503675935,
- -74.50931980014732,
- -11.319679210869765
- ],
- "type": "float32"
- }
- },
- "options": {
- "keepDimensions": false
- },
- "expected": {
- "name": "output",
- "data": 1.5855958784642327e+37,
- "type": "float32"
- }
- },
- {
- "name": "reduceProduct float32 4D tensor options.keepDimensions=true",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- -68.75911760233478,
- 99.4496130391401,
- 24.860555622046746,
- -44.23515424391753,
- -22.69974404385384,
- 79.97555172142995,
- 14.46502415218545,
- 49.231095225588376,
- 30.058706923717068,
- 69.45106401985521,
- -20.15709647137976,
- -58.02551401530734,
- 51.89660954258355,
- -2.020799112914105,
- 39.392973241316554,
- 26.780734701055266,
- -97.97651593223856,
- 48.66154478867011,
- -85.19523905815305,
- -18.169861657911653,
- 64.83759066937682,
- -14.958838503675935,
- -74.50931980014732,
- -11.319679210869765
- ],
- "type": "float32"
- }
- },
- "options": {
- "keepDimensions": true
- },
- "expected": {
- "name": "output",
- "shape": [1, 1, 1, 1],
- "data": [
- 1.5855958784642327e+37
- ],
- "type": "float32"
- }
- },
- {
- "name": "reduceProduct float32 4D tensor options.axes with options.keepDimensions=false",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- -68.75911760233478,
- 99.4496130391401,
- 24.860555622046746,
- -44.23515424391753,
- -22.69974404385384,
- 79.97555172142995,
- 14.46502415218545,
- 49.231095225588376,
- 30.058706923717068,
- 69.45106401985521,
- -20.15709647137976,
- -58.02551401530734,
- 51.89660954258355,
- -2.020799112914105,
- 39.392973241316554,
- 26.780734701055266,
- -97.97651593223856,
- 48.66154478867011,
- -85.19523905815305,
- -18.169861657911653,
- 64.83759066937682,
- -14.958838503675935,
- -74.50931980014732,
- -11.319679210869765
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": [1, 3],
- "keepDimensions": false
- },
- "expected": {
- "name": "output",
- "shape": [2, 2],
- "data": [
- -3638925568,
- 6523364352,
- -414643360,
- 1610916352
- ],
- "type": "float32"
- }
- },
- {
- "name": "reduceProduct float32 4D tensor options.axes with options.keepDimensions=true",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- -68.75911760233478,
- 99.4496130391401,
- 24.860555622046746,
- -44.23515424391753,
- -22.69974404385384,
- 79.97555172142995,
- 14.46502415218545,
- 49.231095225588376,
- 30.058706923717068,
- 69.45106401985521,
- -20.15709647137976,
- -58.02551401530734,
- 51.89660954258355,
- -2.020799112914105,
- 39.392973241316554,
- 26.780734701055266,
- -97.97651593223856,
- 48.66154478867011,
- -85.19523905815305,
- -18.169861657911653,
- 64.83759066937682,
- -14.958838503675935,
- -74.50931980014732,
- -11.319679210869765
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": [1, 3],
- "keepDimensions": true
- },
- "expected": {
- "name": "output",
- "shape": [2, 1, 2, 1],
- "data": [
- -3638925568,
- 6523364352,
- -414643360,
- 1610916352
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/reduce_sum.json b/tests/wpt/tests/webnn/resources/test_data/reduce_sum.json
deleted file mode 100644
index fd93e131b3e..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/reduce_sum.json
+++ /dev/null
@@ -1,776 +0,0 @@
-{
- "tests": [
- {
- "name": "reduceSum float32 0D constant tensor default options",
- "inputs": {
- "input": {
- "shape": [],
- "data": [
- 69.6038589477539
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "data": 69.6038589477539,
- "type": "float32"
- }
- },
- {
- "name": "reduceSum float32 0D constant tensor empty axes",
- "inputs": {
- "input": {
- "shape": [],
- "data": [
- 69.6038589477539
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "axes": []
- },
- "expected": {
- "name": "output",
- "data": 69.6038589477539,
- "type": "float32"
- }
- },
- {
- "name": "reduceSum float32 1D constant tensor all positive default options",
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- 69.6038605453285,
- 99.1748548274599,
- 32.782341359545676,
- 8.881362932730319,
- 16.094296257493014,
- 11.806894918510213,
- 32.64223805640243,
- 43.998363476438975,
- 77.01777099153088,
- 79.79425759062173,
- 45.007949804090174,
- 24.39779644056914,
- 57.50268541631618,
- 57.60172895173401,
- 80.26985885745457,
- 43.65110628848945,
- 87.50368667545843,
- 94.50203768533922,
- 35.54289690580114,
- 42.856416416096344,
- 88.58631651618441,
- 98.85772999308332,
- 25.62685451963782,
- 60.17613590317996
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "data": 1313.87939453125,
- "type": "float32"
- }
- },
- {
- "name": "reduceSum float32 1D tensor all positive default options",
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- 69.6038605453285,
- 99.1748548274599,
- 32.782341359545676,
- 8.881362932730319,
- 16.094296257493014,
- 11.806894918510213,
- 32.64223805640243,
- 43.998363476438975,
- 77.01777099153088,
- 79.79425759062173,
- 45.007949804090174,
- 24.39779644056914,
- 57.50268541631618,
- 57.60172895173401,
- 80.26985885745457,
- 43.65110628848945,
- 87.50368667545843,
- 94.50203768533922,
- 35.54289690580114,
- 42.856416416096344,
- 88.58631651618441,
- 98.85772999308332,
- 25.62685451963782,
- 60.17613590317996
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 1313.87939453125,
- "type": "float32"
- }
- },
- {
- "name": "reduceSum float32 1D tensor all negative default options",
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- -51.77016701194195,
- -34.46467785404002,
- -40.983506494422414,
- -83.34922667410298,
- -67.67525749941849,
- -18.703119061215574,
- -20.281060841405974,
- -20.123054810748656,
- -83.63451764199297,
- -23.651085471445683,
- -10.20843911447325,
- -36.212902987180804,
- -76.26201536868358,
- -9.094745329540757,
- -53.88933855716023,
- -67.52341028201596,
- -71.14580362299527,
- -82.04484921713924,
- -96.29924980334548,
- -68.46700365583722,
- -26.107193300700942,
- -68.01821308673175,
- -4.833076925370335,
- -48.90069809349882
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": -1163.642578125,
- "type": "float32"
- }
- },
- {
- "name": "reduceSum float32 1D tensor all positive integers default options", // test with float32 values which are equivalent to integers
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- 56,
- 90,
- 67,
- 33,
- 20,
- 58,
- 22,
- 15,
- 86,
- 79,
- 59,
- 99,
- 16,
- 95,
- 67,
- 11,
- 60,
- 89,
- 50,
- 57,
- 77,
- 89,
- 10,
- 2
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 1307,
- "type": "float32"
- }
- },
- {
- "name": "reduceSum float32 1D tensor all negative integers default options", // test with float32 values which are equivalent to integers
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- -55,
- -36,
- -74,
- -17,
- -67,
- -95,
- -3,
- -67,
- -95,
- -13,
- -45,
- -9,
- -33,
- -98,
- -86,
- -11,
- -70,
- -44,
- -31,
- -68,
- -79,
- -24,
- -60,
- -36
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": -1216,
- "type": "float32"
- }
- },
- {
- "name": "reduceSum float32 2D tensor default options",
- "inputs": {
- "input": {
- "shape": [4, 6],
- "data": [
- 69.6038605453285,
- 99.1748548274599,
- 32.782341359545676,
- 8.881362932730319,
- 16.094296257493014,
- 11.806894918510213,
- 32.64223805640243,
- 43.998363476438975,
- 77.01777099153088,
- 79.79425759062173,
- 45.007949804090174,
- 24.39779644056914,
- 57.50268541631618,
- 57.60172895173401,
- 80.26985885745457,
- 43.65110628848945,
- 87.50368667545843,
- 94.50203768533922,
- 35.54289690580114,
- 42.856416416096344,
- 88.58631651618441,
- 98.85772999308332,
- 25.62685451963782,
- 60.17613590317996
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 1313.87939453125,
- "type": "float32"
- }
- },
- {
- "name": "reduceSum float32 3D tensor default options",
- "inputs": {
- "input": {
- "shape": [2, 3, 4],
- "data": [
- 69.6038605453285,
- 99.1748548274599,
- 32.782341359545676,
- 8.881362932730319,
- 16.094296257493014,
- 11.806894918510213,
- 32.64223805640243,
- 43.998363476438975,
- 77.01777099153088,
- 79.79425759062173,
- 45.007949804090174,
- 24.39779644056914,
- 57.50268541631618,
- 57.60172895173401,
- 80.26985885745457,
- 43.65110628848945,
- 87.50368667545843,
- 94.50203768533922,
- 35.54289690580114,
- 42.856416416096344,
- 88.58631651618441,
- 98.85772999308332,
- 25.62685451963782,
- 60.17613590317996
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 1313.87939453125,
- "type": "float32"
- }
- },
- {
- "name": "reduceSum float32 4D tensor default options",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 69.6038605453285,
- 99.1748548274599,
- 32.782341359545676,
- 8.881362932730319,
- 16.094296257493014,
- 11.806894918510213,
- 32.64223805640243,
- 43.998363476438975,
- 77.01777099153088,
- 79.79425759062173,
- 45.007949804090174,
- 24.39779644056914,
- 57.50268541631618,
- 57.60172895173401,
- 80.26985885745457,
- 43.65110628848945,
- 87.50368667545843,
- 94.50203768533922,
- 35.54289690580114,
- 42.856416416096344,
- 88.58631651618441,
- 98.85772999308332,
- 25.62685451963782,
- 60.17613590317996
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 1313.87939453125,
- "type": "float32"
- }
- },
- {
- "name": "reduceSum float32 5D tensor default options",
- "inputs": {
- "input": {
- "shape": [2, 1, 4, 1, 3],
- "data": [
- 69.6038605453285,
- 99.1748548274599,
- 32.782341359545676,
- 8.881362932730319,
- 16.094296257493014,
- 11.806894918510213,
- 32.64223805640243,
- 43.998363476438975,
- 77.01777099153088,
- 79.79425759062173,
- 45.007949804090174,
- 24.39779644056914,
- 57.50268541631618,
- 57.60172895173401,
- 80.26985885745457,
- 43.65110628848945,
- 87.50368667545843,
- 94.50203768533922,
- 35.54289690580114,
- 42.856416416096344,
- 88.58631651618441,
- 98.85772999308332,
- 25.62685451963782,
- 60.17613590317996
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 1313.87939453125,
- "type": "float32"
- }
- },
- {
- "name": "reduceSum float32 3D tensor options.axes",
- "inputs": {
- "input": {
- "shape": [2, 3, 4],
- "data": [
- 69.6038605453285,
- 99.1748548274599,
- 32.782341359545676,
- 8.881362932730319,
- 16.094296257493014,
- 11.806894918510213,
- 32.64223805640243,
- 43.998363476438975,
- 77.01777099153088,
- 79.79425759062173,
- 45.007949804090174,
- 24.39779644056914,
- 57.50268541631618,
- 57.60172895173401,
- 80.26985885745457,
- 43.65110628848945,
- 87.50368667545843,
- 94.50203768533922,
- 35.54289690580114,
- 42.856416416096344,
- 88.58631651618441,
- 98.85772999308332,
- 25.62685451963782,
- 60.17613590317996
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": [2]
- },
- "expected": {
- "shape": [2, 3],
- "data": [
- 210.44241333007812,
- 104.54179382324219,
- 226.2177734375,
- 239.025390625,
- 260.405029296875,
- 273.2470397949219
- ],
- "type": "float32"
- }
- },
- {
- "name": "reduceSum float32 4D tensor options.axes",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 69.6038605453285,
- 99.1748548274599,
- 32.782341359545676,
- 8.881362932730319,
- 16.094296257493014,
- 11.806894918510213,
- 32.64223805640243,
- 43.998363476438975,
- 77.01777099153088,
- 79.79425759062173,
- 45.007949804090174,
- 24.39779644056914,
- 57.50268541631618,
- 57.60172895173401,
- 80.26985885745457,
- 43.65110628848945,
- 87.50368667545843,
- 94.50203768533922,
- 35.54289690580114,
- 42.856416416096344,
- 88.58631651618441,
- 98.85772999308332,
- 25.62685451963782,
- 60.17613590317996
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": [0, 2]
- },
- "expected": {
- "shape": [2, 3],
- "data": [
- 179.63900756835938,
- 260.37457275390625,
- 219.3611297607422,
- 246.83712768554688,
- 157.4895782470703,
- 250.1780242919922
- ],
- "type": "float32"
- }
- },
- {
- "name": "reduceSum float32 3D tensor options.keepDimensions=false",
- "inputs": {
- "input": {
- "shape": [2, 3, 4],
- "data": [
- 69.6038605453285,
- 99.1748548274599,
- 32.782341359545676,
- 8.881362932730319,
- 16.094296257493014,
- 11.806894918510213,
- 32.64223805640243,
- 43.998363476438975,
- 77.01777099153088,
- 79.79425759062173,
- 45.007949804090174,
- 24.39779644056914,
- 57.50268541631618,
- 57.60172895173401,
- 80.26985885745457,
- 43.65110628848945,
- 87.50368667545843,
- 94.50203768533922,
- 35.54289690580114,
- 42.856416416096344,
- 88.58631651618441,
- 98.85772999308332,
- 25.62685451963782,
- 60.17613590317996
- ],
- "type": "float32"
- }
- },
- "options": {
- "keepDimensions": false
- },
- "expected": {
- "data": 1313.87939453125,
- "type": "float32"
- }
- },
- {
- "name": "reduceSum float32 3D tensor options.keepDimensions=true",
- "inputs": {
- "input": {
- "shape": [2, 3, 4],
- "data": [
- 69.6038605453285,
- 99.1748548274599,
- 32.782341359545676,
- 8.881362932730319,
- 16.094296257493014,
- 11.806894918510213,
- 32.64223805640243,
- 43.998363476438975,
- 77.01777099153088,
- 79.79425759062173,
- 45.007949804090174,
- 24.39779644056914,
- 57.50268541631618,
- 57.60172895173401,
- 80.26985885745457,
- 43.65110628848945,
- 87.50368667545843,
- 94.50203768533922,
- 35.54289690580114,
- 42.856416416096344,
- 88.58631651618441,
- 98.85772999308332,
- 25.62685451963782,
- 60.17613590317996
- ],
- "type": "float32"
- }
- },
- "options": {
- "keepDimensions": true
- },
- "expected": {
- "shape": [1, 1, 1],
- "data": [
- 1313.87939453125
- ],
- "type": "float32"
- }
- },
- {
- "name": "reduceSum float32 4D tensor options.keepDimensions=false",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 69.6038605453285,
- 99.1748548274599,
- 32.782341359545676,
- 8.881362932730319,
- 16.094296257493014,
- 11.806894918510213,
- 32.64223805640243,
- 43.998363476438975,
- 77.01777099153088,
- 79.79425759062173,
- 45.007949804090174,
- 24.39779644056914,
- 57.50268541631618,
- 57.60172895173401,
- 80.26985885745457,
- 43.65110628848945,
- 87.50368667545843,
- 94.50203768533922,
- 35.54289690580114,
- 42.856416416096344,
- 88.58631651618441,
- 98.85772999308332,
- 25.62685451963782,
- 60.17613590317996
- ],
- "type": "float32"
- }
- },
- "options": {
- "keepDimensions": false
- },
- "expected": {
- "data": 1313.87939453125,
- "type": "float32"
- }
- },
- {
- "name": "reduceSum float32 4D tensor options.keepDimensions=true",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 69.6038605453285,
- 99.1748548274599,
- 32.782341359545676,
- 8.881362932730319,
- 16.094296257493014,
- 11.806894918510213,
- 32.64223805640243,
- 43.998363476438975,
- 77.01777099153088,
- 79.79425759062173,
- 45.007949804090174,
- 24.39779644056914,
- 57.50268541631618,
- 57.60172895173401,
- 80.26985885745457,
- 43.65110628848945,
- 87.50368667545843,
- 94.50203768533922,
- 35.54289690580114,
- 42.856416416096344,
- 88.58631651618441,
- 98.85772999308332,
- 25.62685451963782,
- 60.17613590317996
- ],
- "type": "float32"
- }
- },
- "options": {
- "keepDimensions": true
- },
- "expected": {
- "shape": [1, 1, 1, 1],
- "data": [
- 1313.87939453125
- ],
- "type": "float32"
- }
- },
- {
- "name": "reduceSum float32 4D tensor options.axes with options.keepDimensions=false",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 69.6038605453285,
- 99.1748548274599,
- 32.782341359545676,
- 8.881362932730319,
- 16.094296257493014,
- 11.806894918510213,
- 32.64223805640243,
- 43.998363476438975,
- 77.01777099153088,
- 79.79425759062173,
- 45.007949804090174,
- 24.39779644056914,
- 57.50268541631618,
- 57.60172895173401,
- 80.26985885745457,
- 43.65110628848945,
- 87.50368667545843,
- 94.50203768533922,
- 35.54289690580114,
- 42.856416416096344,
- 88.58631651618441,
- 98.85772999308332,
- 25.62685451963782,
- 60.17613590317996
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": [1, 3],
- "keepDimensions": false
- },
- "expected": {
- "shape": [2, 2],
- "data": [
- 355.21942138671875,
- 185.98255920410156,
- 362.3598937988281,
- 410.3175354003906
- ],
- "type": "float32"
- }
- },
- {
- "name": "reduceSum float32 4D tensor options.axes with options.keepDimensions=true",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 69.6038605453285,
- 99.1748548274599,
- 32.782341359545676,
- 8.881362932730319,
- 16.094296257493014,
- 11.806894918510213,
- 32.64223805640243,
- 43.998363476438975,
- 77.01777099153088,
- 79.79425759062173,
- 45.007949804090174,
- 24.39779644056914,
- 57.50268541631618,
- 57.60172895173401,
- 80.26985885745457,
- 43.65110628848945,
- 87.50368667545843,
- 94.50203768533922,
- 35.54289690580114,
- 42.856416416096344,
- 88.58631651618441,
- 98.85772999308332,
- 25.62685451963782,
- 60.17613590317996
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": [1, 3],
- "keepDimensions": true
- },
- "expected": {
- "shape": [2, 1, 2, 1],
- "data": [
- 355.21942138671875,
- 185.98255920410156,
- 362.3598937988281,
- 410.3175354003906
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/reduce_sum_square.json b/tests/wpt/tests/webnn/resources/test_data/reduce_sum_square.json
deleted file mode 100644
index d308cad463a..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/reduce_sum_square.json
+++ /dev/null
@@ -1,784 +0,0 @@
-{
- "tests": [
- {
- "name": "reduceSumSquare float32 0D constant tensor default options",
- "inputs": {
- "input": {
- "shape": [],
- "data": [
- 52.5615348815918
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "data": 2762.71484375,
- "type": "float32"
- }
- },
- {
- "name": "reduceSumSquare float32 0D constant tensor empty axes",
- "inputs": {
- "input": {
- "shape": [],
- "data": [
- 52.5615348815918
- ],
- "type": "float32",
- "constant": true
- }
- },
- "options": {
- "axes": []
- },
- "expected": {
- "name": "output",
- "data": 2762.71484375,
- "type": "float32"
- }
- },
- {
- "name": "reduceSumSquare float32 1D constant tensor all positive default options", // default options: {axes: null, keepDimensions: false}
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- 52.5615351837915,
- 2.6261063680439234,
- 82.04877759500097,
- 14.401411284784604,
- 33.96051675758925,
- 83.93837980977771,
- 47.44504659398938,
- 19.177289239472593,
- 13.493006439137023,
- 44.15238362662202,
- 86.53118079678906,
- 70.20919468463771,
- 25.67262870756528,
- 79.73770192548034,
- 66.42284577584445,
- 70.40363336301188,
- 13.503327808732468,
- 41.22539754662389,
- 6.654552839238637,
- 85.79743668166222,
- 89.91348950671976,
- 53.55647451130674,
- 39.48537158474081,
- 3.9460408540454184
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "data": 73275.859375,
- "type": "float32"
- }
- },
- {
- "name": "reduceSumSquare float32 1D tensor all positive default options", // default options: {axes: null, keepDimensions: false}
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- 52.5615351837915,
- 2.6261063680439234,
- 82.04877759500097,
- 14.401411284784604,
- 33.96051675758925,
- 83.93837980977771,
- 47.44504659398938,
- 19.177289239472593,
- 13.493006439137023,
- 44.15238362662202,
- 86.53118079678906,
- 70.20919468463771,
- 25.67262870756528,
- 79.73770192548034,
- 66.42284577584445,
- 70.40363336301188,
- 13.503327808732468,
- 41.22539754662389,
- 6.654552839238637,
- 85.79743668166222,
- 89.91348950671976,
- 53.55647451130674,
- 39.48537158474081,
- 3.9460408540454184
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 73275.859375,
- "type": "float32"
- }
- },
- {
- "name": "reduceSumSquare float32 1D tensor all negative default options",
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- -21.452013864072896,
- -57.30725907408611,
- -72.83901116638569,
- -0.059761520988928396,
- -71.73678939977705,
- -44.61909261218302,
- -43.120022676836946,
- -91.33738230600645,
- -33.172438449832086,
- -48.55593151678299,
- -95.62864137865712,
- -20.876631045259614,
- -16.69083735987158,
- -39.52110386011864,
- -7.51078560359592,
- -90.59026921164444,
- -42.21683259824742,
- -76.74274815005997,
- -98.2242026863753,
- -60.27295167122231,
- -74.7320278737084,
- -8.543684369072977,
- -59.88873484887647,
- -17.99894136421551
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 80052.015625,
- "type": "float32"
- }
- },
- {
- "name": "reduceSumSquare float32 1D tensor all positive integers default options", // test with float32 values which are equivalent to integers
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- 52,
- 48,
- 2,
- 66,
- 30,
- 39,
- 14,
- 23,
- 81,
- 94,
- 78,
- 64,
- 38,
- 16,
- 63,
- 11,
- 46,
- 95,
- 17,
- 47,
- 40,
- 53,
- 87,
- 43
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 71347,
- "type": "float32"
- }
- },
- {
- "name": "reduceSumSquare float32 1D tensor all negative integers default options", // test with float32 values which are equivalent to integers
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- -10,
- -60,
- -69,
- -88,
- -35,
- -84,
- -74,
- -42,
- -93,
- -26,
- -40,
- -55,
- -92,
- -26,
- -39,
- -30,
- -61,
- -16,
- -16,
- -36,
- -9,
- -89,
- -45,
- -29
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 73634,
- "type": "float32"
- }
- },
- {
- "name": "reduceSumSquare float32 2D tensor default options",
- "inputs": {
- "input": {
- "shape": [4, 6],
- "data": [
- 52.5615351837915,
- 2.6261063680439234,
- 82.04877759500097,
- 14.401411284784604,
- 33.96051675758925,
- 83.93837980977771,
- 47.44504659398938,
- 19.177289239472593,
- 13.493006439137023,
- 44.15238362662202,
- 86.53118079678906,
- 70.20919468463771,
- 25.67262870756528,
- 79.73770192548034,
- 66.42284577584445,
- 70.40363336301188,
- 13.503327808732468,
- 41.22539754662389,
- 6.654552839238637,
- 85.79743668166222,
- 89.91348950671976,
- 53.55647451130674,
- 39.48537158474081,
- 3.9460408540454184
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 73275.859375,
- "type": "float32"
- }
- },
- {
- "name": "reduceSumSquare float32 3D tensor default options",
- "inputs": {
- "input": {
- "shape": [2, 3, 4],
- "data": [
- 52.5615351837915,
- 2.6261063680439234,
- 82.04877759500097,
- 14.401411284784604,
- 33.96051675758925,
- 83.93837980977771,
- 47.44504659398938,
- 19.177289239472593,
- 13.493006439137023,
- 44.15238362662202,
- 86.53118079678906,
- 70.20919468463771,
- 25.67262870756528,
- 79.73770192548034,
- 66.42284577584445,
- 70.40363336301188,
- 13.503327808732468,
- 41.22539754662389,
- 6.654552839238637,
- 85.79743668166222,
- 89.91348950671976,
- 53.55647451130674,
- 39.48537158474081,
- 3.9460408540454184
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 73275.859375,
- "type": "float32"
- }
- },
- {
- "name": "reduceSumSquare float32 4D tensor default options",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 52.5615351837915,
- 2.6261063680439234,
- 82.04877759500097,
- 14.401411284784604,
- 33.96051675758925,
- 83.93837980977771,
- 47.44504659398938,
- 19.177289239472593,
- 13.493006439137023,
- 44.15238362662202,
- 86.53118079678906,
- 70.20919468463771,
- 25.67262870756528,
- 79.73770192548034,
- 66.42284577584445,
- 70.40363336301188,
- 13.503327808732468,
- 41.22539754662389,
- 6.654552839238637,
- 85.79743668166222,
- 89.91348950671976,
- 53.55647451130674,
- 39.48537158474081,
- 3.9460408540454184
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 73275.859375,
- "type": "float32"
- }
- },
- {
- "name": "reduceSumSquare float32 5D tensor default options",
- "inputs": {
- "input": {
- "shape": [2, 1, 4, 1, 3],
- "data": [
- 52.5615351837915,
- 2.6261063680439234,
- 82.04877759500097,
- 14.401411284784604,
- 33.96051675758925,
- 83.93837980977771,
- 47.44504659398938,
- 19.177289239472593,
- 13.493006439137023,
- 44.15238362662202,
- 86.53118079678906,
- 70.20919468463771,
- 25.67262870756528,
- 79.73770192548034,
- 66.42284577584445,
- 70.40363336301188,
- 13.503327808732468,
- 41.22539754662389,
- 6.654552839238637,
- 85.79743668166222,
- 89.91348950671976,
- 53.55647451130674,
- 39.48537158474081,
- 3.9460408540454184
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "data": 73275.859375,
- "type": "float32"
- }
- },
- {
- "name": "reduceSumSquare float32 3D tensor options.axes",
- "inputs": {
- "input": {
- "shape": [2, 3, 4],
- "data": [
- 52.5615351837915,
- 2.6261063680439234,
- 82.04877759500097,
- 14.401411284784604,
- 33.96051675758925,
- 83.93837980977771,
- 47.44504659398938,
- 19.177289239472593,
- 13.493006439137023,
- 44.15238362662202,
- 86.53118079678906,
- 70.20919468463771,
- 25.67262870756528,
- 79.73770192548034,
- 66.42284577584445,
- 70.40363336301188,
- 13.503327808732468,
- 41.22539754662389,
- 6.654552839238637,
- 85.79743668166222,
- 89.91348950671976,
- 53.55647451130674,
- 39.48537158474081,
- 3.9460408540454184
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": [2]
- },
- "expected": {
- "name": "output",
- "shape": [2, 3],
- "data": [
- 9709.013671875,
- 10817.7685546875,
- 14548.470703125,
- 16385.8515625,
- 9287.357421875,
- 12527.3974609375
- ],
- "type": "float32"
- }
- },
- {
- "name": "reduceSumSquare float32 4D tensor options.axes",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 52.5615351837915,
- 2.6261063680439234,
- 82.04877759500097,
- 14.401411284784604,
- 33.96051675758925,
- 83.93837980977771,
- 47.44504659398938,
- 19.177289239472593,
- 13.493006439137023,
- 44.15238362662202,
- 86.53118079678906,
- 70.20919468463771,
- 25.67262870756528,
- 79.73770192548034,
- 66.42284577584445,
- 70.40363336301188,
- 13.503327808732468,
- 41.22539754662389,
- 6.654552839238637,
- 85.79743668166222,
- 89.91348950671976,
- 53.55647451130674,
- 39.48537158474081,
- 3.9460408540454184
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": [0, 2]
- },
- "expected": {
- "name": "output",
- "shape": [2, 3],
- "data": [
- 8585.87109375,
- 7700.654296875,
- 19889.1796875,
- 7113.0439453125,
- 16775.708984375,
- 13211.3994140625
- ],
- "type": "float32"
- }
- },
- {
- "name": "reduceSumSquare float32 3D tensor options.keepDimensions=false",
- "inputs": {
- "input": {
- "shape": [2, 3, 4],
- "data": [
- 52.5615351837915,
- 2.6261063680439234,
- 82.04877759500097,
- 14.401411284784604,
- 33.96051675758925,
- 83.93837980977771,
- 47.44504659398938,
- 19.177289239472593,
- 13.493006439137023,
- 44.15238362662202,
- 86.53118079678906,
- 70.20919468463771,
- 25.67262870756528,
- 79.73770192548034,
- 66.42284577584445,
- 70.40363336301188,
- 13.503327808732468,
- 41.22539754662389,
- 6.654552839238637,
- 85.79743668166222,
- 89.91348950671976,
- 53.55647451130674,
- 39.48537158474081,
- 3.9460408540454184
- ],
- "type": "float32"
- }
- },
- "options": {
- "keepDimensions": false
- },
- "expected": {
- "name": "output",
- "data": 73275.859375,
- "type": "float32"
- }
- },
- {
- "name": "reduceSumSquare float32 3D tensor options.keepDimensions=true",
- "inputs": {
- "input": {
- "shape": [2, 3, 4],
- "data": [
- 52.5615351837915,
- 2.6261063680439234,
- 82.04877759500097,
- 14.401411284784604,
- 33.96051675758925,
- 83.93837980977771,
- 47.44504659398938,
- 19.177289239472593,
- 13.493006439137023,
- 44.15238362662202,
- 86.53118079678906,
- 70.20919468463771,
- 25.67262870756528,
- 79.73770192548034,
- 66.42284577584445,
- 70.40363336301188,
- 13.503327808732468,
- 41.22539754662389,
- 6.654552839238637,
- 85.79743668166222,
- 89.91348950671976,
- 53.55647451130674,
- 39.48537158474081,
- 3.9460408540454184
- ],
- "type": "float32"
- }
- },
- "options": {
- "keepDimensions": true
- },
- "expected": {
- "name": "output",
- "shape": [1, 1, 1],
- "data": [
- 73275.859375
- ],
- "type": "float32"
- }
- },
- {
- "name": "reduceSumSquare float32 4D tensor options.keepDimensions=false",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 52.5615351837915,
- 2.6261063680439234,
- 82.04877759500097,
- 14.401411284784604,
- 33.96051675758925,
- 83.93837980977771,
- 47.44504659398938,
- 19.177289239472593,
- 13.493006439137023,
- 44.15238362662202,
- 86.53118079678906,
- 70.20919468463771,
- 25.67262870756528,
- 79.73770192548034,
- 66.42284577584445,
- 70.40363336301188,
- 13.503327808732468,
- 41.22539754662389,
- 6.654552839238637,
- 85.79743668166222,
- 89.91348950671976,
- 53.55647451130674,
- 39.48537158474081,
- 3.9460408540454184
- ],
- "type": "float32"
- }
- },
- "options": {
- "keepDimensions": false
- },
- "expected": {
- "name": "output",
- "data": 73275.859375,
- "type": "float32"
- }
- },
- {
- "name": "reduceSumSquare float32 4D tensor options.keepDimensions=true",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 52.5615351837915,
- 2.6261063680439234,
- 82.04877759500097,
- 14.401411284784604,
- 33.96051675758925,
- 83.93837980977771,
- 47.44504659398938,
- 19.177289239472593,
- 13.493006439137023,
- 44.15238362662202,
- 86.53118079678906,
- 70.20919468463771,
- 25.67262870756528,
- 79.73770192548034,
- 66.42284577584445,
- 70.40363336301188,
- 13.503327808732468,
- 41.22539754662389,
- 6.654552839238637,
- 85.79743668166222,
- 89.91348950671976,
- 53.55647451130674,
- 39.48537158474081,
- 3.9460408540454184
- ],
- "type": "float32"
- }
- },
- "options": {
- "keepDimensions": true
- },
- "expected": {
- "name": "output",
- "shape": [1, 1, 1, 1],
- "data": [
- 73275.859375
- ],
- "type": "float32"
- }
- },
- {
- "name": "reduceSumSquare float32 4D tensor options.axes with options.keepDimensions=false",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 52.5615351837915,
- 2.6261063680439234,
- 82.04877759500097,
- 14.401411284784604,
- 33.96051675758925,
- 83.93837980977771,
- 47.44504659398938,
- 19.177289239472593,
- 13.493006439137023,
- 44.15238362662202,
- 86.53118079678906,
- 70.20919468463771,
- 25.67262870756528,
- 79.73770192548034,
- 66.42284577584445,
- 70.40363336301188,
- 13.503327808732468,
- 41.22539754662389,
- 6.654552839238637,
- 85.79743668166222,
- 89.91348950671976,
- 53.55647451130674,
- 39.48537158474081,
- 3.9460408540454184
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": [1, 3],
- "keepDimensions": false
- },
- "expected": {
- "name": "output",
- "shape": [2, 2],
- "data": [
- 12302.474609375,
- 22772.77734375,
- 26919.09765625,
- 11281.5068359375
- ],
- "type": "float32"
- }
- },
- {
- "name": "reduceSumSquare float32 4D tensor options.axes with options.keepDimensions=true",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 52.5615351837915,
- 2.6261063680439234,
- 82.04877759500097,
- 14.401411284784604,
- 33.96051675758925,
- 83.93837980977771,
- 47.44504659398938,
- 19.177289239472593,
- 13.493006439137023,
- 44.15238362662202,
- 86.53118079678906,
- 70.20919468463771,
- 25.67262870756528,
- 79.73770192548034,
- 66.42284577584445,
- 70.40363336301188,
- 13.503327808732468,
- 41.22539754662389,
- 6.654552839238637,
- 85.79743668166222,
- 89.91348950671976,
- 53.55647451130674,
- 39.48537158474081,
- 3.9460408540454184
- ],
- "type": "float32"
- }
- },
- "options": {
- "axes": [1, 3],
- "keepDimensions": true
- },
- "expected": {
- "name": "output",
- "shape": [2, 1, 2, 1],
- "data": [
- 12302.474609375,
- 22772.77734375,
- 26919.09765625,
- 11281.5068359375
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/relu.json b/tests/wpt/tests/webnn/resources/test_data/relu.json
deleted file mode 100644
index 248902c6658..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/relu.json
+++ /dev/null
@@ -1,401 +0,0 @@
-{
- "tests": [ // relu input tensor of 1D to 5D with same data values
- {
- "name": "relu float32 1D constant tensor",
- "inputs": {
- "x": {
- "shape": [24],
- "data": [
- 79.04725231657116,
- 2.2503608756501166,
- 80.73939090529203,
- 63.90392076789547,
- 77.67340745512104,
- -71.09157819044825,
- -82.74703468427575,
- -26.814426600801028,
- -99.16788836397058,
- -35.71083406288831,
- 18.36165830990626,
- -37.36091648205435,
- -52.8386119809162,
- -10.408374773008958,
- 60.60291560236189,
- -13.644198913810342,
- -76.54250291031946,
- -8.132338049258351,
- 51.51447452437017,
- -51.63370281825297,
- -64.567999424324,
- -5.093302411117136,
- 15.354103550744384,
- 90.03858807393516
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- 79.04724884033203,
- 2.2503609657287598,
- 80.73938751220703,
- 63.9039192199707,
- 77.67340850830078,
- 0,
- 0,
- 0,
- 0,
- 0,
- 18.361658096313477,
- 0,
- 0,
- 0,
- 60.6029167175293,
- 0,
- 0,
- 0,
- 51.51447296142578,
- 0,
- 0,
- 0,
- 15.354103088378906,
- 90.03858947753906
- ],
- "type": "float32"
- }
- },
- {
- "name": "relu float32 1D tensor",
- "inputs": {
- "x": {
- "shape": [24],
- "data": [
- 79.04725231657116,
- 2.2503608756501166,
- 80.73939090529203,
- 63.90392076789547,
- 77.67340745512104,
- -71.09157819044825,
- -82.74703468427575,
- -26.814426600801028,
- -99.16788836397058,
- -35.71083406288831,
- 18.36165830990626,
- -37.36091648205435,
- -52.8386119809162,
- -10.408374773008958,
- 60.60291560236189,
- -13.644198913810342,
- -76.54250291031946,
- -8.132338049258351,
- 51.51447452437017,
- -51.63370281825297,
- -64.567999424324,
- -5.093302411117136,
- 15.354103550744384,
- 90.03858807393516
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- 79.04724884033203,
- 2.2503609657287598,
- 80.73938751220703,
- 63.9039192199707,
- 77.67340850830078,
- 0,
- 0,
- 0,
- 0,
- 0,
- 18.361658096313477,
- 0,
- 0,
- 0,
- 60.6029167175293,
- 0,
- 0,
- 0,
- 51.51447296142578,
- 0,
- 0,
- 0,
- 15.354103088378906,
- 90.03858947753906
- ],
- "type": "float32"
- }
- },
- {
- "name": "relu float32 2D tensor",
- "inputs": {
- "x": {
- "shape": [4, 6],
- "data": [
- 79.04725231657116,
- 2.2503608756501166,
- 80.73939090529203,
- 63.90392076789547,
- 77.67340745512104,
- -71.09157819044825,
- -82.74703468427575,
- -26.814426600801028,
- -99.16788836397058,
- -35.71083406288831,
- 18.36165830990626,
- -37.36091648205435,
- -52.8386119809162,
- -10.408374773008958,
- 60.60291560236189,
- -13.644198913810342,
- -76.54250291031946,
- -8.132338049258351,
- 51.51447452437017,
- -51.63370281825297,
- -64.567999424324,
- -5.093302411117136,
- 15.354103550744384,
- 90.03858807393516
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- 79.04724884033203,
- 2.2503609657287598,
- 80.73938751220703,
- 63.9039192199707,
- 77.67340850830078,
- 0,
- 0,
- 0,
- 0,
- 0,
- 18.361658096313477,
- 0,
- 0,
- 0,
- 60.6029167175293,
- 0,
- 0,
- 0,
- 51.51447296142578,
- 0,
- 0,
- 0,
- 15.354103088378906,
- 90.03858947753906
- ],
- "type": "float32"
- }
- },
- {
- "name": "relu float32 3D tensor",
- "inputs": {
- "x": {
- "shape": [2, 3, 4],
- "data": [
- 79.04725231657116,
- 2.2503608756501166,
- 80.73939090529203,
- 63.90392076789547,
- 77.67340745512104,
- -71.09157819044825,
- -82.74703468427575,
- -26.814426600801028,
- -99.16788836397058,
- -35.71083406288831,
- 18.36165830990626,
- -37.36091648205435,
- -52.8386119809162,
- -10.408374773008958,
- 60.60291560236189,
- -13.644198913810342,
- -76.54250291031946,
- -8.132338049258351,
- 51.51447452437017,
- -51.63370281825297,
- -64.567999424324,
- -5.093302411117136,
- 15.354103550744384,
- 90.03858807393516
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 3, 4],
- "data": [
- 79.04724884033203,
- 2.2503609657287598,
- 80.73938751220703,
- 63.9039192199707,
- 77.67340850830078,
- 0,
- 0,
- 0,
- 0,
- 0,
- 18.361658096313477,
- 0,
- 0,
- 0,
- 60.6029167175293,
- 0,
- 0,
- 0,
- 51.51447296142578,
- 0,
- 0,
- 0,
- 15.354103088378906,
- 90.03858947753906
- ],
- "type": "float32"
- }
- },
- {
- "name": "relu float32 4D tensor",
- "inputs": {
- "x": {
- "shape": [2, 2, 2, 3],
- "data": [
- 79.04725231657116,
- 2.2503608756501166,
- 80.73939090529203,
- 63.90392076789547,
- 77.67340745512104,
- -71.09157819044825,
- -82.74703468427575,
- -26.814426600801028,
- -99.16788836397058,
- -35.71083406288831,
- 18.36165830990626,
- -37.36091648205435,
- -52.8386119809162,
- -10.408374773008958,
- 60.60291560236189,
- -13.644198913810342,
- -76.54250291031946,
- -8.132338049258351,
- 51.51447452437017,
- -51.63370281825297,
- -64.567999424324,
- -5.093302411117136,
- 15.354103550744384,
- 90.03858807393516
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 79.04724884033203,
- 2.2503609657287598,
- 80.73938751220703,
- 63.9039192199707,
- 77.67340850830078,
- 0,
- 0,
- 0,
- 0,
- 0,
- 18.361658096313477,
- 0,
- 0,
- 0,
- 60.6029167175293,
- 0,
- 0,
- 0,
- 51.51447296142578,
- 0,
- 0,
- 0,
- 15.354103088378906,
- 90.03858947753906
- ],
- "type": "float32"
- }
- },
- {
- "name": "relu float32 5D tensor",
- "inputs": {
- "x": {
- "shape": [2, 1, 4, 1, 3],
- "data": [
- 79.04725231657116,
- 2.2503608756501166,
- 80.73939090529203,
- 63.90392076789547,
- 77.67340745512104,
- -71.09157819044825,
- -82.74703468427575,
- -26.814426600801028,
- -99.16788836397058,
- -35.71083406288831,
- 18.36165830990626,
- -37.36091648205435,
- -52.8386119809162,
- -10.408374773008958,
- 60.60291560236189,
- -13.644198913810342,
- -76.54250291031946,
- -8.132338049258351,
- 51.51447452437017,
- -51.63370281825297,
- -64.567999424324,
- -5.093302411117136,
- 15.354103550744384,
- 90.03858807393516
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 1, 4, 1, 3],
- "data": [
- 79.04724884033203,
- 2.2503609657287598,
- 80.73938751220703,
- 63.9039192199707,
- 77.67340850830078,
- 0,
- 0,
- 0,
- 0,
- 0,
- 18.361658096313477,
- 0,
- 0,
- 0,
- 60.6029167175293,
- 0,
- 0,
- 0,
- 51.51447296142578,
- 0,
- 0,
- 0,
- 15.354103088378906,
- 90.03858947753906
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/resample2d.json b/tests/wpt/tests/webnn/resources/test_data/resample2d.json
deleted file mode 100644
index 605d1b55c01..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/resample2d.json
+++ /dev/null
@@ -1,527 +0,0 @@
-{
- "tests": [
- {
- "name": "resample2d float32 4D tensor default options",
- "inputs": {
- "input": {
- "shape": [1, 1, 4, 6], // nchw
- "data": [
- 3.8600528355143604,
- 45.18463077286585,
- 87.67153742917091,
- 98.78210347338205,
- 66.3741434682883,
- 3.4115834948988955,
- 86.14930500548006,
- 95.98133720121507,
- 76.87126314100948,
- 16.52591355131756,
- 65.98782867250333,
- 25.470921564461158,
- 22.56010547750855,
- 92.08479613461083,
- 85.80876634651386,
- 92.6316602716033,
- 29.91620870840146,
- 75.40461275485572,
- 62.063754512670435,
- 1.7712158798243394,
- 99.47231285272224,
- 11.440550135595085,
- 25.39634271166711,
- 67.02175102425608
- ],
- "type": "float32"
- }
- },
- "expected": {
- "shape": [1, 1, 4, 6],
- "data": [
- 3.8600528240203857,
- 45.18463134765625,
- 87.67153930664062,
- 98.7821044921875,
- 66.3741455078125,
- 3.411583423614502,
- 86.14930725097656,
- 95.98133850097656,
- 76.87126159667969,
- 16.52591323852539,
- 65.98783111572266,
- 25.470922470092773,
- 22.56010627746582,
- 92.08479309082031,
- 85.80876922607422,
- 92.63166046142578,
- 29.916208267211914,
- 75.40460968017578,
- 62.06375503540039,
- 1.7712159156799316,
- 99.4723129272461,
- 11.440549850463867,
- 25.396343231201172,
- 67.0217514038086
- ],
- "type": "float32"
- }
- },
- {
- "name": "resample2d(upsample) float32 4D tensor options.scales",
- "inputs": {
- "input": {
- "shape": [1, 1, 2, 3],
- "data": [
- 59.92947164849423,
- 41.989187594696546,
- 66.39534663077877,
- 90.70066412516924,
- 86.95106056135486,
- 79.10004839481242
- ],
- "type": "float32"
- }
- },
- "options": {
- "scales": [2.0, 2.0]
- },
- "expected": {
- "shape": [1, 1, 4, 6],
- "data": [
- 59.92947006225586,
- 59.92947006225586,
- 41.98918914794922,
- 41.98918914794922,
- 66.39534759521484,
- 66.39534759521484,
- 59.92947006225586,
- 59.92947006225586,
- 41.98918914794922,
- 41.98918914794922,
- 66.39534759521484,
- 66.39534759521484,
- 90.7006607055664,
- 90.7006607055664,
- 86.95105743408203,
- 86.95105743408203,
- 79.10005187988281,
- 79.10005187988281,
- 90.7006607055664,
- 90.7006607055664,
- 86.95105743408203,
- 86.95105743408203,
- 79.10005187988281,
- 79.10005187988281
- ],
- "type": "float32"
- }
- },
- {
- "name": "resample2d(upsample) float32 4D tensor options.sizes",
- "inputs": {
- "input": {
- "shape": [1, 1, 2, 3],
- "data": [
- 59.92947164849423,
- 41.989187594696546,
- 66.39534663077877,
- 90.70066412516924,
- 86.95106056135486,
- 79.10004839481242
- ],
- "type": "float32"
- }
- },
- "options": {
- "sizes": [4, 6]
- },
- "expected": {
- "shape": [1, 1, 4, 6],
- "data": [
- 59.92947006225586,
- 59.92947006225586,
- 41.98918914794922,
- 41.98918914794922,
- 66.39534759521484,
- 66.39534759521484,
- 59.92947006225586,
- 59.92947006225586,
- 41.98918914794922,
- 41.98918914794922,
- 66.39534759521484,
- 66.39534759521484,
- 90.7006607055664,
- 90.7006607055664,
- 86.95105743408203,
- 86.95105743408203,
- 79.10005187988281,
- 79.10005187988281,
- 90.7006607055664,
- 90.7006607055664,
- 86.95105743408203,
- 86.95105743408203,
- 79.10005187988281,
- 79.10005187988281
- ],
- "type": "float32"
- }
- },
- {
- "name": "resample2d(upsample) float32 4D tensor options.sizes ignored options.scales",
- "inputs": {
- "input": {
- "shape": [1, 1, 2, 3],
- "data": [
- 59.92947164849423,
- 41.989187594696546,
- 66.39534663077877,
- 90.70066412516924,
- 86.95106056135486,
- 79.10004839481242
- ],
- "type": "float32"
- }
- },
- "options": {
- "scales": [0.5, 0.5],
- "sizes": [4, 6]
- },
- "expected": {
- "shape": [1, 1, 4, 6],
- "data": [
- 59.92947006225586,
- 59.92947006225586,
- 41.98918914794922,
- 41.98918914794922,
- 66.39534759521484,
- 66.39534759521484,
- 59.92947006225586,
- 59.92947006225586,
- 41.98918914794922,
- 41.98918914794922,
- 66.39534759521484,
- 66.39534759521484,
- 90.7006607055664,
- 90.7006607055664,
- 86.95105743408203,
- 86.95105743408203,
- 79.10005187988281,
- 79.10005187988281,
- 90.7006607055664,
- 90.7006607055664,
- 86.95105743408203,
- 86.95105743408203,
- 79.10005187988281,
- 79.10005187988281
- ],
- "type": "float32"
- }
- },
- {
- "name": "resample2d(upsample) float32 4D tensor options.axes=[1, 2]",
- "inputs": {
- "input": {
- "shape": [1, 2, 3, 1], // nhwc
- "data": [
- 59.92947164849423,
- 41.989187594696546,
- 66.39534663077877,
- 90.70066412516924,
- 86.95106056135486,
- 79.10004839481242
- ],
- "type": "float32"
- }
- },
- "options": {
- "sizes": [4, 6],
- "axes": [1, 2]
- },
- "expected": {
- "shape": [1, 4, 6, 1],
- "data": [
- 59.92947006225586,
- 59.92947006225586,
- 41.98918914794922,
- 41.98918914794922,
- 66.39534759521484,
- 66.39534759521484,
- 59.92947006225586,
- 59.92947006225586,
- 41.98918914794922,
- 41.98918914794922,
- 66.39534759521484,
- 66.39534759521484,
- 90.7006607055664,
- 90.7006607055664,
- 86.95105743408203,
- 86.95105743408203,
- 79.10005187988281,
- 79.10005187988281,
- 90.7006607055664,
- 90.7006607055664,
- 86.95105743408203,
- 86.95105743408203,
- 79.10005187988281,
- 79.10005187988281
- ],
- "type": "float32"
- }
- },
- {
- "name": "resample2d(upsample) float32 4D tensor explicit options.axes=[2, 3]",
- "inputs": {
- "input": {
- "shape": [1, 1, 2, 3], // nchw
- "data": [
- 59.92947164849423,
- 41.989187594696546,
- 66.39534663077877,
- 90.70066412516924,
- 86.95106056135486,
- 79.10004839481242
- ],
- "type": "float32"
- }
- },
- "options": {
- "sizes": [4, 6],
- "axes": [2, 3]
- },
- "expected": {
- "shape": [1, 1, 4, 6],
- "data": [
- 59.92947006225586,
- 59.92947006225586,
- 41.98918914794922,
- 41.98918914794922,
- 66.39534759521484,
- 66.39534759521484,
- 59.92947006225586,
- 59.92947006225586,
- 41.98918914794922,
- 41.98918914794922,
- 66.39534759521484,
- 66.39534759521484,
- 90.7006607055664,
- 90.7006607055664,
- 86.95105743408203,
- 86.95105743408203,
- 79.10005187988281,
- 79.10005187988281,
- 90.7006607055664,
- 90.7006607055664,
- 86.95105743408203,
- 86.95105743408203,
- 79.10005187988281,
- 79.10005187988281
- ],
- "type": "float32"
- }
- },
- {
- "name": "resample2d(upsample) float32 4D tensor explicit options.mode='nearest-neighbor'",
- "inputs": {
- "input": {
- "shape": [1, 1, 2, 3],
- "data": [
- 59.92947164849423,
- 41.989187594696546,
- 66.39534663077877,
- 90.70066412516924,
- 86.95106056135486,
- 79.10004839481242
- ],
- "type": "float32"
- }
- },
- "options": {
- "mode": "nearest-neighbor",
- "sizes": [4, 6]
- },
- "expected": {
- "shape": [1, 1, 4, 6],
- "data": [
- 59.92947006225586,
- 59.92947006225586,
- 41.98918914794922,
- 41.98918914794922,
- 66.39534759521484,
- 66.39534759521484,
- 59.92947006225586,
- 59.92947006225586,
- 41.98918914794922,
- 41.98918914794922,
- 66.39534759521484,
- 66.39534759521484,
- 90.7006607055664,
- 90.7006607055664,
- 86.95105743408203,
- 86.95105743408203,
- 79.10005187988281,
- 79.10005187988281,
- 90.7006607055664,
- 90.7006607055664,
- 86.95105743408203,
- 86.95105743408203,
- 79.10005187988281,
- 79.10005187988281
- ],
- "type": "float32"
- }
- },
- {
- "name": "resample2d(upsample) float32 4D tensor options.scales options.mode='linear'",
- "inputs": {
- "input": {
- "shape": [1, 1, 2, 3],
- "data": [
- 59.92947164849423,
- 41.989187594696546,
- 66.39534663077877,
- 90.70066412516924,
- 86.95106056135486,
- 79.10004839481242
- ],
- "type": "float32"
- }
- },
- "options": {
- "mode": "linear",
- "scales": [2.0, 2.0]
- },
- "expected": {
- "shape": [1, 1, 4, 6],
- "data": [
- 59.92947006225586,
- 55.444400787353516,
- 46.47425842285156,
- 48.090728759765625,
- 60.29380798339844,
- 66.39534759521484,
- 67.62226867675781,
- 64.02411651611328,
- 56.82780838012695,
- 57.31512451171875,
- 65.48605346679688,
- 69.57152557373047,
- 83.00786590576172,
- 81.18354797363281,
- 77.534912109375,
- 75.76390838623047,
- 75.87055206298828,
- 75.92387390136719,
- 90.7006607055664,
- 89.76325988769531,
- 87.88845825195312,
- 84.9883041381836,
- 81.06280517578125,
- 79.10005187988281
- ],
- "type": "float32"
- }
- },
- {
- "name": "resample2d(upsample) float32 4D tensor options.sizes options.mode='linear'",
- "inputs": {
- "input": {
- "shape": [1, 1, 2, 3],
- "data": [
- 59.92947164849423,
- 41.989187594696546,
- 66.39534663077877,
- 90.70066412516924,
- 86.95106056135486,
- 79.10004839481242
- ],
- "type": "float32"
- }
- },
- "options": {
- "mode": "linear",
- "sizes": [4, 6]
- },
- "expected": {
- "shape": [1, 1, 4, 6],
- "data": [
- 59.92947006225586,
- 55.444400787353516,
- 46.47425842285156,
- 48.090728759765625,
- 60.29380798339844,
- 66.39534759521484,
- 67.62226867675781,
- 64.02411651611328,
- 56.82780838012695,
- 57.31512451171875,
- 65.48605346679688,
- 69.57152557373047,
- 83.00786590576172,
- 81.18354797363281,
- 77.534912109375,
- 75.76390838623047,
- 75.87055206298828,
- 75.92387390136719,
- 90.7006607055664,
- 89.76325988769531,
- 87.88845825195312,
- 84.9883041381836,
- 81.06280517578125,
- 79.10005187988281
- ],
- "type": "float32"
- }
- },
- {
- "name": "resample2d(upsample) float32 4D tensor options.axes=[1, 2] options.mode='linear'",
- "inputs": {
- "input": {
- "shape": [1, 2, 3, 1],
- "data": [
- 59.92947164849423,
- 41.989187594696546,
- 66.39534663077877,
- 90.70066412516924,
- 86.95106056135486,
- 79.10004839481242
- ],
- "type": "float32"
- }
- },
- "options": {
- "mode": "linear",
- "sizes": [4, 6],
- "axes": [1, 2]
- },
- "expected": {
- "shape": [1, 4, 6, 1],
- "data": [
- 59.92947006225586,
- 55.444400787353516,
- 46.47425842285156,
- 48.090728759765625,
- 60.29380798339844,
- 66.39534759521484,
- 67.62226867675781,
- 64.02411651611328,
- 56.82780838012695,
- 57.31512451171875,
- 65.48605346679688,
- 69.57152557373047,
- 83.00786590576172,
- 81.18354797363281,
- 77.534912109375,
- 75.76390838623047,
- 75.87055206298828,
- 75.92387390136719,
- 90.7006607055664,
- 89.76325988769531,
- 87.88845825195312,
- 84.9883041381836,
- 81.06280517578125,
- 79.10005187988281
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/reshape.json b/tests/wpt/tests/webnn/resources/test_data/reshape.json
deleted file mode 100644
index ada3daa4e2d..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/reshape.json
+++ /dev/null
@@ -1,2056 +0,0 @@
-{
- "tests": [
- {
- "name": "reshape float32 tensor to a new shape (reorder all dimensions)",
- "inputs": {
- "input": {
- "shape": [2, 3, 4],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- "newShape": [4, 2, 3],
- "expected": {
- "name": "output",
- "shape": [4, 2, 3],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- {
- "name": "reshape float32 tensor to a new shape (reduce dimensions)",
- "inputs": {
- "input": {
- "shape": [4, 1, 1, 1, 6],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- "newShape": [4, 1, 1, 6],
- "expected": {
- "name": "output",
- "shape": [4, 1, 1, 6],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- {
- "name": "reshape float32 tensor to a new shape (extend dimensions)",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- "newShape": [2, 2, 2, 3, 1],
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3, 1],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- {
- "name": "reshape float32 tensor to a new shape (4D to 4D)",
- "inputs": {
- "input": {
- "shape": [3, 2, 2, 2],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- "newShape": [4, 2, 3, 1],
- "expected": {
- "name": "output",
- "shape": [4, 2, 3, 1],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- {
- "name": "reshape float32 tensor to 1D tensor",
- "inputs": {
- "input": {
- "shape": [3, 2, 2, 2],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- "newShape": [24],
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- {
- "name": "reshape (squeeze) float32 2D tensor by eliminating one dimension",
- "inputs": {
- "input": {
- "shape": [1, 24],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- "newShape": [24],
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- {
- "name": "reshape (squeeze) float32 3D tensor by eliminating one dimension",
- "inputs": {
- "input": {
- "shape": [4, 1, 6],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- "newShape": [4, 6],
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- {
- "name": "reshape (squeeze) float32 3D tensor by eliminating two dimensions",
- "inputs": {
- "input": {
- "shape": [1, 24, 1],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- "newShape": [24],
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- {
- "name": "reshape (squeeze) float32 4D tensor by eliminating two dimensions",
- "inputs": {
- "input": {
- "shape": [1, 4, 1, 6],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- "newShape": [4, 6],
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- {
- "name": "reshape (squeeze) float32 4D tensor by eliminating all dimensions",
- "inputs": {
- "input": {
- "shape": [1, 1, 1, 1],
- "data": [
- -33.82555389404297
- ],
- "type": "float32"
- }
- },
- "newShape": [],
- "expected": {
- "name": "output",
- "shape": [],
- "data": [
- -33.82555389404297
- ],
- "type": "float32"
- }
- },
- {
- "name": "reshape (squeeze) float32 5D tensor by eliminating four dimensions",
- "inputs": {
- "input": {
- "shape": [1, 1, 1, 24, 1],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- "newShape": [24],
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- {
- "name": "reshape (squeeze) float32 2D tensor by eliminating 1st dimension",
- "inputs": {
- "input": {
- "shape": [1, 24],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- "newShape": [24],
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- {
- "name": "reshape (squeeze) float32 3D tensor by eliminating 2nd and 3rd dimensions",
- "inputs": {
- "input": {
- "shape": [24, 1, 1],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- "newShape": [24],
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- {
- "name": "reshape (squeeze) float32 4D tensor by eliminating 1st and 4th dimensions",
- "inputs": {
- "input": {
- "shape": [1, 4, 6, 1],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- "newShape": [4, 6],
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- {
- "name": "reshape (squeeze) float32 5D tensor by eliminating 2nd and 3rd dimensions",
- "inputs": {
- "input": {
- "shape": [2, 1, 1, 12, 1],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- "newShape": [2, 12, 1],
- "expected": {
- "name": "output",
- "shape": [2, 12, 1],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- {
- "name": "reshape (squeeze) float32 5D tensor by eliminating 1st, 2nd and 5th dimensions",
- "inputs": {
- "input": {
- "shape": [1, 1, 1, 24, 1],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- "newShape": [1, 24],
- "expected": {
- "name": "output",
- "shape": [1, 24],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- {
- "name": "reshape (unsqueeze) float32 0D tensor to 4D",
- "inputs": {
- "input": {
- "shape": [],
- "data": [
- -33.82555389404297
- ],
- "type": "float32"
- }
- },
- "newShape": [1, 1, 1, 1],
- "expected": {
- "name": "output",
- "shape": [1, 1, 1, 1],
- "data": [
- -33.82555389404297
- ],
- "type": "float32"
- }
- },
- {
- "name": "reshape (unsqueeze) float32 1D tensor by adding one dimension",
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- "newShape": [1, 24],
- "expected": {
- "name": "output",
- "shape": [1, 24],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- {
- "name": "reshape (unsqueeze) float32 1D tensor by adding two dimensions",
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- "newShape": [1, 24, 1],
- "expected": {
- "name": "output",
- "shape": [1, 24, 1],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- {
- "name": "reshape (unsqueeze) float32 1D tensor to 5D",
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- "newShape": [1, 1, 1, 24, 1],
- "expected": {
- "name": "output",
- "shape": [1, 1, 1, 24, 1],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- {
- "name": "reshape (unsqueeze) float32 1D tensor by adding 2nd and 3rd dimensions",
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- "newShape": [24, 1, 1],
- "expected": {
- "name": "output",
- "shape": [24, 1, 1],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- {
- "name": "reshape (unsqueeze) float32 2D tensor by adding one dimension",
- "inputs": {
- "input": {
- "shape": [4, 6],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- "newShape": [4, 1, 6],
- "expected": {
- "name": "output",
- "shape": [4, 1, 6],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- {
- "name": "reshape (unsqueeze) float32 2D tensor by adding two dimensions",
- "inputs": {
- "input": {
- "shape": [4, 6],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- "newShape": [1, 4, 1, 6],
- "expected": {
- "name": "output",
- "shape": [1, 4, 1, 6],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- {
- "name": "reshape (unsqueeze) float32 2D tensor by adding 1st dimension",
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- "newShape": [1, 24],
- "expected": {
- "name": "output",
- "shape": [1, 24],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- {
- "name": "reshape (unsqueeze) float32 2D tensor by adding 1st and 4th dimensions",
- "inputs": {
- "input": {
- "shape": [4, 6],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- "newShape": [1, 4, 6, 1],
- "expected": {
- "name": "output",
- "shape": [1, 4, 6, 1],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- {
- "name": "reshape (unsqueeze) float32 3D tensor by adding 2nd and 3rd dimensions",
- "inputs": {
- "input": {
- "shape": [2, 12, 1],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- "newShape": [2, 1, 1, 12, 1],
- "expected": {
- "name": "output",
- "shape": [2, 1, 1, 12, 1],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- {
- "name": "reshape (unsqueeze) float32 4D tensor by adding 2nd dimension",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- "newShape": [2, 1, 2, 2, 3],
- "expected": {
- "name": "output",
- "shape": [2, 1, 2, 2, 3],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- {
- "name": "reshape (unsqueeze) float32 5D tensor by adding 4th dimension",
- "inputs": {
- "input": {
- "shape": [2, 1, 4, 3, 1],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- "newShape": [2, 1, 4, 1, 3, 1],
- "expected": {
- "name": "output",
- "shape": [2, 1, 4, 1, 3, 1],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- {
- "name": "reshape (flatten) float32 3D tensor to 2D",
- "inputs": {
- "input": {
- "shape": [2, 3, 4],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- "newShape": [2, 12],
- "expected": {
- "name": "output",
- "shape": [2, 12],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- {
- "name": "reshape (flatten) float32 4D to 2D",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- "newShape": [4, 6],
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- {
- "name": "reshape (flatten) float32 4D to 2D exclusive 1st dimension",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- "newShape": [1, 24],
- "expected": {
- "name": "output",
- "shape": [1, 24],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- {
- "name": "reshape (flatten) float32 4D to 2D exclusive 4th dimension",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- },
- "newShape": [24, 1],
- "expected": {
- "name": "output",
- "shape": [24, 1],
- "data": [
- -30.0561466217041,
- 99.56941986083984,
- 88.04620361328125,
- -91.87507629394531,
- -23.7972354888916,
- -91.28665161132812,
- -63.15204620361328,
- 12.0669527053833,
- -96.1172866821289,
- -44.77365493774414,
- -80.08650970458984,
- -64.43756866455078,
- 27.64195442199707,
- -96.86306762695312,
- 83.6834716796875,
- 50.599483489990234,
- -20.18765640258789,
- -1.3904608488082886,
- -96.93603515625,
- 65.34143829345703,
- 34.835994720458984,
- 62.01485824584961,
- -2.8698415756225586,
- 27.903749465942383
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/sigmoid.json b/tests/wpt/tests/webnn/resources/test_data/sigmoid.json
deleted file mode 100644
index 69756fbb9c2..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/sigmoid.json
+++ /dev/null
@@ -1,401 +0,0 @@
-{
- "tests": [
- {
- "name": "sigmoid float32 1D constant tensor",
- "inputs": {
- "x": {
- "shape": [24],
- "data": [
- -0.3769951326450487,
- -0.6848450678710742,
- -5.98887201399973,
- 4.431885748123033,
- -0.9386848809986663,
- 4.591195578857441,
- -2.5067027776293456,
- 1.5669522849917055,
- -2.596473257404651,
- -3.647293770068697,
- 2.6785236795981433,
- -3.105160168372808,
- 2.258501824714781,
- -0.2865157795154527,
- 4.640436413897461,
- 1.0606156163391969,
- -3.536252613252593,
- 0.44104409560934066,
- 4.79146007344656,
- 2.0745488579530846,
- 0.8354471082395971,
- -5.433595857448718,
- -4.184835816765236,
- -2.484982429169702
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- 0.4068518280982971,
- 0.33518078923225403,
- 0.0025002227630466223,
- 0.9882476925849915,
- 0.28116607666015625,
- 0.9899610877037048,
- 0.07538963109254837,
- 0.8273487091064453,
- 0.0693657398223877,
- 0.02539960853755474,
- 0.9357474446296692,
- 0.04289489984512329,
- 0.9053813815116882,
- 0.42885708808898926,
- 0.9904388189315796,
- 0.7428081631660461,
- 0.0282981526106596,
- 0.6085078120231628,
- 0.9917680025100708,
- 0.8884047269821167,
- 0.6975054740905762,
- 0.004348373040556908,
- 0.014996387995779514,
- 0.07691769301891327
- ],
- "type": "float32"
- }
- },
- {
- "name": "sigmoid float32 1D tensor",
- "inputs": {
- "x": {
- "shape": [24],
- "data": [
- -0.3769951326450487,
- -0.6848450678710742,
- -5.98887201399973,
- 4.431885748123033,
- -0.9386848809986663,
- 4.591195578857441,
- -2.5067027776293456,
- 1.5669522849917055,
- -2.596473257404651,
- -3.647293770068697,
- 2.6785236795981433,
- -3.105160168372808,
- 2.258501824714781,
- -0.2865157795154527,
- 4.640436413897461,
- 1.0606156163391969,
- -3.536252613252593,
- 0.44104409560934066,
- 4.79146007344656,
- 2.0745488579530846,
- 0.8354471082395971,
- -5.433595857448718,
- -4.184835816765236,
- -2.484982429169702
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- 0.4068518280982971,
- 0.33518078923225403,
- 0.0025002227630466223,
- 0.9882476925849915,
- 0.28116607666015625,
- 0.9899610877037048,
- 0.07538963109254837,
- 0.8273487091064453,
- 0.0693657398223877,
- 0.02539960853755474,
- 0.9357474446296692,
- 0.04289489984512329,
- 0.9053813815116882,
- 0.42885708808898926,
- 0.9904388189315796,
- 0.7428081631660461,
- 0.0282981526106596,
- 0.6085078120231628,
- 0.9917680025100708,
- 0.8884047269821167,
- 0.6975054740905762,
- 0.004348373040556908,
- 0.014996387995779514,
- 0.07691769301891327
- ],
- "type": "float32"
- }
- },
- {
- "name": "sigmoid float32 2D tensor",
- "inputs": {
- "x": {
- "shape": [4, 6],
- "data": [
- -0.3769951326450487,
- -0.6848450678710742,
- -5.98887201399973,
- 4.431885748123033,
- -0.9386848809986663,
- 4.591195578857441,
- -2.5067027776293456,
- 1.5669522849917055,
- -2.596473257404651,
- -3.647293770068697,
- 2.6785236795981433,
- -3.105160168372808,
- 2.258501824714781,
- -0.2865157795154527,
- 4.640436413897461,
- 1.0606156163391969,
- -3.536252613252593,
- 0.44104409560934066,
- 4.79146007344656,
- 2.0745488579530846,
- 0.8354471082395971,
- -5.433595857448718,
- -4.184835816765236,
- -2.484982429169702
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- 0.4068518280982971,
- 0.33518078923225403,
- 0.0025002227630466223,
- 0.9882476925849915,
- 0.28116607666015625,
- 0.9899610877037048,
- 0.07538963109254837,
- 0.8273487091064453,
- 0.0693657398223877,
- 0.02539960853755474,
- 0.9357474446296692,
- 0.04289489984512329,
- 0.9053813815116882,
- 0.42885708808898926,
- 0.9904388189315796,
- 0.7428081631660461,
- 0.0282981526106596,
- 0.6085078120231628,
- 0.9917680025100708,
- 0.8884047269821167,
- 0.6975054740905762,
- 0.004348373040556908,
- 0.014996387995779514,
- 0.07691769301891327
- ],
- "type": "float32"
- }
- },
- {
- "name": "sigmoid float32 3D tensor",
- "inputs": {
- "x": {
- "shape": [2, 3, 4],
- "data": [
- -0.3769951326450487,
- -0.6848450678710742,
- -5.98887201399973,
- 4.431885748123033,
- -0.9386848809986663,
- 4.591195578857441,
- -2.5067027776293456,
- 1.5669522849917055,
- -2.596473257404651,
- -3.647293770068697,
- 2.6785236795981433,
- -3.105160168372808,
- 2.258501824714781,
- -0.2865157795154527,
- 4.640436413897461,
- 1.0606156163391969,
- -3.536252613252593,
- 0.44104409560934066,
- 4.79146007344656,
- 2.0745488579530846,
- 0.8354471082395971,
- -5.433595857448718,
- -4.184835816765236,
- -2.484982429169702
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 3, 4],
- "data": [
- 0.4068518280982971,
- 0.33518078923225403,
- 0.0025002227630466223,
- 0.9882476925849915,
- 0.28116607666015625,
- 0.9899610877037048,
- 0.07538963109254837,
- 0.8273487091064453,
- 0.0693657398223877,
- 0.02539960853755474,
- 0.9357474446296692,
- 0.04289489984512329,
- 0.9053813815116882,
- 0.42885708808898926,
- 0.9904388189315796,
- 0.7428081631660461,
- 0.0282981526106596,
- 0.6085078120231628,
- 0.9917680025100708,
- 0.8884047269821167,
- 0.6975054740905762,
- 0.004348373040556908,
- 0.014996387995779514,
- 0.07691769301891327
- ],
- "type": "float32"
- }
- },
- {
- "name": "sigmoid float32 4D tensor",
- "inputs": {
- "x": {
- "shape": [2, 2, 2, 3],
- "data": [
- -0.3769951326450487,
- -0.6848450678710742,
- -5.98887201399973,
- 4.431885748123033,
- -0.9386848809986663,
- 4.591195578857441,
- -2.5067027776293456,
- 1.5669522849917055,
- -2.596473257404651,
- -3.647293770068697,
- 2.6785236795981433,
- -3.105160168372808,
- 2.258501824714781,
- -0.2865157795154527,
- 4.640436413897461,
- 1.0606156163391969,
- -3.536252613252593,
- 0.44104409560934066,
- 4.79146007344656,
- 2.0745488579530846,
- 0.8354471082395971,
- -5.433595857448718,
- -4.184835816765236,
- -2.484982429169702
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 0.4068518280982971,
- 0.33518078923225403,
- 0.0025002227630466223,
- 0.9882476925849915,
- 0.28116607666015625,
- 0.9899610877037048,
- 0.07538963109254837,
- 0.8273487091064453,
- 0.0693657398223877,
- 0.02539960853755474,
- 0.9357474446296692,
- 0.04289489984512329,
- 0.9053813815116882,
- 0.42885708808898926,
- 0.9904388189315796,
- 0.7428081631660461,
- 0.0282981526106596,
- 0.6085078120231628,
- 0.9917680025100708,
- 0.8884047269821167,
- 0.6975054740905762,
- 0.004348373040556908,
- 0.014996387995779514,
- 0.07691769301891327
- ],
- "type": "float32"
- }
- },
- {
- "name": "sigmoid float32 5D tensor",
- "inputs": {
- "x": {
- "shape": [2, 1, 4, 1, 3],
- "data": [
- -0.3769951326450487,
- -0.6848450678710742,
- -5.98887201399973,
- 4.431885748123033,
- -0.9386848809986663,
- 4.591195578857441,
- -2.5067027776293456,
- 1.5669522849917055,
- -2.596473257404651,
- -3.647293770068697,
- 2.6785236795981433,
- -3.105160168372808,
- 2.258501824714781,
- -0.2865157795154527,
- 4.640436413897461,
- 1.0606156163391969,
- -3.536252613252593,
- 0.44104409560934066,
- 4.79146007344656,
- 2.0745488579530846,
- 0.8354471082395971,
- -5.433595857448718,
- -4.184835816765236,
- -2.484982429169702
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 1, 4, 1, 3],
- "data": [
- 0.4068518280982971,
- 0.33518078923225403,
- 0.0025002227630466223,
- 0.9882476925849915,
- 0.28116607666015625,
- 0.9899610877037048,
- 0.07538963109254837,
- 0.8273487091064453,
- 0.0693657398223877,
- 0.02539960853755474,
- 0.9357474446296692,
- 0.04289489984512329,
- 0.9053813815116882,
- 0.42885708808898926,
- 0.9904388189315796,
- 0.7428081631660461,
- 0.0282981526106596,
- 0.6085078120231628,
- 0.9917680025100708,
- 0.8884047269821167,
- 0.6975054740905762,
- 0.004348373040556908,
- 0.014996387995779514,
- 0.07691769301891327
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/sin.json b/tests/wpt/tests/webnn/resources/test_data/sin.json
deleted file mode 100644
index 1fe76df45fb..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/sin.json
+++ /dev/null
@@ -1,401 +0,0 @@
-{
- "tests": [
- {
- "name": "sin float32 1D constant tensor",
- "inputs": {
- "x": {
- "shape": [24],
- "data": [
- 79.78058345331559,
- 55.00573351892254,
- -28.052533009972393,
- -31.644301395318934,
- 56.28375442556609,
- -96.18512135074778,
- -72.99826309079677,
- -3.4241827262925852,
- 84.02549499853444,
- 5.030371842664394,
- -9.512612392430725,
- 9.540593026227612,
- -25.267252298101056,
- -20.831639431837345,
- -32.024754770208745,
- -55.69102662814118,
- 15.92748126354438,
- -57.8835344652012,
- 31.0160642695962,
- -94.88304659350737,
- -84.58417183546084,
- 44.848744233535655,
- -19.000272686086987,
- -48.03827737658466
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- -0.946033775806427,
- -0.9996118545532227,
- -0.21998752653598785,
- -0.22639396786689758,
- -0.2618238627910614,
- -0.9335716366767883,
- 0.6754903197288513,
- 0.27884384989738464,
- 0.7156150341033936,
- -0.9498680830001831,
- 0.08772148936986923,
- -0.11555644869804382,
- -0.13410548865795135,
- -0.9166066646575928,
- -0.5719056725502014,
- 0.7563026547431946,
- -0.21775959432125092,
- -0.9722972512245178,
- -0.38929200172424316,
- -0.59339439868927,
- -0.23656263947486877,
- 0.7620325684547424,
- -0.15014687180519104,
- 0.7921885848045349
- ],
- "type": "float32"
- }
- },
- {
- "name": "sin float32 1D tensor",
- "inputs": {
- "x": {
- "shape": [24],
- "data": [
- 79.78058345331559,
- 55.00573351892254,
- -28.052533009972393,
- -31.644301395318934,
- 56.28375442556609,
- -96.18512135074778,
- -72.99826309079677,
- -3.4241827262925852,
- 84.02549499853444,
- 5.030371842664394,
- -9.512612392430725,
- 9.540593026227612,
- -25.267252298101056,
- -20.831639431837345,
- -32.024754770208745,
- -55.69102662814118,
- 15.92748126354438,
- -57.8835344652012,
- 31.0160642695962,
- -94.88304659350737,
- -84.58417183546084,
- 44.848744233535655,
- -19.000272686086987,
- -48.03827737658466
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- -0.946033775806427,
- -0.9996118545532227,
- -0.21998752653598785,
- -0.22639396786689758,
- -0.2618238627910614,
- -0.9335716366767883,
- 0.6754903197288513,
- 0.27884384989738464,
- 0.7156150341033936,
- -0.9498680830001831,
- 0.08772148936986923,
- -0.11555644869804382,
- -0.13410548865795135,
- -0.9166066646575928,
- -0.5719056725502014,
- 0.7563026547431946,
- -0.21775959432125092,
- -0.9722972512245178,
- -0.38929200172424316,
- -0.59339439868927,
- -0.23656263947486877,
- 0.7620325684547424,
- -0.15014687180519104,
- 0.7921885848045349
- ],
- "type": "float32"
- }
- },
- {
- "name": "sin float32 2D tensor",
- "inputs": {
- "x": {
- "shape": [4, 6],
- "data": [
- 79.78058345331559,
- 55.00573351892254,
- -28.052533009972393,
- -31.644301395318934,
- 56.28375442556609,
- -96.18512135074778,
- -72.99826309079677,
- -3.4241827262925852,
- 84.02549499853444,
- 5.030371842664394,
- -9.512612392430725,
- 9.540593026227612,
- -25.267252298101056,
- -20.831639431837345,
- -32.024754770208745,
- -55.69102662814118,
- 15.92748126354438,
- -57.8835344652012,
- 31.0160642695962,
- -94.88304659350737,
- -84.58417183546084,
- 44.848744233535655,
- -19.000272686086987,
- -48.03827737658466
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- -0.946033775806427,
- -0.9996118545532227,
- -0.21998752653598785,
- -0.22639396786689758,
- -0.2618238627910614,
- -0.9335716366767883,
- 0.6754903197288513,
- 0.27884384989738464,
- 0.7156150341033936,
- -0.9498680830001831,
- 0.08772148936986923,
- -0.11555644869804382,
- -0.13410548865795135,
- -0.9166066646575928,
- -0.5719056725502014,
- 0.7563026547431946,
- -0.21775959432125092,
- -0.9722972512245178,
- -0.38929200172424316,
- -0.59339439868927,
- -0.23656263947486877,
- 0.7620325684547424,
- -0.15014687180519104,
- 0.7921885848045349
- ],
- "type": "float32"
- }
- },
- {
- "name": "sin float32 3D tensor",
- "inputs": {
- "x": {
- "shape": [2, 3, 4],
- "data": [
- 79.78058345331559,
- 55.00573351892254,
- -28.052533009972393,
- -31.644301395318934,
- 56.28375442556609,
- -96.18512135074778,
- -72.99826309079677,
- -3.4241827262925852,
- 84.02549499853444,
- 5.030371842664394,
- -9.512612392430725,
- 9.540593026227612,
- -25.267252298101056,
- -20.831639431837345,
- -32.024754770208745,
- -55.69102662814118,
- 15.92748126354438,
- -57.8835344652012,
- 31.0160642695962,
- -94.88304659350737,
- -84.58417183546084,
- 44.848744233535655,
- -19.000272686086987,
- -48.03827737658466
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 3, 4],
- "data": [
- -0.946033775806427,
- -0.9996118545532227,
- -0.21998752653598785,
- -0.22639396786689758,
- -0.2618238627910614,
- -0.9335716366767883,
- 0.6754903197288513,
- 0.27884384989738464,
- 0.7156150341033936,
- -0.9498680830001831,
- 0.08772148936986923,
- -0.11555644869804382,
- -0.13410548865795135,
- -0.9166066646575928,
- -0.5719056725502014,
- 0.7563026547431946,
- -0.21775959432125092,
- -0.9722972512245178,
- -0.38929200172424316,
- -0.59339439868927,
- -0.23656263947486877,
- 0.7620325684547424,
- -0.15014687180519104,
- 0.7921885848045349
- ],
- "type": "float32"
- }
- },
- {
- "name": "sin float32 4D tensor",
- "inputs": {
- "x": {
- "shape": [2, 2, 2, 3],
- "data": [
- 79.78058345331559,
- 55.00573351892254,
- -28.052533009972393,
- -31.644301395318934,
- 56.28375442556609,
- -96.18512135074778,
- -72.99826309079677,
- -3.4241827262925852,
- 84.02549499853444,
- 5.030371842664394,
- -9.512612392430725,
- 9.540593026227612,
- -25.267252298101056,
- -20.831639431837345,
- -32.024754770208745,
- -55.69102662814118,
- 15.92748126354438,
- -57.8835344652012,
- 31.0160642695962,
- -94.88304659350737,
- -84.58417183546084,
- 44.848744233535655,
- -19.000272686086987,
- -48.03827737658466
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- -0.946033775806427,
- -0.9996118545532227,
- -0.21998752653598785,
- -0.22639396786689758,
- -0.2618238627910614,
- -0.9335716366767883,
- 0.6754903197288513,
- 0.27884384989738464,
- 0.7156150341033936,
- -0.9498680830001831,
- 0.08772148936986923,
- -0.11555644869804382,
- -0.13410548865795135,
- -0.9166066646575928,
- -0.5719056725502014,
- 0.7563026547431946,
- -0.21775959432125092,
- -0.9722972512245178,
- -0.38929200172424316,
- -0.59339439868927,
- -0.23656263947486877,
- 0.7620325684547424,
- -0.15014687180519104,
- 0.7921885848045349
- ],
- "type": "float32"
- }
- },
- {
- "name": "sin float32 5D tensor",
- "inputs": {
- "x": {
- "shape": [2, 1, 4, 1, 3],
- "data": [
- 79.78058345331559,
- 55.00573351892254,
- -28.052533009972393,
- -31.644301395318934,
- 56.28375442556609,
- -96.18512135074778,
- -72.99826309079677,
- -3.4241827262925852,
- 84.02549499853444,
- 5.030371842664394,
- -9.512612392430725,
- 9.540593026227612,
- -25.267252298101056,
- -20.831639431837345,
- -32.024754770208745,
- -55.69102662814118,
- 15.92748126354438,
- -57.8835344652012,
- 31.0160642695962,
- -94.88304659350737,
- -84.58417183546084,
- 44.848744233535655,
- -19.000272686086987,
- -48.03827737658466
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 1, 4, 1, 3],
- "data": [
- -0.946033775806427,
- -0.9996118545532227,
- -0.21998752653598785,
- -0.22639396786689758,
- -0.2618238627910614,
- -0.9335716366767883,
- 0.6754903197288513,
- 0.27884384989738464,
- 0.7156150341033936,
- -0.9498680830001831,
- 0.08772148936986923,
- -0.11555644869804382,
- -0.13410548865795135,
- -0.9166066646575928,
- -0.5719056725502014,
- 0.7563026547431946,
- -0.21775959432125092,
- -0.9722972512245178,
- -0.38929200172424316,
- -0.59339439868927,
- -0.23656263947486877,
- 0.7620325684547424,
- -0.15014687180519104,
- 0.7921885848045349
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/slice.json b/tests/wpt/tests/webnn/resources/test_data/slice.json
deleted file mode 100644
index 28cfd2c0e26..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/slice.json
+++ /dev/null
@@ -1,311 +0,0 @@
-{
- "tests": [
- {
- "name": "slice float32 1D constant tensor",
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- 28.846251144212147,
- 97.9541470229301,
- -68.15961736262523,
- 14.978987588557175,
- 90.23090084798065,
- 76.59095547712559,
- -24.556316258204532,
- 79.58749302462488,
- 65.21375982234204,
- 57.43970862960305,
- 74.41775256222849,
- -4.513182026141791,
- 0.5424534704526991,
- 80.44634130202977,
- 28.327650022124686,
- 74.0261938866893,
- -74.54558964005362,
- -27.30604081001799,
- -70.4277433212161,
- 59.82631931755259,
- -58.46095416849133,
- 79.80571087632629,
- -9.857854207596304,
- 42.66519880465225
- ],
- "type": "float32",
- "constant": true
- }
- },
- "starts": [12],
- "sizes": [12],
- "expected": {
- "name": "output",
- "shape": [12],
- "data": [
- 0.5424534678459167,
- 80.44634246826172,
- 28.32765007019043,
- 74.02619171142578,
- -74.54559326171875,
- -27.306041717529297,
- -70.42774200439453,
- 59.82632064819336,
- -58.46095275878906,
- 79.80570983886719,
- -9.857853889465332,
- 42.665199279785156
- ],
- "type": "float32"
- }
- },
- {
- "name": "slice float32 1D tensor",
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- 28.846251144212147,
- 97.9541470229301,
- -68.15961736262523,
- 14.978987588557175,
- 90.23090084798065,
- 76.59095547712559,
- -24.556316258204532,
- 79.58749302462488,
- 65.21375982234204,
- 57.43970862960305,
- 74.41775256222849,
- -4.513182026141791,
- 0.5424534704526991,
- 80.44634130202977,
- 28.327650022124686,
- 74.0261938866893,
- -74.54558964005362,
- -27.30604081001799,
- -70.4277433212161,
- 59.82631931755259,
- -58.46095416849133,
- 79.80571087632629,
- -9.857854207596304,
- 42.66519880465225
- ],
- "type": "float32"
- }
- },
- "starts": [12],
- "sizes": [12],
- "expected": {
- "name": "output",
- "shape": [12],
- "data": [
- 0.5424534678459167,
- 80.44634246826172,
- 28.32765007019043,
- 74.02619171142578,
- -74.54559326171875,
- -27.306041717529297,
- -70.42774200439453,
- 59.82632064819336,
- -58.46095275878906,
- 79.80570983886719,
- -9.857853889465332,
- 42.665199279785156
- ],
- "type": "float32"
- }
- },
- {
- "name": "slice float32 2D tensor",
- "inputs": {
- "input": {
- "shape": [4, 6],
- "data": [
- 28.846251144212147,
- 97.9541470229301,
- -68.15961736262523,
- 14.978987588557175,
- 90.23090084798065,
- 76.59095547712559,
- -24.556316258204532,
- 79.58749302462488,
- 65.21375982234204,
- 57.43970862960305,
- 74.41775256222849,
- -4.513182026141791,
- 0.5424534704526991,
- 80.44634130202977,
- 28.327650022124686,
- 74.0261938866893,
- -74.54558964005362,
- -27.30604081001799,
- -70.4277433212161,
- 59.82631931755259,
- -58.46095416849133,
- 79.80571087632629,
- -9.857854207596304,
- 42.66519880465225
- ],
- "type": "float32"
- }
- },
- "starts": [2, 2],
- "sizes": [2, 4],
- "expected": {
- "name": "output",
- "shape": [2, 4],
- "data": [
- 28.32765007019043,
- 74.02619171142578,
- -74.54559326171875,
- -27.306041717529297,
- -58.46095275878906,
- 79.80570983886719,
- -9.857853889465332,
- 42.665199279785156
- ],
- "type": "float32"
- }
- },
- {
- "name": "slice float32 3D tensor",
- "inputs": {
- "input": {
- "shape": [4, 3, 2],
- "data": [
- 28.846251144212147,
- 97.9541470229301,
- -68.15961736262523,
- 14.978987588557175,
- 90.23090084798065,
- 76.59095547712559,
- -24.556316258204532,
- 79.58749302462488,
- 65.21375982234204,
- 57.43970862960305,
- 74.41775256222849,
- -4.513182026141791,
- 0.5424534704526991,
- 80.44634130202977,
- 28.327650022124686,
- 74.0261938866893,
- -74.54558964005362,
- -27.30604081001799,
- -70.4277433212161,
- 59.82631931755259,
- -58.46095416849133,
- 79.80571087632629,
- -9.857854207596304,
- 42.66519880465225
- ],
- "type": "float32"
- }
- },
- "starts": [1, 1, 1],
- "sizes": [3, 2, 1],
- "expected": {
- "name": "output",
- "shape": [3, 2, 1],
- "data": [
- 57.4397087097168,
- -4.513182163238525,
- 74.02619171142578,
- -27.306041717529297,
- 79.80570983886719,
- 42.665199279785156
- ],
- "type": "float32"
- }
- },
- {
- "name": "slice float32 4D tensor",
- "inputs": {
- "input": {
- "shape": [2, 2, 3, 2],
- "data": [
- 28.846251144212147,
- 97.9541470229301,
- -68.15961736262523,
- 14.978987588557175,
- 90.23090084798065,
- 76.59095547712559,
- -24.556316258204532,
- 79.58749302462488,
- 65.21375982234204,
- 57.43970862960305,
- 74.41775256222849,
- -4.513182026141791,
- 0.5424534704526991,
- 80.44634130202977,
- 28.327650022124686,
- 74.0261938866893,
- -74.54558964005362,
- -27.30604081001799,
- -70.4277433212161,
- 59.82631931755259,
- -58.46095416849133,
- 79.80571087632629,
- -9.857854207596304,
- 42.66519880465225
- ],
- "type": "float32"
- }
- },
- "starts": [1, 0, 2, 1],
- "sizes": [1, 2, 1, 1],
- "expected": {
- "name": "output",
- "shape": [1, 2, 1, 1],
- "data": [
- -27.306041717529297,
- 42.665199279785156
- ],
- "type": "float32"
- }
- },
- {
- "name": "slice float32 5D tensor",
- "inputs": {
- "input": {
- "shape": [2, 2, 3, 2, 1],
- "data": [
- 28.846251144212147,
- 97.9541470229301,
- -68.15961736262523,
- 14.978987588557175,
- 90.23090084798065,
- 76.59095547712559,
- -24.556316258204532,
- 79.58749302462488,
- 65.21375982234204,
- 57.43970862960305,
- 74.41775256222849,
- -4.513182026141791,
- 0.5424534704526991,
- 80.44634130202977,
- 28.327650022124686,
- 74.0261938866893,
- -74.54558964005362,
- -27.30604081001799,
- -70.4277433212161,
- 59.82631931755259,
- -58.46095416849133,
- 79.80571087632629,
- -9.857854207596304,
- 42.66519880465225
- ],
- "type": "float32"
- }
- },
- "starts": [1, 0, 2, 1, 0],
- "sizes": [1, 2, 1, 1, 1],
- "expected": {
- "name": "output",
- "shape": [1, 2, 1, 1, 1],
- "data": [
- -27.306041717529297,
- 42.665199279785156
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/softmax.json b/tests/wpt/tests/webnn/resources/test_data/softmax.json
deleted file mode 100644
index cbe868ac1de..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/softmax.json
+++ /dev/null
@@ -1,290 +0,0 @@
-{
- "tests": [
- {
- "name": "softmax float32 2D constant tensor all positive",
- "inputs": {
- "x": {
- "shape": [4, 6],
- "data": [
- 7.903734730203054,
- 6.358251623091922,
- 4.833756774572475,
- 9.579165187926348,
- 0.21071856783621445,
- 4.554958961778823,
- 7.150174113718282,
- 8.330297576341172,
- 1.535985791562966,
- 6.633619497318013,
- 1.45393689965033,
- 0.21341864769940821,
- 5.257819475802503,
- 8.1921378632378,
- 8.161730206898543,
- 2.8744343334015565,
- 8.950733525100087,
- 6.111632812590415,
- 1.6371468489476149,
- 0.2762612074523485,
- 5.028227187056009,
- 3.898326029997037,
- 2.8967114227178836,
- 6.8894703393234575
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- 0.15068615972995758,
- 0.03212761878967285,
- 0.006995180621743202,
- 0.8048291206359863,
- 0.00006871300138300285,
- 0.005293202120810747,
- 0.2057899534702301,
- 0.6698001027107239,
- 0.0007502624066546559,
- 0.1227685883641243,
- 0.0006911618984304368,
- 0.00019990770670119673,
- 0.012398251332342625,
- 0.23319464921951294,
- 0.22621041536331177,
- 0.0011435872875154018,
- 0.4979347288608551,
- 0.029118351638317108,
- 0.004253828432410955,
- 0.001090824487619102,
- 0.12633030116558075,
- 0.040812913328409195,
- 0.014990009367465973,
- 0.8125221133232117
- ],
- "type": "float32"
- }
- },
- {
- "name": "softmax float32 2D tensor all positive",
- "inputs": {
- "x": {
- "shape": [4, 6],
- "data": [
- 7.903734730203054,
- 6.358251623091922,
- 4.833756774572475,
- 9.579165187926348,
- 0.21071856783621445,
- 4.554958961778823,
- 7.150174113718282,
- 8.330297576341172,
- 1.535985791562966,
- 6.633619497318013,
- 1.45393689965033,
- 0.21341864769940821,
- 5.257819475802503,
- 8.1921378632378,
- 8.161730206898543,
- 2.8744343334015565,
- 8.950733525100087,
- 6.111632812590415,
- 1.6371468489476149,
- 0.2762612074523485,
- 5.028227187056009,
- 3.898326029997037,
- 2.8967114227178836,
- 6.8894703393234575
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- 0.15068615972995758,
- 0.03212761878967285,
- 0.006995180621743202,
- 0.8048291206359863,
- 0.00006871300138300285,
- 0.005293202120810747,
- 0.2057899534702301,
- 0.6698001027107239,
- 0.0007502624066546559,
- 0.1227685883641243,
- 0.0006911618984304368,
- 0.00019990770670119673,
- 0.012398251332342625,
- 0.23319464921951294,
- 0.22621041536331177,
- 0.0011435872875154018,
- 0.4979347288608551,
- 0.029118351638317108,
- 0.004253828432410955,
- 0.001090824487619102,
- 0.12633030116558075,
- 0.040812913328409195,
- 0.014990009367465973,
- 0.8125221133232117
- ],
- "type": "float32"
- }
- },
- {
- "name": "softmax float32 2D tensor all negative",
- "inputs": {
- "x": {
- "shape": [4, 6],
- "data": [
- -3.3118434934513763,
- -3.338954812269648,
- -3.4102789638525355,
- -6.697192980301335,
- -7.896223320202411,
- -3.3081689006635866,
- -3.2309720485303473,
- -4.315771351061817,
- -9.311088112018716,
- -3.9236627720798856,
- -3.7807213277512064,
- -6.034926915403203,
- -3.9196677453714273,
- -2.223484249593408,
- -9.326531526135806,
- -1.4882492282868132,
- -6.302842393071306,
- -5.531475594479687,
- -1.8421411696525603,
- -4.994808274460977,
- -9.527291818875955,
- -4.985682906583053,
- -8.421041200931548,
- -6.235629579015209
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- 0.2546302080154419,
- 0.24781952798366547,
- 0.2307596504688263,
- 0.008623254485428333,
- 0.002599793951958418,
- 0.2555675804615021,
- 0.40352678298950195,
- 0.13637976348400116,
- 0.0009232329903170466,
- 0.20185552537441254,
- 0.23287305235862732,
- 0.024441635236144066,
- 0.0551743283867836,
- 0.3008708655834198,
- 0.0002474947541486472,
- 0.6276082992553711,
- 0.0050902292132377625,
- 0.011008745059370995,
- 0.9090295433998108,
- 0.0388500951230526,
- 0.00041779119055718184,
- 0.039206232875585556,
- 0.0012629841221496463,
- 0.011233373545110226
- ],
- "type": "float32"
- }
- },
- {
- "name": "softmax float32 3D constant tensor",
- "inputs": {
- "x": {
- "shape": [1, 3, 4],
- "data": [
- 0.4301910996437073,
- 0.5471914410591125,
- -1.1637765169143677,
- 0.18390046060085297,
- 0.583903968334198,
- 0.17356790602207184,
- 0.5397239923477173,
- -0.9535139799118042,
- -0.5920282602310181,
- -0.17344485223293304,
- 0.14395014941692352,
- -0.37920907139778137
- ],
- "type": "float32",
- "constant": true
- }
- },
- "axis": 1,
- "expected": {
- "name": "output",
- "shape": [1, 3, 4],
- "data": [
- 0.39589041471481323,
- 0.45983806252479553,
- 0.09812675416469574,
- 0.529077410697937,
- 0.4616699814796448,
- 0.31647709012031555,
- 0.5390242338180542,
- 0.16964708268642426,
- 0.142439603805542,
- 0.22368484735488892,
- 0.36284899711608887,
- 0.3012755215167999
- ],
- "type": "float32"
- }
- },
- {
- "name": "softmax float32 4D tensor",
- "inputs": {
- "x": {
- "shape": [3, 4, 1, 1],
- "data": [
- 0.4301910996437073,
- 0.5471914410591125,
- -1.1637765169143677,
- 0.18390046060085297,
- 0.583903968334198,
- 0.17356790602207184,
- 0.5397239923477173,
- -0.9535139799118042,
- -0.5920282602310181,
- -0.17344485223293304,
- 0.14395014941692352,
- -0.37920907139778137
- ],
- "type": "float32"
- }
- },
- "axis": 1,
- "expected": {
- "name": "output",
- "shape": [3, 4, 1, 1],
- "data": [
- 0.3216537833213806,
- 0.3615773916244507,
- 0.06533370912075043,
- 0.25143513083457947,
- 0.35271573066711426,
- 0.23400123417377472,
- 0.33747196197509766,
- 0.07581108063459396,
- 0.17110128700733185,
- 0.26004093885421753,
- 0.3571779429912567,
- 0.2116798311471939
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/softplus.json b/tests/wpt/tests/webnn/resources/test_data/softplus.json
deleted file mode 100644
index 373612d5ca2..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/softplus.json
+++ /dev/null
@@ -1,401 +0,0 @@
-{ // softplus: The calculation follows the expression ln(1 + exp(x)).
- "tests": [
- {
- "name": "softplus float32 1D constant tensor",
- "inputs": {
- "x": {
- "shape": [24],
- "data": [
- 5.626614582460632,
- 5.167487045486892,
- 4.0146356193402655,
- 9.48003299650489,
- 9.989938045769978,
- 7.0654412821434125,
- 2.132681001794825,
- 8.187151346059956,
- 5.169976220175496,
- 2.1044997879382077,
- 3.523329401138895,
- 4.136340646976668,
- 1.7418719794295656,
- 5.145224066290767,
- 5.015515309165462,
- 0.045903935074711466,
- 2.9570898924917377,
- 3.959244712098706,
- 5.517926978255181,
- 7.192322388417094,
- 8.76492480390928,
- 1.3734704039113388,
- 8.930669016709397,
- 8.660283210871246
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- 5.630208969116211,
- 5.1731696128845215,
- 4.032524108886719,
- 9.480109214782715,
- 9.989983558654785,
- 7.0662946701049805,
- 2.2446866035461426,
- 8.187429428100586,
- 5.175644874572754,
- 2.219529390335083,
- 3.552403688430786,
- 4.152195453643799,
- 1.903303623199463,
- 5.151034355163574,
- 5.022127628326416,
- 0.7163625359535217,
- 3.007754325866699,
- 3.978142499923706,
- 5.521933078765869,
- 7.1930742263793945,
- 8.765081405639648,
- 1.5991919040679932,
- 8.930801391601562,
- 8.660456657409668
- ],
- "type": "float32"
- }
- },
- {
- "name": "softplus float32 1D tensor",
- "inputs": {
- "x": {
- "shape": [24],
- "data": [
- 5.626614582460632,
- 5.167487045486892,
- 4.0146356193402655,
- 9.48003299650489,
- 9.989938045769978,
- 7.0654412821434125,
- 2.132681001794825,
- 8.187151346059956,
- 5.169976220175496,
- 2.1044997879382077,
- 3.523329401138895,
- 4.136340646976668,
- 1.7418719794295656,
- 5.145224066290767,
- 5.015515309165462,
- 0.045903935074711466,
- 2.9570898924917377,
- 3.959244712098706,
- 5.517926978255181,
- 7.192322388417094,
- 8.76492480390928,
- 1.3734704039113388,
- 8.930669016709397,
- 8.660283210871246
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- 5.630208969116211,
- 5.1731696128845215,
- 4.032524108886719,
- 9.480109214782715,
- 9.989983558654785,
- 7.0662946701049805,
- 2.2446866035461426,
- 8.187429428100586,
- 5.175644874572754,
- 2.219529390335083,
- 3.552403688430786,
- 4.152195453643799,
- 1.903303623199463,
- 5.151034355163574,
- 5.022127628326416,
- 0.7163625359535217,
- 3.007754325866699,
- 3.978142499923706,
- 5.521933078765869,
- 7.1930742263793945,
- 8.765081405639648,
- 1.5991919040679932,
- 8.930801391601562,
- 8.660456657409668
- ],
- "type": "float32"
- }
- },
- {
- "name": "softplus float32 2D tensor",
- "inputs": {
- "x": {
- "shape": [4, 6],
- "data": [
- 5.626614582460632,
- 5.167487045486892,
- 4.0146356193402655,
- 9.48003299650489,
- 9.989938045769978,
- 7.0654412821434125,
- 2.132681001794825,
- 8.187151346059956,
- 5.169976220175496,
- 2.1044997879382077,
- 3.523329401138895,
- 4.136340646976668,
- 1.7418719794295656,
- 5.145224066290767,
- 5.015515309165462,
- 0.045903935074711466,
- 2.9570898924917377,
- 3.959244712098706,
- 5.517926978255181,
- 7.192322388417094,
- 8.76492480390928,
- 1.3734704039113388,
- 8.930669016709397,
- 8.660283210871246
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- 5.630208969116211,
- 5.1731696128845215,
- 4.032524108886719,
- 9.480109214782715,
- 9.989983558654785,
- 7.0662946701049805,
- 2.2446866035461426,
- 8.187429428100586,
- 5.175644874572754,
- 2.219529390335083,
- 3.552403688430786,
- 4.152195453643799,
- 1.903303623199463,
- 5.151034355163574,
- 5.022127628326416,
- 0.7163625359535217,
- 3.007754325866699,
- 3.978142499923706,
- 5.521933078765869,
- 7.1930742263793945,
- 8.765081405639648,
- 1.5991919040679932,
- 8.930801391601562,
- 8.660456657409668
- ],
- "type": "float32"
- }
- },
- {
- "name": "softplus float32 3D tensor",
- "inputs": {
- "x": {
- "shape": [2, 3, 4],
- "data": [
- 5.626614582460632,
- 5.167487045486892,
- 4.0146356193402655,
- 9.48003299650489,
- 9.989938045769978,
- 7.0654412821434125,
- 2.132681001794825,
- 8.187151346059956,
- 5.169976220175496,
- 2.1044997879382077,
- 3.523329401138895,
- 4.136340646976668,
- 1.7418719794295656,
- 5.145224066290767,
- 5.015515309165462,
- 0.045903935074711466,
- 2.9570898924917377,
- 3.959244712098706,
- 5.517926978255181,
- 7.192322388417094,
- 8.76492480390928,
- 1.3734704039113388,
- 8.930669016709397,
- 8.660283210871246
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 3, 4],
- "data": [
- 5.630208969116211,
- 5.1731696128845215,
- 4.032524108886719,
- 9.480109214782715,
- 9.989983558654785,
- 7.0662946701049805,
- 2.2446866035461426,
- 8.187429428100586,
- 5.175644874572754,
- 2.219529390335083,
- 3.552403688430786,
- 4.152195453643799,
- 1.903303623199463,
- 5.151034355163574,
- 5.022127628326416,
- 0.7163625359535217,
- 3.007754325866699,
- 3.978142499923706,
- 5.521933078765869,
- 7.1930742263793945,
- 8.765081405639648,
- 1.5991919040679932,
- 8.930801391601562,
- 8.660456657409668
- ],
- "type": "float32"
- }
- },
- {
- "name": "softplus float32 4D tensor",
- "inputs": {
- "x": {
- "shape": [1, 2, 3, 4],
- "data": [
- 5.626614582460632,
- 5.167487045486892,
- 4.0146356193402655,
- 9.48003299650489,
- 9.989938045769978,
- 7.0654412821434125,
- 2.132681001794825,
- 8.187151346059956,
- 5.169976220175496,
- 2.1044997879382077,
- 3.523329401138895,
- 4.136340646976668,
- 1.7418719794295656,
- 5.145224066290767,
- 5.015515309165462,
- 0.045903935074711466,
- 2.9570898924917377,
- 3.959244712098706,
- 5.517926978255181,
- 7.192322388417094,
- 8.76492480390928,
- 1.3734704039113388,
- 8.930669016709397,
- 8.660283210871246
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 3, 4],
- "data": [
- 5.630208969116211,
- 5.1731696128845215,
- 4.032524108886719,
- 9.480109214782715,
- 9.989983558654785,
- 7.0662946701049805,
- 2.2446866035461426,
- 8.187429428100586,
- 5.175644874572754,
- 2.219529390335083,
- 3.552403688430786,
- 4.152195453643799,
- 1.903303623199463,
- 5.151034355163574,
- 5.022127628326416,
- 0.7163625359535217,
- 3.007754325866699,
- 3.978142499923706,
- 5.521933078765869,
- 7.1930742263793945,
- 8.765081405639648,
- 1.5991919040679932,
- 8.930801391601562,
- 8.660456657409668
- ],
- "type": "float32"
- }
- },
- {
- "name": "softplus float32 5D tensor",
- "inputs": {
- "x": {
- "shape": [1, 2, 1, 3, 4],
- "data": [
- 5.626614582460632,
- 5.167487045486892,
- 4.0146356193402655,
- 9.48003299650489,
- 9.989938045769978,
- 7.0654412821434125,
- 2.132681001794825,
- 8.187151346059956,
- 5.169976220175496,
- 2.1044997879382077,
- 3.523329401138895,
- 4.136340646976668,
- 1.7418719794295656,
- 5.145224066290767,
- 5.015515309165462,
- 0.045903935074711466,
- 2.9570898924917377,
- 3.959244712098706,
- 5.517926978255181,
- 7.192322388417094,
- 8.76492480390928,
- 1.3734704039113388,
- 8.930669016709397,
- 8.660283210871246
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 1, 3, 4],
- "data": [
- 5.630208969116211,
- 5.1731696128845215,
- 4.032524108886719,
- 9.480109214782715,
- 9.989983558654785,
- 7.0662946701049805,
- 2.2446866035461426,
- 8.187429428100586,
- 5.175644874572754,
- 2.219529390335083,
- 3.552403688430786,
- 4.152195453643799,
- 1.903303623199463,
- 5.151034355163574,
- 5.022127628326416,
- 0.7163625359535217,
- 3.007754325866699,
- 3.978142499923706,
- 5.521933078765869,
- 7.1930742263793945,
- 8.765081405639648,
- 1.5991919040679932,
- 8.930801391601562,
- 8.660456657409668
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/softsign.json b/tests/wpt/tests/webnn/resources/test_data/softsign.json
deleted file mode 100644
index 290f6711d09..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/softsign.json
+++ /dev/null
@@ -1,467 +0,0 @@
-{ // softsign: The calculation follows the expression x / (1 + |x|).
- "tests": [
- {
- "name": "softsign positive float32 1D constant tensor",
- "inputs": {
- "x": {
- "shape": [24],
- "data": [
- 1.5834133593790956,
- 4.0787189411490115,
- 8.883356617490337,
- 8.070860233252166,
- 8.211773633019915,
- 2.4554003891197818,
- 0.653374178120758,
- 7.866281154604682,
- 3.1239552336192666,
- 8.013792390668268,
- 3.9409862749371283,
- 1.8131727337833081,
- 2.390676102273188,
- 1.3359680092645565,
- 9.416410839467265,
- 0.44325690899325254,
- 5.236662013213598,
- 9.424242359034539,
- 7.816190418459348,
- 5.849185795081855,
- 8.780370640491928,
- 5.1205157788312246,
- 7.1172223514005095,
- 4.59910661262345
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- 0.6129152178764343,
- 0.8030999898910522,
- 0.8988198041915894,
- 0.8897568583488464,
- 0.8914432525634766,
- 0.7105979323387146,
- 0.3951762318611145,
- 0.8872131109237671,
- 0.7575143575668335,
- 0.8890588879585266,
- 0.7976112365722656,
- 0.6445294618606567,
- 0.7050735354423523,
- 0.5719119310379028,
- 0.9039976596832275,
- 0.30712267756462097,
- 0.8396578431129456,
- 0.9040697813034058,
- 0.8865723013877869,
- 0.8539972305297852,
- 0.8977543711662292,
- 0.8366150856018066,
- 0.8768051266670227,
- 0.8214001059532166
- ],
- "type": "float32"
- }
- },
- {
- "name": "softsign positive float32 1D tensor",
- "inputs": {
- "x": {
- "shape": [24],
- "data": [
- 1.5834133593790956,
- 4.0787189411490115,
- 8.883356617490337,
- 8.070860233252166,
- 8.211773633019915,
- 2.4554003891197818,
- 0.653374178120758,
- 7.866281154604682,
- 3.1239552336192666,
- 8.013792390668268,
- 3.9409862749371283,
- 1.8131727337833081,
- 2.390676102273188,
- 1.3359680092645565,
- 9.416410839467265,
- 0.44325690899325254,
- 5.236662013213598,
- 9.424242359034539,
- 7.816190418459348,
- 5.849185795081855,
- 8.780370640491928,
- 5.1205157788312246,
- 7.1172223514005095,
- 4.59910661262345
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- 0.6129152178764343,
- 0.8030999898910522,
- 0.8988198041915894,
- 0.8897568583488464,
- 0.8914432525634766,
- 0.7105979323387146,
- 0.3951762318611145,
- 0.8872131109237671,
- 0.7575143575668335,
- 0.8890588879585266,
- 0.7976112365722656,
- 0.6445294618606567,
- 0.7050735354423523,
- 0.5719119310379028,
- 0.9039976596832275,
- 0.30712267756462097,
- 0.8396578431129456,
- 0.9040697813034058,
- 0.8865723013877869,
- 0.8539972305297852,
- 0.8977543711662292,
- 0.8366150856018066,
- 0.8768051266670227,
- 0.8214001059532166
- ],
- "type": "float32"
- }
- },
- {
- "name": "softsign negative float32 1D tensor",
- "inputs": {
- "x": {
- "shape": [24],
- "data": [
- -2.5978440095516913,
- -0.4449555447737712,
- -9.095475232407683,
- -3.7480076975512873,
- -1.3867289790255697,
- -8.220328902868987,
- -3.538342320320556,
- -9.364588742025619,
- -6.283252341501335,
- -5.0020120266550006,
- -8.245729151019969,
- -3.775470497728266,
- -4.087254829132392,
- -7.3816760861585795,
- -5.882921529710956,
- -8.338910337100263,
- -6.6015492897072185,
- -4.491942000901396,
- -3.524778486355298,
- -4.439912258765581,
- -5.2342625634221225,
- -1.5911732471016933,
- -9.106277545690418,
- -8.523774275382141
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- -0.7220557928085327,
- -0.3079372048377991,
- -0.9009457230567932,
- -0.7893853783607483,
- -0.5810165405273438,
- -0.891543984413147,
- -0.7796552181243896,
- -0.9035176634788513,
- -0.8626986742019653,
- -0.8333892226219177,
- -0.8918419480323792,
- -0.7905965447425842,
- -0.8034303188323975,
- -0.8806921243667603,
- -0.8547128438949585,
- -0.8929211497306824,
- -0.8684478402137756,
- -0.8179150223731995,
- -0.7789947390556335,
- -0.8161734938621521,
- -0.8395960927009583,
- -0.6140744686126709,
- -0.9010515809059143,
- -0.894999623298645
- ],
- "type": "float32"
- }
- },
- {
- "name": "softsign float32 2D tensor",
- "inputs": {
- "x": {
- "shape": [4, 6],
- "data": [
- -8.343496173533422,
- -6.92015211612679,
- 2.699638761922575,
- -8.663104577031863,
- -3.190534368785616,
- 7.657887080586452,
- 6.650215091182602,
- 6.058011004380681,
- 0.6634320403254037,
- 5.805803683155526,
- -0.32821124531446344,
- 1.270430403469046,
- -9.946119978610852,
- 6.905375202832072,
- -0.031071535439890496,
- -3.9696409293645862,
- 6.270823207970878,
- -2.6392608577007914,
- 3.051350503137261,
- 7.42647683445869,
- -8.454667518154086,
- 7.135868292466057,
- -4.9860941550065885,
- -7.859615086397076
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- -0.8929736614227295,
- -0.8737397789955139,
- 0.7297033667564392,
- -0.8965135812759399,
- -0.7613669633865356,
- 0.8844983577728271,
- 0.8692847490310669,
- 0.8583170175552368,
- 0.3988332748413086,
- 0.8530665636062622,
- -0.24710771441459656,
- 0.5595548748970032,
- -0.9086434245109558,
- 0.8735038042068481,
- -0.03013519011437893,
- -0.798778235912323,
- 0.8624640107154846,
- -0.7252188920974731,
- 0.7531687617301941,
- 0.88132643699646,
- -0.8942321538925171,
- 0.8770874738693237,
- -0.8329461812973022,
- -0.8871282935142517
- ],
- "type": "float32"
- }
- },
- {
- "name": "softsign float32 3D tensor",
- "inputs": {
- "x": {
- "shape": [2, 3, 4],
- "data": [
- -8.343496173533422,
- -6.92015211612679,
- 2.699638761922575,
- -8.663104577031863,
- -3.190534368785616,
- 7.657887080586452,
- 6.650215091182602,
- 6.058011004380681,
- 0.6634320403254037,
- 5.805803683155526,
- -0.32821124531446344,
- 1.270430403469046,
- -9.946119978610852,
- 6.905375202832072,
- -0.031071535439890496,
- -3.9696409293645862,
- 6.270823207970878,
- -2.6392608577007914,
- 3.051350503137261,
- 7.42647683445869,
- -8.454667518154086,
- 7.135868292466057,
- -4.9860941550065885,
- -7.859615086397076
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 3, 4],
- "data": [
- -0.8929736614227295,
- -0.8737397789955139,
- 0.7297033667564392,
- -0.8965135812759399,
- -0.7613669633865356,
- 0.8844983577728271,
- 0.8692847490310669,
- 0.8583170175552368,
- 0.3988332748413086,
- 0.8530665636062622,
- -0.24710771441459656,
- 0.5595548748970032,
- -0.9086434245109558,
- 0.8735038042068481,
- -0.03013519011437893,
- -0.798778235912323,
- 0.8624640107154846,
- -0.7252188920974731,
- 0.7531687617301941,
- 0.88132643699646,
- -0.8942321538925171,
- 0.8770874738693237,
- -0.8329461812973022,
- -0.8871282935142517
- ],
- "type": "float32"
- }
- },
- {
- "name": "softsign float32 4D tensor",
- "inputs": {
- "x": {
- "shape": [1, 2, 3, 4],
- "data": [
- -8.343496173533422,
- -6.92015211612679,
- 2.699638761922575,
- -8.663104577031863,
- -3.190534368785616,
- 7.657887080586452,
- 6.650215091182602,
- 6.058011004380681,
- 0.6634320403254037,
- 5.805803683155526,
- -0.32821124531446344,
- 1.270430403469046,
- -9.946119978610852,
- 6.905375202832072,
- -0.031071535439890496,
- -3.9696409293645862,
- 6.270823207970878,
- -2.6392608577007914,
- 3.051350503137261,
- 7.42647683445869,
- -8.454667518154086,
- 7.135868292466057,
- -4.9860941550065885,
- -7.859615086397076
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 3, 4],
- "data": [
- -0.8929736614227295,
- -0.8737397789955139,
- 0.7297033667564392,
- -0.8965135812759399,
- -0.7613669633865356,
- 0.8844983577728271,
- 0.8692847490310669,
- 0.8583170175552368,
- 0.3988332748413086,
- 0.8530665636062622,
- -0.24710771441459656,
- 0.5595548748970032,
- -0.9086434245109558,
- 0.8735038042068481,
- -0.03013519011437893,
- -0.798778235912323,
- 0.8624640107154846,
- -0.7252188920974731,
- 0.7531687617301941,
- 0.88132643699646,
- -0.8942321538925171,
- 0.8770874738693237,
- -0.8329461812973022,
- -0.8871282935142517
- ],
- "type": "float32"
- }
- },
- {
- "name": "softsign float32 5D tensor",
- "inputs": {
- "x": {
- "shape": [1, 2, 1, 3, 4],
- "data": [
- -8.343496173533422,
- -6.92015211612679,
- 2.699638761922575,
- -8.663104577031863,
- -3.190534368785616,
- 7.657887080586452,
- 6.650215091182602,
- 6.058011004380681,
- 0.6634320403254037,
- 5.805803683155526,
- -0.32821124531446344,
- 1.270430403469046,
- -9.946119978610852,
- 6.905375202832072,
- -0.031071535439890496,
- -3.9696409293645862,
- 6.270823207970878,
- -2.6392608577007914,
- 3.051350503137261,
- 7.42647683445869,
- -8.454667518154086,
- 7.135868292466057,
- -4.9860941550065885,
- -7.859615086397076
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [1, 2, 1, 3, 4],
- "data": [
- -0.8929736614227295,
- -0.8737397789955139,
- 0.7297033667564392,
- -0.8965135812759399,
- -0.7613669633865356,
- 0.8844983577728271,
- 0.8692847490310669,
- 0.8583170175552368,
- 0.3988332748413086,
- 0.8530665636062622,
- -0.24710771441459656,
- 0.5595548748970032,
- -0.9086434245109558,
- 0.8735038042068481,
- -0.03013519011437893,
- -0.798778235912323,
- 0.8624640107154846,
- -0.7252188920974731,
- 0.7531687617301941,
- 0.88132643699646,
- -0.8942321538925171,
- 0.8770874738693237,
- -0.8329461812973022,
- -0.8871282935142517
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/split.json b/tests/wpt/tests/webnn/resources/test_data/split.json
deleted file mode 100644
index 6432044ea20..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/split.json
+++ /dev/null
@@ -1,744 +0,0 @@
-{
- "tests": [
- {
- "name": "split float32 1D constant tensor number splits default options",
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- -64.52057192772567,
- -84.60513454654502,
- -67.9928282139549,
- -23.446074622313745,
- -85.64383132426956,
- 46.877522730892906,
- -68.11224159891194,
- 75.99607609082298,
- -61.05668616435924,
- -90.92643605408041,
- 53.916621140775476,
- 84.16269171442175,
- -95.57494716023527,
- -52.40757884637803,
- -29.007187148127983,
- 71.65495730084652,
- 50.663572707062656,
- 21.364581604631596,
- -27.127241457105228,
- 65.1489516233315,
- -30.406812651567833,
- -6.818390152438795,
- 46.67362179020569,
- -21.12453802903387
- ],
- "type": "float32",
- "constant": true
- }
- },
- "splits": 3,
- "expected": [
- {
- "name": "output1",
- "shape": [8],
- "data": [
- -64.52056884765625,
- -84.60513305664062,
- -67.99282836914062,
- -23.446075439453125,
- -85.64382934570312,
- 46.87752151489258,
- -68.11224365234375,
- 75.99607849121094
- ],
- "type": "float32"
- },
- {
- "name": "output2",
- "shape": [8],
- "data": [
- -61.05668640136719,
- -90.92643737792969,
- 53.916622161865234,
- 84.16268920898438,
- -95.57494354248047,
- -52.40757751464844,
- -29.007186889648438,
- 71.65496063232422
- ],
- "type": "float32"
- },
- {
- "name": "output3",
- "shape": [8],
- "data": [
- 50.66357421875,
- 21.364582061767578,
- -27.127241134643555,
- 65.1489486694336,
- -30.40681266784668,
- -6.818390369415283,
- 46.673622131347656,
- -21.12453842163086
- ],
- "type": "float32"
- }
- ]
- },
- {
- "name": "split float32 1D tensor number splits default options",
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- -64.52057192772567,
- -84.60513454654502,
- -67.9928282139549,
- -23.446074622313745,
- -85.64383132426956,
- 46.877522730892906,
- -68.11224159891194,
- 75.99607609082298,
- -61.05668616435924,
- -90.92643605408041,
- 53.916621140775476,
- 84.16269171442175,
- -95.57494716023527,
- -52.40757884637803,
- -29.007187148127983,
- 71.65495730084652,
- 50.663572707062656,
- 21.364581604631596,
- -27.127241457105228,
- 65.1489516233315,
- -30.406812651567833,
- -6.818390152438795,
- 46.67362179020569,
- -21.12453802903387
- ],
- "type": "float32"
- }
- },
- "splits": 3,
- "expected": [
- {
- "name": "output1",
- "shape": [8],
- "data": [
- -64.52056884765625,
- -84.60513305664062,
- -67.99282836914062,
- -23.446075439453125,
- -85.64382934570312,
- 46.87752151489258,
- -68.11224365234375,
- 75.99607849121094
- ],
- "type": "float32"
- },
- {
- "name": "output2",
- "shape": [8],
- "data": [
- -61.05668640136719,
- -90.92643737792969,
- 53.916622161865234,
- 84.16268920898438,
- -95.57494354248047,
- -52.40757751464844,
- -29.007186889648438,
- 71.65496063232422
- ],
- "type": "float32"
- },
- {
- "name": "output3",
- "shape": [8],
- "data": [
- 50.66357421875,
- 21.364582061767578,
- -27.127241134643555,
- 65.1489486694336,
- -30.40681266784668,
- -6.818390369415283,
- 46.673622131347656,
- -21.12453842163086
- ],
- "type": "float32"
- }
- ]
- },
- {
- "name": "split float32 2D tensor number splits default options",
- "inputs": {
- "input": {
- "shape": [8, 3],
- "data": [
- -64.52057192772567,
- -84.60513454654502,
- -67.9928282139549,
- -23.446074622313745,
- -85.64383132426956,
- 46.877522730892906,
- -68.11224159891194,
- 75.99607609082298,
- -61.05668616435924,
- -90.92643605408041,
- 53.916621140775476,
- 84.16269171442175,
- -95.57494716023527,
- -52.40757884637803,
- -29.007187148127983,
- 71.65495730084652,
- 50.663572707062656,
- 21.364581604631596,
- -27.127241457105228,
- 65.1489516233315,
- -30.406812651567833,
- -6.818390152438795,
- 46.67362179020569,
- -21.12453802903387
- ],
- "type": "float32"
- }
- },
- "splits": 2,
- "expected": [
- {
- "name": "output1",
- "shape": [4, 3],
- "data": [
- -64.52056884765625,
- -84.60513305664062,
- -67.99282836914062,
- -23.446075439453125,
- -85.64382934570312,
- 46.87752151489258,
- -68.11224365234375,
- 75.99607849121094,
- -61.05668640136719,
- -90.92643737792969,
- 53.916622161865234,
- 84.16268920898438
- ],
- "type": "float32"
- },
- {
- "name": "output2",
- "shape": [4, 3],
- "data": [
- -95.57494354248047,
- -52.40757751464844,
- -29.007186889648438,
- 71.65496063232422,
- 50.66357421875,
- 21.364582061767578,
- -27.127241134643555,
- 65.1489486694336,
- -30.40681266784668,
- -6.818390369415283,
- 46.673622131347656,
- -21.12453842163086
- ],
- "type": "float32"
- }
- ]
- },
- {
- "name": "split float32 3D tensor number splits default options",
- "inputs": {
- "input": {
- "shape": [4, 3, 2],
- "data": [
- -64.52057192772567,
- -84.60513454654502,
- -67.9928282139549,
- -23.446074622313745,
- -85.64383132426956,
- 46.877522730892906,
- -68.11224159891194,
- 75.99607609082298,
- -61.05668616435924,
- -90.92643605408041,
- 53.916621140775476,
- 84.16269171442175,
- -95.57494716023527,
- -52.40757884637803,
- -29.007187148127983,
- 71.65495730084652,
- 50.663572707062656,
- 21.364581604631596,
- -27.127241457105228,
- 65.1489516233315,
- -30.406812651567833,
- -6.818390152438795,
- 46.67362179020569,
- -21.12453802903387
- ],
- "type": "float32"
- }
- },
- "splits": 2,
- "expected": [
- {
- "name": "output1",
- "shape": [2, 3, 2],
- "data": [
- -64.52056884765625,
- -84.60513305664062,
- -67.99282836914062,
- -23.446075439453125,
- -85.64382934570312,
- 46.87752151489258,
- -68.11224365234375,
- 75.99607849121094,
- -61.05668640136719,
- -90.92643737792969,
- 53.916622161865234,
- 84.16268920898438
- ],
- "type": "float32"
- },
- {
- "name": "output2",
- "shape": [2, 3, 2],
- "data": [
- -95.57494354248047,
- -52.40757751464844,
- -29.007186889648438,
- 71.65496063232422,
- 50.66357421875,
- 21.364582061767578,
- -27.127241134643555,
- 65.1489486694336,
- -30.40681266784668,
- -6.818390369415283,
- 46.673622131347656,
- -21.12453842163086
- ],
- "type": "float32"
- }
- ]
- },
- {
- "name": "split float32 4D tensor number splits default options",
- "inputs": {
- "input": {
- "shape": [12, 1, 1, 2],
- "data": [
- -64.52057192772567,
- -84.60513454654502,
- -67.9928282139549,
- -23.446074622313745,
- -85.64383132426956,
- 46.877522730892906,
- -68.11224159891194,
- 75.99607609082298,
- -61.05668616435924,
- -90.92643605408041,
- 53.916621140775476,
- 84.16269171442175,
- -95.57494716023527,
- -52.40757884637803,
- -29.007187148127983,
- 71.65495730084652,
- 50.663572707062656,
- 21.364581604631596,
- -27.127241457105228,
- 65.1489516233315,
- -30.406812651567833,
- -6.818390152438795,
- 46.67362179020569,
- -21.12453802903387
- ],
- "type": "float32"
- }
- },
- "splits": 4,
- "expected": [
- {
- "name": "output1",
- "shape": [3, 1, 1, 2],
- "data": [
- -64.52056884765625,
- -84.60513305664062,
- -67.99282836914062,
- -23.446075439453125,
- -85.64382934570312,
- 46.87752151489258
- ],
- "type": "float32"
- },
- {
- "name": "output2",
- "shape": [3, 1, 1, 2],
- "data": [
- -68.11224365234375,
- 75.99607849121094,
- -61.05668640136719,
- -90.92643737792969,
- 53.916622161865234,
- 84.16268920898438
- ],
- "type": "float32"
- },
- {
- "name": "output3",
- "shape": [3, 1, 1, 2],
- "data": [
- -95.57494354248047,
- -52.40757751464844,
- -29.007186889648438,
- 71.65496063232422,
- 50.66357421875,
- 21.364582061767578
- ],
- "type": "float32"
- },
- {
- "name": "output4",
- "shape": [3, 1, 1, 2],
- "data": [
- -27.127241134643555,
- 65.1489486694336,
- -30.40681266784668,
- -6.818390369415283,
- 46.673622131347656,
- -21.12453842163086
- ],
- "type": "float32"
- }
- ]
- },
- {
- "name": "split float32 5D tensor number splits default options",
- "inputs": {
- "input": {
- "shape": [6, 1, 1, 2, 2],
- "data": [
- -64.52057192772567,
- -84.60513454654502,
- -67.9928282139549,
- -23.446074622313745,
- -85.64383132426956,
- 46.877522730892906,
- -68.11224159891194,
- 75.99607609082298,
- -61.05668616435924,
- -90.92643605408041,
- 53.916621140775476,
- 84.16269171442175,
- -95.57494716023527,
- -52.40757884637803,
- -29.007187148127983,
- 71.65495730084652,
- 50.663572707062656,
- 21.364581604631596,
- -27.127241457105228,
- 65.1489516233315,
- -30.406812651567833,
- -6.818390152438795,
- 46.67362179020569,
- -21.12453802903387
- ],
- "type": "float32"
- }
- },
- "splits": 2,
- "expected": [
- {
- "name": "output1",
- "shape": [3, 1, 1, 2, 2],
- "data": [
- -64.52056884765625,
- -84.60513305664062,
- -67.99282836914062,
- -23.446075439453125,
- -85.64382934570312,
- 46.87752151489258,
- -68.11224365234375,
- 75.99607849121094,
- -61.05668640136719,
- -90.92643737792969,
- 53.916622161865234,
- 84.16268920898438
- ],
- "type": "float32"
- },
- {
- "name": "output2",
- "shape": [3, 1, 1, 2, 2],
- "data": [
- -95.57494354248047,
- -52.40757751464844,
- -29.007186889648438,
- 71.65496063232422,
- 50.66357421875,
- 21.364582061767578,
- -27.127241134643555,
- 65.1489486694336,
- -30.40681266784668,
- -6.818390369415283,
- 46.673622131347656,
- -21.12453842163086
- ],
- "type": "float32"
- }
- ]
- },
- {
- "name": "split float32 4D tensor array splits default options",
- "inputs": {
- "input": {
- "shape": [12, 1, 1, 2],
- "data": [
- -64.52057192772567,
- -84.60513454654502,
- -67.9928282139549,
- -23.446074622313745,
- -85.64383132426956,
- 46.877522730892906,
- -68.11224159891194,
- 75.99607609082298,
- -61.05668616435924,
- -90.92643605408041,
- 53.916621140775476,
- 84.16269171442175,
- -95.57494716023527,
- -52.40757884637803,
- -29.007187148127983,
- 71.65495730084652,
- 50.663572707062656,
- 21.364581604631596,
- -27.127241457105228,
- 65.1489516233315,
- -30.406812651567833,
- -6.818390152438795,
- 46.67362179020569,
- -21.12453802903387
- ],
- "type": "float32"
- }
- },
- "splits": [3, 3, 3, 3],
- "expected": [
- {
- "name": "output1",
- "shape": [3, 1, 1, 2],
- "data": [
- -64.52056884765625,
- -84.60513305664062,
- -67.99282836914062,
- -23.446075439453125,
- -85.64382934570312,
- 46.87752151489258
- ],
- "type": "float32"
- },
- {
- "name": "output2",
- "shape": [3, 1, 1, 2],
- "data": [
- -68.11224365234375,
- 75.99607849121094,
- -61.05668640136719,
- -90.92643737792969,
- 53.916622161865234,
- 84.16268920898438
- ],
- "type": "float32"
- },
- {
- "name": "output3",
- "shape": [3, 1, 1, 2],
- "data": [
- -95.57494354248047,
- -52.40757751464844,
- -29.007186889648438,
- 71.65496063232422,
- 50.66357421875,
- 21.364582061767578
- ],
- "type": "float32"
- },
- {
- "name": "output4",
- "shape": [3, 1, 1, 2],
- "data": [
- -27.127241134643555,
- 65.1489486694336,
- -30.40681266784668,
- -6.818390369415283,
- 46.673622131347656,
- -21.12453842163086
- ],
- "type": "float32"
- }
- ]
- },
- {
- "name": "split float32 4D tensor number splits options.axis",
- "inputs": {
- "input": {
- "shape": [12, 1, 1, 2],
- "data": [
- -64.52057192772567,
- -84.60513454654502,
- -67.9928282139549,
- -23.446074622313745,
- -85.64383132426956,
- 46.877522730892906,
- -68.11224159891194,
- 75.99607609082298,
- -61.05668616435924,
- -90.92643605408041,
- 53.916621140775476,
- 84.16269171442175,
- -95.57494716023527,
- -52.40757884637803,
- -29.007187148127983,
- 71.65495730084652,
- 50.663572707062656,
- 21.364581604631596,
- -27.127241457105228,
- 65.1489516233315,
- -30.406812651567833,
- -6.818390152438795,
- 46.67362179020569,
- -21.12453802903387
- ],
- "type": "float32"
- }
- },
- "splits": 3,
- "options": {
- "axis": 0
- },
- "expected": [
- {
- "name": "output1",
- "shape": [4, 1, 1, 2],
- "data": [
- -64.52056884765625,
- -84.60513305664062,
- -67.99282836914062,
- -23.446075439453125,
- -85.64382934570312,
- 46.87752151489258,
- -68.11224365234375,
- 75.99607849121094
- ],
- "type": "float32"
- },
- {
- "name": "output2",
- "shape": [4, 1, 1, 2],
- "data": [
- -61.05668640136719,
- -90.92643737792969,
- 53.916622161865234,
- 84.16268920898438,
- -95.57494354248047,
- -52.40757751464844,
- -29.007186889648438,
- 71.65496063232422
- ],
- "type": "float32"
- },
- {
- "name": "output3",
- "shape": [4, 1, 1, 2],
- "data": [
- 50.66357421875,
- 21.364582061767578,
- -27.127241134643555,
- 65.1489486694336,
- -30.40681266784668,
- -6.818390369415283,
- 46.673622131347656,
- -21.12453842163086
- ],
- "type": "float32"
- }
- ]
- },
- {
- "name": "split float32 5D tensor array splits options.axis",
- "inputs": {
- "input": {
- "shape": [1, 1, 6, 2, 2],
- "data": [
- -64.52057192772567,
- -84.60513454654502,
- -67.9928282139549,
- -23.446074622313745,
- -85.64383132426956,
- 46.877522730892906,
- -68.11224159891194,
- 75.99607609082298,
- -61.05668616435924,
- -90.92643605408041,
- 53.916621140775476,
- 84.16269171442175,
- -95.57494716023527,
- -52.40757884637803,
- -29.007187148127983,
- 71.65495730084652,
- 50.663572707062656,
- 21.364581604631596,
- -27.127241457105228,
- 65.1489516233315,
- -30.406812651567833,
- -6.818390152438795,
- 46.67362179020569,
- -21.12453802903387
- ],
- "type": "float32"
- }
- },
- "splits": [3, 3],
- "options": {
- "axis": 2
- },
- "expected": [
- {
- "name": "output1",
- "shape": [1, 1, 3, 2, 2],
- "data": [
- -64.52056884765625,
- -84.60513305664062,
- -67.99282836914062,
- -23.446075439453125,
- -85.64382934570312,
- 46.87752151489258,
- -68.11224365234375,
- 75.99607849121094,
- -61.05668640136719,
- -90.92643737792969,
- 53.916622161865234,
- 84.16268920898438
- ],
- "type": "float32"
- },
- {
- "name": "output2",
- "shape": [1, 1, 3, 2, 2],
- "data": [
- -95.57494354248047,
- -52.40757751464844,
- -29.007186889648438,
- 71.65496063232422,
- 50.66357421875,
- 21.364582061767578,
- -27.127241134643555,
- 65.1489486694336,
- -30.40681266784668,
- -6.818390369415283,
- 46.673622131347656,
- -21.12453842163086
- ],
- "type": "float32"
- }
- ]
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/sqrt.json b/tests/wpt/tests/webnn/resources/test_data/sqrt.json
deleted file mode 100644
index fa59308d45b..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/sqrt.json
+++ /dev/null
@@ -1,421 +0,0 @@
-{
- "tests": [
- {
- "name": "sqrt float32 0D scalar",
- "inputs": {
- "x": {
- "shape": [],
- "data": [
- 4.004463832628975
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [],
- "data": [
- 2.001115560531616
- ],
- "type": "float32"
- }
- },
- {
- "name": "sqrt float32 1D constant tensor",
- "inputs": {
- "x": {
- "shape": [24],
- "data": [
- 7.256007082508322,
- 7.786442153556337,
- 1.3684587069592324,
- 8.053416211473843,
- 9.131288551146515,
- 8.525780428509535,
- 4.870553385406751,
- 7.625959393700068,
- 2.7050268401423483,
- 8.709602770137977,
- 3.2687935624375797,
- 4.712883187439902,
- 8.669182019771712,
- 8.82960710328718,
- 0.5529024533541915,
- 7.95877117461449,
- 4.096406313025051,
- 7.919884221032476,
- 4.424484759327438,
- 0.09894099762703057,
- 4.690024907987658,
- 1.5277378145575349,
- 5.929779749165696,
- 6.06647154134714
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- 2.693697690963745,
- 2.790419816970825,
- 1.1698113679885864,
- 2.8378541469573975,
- 3.0218021869659424,
- 2.919893980026245,
- 2.20693302154541,
- 2.7615139484405518,
- 1.644696593284607,
- 2.9512035846710205,
- 1.8079805374145508,
- 2.170917510986328,
- 2.944347381591797,
- 2.9714653491973877,
- 0.7435740828514099,
- 2.821129322052002,
- 2.023958206176758,
- 2.8142287731170654,
- 2.1034460067749023,
- 0.31454887986183167,
- 2.165646553039551,
- 1.2360169887542725,
- 2.4351139068603516,
- 2.4630208015441895
- ],
- "type": "float32"
- }
- },
- {
- "name": "sqrt float32 1D tensor",
- "inputs": {
- "x": {
- "shape": [24],
- "data": [
- 7.256007082508322,
- 7.786442153556337,
- 1.3684587069592324,
- 8.053416211473843,
- 9.131288551146515,
- 8.525780428509535,
- 4.870553385406751,
- 7.625959393700068,
- 2.7050268401423483,
- 8.709602770137977,
- 3.2687935624375797,
- 4.712883187439902,
- 8.669182019771712,
- 8.82960710328718,
- 0.5529024533541915,
- 7.95877117461449,
- 4.096406313025051,
- 7.919884221032476,
- 4.424484759327438,
- 0.09894099762703057,
- 4.690024907987658,
- 1.5277378145575349,
- 5.929779749165696,
- 6.06647154134714
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- 2.693697690963745,
- 2.790419816970825,
- 1.1698113679885864,
- 2.8378541469573975,
- 3.0218021869659424,
- 2.919893980026245,
- 2.20693302154541,
- 2.7615139484405518,
- 1.644696593284607,
- 2.9512035846710205,
- 1.8079805374145508,
- 2.170917510986328,
- 2.944347381591797,
- 2.9714653491973877,
- 0.7435740828514099,
- 2.821129322052002,
- 2.023958206176758,
- 2.8142287731170654,
- 2.1034460067749023,
- 0.31454887986183167,
- 2.165646553039551,
- 1.2360169887542725,
- 2.4351139068603516,
- 2.4630208015441895
- ],
- "type": "float32"
- }
- },
- {
- "name": "sqrt float32 2D tensor",
- "inputs": {
- "x": {
- "shape": [4, 6],
- "data": [
- 7.256007082508322,
- 7.786442153556337,
- 1.3684587069592324,
- 8.053416211473843,
- 9.131288551146515,
- 8.525780428509535,
- 4.870553385406751,
- 7.625959393700068,
- 2.7050268401423483,
- 8.709602770137977,
- 3.2687935624375797,
- 4.712883187439902,
- 8.669182019771712,
- 8.82960710328718,
- 0.5529024533541915,
- 7.95877117461449,
- 4.096406313025051,
- 7.919884221032476,
- 4.424484759327438,
- 0.09894099762703057,
- 4.690024907987658,
- 1.5277378145575349,
- 5.929779749165696,
- 6.06647154134714
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- 2.693697690963745,
- 2.790419816970825,
- 1.1698113679885864,
- 2.8378541469573975,
- 3.0218021869659424,
- 2.919893980026245,
- 2.20693302154541,
- 2.7615139484405518,
- 1.644696593284607,
- 2.9512035846710205,
- 1.8079805374145508,
- 2.170917510986328,
- 2.944347381591797,
- 2.9714653491973877,
- 0.7435740828514099,
- 2.821129322052002,
- 2.023958206176758,
- 2.8142287731170654,
- 2.1034460067749023,
- 0.31454887986183167,
- 2.165646553039551,
- 1.2360169887542725,
- 2.4351139068603516,
- 2.4630208015441895
- ],
- "type": "float32"
- }
- },
- {
- "name": "sqrt float32 3D tensor",
- "inputs": {
- "x": {
- "shape": [2, 3, 4],
- "data": [
- 7.256007082508322,
- 7.786442153556337,
- 1.3684587069592324,
- 8.053416211473843,
- 9.131288551146515,
- 8.525780428509535,
- 4.870553385406751,
- 7.625959393700068,
- 2.7050268401423483,
- 8.709602770137977,
- 3.2687935624375797,
- 4.712883187439902,
- 8.669182019771712,
- 8.82960710328718,
- 0.5529024533541915,
- 7.95877117461449,
- 4.096406313025051,
- 7.919884221032476,
- 4.424484759327438,
- 0.09894099762703057,
- 4.690024907987658,
- 1.5277378145575349,
- 5.929779749165696,
- 6.06647154134714
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 3, 4],
- "data": [
- 2.693697690963745,
- 2.790419816970825,
- 1.1698113679885864,
- 2.8378541469573975,
- 3.0218021869659424,
- 2.919893980026245,
- 2.20693302154541,
- 2.7615139484405518,
- 1.644696593284607,
- 2.9512035846710205,
- 1.8079805374145508,
- 2.170917510986328,
- 2.944347381591797,
- 2.9714653491973877,
- 0.7435740828514099,
- 2.821129322052002,
- 2.023958206176758,
- 2.8142287731170654,
- 2.1034460067749023,
- 0.31454887986183167,
- 2.165646553039551,
- 1.2360169887542725,
- 2.4351139068603516,
- 2.4630208015441895
- ],
- "type": "float32"
- }
- },
- {
- "name": "sqrt float32 4D tensor",
- "inputs": {
- "x": {
- "shape": [2, 2, 2, 3],
- "data": [
- 7.256007082508322,
- 7.786442153556337,
- 1.3684587069592324,
- 8.053416211473843,
- 9.131288551146515,
- 8.525780428509535,
- 4.870553385406751,
- 7.625959393700068,
- 2.7050268401423483,
- 8.709602770137977,
- 3.2687935624375797,
- 4.712883187439902,
- 8.669182019771712,
- 8.82960710328718,
- 0.5529024533541915,
- 7.95877117461449,
- 4.096406313025051,
- 7.919884221032476,
- 4.424484759327438,
- 0.09894099762703057,
- 4.690024907987658,
- 1.5277378145575349,
- 5.929779749165696,
- 6.06647154134714
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 2.693697690963745,
- 2.790419816970825,
- 1.1698113679885864,
- 2.8378541469573975,
- 3.0218021869659424,
- 2.919893980026245,
- 2.20693302154541,
- 2.7615139484405518,
- 1.644696593284607,
- 2.9512035846710205,
- 1.8079805374145508,
- 2.170917510986328,
- 2.944347381591797,
- 2.9714653491973877,
- 0.7435740828514099,
- 2.821129322052002,
- 2.023958206176758,
- 2.8142287731170654,
- 2.1034460067749023,
- 0.31454887986183167,
- 2.165646553039551,
- 1.2360169887542725,
- 2.4351139068603516,
- 2.4630208015441895
- ],
- "type": "float32"
- }
- },
- {
- "name": "sqrt float32 5D tensor",
- "inputs": {
- "x": {
- "shape": [2, 1, 4, 1, 3],
- "data": [
- 7.256007082508322,
- 7.786442153556337,
- 1.3684587069592324,
- 8.053416211473843,
- 9.131288551146515,
- 8.525780428509535,
- 4.870553385406751,
- 7.625959393700068,
- 2.7050268401423483,
- 8.709602770137977,
- 3.2687935624375797,
- 4.712883187439902,
- 8.669182019771712,
- 8.82960710328718,
- 0.5529024533541915,
- 7.95877117461449,
- 4.096406313025051,
- 7.919884221032476,
- 4.424484759327438,
- 0.09894099762703057,
- 4.690024907987658,
- 1.5277378145575349,
- 5.929779749165696,
- 6.06647154134714
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 1, 4, 1, 3],
- "data": [
- 2.693697690963745,
- 2.790419816970825,
- 1.1698113679885864,
- 2.8378541469573975,
- 3.0218021869659424,
- 2.919893980026245,
- 2.20693302154541,
- 2.7615139484405518,
- 1.644696593284607,
- 2.9512035846710205,
- 1.8079805374145508,
- 2.170917510986328,
- 2.944347381591797,
- 2.9714653491973877,
- 0.7435740828514099,
- 2.821129322052002,
- 2.023958206176758,
- 2.8142287731170654,
- 2.1034460067749023,
- 0.31454887986183167,
- 2.165646553039551,
- 1.2360169887542725,
- 2.4351139068603516,
- 2.4630208015441895
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/sub.json b/tests/wpt/tests/webnn/resources/test_data/sub.json
deleted file mode 100644
index 207d9106b42..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/sub.json
+++ /dev/null
@@ -1,882 +0,0 @@
-{
- "tests": [
- {
- "name": "sub float32 1D constant tensors",
- "inputs": {
- "a": {
- "shape": [24],
- "data": [
- 73.59273411765761,
- 14.484682970108636,
- -69.40201711151408,
- -52.04528488626416,
- -75.78136877111933,
- -2.274051445061204,
- -83.29907743841476,
- 15.57776886289956,
- -62.70080421291606,
- 32.95400351079056,
- 82.55709225645836,
- -74.90638758877455,
- 78.22299428029646,
- 48.39240254947623,
- -19.153541450651716,
- -85.93221227232242,
- 89.12354776921964,
- 22.874629248059804,
- 80.56973297595874,
- 97.62598337281631,
- 52.74850952689357,
- 89.16604046945432,
- -20.503417738603375,
- 99.48707602133317
- ],
- "type": "float32",
- "constant": true
- },
- "b": {
- "shape": [24],
- "data": [
- -49.12813049327167,
- 40.189291278955295,
- 7.224666637037913,
- 89.26004842468907,
- -81.43340528622471,
- 59.61165817521396,
- 11.234410659855328,
- 48.884057695505845,
- 85.26825586730342,
- 27.6952967767901,
- 30.989454126839945,
- -38.1290365096719,
- -83.14809826804765,
- -86.16174952283208,
- 16.758884614336495,
- 46.128898841129086,
- -28.432477462364687,
- 28.229338368319986,
- 35.23646170623519,
- -77.05516625176658,
- -57.8714723086966,
- -58.15086093387936,
- 27.48886675763096,
- 31.998020251913943
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- 122.72087097167969,
- -25.704608917236328,
- -76.62667846679688,
- -141.30532836914062,
- 5.652030944824219,
- -61.885711669921875,
- -94.53349304199219,
- -33.3062858581543,
- -147.96905517578125,
- 5.258705139160156,
- 51.56763458251953,
- -36.77735137939453,
- 161.37109375,
- 134.5541534423828,
- -35.91242599487305,
- -132.0611114501953,
- 117.5560302734375,
- -5.354707717895508,
- 45.33327102661133,
- 174.68115234375,
- 110.61997985839844,
- 147.31689453125,
- -47.992286682128906,
- 67.48905944824219
- ],
- "type": "float32"
- }
- },
- {
- "name": "sub float32 1D tensors",
- "inputs": {
- "a": {
- "shape": [24],
- "data": [
- 73.59273411765761,
- 14.484682970108636,
- -69.40201711151408,
- -52.04528488626416,
- -75.78136877111933,
- -2.274051445061204,
- -83.29907743841476,
- 15.57776886289956,
- -62.70080421291606,
- 32.95400351079056,
- 82.55709225645836,
- -74.90638758877455,
- 78.22299428029646,
- 48.39240254947623,
- -19.153541450651716,
- -85.93221227232242,
- 89.12354776921964,
- 22.874629248059804,
- 80.56973297595874,
- 97.62598337281631,
- 52.74850952689357,
- 89.16604046945432,
- -20.503417738603375,
- 99.48707602133317
- ],
- "type": "float32"
- },
- "b": {
- "shape": [24],
- "data": [
- -49.12813049327167,
- 40.189291278955295,
- 7.224666637037913,
- 89.26004842468907,
- -81.43340528622471,
- 59.61165817521396,
- 11.234410659855328,
- 48.884057695505845,
- 85.26825586730342,
- 27.6952967767901,
- 30.989454126839945,
- -38.1290365096719,
- -83.14809826804765,
- -86.16174952283208,
- 16.758884614336495,
- 46.128898841129086,
- -28.432477462364687,
- 28.229338368319986,
- 35.23646170623519,
- -77.05516625176658,
- -57.8714723086966,
- -58.15086093387936,
- 27.48886675763096,
- 31.998020251913943
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- 122.72087097167969,
- -25.704608917236328,
- -76.62667846679688,
- -141.30532836914062,
- 5.652030944824219,
- -61.885711669921875,
- -94.53349304199219,
- -33.3062858581543,
- -147.96905517578125,
- 5.258705139160156,
- 51.56763458251953,
- -36.77735137939453,
- 161.37109375,
- 134.5541534423828,
- -35.91242599487305,
- -132.0611114501953,
- 117.5560302734375,
- -5.354707717895508,
- 45.33327102661133,
- 174.68115234375,
- 110.61997985839844,
- 147.31689453125,
- -47.992286682128906,
- 67.48905944824219
- ],
- "type": "float32"
- }
- },
- {
- "name": "sub float32 2D tensors",
- "inputs": {
- "a": {
- "shape": [4, 6],
- "data": [
- 73.59273411765761,
- 14.484682970108636,
- -69.40201711151408,
- -52.04528488626416,
- -75.78136877111933,
- -2.274051445061204,
- -83.29907743841476,
- 15.57776886289956,
- -62.70080421291606,
- 32.95400351079056,
- 82.55709225645836,
- -74.90638758877455,
- 78.22299428029646,
- 48.39240254947623,
- -19.153541450651716,
- -85.93221227232242,
- 89.12354776921964,
- 22.874629248059804,
- 80.56973297595874,
- 97.62598337281631,
- 52.74850952689357,
- 89.16604046945432,
- -20.503417738603375,
- 99.48707602133317
- ],
- "type": "float32"
- },
- "b": {
- "shape": [4, 6],
- "data": [
- -49.12813049327167,
- 40.189291278955295,
- 7.224666637037913,
- 89.26004842468907,
- -81.43340528622471,
- 59.61165817521396,
- 11.234410659855328,
- 48.884057695505845,
- 85.26825586730342,
- 27.6952967767901,
- 30.989454126839945,
- -38.1290365096719,
- -83.14809826804765,
- -86.16174952283208,
- 16.758884614336495,
- 46.128898841129086,
- -28.432477462364687,
- 28.229338368319986,
- 35.23646170623519,
- -77.05516625176658,
- -57.8714723086966,
- -58.15086093387936,
- 27.48886675763096,
- 31.998020251913943
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- 122.72087097167969,
- -25.704608917236328,
- -76.62667846679688,
- -141.30532836914062,
- 5.652030944824219,
- -61.885711669921875,
- -94.53349304199219,
- -33.3062858581543,
- -147.96905517578125,
- 5.258705139160156,
- 51.56763458251953,
- -36.77735137939453,
- 161.37109375,
- 134.5541534423828,
- -35.91242599487305,
- -132.0611114501953,
- 117.5560302734375,
- -5.354707717895508,
- 45.33327102661133,
- 174.68115234375,
- 110.61997985839844,
- 147.31689453125,
- -47.992286682128906,
- 67.48905944824219
- ],
- "type": "float32"
- }
- },
- {
- "name": "sub float32 3D tensors",
- "inputs": {
- "a": {
- "shape": [2, 3, 4],
- "data": [
- 73.59273411765761,
- 14.484682970108636,
- -69.40201711151408,
- -52.04528488626416,
- -75.78136877111933,
- -2.274051445061204,
- -83.29907743841476,
- 15.57776886289956,
- -62.70080421291606,
- 32.95400351079056,
- 82.55709225645836,
- -74.90638758877455,
- 78.22299428029646,
- 48.39240254947623,
- -19.153541450651716,
- -85.93221227232242,
- 89.12354776921964,
- 22.874629248059804,
- 80.56973297595874,
- 97.62598337281631,
- 52.74850952689357,
- 89.16604046945432,
- -20.503417738603375,
- 99.48707602133317
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 3, 4],
- "data": [
- -49.12813049327167,
- 40.189291278955295,
- 7.224666637037913,
- 89.26004842468907,
- -81.43340528622471,
- 59.61165817521396,
- 11.234410659855328,
- 48.884057695505845,
- 85.26825586730342,
- 27.6952967767901,
- 30.989454126839945,
- -38.1290365096719,
- -83.14809826804765,
- -86.16174952283208,
- 16.758884614336495,
- 46.128898841129086,
- -28.432477462364687,
- 28.229338368319986,
- 35.23646170623519,
- -77.05516625176658,
- -57.8714723086966,
- -58.15086093387936,
- 27.48886675763096,
- 31.998020251913943
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 3, 4],
- "data": [
- 122.72087097167969,
- -25.704608917236328,
- -76.62667846679688,
- -141.30532836914062,
- 5.652030944824219,
- -61.885711669921875,
- -94.53349304199219,
- -33.3062858581543,
- -147.96905517578125,
- 5.258705139160156,
- 51.56763458251953,
- -36.77735137939453,
- 161.37109375,
- 134.5541534423828,
- -35.91242599487305,
- -132.0611114501953,
- 117.5560302734375,
- -5.354707717895508,
- 45.33327102661133,
- 174.68115234375,
- 110.61997985839844,
- 147.31689453125,
- -47.992286682128906,
- 67.48905944824219
- ],
- "type": "float32"
- }
- },
- {
- "name": "sub float32 4D tensors",
- "inputs": {
- "a": {
- "shape": [2, 2, 2, 3],
- "data": [
- 73.59273411765761,
- 14.484682970108636,
- -69.40201711151408,
- -52.04528488626416,
- -75.78136877111933,
- -2.274051445061204,
- -83.29907743841476,
- 15.57776886289956,
- -62.70080421291606,
- 32.95400351079056,
- 82.55709225645836,
- -74.90638758877455,
- 78.22299428029646,
- 48.39240254947623,
- -19.153541450651716,
- -85.93221227232242,
- 89.12354776921964,
- 22.874629248059804,
- 80.56973297595874,
- 97.62598337281631,
- 52.74850952689357,
- 89.16604046945432,
- -20.503417738603375,
- 99.48707602133317
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 2, 3],
- "data": [
- -49.12813049327167,
- 40.189291278955295,
- 7.224666637037913,
- 89.26004842468907,
- -81.43340528622471,
- 59.61165817521396,
- 11.234410659855328,
- 48.884057695505845,
- 85.26825586730342,
- 27.6952967767901,
- 30.989454126839945,
- -38.1290365096719,
- -83.14809826804765,
- -86.16174952283208,
- 16.758884614336495,
- 46.128898841129086,
- -28.432477462364687,
- 28.229338368319986,
- 35.23646170623519,
- -77.05516625176658,
- -57.8714723086966,
- -58.15086093387936,
- 27.48886675763096,
- 31.998020251913943
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 122.72087097167969,
- -25.704608917236328,
- -76.62667846679688,
- -141.30532836914062,
- 5.652030944824219,
- -61.885711669921875,
- -94.53349304199219,
- -33.3062858581543,
- -147.96905517578125,
- 5.258705139160156,
- 51.56763458251953,
- -36.77735137939453,
- 161.37109375,
- 134.5541534423828,
- -35.91242599487305,
- -132.0611114501953,
- 117.5560302734375,
- -5.354707717895508,
- 45.33327102661133,
- 174.68115234375,
- 110.61997985839844,
- 147.31689453125,
- -47.992286682128906,
- 67.48905944824219
- ],
- "type": "float32"
- }
- },
- {
- "name": "sub float32 5D tensors",
- "inputs": {
- "a": {
- "shape": [2, 2, 1, 2, 3],
- "data": [
- 73.59273411765761,
- 14.484682970108636,
- -69.40201711151408,
- -52.04528488626416,
- -75.78136877111933,
- -2.274051445061204,
- -83.29907743841476,
- 15.57776886289956,
- -62.70080421291606,
- 32.95400351079056,
- 82.55709225645836,
- -74.90638758877455,
- 78.22299428029646,
- 48.39240254947623,
- -19.153541450651716,
- -85.93221227232242,
- 89.12354776921964,
- 22.874629248059804,
- 80.56973297595874,
- 97.62598337281631,
- 52.74850952689357,
- 89.16604046945432,
- -20.503417738603375,
- 99.48707602133317
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 1, 2, 3],
- "data": [
- -49.12813049327167,
- 40.189291278955295,
- 7.224666637037913,
- 89.26004842468907,
- -81.43340528622471,
- 59.61165817521396,
- 11.234410659855328,
- 48.884057695505845,
- 85.26825586730342,
- 27.6952967767901,
- 30.989454126839945,
- -38.1290365096719,
- -83.14809826804765,
- -86.16174952283208,
- 16.758884614336495,
- 46.128898841129086,
- -28.432477462364687,
- 28.229338368319986,
- 35.23646170623519,
- -77.05516625176658,
- -57.8714723086966,
- -58.15086093387936,
- 27.48886675763096,
- 31.998020251913943
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 1, 2, 3],
- "data": [
- 122.72087097167969,
- -25.704608917236328,
- -76.62667846679688,
- -141.30532836914062,
- 5.652030944824219,
- -61.885711669921875,
- -94.53349304199219,
- -33.3062858581543,
- -147.96905517578125,
- 5.258705139160156,
- 51.56763458251953,
- -36.77735137939453,
- 161.37109375,
- 134.5541534423828,
- -35.91242599487305,
- -132.0611114501953,
- 117.5560302734375,
- -5.354707717895508,
- 45.33327102661133,
- 174.68115234375,
- 110.61997985839844,
- 147.31689453125,
- -47.992286682128906,
- 67.48905944824219
- ],
- "type": "float32"
- }
- },
- {
- "name": "sub float32 broadcast 1D to 4D",
- "inputs": {
- "a": {
- "shape": [1],
- "data": [
- -97.04911633292723
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 2, 3],
- "data": [
- 73.59273411765761,
- 14.484682970108636,
- -69.40201711151408,
- -52.04528488626416,
- -75.78136877111933,
- -2.274051445061204,
- -83.29907743841476,
- 15.57776886289956,
- -62.70080421291606,
- 32.95400351079056,
- 82.55709225645836,
- -74.90638758877455,
- 78.22299428029646,
- 48.39240254947623,
- -19.153541450651716,
- -85.93221227232242,
- 89.12354776921964,
- 22.874629248059804,
- 80.56973297595874,
- 97.62598337281631,
- 52.74850952689357,
- 89.16604046945432,
- -20.503417738603375,
- 99.48707602133317
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- -170.641845703125,
- -111.53379821777344,
- -27.64710235595703,
- -45.00383377075195,
- -21.267745971679688,
- -94.77507019042969,
- -13.750038146972656,
- -112.62688446044922,
- -34.34831237792969,
- -130.00311279296875,
- -179.606201171875,
- -22.142730712890625,
- -175.27210998535156,
- -145.4415283203125,
- -77.89557647705078,
- -11.116905212402344,
- -186.17266845703125,
- -119.92375183105469,
- -177.6188507080078,
- -194.67510986328125,
- -149.79762268066406,
- -186.21514892578125,
- -76.54570007324219,
- -196.53619384765625
- ],
- "type": "float32"
- }
- },
- {
- "name": "sub float32 broadcast 2D to 4D",
- "inputs": {
- "a": {
- "shape": [2, 2, 2, 3],
- "data": [
- 73.59273411765761,
- 14.484682970108636,
- -69.40201711151408,
- -52.04528488626416,
- -75.78136877111933,
- -2.274051445061204,
- -83.29907743841476,
- 15.57776886289956,
- -62.70080421291606,
- 32.95400351079056,
- 82.55709225645836,
- -74.90638758877455,
- 78.22299428029646,
- 48.39240254947623,
- -19.153541450651716,
- -85.93221227232242,
- 89.12354776921964,
- 22.874629248059804,
- 80.56973297595874,
- 97.62598337281631,
- 52.74850952689357,
- 89.16604046945432,
- -20.503417738603375,
- 99.48707602133317
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 3],
- "data": [
- 10.76283817728796,
- -90.23991799972681,
- 12.787367580497303,
- -62.44633978281189,
- 32.182575156356904,
- 20.35949259849579
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 62.82989501953125,
- 104.72460174560547,
- -82.18938446044922,
- 10.401054382324219,
- -107.96394348144531,
- -22.633544921875,
- -94.06192016601562,
- 105.81768798828125,
- -75.48817443847656,
- 95.40034484863281,
- 50.374515533447266,
- -95.26588439941406,
- 67.46015167236328,
- 138.63232421875,
- -31.94091033935547,
- -23.48587417602539,
- 56.940975189208984,
- 2.51513671875,
- 69.80689239501953,
- 187.86590576171875,
- 39.96113967895508,
- 151.6123809814453,
- -52.68599319458008,
- 79.12757873535156
- ],
- "type": "float32"
- }
- },
- {
- "name": "sub float32 broadcast 3D to 4D",
- "inputs": {
- "a": {
- "shape": [2, 2, 2, 3],
- "data": [
- 73.59273411765761,
- 14.484682970108636,
- -69.40201711151408,
- -52.04528488626416,
- -75.78136877111933,
- -2.274051445061204,
- -83.29907743841476,
- 15.57776886289956,
- -62.70080421291606,
- 32.95400351079056,
- 82.55709225645836,
- -74.90638758877455,
- 78.22299428029646,
- 48.39240254947623,
- -19.153541450651716,
- -85.93221227232242,
- 89.12354776921964,
- 22.874629248059804,
- 80.56973297595874,
- 97.62598337281631,
- 52.74850952689357,
- 89.16604046945432,
- -20.503417738603375,
- 99.48707602133317
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 1],
- "data": [
- -8.393114200101877,
- 75.54752975621165,
- -32.32586947927443,
- 8.088332085081447
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 81.98584747314453,
- 22.877796173095703,
- -61.00890350341797,
- -127.59281921386719,
- -151.3289031982422,
- -77.82157897949219,
- -50.973209381103516,
- 47.90364074707031,
- -30.374935150146484,
- 24.86566925048828,
- 74.46875762939453,
- -82.99472045898438,
- 86.61610412597656,
- 56.78551483154297,
- -10.760427474975586,
- -161.479736328125,
- 13.576019287109375,
- -52.67290115356445,
- 112.89559936523438,
- 129.9518585205078,
- 85.07437896728516,
- 81.07770538330078,
- -28.591751098632812,
- 91.39874267578125
- ],
- "type": "float32"
- }
- },
- {
- "name": "sub float32 broadcast 4D to 4D",
- "inputs": {
- "a": {
- "shape": [1, 1, 1, 1],
- "data": [
- -97.04911633292723
- ],
- "type": "float32"
- },
- "b": {
- "shape": [2, 2, 2, 3],
- "data": [
- 73.59273411765761,
- 14.484682970108636,
- -69.40201711151408,
- -52.04528488626416,
- -75.78136877111933,
- -2.274051445061204,
- -83.29907743841476,
- 15.57776886289956,
- -62.70080421291606,
- 32.95400351079056,
- 82.55709225645836,
- -74.90638758877455,
- 78.22299428029646,
- 48.39240254947623,
- -19.153541450651716,
- -85.93221227232242,
- 89.12354776921964,
- 22.874629248059804,
- 80.56973297595874,
- 97.62598337281631,
- 52.74850952689357,
- 89.16604046945432,
- -20.503417738603375,
- 99.48707602133317
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- -170.641845703125,
- -111.53379821777344,
- -27.64710235595703,
- -45.00383377075195,
- -21.267745971679688,
- -94.77507019042969,
- -13.750038146972656,
- -112.62688446044922,
- -34.34831237792969,
- -130.00311279296875,
- -179.606201171875,
- -22.142730712890625,
- -175.27210998535156,
- -145.4415283203125,
- -77.89557647705078,
- -11.116905212402344,
- -186.17266845703125,
- -119.92375183105469,
- -177.6188507080078,
- -194.67510986328125,
- -149.79762268066406,
- -186.21514892578125,
- -76.54570007324219,
- -196.53619384765625
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/tan.json b/tests/wpt/tests/webnn/resources/test_data/tan.json
deleted file mode 100644
index 63c7056d905..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/tan.json
+++ /dev/null
@@ -1,401 +0,0 @@
-{
- "tests": [
- {
- "name": "tan float32 1D constant tensor",
- "inputs": {
- "x": {
- "shape": [24],
- "data": [
- 52.697813799029234,
- 70.06912795961244,
- 90.49689556206596,
- 24.656670346007246,
- 11.665126934214868,
- -50.95264467861913,
- 40.32006298292501,
- -9.641122915742358,
- -31.567750159821898,
- 45.59520766037491,
- -55.93085683516472,
- -44.602971816473726,
- 80.45398224930159,
- -2.314880760077372,
- -25.474768449753242,
- 62.589453387873476,
- -70.9440311153533,
- 62.8486191264619,
- 84.79767085874772,
- -95.58503093501218,
- 15.552484501850643,
- -55.256541162343574,
- -26.884890419121504,
- 0.15926108746810996
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- -0.8582430481910706,
- 1.410544753074646,
- -0.6978657245635986,
- -0.5156278610229492,
- -1.2633823156356812,
- -0.8205758929252625,
- -0.5734118819236755,
- -0.21978461742401123,
- -0.1530018001794815,
- -23.731182098388672,
- 0.7106066942214966,
- -0.7149254679679871,
- -2.7969717979431152,
- 1.086239218711853,
- -0.3560185432434082,
- -0.24726025760173798,
- 3.7865755558013916,
- 0.016766052693128586,
- -0.025338610634207726,
- -4.203672409057617,
- -0.1567438244819641,
- 3.495089292526245,
- 5.453553199768066,
- 0.16062140464782715
- ],
- "type": "float32"
- }
- },
- {
- "name": "tan float32 1D tensor",
- "inputs": {
- "x": {
- "shape": [24],
- "data": [
- 52.697813799029234,
- 70.06912795961244,
- 90.49689556206596,
- 24.656670346007246,
- 11.665126934214868,
- -50.95264467861913,
- 40.32006298292501,
- -9.641122915742358,
- -31.567750159821898,
- 45.59520766037491,
- -55.93085683516472,
- -44.602971816473726,
- 80.45398224930159,
- -2.314880760077372,
- -25.474768449753242,
- 62.589453387873476,
- -70.9440311153533,
- 62.8486191264619,
- 84.79767085874772,
- -95.58503093501218,
- 15.552484501850643,
- -55.256541162343574,
- -26.884890419121504,
- 0.15926108746810996
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- -0.8582430481910706,
- 1.410544753074646,
- -0.6978657245635986,
- -0.5156278610229492,
- -1.2633823156356812,
- -0.8205758929252625,
- -0.5734118819236755,
- -0.21978461742401123,
- -0.1530018001794815,
- -23.731182098388672,
- 0.7106066942214966,
- -0.7149254679679871,
- -2.7969717979431152,
- 1.086239218711853,
- -0.3560185432434082,
- -0.24726025760173798,
- 3.7865755558013916,
- 0.016766052693128586,
- -0.025338610634207726,
- -4.203672409057617,
- -0.1567438244819641,
- 3.495089292526245,
- 5.453553199768066,
- 0.16062140464782715
- ],
- "type": "float32"
- }
- },
- {
- "name": "tan float32 2D tensor",
- "inputs": {
- "x": {
- "shape": [4, 6],
- "data": [
- 52.697813799029234,
- 70.06912795961244,
- 90.49689556206596,
- 24.656670346007246,
- 11.665126934214868,
- -50.95264467861913,
- 40.32006298292501,
- -9.641122915742358,
- -31.567750159821898,
- 45.59520766037491,
- -55.93085683516472,
- -44.602971816473726,
- 80.45398224930159,
- -2.314880760077372,
- -25.474768449753242,
- 62.589453387873476,
- -70.9440311153533,
- 62.8486191264619,
- 84.79767085874772,
- -95.58503093501218,
- 15.552484501850643,
- -55.256541162343574,
- -26.884890419121504,
- 0.15926108746810996
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- -0.8582430481910706,
- 1.410544753074646,
- -0.6978657245635986,
- -0.5156278610229492,
- -1.2633823156356812,
- -0.8205758929252625,
- -0.5734118819236755,
- -0.21978461742401123,
- -0.1530018001794815,
- -23.731182098388672,
- 0.7106066942214966,
- -0.7149254679679871,
- -2.7969717979431152,
- 1.086239218711853,
- -0.3560185432434082,
- -0.24726025760173798,
- 3.7865755558013916,
- 0.016766052693128586,
- -0.025338610634207726,
- -4.203672409057617,
- -0.1567438244819641,
- 3.495089292526245,
- 5.453553199768066,
- 0.16062140464782715
- ],
- "type": "float32"
- }
- },
- {
- "name": "tan float32 3D tensor",
- "inputs": {
- "x": {
- "shape": [2, 3, 4],
- "data": [
- 52.697813799029234,
- 70.06912795961244,
- 90.49689556206596,
- 24.656670346007246,
- 11.665126934214868,
- -50.95264467861913,
- 40.32006298292501,
- -9.641122915742358,
- -31.567750159821898,
- 45.59520766037491,
- -55.93085683516472,
- -44.602971816473726,
- 80.45398224930159,
- -2.314880760077372,
- -25.474768449753242,
- 62.589453387873476,
- -70.9440311153533,
- 62.8486191264619,
- 84.79767085874772,
- -95.58503093501218,
- 15.552484501850643,
- -55.256541162343574,
- -26.884890419121504,
- 0.15926108746810996
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 3, 4],
- "data": [
- -0.8582430481910706,
- 1.410544753074646,
- -0.6978657245635986,
- -0.5156278610229492,
- -1.2633823156356812,
- -0.8205758929252625,
- -0.5734118819236755,
- -0.21978461742401123,
- -0.1530018001794815,
- -23.731182098388672,
- 0.7106066942214966,
- -0.7149254679679871,
- -2.7969717979431152,
- 1.086239218711853,
- -0.3560185432434082,
- -0.24726025760173798,
- 3.7865755558013916,
- 0.016766052693128586,
- -0.025338610634207726,
- -4.203672409057617,
- -0.1567438244819641,
- 3.495089292526245,
- 5.453553199768066,
- 0.16062140464782715
- ],
- "type": "float32"
- }
- },
- {
- "name": "tan float32 4D tensor",
- "inputs": {
- "x": {
- "shape": [2, 2, 2, 3],
- "data": [
- 52.697813799029234,
- 70.06912795961244,
- 90.49689556206596,
- 24.656670346007246,
- 11.665126934214868,
- -50.95264467861913,
- 40.32006298292501,
- -9.641122915742358,
- -31.567750159821898,
- 45.59520766037491,
- -55.93085683516472,
- -44.602971816473726,
- 80.45398224930159,
- -2.314880760077372,
- -25.474768449753242,
- 62.589453387873476,
- -70.9440311153533,
- 62.8486191264619,
- 84.79767085874772,
- -95.58503093501218,
- 15.552484501850643,
- -55.256541162343574,
- -26.884890419121504,
- 0.15926108746810996
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- -0.8582430481910706,
- 1.410544753074646,
- -0.6978657245635986,
- -0.5156278610229492,
- -1.2633823156356812,
- -0.8205758929252625,
- -0.5734118819236755,
- -0.21978461742401123,
- -0.1530018001794815,
- -23.731182098388672,
- 0.7106066942214966,
- -0.7149254679679871,
- -2.7969717979431152,
- 1.086239218711853,
- -0.3560185432434082,
- -0.24726025760173798,
- 3.7865755558013916,
- 0.016766052693128586,
- -0.025338610634207726,
- -4.203672409057617,
- -0.1567438244819641,
- 3.495089292526245,
- 5.453553199768066,
- 0.16062140464782715
- ],
- "type": "float32"
- }
- },
- {
- "name": "tan float32 5D tensor",
- "inputs": {
- "x": {
- "shape": [2, 1, 4, 1, 3],
- "data": [
- 52.697813799029234,
- 70.06912795961244,
- 90.49689556206596,
- 24.656670346007246,
- 11.665126934214868,
- -50.95264467861913,
- 40.32006298292501,
- -9.641122915742358,
- -31.567750159821898,
- 45.59520766037491,
- -55.93085683516472,
- -44.602971816473726,
- 80.45398224930159,
- -2.314880760077372,
- -25.474768449753242,
- 62.589453387873476,
- -70.9440311153533,
- 62.8486191264619,
- 84.79767085874772,
- -95.58503093501218,
- 15.552484501850643,
- -55.256541162343574,
- -26.884890419121504,
- 0.15926108746810996
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 1, 4, 1, 3],
- "data": [
- -0.8582430481910706,
- 1.410544753074646,
- -0.6978657245635986,
- -0.5156278610229492,
- -1.2633823156356812,
- -0.8205758929252625,
- -0.5734118819236755,
- -0.21978461742401123,
- -0.1530018001794815,
- -23.731182098388672,
- 0.7106066942214966,
- -0.7149254679679871,
- -2.7969717979431152,
- 1.086239218711853,
- -0.3560185432434082,
- -0.24726025760173798,
- 3.7865755558013916,
- 0.016766052693128586,
- -0.025338610634207726,
- -4.203672409057617,
- -0.1567438244819641,
- 3.495089292526245,
- 5.453553199768066,
- 0.16062140464782715
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/tanh.json b/tests/wpt/tests/webnn/resources/test_data/tanh.json
deleted file mode 100644
index 063c10623d8..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/tanh.json
+++ /dev/null
@@ -1,401 +0,0 @@
-{
- "tests": [
- {
- "name": "tanh float32 1D constant tensor",
- "inputs": {
- "x": {
- "shape": [24],
- "data": [
- 5.47352732138576,
- -1.1535596038683664,
- 0.4074455820170506,
- 1.8297704953674545,
- 2.8690003001236537,
- -4.570195171586943,
- 4.146744465978713,
- -4.0659342722666105,
- -3.712847102459686,
- 0.9077175268859179,
- -0.11083049583219662,
- 5.955096345162751,
- 1.7831856867406417,
- 4.023128342782897,
- 5.587857512324163,
- -5.280654174784587,
- 1.4147950164785632,
- -5.707717050109768,
- -1.4439182665473629,
- -1.9129082844854288,
- 2.7495969049667437,
- -0.7420240173058836,
- 4.856568111647942,
- -0.7563357776241926
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- 0.9999647736549377,
- -0.8189298510551453,
- 0.38630160689353943,
- 0.9498035907745361,
- 0.9935782551765442,
- -0.9997855424880981,
- 0.9994998574256897,
- -0.9994121193885803,
- -0.9988092184066772,
- 0.7200349569320679,
- -0.1103789210319519,
- 0.9999865293502808,
- 0.945036768913269,
- 0.9993596076965332,
- 0.9999719858169556,
- -0.9999482035636902,
- 0.8885080814361572,
- -0.9999779462814331,
- -0.894483745098114,
- -0.9573289752006531,
- 0.9918531775474548,
- -0.6303664445877075,
- 0.9998790621757507,
- -0.6389135718345642
- ],
- "type": "float32"
- }
- },
- {
- "name": "tanh float32 1D tensor",
- "inputs": {
- "x": {
- "shape": [24],
- "data": [
- 5.47352732138576,
- -1.1535596038683664,
- 0.4074455820170506,
- 1.8297704953674545,
- 2.8690003001236537,
- -4.570195171586943,
- 4.146744465978713,
- -4.0659342722666105,
- -3.712847102459686,
- 0.9077175268859179,
- -0.11083049583219662,
- 5.955096345162751,
- 1.7831856867406417,
- 4.023128342782897,
- 5.587857512324163,
- -5.280654174784587,
- 1.4147950164785632,
- -5.707717050109768,
- -1.4439182665473629,
- -1.9129082844854288,
- 2.7495969049667437,
- -0.7420240173058836,
- 4.856568111647942,
- -0.7563357776241926
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- 0.9999647736549377,
- -0.8189298510551453,
- 0.38630160689353943,
- 0.9498035907745361,
- 0.9935782551765442,
- -0.9997855424880981,
- 0.9994998574256897,
- -0.9994121193885803,
- -0.9988092184066772,
- 0.7200349569320679,
- -0.1103789210319519,
- 0.9999865293502808,
- 0.945036768913269,
- 0.9993596076965332,
- 0.9999719858169556,
- -0.9999482035636902,
- 0.8885080814361572,
- -0.9999779462814331,
- -0.894483745098114,
- -0.9573289752006531,
- 0.9918531775474548,
- -0.6303664445877075,
- 0.9998790621757507,
- -0.6389135718345642
- ],
- "type": "float32"
- }
- },
- {
- "name": "tanh float32 2D tensor",
- "inputs": {
- "x": {
- "shape": [4, 6],
- "data": [
- 5.47352732138576,
- -1.1535596038683664,
- 0.4074455820170506,
- 1.8297704953674545,
- 2.8690003001236537,
- -4.570195171586943,
- 4.146744465978713,
- -4.0659342722666105,
- -3.712847102459686,
- 0.9077175268859179,
- -0.11083049583219662,
- 5.955096345162751,
- 1.7831856867406417,
- 4.023128342782897,
- 5.587857512324163,
- -5.280654174784587,
- 1.4147950164785632,
- -5.707717050109768,
- -1.4439182665473629,
- -1.9129082844854288,
- 2.7495969049667437,
- -0.7420240173058836,
- 4.856568111647942,
- -0.7563357776241926
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- 0.9999647736549377,
- -0.8189298510551453,
- 0.38630160689353943,
- 0.9498035907745361,
- 0.9935782551765442,
- -0.9997855424880981,
- 0.9994998574256897,
- -0.9994121193885803,
- -0.9988092184066772,
- 0.7200349569320679,
- -0.1103789210319519,
- 0.9999865293502808,
- 0.945036768913269,
- 0.9993596076965332,
- 0.9999719858169556,
- -0.9999482035636902,
- 0.8885080814361572,
- -0.9999779462814331,
- -0.894483745098114,
- -0.9573289752006531,
- 0.9918531775474548,
- -0.6303664445877075,
- 0.9998790621757507,
- -0.6389135718345642
- ],
- "type": "float32"
- }
- },
- {
- "name": "tanh float32 3D tensor",
- "inputs": {
- "x": {
- "shape": [2, 3, 4],
- "data": [
- 5.47352732138576,
- -1.1535596038683664,
- 0.4074455820170506,
- 1.8297704953674545,
- 2.8690003001236537,
- -4.570195171586943,
- 4.146744465978713,
- -4.0659342722666105,
- -3.712847102459686,
- 0.9077175268859179,
- -0.11083049583219662,
- 5.955096345162751,
- 1.7831856867406417,
- 4.023128342782897,
- 5.587857512324163,
- -5.280654174784587,
- 1.4147950164785632,
- -5.707717050109768,
- -1.4439182665473629,
- -1.9129082844854288,
- 2.7495969049667437,
- -0.7420240173058836,
- 4.856568111647942,
- -0.7563357776241926
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 3, 4],
- "data": [
- 0.9999647736549377,
- -0.8189298510551453,
- 0.38630160689353943,
- 0.9498035907745361,
- 0.9935782551765442,
- -0.9997855424880981,
- 0.9994998574256897,
- -0.9994121193885803,
- -0.9988092184066772,
- 0.7200349569320679,
- -0.1103789210319519,
- 0.9999865293502808,
- 0.945036768913269,
- 0.9993596076965332,
- 0.9999719858169556,
- -0.9999482035636902,
- 0.8885080814361572,
- -0.9999779462814331,
- -0.894483745098114,
- -0.9573289752006531,
- 0.9918531775474548,
- -0.6303664445877075,
- 0.9998790621757507,
- -0.6389135718345642
- ],
- "type": "float32"
- }
- },
- {
- "name": "tanh float32 4D tensor",
- "inputs": {
- "x": {
- "shape": [2, 2, 2, 3],
- "data": [
- 5.47352732138576,
- -1.1535596038683664,
- 0.4074455820170506,
- 1.8297704953674545,
- 2.8690003001236537,
- -4.570195171586943,
- 4.146744465978713,
- -4.0659342722666105,
- -3.712847102459686,
- 0.9077175268859179,
- -0.11083049583219662,
- 5.955096345162751,
- 1.7831856867406417,
- 4.023128342782897,
- 5.587857512324163,
- -5.280654174784587,
- 1.4147950164785632,
- -5.707717050109768,
- -1.4439182665473629,
- -1.9129082844854288,
- 2.7495969049667437,
- -0.7420240173058836,
- 4.856568111647942,
- -0.7563357776241926
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 0.9999647736549377,
- -0.8189298510551453,
- 0.38630160689353943,
- 0.9498035907745361,
- 0.9935782551765442,
- -0.9997855424880981,
- 0.9994998574256897,
- -0.9994121193885803,
- -0.9988092184066772,
- 0.7200349569320679,
- -0.1103789210319519,
- 0.9999865293502808,
- 0.945036768913269,
- 0.9993596076965332,
- 0.9999719858169556,
- -0.9999482035636902,
- 0.8885080814361572,
- -0.9999779462814331,
- -0.894483745098114,
- -0.9573289752006531,
- 0.9918531775474548,
- -0.6303664445877075,
- 0.9998790621757507,
- -0.6389135718345642
- ],
- "type": "float32"
- }
- },
- {
- "name": "tanh float32 5D tensor",
- "inputs": {
- "x": {
- "shape": [2, 1, 4, 1, 3],
- "data": [
- 5.47352732138576,
- -1.1535596038683664,
- 0.4074455820170506,
- 1.8297704953674545,
- 2.8690003001236537,
- -4.570195171586943,
- 4.146744465978713,
- -4.0659342722666105,
- -3.712847102459686,
- 0.9077175268859179,
- -0.11083049583219662,
- 5.955096345162751,
- 1.7831856867406417,
- 4.023128342782897,
- 5.587857512324163,
- -5.280654174784587,
- 1.4147950164785632,
- -5.707717050109768,
- -1.4439182665473629,
- -1.9129082844854288,
- 2.7495969049667437,
- -0.7420240173058836,
- 4.856568111647942,
- -0.7563357776241926
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 1, 4, 1, 3],
- "data": [
- 0.9999647736549377,
- -0.8189298510551453,
- 0.38630160689353943,
- 0.9498035907745361,
- 0.9935782551765442,
- -0.9997855424880981,
- 0.9994998574256897,
- -0.9994121193885803,
- -0.9988092184066772,
- 0.7200349569320679,
- -0.1103789210319519,
- 0.9999865293502808,
- 0.945036768913269,
- 0.9993596076965332,
- 0.9999719858169556,
- -0.9999482035636902,
- 0.8885080814361572,
- -0.9999779462814331,
- -0.894483745098114,
- -0.9573289752006531,
- 0.9918531775474548,
- -0.6303664445877075,
- 0.9998790621757507,
- -0.6389135718345642
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/transpose.json b/tests/wpt/tests/webnn/resources/test_data/transpose.json
deleted file mode 100644
index f7e6a7d2dd2..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/transpose.json
+++ /dev/null
@@ -1,746 +0,0 @@
-{
- "tests": [
- {
- "name": "transpose float32 1D constant tensor default options",
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- -45.67443169971317,
- 53.45924798828125,
- -60.118491676622114,
- 38.08174802652866,
- 78.64247328659363,
- -69.2532431989057,
- 1.843458570865181,
- 92.81028097440239,
- 56.10007526080264,
- 77.05838267016932,
- 57.46807874077655,
- -84.74308916696364,
- 46.38539267170415,
- -84.89764374240352,
- 56.70438712681607,
- -25.69514467758806,
- 5.622173913750174,
- -25.6628149156966,
- 99.46284660658401,
- -87.58919988335086,
- -65.37790624507953,
- -66.00990219021253,
- 38.46682821671709,
- 2.1999381880991393
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- -45.67443084716797,
- 53.45924758911133,
- -60.118492126464844,
- 38.081748962402344,
- 78.64247131347656,
- -69.25324249267578,
- 1.8434585332870483,
- 92.8102798461914,
- 56.100074768066406,
- 77.05838012695312,
- 57.46807861328125,
- -84.74308776855469,
- 46.38539123535156,
- -84.89764404296875,
- 56.70438766479492,
- -25.695144653320312,
- 5.62217378616333,
- -25.66281509399414,
- 99.46284484863281,
- -87.58920288085938,
- -65.3779067993164,
- -66.00990295410156,
- 38.466827392578125,
- 2.1999382972717285
- ],
- "type": "float32"
- }
- },
- {
- "name": "transpose float32 1D tensor default options",
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- -45.67443169971317,
- 53.45924798828125,
- -60.118491676622114,
- 38.08174802652866,
- 78.64247328659363,
- -69.2532431989057,
- 1.843458570865181,
- 92.81028097440239,
- 56.10007526080264,
- 77.05838267016932,
- 57.46807874077655,
- -84.74308916696364,
- 46.38539267170415,
- -84.89764374240352,
- 56.70438712681607,
- -25.69514467758806,
- 5.622173913750174,
- -25.6628149156966,
- 99.46284660658401,
- -87.58919988335086,
- -65.37790624507953,
- -66.00990219021253,
- 38.46682821671709,
- 2.1999381880991393
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- -45.67443084716797,
- 53.45924758911133,
- -60.118492126464844,
- 38.081748962402344,
- 78.64247131347656,
- -69.25324249267578,
- 1.8434585332870483,
- 92.8102798461914,
- 56.100074768066406,
- 77.05838012695312,
- 57.46807861328125,
- -84.74308776855469,
- 46.38539123535156,
- -84.89764404296875,
- 56.70438766479492,
- -25.695144653320312,
- 5.62217378616333,
- -25.66281509399414,
- 99.46284484863281,
- -87.58920288085938,
- -65.3779067993164,
- -66.00990295410156,
- 38.466827392578125,
- 2.1999382972717285
- ],
- "type": "float32"
- }
- },
- {
- "name": "transpose float32 2D tensor default options",
- "inputs": {
- "input": {
- "shape": [4, 6],
- "data": [
- -45.67443169971317,
- 53.45924798828125,
- -60.118491676622114,
- 38.08174802652866,
- 78.64247328659363,
- -69.2532431989057,
- 1.843458570865181,
- 92.81028097440239,
- 56.10007526080264,
- 77.05838267016932,
- 57.46807874077655,
- -84.74308916696364,
- 46.38539267170415,
- -84.89764374240352,
- 56.70438712681607,
- -25.69514467758806,
- 5.622173913750174,
- -25.6628149156966,
- 99.46284660658401,
- -87.58919988335086,
- -65.37790624507953,
- -66.00990219021253,
- 38.46682821671709,
- 2.1999381880991393
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [6, 4],
- "data": [
- -45.67443084716797,
- 1.8434585332870483,
- 46.38539123535156,
- 99.46284484863281,
- 53.45924758911133,
- 92.8102798461914,
- -84.89764404296875,
- -87.58920288085938,
- -60.118492126464844,
- 56.100074768066406,
- 56.70438766479492,
- -65.3779067993164,
- 38.081748962402344,
- 77.05838012695312,
- -25.695144653320312,
- -66.00990295410156,
- 78.64247131347656,
- 57.46807861328125,
- 5.62217378616333,
- 38.466827392578125,
- -69.25324249267578,
- -84.74308776855469,
- -25.66281509399414,
- 2.1999382972717285
- ],
- "type": "float32"
- }
- },
- {
- "name": "transpose float32 3D tensor default options",
- "inputs": {
- "input": {
- "shape": [2, 3, 4],
- "data": [
- -45.67443169971317,
- 53.45924798828125,
- -60.118491676622114,
- 38.08174802652866,
- 78.64247328659363,
- -69.2532431989057,
- 1.843458570865181,
- 92.81028097440239,
- 56.10007526080264,
- 77.05838267016932,
- 57.46807874077655,
- -84.74308916696364,
- 46.38539267170415,
- -84.89764374240352,
- 56.70438712681607,
- -25.69514467758806,
- 5.622173913750174,
- -25.6628149156966,
- 99.46284660658401,
- -87.58919988335086,
- -65.37790624507953,
- -66.00990219021253,
- 38.46682821671709,
- 2.1999381880991393
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [4, 3, 2],
- "data": [
- -45.67443084716797,
- 46.38539123535156,
- 78.64247131347656,
- 5.62217378616333,
- 56.100074768066406,
- -65.3779067993164,
- 53.45924758911133,
- -84.89764404296875,
- -69.25324249267578,
- -25.66281509399414,
- 77.05838012695312,
- -66.00990295410156,
- -60.118492126464844,
- 56.70438766479492,
- 1.8434585332870483,
- 99.46284484863281,
- 57.46807861328125,
- 38.466827392578125,
- 38.081748962402344,
- -25.695144653320312,
- 92.8102798461914,
- -87.58920288085938,
- -84.74308776855469,
- 2.1999382972717285
- ],
- "type": "float32"
- }
- },
- {
- "name": "transpose float32 4D tensor default options",
- "inputs": {
- "input": {
- "shape": [1, 2, 3, 4],
- "data": [
- -45.67443169971317,
- 53.45924798828125,
- -60.118491676622114,
- 38.08174802652866,
- 78.64247328659363,
- -69.2532431989057,
- 1.843458570865181,
- 92.81028097440239,
- 56.10007526080264,
- 77.05838267016932,
- 57.46807874077655,
- -84.74308916696364,
- 46.38539267170415,
- -84.89764374240352,
- 56.70438712681607,
- -25.69514467758806,
- 5.622173913750174,
- -25.6628149156966,
- 99.46284660658401,
- -87.58919988335086,
- -65.37790624507953,
- -66.00990219021253,
- 38.46682821671709,
- 2.1999381880991393
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [4, 3, 2, 1],
- "data": [
- -45.67443084716797,
- 46.38539123535156,
- 78.64247131347656,
- 5.62217378616333,
- 56.100074768066406,
- -65.3779067993164,
- 53.45924758911133,
- -84.89764404296875,
- -69.25324249267578,
- -25.66281509399414,
- 77.05838012695312,
- -66.00990295410156,
- -60.118492126464844,
- 56.70438766479492,
- 1.8434585332870483,
- 99.46284484863281,
- 57.46807861328125,
- 38.466827392578125,
- 38.081748962402344,
- -25.695144653320312,
- 92.8102798461914,
- -87.58920288085938,
- -84.74308776855469,
- 2.1999382972717285
- ],
- "type": "float32"
- }
- },
- {
- "name": "transpose float32 5D tensor default options",
- "inputs": {
- "input": {
- "shape": [1, 2, 1, 3, 4],
- "data": [
- -45.67443169971317,
- 53.45924798828125,
- -60.118491676622114,
- 38.08174802652866,
- 78.64247328659363,
- -69.2532431989057,
- 1.843458570865181,
- 92.81028097440239,
- 56.10007526080264,
- 77.05838267016932,
- 57.46807874077655,
- -84.74308916696364,
- 46.38539267170415,
- -84.89764374240352,
- 56.70438712681607,
- -25.69514467758806,
- 5.622173913750174,
- -25.6628149156966,
- 99.46284660658401,
- -87.58919988335086,
- -65.37790624507953,
- -66.00990219021253,
- 38.46682821671709,
- 2.1999381880991393
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [4, 3, 1, 2, 1],
- "data": [
- -45.67443084716797,
- 46.38539123535156,
- 78.64247131347656,
- 5.62217378616333,
- 56.100074768066406,
- -65.3779067993164,
- 53.45924758911133,
- -84.89764404296875,
- -69.25324249267578,
- -25.66281509399414,
- 77.05838012695312,
- -66.00990295410156,
- -60.118492126464844,
- 56.70438766479492,
- 1.8434585332870483,
- 99.46284484863281,
- 57.46807861328125,
- 38.466827392578125,
- 38.081748962402344,
- -25.695144653320312,
- 92.8102798461914,
- -87.58920288085938,
- -84.74308776855469,
- 2.1999382972717285
- ],
- "type": "float32"
- }
- },
- {
- "name": "transpose float32 1D tensor options.permutation",
- "inputs": {
- "input": {
- "shape": [24],
- "data": [
- -45.67443169971317,
- 53.45924798828125,
- -60.118491676622114,
- 38.08174802652866,
- 78.64247328659363,
- -69.2532431989057,
- 1.843458570865181,
- 92.81028097440239,
- 56.10007526080264,
- 77.05838267016932,
- 57.46807874077655,
- -84.74308916696364,
- 46.38539267170415,
- -84.89764374240352,
- 56.70438712681607,
- -25.69514467758806,
- 5.622173913750174,
- -25.6628149156966,
- 99.46284660658401,
- -87.58919988335086,
- -65.37790624507953,
- -66.00990219021253,
- 38.46682821671709,
- 2.1999381880991393
- ],
- "type": "float32"
- }
- },
- "options": {
- "permutation": [0]
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- -45.67443084716797,
- 53.45924758911133,
- -60.118492126464844,
- 38.081748962402344,
- 78.64247131347656,
- -69.25324249267578,
- 1.8434585332870483,
- 92.8102798461914,
- 56.100074768066406,
- 77.05838012695312,
- 57.46807861328125,
- -84.74308776855469,
- 46.38539123535156,
- -84.89764404296875,
- 56.70438766479492,
- -25.695144653320312,
- 5.62217378616333,
- -25.66281509399414,
- 99.46284484863281,
- -87.58920288085938,
- -65.3779067993164,
- -66.00990295410156,
- 38.466827392578125,
- 2.1999382972717285
- ],
- "type": "float32"
- }
- },
- {
- "name": "transpose float32 2D tensor options.permutation",
- "inputs": {
- "input": {
- "shape": [4, 6],
- "data": [
- -45.67443169971317,
- 53.45924798828125,
- -60.118491676622114,
- 38.08174802652866,
- 78.64247328659363,
- -69.2532431989057,
- 1.843458570865181,
- 92.81028097440239,
- 56.10007526080264,
- 77.05838267016932,
- 57.46807874077655,
- -84.74308916696364,
- 46.38539267170415,
- -84.89764374240352,
- 56.70438712681607,
- -25.69514467758806,
- 5.622173913750174,
- -25.6628149156966,
- 99.46284660658401,
- -87.58919988335086,
- -65.37790624507953,
- -66.00990219021253,
- 38.46682821671709,
- 2.1999381880991393
- ],
- "type": "float32"
- }
- },
- "options": {
- "permutation": [1, 0]
- },
- "expected": {
- "name": "output",
- "shape": [6, 4],
- "data": [
- -45.67443084716797,
- 1.8434585332870483,
- 46.38539123535156,
- 99.46284484863281,
- 53.45924758911133,
- 92.8102798461914,
- -84.89764404296875,
- -87.58920288085938,
- -60.118492126464844,
- 56.100074768066406,
- 56.70438766479492,
- -65.3779067993164,
- 38.081748962402344,
- 77.05838012695312,
- -25.695144653320312,
- -66.00990295410156,
- 78.64247131347656,
- 57.46807861328125,
- 5.62217378616333,
- 38.466827392578125,
- -69.25324249267578,
- -84.74308776855469,
- -25.66281509399414,
- 2.1999382972717285
- ],
- "type": "float32"
- }
- },
- {
- "name": "transpose float32 3D tensor options.permutation",
- "inputs": {
- "input": {
- "shape": [2, 3, 4],
- "data": [
- -45.67443169971317,
- 53.45924798828125,
- -60.118491676622114,
- 38.08174802652866,
- 78.64247328659363,
- -69.2532431989057,
- 1.843458570865181,
- 92.81028097440239,
- 56.10007526080264,
- 77.05838267016932,
- 57.46807874077655,
- -84.74308916696364,
- 46.38539267170415,
- -84.89764374240352,
- 56.70438712681607,
- -25.69514467758806,
- 5.622173913750174,
- -25.6628149156966,
- 99.46284660658401,
- -87.58919988335086,
- -65.37790624507953,
- -66.00990219021253,
- 38.46682821671709,
- 2.1999381880991393
- ],
- "type": "float32"
- }
- },
- "options": {
- "permutation": [2, 0, 1]
- },
- "expected": {
- "name": "output",
- "shape": [4, 2, 3],
- "data": [
- -45.67443084716797,
- 78.64247131347656,
- 56.100074768066406,
- 46.38539123535156,
- 5.62217378616333,
- -65.3779067993164,
- 53.45924758911133,
- -69.25324249267578,
- 77.05838012695312,
- -84.89764404296875,
- -25.66281509399414,
- -66.00990295410156,
- -60.118492126464844,
- 1.8434585332870483,
- 57.46807861328125,
- 56.70438766479492,
- 99.46284484863281,
- 38.466827392578125,
- 38.081748962402344,
- 92.8102798461914,
- -84.74308776855469,
- -25.695144653320312,
- -87.58920288085938,
- 2.1999382972717285
- ],
- "type": "float32"
- }
- },
- {
- "name": "transpose float32 4D tensor options.permutation",
- "inputs": {
- "input": {
- "shape": [1, 2, 3, 4],
- "data": [
- -45.67443169971317,
- 53.45924798828125,
- -60.118491676622114,
- 38.08174802652866,
- 78.64247328659363,
- -69.2532431989057,
- 1.843458570865181,
- 92.81028097440239,
- 56.10007526080264,
- 77.05838267016932,
- 57.46807874077655,
- -84.74308916696364,
- 46.38539267170415,
- -84.89764374240352,
- 56.70438712681607,
- -25.69514467758806,
- 5.622173913750174,
- -25.6628149156966,
- 99.46284660658401,
- -87.58919988335086,
- -65.37790624507953,
- -66.00990219021253,
- 38.46682821671709,
- 2.1999381880991393
- ],
- "type": "float32"
- }
- },
- "options": {
- "permutation": [2, 3, 0, 1]
- },
- "expected": {
- "name": "output",
- "shape": [3, 4, 1, 2],
- "data": [
- -45.67443084716797,
- 46.38539123535156,
- 53.45924758911133,
- -84.89764404296875,
- -60.118492126464844,
- 56.70438766479492,
- 38.081748962402344,
- -25.695144653320312,
- 78.64247131347656,
- 5.62217378616333,
- -69.25324249267578,
- -25.66281509399414,
- 1.8434585332870483,
- 99.46284484863281,
- 92.8102798461914,
- -87.58920288085938,
- 56.100074768066406,
- -65.3779067993164,
- 77.05838012695312,
- -66.00990295410156,
- 57.46807861328125,
- 38.466827392578125,
- -84.74308776855469,
- 2.1999382972717285
- ],
- "type": "float32"
- }
- },
- {
- "name": "transpose float32 5D tensor options.permutation",
- "inputs": {
- "input": {
- "shape": [1, 2, 1, 3, 4],
- "data": [
- -45.67443169971317,
- 53.45924798828125,
- -60.118491676622114,
- 38.08174802652866,
- 78.64247328659363,
- -69.2532431989057,
- 1.843458570865181,
- 92.81028097440239,
- 56.10007526080264,
- 77.05838267016932,
- 57.46807874077655,
- -84.74308916696364,
- 46.38539267170415,
- -84.89764374240352,
- 56.70438712681607,
- -25.69514467758806,
- 5.622173913750174,
- -25.6628149156966,
- 99.46284660658401,
- -87.58919988335086,
- -65.37790624507953,
- -66.00990219021253,
- 38.46682821671709,
- 2.1999381880991393
- ],
- "type": "float32"
- }
- },
- "options": {
- "permutation": [1, 3, 0, 4, 2]
- },
- "expected": {
- "name": "output",
- "shape": [2, 3, 1, 4, 1],
- "data": [
- -45.67443084716797,
- 53.45924758911133,
- -60.118492126464844,
- 38.081748962402344,
- 78.64247131347656,
- -69.25324249267578,
- 1.8434585332870483,
- 92.8102798461914,
- 56.100074768066406,
- 77.05838012695312,
- 57.46807861328125,
- -84.74308776855469,
- 46.38539123535156,
- -84.89764404296875,
- 56.70438766479492,
- -25.695144653320312,
- 5.62217378616333,
- -25.66281509399414,
- 99.46284484863281,
- -87.58920288085938,
- -65.3779067993164,
- -66.00990295410156,
- 38.466827392578125,
- 2.1999382972717285
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/triangular.json b/tests/wpt/tests/webnn/resources/test_data/triangular.json
deleted file mode 100644
index 652f780d58b..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/triangular.json
+++ /dev/null
@@ -1,1101 +0,0 @@
-{
- "tests": [
- {
- "name": "triangular float32 2D tensor default options",
- "inputs": {
- "input": {
- "shape": [4, 6],
- "data": [
- 84.9194564819336,
- -86.21631622314453,
- 50.38116455078125,
- -98.47772216796875,
- -94.51172637939453,
- -21.42218589782715,
- 24.678754806518555,
- -50.355342864990234,
- -37.015724182128906,
- 97.25071716308594,
- 73.36241149902344,
- -75.12358856201172,
- 41.64348602294922,
- 58.862911224365234,
- -29.916187286376953,
- 67.48285675048828,
- 42.132598876953125,
- -70.27587127685547,
- 20.88446617126465,
- 71.37139892578125,
- -84.96932220458984,
- -88.97057342529297,
- 77.58269500732422,
- 91.03327178955078
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [4, 6],
- "data": [
- 84.9194564819336,
- -86.21631622314453,
- 50.38116455078125,
- -98.47772216796875,
- -94.51172637939453,
- -21.42218589782715,
- 0,
- -50.355342864990234,
- -37.015724182128906,
- 97.25071716308594,
- 73.36241149902344,
- -75.12358856201172,
- 0,
- 0,
- -29.916187286376953,
- 67.48285675048828,
- 42.132598876953125,
- -70.27587127685547,
- 0,
- 0,
- 0,
- -88.97057342529297,
- 77.58269500732422,
- 91.03327178955078
- ],
- "type": "float32"
- }
- },
- {
- "name": "triangular float32 3D tensor default options",
- "inputs": {
- "input": {
- "shape": [2, 3, 4],
- "data": [
- 84.9194564819336,
- -86.21631622314453,
- 50.38116455078125,
- -98.47772216796875,
- -94.51172637939453,
- -21.42218589782715,
- 24.678754806518555,
- -50.355342864990234,
- -37.015724182128906,
- 97.25071716308594,
- 73.36241149902344,
- -75.12358856201172,
- 41.64348602294922,
- 58.862911224365234,
- -29.916187286376953,
- 67.48285675048828,
- 42.132598876953125,
- -70.27587127685547,
- 20.88446617126465,
- 71.37139892578125,
- -84.96932220458984,
- -88.97057342529297,
- 77.58269500732422,
- 91.03327178955078
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 3, 4],
- "data": [
- 84.9194564819336,
- -86.21631622314453,
- 50.38116455078125,
- -98.47772216796875,
- 0,
- -21.42218589782715,
- 24.678754806518555,
- -50.355342864990234,
- 0,
- 0,
- 73.36241149902344,
- -75.12358856201172,
- 41.64348602294922,
- 58.862911224365234,
- -29.916187286376953,
- 67.48285675048828,
- 0,
- -70.27587127685547,
- 20.88446617126465,
- 71.37139892578125,
- 0,
- 0,
- 77.58269500732422,
- 91.03327178955078
- ],
- "type": "float32"
- }
- },
- {
- "name": "triangular float32 4D tensor default options",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 84.9194564819336,
- -86.21631622314453,
- 50.38116455078125,
- -98.47772216796875,
- -94.51172637939453,
- -21.42218589782715,
- 24.678754806518555,
- -50.355342864990234,
- -37.015724182128906,
- 97.25071716308594,
- 73.36241149902344,
- -75.12358856201172,
- 41.64348602294922,
- 58.862911224365234,
- -29.916187286376953,
- 67.48285675048828,
- 42.132598876953125,
- -70.27587127685547,
- 20.88446617126465,
- 71.37139892578125,
- -84.96932220458984,
- -88.97057342529297,
- 77.58269500732422,
- 91.03327178955078
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 84.9194564819336,
- -86.21631622314453,
- 50.38116455078125,
- 0,
- -94.51172637939453,
- -21.42218589782715,
- 24.678754806518555,
- -50.355342864990234,
- -37.015724182128906,
- 0,
- 73.36241149902344,
- -75.12358856201172,
- 41.64348602294922,
- 58.862911224365234,
- -29.916187286376953,
- 0,
- 42.132598876953125,
- -70.27587127685547,
- 20.88446617126465,
- 71.37139892578125,
- -84.96932220458984,
- 0,
- 77.58269500732422,
- 91.03327178955078
- ],
- "type": "float32"
- }
- },
- {
- "name": "triangular float32 5D tensor default options",
- "inputs": {
- "input": {
- "shape": [2, 1, 4, 1, 3],
- "data": [
- 84.9194564819336,
- -86.21631622314453,
- 50.38116455078125,
- -98.47772216796875,
- -94.51172637939453,
- -21.42218589782715,
- 24.678754806518555,
- -50.355342864990234,
- -37.015724182128906,
- 97.25071716308594,
- 73.36241149902344,
- -75.12358856201172,
- 41.64348602294922,
- 58.862911224365234,
- -29.916187286376953,
- 67.48285675048828,
- 42.132598876953125,
- -70.27587127685547,
- 20.88446617126465,
- 71.37139892578125,
- -84.96932220458984,
- -88.97057342529297,
- 77.58269500732422,
- 91.03327178955078
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 1, 4, 1, 3],
- "data": [
- 84.9194564819336,
- -86.21631622314453,
- 50.38116455078125,
- -98.47772216796875,
- -94.51172637939453,
- -21.42218589782715,
- 24.678754806518555,
- -50.355342864990234,
- -37.015724182128906,
- 97.25071716308594,
- 73.36241149902344,
- -75.12358856201172,
- 41.64348602294922,
- 58.862911224365234,
- -29.916187286376953,
- 67.48285675048828,
- 42.132598876953125,
- -70.27587127685547,
- 20.88446617126465,
- 71.37139892578125,
- -84.96932220458984,
- -88.97057342529297,
- 77.58269500732422,
- 91.03327178955078
- ],
- "type": "float32"
- }
- },
- {
- "name": "triangular float32 4D tensor explict options.upper=true",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 84.9194564819336,
- -86.21631622314453,
- 50.38116455078125,
- -98.47772216796875,
- -94.51172637939453,
- -21.42218589782715,
- 24.678754806518555,
- -50.355342864990234,
- -37.015724182128906,
- 97.25071716308594,
- 73.36241149902344,
- -75.12358856201172,
- 41.64348602294922,
- 58.862911224365234,
- -29.916187286376953,
- 67.48285675048828,
- 42.132598876953125,
- -70.27587127685547,
- 20.88446617126465,
- 71.37139892578125,
- -84.96932220458984,
- -88.97057342529297,
- 77.58269500732422,
- 91.03327178955078
- ],
- "type": "float32"
- }
- },
- "options": {
- "upper": true
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 84.9194564819336,
- -86.21631622314453,
- 50.38116455078125,
- 0,
- -94.51172637939453,
- -21.42218589782715,
- 24.678754806518555,
- -50.355342864990234,
- -37.015724182128906,
- 0,
- 73.36241149902344,
- -75.12358856201172,
- 41.64348602294922,
- 58.862911224365234,
- -29.916187286376953,
- 0,
- 42.132598876953125,
- -70.27587127685547,
- 20.88446617126465,
- 71.37139892578125,
- -84.96932220458984,
- 0,
- 77.58269500732422,
- 91.03327178955078
- ],
- "type": "float32"
- }
- },
- {
- "name": "triangular float32 4D tensor options.upper=false",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 84.9194564819336,
- -86.21631622314453,
- 50.38116455078125,
- -98.47772216796875,
- -94.51172637939453,
- -21.42218589782715,
- 24.678754806518555,
- -50.355342864990234,
- -37.015724182128906,
- 97.25071716308594,
- 73.36241149902344,
- -75.12358856201172,
- 41.64348602294922,
- 58.862911224365234,
- -29.916187286376953,
- 67.48285675048828,
- 42.132598876953125,
- -70.27587127685547,
- 20.88446617126465,
- 71.37139892578125,
- -84.96932220458984,
- -88.97057342529297,
- 77.58269500732422,
- 91.03327178955078
- ],
- "type": "float32"
- }
- },
- "options": {
- "upper": false
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 84.9194564819336,
- 0,
- 0,
- -98.47772216796875,
- -94.51172637939453,
- 0,
- 24.678754806518555,
- 0,
- 0,
- 97.25071716308594,
- 73.36241149902344,
- 0,
- 41.64348602294922,
- 0,
- 0,
- 67.48285675048828,
- 42.132598876953125,
- 0,
- 20.88446617126465,
- 0,
- 0,
- -88.97057342529297,
- 77.58269500732422,
- 0
- ],
- "type": "float32"
- }
- },
- {
- "name": "triangular float32 4D tensor explict options.diagonal=0",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 84.9194564819336,
- -86.21631622314453,
- 50.38116455078125,
- -98.47772216796875,
- -94.51172637939453,
- -21.42218589782715,
- 24.678754806518555,
- -50.355342864990234,
- -37.015724182128906,
- 97.25071716308594,
- 73.36241149902344,
- -75.12358856201172,
- 41.64348602294922,
- 58.862911224365234,
- -29.916187286376953,
- 67.48285675048828,
- 42.132598876953125,
- -70.27587127685547,
- 20.88446617126465,
- 71.37139892578125,
- -84.96932220458984,
- -88.97057342529297,
- 77.58269500732422,
- 91.03327178955078
- ],
- "type": "float32"
- }
- },
- "options": {
- "diagonal": 0
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 84.9194564819336,
- -86.21631622314453,
- 50.38116455078125,
- 0,
- -94.51172637939453,
- -21.42218589782715,
- 24.678754806518555,
- -50.355342864990234,
- -37.015724182128906,
- 0,
- 73.36241149902344,
- -75.12358856201172,
- 41.64348602294922,
- 58.862911224365234,
- -29.916187286376953,
- 0,
- 42.132598876953125,
- -70.27587127685547,
- 20.88446617126465,
- 71.37139892578125,
- -84.96932220458984,
- 0,
- 77.58269500732422,
- 91.03327178955078
- ],
- "type": "float32"
- }
- },
- {
- "name": "triangular float32 4D tensor options.diagonal=1",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 84.9194564819336,
- -86.21631622314453,
- 50.38116455078125,
- -98.47772216796875,
- -94.51172637939453,
- -21.42218589782715,
- 24.678754806518555,
- -50.355342864990234,
- -37.015724182128906,
- 97.25071716308594,
- 73.36241149902344,
- -75.12358856201172,
- 41.64348602294922,
- 58.862911224365234,
- -29.916187286376953,
- 67.48285675048828,
- 42.132598876953125,
- -70.27587127685547,
- 20.88446617126465,
- 71.37139892578125,
- -84.96932220458984,
- -88.97057342529297,
- 77.58269500732422,
- 91.03327178955078
- ],
- "type": "float32"
- }
- },
- "options": {
- "diagonal": 1
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 0,
- -86.21631622314453,
- 50.38116455078125,
- 0,
- 0,
- -21.42218589782715,
- 0,
- -50.355342864990234,
- -37.015724182128906,
- 0,
- 0,
- -75.12358856201172,
- 0,
- 58.862911224365234,
- -29.916187286376953,
- 0,
- 0,
- -70.27587127685547,
- 0,
- 71.37139892578125,
- -84.96932220458984,
- 0,
- 0,
- 91.03327178955078
- ],
- "type": "float32"
- }
- },
- {
- "name": "triangular float32 4D tensor options.diagonal=-1",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 84.9194564819336,
- -86.21631622314453,
- 50.38116455078125,
- -98.47772216796875,
- -94.51172637939453,
- -21.42218589782715,
- 24.678754806518555,
- -50.355342864990234,
- -37.015724182128906,
- 97.25071716308594,
- 73.36241149902344,
- -75.12358856201172,
- 41.64348602294922,
- 58.862911224365234,
- -29.916187286376953,
- 67.48285675048828,
- 42.132598876953125,
- -70.27587127685547,
- 20.88446617126465,
- 71.37139892578125,
- -84.96932220458984,
- -88.97057342529297,
- 77.58269500732422,
- 91.03327178955078
- ],
- "type": "float32"
- }
- },
- "options": {
- "diagonal": -1
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 84.9194564819336,
- -86.21631622314453,
- 50.38116455078125,
- -98.47772216796875,
- -94.51172637939453,
- -21.42218589782715,
- 24.678754806518555,
- -50.355342864990234,
- -37.015724182128906,
- 97.25071716308594,
- 73.36241149902344,
- -75.12358856201172,
- 41.64348602294922,
- 58.862911224365234,
- -29.916187286376953,
- 67.48285675048828,
- 42.132598876953125,
- -70.27587127685547,
- 20.88446617126465,
- 71.37139892578125,
- -84.96932220458984,
- -88.97057342529297,
- 77.58269500732422,
- 91.03327178955078
- ],
- "type": "float32"
- }
- },
- {
- "name": "triangular float32 4D tensor fully zero options.diagonal=3",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 84.9194564819336,
- -86.21631622314453,
- 50.38116455078125,
- -98.47772216796875,
- -94.51172637939453,
- -21.42218589782715,
- 24.678754806518555,
- -50.355342864990234,
- -37.015724182128906,
- 97.25071716308594,
- 73.36241149902344,
- -75.12358856201172,
- 41.64348602294922,
- 58.862911224365234,
- -29.916187286376953,
- 67.48285675048828,
- 42.132598876953125,
- -70.27587127685547,
- 20.88446617126465,
- 71.37139892578125,
- -84.96932220458984,
- -88.97057342529297,
- 77.58269500732422,
- 91.03327178955078
- ],
- "type": "float32"
- }
- },
- "options": {
- "diagonal": 3
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- "type": "float32"
- }
- },
- {
- "name": "triangular float32 4D tensor fully copied options.diagonal=-2",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 84.9194564819336,
- -86.21631622314453,
- 50.38116455078125,
- -98.47772216796875,
- -94.51172637939453,
- -21.42218589782715,
- 24.678754806518555,
- -50.355342864990234,
- -37.015724182128906,
- 97.25071716308594,
- 73.36241149902344,
- -75.12358856201172,
- 41.64348602294922,
- 58.862911224365234,
- -29.916187286376953,
- 67.48285675048828,
- 42.132598876953125,
- -70.27587127685547,
- 20.88446617126465,
- 71.37139892578125,
- -84.96932220458984,
- -88.97057342529297,
- 77.58269500732422,
- 91.03327178955078
- ],
- "type": "float32"
- }
- },
- "options": {
- "diagonal": -2
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 84.9194564819336,
- -86.21631622314453,
- 50.38116455078125,
- -98.47772216796875,
- -94.51172637939453,
- -21.42218589782715,
- 24.678754806518555,
- -50.355342864990234,
- -37.015724182128906,
- 97.25071716308594,
- 73.36241149902344,
- -75.12358856201172,
- 41.64348602294922,
- 58.862911224365234,
- -29.916187286376953,
- 67.48285675048828,
- 42.132598876953125,
- -70.27587127685547,
- 20.88446617126465,
- 71.37139892578125,
- -84.96932220458984,
- -88.97057342529297,
- 77.58269500732422,
- 91.03327178955078
- ],
- "type": "float32"
- }
- },
- {
- "name": "triangular float32 4D tensor options.upper=true options.diagonal=1",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 84.9194564819336,
- -86.21631622314453,
- 50.38116455078125,
- -98.47772216796875,
- -94.51172637939453,
- -21.42218589782715,
- 24.678754806518555,
- -50.355342864990234,
- -37.015724182128906,
- 97.25071716308594,
- 73.36241149902344,
- -75.12358856201172,
- 41.64348602294922,
- 58.862911224365234,
- -29.916187286376953,
- 67.48285675048828,
- 42.132598876953125,
- -70.27587127685547,
- 20.88446617126465,
- 71.37139892578125,
- -84.96932220458984,
- -88.97057342529297,
- 77.58269500732422,
- 91.03327178955078
- ],
- "type": "float32"
- }
- },
- "options": {
- "upper": true,
- "diagonal": 1
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 0,
- -86.21631622314453,
- 50.38116455078125,
- 0,
- 0,
- -21.42218589782715,
- 0,
- -50.355342864990234,
- -37.015724182128906,
- 0,
- 0,
- -75.12358856201172,
- 0,
- 58.862911224365234,
- -29.916187286376953,
- 0,
- 0,
- -70.27587127685547,
- 0,
- 71.37139892578125,
- -84.96932220458984,
- 0,
- 0,
- 91.03327178955078
- ],
- "type": "float32"
- }
- },
- {
- "name": "triangular float32 4D tensor options.upper=false options.diagonal=1",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 84.9194564819336,
- -86.21631622314453,
- 50.38116455078125,
- -98.47772216796875,
- -94.51172637939453,
- -21.42218589782715,
- 24.678754806518555,
- -50.355342864990234,
- -37.015724182128906,
- 97.25071716308594,
- 73.36241149902344,
- -75.12358856201172,
- 41.64348602294922,
- 58.862911224365234,
- -29.916187286376953,
- 67.48285675048828,
- 42.132598876953125,
- -70.27587127685547,
- 20.88446617126465,
- 71.37139892578125,
- -84.96932220458984,
- -88.97057342529297,
- 77.58269500732422,
- 91.03327178955078
- ],
- "type": "float32"
- }
- },
- "options": {
- "upper": false,
- "diagonal": 1
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 84.9194564819336,
- -86.21631622314453,
- 0,
- -98.47772216796875,
- -94.51172637939453,
- -21.42218589782715,
- 24.678754806518555,
- -50.355342864990234,
- 0,
- 97.25071716308594,
- 73.36241149902344,
- -75.12358856201172,
- 41.64348602294922,
- 58.862911224365234,
- 0,
- 67.48285675048828,
- 42.132598876953125,
- -70.27587127685547,
- 20.88446617126465,
- 71.37139892578125,
- 0,
- -88.97057342529297,
- 77.58269500732422,
- 91.03327178955078
- ],
- "type": "float32"
- }
- },
- {
- "name": "triangular float32 4D tensor options.upper=false options.diagonal=-1",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 84.9194564819336,
- -86.21631622314453,
- 50.38116455078125,
- -98.47772216796875,
- -94.51172637939453,
- -21.42218589782715,
- 24.678754806518555,
- -50.355342864990234,
- -37.015724182128906,
- 97.25071716308594,
- 73.36241149902344,
- -75.12358856201172,
- 41.64348602294922,
- 58.862911224365234,
- -29.916187286376953,
- 67.48285675048828,
- 42.132598876953125,
- -70.27587127685547,
- 20.88446617126465,
- 71.37139892578125,
- -84.96932220458984,
- -88.97057342529297,
- 77.58269500732422,
- 91.03327178955078
- ],
- "type": "float32"
- }
- },
- "options": {
- "upper": false,
- "diagonal": -1
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 0,
- 0,
- 0,
- -98.47772216796875,
- 0,
- 0,
- 0,
- 0,
- 0,
- 97.25071716308594,
- 0,
- 0,
- 0,
- 0,
- 0,
- 67.48285675048828,
- 0,
- 0,
- 0,
- 0,
- 0,
- -88.97057342529297,
- 0,
- 0
- ],
- "type": "float32"
- }
- },
- {
- "name": "triangular float32 4D tensor fully copied options.upper=false options.diagonal=3",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 84.9194564819336,
- -86.21631622314453,
- 50.38116455078125,
- -98.47772216796875,
- -94.51172637939453,
- -21.42218589782715,
- 24.678754806518555,
- -50.355342864990234,
- -37.015724182128906,
- 97.25071716308594,
- 73.36241149902344,
- -75.12358856201172,
- 41.64348602294922,
- 58.862911224365234,
- -29.916187286376953,
- 67.48285675048828,
- 42.132598876953125,
- -70.27587127685547,
- 20.88446617126465,
- 71.37139892578125,
- -84.96932220458984,
- -88.97057342529297,
- 77.58269500732422,
- 91.03327178955078
- ],
- "type": "float32"
- }
- },
- "options": {
- "upper": false,
- "diagonal": 3
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 84.9194564819336,
- -86.21631622314453,
- 50.38116455078125,
- -98.47772216796875,
- -94.51172637939453,
- -21.42218589782715,
- 24.678754806518555,
- -50.355342864990234,
- -37.015724182128906,
- 97.25071716308594,
- 73.36241149902344,
- -75.12358856201172,
- 41.64348602294922,
- 58.862911224365234,
- -29.916187286376953,
- 67.48285675048828,
- 42.132598876953125,
- -70.27587127685547,
- 20.88446617126465,
- 71.37139892578125,
- -84.96932220458984,
- -88.97057342529297,
- 77.58269500732422,
- 91.03327178955078
- ],
- "type": "float32"
- }
- },
- {
- "name": "triangular float32 4D tensor fully zero options.upper=false options.diagonal=-2",
- "inputs": {
- "input": {
- "shape": [2, 2, 2, 3],
- "data": [
- 84.9194564819336,
- -86.21631622314453,
- 50.38116455078125,
- -98.47772216796875,
- -94.51172637939453,
- -21.42218589782715,
- 24.678754806518555,
- -50.355342864990234,
- -37.015724182128906,
- 97.25071716308594,
- 73.36241149902344,
- -75.12358856201172,
- 41.64348602294922,
- 58.862911224365234,
- -29.916187286376953,
- 67.48285675048828,
- 42.132598876953125,
- -70.27587127685547,
- 20.88446617126465,
- 71.37139892578125,
- -84.96932220458984,
- -88.97057342529297,
- 77.58269500732422,
- 91.03327178955078
- ],
- "type": "float32"
- }
- },
- "options": {
- "upper": false,
- "diagonal": -2
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/test_data/where.json b/tests/wpt/tests/webnn/resources/test_data/where.json
deleted file mode 100644
index 7c55b3171ae..00000000000
--- a/tests/wpt/tests/webnn/resources/test_data/where.json
+++ /dev/null
@@ -1,1817 +0,0 @@
-{
- "tests": [
- {
- "name": "where float32 0D scalars",
- "inputs": {
- "condition": {
- "shape": [],
- "data": [
- 247
- ],
- "type": "uint8"
- },
- "trueValues": {
- "shape": [],
- "data": [
- -22.83924102783203
- ],
- "type": "float32"
- },
- "falseValues": {
- "shape": [],
- "data": [
- -50.02232360839844
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [],
- "data": [
- -22.83924102783203
- ],
- "type": "float32"
- }
- },
- {
- "name": "where float32 1D constant tensors",
- "inputs": {
- "condition": {
- "shape": [24],
- "data": [
- 241,
- 0,
- 85,
- 0,
- 227,
- 51,
- 202,
- 0,
- 104,
- 227,
- 129,
- 129,
- 175,
- 134,
- 130,
- 140,
- 103,
- 46,
- 158,
- 17,
- 0,
- 41,
- 94,
- 0
- ],
- "type": "uint8",
- "constant": true
- },
- "trueValues": {
- "shape": [24],
- "data": [
- 70.27151489257812,
- 89.99047088623047,
- -1.5351932048797607,
- -83.77035522460938,
- 29.59670639038086,
- -37.10446548461914,
- -6.663239002227783,
- -83.15333557128906,
- -90.47624206542969,
- -45.470706939697266,
- 50.38861083984375,
- 46.510799407958984,
- 47.503013610839844,
- -21.95842933654785,
- 42.89878463745117,
- -76.8262710571289,
- 67.0030746459961,
- 40.09717559814453,
- -29.081029891967773,
- -12.19106674194336,
- -10.8577880859375,
- -23.302522659301758,
- 30.851404190063477,
- -58.82704544067383
- ],
- "type": "float32",
- "constant": true
- },
- "falseValues": {
- "shape": [24],
- "data": [
- 90.44255065917969,
- 66.7642593383789,
- -39.82423782348633,
- -21.683168411254883,
- -67.3449478149414,
- -46.46003341674805,
- -55.907073974609375,
- 65.5730209350586,
- 35.14354705810547,
- 11.960981369018555,
- 76.65287780761719,
- 60.741416931152344,
- -93.93305206298828,
- -30.397233963012695,
- 34.315250396728516,
- 7.7088470458984375,
- -82.2353286743164,
- 91.12223052978516,
- 22.937334060668945,
- 74.97810363769531,
- 18.877336502075195,
- 62.31299591064453,
- 48.867103576660156,
- -75.41789245605469
- ],
- "type": "float32",
- "constant": true
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- 70.27151489257812,
- 66.7642593383789,
- -1.5351932048797607,
- -21.683168411254883,
- 29.59670639038086,
- -37.10446548461914,
- -6.663239002227783,
- 65.5730209350586,
- -90.47624206542969,
- -45.470706939697266,
- 50.38861083984375,
- 46.510799407958984,
- 47.503013610839844,
- -21.95842933654785,
- 42.89878463745117,
- -76.8262710571289,
- 67.0030746459961,
- 40.09717559814453,
- -29.081029891967773,
- -12.19106674194336,
- 18.877336502075195,
- -23.302522659301758,
- 30.851404190063477,
- -75.41789245605469
- ],
- "type": "float32"
- }
- },
- {
- "name": "where float32 1D tensors",
- "inputs": {
- "condition": {
- "shape": [24],
- "data": [
- 241,
- 0,
- 85,
- 0,
- 227,
- 51,
- 202,
- 0,
- 104,
- 227,
- 129,
- 129,
- 175,
- 134,
- 130,
- 140,
- 103,
- 46,
- 158,
- 17,
- 0,
- 41,
- 94,
- 0
- ],
- "type": "uint8"
- },
- "trueValues": {
- "shape": [24],
- "data": [
- 70.27151489257812,
- 89.99047088623047,
- -1.5351932048797607,
- -83.77035522460938,
- 29.59670639038086,
- -37.10446548461914,
- -6.663239002227783,
- -83.15333557128906,
- -90.47624206542969,
- -45.470706939697266,
- 50.38861083984375,
- 46.510799407958984,
- 47.503013610839844,
- -21.95842933654785,
- 42.89878463745117,
- -76.8262710571289,
- 67.0030746459961,
- 40.09717559814453,
- -29.081029891967773,
- -12.19106674194336,
- -10.8577880859375,
- -23.302522659301758,
- 30.851404190063477,
- -58.82704544067383
- ],
- "type": "float32"
- },
- "falseValues": {
- "shape": [24],
- "data": [
- 90.44255065917969,
- 66.7642593383789,
- -39.82423782348633,
- -21.683168411254883,
- -67.3449478149414,
- -46.46003341674805,
- -55.907073974609375,
- 65.5730209350586,
- 35.14354705810547,
- 11.960981369018555,
- 76.65287780761719,
- 60.741416931152344,
- -93.93305206298828,
- -30.397233963012695,
- 34.315250396728516,
- 7.7088470458984375,
- -82.2353286743164,
- 91.12223052978516,
- 22.937334060668945,
- 74.97810363769531,
- 18.877336502075195,
- 62.31299591064453,
- 48.867103576660156,
- -75.41789245605469
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [24],
- "data": [
- 70.27151489257812,
- 66.7642593383789,
- -1.5351932048797607,
- -21.683168411254883,
- 29.59670639038086,
- -37.10446548461914,
- -6.663239002227783,
- 65.5730209350586,
- -90.47624206542969,
- -45.470706939697266,
- 50.38861083984375,
- 46.510799407958984,
- 47.503013610839844,
- -21.95842933654785,
- 42.89878463745117,
- -76.8262710571289,
- 67.0030746459961,
- 40.09717559814453,
- -29.081029891967773,
- -12.19106674194336,
- 18.877336502075195,
- -23.302522659301758,
- 30.851404190063477,
- -75.41789245605469
- ],
- "type": "float32"
- }
- },
- {
- "name": "where float32 2D tensors",
- "inputs": {
- "condition": {
- "shape": [4, 6],
- "data": [
- 241,
- 0,
- 85,
- 0,
- 227,
- 51,
- 202,
- 0,
- 104,
- 227,
- 129,
- 129,
- 175,
- 134,
- 130,
- 140,
- 103,
- 46,
- 158,
- 17,
- 0,
- 41,
- 94,
- 0
- ],
- "type": "uint8"
- },
- "trueValues": {
- "shape": [4, 6],
- "data": [
- 70.27151489257812,
- 89.99047088623047,
- -1.5351932048797607,
- -83.77035522460938,
- 29.59670639038086,
- -37.10446548461914,
- -6.663239002227783,
- -83.15333557128906,
- -90.47624206542969,
- -45.470706939697266,
- 50.38861083984375,
- 46.510799407958984,
- 47.503013610839844,
- -21.95842933654785,
- 42.89878463745117,
- -76.8262710571289,
- 67.0030746459961,
- 40.09717559814453,
- -29.081029891967773,
- -12.19106674194336,
- -10.8577880859375,
- -23.302522659301758,
- 30.851404190063477,
- -58.82704544067383
- ],
- "type": "float32"
- },
- "falseValues": {
- "shape": [4, 6],
- "data": [
- 90.44255065917969,
- 66.7642593383789,
- -39.82423782348633,
- -21.683168411254883,
- -67.3449478149414,
- -46.46003341674805,
- -55.907073974609375,
- 65.5730209350586,
- 35.14354705810547,
- 11.960981369018555,
- 76.65287780761719,
- 60.741416931152344,
- -93.93305206298828,
- -30.397233963012695,
- 34.315250396728516,
- 7.7088470458984375,
- -82.2353286743164,
- 91.12223052978516,
- 22.937334060668945,
- 74.97810363769531,
- 18.877336502075195,
- 62.31299591064453,
- 48.867103576660156,
- -75.41789245605469
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape":[4, 6],
- "data": [
- 70.27151489257812,
- 66.7642593383789,
- -1.5351932048797607,
- -21.683168411254883,
- 29.59670639038086,
- -37.10446548461914,
- -6.663239002227783,
- 65.5730209350586,
- -90.47624206542969,
- -45.470706939697266,
- 50.38861083984375,
- 46.510799407958984,
- 47.503013610839844,
- -21.95842933654785,
- 42.89878463745117,
- -76.8262710571289,
- 67.0030746459961,
- 40.09717559814453,
- -29.081029891967773,
- -12.19106674194336,
- 18.877336502075195,
- -23.302522659301758,
- 30.851404190063477,
- -75.41789245605469
- ],
- "type": "float32"
- }
- },
- {
- "name": "where float32 3D tensors",
- "inputs": {
- "condition": {
- "shape": [2, 3, 4],
- "data": [
- 241,
- 0,
- 85,
- 0,
- 227,
- 51,
- 202,
- 0,
- 104,
- 227,
- 129,
- 129,
- 175,
- 134,
- 130,
- 140,
- 103,
- 46,
- 158,
- 17,
- 0,
- 41,
- 94,
- 0
- ],
- "type": "uint8"
- },
- "trueValues": {
- "shape": [2, 3, 4],
- "data": [
- 70.27151489257812,
- 89.99047088623047,
- -1.5351932048797607,
- -83.77035522460938,
- 29.59670639038086,
- -37.10446548461914,
- -6.663239002227783,
- -83.15333557128906,
- -90.47624206542969,
- -45.470706939697266,
- 50.38861083984375,
- 46.510799407958984,
- 47.503013610839844,
- -21.95842933654785,
- 42.89878463745117,
- -76.8262710571289,
- 67.0030746459961,
- 40.09717559814453,
- -29.081029891967773,
- -12.19106674194336,
- -10.8577880859375,
- -23.302522659301758,
- 30.851404190063477,
- -58.82704544067383
- ],
- "type": "float32"
- },
- "falseValues": {
- "shape": [2, 3, 4],
- "data": [
- 90.44255065917969,
- 66.7642593383789,
- -39.82423782348633,
- -21.683168411254883,
- -67.3449478149414,
- -46.46003341674805,
- -55.907073974609375,
- 65.5730209350586,
- 35.14354705810547,
- 11.960981369018555,
- 76.65287780761719,
- 60.741416931152344,
- -93.93305206298828,
- -30.397233963012695,
- 34.315250396728516,
- 7.7088470458984375,
- -82.2353286743164,
- 91.12223052978516,
- 22.937334060668945,
- 74.97810363769531,
- 18.877336502075195,
- 62.31299591064453,
- 48.867103576660156,
- -75.41789245605469
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 3, 4],
- "data": [
- 70.27151489257812,
- 66.7642593383789,
- -1.5351932048797607,
- -21.683168411254883,
- 29.59670639038086,
- -37.10446548461914,
- -6.663239002227783,
- 65.5730209350586,
- -90.47624206542969,
- -45.470706939697266,
- 50.38861083984375,
- 46.510799407958984,
- 47.503013610839844,
- -21.95842933654785,
- 42.89878463745117,
- -76.8262710571289,
- 67.0030746459961,
- 40.09717559814453,
- -29.081029891967773,
- -12.19106674194336,
- 18.877336502075195,
- -23.302522659301758,
- 30.851404190063477,
- -75.41789245605469
- ],
- "type": "float32"
- }
- },
- {
- "name": "where float32 4D tensors",
- "inputs": {
- "condition": {
- "shape": [2, 2, 2, 3],
- "data": [
- 241,
- 0,
- 85,
- 0,
- 227,
- 51,
- 202,
- 0,
- 104,
- 227,
- 129,
- 129,
- 175,
- 134,
- 130,
- 140,
- 103,
- 46,
- 158,
- 17,
- 0,
- 41,
- 94,
- 0
- ],
- "type": "uint8"
- },
- "trueValues": {
- "shape": [2, 2, 2, 3],
- "data": [
- 70.27151489257812,
- 89.99047088623047,
- -1.5351932048797607,
- -83.77035522460938,
- 29.59670639038086,
- -37.10446548461914,
- -6.663239002227783,
- -83.15333557128906,
- -90.47624206542969,
- -45.470706939697266,
- 50.38861083984375,
- 46.510799407958984,
- 47.503013610839844,
- -21.95842933654785,
- 42.89878463745117,
- -76.8262710571289,
- 67.0030746459961,
- 40.09717559814453,
- -29.081029891967773,
- -12.19106674194336,
- -10.8577880859375,
- -23.302522659301758,
- 30.851404190063477,
- -58.82704544067383
- ],
- "type": "float32"
- },
- "falseValues": {
- "shape": [2, 2, 2, 3],
- "data": [
- 90.44255065917969,
- 66.7642593383789,
- -39.82423782348633,
- -21.683168411254883,
- -67.3449478149414,
- -46.46003341674805,
- -55.907073974609375,
- 65.5730209350586,
- 35.14354705810547,
- 11.960981369018555,
- 76.65287780761719,
- 60.741416931152344,
- -93.93305206298828,
- -30.397233963012695,
- 34.315250396728516,
- 7.7088470458984375,
- -82.2353286743164,
- 91.12223052978516,
- 22.937334060668945,
- 74.97810363769531,
- 18.877336502075195,
- 62.31299591064453,
- 48.867103576660156,
- -75.41789245605469
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 70.27151489257812,
- 66.7642593383789,
- -1.5351932048797607,
- -21.683168411254883,
- 29.59670639038086,
- -37.10446548461914,
- -6.663239002227783,
- 65.5730209350586,
- -90.47624206542969,
- -45.470706939697266,
- 50.38861083984375,
- 46.510799407958984,
- 47.503013610839844,
- -21.95842933654785,
- 42.89878463745117,
- -76.8262710571289,
- 67.0030746459961,
- 40.09717559814453,
- -29.081029891967773,
- -12.19106674194336,
- 18.877336502075195,
- -23.302522659301758,
- 30.851404190063477,
- -75.41789245605469
- ],
- "type": "float32"
- }
- },
- {
- "name": "where float32 5D tensors",
- "inputs": {
- "condition": {
- "shape": [2, 2, 1, 2, 3],
- "data": [
- 241,
- 0,
- 85,
- 0,
- 227,
- 51,
- 202,
- 0,
- 104,
- 227,
- 129,
- 129,
- 175,
- 134,
- 130,
- 140,
- 103,
- 46,
- 158,
- 17,
- 0,
- 41,
- 94,
- 0
- ],
- "type": "uint8"
- },
- "trueValues": {
- "shape": [2, 2, 1, 2, 3],
- "data": [
- 70.27151489257812,
- 89.99047088623047,
- -1.5351932048797607,
- -83.77035522460938,
- 29.59670639038086,
- -37.10446548461914,
- -6.663239002227783,
- -83.15333557128906,
- -90.47624206542969,
- -45.470706939697266,
- 50.38861083984375,
- 46.510799407958984,
- 47.503013610839844,
- -21.95842933654785,
- 42.89878463745117,
- -76.8262710571289,
- 67.0030746459961,
- 40.09717559814453,
- -29.081029891967773,
- -12.19106674194336,
- -10.8577880859375,
- -23.302522659301758,
- 30.851404190063477,
- -58.82704544067383
- ],
- "type": "float32"
- },
- "falseValues": {
- "shape": [2, 2, 1, 2, 3],
- "data": [
- 90.44255065917969,
- 66.7642593383789,
- -39.82423782348633,
- -21.683168411254883,
- -67.3449478149414,
- -46.46003341674805,
- -55.907073974609375,
- 65.5730209350586,
- 35.14354705810547,
- 11.960981369018555,
- 76.65287780761719,
- 60.741416931152344,
- -93.93305206298828,
- -30.397233963012695,
- 34.315250396728516,
- 7.7088470458984375,
- -82.2353286743164,
- 91.12223052978516,
- 22.937334060668945,
- 74.97810363769531,
- 18.877336502075195,
- 62.31299591064453,
- 48.867103576660156,
- -75.41789245605469
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 1, 2, 3],
- "data": [
- 70.27151489257812,
- 66.7642593383789,
- -1.5351932048797607,
- -21.683168411254883,
- 29.59670639038086,
- -37.10446548461914,
- -6.663239002227783,
- 65.5730209350586,
- -90.47624206542969,
- -45.470706939697266,
- 50.38861083984375,
- 46.510799407958984,
- 47.503013610839844,
- -21.95842933654785,
- 42.89878463745117,
- -76.8262710571289,
- 67.0030746459961,
- 40.09717559814453,
- -29.081029891967773,
- -12.19106674194336,
- 18.877336502075195,
- -23.302522659301758,
- 30.851404190063477,
- -75.41789245605469
- ],
- "type": "float32"
- }
- },
- {
- "name": "where float32 4D tensors only broadcast condition 0D to 4D",
- "inputs": {
- "condition": {
- "shape": [],
- "data": [
- 247
- ],
- "type": "uint8"
- },
- "trueValues": {
- "shape": [2, 2, 2, 3],
- "data": [
- 70.27151489257812,
- 89.99047088623047,
- -1.5351932048797607,
- -83.77035522460938,
- 29.59670639038086,
- -37.10446548461914,
- -6.663239002227783,
- -83.15333557128906,
- -90.47624206542969,
- -45.470706939697266,
- 50.38861083984375,
- 46.510799407958984,
- 47.503013610839844,
- -21.95842933654785,
- 42.89878463745117,
- -76.8262710571289,
- 67.0030746459961,
- 40.09717559814453,
- -29.081029891967773,
- -12.19106674194336,
- -10.8577880859375,
- -23.302522659301758,
- 30.851404190063477,
- -58.82704544067383
- ],
- "type": "float32"
- },
- "falseValues": {
- "shape": [2, 2, 2, 3],
- "data": [
- 90.44255065917969,
- 66.7642593383789,
- -39.82423782348633,
- -21.683168411254883,
- -67.3449478149414,
- -46.46003341674805,
- -55.907073974609375,
- 65.5730209350586,
- 35.14354705810547,
- 11.960981369018555,
- 76.65287780761719,
- 60.741416931152344,
- -93.93305206298828,
- -30.397233963012695,
- 34.315250396728516,
- 7.7088470458984375,
- -82.2353286743164,
- 91.12223052978516,
- 22.937334060668945,
- 74.97810363769531,
- 18.877336502075195,
- 62.31299591064453,
- 48.867103576660156,
- -75.41789245605469
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 70.27151489257812,
- 89.99047088623047,
- -1.5351932048797607,
- -83.77035522460938,
- 29.59670639038086,
- -37.10446548461914,
- -6.663239002227783,
- -83.15333557128906,
- -90.47624206542969,
- -45.470706939697266,
- 50.38861083984375,
- 46.510799407958984,
- 47.503013610839844,
- -21.95842933654785,
- 42.89878463745117,
- -76.8262710571289,
- 67.0030746459961,
- 40.09717559814453,
- -29.081029891967773,
- -12.19106674194336,
- -10.8577880859375,
- -23.302522659301758,
- 30.851404190063477,
- -58.82704544067383
- ],
- "type": "float32"
- }
- },
- {
- "name": "where float32 4D tensors only broadcast condition 1D to 4D",
- "inputs": {
- "condition": {
- "shape": [3],
- "data": [
- 253,
- 222,
- 0
- ],
- "type": "uint8"
- },
- "trueValues": {
- "shape": [2, 2, 2, 3],
- "data": [
- 70.27151489257812,
- 89.99047088623047,
- -1.5351932048797607,
- -83.77035522460938,
- 29.59670639038086,
- -37.10446548461914,
- -6.663239002227783,
- -83.15333557128906,
- -90.47624206542969,
- -45.470706939697266,
- 50.38861083984375,
- 46.510799407958984,
- 47.503013610839844,
- -21.95842933654785,
- 42.89878463745117,
- -76.8262710571289,
- 67.0030746459961,
- 40.09717559814453,
- -29.081029891967773,
- -12.19106674194336,
- -10.8577880859375,
- -23.302522659301758,
- 30.851404190063477,
- -58.82704544067383
- ],
- "type": "float32"
- },
- "falseValues": {
- "shape": [2, 2, 2, 3],
- "data": [
- 90.44255065917969,
- 66.7642593383789,
- -39.82423782348633,
- -21.683168411254883,
- -67.3449478149414,
- -46.46003341674805,
- -55.907073974609375,
- 65.5730209350586,
- 35.14354705810547,
- 11.960981369018555,
- 76.65287780761719,
- 60.741416931152344,
- -93.93305206298828,
- -30.397233963012695,
- 34.315250396728516,
- 7.7088470458984375,
- -82.2353286743164,
- 91.12223052978516,
- 22.937334060668945,
- 74.97810363769531,
- 18.877336502075195,
- 62.31299591064453,
- 48.867103576660156,
- -75.41789245605469
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 70.27151489257812,
- 89.99047088623047,
- -39.82423782348633,
- -83.77035522460938,
- 29.59670639038086,
- -46.46003341674805,
- -6.663239002227783,
- -83.15333557128906,
- 35.14354705810547,
- -45.470706939697266,
- 50.38861083984375,
- 60.741416931152344,
- 47.503013610839844,
- -21.95842933654785,
- 34.315250396728516,
- -76.8262710571289,
- 67.0030746459961,
- 91.12223052978516,
- -29.081029891967773,
- -12.19106674194336,
- 18.877336502075195,
- -23.302522659301758,
- 30.851404190063477,
- -75.41789245605469
- ],
- "type": "float32"
- }
- },
- {
- "name": "where float32 4D tensors only broadcast condition 2D to 4D",
- "inputs": {
- "condition": {
- "shape": [2, 1],
- "data": [
- 103,
- 0
- ],
- "type": "uint8"
- },
- "trueValues": {
- "shape": [2, 2, 2, 3],
- "data": [
- 70.27151489257812,
- 89.99047088623047,
- -1.5351932048797607,
- -83.77035522460938,
- 29.59670639038086,
- -37.10446548461914,
- -6.663239002227783,
- -83.15333557128906,
- -90.47624206542969,
- -45.470706939697266,
- 50.38861083984375,
- 46.510799407958984,
- 47.503013610839844,
- -21.95842933654785,
- 42.89878463745117,
- -76.8262710571289,
- 67.0030746459961,
- 40.09717559814453,
- -29.081029891967773,
- -12.19106674194336,
- -10.8577880859375,
- -23.302522659301758,
- 30.851404190063477,
- -58.82704544067383
- ],
- "type": "float32"
- },
- "falseValues": {
- "shape": [2, 2, 2, 3],
- "data": [
- 90.44255065917969,
- 66.7642593383789,
- -39.82423782348633,
- -21.683168411254883,
- -67.3449478149414,
- -46.46003341674805,
- -55.907073974609375,
- 65.5730209350586,
- 35.14354705810547,
- 11.960981369018555,
- 76.65287780761719,
- 60.741416931152344,
- -93.93305206298828,
- -30.397233963012695,
- 34.315250396728516,
- 7.7088470458984375,
- -82.2353286743164,
- 91.12223052978516,
- 22.937334060668945,
- 74.97810363769531,
- 18.877336502075195,
- 62.31299591064453,
- 48.867103576660156,
- -75.41789245605469
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 70.27151489257812,
- 89.99047088623047,
- -1.5351932048797607,
- -21.683168411254883,
- -67.3449478149414,
- -46.46003341674805,
- -6.663239002227783,
- -83.15333557128906,
- -90.47624206542969,
- 11.960981369018555,
- 76.65287780761719,
- 60.741416931152344,
- 47.503013610839844,
- -21.95842933654785,
- 42.89878463745117,
- 7.7088470458984375,
- -82.2353286743164,
- 91.12223052978516,
- -29.081029891967773,
- -12.19106674194336,
- -10.8577880859375,
- 62.31299591064453,
- 48.867103576660156,
- -75.41789245605469
- ],
- "type": "float32"
- }
- },
- {
- "name": "where float32 4D tensors only broadcast condition 3D to 4D",
- "inputs": {
- "condition": {
- "shape": [1, 2, 3],
- "data": [
- 235,
- 0,
- 93,
- 213,
- 0,
- 117
- ],
- "type": "uint8"
- },
- "trueValues": {
- "shape": [2, 2, 2, 3],
- "data": [
- 70.27151489257812,
- 89.99047088623047,
- -1.5351932048797607,
- -83.77035522460938,
- 29.59670639038086,
- -37.10446548461914,
- -6.663239002227783,
- -83.15333557128906,
- -90.47624206542969,
- -45.470706939697266,
- 50.38861083984375,
- 46.510799407958984,
- 47.503013610839844,
- -21.95842933654785,
- 42.89878463745117,
- -76.8262710571289,
- 67.0030746459961,
- 40.09717559814453,
- -29.081029891967773,
- -12.19106674194336,
- -10.8577880859375,
- -23.302522659301758,
- 30.851404190063477,
- -58.82704544067383
- ],
- "type": "float32"
- },
- "falseValues": {
- "shape": [2, 2, 2, 3],
- "data": [
- 90.44255065917969,
- 66.7642593383789,
- -39.82423782348633,
- -21.683168411254883,
- -67.3449478149414,
- -46.46003341674805,
- -55.907073974609375,
- 65.5730209350586,
- 35.14354705810547,
- 11.960981369018555,
- 76.65287780761719,
- 60.741416931152344,
- -93.93305206298828,
- -30.397233963012695,
- 34.315250396728516,
- 7.7088470458984375,
- -82.2353286743164,
- 91.12223052978516,
- 22.937334060668945,
- 74.97810363769531,
- 18.877336502075195,
- 62.31299591064453,
- 48.867103576660156,
- -75.41789245605469
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 70.27151489257812,
- 66.7642593383789,
- -1.5351932048797607,
- -83.77035522460938,
- -67.3449478149414,
- -37.10446548461914,
- -6.663239002227783,
- 65.5730209350586,
- -90.47624206542969,
- -45.470706939697266,
- 76.65287780761719,
- 46.510799407958984,
- 47.503013610839844,
- -30.397233963012695,
- 42.89878463745117,
- -76.8262710571289,
- -82.2353286743164,
- 40.09717559814453,
- -29.081029891967773,
- 74.97810363769531,
- -10.8577880859375,
- -23.302522659301758,
- 48.867103576660156,
- -58.82704544067383
- ],
- "type": "float32"
- }
- },
- {
- "name": "where float32 4D tensors only broadcast condition 4D to 4D",
- "inputs": {
- "condition": {
- "shape": [1, 2, 2, 1],
- "data": [
- 0,
- 165,
- 0,
- 90
- ],
- "type": "uint8"
- },
- "trueValues": {
- "shape": [2, 2, 2, 3],
- "data": [
- 70.27151489257812,
- 89.99047088623047,
- -1.5351932048797607,
- -83.77035522460938,
- 29.59670639038086,
- -37.10446548461914,
- -6.663239002227783,
- -83.15333557128906,
- -90.47624206542969,
- -45.470706939697266,
- 50.38861083984375,
- 46.510799407958984,
- 47.503013610839844,
- -21.95842933654785,
- 42.89878463745117,
- -76.8262710571289,
- 67.0030746459961,
- 40.09717559814453,
- -29.081029891967773,
- -12.19106674194336,
- -10.8577880859375,
- -23.302522659301758,
- 30.851404190063477,
- -58.82704544067383
- ],
- "type": "float32"
- },
- "falseValues": {
- "shape": [2, 2, 2, 3],
- "data": [
- 90.44255065917969,
- 66.7642593383789,
- -39.82423782348633,
- -21.683168411254883,
- -67.3449478149414,
- -46.46003341674805,
- -55.907073974609375,
- 65.5730209350586,
- 35.14354705810547,
- 11.960981369018555,
- 76.65287780761719,
- 60.741416931152344,
- -93.93305206298828,
- -30.397233963012695,
- 34.315250396728516,
- 7.7088470458984375,
- -82.2353286743164,
- 91.12223052978516,
- 22.937334060668945,
- 74.97810363769531,
- 18.877336502075195,
- 62.31299591064453,
- 48.867103576660156,
- -75.41789245605469
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 90.44255065917969,
- 66.7642593383789,
- -39.82423782348633,
- -83.77035522460938,
- 29.59670639038086,
- -37.10446548461914,
- -55.907073974609375,
- 65.5730209350586,
- 35.14354705810547,
- -45.470706939697266,
- 50.38861083984375,
- 46.510799407958984,
- -93.93305206298828,
- -30.397233963012695,
- 34.315250396728516,
- -76.8262710571289,
- 67.0030746459961,
- 40.09717559814453,
- 22.937334060668945,
- 74.97810363769531,
- 18.877336502075195,
- -23.302522659301758,
- 30.851404190063477,
- -58.82704544067383
- ],
- "type": "float32"
- }
- },
- {
- "name": "where float32 4D tensors only broadcast trueValues 2D to 4D",
- "inputs": {
- "condition": {
- "shape": [2, 2, 2, 3],
- "data": [
- 241,
- 0,
- 85,
- 0,
- 227,
- 51,
- 202,
- 0,
- 104,
- 227,
- 129,
- 129,
- 175,
- 134,
- 130,
- 140,
- 103,
- 46,
- 158,
- 17,
- 0,
- 41,
- 94,
- 0
- ],
- "type": "uint8"
- },
- "trueValues": {
- "shape": [2, 3],
- "data": [
- 38.77214050292969,
- 18.20477294921875,
- -11.542049407958984,
- -82.74693298339844,
- -18.61202621459961,
- -75.77534484863281
- ],
- "type": "float32"
- },
- "falseValues": {
- "shape": [2, 2, 2, 3],
- "data": [
- 90.44255065917969,
- 66.7642593383789,
- -39.82423782348633,
- -21.683168411254883,
- -67.3449478149414,
- -46.46003341674805,
- -55.907073974609375,
- 65.5730209350586,
- 35.14354705810547,
- 11.960981369018555,
- 76.65287780761719,
- 60.741416931152344,
- -93.93305206298828,
- -30.397233963012695,
- 34.315250396728516,
- 7.7088470458984375,
- -82.2353286743164,
- 91.12223052978516,
- 22.937334060668945,
- 74.97810363769531,
- 18.877336502075195,
- 62.31299591064453,
- 48.867103576660156,
- -75.41789245605469
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 38.77214050292969,
- 66.7642593383789,
- -11.542049407958984,
- -21.683168411254883,
- -18.61202621459961,
- -75.77534484863281,
- 38.77214050292969,
- 65.5730209350586,
- -11.542049407958984,
- -82.74693298339844,
- -18.61202621459961,
- -75.77534484863281,
- 38.77214050292969,
- 18.20477294921875,
- -11.542049407958984,
- -82.74693298339844,
- -18.61202621459961,
- -75.77534484863281,
- 38.77214050292969,
- 18.20477294921875,
- 18.877336502075195,
- -82.74693298339844,
- -18.61202621459961,
- -75.41789245605469
- ],
- "type": "float32"
- }
- },
- {
- "name": "where float32 4D tensors only broadcast trueValues 4D to 4D",
- "inputs": {
- "condition": {
- "shape": [2, 2, 2, 3],
- "data": [
- 241,
- 0,
- 85,
- 0,
- 227,
- 51,
- 202,
- 0,
- 104,
- 227,
- 129,
- 129,
- 175,
- 134,
- 130,
- 140,
- 103,
- 46,
- 158,
- 17,
- 0,
- 41,
- 94,
- 0
- ],
- "type": "uint8"
- },
- "trueValues": {
- "shape": [2, 2, 1, 1],
- "data": [
- -29.164173126220703,
- 32.200286865234375,
- -6.146966457366943,
- -24.822790145874023
- ],
- "type": "float32"
- },
- "falseValues": {
- "shape": [2, 2, 2, 3],
- "data": [
- 90.44255065917969,
- 66.7642593383789,
- -39.82423782348633,
- -21.683168411254883,
- -67.3449478149414,
- -46.46003341674805,
- -55.907073974609375,
- 65.5730209350586,
- 35.14354705810547,
- 11.960981369018555,
- 76.65287780761719,
- 60.741416931152344,
- -93.93305206298828,
- -30.397233963012695,
- 34.315250396728516,
- 7.7088470458984375,
- -82.2353286743164,
- 91.12223052978516,
- 22.937334060668945,
- 74.97810363769531,
- 18.877336502075195,
- 62.31299591064453,
- 48.867103576660156,
- -75.41789245605469
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- -29.164173126220703,
- 66.7642593383789,
- -29.164173126220703,
- -21.683168411254883,
- -29.164173126220703,
- -29.164173126220703,
- 32.200286865234375,
- 65.5730209350586,
- 32.200286865234375,
- 32.200286865234375,
- 32.200286865234375,
- 32.200286865234375,
- -6.146966457366943,
- -6.146966457366943,
- -6.146966457366943,
- -6.146966457366943,
- -6.146966457366943,
- -6.146966457366943,
- -24.822790145874023,
- -24.822790145874023,
- 18.877336502075195,
- -24.822790145874023,
- -24.822790145874023,
- -75.41789245605469
- ],
- "type": "float32"
- }
- },
- {
- "name": "where float32 4D tensors only broadcast falseValues 3D to 4D",
- "inputs": {
- "condition": {
- "shape": [2, 2, 2, 3],
- "data": [
- 241,
- 0,
- 85,
- 0,
- 227,
- 51,
- 202,
- 0,
- 104,
- 227,
- 129,
- 129,
- 175,
- 134,
- 130,
- 140,
- 103,
- 46,
- 158,
- 17,
- 0,
- 41,
- 94,
- 0
- ],
- "type": "uint8"
- },
- "trueValues": {
- "shape": [2, 2, 2, 3],
- "data": [
- 70.27151489257812,
- 89.99047088623047,
- -1.5351932048797607,
- -83.77035522460938,
- 29.59670639038086,
- -37.10446548461914,
- -6.663239002227783,
- -83.15333557128906,
- -90.47624206542969,
- -45.470706939697266,
- 50.38861083984375,
- 46.510799407958984,
- 47.503013610839844,
- -21.95842933654785,
- 42.89878463745117,
- -76.8262710571289,
- 67.0030746459961,
- 40.09717559814453,
- -29.081029891967773,
- -12.19106674194336,
- -10.8577880859375,
- -23.302522659301758,
- 30.851404190063477,
- -58.82704544067383
- ],
- "type": "float32"
- },
- "falseValues": {
- "shape": [2, 2, 1],
- "data": [
- -86.59848022460938,
- -67.72773742675781,
- -30.731334686279297,
- -93.49223327636719
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 70.27151489257812,
- -86.59848022460938,
- -1.5351932048797607,
- -67.72773742675781,
- 29.59670639038086,
- -37.10446548461914,
- -6.663239002227783,
- -30.731334686279297,
- -90.47624206542969,
- -45.470706939697266,
- 50.38861083984375,
- 46.510799407958984,
- 47.503013610839844,
- -21.95842933654785,
- 42.89878463745117,
- -76.8262710571289,
- 67.0030746459961,
- 40.09717559814453,
- -29.081029891967773,
- -12.19106674194336,
- -30.731334686279297,
- -23.302522659301758,
- 30.851404190063477,
- -93.49223327636719
- ],
- "type": "float32"
- }
- },
- {
- "name": "where float32 4D tensors only broadcast falseValues 4D to 4D",
- "inputs": {
- "condition": {
- "shape": [2, 2, 2, 3],
- "data": [
- 241,
- 0,
- 85,
- 0,
- 227,
- 51,
- 202,
- 0,
- 104,
- 227,
- 129,
- 129,
- 175,
- 134,
- 130,
- 140,
- 103,
- 46,
- 158,
- 17,
- 0,
- 41,
- 94,
- 0
- ],
- "type": "uint8"
- },
- "trueValues": {
- "shape": [2, 2, 2, 3],
- "data": [
- 70.27151489257812,
- 89.99047088623047,
- -1.5351932048797607,
- -83.77035522460938,
- 29.59670639038086,
- -37.10446548461914,
- -6.663239002227783,
- -83.15333557128906,
- -90.47624206542969,
- -45.470706939697266,
- 50.38861083984375,
- 46.510799407958984,
- 47.503013610839844,
- -21.95842933654785,
- 42.89878463745117,
- -76.8262710571289,
- 67.0030746459961,
- 40.09717559814453,
- -29.081029891967773,
- -12.19106674194336,
- -10.8577880859375,
- -23.302522659301758,
- 30.851404190063477,
- -58.82704544067383
- ],
- "type": "float32"
- },
- "falseValues": {
- "shape": [1, 2, 1, 3],
- "data": [
- 17.777414321899414,
- -1.9890096187591553,
- -57.28207015991211,
- -80.01390838623047,
- 66.87323760986328,
- -31.328258514404297
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 70.27151489257812,
- -1.9890096187591553,
- -1.5351932048797607,
- 17.777414321899414,
- 29.59670639038086,
- -37.10446548461914,
- -6.663239002227783,
- 66.87323760986328,
- -90.47624206542969,
- -45.470706939697266,
- 50.38861083984375,
- 46.510799407958984,
- 47.503013610839844,
- -21.95842933654785,
- 42.89878463745117,
- -76.8262710571289,
- 67.0030746459961,
- 40.09717559814453,
- -29.081029891967773,
- -12.19106674194336,
- -31.328258514404297,
- -23.302522659301758,
- 30.851404190063477,
- -31.328258514404297
- ],
- "type": "float32"
- }
- },
- {
- "name": "where float32 4D tensors all broadcast 4D",
- "inputs": {
- "condition": {
- "shape": [2, 1, 1, 1],
- "data": [
- 58,
- 217
- ],
- "type": "uint8"
- },
- "trueValues": {
- "shape": [2, 3],
- "data": [
- 38.77214050292969,
- 18.20477294921875,
- -11.542049407958984,
- -82.74693298339844,
- -18.61202621459961,
- -75.77534484863281
- ],
- "type": "float32"
- },
- "falseValues": {
- "shape": [2, 2, 1],
- "data":[
- -86.59848022460938,
- -67.72773742675781,
- -30.731334686279297,
- -93.49223327636719
- ],
- "type": "float32"
- }
- },
- "expected": {
- "name": "output",
- "shape": [2, 2, 2, 3],
- "data": [
- 38.77214050292969,
- 18.20477294921875,
- -11.542049407958984,
- -82.74693298339844,
- -18.61202621459961,
- -75.77534484863281,
- 38.77214050292969,
- 18.20477294921875,
- -11.542049407958984,
- -82.74693298339844,
- -18.61202621459961,
- -75.77534484863281,
- 38.77214050292969,
- 18.20477294921875,
- -11.542049407958984,
- -82.74693298339844,
- -18.61202621459961,
- -75.77534484863281,
- 38.77214050292969,
- 18.20477294921875,
- -11.542049407958984,
- -82.74693298339844,
- -18.61202621459961,
- -75.77534484863281
- ],
- "type": "float32"
- }
- }
- ]
-} \ No newline at end of file
diff --git a/tests/wpt/tests/webnn/resources/utils.js b/tests/wpt/tests/webnn/resources/utils.js
index 7f99e3e1593..e4a1e898598 100644
--- a/tests/wpt/tests/webnn/resources/utils.js
+++ b/tests/wpt/tests/webnn/resources/utils.js
@@ -1,38 +1,44 @@
'use strict';
-// https://webmachinelearning.github.io/webnn/#enumdef-mloperanddatatype
+// https://www.w3.org/TR/webnn/#enumdef-mloperanddatatype
const TypedArrayDict = {
- // workaround use Uint16 for Float16
+ float32: Float32Array,
+
+ // Proposal to add float16 TypedArrays to JavaScript.
+ // URL: https://tc39.es/proposal-float16array/
+ // Use workaround Uint16 for Float16
float16: Uint16Array,
- float32: Float32Array,
+ int64: BigInt64Array,
+ uint64: BigUint64Array,
int32: Int32Array,
uint32: Uint32Array,
int8: Int8Array,
uint8: Uint8Array,
- int64: BigInt64Array,
};
+
const kIntTypes = ['uint8', 'int8', 'uint32', 'int32', 'uint64', 'int64'];
const kFloatTypes = ['float16', 'float32'];
-const findCompatibleType =
- (dataType, supportedTypes) => {
- for (let supportedType of supportedTypes) {
- if (kIntTypes.includes(dataType)) {
- if (kIntTypes.indexOf(supportedType) > kIntTypes.indexOf(dataType)) {
- return supportedType;
- }
- }
+const findCompatibleType = (dataType, supportedTypes) => {
+ for (let supportedType of supportedTypes) {
+ if (kIntTypes.includes(dataType)) {
+ if (kIntTypes.indexOf(supportedType) > kIntTypes.indexOf(dataType)) {
+ return supportedType;
+ }
+ }
- if (kFloatTypes.includes(dataType)) {
- if (kFloatTypes.indexOf(supportedType) >
- kFloatTypes.indexOf(dataType)) {
- return supportedType;
- }
- }
+ if (kFloatTypes.includes(dataType)) {
+ if (kFloatTypes.indexOf(supportedType) > kFloatTypes.indexOf(dataType)) {
+ return supportedType;
}
- return null;
}
+ }
+ return null;
+};
+
+// The maximum index to validate for the output's expected value.
+const kMaximumIndexToValidate = 1000;
const kContextOptionsForVariant = {
cpu: {
@@ -46,8 +52,67 @@ const kContextOptionsForVariant = {
},
};
-// The maximum index to validate for the output's expected value.
-const kMaximumIndexToValidate = 1000;
+const variant = location.search.substring(1);
+const contextOptions = kContextOptionsForVariant[variant];
+
+const assertDescriptorsEquals = (outputOperand, expected) => {
+ const dataType =
+ expected.castedType ? expected.castedType : expected.dataType;
+ assert_true(
+ outputOperand.dataType() === dataType,
+ 'actual output dataType should be equal to expected output dataType');
+ assert_array_equals(
+ outputOperand.shape(), expected.dimensions,
+ 'actual output dimesnisons should be equal to expected output dimensions');
+};
+
+// ref:
+// http://stackoverflow.com/questions/32633585/how-do-you-convert-to-half-floats-in-javascript
+const toHalf = (value) => {
+ let floatView = new Float32Array(1);
+ let int32View = new Int32Array(floatView.buffer);
+
+ /* This method is faster than the OpenEXR implementation (very often
+ * used, eg. in Ogre), with the additional benefit of rounding, inspired
+ * by James Tursa's half-precision code. */
+
+ floatView[0] = value;
+ let x = int32View[0];
+
+ let bits = (x >> 16) & 0x8000; /* Get the sign */
+ let m = (x >> 12) & 0x07ff; /* Keep one extra bit for rounding */
+ let e = (x >> 23) & 0xff; /* Using int is faster here */
+
+ /* If zero, or denormal, or exponent underflows too much for a denormal
+ * half, return signed zero. */
+ if (e < 103) {
+ return bits;
+ }
+
+ /* If NaN, return NaN. If Inf or exponent overflow, return Inf. */
+ if (e > 142) {
+ bits |= 0x7c00;
+ /* If exponent was 0xff and one mantissa bit was set, it means NaN,
+ * not Inf, so make sure we set one mantissa bit too. */
+ bits |= ((e == 255) ? 0 : 1) && (x & 0x007fffff);
+ return bits;
+ }
+
+ /* If exponent underflows but not too much, return a denormal */
+ if (e < 113) {
+ m |= 0x0800;
+ /* Extra rounding may overflow and set mantissa to 0 and exponent
+ * to 1, which is OK. */
+ bits |= (m >> (114 - e)) + ((m >> (113 - e)) & 1);
+ return bits;
+ }
+
+ bits |= ((e - 112) << 10) | (m >> 1);
+ /* Extra rounding. An overflow will set mantissa to 0 and increment
+ * the exponent, which is OK. */
+ bits += m & 1;
+ return bits;
+};
const getTypedArrayData = (type, size, data) => {
let outData;
@@ -78,419 +143,16 @@ const getTypedArrayData = (type, size, data) => {
return outData;
};
-const bytesPerDataType = (dataType) => {
- if (dataType === 'int8' || dataType === 'uint8') {
- return 1;
- } else if (dataType === 'float16') {
- return 2;
- } else if (
- dataType === 'float32' || dataType === 'int32' || dataType === 'uint32') {
- return 4;
- } else if (dataType === 'int64' || dataType === 'uint64') {
- return 8;
- }
-};
-
const sizeOfShape = (array) => {
return array.reduce((accumulator, currentValue) => accumulator * currentValue, 1);
};
-const sizeOfDescriptor = (descriptor) => {
- return descriptor.dimensions.reduce(
- (accumulator, currentValue) => accumulator * currentValue,
- bytesPerDataType(descriptor.dataType));
-};
-
-const getDescriptorFromBuffer = (buffer) => {
- return {dataType: buffer.dataType, dimensions: buffer.shape};
-};
-
-/**
- * Get tests resources from test data JSON file of specified operation name.
- * @param {String} operationName - An operation name
- * @returns {Object} Tests resources
- */
-const loadTests = (operationName) => {
- const loadJSON = (file) => {
- let xmlhttp = new XMLHttpRequest();
- xmlhttp.open("GET", file, false);
- xmlhttp.overrideMimeType("application/json");
- xmlhttp.send();
- if (xmlhttp.status == 200 && xmlhttp.readyState == 4) {
- return xmlhttp.responseText;
- } else {
- throw new Error(`Failed to load ${file}`);
- }
- };
-
- const capitalLetterMatches = operationName.match(/[A-Z]/g);
- if (capitalLetterMatches !== null) {
- // for example: the test data JSON file for leakyRelu is leaky_relu.json and for reduceLogSum is reduce_log_sum.json
- capitalLetterMatches.forEach(
- capitalLetter => operationName = operationName.replace(capitalLetter, `_${capitalLetter.toLowerCase()}`)
- )
- }
- const json = loadJSON(`/webnn/resources/test_data/${operationName}.json`);
- const resources = JSON.parse(json.replace(/\\"|"(?:\\"|[^"])*"|(\/\/.*|\/\*[\s\S]*?\*\/)/g, (m, g) => g ? "" : m));
- return resources.tests;
-};
-
-/**
- * Get expected resource from given resources with output name.
- * @param {Array} resources - An array of given resources
- * @param {String} outputName - An output name
- * @returns {Object} An object of expected resource
- */
-const getNamedResource = (resources, outputName) => {
- let ret;
- for (let resource of resources) {
- if (resource.name === outputName) {
- ret = resource;
- break;
- }
- }
- if (ret === undefined) {
- throw new Error(`Failed to get expected resource by ${outputName}`);
- }
- return ret;
-};
-
-
-/**
- * Get ULP tolerance of conv2d/convTranspose2d operation.
- * @param {Object} resources - Resources used for building a graph
- * @param {String} operationName - An operation name
- * @returns {Number} A tolerance number
- */
-const getConv2dPrecisionTolerance = (resources, operationName) => {
- // number of reduced input elements multiplied by filter and summed (a sliding dot product like pooling)
- const inputNameArray = Object.keys(resources.inputs);
- const inputShape = resources.inputs[inputNameArray[0]].shape;
- const filterShape = resources.inputs[inputNameArray[1]].shape;
- const options = resources.options;
- let groups = 1;
- let inputChannels = inputShape[1]; // default nchw inputLayout
- // default oihw filterLayout for conv2d or default iohw filterLayout for convTranspose2d
- let filterWidth = filterShape[3];
- let filterHeight = filterShape[2];
- if (options) {
- if (options.groups) {
- groups = options.groups;
- }
- if (options.inputLayout) {
- if (!['nchw', 'nhwc'].includes(options.inputLayout)) {
- throw new Error(`Unsupported inputLayout ${options.inputLayout}`);
- }
- inputChannels = options.inputLayout === 'nchw' ? inputChannels : inputShape[3];
- }
- if (options.filterLayout) {
- let filterLayouts = ['oihw', 'hwio', 'ohwi', 'ihwo']; // default for conv2d
- if (operationName === 'convTranspose2d') {
- filterLayouts = ['iohw', 'hwoi', 'ohwi'];
- }
- if (!filterLayouts.includes(options.filterLayout)) {
- throw new Error(`Unsupported filterLayout ${options.filterLayout}`);
- }
- switch (options.filterLayout) {
- case 'oihw':
- case 'iohw':
- // Just use the existing filterWidth and filterHeight above.
- break;
- case 'hwio':
- case 'hwoi':
- filterWidth = filterShape[1];
- filterHeight = filterShape[0];
- break;
- case 'ohwi':
- case 'ihwo':
- filterWidth = filterShape[2];
- filterHeight = filterShape[1];
- break;
- default:
- break;
- }
- }
- }
- const tolerance = filterWidth * filterHeight * (inputChannels / groups) * 2;
- return tolerance;
-};
-
-/**
- * Get ULP tolerance of gemm operation.
- * @param {Object} resources - Resources used for building a graph
- * @param {String} operationName - An operation name
- * @returns {Number} A tolerance number
- */
-const getGemmPrecisionTolerance = (resources, operationName) => {
- // GEMM : alpha * (A x B) + beta * C
- // An upper bound for the worst serial ordering is bounded by
- // the number of lossy operations, where matrix multiplication
- // is a dot product (mul and add times the number of elements)
- // plus bias operations.
- const shapeA = resources.inputs[Object.keys(resources.inputs)[0]].shape;
- const options = {...resources.options};
- const width = options.aTranspose ? shapeA[0] : shapeA[1];
- let tolerance = width * 2;
- // default options.alpha is 1.0
- if (options.alpha !== undefined && options.alpha !== 1.0) {
- tolerance++;
- }
- if (options.c && options.beta !== 0.0) {
- // default options.beta is 1.0
- if (options.beta !== undefined && options.beta !== 1.0) {
- tolerance++;
- }
- tolerance++;
- }
- return tolerance;
-};
-
-/**
- * Get ULP tolerance of matmul operation.
- * @param {Object} resources - Resources used for building a graph
- * @param {String} operationName - An operation name
- * @returns {Number} A tolerance number
- */
-const getMatmulPrecisionTolerance = (resources, operationName) => {
- // Matmul : Compute the matrix product of two input tensors.
- // If a is 1-D, WebNN converts it to a 2-D tensor by prepending a 1 to its dimensions, [n] -> [1, n].
- // So we can just always check the last dimension here.
- const shapeA = resources.inputs[Object.keys(resources.inputs)[0]].shape;
- const tolerance = shapeA[shapeA.length - 1] * 2;
- return tolerance;
-};
-
-/**
- * Get ULP tolerance of averagePool2d or l2Pool2d operation.
- * @param {Object} resources - Resources used for building a graph
- * @param {String} operationName - An operation name
- * @returns {Number} A tolerance number
- */
-const getAveragePool2dPrecisionTolerance = (resources, operationName) => {
- const inputShape = resources.inputs[Object.keys(resources.inputs)[0]].shape;
- let height;
- let width;
- const options = {...resources.options};
- if (options.windowDimensions) {
- height = options.windowDimensions[0];
- width = options.windowDimensions[1];
- } else {
- // If not present, the window dimensions are assumed to be the height and width dimensions of the input shape
- if (options.layout && options.layout === 'nhwc') {
- height = inputShape[1];
- width = inputShape[2];
- } else {
- // nhwc layout of input
- height = inputShape[2];
- width = inputShape[3];
- }
- }
-
- const tolerance = height * width + 2;
- return tolerance;
-};
-
-/**
- * Get ULP tolerance of softmax operation.
- * @param {Object} resources - Resources used for building a graph
- * @param {String} operationName - An operation name
- * @returns {Number} A tolerance number
- */
-const getSoftmaxPrecisionTolerance = (resources, operationName) => {
- // Compute the softmax values of the 2-D input tensor along axis 1.
- const inputShape = resources.inputs[Object.keys(resources.inputs)[0]].shape;
- const tolerance = inputShape[1] * 3 + 3;
- return tolerance;
-};
-
-/**
- * Get ULP tolerance of reduction operations.
- * @param {Object} resources - Resources used for building a graph
- * @param {String} operationName - An operation name
- * @returns {Number} A tolerance number
- */
-const getReductionPrecisionTolerance = (resources, operationName) => {
- const inputShape = resources.inputs[Object.keys(resources.inputs)[0]].shape;
- const rank = inputShape.length;
- const options = {...resources.options};
- let sizes;
- if (options && options.axes) {
- sizes = options.axes.map(
- (axis) => axis < 0 ? inputShape[axis + rank] : inputShape[axis]
- );
- } else {
- sizes = inputShape;
- }
- const reducedElementCount = sizes.length ?
- sizes.reduce((accumulator, currentValue) => accumulator * currentValue) :
- 1;
- let tolerance;
- switch (operationName) {
- case 'reduceL1':
- case 'reduceProduct':
- case 'reduceSum':
- tolerance = reducedElementCount;
- break;
- case 'reduceL2':
- tolerance = reducedElementCount * 2 + 1;
- break;
- case 'reduceMean':
- tolerance = reducedElementCount + 2;
- break;
- case 'reduceLogSum':
- tolerance = reducedElementCount + 18;
- break;
- case 'reduceLogSumExp':
- tolerance = reducedElementCount * 2 + 18;
- break;
- case 'reduceSumSquare':
- tolerance = reducedElementCount * 2;
- break;
- default:
- break;
- }
- return tolerance;
-};
-
-/**
- * Get ULP tolerance of resample2d operations.
- * @param {Object} resources - Resources used for building a graph
- * @param {String} operationName - An operation name
- * @returns {Number} A tolerance number
- */
-const getResample2dPrecisionTolerance = (resources, operationName) => {
- const options = {...resources.options};
- let tolerance;
- if (options.mode && options.mode === 'linear') {
- // interpolation mode is linear
- const precisionType = resources.expected.type;
- if (precisionType === 'float32') {
- tolerance = 84;
- } else if (precisionType === 'float16') {
- tolerance = 10;
- } else {
- tolerance = 1;
- }
- } else {
- // interpolation mode is nearest-neighbor
- tolerance = 0;
- }
- return tolerance;
-};
-
-// Refer to precision metrics on https://github.com/webmachinelearning/webnn/issues/265#issuecomment-1256242643
-const PrecisionMetrics = {
- argMax: {ULP: {int64: 0}},
- argMin: {ULP: {int64: 0}},
- batchNormalization: {ULP: {float32: 6, float16: 6}},
- cast: {ULP: {float32: 1, float16: 1, int32: 0, uint32: 0, int64: 0, int8: 0, uint8: 0}},
- clamp: {ULP: {float32: 0, float16: 0}},
- concat: {ULP: {float32: 0, float16: 0}},
- constant: {ULP: {float32: 2, float16: 2, int32: 0, uint32: 0, int64: 0, int8: 0, uint8: 0}},
- conv2d: {ULP: {float32: getConv2dPrecisionTolerance, float16: getConv2dPrecisionTolerance}},
- convTranspose2d: {ULP: {float32: getConv2dPrecisionTolerance, float16: getConv2dPrecisionTolerance}},
- // Begin Element-wise binary operations
- add: {ULP: {float32: 1, float16: 1}},
- sub: {ULP: {float32: 1, float16: 1}},
- mul: {ULP: {float32: 1, float16: 1}},
- div: {ULP: {float32: 2, float16: 2}},
- max: {ULP: {float32: 0, float16: 0}},
- min: {ULP: {float32: 0, float16: 0}},
- pow: {ULP: {float32: 32, float16: 2}},
- // End Element-wise binary operations
- // Begin Element-wise logical operations
- equal: {ULP: {uint8: 0}},
- greater: {ULP: {uint8: 0}},
- greaterOrEqual: {ULP: {uint8: 0}},
- lesser: {ULP: {uint8: 0}},
- lesserOrEqual: {ULP: {uint8: 0}},
- logicalNot: {ULP: {uint8: 0}},
- // End Element-wise logical operations
- // Begin Element-wise unary operations
- abs: {ULP: {float32: 0, float16: 0}},
- ceil: {ULP: {float32: 0, float16: 0}},
- cos: {ATOL: {float32: 1/1024, float16: 1/512}},
- erf: {ATOL: {float32: 1/1024, float16: 1/512}},
- exp: {ULP: {float32: 32, float16: 1}},
- floor: {ULP: {float32: 0, float16: 0}},
- identity: {ULP: {float32: 0, float16: 0}},
- log: {ATOL: {float32: 1/1024, float16: 1/1024}},
- neg: {ULP: {float32: 0, float16: 0}},
- reciprocal: {ULP: {float32: 2, float16: 2}},
- sin: {ATOL: {float32: 1/1024, float16: 1/512}},
- sqrt: {ULP: {float32: 1, float16: 1}},
- tan: {ATOL: {float32: 1/1024, float16: 1/512}},
- // End Element-wise unary operations
- elu: {ULP: {float32: 18, float16: 18}},
- expand: {ULP: {float32: 0, float16: 0}},
- gather: {ULP: {float32: 0, float16: 0}},
- gelu: {ULP: {float32: 18, float16: 18}},
- gemm: {ULP: {float32: getGemmPrecisionTolerance, float16: getGemmPrecisionTolerance}},
- instanceNormalization: {ULP: {float32: 840, float16: 8400}},
- hardSigmoid: {ULP: {float32: 2, float16: 2}},
- hardSwish: {ULP: {float32: 4, float16: 4}},
- layerNormalization: {ATOL: {float32: 1/1024, float16: 1/512}},
- leakyRelu: {ULP: {float32: 1, float16: 1}},
- linear: {ULP: {float32: 2, float16: 2}},
- matmul: {ULP: {float32: getMatmulPrecisionTolerance, float16: getMatmulPrecisionTolerance}},
- pad: {ULP: {float32: 0, float16: 0}},
- // Begin Pooling operations
- averagePool2d: {ULP: {float32: getAveragePool2dPrecisionTolerance, float16: getAveragePool2dPrecisionTolerance}},
- l2Pool2d: {ULP: {float32: getAveragePool2dPrecisionTolerance, float16: getAveragePool2dPrecisionTolerance}},
- maxPool2d: {ULP: {float32: 0, float16: 0}},
- // End Pooling operations
- prelu: {ULP: {float32: 1, float16: 1}},
- // Begin Reduction operations
- reduceL1: {ULP: {float32: getReductionPrecisionTolerance, float16: getReductionPrecisionTolerance}},
- reduceL2: {ULP: {float32: getReductionPrecisionTolerance, float16: getReductionPrecisionTolerance}},
- reduceLogSum: {ULP: {float32: getReductionPrecisionTolerance, float16: getReductionPrecisionTolerance}},
- reduceLogSumExp: {ULP: {float32: getReductionPrecisionTolerance, float16: getReductionPrecisionTolerance}},
- reduceMax: {ULP: {float32: 0, float16: 0}},
- reduceMean: {ULP: {float32: getReductionPrecisionTolerance, float16: getReductionPrecisionTolerance}},
- reduceMin: {ULP: {float32: 0, float16: 0}},
- reduceProduct: {ULP: {float32: getReductionPrecisionTolerance, float16: getReductionPrecisionTolerance}},
- reduceSum: {ULP: {float32: getReductionPrecisionTolerance, float16: getReductionPrecisionTolerance}},
- reduceSumSquare: {ULP: {float32: getReductionPrecisionTolerance, float16: getReductionPrecisionTolerance}},
- // End Reduction operations
- relu: {ULP: {float32: 0, float16: 0}},
- resample2d: {ULP: {float32: getResample2dPrecisionTolerance, float16: getResample2dPrecisionTolerance}},
- reshape: {ULP: {float32: 0, float16: 0}},
- sigmoid: {ULP: {float32: 32+2, float16: 3}}, // float32 (leaving a few ULP for roundoff)
- slice: {ULP: {float32: 0, float16: 0}},
- softmax: {ULP: {float32: getSoftmaxPrecisionTolerance, float16: getSoftmaxPrecisionTolerance}},
- softplus: {ULP: {float32: 18, float16: 18}},
- softsign: {ULP: {float32: 3, float16: 3}},
- split: {ULP: {float32: 0, float16: 0}},
- tanh: {ATOL: {float32: 1/1024, float16: 1/512}},
- transpose: {ULP: {float32: 0, float16: 0}},
- triangular: {ULP: {float32: 0, float16: 0}},
- where: {ULP: {float32: 0, float16: 0}},
-};
-
-/**
- * Get precison tolerance value.
- * @param {String} operationName - An operation name
- * @param {String} metricType - Value: 'ULP', 'ATOL'
- * @param {Object} resources - Resources used for building a graph
- * @returns {Number} A tolerance number
- */
-const getPrecisonTolerance = (operationName, metricType, resources) => {
- // the outputs by split or gru is a sequence
- const precisionType = Array.isArray(resources.expected) ? resources.expected[0].type : resources.expected.type;
- let tolerance = PrecisionMetrics[operationName][metricType][precisionType];
- // If the tolerance is dynamic, then evaluate the function to get the value.
- if (tolerance instanceof Function) {
- tolerance = tolerance(resources, operationName);
- }
- return tolerance;
-};
-
/**
* Get bitwise of the given value.
* @param {Number} value
* @param {String} dataType - A data type string, like "float32", "float16",
* more types, please see:
- * https://webmachinelearning.github.io/webnn/#enumdef-mloperanddatatype
+ * https://www.w3.org/TR/webnn/#enumdef-mloperanddatatype
* @return {Number} A 64-bit signed integer.
*/
const getBitwise = (value, dataType) => {
@@ -508,23 +170,27 @@ const getBitwise = (value, dataType) => {
};
/**
- * Assert that each array property in ``actual`` is a number being close enough to the corresponding
- * property in ``expected`` by the acceptable ULP distance ``nulp`` with given ``dataType`` data type.
+ * Assert that each array property in ``actual`` is a number being close enough
+ * to the corresponding property in ``expected`` by the acceptable ULP distance
+ * ``nulp`` with given ``dataType`` data type.
*
* @param {Array} actual - Array of test values.
- * @param {Array} expected - Array of values expected to be close to the values in ``actual``.
+ * @param {Array} expected - Array of values expected to be close to the values
+ * in ``actual``.
* @param {Number} nulp - A BigInt value indicates acceptable ULP distance.
* @param {String} dataType - A data type string, value: "float32",
* more types, please see:
- * https://webmachinelearning.github.io/webnn/#enumdef-mloperanddatatype
+ * https://www.w3.org/TR/webnn/#enumdef-mloperanddatatype
* @param {String} description - Description of the condition being tested.
*/
const assert_array_approx_equals_ulp = (actual, expected, nulp, dataType, description) => {
/*
* Test if two primitive arrays are equal within acceptable ULP distance
*/
- assert_true(actual.length === expected.length,
- `assert_array_approx_equals_ulp: ${description} lengths differ, expected ${expected.length} but got ${actual.length}`);
+ assert_true(
+ actual.length === expected.length,
+ `assert_array_approx_equals_ulp: ${description} lengths differ, ` +
+ `expected ${expected.length} but got ${actual.length}`);
let actualBitwise, expectedBitwise, distance;
for (let i = 0; i < actual.length; i++) {
if (actual[i] === expected[i]) {
@@ -544,1725 +210,358 @@ const assert_array_approx_equals_ulp = (actual, expected, nulp, dataType, descri
}
distance = actualBitwise - expectedBitwise;
distance = distance >= 0 ? distance : -distance;
- assert_true(distance <= nulp,
- `assert_array_approx_equals_ulp: ${description} actual ${actual[i]} should be close enough to expected ${expected[i]} by the acceptable ${nulp} ULP distance, but they have ${distance} ULP distance`);
+
+ // if true, invoke assert_true() in failure case
+ // if false, it's expected, not invoke assert_true() in success case to
+ // prevent spammy output
+ if (distance > nulp) {
+ assert_true(
+ false,
+ `assert_array_approx_equals_ulp: ${description} actual ` +
+ `${actual[i]} should be close enough to expected ` +
+ `${expected[i]} by the acceptable ${nulp} ULP distance, ` +
+ `but they have ${distance} ULP distance`);
+ }
}
}
};
/**
* Assert actual results with expected results.
- * @param {String} operationName - An operation name
+ * @param {String} operatorName
* @param {(Number[]|Number)} actual
* @param {(Number[]|Number)} expected
- * @param {Number} tolerance
- * @param {String} operandType - An operand type string, value: "float32",
- * more types, please see:
- * https://webmachinelearning.github.io/webnn/#enumdef-mloperanddatatype
* @param {String} metricType - Value: 'ULP', 'ATOL'
- */
-const doAssert = (operationName, actual, expected, tolerance, operandType, metricType) => {
- const description = `test ${operationName} ${operandType}`;
- if (typeof expected === 'number') {
- // for checking a scalar output by matmul 1D x 1D
- expected = [expected];
- actual = [actual];
- }
- if (metricType === 'ULP') {
- assert_array_approx_equals_ulp(actual, expected, tolerance, operandType, description);
- } else if (metricType === 'ATOL') {
- assert_array_approx_equals(actual, expected, tolerance, description);
- }
-};
-
-/**
- * Check computed results with expected data.
- * @param {String} operationName - An operation name
- * @param {Object.<String, MLOperand>} namedOutputOperands
- * @param {Object.<MLNamedArrayBufferViews>} outputs - The resources of required outputs
- * @param {Object} resources - Resources used for building a graph
- */
-const checkResults = (operationName, namedOutputOperands, outputs, resources) => {
- const metricType = Object.keys(PrecisionMetrics[operationName])[0];
- const expected = resources.expected;
- let tolerance;
- let operandType;
- let outputData;
- let expectedData;
- if (Array.isArray(expected)) {
- // the outputs of split() or gru() is a sequence
- for (let operandName in namedOutputOperands) {
- const suboutputResource = getNamedResource(expected, operandName);
- outputData = outputs[operandName];
- // If data is scalar and shape is not, it means it's expecting to be
- // filled by the scalar value. Also limit the array size so it doesn't
- // timeout.
- if (typeof (suboutputResource.data) === 'number' &&
- suboutputResource.shape && sizeOfShape(suboutputResource.shape) > 1) {
- const size = Math.min(
- kMaximumIndexToValidate, sizeOfShape(suboutputResource.shape));
- suboutputResource.data = [
- new Array(size).fill(suboutputResource.data), suboutputResource.type
- ];
- outputData = outputData.subarray(0, kMaximumIndexToValidate);
- }
- assert_array_equals(
- namedOutputOperands[operandName].shape(),
- suboutputResource.shape ?? []);
- tolerance = getPrecisonTolerance(operationName, metricType, resources);
- doAssert(operationName, outputData, suboutputResource.data, tolerance, suboutputResource.type, metricType)
- }
- } else {
- assert_array_equals(namedOutputOperands[expected.name].shape(), expected.shape ?? []);
- outputData = outputs[expected.name];
- // If data is scalar and shape is not, it means it's expecting to be filled
- // by the scalar value. Also limit the array size so it doesn't timeout.
- if (typeof (expected.data) === 'number' && expected.shape &&
- sizeOfShape(expected.shape) > 1) {
- const size =
- Math.min(kMaximumIndexToValidate, sizeOfShape(expected.shape));
- expected.data = new Array(size).fill(expected.data);
- outputData = outputData.subarray(0, kMaximumIndexToValidate);
- }
- expectedData = expected.data;
-
- operandType = expected.type;
- tolerance = getPrecisonTolerance(operationName, metricType, resources);
- doAssert(operationName, outputData, expectedData, tolerance, operandType, metricType)
- }
-};
-
-/**
- * Create a constant operand
- * @param {MLGraphBuilder} builder - A ML graph builder
- * @param {Object} resources - Resources used for constant operand
- * @param {String} dataType - optional dataType if it's different from resources
- * @returns {MLOperand} A constant operand
- */
-const createConstantOperand = (builder, resources, dataType = null) => {
- if (!dataType) {
- dataType = resources.type;
- }
-
- const bufferView = (typeof (resources.data) === 'number' &&
- sizeOfShape(resources.shape) > 1) ?
- new TypedArrayDict[dataType](sizeOfShape(resources.shape))
- .fill(resources.data) :
- new TypedArrayDict[dataType](resources.data);
- return builder.constant(
- {dataType: dataType, type: dataType, dimensions: resources.shape},
- bufferView);
-};
-
-/**
- * Create single input operands for a graph.
- * @param {MLContext} context - A ML context
- * @param {MLGraphBuilder} builder - A ML graph builder
- * @param {Object} resources - Resources used for building a graph
- * @param {String} [inputOperandName] - An inputOperand name
- * @returns {MLOperand} An input operand
- */
-const createSingleInputOperand =
- (context, builder, resources, inputOperandName) => {
- inputOperandName ||= Object.keys(resources.inputs)[0];
- const inputResources = resources.inputs[inputOperandName];
- let operand;
- let dataType = inputResources.type;
- // If input data type is not supported on current platform, attempt to use
- // a supported type to pass the data, then cast back to original type.
- if (!context.opSupportLimits().input.dataTypes.includes(
- inputResources.type)) {
- const compatible_type = findCompatibleType(
- inputResources.type, context.opSupportLimits().input.dataTypes);
- if (compatible_type) {
- inputResources.castedType = compatible_type;
- dataType = compatible_type;
- }
+ * @param {Number} toleranceValue
+ * @param {String} dataType - An operand type string, value: "float32",
+ * more types, please see:
+ * https://www.w3.org/TR/webnn/#enumdef-mloperanddatatype
+ */
+const doAssert =
+ (operatorName, actual, expected, metricType, toleranceValue, dataType) => {
+ const description = `test ${operatorName} ${dataType}`;
+ if (typeof expected === 'number') {
+ expected = [expected];
+ actual = [actual];
}
- if (resources.inputs[inputOperandName].hasOwnProperty('constant') &&
- resources.inputs[inputOperandName]['constant']) {
- operand = createConstantOperand(
- builder, resources.inputs[inputOperandName], dataType);
+ if (metricType === 'ULP') {
+ assert_array_approx_equals_ulp(
+ actual, expected, toleranceValue, dataType, description);
+ } else if (metricType === 'ATOL') {
+ assert_array_approx_equals(
+ actual, expected, toleranceValue, description);
} else {
- operand = builder.input(inputOperandName, {
- dataType: dataType,
- type: dataType,
- dimensions: inputResources.shape
- });
- }
- if (inputResources.castedType) {
- operand = builder.cast(operand, inputResources.type);
- }
- return operand;
- };
-
-/**
- * Create multi input operands for a graph.
- * @param {MLContext} context - A ML context
- * @param {MLGraphBuilder} builder - A ML graph builder
- * @param {Object} resources - Resources used for building a graph
- * @returns {MLOperand[]} Input operands array
- */
-const createMultiInputOperands = (context, builder, resources) => {
- let inputOperands = [];
- const inputOperandNameArray = Object.keys(resources.inputs);
- inputOperandNameArray.forEach(inputOperandName => {
- const operand =
- createSingleInputOperand(context, builder, resources, inputOperandName);
- inputOperands.push(operand);
- });
- return inputOperands;
-};
-
-/**
- * Build an operation which has a single input.
- * @param {String} operationName - An operation name
- * @param {MLContext} context - A ML context
- * @param {MLGraphBuilder} builder - A ML graph builder
- * @param {Object} resources - Resources used for building a graph
- * @returns {MLNamedOperands}
- */
-const buildOperationWithSingleInput =
- (operationName, context, builder, resources) => {
- const namedOutputOperand = {};
- const inputOperand =
- createSingleInputOperand(context, builder, resources);
- let outputOperand = resources.options ?
- builder[operationName](inputOperand, resources.options) :
- builder[operationName](inputOperand);
- if (!context.opSupportLimits().output.dataTypes.includes(
- resources.expected.type)) {
- const compatibleType = findCompatibleType(
- resources.expected.type,
- context.opSupportLimits().output.dataTypes);
- outputOperand = builder.cast(outputOperand, compatibleType);
- resources.expected.castedType = compatibleType;
+ throw new AssertionError(
+ `Tolerance Metric type '${metricType}' is not supported`);
}
- namedOutputOperand[resources.expected.name] = outputOperand;
- return namedOutputOperand;
};
/**
- * Build an operation which has two inputs.
- * @param {String} operationName - An operation name
- * @param {MLContext} context - A ML context
- * @param {MLGraphBuilder} builder - A ML graph builder
- * @param {Object} resources - Resources used for building a graph
- * @returns {MLNamedOperands}
+ * Assert computed results be equal to expected data.
+ * @param {Object} toleranceFunc
+ * @param {Object.<MLNamedArrayBufferViews> |
+ * Array[Object.<MLNamedArrayBufferViews>]} actual
+ * @param {Object} graphResources - Resources used for building a graph
*/
-const buildOperationWithTwoInputs =
- (operationName, context, builder, resources) => {
- // For example: MLOperand matmul(MLOperand a, MLOperand b);
- const namedOutputOperand = {};
- const [inputOperandA, inputOperandB] =
- createMultiInputOperands(context, builder, resources);
- let outputOperand = resources.options ?
- builder[operationName](
- inputOperandA, inputOperandB, resources.options) :
- builder[operationName](inputOperandA, inputOperandB);
- if (!context.opSupportLimits().output.dataTypes.includes(
- resources.expected.type)) {
- const compatibleType = findCompatibleType(
- resources.expected.type,
- context.opSupportLimits().output.dataTypes);
- outputOperand = builder.cast(outputOperand, compatibleType);
- resources.expected.castedType = compatibleType;
- }
- namedOutputOperand[resources.expected.name] = outputOperand;
- return namedOutputOperand;
- };
+const assertResultsEquals = (toleranceFunc, actual, graphResources) => {
+ const operatorName =
+ graphResources.operators.map(operator => operator.name).join(' ');
+ const expectedOutputs = graphResources.expectedOutputs;
+ const toleranceInfo = toleranceFunc(graphResources);
+ const metricType = toleranceInfo.metricType;
+ const toleranceValue = toleranceInfo.value;
+ let outputData;
-const buildBatchNorm = (operationName, context, builder, resources) => {
- // MLOperand batchNormalization(MLOperand input, MLOperand mean, MLOperand variance,
- // optional MLBatchNormalizationOptions options = {});
- const namedOutputOperand = {};
- const [inputOperand, meanOperand, varianceOperand] =
- createMultiInputOperands(context, builder, resources);
- const batchNormOptions = {...resources.options};
- if (batchNormOptions.scale) {
- batchNormOptions.scale = createConstantOperand(builder, batchNormOptions.scale);
- }
- if (batchNormOptions.bias) {
- batchNormOptions.bias = createConstantOperand(builder, batchNormOptions.bias);
+ for (let operandName in actual) {
+ const expectedSuboutput = expectedOutputs[operandName];
+ const expectedDescriptor = expectedSuboutput.descriptor;
+ let expectedData = expectedSuboutput.data;
+
+ outputData = actual[operandName];
+ // If data is scalar and shape is not, it means it's expecting to be
+ // filled by the scalar value. Also limit the array size so it doesn't
+ // timeout.
+ if (typeof (expectedData) === 'number' && expectedDescriptor.dimensions &&
+ sizeOfShape(expectedDescriptor.dimensions) > 1) {
+ const size = Math.min(
+ kMaximumIndexToValidate, sizeOfShape(expectedDescriptor.dimensions));
+ expectedData = new Array(size).fill(expectedData);
+ outputData = outputData.subarray(0, kMaximumIndexToValidate);
+ }
+ doAssert(
+ operatorName, outputData, expectedData, metricType, toleranceValue,
+ expectedDescriptor.dataType);
}
- // invoke builder.batchNormalization()
- namedOutputOperand[resources.expected.name] =
- builder[operationName](inputOperand, meanOperand, varianceOperand, batchNormOptions);
- return namedOutputOperand;
};
-const buildCast = (operationName, context, builder, resources) => {
- // MLOperand cast(MLOperand input, MLOperandDataType type);
- const namedOutputOperand = {};
- const inputOperand = createSingleInputOperand(context, builder, resources);
- // invoke builder.cast()
- namedOutputOperand[resources.expected.name] = builder[operationName](inputOperand, resources.type);
- return namedOutputOperand;
-};
-
-const buildConcat = (operationName, context, builder, resources) => {
- // MLOperand concat(sequence<MLOperand> inputs, unsigned long axis);
- const namedOutputOperand = {};
- const inputOperands = [];
+const createOperand = (context, builder, operandName, resources) => {
let operand;
- for (let input of resources.inputs) {
- if (input.hasOwnProperty('constant') && input['constant']) {
- operand = createConstantOperand(builder, input);
- } else {
- operand = builder.input(input.name, {dataType: input.type, type: input.type, dimensions: input.shape});
+ const descriptor = resources.descriptor;
+ const dataType = descriptor.dataType;
+
+ // If input data type is not supported on current platform, attempt to use
+ // a supported type to pass the data, then cast back to original type.
+ if (!context.opSupportLimits().input.dataTypes.includes(dataType)) {
+ const compatibleType =
+ findCompatibleType(dataType, context.opSupportLimits().input.dataTypes);
+ if (compatibleType) {
+ descriptor.castedType = compatibleType;
+ descriptor.dataType = compatibleType;
+ }
+ }
+
+ operand = resources.constant ?
+ builder.constant(
+ descriptor,
+ getTypedArrayData(
+ descriptor.dataType, sizeOfShape(descriptor.dimensions),
+ resources.data)) :
+ builder.input(operandName, descriptor);
+
+ if (descriptor.castedType) {
+ operand = builder.cast(operand, dataType);
+ }
+
+ return operand;
+};
+
+const prepareInputsForGraph = (inputs, resources) => {
+ for (let operandName of Object.keys(resources)) {
+ const inputOperandResources = resources[operandName];
+ if (!inputOperandResources.constant) {
+ inputs[operandName] = getTypedArrayData(
+ inputOperandResources.descriptor.castedType ?
+ inputOperandResources.descriptor.castedType :
+ inputOperandResources.descriptor.dataType,
+ sizeOfShape(inputOperandResources.descriptor.dimensions),
+ inputOperandResources.data);
+ }
+ }
+};
+
+const prepareOutputsForGraph = (outputs, resources) => {
+ for (let operandName of Object.keys(resources)) {
+ const descriptor = resources[operandName].descriptor;
+ const dataType =
+ descriptor.castedType ? descriptor.castedType : descriptor.dataType;
+ outputs[operandName] =
+ new TypedArrayDict[dataType](sizeOfShape(descriptor.dimensions));
+ }
+};
+
+/**
+ * This function is to compile the constructed graph and compute.
+ * @param {MLContext} context
+ * @param {MLGraphBuilder} builder
+ * @param {{
+ * inputs: Map<String, {
+ * data: Array.<Number>|Number,
+ * descriptor: MLOperandDescriptor,
+ * constant?: Boolean
+ * }>,
+ * operators: Array.<{
+ * name: String,
+ * arguments: Array.<Map<String, Object>> ,
+ * outputs: Array.<String>|String
+ * }>,
+ * expectedOutputs: Map<String, {
+ * data: Array.<Number>|Number,
+ * descriptor: MLOperandDescriptor,
+ * }>
+ * }} graphResources - Resources used for building a graph
+ * @returns A Promise of MLComputeResult.
+ */
+const buildGraphAndCompute = async (context, builder, graphResources) => {
+ let outputOperands;
+ const graphInputs = graphResources.inputs;
+ const graphOperators = graphResources.operators;
+
+ if (graphOperators.length === 1) {
+ // For a test graph with a single operator
+ const argumentArray = [];
+
+ for (const argument of graphOperators[0].arguments) {
+ for (const argumentName in argument) {
+ if (argumentName !== 'options') {
+ if (graphInputs.hasOwnProperty(argument[argumentName])) {
+ const operandName = argument[argumentName];
+ const operand = createOperand(
+ context, builder, operandName, graphInputs[operandName]);
+ argumentArray.push(operand);
+ } else {
+ argumentArray.push(argument[argumentName]);
+ }
+ } else {
+ for (const [optionalArgumentName, value] of Object.entries(
+ argument['options'])) {
+ if (typeof value === 'string' &&
+ graphInputs.hasOwnProperty(value)) {
+ const operandName = value;
+ const operand = createOperand(
+ context, builder, operandName, graphInputs[operandName]);
+ argument['options'][optionalArgumentName] = operand;
+ }
+ }
+ argumentArray.push(argument['options']);
+ }
+ }
}
- inputOperands.push(operand);
+ outputOperands = builder[graphOperators[0].name](...argumentArray);
+ } else {
+ // For a test graph with multiple operators
+ // TODO: https://issues.chromium.org/issues/333756077
}
- // invoke builder.concat()
- namedOutputOperand[resources.expected.name] = builder[operationName](inputOperands, resources.axis);
- return namedOutputOperand;
-};
-
-const buildConstantRange = (operationName, context, builder, resources) => {
- const namedOutputOperand = {};
- // invoke builder.constant(start, step, outputShape, type)
- namedOutputOperand[resources.expected.name] = builder[operationName](resources.inputs.start, resources.inputs.step, resources.outputShape, resources.type);
- return namedOutputOperand;
-};
-const buildConvTranspose2d = (operationName, context, builder, resources) => {
- // MLOperand convTranspose2d(MLOperand input, MLOperand filter, optional MLConvTranspose2dOptions options = {});
- const namedOutputOperand = {};
- const [inputOperand, filterOperand] =
- createMultiInputOperands(context, builder, resources);
- let convTranspose2dOptions = {...resources.options};
- if (convTranspose2dOptions.bias) {
- convTranspose2dOptions.bias = createConstantOperand(builder, convTranspose2dOptions.bias);
+ if (!Array.isArray(outputOperands)) {
+ outputOperands = [outputOperands];
}
- namedOutputOperand[resources.expected.name] = builder[operationName](inputOperand, filterOperand, convTranspose2dOptions);
- return namedOutputOperand;
-};
-const buildConv2d = (operationName, context, builder, resources) => {
- // MLOperand conv2d(MLOperand input, MLOperand filter, optional MLConv2dOptions options = {});
- const namedOutputOperand = {};
- const [inputOperand, filterOperand] =
- createMultiInputOperands(context, builder, resources);
- let conv2dOptions = {...resources.options};
- if (conv2dOptions.bias) {
- conv2dOptions.bias = createConstantOperand(builder, conv2dOptions.bias);
- }
- namedOutputOperand[resources.expected.name] = builder[operationName](inputOperand, filterOperand, conv2dOptions);
- return namedOutputOperand;
-};
-
-const buildGemm = (operationName, context, builder, resources) => {
- // MLOperand gemm(MLOperand a, MLOperand b, optional MLGemmOptions options = {});
- const namedOutputOperand = {};
- const [inputOperandA, inputOperandB] =
- createMultiInputOperands(context, builder, resources);
- let gemmOptions = {...resources.options};
- if (gemmOptions.c) {
- if (gemmOptions.c.shape) {
- gemmOptions.c = createConstantOperand(builder, gemmOptions.c);
- } else {
- // MLOperand c;
- // Create a single-value operand when c is a scalar
- gemmOptions.c = builder.constant({dataType: 'float32', type: 'float32', dimensions: [1]}, new Float32Array([gemmOptions.c]));
+ for (let i = 0; i < outputOperands.length; ++i) {
+ const expectedDescriptor =
+ graphResources
+ .expectedOutputs[Object.keys(graphResources.expectedOutputs)[i]]
+ .descriptor;
+ if (!context.opSupportLimits().output.dataTypes.includes(
+ expectedDescriptor.dataType)) {
+ const compatibleType = findCompatibleType(
+ expectedDescriptor.dataType,
+ context.opSupportLimits().output.dataTypes);
+ outputOperands[i] = builder.cast(outputOperands[i], compatibleType);
+ expectedDescriptor.castedType = compatibleType;
}
}
- namedOutputOperand[resources.expected.name] = builder[operationName](inputOperandA, inputOperandB, gemmOptions);
- return namedOutputOperand;
-};
-const buildLayerNorm = (operationName, context, builder, resources) => {
- // MLOperand layerNormalization(MLOperand input, optional MLLayerNormalizationOptions options = {});
- // MLOperand instanceNormalization(MLOperand input, optional MLInstanceNormalizationOptions options = {});
- const namedOutputOperand = {};
- const inputOperand = createSingleInputOperand(context, builder, resources);
- const layerNormOptions = {...resources.options};
- if (layerNormOptions.scale) {
- layerNormOptions.scale = createConstantOperand(builder, layerNormOptions.scale);
+ const outputNameArray = Object.keys(graphResources.expectedOutputs);
+ for (let i = 0; i < outputOperands.length; ++i) {
+ assertDescriptorsEquals(
+ outputOperands[i],
+ graphResources.expectedOutputs[outputNameArray[i]].descriptor);
}
- if (layerNormOptions.bias) {
- layerNormOptions.bias = createConstantOperand(builder, layerNormOptions.bias);
- }
- // invoke builder.layerNormalization() or builder.instanceNormalization()
- namedOutputOperand[resources.expected.name] = builder[operationName](inputOperand, layerNormOptions);
- return namedOutputOperand;
-};
-const buildPad = (operationName, context, builder, resources) => {
- // MLOperand pad(MLOperand input, sequence<unsigned long> beginningPadding, sequence<unsigned long> endingPadding, optional MLPadOptions options = {});
const namedOutputOperand = {};
- const inputOperand = createSingleInputOperand(context, builder, resources);
- // invoke builder.pad()
- namedOutputOperand[resources.expected.name] = builder[operationName](inputOperand, resources.beginningPadding, resources.endingPadding, resources.options);
- return namedOutputOperand;
-};
+ outputNameArray.forEach(
+ (name, index) => namedOutputOperand[name] = outputOperands[index]);
-const buildReshape = (operationName, context, builder, resources) => {
- // MLOperand reshape(MLOperand input, sequence<unsigned long> newShape);
- // MLOperand expand(MLOperand input, sequence<unsigned long> newShape);
- const namedOutputOperand = {};
- const inputOperand = createSingleInputOperand(context, builder, resources);
- // invoke builder.reshape() or builder.expand()
- namedOutputOperand[resources.expected.name] = builder[operationName](inputOperand, resources.newShape);
- return namedOutputOperand;
-};
+ // Compile the constructed graph.
+ const graph = await builder.build(namedOutputOperand);
-const buildSlice = (operationName, context, builder, resources) => {
- // MLOperand slice(MLOperand input, sequence<unsigned long> starts, sequence<unsigned long> sizes);
- const namedOutputOperand = {};
- const inputOperand = createSingleInputOperand(context, builder, resources);
- // invoke builder.slice()
- namedOutputOperand[resources.expected.name] = builder[operationName](inputOperand, resources.starts, resources.sizes);
- return namedOutputOperand;
-};
+ const inputs = {};
+ prepareInputsForGraph(inputs, graphInputs);
-const buildSoftmax = (operationName, context, builder, resources) => {
- // MLOperand softmax(MLOperand input, [EnforceRange] unsigned long axis);
- const namedOutputOperand = {};
- const inputOperand = createSingleInputOperand(context, builder, resources);
- if (resources.axis !== undefined) {
- // invoke builder.softmax(input, axis)
- namedOutputOperand[resources.expected.name] = builder[operationName](inputOperand, resources.axis);
- } else {
- // invoke builder.softmax(input)
- namedOutputOperand[resources.expected.name] = builder[operationName](inputOperand);
- }
- return namedOutputOperand;
-};
-
-const buildSplit = (operationName, context, builder, resources) => {
- // sequence<MLOperand> split(MLOperand input,
- // (unsigned long or sequence<unsigned long>) splits,
- // optional MLSplitOptions options = {});
- const namedOutputOperand = {};
- const inputOperand = createSingleInputOperand(context, builder, resources);
- // invoke builder.split()
- const outputOperands = builder[operationName](inputOperand, resources.splits, resources.options);
- resources.expected.forEach((resourceDict, index) => {
- namedOutputOperand[resourceDict.name] = outputOperands[index];
- });
- return namedOutputOperand;
-};
-
-const buildWhere = (operationName, context, builder, resources) => {
- // MLOperand where(MLOperand condition, MLOperand trueValues, MLOperand falseValues);
- const namedOutputOperand = {};
- const [conditionOperand, trueValuesOperand, falseValuesOperand] =
- createMultiInputOperands(context, builder, resources);
- // invoke builder.where()
- namedOutputOperand[resources.expected.name] = builder[operationName](conditionOperand, trueValuesOperand, falseValuesOperand);
- return namedOutputOperand;
-};
-
-/**
- * Build a graph.
- * @param {String} operationName - An operation name
- * @param {MLContext} context - A ML context
- * @param {MLGraphBuilder} builder - A ML graph builder
- * @param {Object} resources - Resources used for building a graph
- * @param {Function} buildFunc - A build function for an operation
- * @returns [namedOperands, inputs, outputs]
- */
-const buildGraph = (operationName, context, builder, resources, buildFunc) => {
- const namedOperands = buildFunc(operationName, context, builder, resources);
- let inputs = {};
- if (Array.isArray(resources.inputs)) {
- // the inputs of concat() is a sequence
- for (let subInput of resources.inputs) {
- if (!subInput.hasOwnProperty('constant') || !subInput.constant) {
- inputs[subInput.name] = getTypedArrayData(
- subInput.castedType ? subInput.castedType : subInput.type,
- sizeOfShape(subInput.shape), subInput.data);
- }
- }
- } else {
- for (let inputName in resources.inputs) {
- const subTestByName = resources.inputs[inputName];
- if (!subTestByName.hasOwnProperty('constant') || !subTestByName.constant) {
- inputs[inputName] = getTypedArrayData(
- subTestByName.castedType ? subTestByName.castedType :
- subTestByName.type,
- sizeOfShape(subTestByName.shape), subTestByName.data);
- }
- }
- }
- let outputs = {};
- if (Array.isArray(resources.expected)) {
- // the outputs of split() or gru() is a sequence
- for (let i = 0; i < resources.expected.length; i++) {
- const subExpected = resources.expected[i];
- outputs[subExpected.name] = new TypedArrayDict[subExpected.type](sizeOfShape(subExpected.shape));
- }
- } else {
- // matmul 1D with 1D produces a scalar which doesn't have its shape
- const shape = resources.expected.shape ? resources.expected.shape : [1];
- const expectedType = resources.expected.castedType ?
- resources.expected.castedType :
- resources.expected.type;
- outputs[resources.expected.name] =
- new TypedArrayDict[expectedType](sizeOfShape(shape));
- }
- return [namedOperands, inputs, outputs];
-};
+ const outputs = {};
+ prepareOutputsForGraph(outputs, graphResources.expectedOutputs);
-/**
- * Build a graph, compile graph and execute, then check computed results.
- * @param {String} operationName - An operation name
- * @param {MLContext} context - A ML context
- * @param {MLGraphBuilder} builder - A ML graph builder
- * @param {Object} resources - Resources used for building a graph
- * @param {Function} buildFunc - A build function for an operation
- */
-const run = async (operationName, context, builder, resources, buildFunc) => {
- // build a graph
- const [namedOutputOperands, inputs, outputs] =
- buildGraph(operationName, context, builder, resources, buildFunc);
- // compile the graph up to the output operand
- const graph = await builder.build(namedOutputOperands);
- // execute the compiled graph
+ // Execute the compiled graph.
const result = await context.compute(graph, inputs, outputs);
- checkResults(operationName, namedOutputOperands, result.outputs, resources);
-};
-
-const variant = location.search.substring(1);
-const contextOptions = kContextOptionsForVariant[variant];
-
-/**
- * Checks if MLBuffer is implemented or not.
- * @param {MLContext} ml_context - A ML context to test for MLBuffer support.
- * @returns {Boolean} True if MLBuffer is supported; otherwise, False.
- */
-const isMLBufferSupported =
- (ml_context) => {
- return (
- createBuffer(ml_context, {dataType: 'int32', dimensions: [2, 2]}) !==
- undefined);
+ return result;
+};
+
+const getConv2dPrecisionTolerance = (graphResources) => {
+ // number of reduced input elements multiplied by filter and summed (a sliding
+ // dot product like pooling)
+ const operatorResources = graphResources.operators[0];
+ const operatorName = operatorResources.name;
+ const args = operatorResources.arguments;
+ const inputShape = graphResources.inputs[args[0][Object.keys(args[0])[0]]]
+ .descriptor.dimensions;
+ const filterShape = graphResources.inputs[args[1][Object.keys(args[1])[0]]]
+ .descriptor.dimensions;
+ const options =
+ args.length === 3 ? {...args[2][Object.keys(args[2])[0]]} : {};
+ let inputChannels = inputShape[1]; // default nchw inputLayout
+ // default oihw filterLayout for conv2d or default iohw filterLayout for
+ // convTranspose2d
+ let filterWidth = filterShape[3];
+ let filterHeight = filterShape[2];
+ const groups = options.groups ? options.groups : 1;
+
+ if (options.inputLayout) {
+ if (!['nchw', 'nhwc'].includes(options.inputLayout)) {
+ throw new Error(`Unknown inputLayout ${options.inputLayout}`);
+ }
+ inputChannels =
+ options.inputLayout === 'nchw' ? inputChannels : inputShape[3];
+ }
+ if (options.filterLayout) {
+ let filterLayouts = ['oihw', 'hwio', 'ohwi', 'ihwo']; // default for conv2d
+ if (operatorName === 'convTranspose2d') {
+ filterLayouts = ['iohw', 'hwoi', 'ohwi'];
+ }
+ if (!filterLayouts.includes(options.filterLayout)) {
+ throw new Error(`Unknown filterLayout ${options.filterLayout}`);
+ }
+ switch (options.filterLayout) {
+ case 'oihw':
+ case 'iohw':
+ // Just use the existing filterWidth and filterHeight above.
+ break;
+ case 'hwio':
+ case 'hwoi':
+ filterWidth = filterShape[1];
+ filterHeight = filterShape[0];
+ break;
+ case 'ohwi':
+ case 'ihwo':
+ filterWidth = filterShape[2];
+ filterHeight = filterShape[1];
+ break;
+ default:
+ break;
}
-
-/**
- * Run WebNN operation tests.
- * @param {(String[]|String)} operationName - An operation name array or an
- * operation name
- * @param {Function} buildFunc - A build function for an operation
- */
-const testWebNNOperation = (operationName, buildFunc) => {
- let operationNameArray;
- if (typeof operationName === 'string') {
- operationNameArray = [operationName];
- } else if (Array.isArray(operationName)) {
- operationNameArray = operationName;
}
- let context;
- let builder;
- operationNameArray.forEach((subOperationName) => {
- const tests = loadTests(subOperationName);
- promise_setup(async () => {
- let supported = false;
- try {
- context = await navigator.ml.createContext(contextOptions);
- supported = true;
- } catch (e) {
+ const tolerance = filterWidth * filterHeight * (inputChannels / groups) * 2;
+ const toleranceValueDict = {float32: tolerance, float16: tolerance};
+ const expectedDataType =
+ getExpectedDataTypeOfSingleOutput(graphResources.expectedOutputs);
+ return {metricType: 'ULP', value: toleranceValueDict[expectedDataType]};
+};
+
+const getExpectedDataTypeOfSingleOutput = (expectedOutput) => {
+ const expectedDescriptor =
+ expectedOutput[Object.keys(expectedOutput)[0]].descriptor;
+ const dataType = expectedDescriptor.castedType ?
+ expectedDescriptor.castedType :
+ expectedDescriptor.dataType;
+ return dataType;
+};
+
+const getReducedElementCount =
+ (graphResources) => {
+ const args = graphResources.operators[0].arguments;
+ const inputShape = graphResources.inputs[args[0][Object.keys(args[0])[0]]]
+ .descriptor.dimensions;
+ const rank = inputShape.length;
+ const options =
+ args.length === 2 ? {...args[1][Object.keys(args[1])[0]]} : {};
+ let sizes;
+
+ if (options && options.axes) {
+ sizes = options.axes.map(
+ (axis) => axis < 0 ? inputShape[axis + rank] : inputShape[axis]);
+ } else {
+ sizes = inputShape;
}
- assert_implements(
- supported, `Unable to create context for ${variant} variant`);
- builder = new MLGraphBuilder(context);
- });
- for (const subTest of tests) {
- promise_test(async () => {
- await run(subOperationName, context, builder, subTest, buildFunc);
- }, `${subTest.name}`);
- }
- });
-};
-/**
- * WebNN parallel compute operation test.
- */
-const testParallelCompute = () => {
- let ml_context;
- let ml_graph;
-
- promise_setup(async () => {
- let supported = false;
- try {
- ml_context = await navigator.ml.createContext(contextOptions);
- supported = true;
- } catch (e) {
+ return sizes.length ?
+ sizes.reduce(
+ (accumulator, currentValue) => accumulator * currentValue) :
+ 1;
}
- assert_implements(
- supported, `Unable to create context for ${variant} variant`);
- // Construct a simple graph: A = B * 2.
- const builder = new MLGraphBuilder(ml_context);
- const operandType = {dataType: 'float32', dimensions: [1]};
- const input_operand = builder.input('input', operandType);
- const const_operand = builder.constant(operandType, Float32Array.from([2]));
- const output_operand = builder.mul(input_operand, const_operand);
- ml_graph = await builder.build({'output': output_operand});
- });
-
- promise_test(async () => {
- const test_inputs = [1, 2, 3, 4];
- const actual_outputs = await Promise.all(test_inputs.map(async (input) => {
- let inputs = {'input': Float32Array.from([input])};
- let outputs = {'output': new Float32Array(1)};
- ({inputs, outputs} = await ml_context.compute(ml_graph, inputs, outputs));
- return outputs.output[0];
- }));
-
- const expected_outputs = [2, 4, 6, 8];
- assert_array_equals(actual_outputs, expected_outputs);
- });
-};
-
-/**
- * Run WebNN conformance tests by specified operation.
- * @param {(String[]|String)} operationName - An operation name array or an
- * operation name
- * @param {Function} buildFunc - A build function for an operation
- */
-const runWebNNConformanceTests = (operationName, buildFunc) => {
- // Link to https://github.com/web-platform-tests/wpt/pull/44883
- // Check navigator.ml is defined before trying to run WebNN tests
- if (navigator.ml) {
- testWebNNOperation(operationName, buildFunc);
- } else {
- // Show indication to users why the test failed
- test(
- () => assert_not_equals(
- navigator.ml, undefined, 'ml property is defined on navigator'));
- }
-};
-
-// ref: http://stackoverflow.com/questions/32633585/how-do-you-convert-to-half-floats-in-javascript
-const toHalf = (value) => {
- let floatView = new Float32Array(1);
- let int32View = new Int32Array(floatView.buffer);
-
- /* This method is faster than the OpenEXR implementation (very often
- * used, eg. in Ogre), with the additional benefit of rounding, inspired
- * by James Tursa's half-precision code. */
-
- floatView[0] = value;
- let x = int32View[0];
-
- let bits = (x >> 16) & 0x8000; /* Get the sign */
- let m = (x >> 12) & 0x07ff; /* Keep one extra bit for rounding */
- let e = (x >> 23) & 0xff; /* Using int is faster here */
-
- /* If zero, or denormal, or exponent underflows too much for a denormal
- * half, return signed zero. */
- if (e < 103) {
- return bits;
- }
-
- /* If NaN, return NaN. If Inf or exponent overflow, return Inf. */
- if (e > 142) {
- bits |= 0x7c00;
- /* If exponent was 0xff and one mantissa bit was set, it means NaN,
- * not Inf, so make sure we set one mantissa bit too. */
- bits |= ((e == 255) ? 0 : 1) && (x & 0x007fffff);
- return bits;
- }
-
- /* If exponent underflows but not too much, return a denormal */
- if (e < 113) {
- m |= 0x0800;
- /* Extra rounding may overflow and set mantissa to 0 and exponent
- * to 1, which is OK. */
- bits |= (m >> (114 - e)) + ((m >> (113 - e)) & 1);
- return bits;
- }
-
- bits |= ((e - 112) << 10) | (m >> 1);
- /* Extra rounding. An overflow will set mantissa to 0 and increment
- * the exponent, which is OK. */
- bits += m & 1;
- return bits;
-};
-
-
-/**
- * WebNN buffer creation.
- * @param {MLContext} context - the context used to create the buffer.
- * @param {MLBufferDescriptor} bufferDescriptor - intended specs of the buffer.
- * @returns {MLBuffer} the created buffer.
- */
-const createBuffer = (context, bufferDescriptor) => {
- let buffer;
- try {
- buffer = context.createBuffer(bufferDescriptor);
- assert_equals(
- buffer.dataType, bufferDescriptor.dataType,
- 'buffer data types do not match');
- assert_array_equals(
- buffer.shape, bufferDescriptor.dimensions,
- 'buffer shapes do not match');
- } catch (e) {
- assert_true(e instanceof DOMException);
- assert_equals(e.name, "NotSupportedError");
- }
- return buffer;
-};
-
-/**
- * WebNN destroy buffer twice test.
- * @param {String} testName - The name of the test operation.
- */
-const testDestroyWebNNBuffer = (testName) => {
- let context;
- let buffer;
- promise_setup(async () => {
- let supported = false;
- try {
- context = await navigator.ml.createContext(contextOptions);
- supported = true;
- } catch (e) {
- }
- assert_implements(
- supported, `Unable to create context for ${variant} variant`);
- buffer = createBuffer(context, {dataType: 'int32', dimensions: [2, 3]});
- });
- promise_test(async () => {
- // MLBuffer is not supported for this deviceType.
- if (buffer === undefined) {
- return;
- }
- buffer.destroy();
- buffer.destroy();
- }, `${testName}`);
-};
-
-/**
- * WebNN create buffer test.
- * @param {String} testName - The name of the test operation.
- * @param {MLBufferDescriptor} bufferDescriptor - The intended buffer specs.
- */
-const testCreateWebNNBuffer = (testName, bufferDescriptor) => {
- let context;
-
- promise_setup(async () => {
- let supported = false;
- try {
- context = await navigator.ml.createContext(contextOptions);
- supported = true;
- } catch (e) {
- }
- assert_implements(
- supported, `Unable to create context for ${variant} variant`);
- });
- promise_test(async () => {
- createBuffer(context, bufferDescriptor);
- }, `${testName} / ${bufferDescriptor.dataType}`);
-};
-
-/**
- * Same as above, but expect creating the buffer to fail.
- * @param {String} testName - The name of the test operation.
- * @param {MLBufferDescriptor} bufferDescriptor - The intended buffer specs.
- */
-const testCreateWebNNBufferFails = (testName, bufferDescriptor) => {
- let context;
-
- promise_setup(async () => {
- let supported = false;
- try {
- context = await navigator.ml.createContext(contextOptions);
- supported = true;
- } catch (e) {
- }
- assert_implements(
- supported, `Unable to create context for ${variant} variant`);
- });
- promise_test(async () => {
- assert_throws_js(TypeError, () => context.createBuffer(bufferDescriptor));
- }, `${testName} / ${bufferDescriptor.dataType}`);
-};
-
-
-/**
- * Asserts the buffer data in MLBuffer matches expected.
- * @param {MLContext} ml_context - The context used to create the buffer.
- * @param {MLBuffer} ml_buffer - The buffer to read and compare data.
- * @param {Array} expected - Array of the expected data in the buffer.
- */
-const assert_buffer_data_equals = async (ml_context, ml_buffer, expected) => {
- const actual = await ml_context.readBuffer(ml_buffer);
- assert_array_equals(
- new expected.constructor(actual), expected,
- 'Read buffer data equals expected data.');
-};
-
-/**
- * WebNN write buffer operation test.
- * @param {String} testName - The name of the test operation.
- */
-const testWriteWebNNBuffer = (testName) => {
- let ml_context;
- promise_setup(async () => {
- let supported = false;
- try {
- ml_context = await navigator.ml.createContext(contextOptions);
- supported = true;
- } catch (e) {
- }
- assert_implements(
- supported, `Unable to create context for ${variant} variant`);
- });
-
- promise_test(async () => {
- const descriptor = {dataType: 'int32', dimensions: [1]};
- let ml_buffer = createBuffer(ml_context, descriptor);
-
- // MLBuffer was unsupported for the deviceType.
- if (ml_buffer === undefined) {
- return;
- }
-
- const bufferByteLength = sizeOfDescriptor(descriptor);
- let array_buffer = new ArrayBuffer(bufferByteLength);
-
- // Writing with a size that goes past that source buffer length.
- assert_throws_js(
- TypeError,
- () => ml_context.writeBuffer(
- ml_buffer, new Uint8Array(array_buffer), /*srcOffset=*/ 0,
- /*srcSize=*/ bufferByteLength + 1));
- assert_throws_js(
- TypeError,
- () => ml_context.writeBuffer(
- ml_buffer, new Uint8Array(array_buffer), /*srcOffset=*/ 3,
- /*srcSize=*/ bufferByteLength));
-
- // Writing with a source offset that is out of range of the source size.
- assert_throws_js(
- TypeError,
- () => ml_context.writeBuffer(
- ml_buffer, new Uint8Array(array_buffer),
- /*srcOffset=*/ bufferByteLength + 1));
-
- // Writing with a source offset that is out of range of implicit copy size.
- assert_throws_js(
- TypeError,
- () => ml_context.writeBuffer(
- ml_buffer, new Uint8Array(array_buffer),
- /*srcOffset=*/ bufferByteLength + 1, /*srcSize=*/ undefined));
-
- assert_throws_js(
- TypeError,
- () => ml_context.writeBuffer(
- ml_buffer, new Uint8Array(array_buffer), /*srcOffset=*/ undefined,
- /*srcSize=*/ bufferByteLength + 1));
-
- assert_throws_js(
- TypeError,
- () => ml_context.writeBuffer(
- ml_buffer, Uint8Array.from([0xEE, 0xEE, 0xEE, 0xEE, 0xEE])));
- }, `${testName} / error`);
-
- promise_test(async () => {
- const descriptor = {dataType: 'int32', dimensions: [2, 2]};
- let ml_buffer = createBuffer(ml_context, descriptor);
-
- // MLBuffer was unsupported for the deviceType.
- if (ml_buffer === undefined) {
- return;
- }
-
- // Writing data to a destroyed MLBuffer should throw.
- ml_buffer.destroy();
-
- assert_throws_dom(
- 'InvalidStateError',
- () => ml_context.writeBuffer(
- ml_buffer, new Uint8Array(sizeOfDescriptor(descriptor))));
- }, `${testName} / destroy`);
-
- promise_test(async () => {
- const bufferDescriptor = {dataType: 'int32', dimensions: [2, 3]};
- let ml_buffer = createBuffer(ml_context, bufferDescriptor);
-
- // MLBuffer was unsupported for the deviceType.
- if (ml_buffer === undefined) {
- return;
- }
-
- let another_ml_context = await navigator.ml.createContext(contextOptions);
- let another_ml_buffer = createBuffer(another_ml_context, bufferDescriptor);
-
- let input_data =
- new Uint8Array(sizeOfDescriptor(bufferDescriptor)).fill(0xAA);
- assert_throws_js(
- TypeError, () => ml_context.writeBuffer(another_ml_buffer, input_data));
- assert_throws_js(
- TypeError, () => another_ml_context.writeBuffer(ml_buffer, input_data));
- }, `${testName} / context_mismatch`);
-};
-
-/**
- * WebNN read buffer operation test.
- * @param {String} testName - The name of the test operation.
- */
-const testReadWebNNBuffer = (testName) => {
- let ml_context;
- promise_setup(async () => {
- let supported = false;
- try {
- ml_context = await navigator.ml.createContext(contextOptions);
- supported = true;
- } catch (e) {
- }
- assert_implements(
- supported, `Unable to create context for ${variant} variant`);
- });
-
- promise_test(async t => {
- let ml_buffer =
- createBuffer(ml_context, {dataType: 'int32', dimensions: [2, 2]});
-
- // MLBuffer was unsupported for the deviceType.
- if (ml_buffer === undefined) {
- return;
- }
-
- // Reading a destroyed MLBuffer should reject.
- ml_buffer.destroy();
-
- await promise_rejects_dom(
- t, 'InvalidStateError', ml_context.readBuffer(ml_buffer));
- }, `${testName} / destroy`);
-
- promise_test(async () => {
- let ml_buffer =
- createBuffer(ml_context, {dataType: 'int32', dimensions: [1]});
-
- // MLBuffer was unsupported for the deviceType.
- if (ml_buffer === undefined) {
- return;
- }
-
- // Initialize the buffer.
- ml_context.writeBuffer(
- ml_buffer, Uint8Array.from([0xAA, 0xAA, 0xAA, 0xAA]));
-
- ml_context.writeBuffer(ml_buffer, Uint32Array.from([0xBBBBBBBB]));
- await assert_buffer_data_equals(
- ml_context, ml_buffer, Uint32Array.from([0xBBBBBBBB]));
- ;
- }, `${testName} / full_size`);
-
- promise_test(async () => {
- let ml_buffer =
- createBuffer(ml_context, {dataType: 'int32', dimensions: [1]});
-
- // MLBuffer was unsupported for the deviceType.
- if (ml_buffer === undefined) {
- return;
- }
-
- // Initialize the buffer.
- ml_context.writeBuffer(
- ml_buffer, Uint8Array.from([0xAA, 0xAA, 0xAA, 0xAA]));
-
- // Writing to the remainder of the buffer from source offset.
- ml_context.writeBuffer(
- ml_buffer, Uint8Array.from([0xCC, 0xCC, 0xBB, 0xBB]),
- /*srcOffset=*/ 2);
- await assert_buffer_data_equals(
- ml_context, ml_buffer, Uint8Array.from([0xBB, 0xBB, 0xAA, 0xAA]));
- }, `${testName} / src_offset_only`);
-
- promise_test(async () => {
- let ml_buffer =
- createBuffer(ml_context, {dataType: 'int32', dimensions: [1]});
-
- // MLBuffer was unsupported for the deviceType.
- if (ml_buffer === undefined) {
- return;
- }
-
- // Initialize the buffer.
- ml_context.writeBuffer(
- ml_buffer, Uint8Array.from([0xAA, 0xAA, 0xAA, 0xAA]));
-
- // Writing with both a source offset and size.
- ml_context.writeBuffer(
- ml_buffer, Uint8Array.from([0xDD, 0xDD, 0xCC, 0xDD]),
- /*srcOffset=*/ 2, /*srcSize=*/ 1);
- await assert_buffer_data_equals(
- ml_context, ml_buffer, Uint8Array.from([0xCC, 0xAA, 0xAA, 0xAA]));
- }, `${testName} / src_offset_and_size`);
-
- promise_test(async () => {
- let ml_buffer =
- createBuffer(ml_context, {dataType: 'int32', dimensions: [1]});
-
- // MLBuffer was unsupported for the deviceType.
- if (ml_buffer === undefined) {
- return;
- }
-
- // Initialize the buffer.
- ml_context.writeBuffer(
- ml_buffer, Uint8Array.from([0xAA, 0xAA, 0xAA, 0xAA]));
-
- // Using an offset allows a larger source buffer to fit.
- ml_context.writeBuffer(
- ml_buffer, Uint8Array.from([0xEE, 0xEE, 0xEE, 0xEE, 0xEE]),
- /*srcOffset=*/ 1);
- await assert_buffer_data_equals(
- ml_context, ml_buffer, Uint8Array.from([0xEE, 0xEE, 0xEE, 0xEE]));
- }, `${testName} / larger_src_data`);
-
- promise_test(async () => {
- let ml_buffer =
- createBuffer(ml_context, {dataType: 'int32', dimensions: [1]});
-
- // MLBuffer was unsupported for the deviceType.
- if (ml_buffer === undefined) {
- return;
- }
-
- const input_data = [0xAA, 0xAA, 0xAA, 0xAA];
-
- // Writing with a source offset of undefined should be treated as 0.
- ml_context.writeBuffer(
- ml_buffer, Uint8Array.from(input_data), /*srcOffset=*/ undefined,
- /*srcSize=*/ input_data.length);
- await assert_buffer_data_equals(
- ml_context, ml_buffer, Uint8Array.from(input_data));
- }, `${testName} / no_src_offset`);
-
- promise_test(async t => {
- const bufferDescriptor = {dataType: 'int32', dimensions: [2, 3]};
- let ml_buffer = createBuffer(ml_context, bufferDescriptor);
-
- // MLBuffer was unsupported for the deviceType.
- if (ml_buffer === undefined) {
- return;
- }
-
- let another_ml_context = await navigator.ml.createContext(contextOptions);
- let another_ml_buffer = createBuffer(another_ml_context, bufferDescriptor);
-
- await promise_rejects_js(
- t, TypeError, ml_context.readBuffer(another_ml_buffer));
- await promise_rejects_js(
- t, TypeError, another_ml_context.readBuffer(ml_buffer));
- }, `${testName} / context_mismatch`);
-};
-
-/**
- * WebNN dispatch buffer operation test.
- * @param {String} testName - The name of the test operation.
- */
-const testDispatchWebNNBuffer = (testName) => {
- let ml_context;
- let ml_graph;
- const shape = [3, 5];
- let inputs = {};
- let outputs = {};
- promise_setup(async () => {
- let supported = false;
- try {
- ml_context = await navigator.ml.createContext(contextOptions);
- supported = true;
- } catch (e) {
- }
- assert_implements(
- supported, `Unable to create context for ${variant} variant`);
- // Construct a simple graph: A = B + C, with two outputs.
- const builder = new MLGraphBuilder(ml_context);
- const descriptor = {dataType: 'float32', dimensions: shape};
- const lhs_operand = builder.input('lhs', descriptor);
- const rhs_operand = builder.input('rhs', descriptor);
- const output_1_operand = builder.add(lhs_operand, rhs_operand);
- const output_2_operand = builder.add(lhs_operand, rhs_operand);
- ml_graph = await builder.build(
- {'output1': output_1_operand, 'output2': output_2_operand});
- // MLBuffer was unsupported for the deviceType.
- if (!isMLBufferSupported(ml_context)) {
- return;
- }
- inputs = {
- 'lhs': ml_context.createBuffer(descriptor),
- 'rhs': ml_context.createBuffer(descriptor),
- };
- outputs = {
- 'output1': ml_context.createBuffer(descriptor),
- 'output2': ml_context.createBuffer(descriptor),
- };
- });
-
- promise_test(async () => {
- // MLBuffer was unsupported for the deviceType.
- if (!isMLBufferSupported(ml_context)) {
- return;
- }
-
- let another_ml_context = await navigator.ml.createContext(contextOptions);
-
- // Control case, same context.
- ml_context.dispatch(ml_graph, inputs, outputs);
-
- // Test the wrong context being used for inputs.
- assert_throws_js(
- TypeError,
- () => ml_context.dispatch(
- ml_graph, {
- 'lhs': another_ml_context.createBuffer(
- getDescriptorFromBuffer(inputs['lhs'])),
- 'rhs': inputs['rhs'],
- },
- outputs));
-
- // Test the wrong context being used for outputs.
- assert_throws_js(TypeError, () => ml_context.dispatch(ml_graph, inputs, {
- 'output1': another_ml_context.createBuffer(
- getDescriptorFromBuffer(outputs['output1'])),
- 'output2': outputs['output2'],
- }));
- }, `${testName} / context_mismatch`);
-
- promise_test(async () => {
- // MLBuffer was unsupported for the deviceType.
- if (!isMLBufferSupported(ml_context)) {
- return;
- }
-
- // Control case, valid buffers.
- ml_context.dispatch(ml_graph, inputs, outputs);
-
- // Input is a different shape.
- assert_throws_js(
- TypeError,
- () => ml_context.dispatch(
- ml_graph, {
- 'lhs': ml_context.createBuffer({
- dataType: inputs['lhs'].dataType,
- // Input rank is too high.
- dimensions: inputs['lhs'].shape.concat([2])
- }),
- 'rhs': inputs['rhs'],
- },
- outputs));
-
- assert_throws_js(
- TypeError,
- () => ml_context.dispatch(
- ml_graph, {
- 'lhs': inputs['lhs'],
- 'rhs': ml_context.createBuffer({
- dataType: inputs['rhs'].dataType,
- // Input rank is too low.
- dimensions: inputs['rhs'].shape.slice(1)
- }),
- },
- outputs));
-
- // Output is a different shape. Dimension value is too large.
- let output1WrongShape = [...outputs['output1'].shape];
- output1WrongShape[0] += 2;
- assert_throws_js(TypeError, () => ml_context.dispatch(ml_graph, inputs, {
- 'output1': ml_context.createBuffer({
- dataType: outputs['output1'].dataType,
- dimensions: output1WrongShape
- }),
- 'output2': outputs['output2'],
- }));
-
- // Output is a different shape. Dimension value is too small.
- let output2WrongShape = [...outputs['output2'].shape];
- output2WrongShape[1] -= 1;
- assert_throws_js(TypeError, () => ml_context.dispatch(ml_graph, inputs, {
- 'output1': outputs['output1'],
- 'output2': ml_context.createBuffer({
- dataType: outputs['output2'].dataType,
- dimensions: output2WrongShape
- }),
- }));
- }, `${testName} / invalid shape`);
-
- promise_test(async () => {
- // MLBuffer was unsupported for the deviceType.
- if (!isMLBufferSupported(ml_context)) {
- return;
- }
-
- // Control case, valid buffers.
- ml_context.dispatch(ml_graph, inputs, outputs);
-
- // Inputs are a different data type.
- const inputWrongDataType = 'int32';
- assert_not_equals(inputs['lhs'].dataType, inputWrongDataType);
- assert_not_equals(inputs['rhs'].dataType, inputWrongDataType);
- assert_throws_js(
- TypeError,
- () => ml_context.dispatch(
- ml_graph, {
- 'lhs': ml_context.createBuffer({
- dataType: inputWrongDataType,
- dimensions: inputs['lhs'].shape
- }),
- 'rhs': inputs['rhs'],
- },
- outputs));
-
- assert_throws_js(
- TypeError,
- () => ml_context.dispatch(
- ml_graph, {
- 'lhs': inputs['lhs'],
- 'rhs': ml_context.createBuffer({
- dataType: inputWrongDataType,
- dimensions: inputs['rhs'].shape
- }),
- },
- outputs));
-
- // Outputs are a different data type.
- const outputWrongDataType = 'int32';
- assert_not_equals(outputs['output1'].dataType, outputWrongDataType);
- assert_not_equals(outputs['output2'].dataType, outputWrongDataType);
- assert_throws_js(TypeError, () => ml_context.dispatch(ml_graph, inputs, {
- 'output1': ml_context.createBuffer({
- dataType: outputWrongDataType,
- dimensions: outputs['output1'].shape
- }),
- 'output2': outputs['output2'],
- }));
-
- assert_throws_js(TypeError, () => ml_context.dispatch(ml_graph, inputs, {
- 'output1': outputs['output1'],
- 'output2': ml_context.createBuffer({
- dataType: outputWrongDataType,
- dimensions: outputs['output2'].shape
- }),
- }));
- }, `${testName} / invalid data type`);
-
- promise_test(async () => {
- // MLBuffer was unsupported for the deviceType.
- if (!isMLBufferSupported(ml_context)) {
- return;
- }
-
- // Control case, valid names.
- ml_context.dispatch(ml_graph, inputs, outputs);
-
- // No names is invalid.
- assert_throws_js(TypeError, () => ml_context.dispatch(ml_graph, {}, {}));
-
- // Input name is invalid.
- assert_throws_js(
- TypeError,
- () => ml_context.dispatch(
- ml_graph, {
- 'a_different_input_name': inputs['lhs'],
- 'rhs': inputs['rhs'],
- },
- outputs));
-
- assert_throws_js(
- TypeError,
- () => ml_context.dispatch(
- ml_graph, {
- 'lhs': inputs['lhs'],
- 'a_different_input_name': inputs['rhs'],
- },
- outputs));
-
- // Output name is invalid.
- assert_throws_js(TypeError, () => ml_context.dispatch(ml_graph, inputs, {
- 'a_different_output_name': outputs['output1'],
- 'output2': outputs['output2'],
- }));
-
- assert_throws_js(TypeError, () => ml_context.dispatch(ml_graph, inputs, {
- 'output1': outputs['output1'],
- 'a_different_output_name': outputs['output2'],
- }));
-
- // Too few named inputs is invalid.
- assert_throws_js(
- TypeError,
- () => ml_context.dispatch(
- ml_graph, {
- 'lhs': inputs['lhs'],
- },
- outputs));
-
- // Too many named inputs is invalid.
- assert_throws_js(
- TypeError,
- () => ml_context.dispatch(
- ml_graph, {
- 'lhs': inputs['lhs'],
- 'rhs': inputs['rhs'],
- 'a_different_input_name': ml_context.createBuffer(
- getDescriptorFromBuffer(inputs['rhs'])),
- },
- outputs));
-
- // Too few named outputs is invalid.
- assert_throws_js(TypeError, () => ml_context.dispatch(ml_graph, inputs, {
- 'output1': outputs['output1']
- }));
-
- // Too many named outputs is invalid.
- assert_throws_js(TypeError, () => ml_context.dispatch(ml_graph, inputs, {
- 'output1': outputs['output1'],
- 'output2': outputs['output2'],
- 'a_different_output_name':
- ml_context.createBuffer(getDescriptorFromBuffer(outputs['output2'])),
- }));
- }, `${testName} / invalid_name`);
-
- promise_test(async () => {
- // MLBuffer was unsupported for the deviceType.
- if (!isMLBufferSupported(ml_context)) {
- return;
- }
-
- // Control case, valid buffers.
- ml_context.dispatch(ml_graph, inputs, outputs);
-
- // Same buffer used as outputs more than once is invalid.
- assert_throws_js(TypeError, () => ml_context.dispatch(ml_graph, inputs, {
- 'output1': outputs['output1'],
- 'output2': outputs['output1'],
- }));
-
- // Same buffer used as input and output is invalid.
- assert_throws_js(TypeError, () => ml_context.dispatch(ml_graph, inputs, {
- 'output1': inputs['lhs'],
- 'output2': outputs['output2'],
- }));
-
- assert_throws_js(
- TypeError,
- () => ml_context.dispatch(
- ml_graph, {
- 'lhs': outputs['output1'],
- 'rhs': inputs['rhs'],
- },
- outputs));
-
- // Buffer that does not exist is invalid.
- assert_throws_js(
- TypeError,
- () => ml_context.dispatch(
- ml_graph, {
- 'lhs': undefined,
- 'rhs': inputs['rhs'],
- },
- outputs));
-
- assert_throws_js(TypeError, () => ml_context.dispatch(ml_graph, inputs, {
- 'output1': undefined,
- 'output2': outputs['output2'],
- }));
- }, `${testName} / invalid_buffer`);
-
- promise_test(async () => {
- // MLBuffer was unsupported for the deviceType.
- if (!isMLBufferSupported(ml_context)) {
- return;
- }
-
- const dispatch_inputs = {
- 'lhs': ml_context.createBuffer(getDescriptorFromBuffer(inputs['lhs'])),
- 'rhs': ml_context.createBuffer(getDescriptorFromBuffer(inputs['rhs'])),
- };
-
- const dispatch_1_outputs = {
- 'output1':
- ml_context.createBuffer(getDescriptorFromBuffer(outputs['output1'])),
- 'output2':
- ml_context.createBuffer(getDescriptorFromBuffer(outputs['output2'])),
- };
-
- const dispatch_2_outputs = {
- 'output1':
- ml_context.createBuffer(getDescriptorFromBuffer(outputs['output1'])),
- 'output2':
- ml_context.createBuffer(getDescriptorFromBuffer(outputs['output2'])),
- };
-
- // Initialize inputs
- const input_data =
- new TypedArrayDict['float32'](sizeOfShape(shape)).fill(1.0);
- ml_context.writeBuffer(dispatch_inputs['lhs'], input_data);
- ml_context.writeBuffer(dispatch_inputs['rhs'], input_data);
-
- // Output_1 = LHS + RHS = 1 + 1 = 2
- ml_context.dispatch(ml_graph, dispatch_inputs, dispatch_1_outputs);
-
- // Output_2 = LHS + RHS = 1 + 1 = 2
- ml_context.dispatch(ml_graph, dispatch_inputs, dispatch_2_outputs);
-
- await assert_buffer_data_equals(
- ml_context, dispatch_1_outputs['output1'],
- new Float32Array(sizeOfShape(shape)).fill(2.0));
-
- await assert_buffer_data_equals(
- ml_context, dispatch_1_outputs['output2'],
- new Float32Array(sizeOfShape(shape)).fill(2.0));
-
- await assert_buffer_data_equals(
- ml_context, dispatch_2_outputs['output1'],
- new Float32Array(sizeOfShape(shape)).fill(2.0));
-
- await assert_buffer_data_equals(
- ml_context, dispatch_2_outputs['output2'],
- new Float32Array(sizeOfShape(shape)).fill(2.0));
- }, `${testName} / same_inputs`);
-
- promise_test(async () => {
- // MLBuffer was unsupported for the deviceType.
- if (!isMLBufferSupported(ml_context)) {
- return;
- }
-
- const dispatch_1_inputs = {
- 'lhs': ml_context.createBuffer(getDescriptorFromBuffer(inputs['lhs'])),
- 'rhs': ml_context.createBuffer(getDescriptorFromBuffer(inputs['rhs'])),
- };
-
- const dispatch_2_inputs = {
- 'lhs': ml_context.createBuffer(getDescriptorFromBuffer(inputs['lhs'])),
- 'rhs': ml_context.createBuffer(getDescriptorFromBuffer(inputs['rhs'])),
- };
-
- const dispatch_outputs = {
- 'output1':
- ml_context.createBuffer(getDescriptorFromBuffer(outputs['output1'])),
- 'output2':
- ml_context.createBuffer(getDescriptorFromBuffer(outputs['output2'])),
- };
-
- // Initialize inputs
- const input_1_data =
- new TypedArrayDict['float32'](sizeOfShape(shape)).fill(1.0);
- ml_context.writeBuffer(dispatch_1_inputs['lhs'], input_1_data);
- ml_context.writeBuffer(dispatch_1_inputs['rhs'], input_1_data);
-
- const input_2_data =
- new TypedArrayDict['float32'](sizeOfShape(shape)).fill(2.0);
- ml_context.writeBuffer(dispatch_2_inputs['lhs'], input_2_data);
- ml_context.writeBuffer(dispatch_2_inputs['rhs'], input_2_data);
-
- // Output = LHS_1 + RHS_1 = 1 + 1 = 2
- ml_context.dispatch(ml_graph, dispatch_1_inputs, dispatch_outputs);
-
- // Output = LHS_2 + RHS_2 = 2 + 2 = 4
- ml_context.dispatch(ml_graph, dispatch_2_inputs, dispatch_outputs);
-
- await assert_buffer_data_equals(
- ml_context, dispatch_outputs['output1'],
- new Float32Array(sizeOfShape(shape)).fill(4.0));
-
- await assert_buffer_data_equals(
- ml_context, dispatch_outputs['output2'],
- new Float32Array(sizeOfShape(shape)).fill(4.0));
- }, `${testName} / same_outputs`);
-
- promise_test(async () => {
- // MLBuffer was unsupported for the deviceType.
- if (!isMLBufferSupported(ml_context)) {
- return;
- }
-
- const dispatch_inputs = {
- 'lhs': ml_context.createBuffer(getDescriptorFromBuffer(inputs['lhs'])),
- 'rhs': ml_context.createBuffer(getDescriptorFromBuffer(inputs['rhs'])),
- };
-
- const dispatch_outputs = {
- 'output1':
- ml_context.createBuffer(getDescriptorFromBuffer(outputs['output1'])),
- 'output2':
- ml_context.createBuffer(getDescriptorFromBuffer(outputs['output2'])),
- };
-
- // Initialize inputs
- const input_data =
- new TypedArrayDict['float32'](sizeOfShape(shape)).fill(1.0);
- ml_context.writeBuffer(dispatch_inputs['lhs'], input_data);
- ml_context.writeBuffer(dispatch_inputs['rhs'], input_data);
-
- // Output = LHS + RHS = 1 + 1 = 2
- ml_context.dispatch(ml_graph, dispatch_inputs, dispatch_outputs);
- ml_context.dispatch(ml_graph, dispatch_inputs, dispatch_outputs);
-
- await assert_buffer_data_equals(
- ml_context, dispatch_outputs['output1'],
- new Float32Array(sizeOfShape(shape)).fill(2.0));
-
- await assert_buffer_data_equals(
- ml_context, dispatch_outputs['output2'],
- new Float32Array(sizeOfShape(shape)).fill(2.0));
- }, `${testName} / same_inputs_and_outputs`);
-
- promise_test(async () => {
- // MLBuffer was unsupported for the deviceType.
- if (!isMLBufferSupported(ml_context)) {
- return;
- }
-
- const dispatch_inputs = {
- 'lhs': ml_context.createBuffer(getDescriptorFromBuffer(inputs['lhs'])),
- 'rhs': ml_context.createBuffer(getDescriptorFromBuffer(inputs['rhs'])),
- };
-
- const dispatch_1_outputs = {
- 'output1':
- ml_context.createBuffer(getDescriptorFromBuffer(outputs['output1'])),
- 'output2':
- ml_context.createBuffer(getDescriptorFromBuffer(outputs['output2'])),
- };
-
- const dispatch_2_outputs = {
- 'output1':
- ml_context.createBuffer(getDescriptorFromBuffer(outputs['output1'])),
- 'output2':
- ml_context.createBuffer(getDescriptorFromBuffer(outputs['output2'])),
- };
-
- // Initialize inputs
- const input_data =
- new TypedArrayDict['float32'](sizeOfShape(shape)).fill(1.0);
- ml_context.writeBuffer(dispatch_inputs['lhs'], input_data);
- ml_context.writeBuffer(dispatch_inputs['rhs'], input_data);
-
- // Output_1 = LHS + RHS = 1 + 1 = 2
- ml_context.dispatch(ml_graph, dispatch_inputs, dispatch_1_outputs);
-
- // Output_2 = Output_1_LHS + Output_1_RHS = 2 + 2 = 4
- ml_context.dispatch(
- ml_graph, {
- 'lhs': dispatch_1_outputs['output1'],
- 'rhs': dispatch_1_outputs['output2'],
- },
- dispatch_2_outputs);
-
- // Output_1 = Output_2_LHS + Output_2_RHS = 4 + 4 = 8
- ml_context.dispatch(
- ml_graph, {
- 'lhs': dispatch_2_outputs['output1'],
- 'rhs': dispatch_2_outputs['output2'],
- },
- dispatch_1_outputs);
-
- await assert_buffer_data_equals(
- ml_context, dispatch_1_outputs['output1'],
- new Float32Array(sizeOfShape(shape)).fill(8));
-
- await assert_buffer_data_equals(
- ml_context, dispatch_1_outputs['output2'],
- new Float32Array(sizeOfShape(shape)).fill(8));
- }, `${testName} / outputs_as_inputs`);
-
- promise_test(async () => {
- // MLBuffer was unsupported for the deviceType.
- if (!isMLBufferSupported(ml_context)) {
- return;
- }
-
- // Construct a simple graph: OUTPUT = LHS - RHS.
- const builder = new MLGraphBuilder(ml_context);
- const operandType = {dataType: 'float32', dimensions: shape};
- const lhsOperand = builder.input('lhs', operandType);
- const rhsOperand = builder.input('rhs', operandType);
- const graph =
- await builder.build({'output': builder.sub(lhsOperand, rhsOperand)});
-
- const lhsBuffer =
- ml_context.createBuffer(getDescriptorFromBuffer(inputs['lhs']));
- const rhsBuffer =
- ml_context.createBuffer(getDescriptorFromBuffer(inputs['rhs']));
-
- const dispatchOutputs = {
- 'output':
- ml_context.createBuffer(getDescriptorFromBuffer(outputs['output1']))
- };
-
- // Initialize inputs
- ml_context.writeBuffer(
- lhsBuffer, new TypedArrayDict['float32'](sizeOfShape(shape)).fill(5.0));
- ml_context.writeBuffer(
- rhsBuffer, new TypedArrayDict['float32'](sizeOfShape(shape)).fill(3.0));
-
- // Output = LHS - RHS = 5 - 3 = 2
- ml_context.dispatch(
- graph, {
- 'lhs': lhsBuffer,
- 'rhs': rhsBuffer,
- },
- dispatchOutputs);
-
- await assert_buffer_data_equals(
- ml_context, dispatchOutputs['output'],
- new Float32Array(sizeOfShape(shape)).fill(2));
-
- // Output = RHS - LHS = 3 - 5 = -2
- ml_context.dispatch(
- graph, {
- 'lhs': rhsBuffer,
- 'rhs': lhsBuffer,
- },
- dispatchOutputs);
-
- await assert_buffer_data_equals(
- ml_context, dispatchOutputs['output'],
- new Float32Array(sizeOfShape(shape)).fill(-2));
- }, `${testName} / same name diff input buffers`);
-
- promise_test(async () => {
- // MLBuffer was unsupported for the deviceType.
- if (!isMLBufferSupported(ml_context)) {
- return;
- }
-
- const dispatchInputs = {
- 'lhs': ml_context.createBuffer(getDescriptorFromBuffer(inputs['lhs'])),
- 'rhs': ml_context.createBuffer(getDescriptorFromBuffer(inputs['rhs'])),
- };
-
- const outputBuffer1 =
- ml_context.createBuffer(getDescriptorFromBuffer(outputs['output1']));
- const outputBuffer2 =
- ml_context.createBuffer(getDescriptorFromBuffer(outputs['output2']));
-
- // Initialize inputs
- const inputData1 =
- new TypedArrayDict['float32'](sizeOfShape(shape)).fill(1.0);
- ml_context.writeBuffer(dispatchInputs['lhs'], inputData1);
- ml_context.writeBuffer(dispatchInputs['rhs'], inputData1);
-
- // Output = LHS + RHS = 1 + 1 = 2
- ml_context.dispatch(ml_graph, dispatchInputs, {
- 'output1': outputBuffer1,
- 'output2': outputBuffer2,
- });
-
- // Output = LHS + RHS = 2 + 2 = 4
- const inputData2 =
- new TypedArrayDict['float32'](sizeOfShape(shape)).fill(2.0);
- ml_context.writeBuffer(dispatchInputs['lhs'], inputData2);
- ml_context.writeBuffer(dispatchInputs['rhs'], inputData2);
-
- ml_context.dispatch(ml_graph, dispatchInputs, {
- 'output1': outputBuffer1,
- 'output2':
- ml_context.createBuffer(getDescriptorFromBuffer(outputs['output2'])),
- });
-
- // Ensure the last dispatch() did not modify the original second output
- // buffer.
- await assert_buffer_data_equals(
- ml_context, outputBuffer2,
- new Float32Array(sizeOfShape(shape)).fill(2));
- }, `${testName} / same name diff outputs buffers`);
-
- promise_test(async () => {
- // MLBuffer was unsupported for the deviceType.
- if (!isMLBufferSupported(ml_context)) {
- return;
- }
-
- const dispatchInputs = {
- 'lhs': ml_context.createBuffer(getDescriptorFromBuffer(inputs['lhs'])),
- 'rhs': ml_context.createBuffer(getDescriptorFromBuffer(inputs['rhs'])),
- };
-
- const dispatchOutputs = {
- 'output1':
- ml_context.createBuffer(getDescriptorFromBuffer(outputs['output1'])),
- 'output2':
- ml_context.createBuffer(getDescriptorFromBuffer(outputs['output2'])),
- };
-
- // Initialize inputs
- const inputData =
- new TypedArrayDict['float32'](sizeOfShape(shape)).fill(1.0);
- ml_context.writeBuffer(dispatchInputs['lhs'], inputData);
- ml_context.writeBuffer(dispatchInputs['rhs'], inputData);
-
- // Output = LHS + RHS = 1 + 1 = 2
- ml_context.dispatch(ml_graph, dispatchInputs, dispatchOutputs);
-
- // Check destroyed input buffers cannot be re-used in subsequent dispatches.
- dispatchInputs['lhs'].destroy();
- dispatchInputs['lhs'] =
- ml_context.createBuffer(getDescriptorFromBuffer(inputs['lhs']));
-
- const newInputData =
- new TypedArrayDict['float32'](sizeOfShape(shape)).fill(2.0);
- ml_context.writeBuffer(dispatchInputs['lhs'], newInputData);
-
- // Output = LHS + RHS = 2 + 1 = 3
- ml_context.dispatch(ml_graph, dispatchInputs, dispatchOutputs);
-
- await assert_buffer_data_equals(
- ml_context, dispatchOutputs['output1'],
- new Float32Array(sizeOfShape(shape)).fill(3));
-
- dispatchInputs['rhs'].destroy();
- dispatchInputs['rhs'] =
- ml_context.createBuffer(getDescriptorFromBuffer(inputs['rhs']));
- ml_context.writeBuffer(dispatchInputs['rhs'], newInputData);
-
- // Output = LHS + RHS = 2 + 2 = 4
- ml_context.dispatch(ml_graph, dispatchInputs, dispatchOutputs);
-
- await assert_buffer_data_equals(
- ml_context, dispatchOutputs['output1'],
- new Float32Array(sizeOfShape(shape)).fill(4));
- }, `${testName} / same name diff inputs buffers destroy`);
-
- promise_test(async () => {
- // MLBuffer was unsupported for the deviceType.
- if (!isMLBufferSupported(ml_context)) {
- return;
- }
-
- const dispatchInputs = {
- 'lhs': ml_context.createBuffer(getDescriptorFromBuffer(inputs['lhs'])),
- 'rhs': ml_context.createBuffer(getDescriptorFromBuffer(inputs['rhs'])),
- };
-
- const dispatchOutputs = {
- 'output1':
- ml_context.createBuffer(getDescriptorFromBuffer(outputs['output1'])),
- 'output2':
- ml_context.createBuffer(getDescriptorFromBuffer(outputs['output2'])),
+const webnn_conformance_test =
+ (buildGraphAndComputeFunc, toleranceFunc, testResources) => {
+ promise_test(async () => {
+ let context;
+ try {
+ context = await navigator.ml.createContext(contextOptions);
+ } catch (e) {
+ throw new AssertionError(
+ `Unable to create context for ${variant} variant. ${e}`);
+ }
+ const builder = new MLGraphBuilder(context);
+ const result = await buildGraphAndComputeFunc(
+ context, builder, testResources.graph);
+ assertResultsEquals(toleranceFunc, result.outputs, testResources.graph);
+ }, testResources.name);
};
-
- // Initialize inputs
- const inputData =
- new TypedArrayDict['float32'](sizeOfShape(shape)).fill(1.0);
- ml_context.writeBuffer(dispatchInputs['lhs'], inputData);
- ml_context.writeBuffer(dispatchInputs['rhs'], inputData);
-
- // Output = LHS + RHS = 1 + 1 = 2
- ml_context.dispatch(ml_graph, dispatchInputs, dispatchOutputs);
-
- // Check destroyed output buffers cannot be re-used in subsequent
- // dispatches.
- dispatchOutputs['output1'].destroy();
- dispatchOutputs['output1'] = ml_context.createBuffer(
- getDescriptorFromBuffer(outputs['output1']));
-
- const newInputData =
- new TypedArrayDict['float32'](sizeOfShape(shape)).fill(2.0);
- ml_context.writeBuffer(dispatchInputs['lhs'], newInputData);
-
- // Output = LHS + RHS = 2 + 1 = 3
- ml_context.dispatch(ml_graph, dispatchInputs, dispatchOutputs);
-
- await assert_buffer_data_equals(
- ml_context, dispatchOutputs['output1'],
- new Float32Array(sizeOfShape(shape)).fill(3));
- }, `${testName} / same name diff outputs buffers destroy`);
-};
diff --git a/tests/wpt/tests/webnn/resources/utils_validation.js b/tests/wpt/tests/webnn/resources/utils_validation.js
index 119450be4c1..da5786ca86b 100644
--- a/tests/wpt/tests/webnn/resources/utils_validation.js
+++ b/tests/wpt/tests/webnn/resources/utils_validation.js
@@ -1,6 +1,6 @@
'use strict';
-// https://webmachinelearning.github.io/webnn/#enumdef-mloperanddatatype
+// https://www.w3.org/TR/webnn/#enumdef-mloperanddatatype
const allWebNNOperandDataTypes = [
'float32',
'float16',
@@ -195,7 +195,7 @@ function generateOutOfRangeValuesArray(type) {
let inputIndex = 0;
let inputAIndex = 0;
let inputBIndex = 0;
-let context, builder;
+let context;
test(() => assert_not_equals(navigator.ml, undefined, "ml property is defined on navigator"));
@@ -204,7 +204,6 @@ promise_setup(async () => {
return;
}
context = await navigator.ml.createContext();
- builder = new MLGraphBuilder(context);
}, {explicit_timeout: true});
function validateTwoInputsBroadcastable(operationName) {
@@ -212,6 +211,7 @@ function validateTwoInputsBroadcastable(operationName) {
return;
}
promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
for (let dataType of allWebNNOperandDataTypes) {
if (!context.opSupportLimits().input.dataTypes.includes(dataType)) {
assert_throws_js(
@@ -226,6 +226,7 @@ function validateTwoInputsBroadcastable(operationName) {
const unbroadcastableDimensionsArray = generateUnbroadcastableDimensionsArray(dimensions);
for (let unbroadcastableDimensions of unbroadcastableDimensionsArray) {
const inputB = builder.input(`inputB${++inputBIndex}`, {dataType, dimensions: unbroadcastableDimensions});
+ assert_equals(typeof builder[operationName], 'function');
assert_throws_js(
TypeError, () => builder[operationName](inputA, inputB));
assert_throws_js(
@@ -251,6 +252,7 @@ function validateTwoInputsOfSameDataType(operationName) {
}
for (let subOperationName of operationNameArray) {
promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
for (let dataType of allWebNNOperandDataTypes) {
if (!context.opSupportLimits().input.dataTypes.includes(dataType)) {
assert_throws_js(
@@ -272,6 +274,7 @@ function validateTwoInputsOfSameDataType(operationName) {
}
if (dataType !== dataTypeB) {
const inputB = builder.input(`inputB${++inputBIndex}`, {dataType: dataTypeB, dimensions});
+ assert_equals(typeof builder[subOperationName], 'function');
assert_throws_js(
TypeError, () => builder[subOperationName](inputA, inputB));
}
@@ -304,6 +307,7 @@ function validateOptionsAxes(operationName) {
for (let subOperationName of operationNameArray) {
// TypeError is expected if any of options.axes elements is not an unsigned long interger
promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
for (let dataType of allWebNNOperandDataTypes) {
if (!context.opSupportLimits().input.dataTypes.includes(dataType)) {
assert_throws_js(
@@ -318,6 +322,7 @@ function validateOptionsAxes(operationName) {
const input =
builder.input(`input${++inputIndex}`, {dataType, dimensions});
for (let invalidAxis of invalidAxisArray) {
+ assert_equals(typeof builder[subOperationName], 'function');
assert_throws_js(
TypeError,
() => builder[subOperationName](input, {axes: invalidAxis}));
@@ -326,6 +331,7 @@ function validateOptionsAxes(operationName) {
assert_false(
typeof axis === 'number' && Number.isInteger(axis),
`[${subOperationName}] any of options.axes elements should be of 'unsigned long'`);
+ assert_equals(typeof builder[subOperationName], 'function');
assert_throws_js(
TypeError,
() => builder[subOperationName](input, {axes: [axis]}));
@@ -338,6 +344,7 @@ function validateOptionsAxes(operationName) {
// TypeError is expected if any of options.axes elements is greater or equal
// to the size of input
promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
for (let dataType of allWebNNOperandDataTypes) {
if (!context.opSupportLimits().input.dataTypes.includes(dataType)) {
assert_throws_js(
@@ -351,6 +358,7 @@ function validateOptionsAxes(operationName) {
if (rank >= 1) {
const input =
builder.input(`input${++inputIndex}`, {dataType, dimensions});
+ assert_equals(typeof builder[subOperationName], 'function');
assert_throws_js(
TypeError,
() => builder[subOperationName](input, {axes: [rank]}));
@@ -364,6 +372,7 @@ function validateOptionsAxes(operationName) {
// TypeError is expected if two or more values are same in the axes sequence
promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
for (let dataType of allWebNNOperandDataTypes) {
if (!context.opSupportLimits().input.dataTypes.includes(dataType)) {
assert_throws_js(
@@ -380,6 +389,7 @@ function validateOptionsAxes(operationName) {
const axesArrayContainSameValues =
getAxesArrayContainSameValues(dimensions);
for (let axes of axesArrayContainSameValues) {
+ assert_equals(typeof builder[subOperationName], 'function');
assert_throws_js(
TypeError, () => builder[subOperationName](input, {axes}));
}
@@ -390,17 +400,17 @@ function validateOptionsAxes(operationName) {
}
}
+// TODO: remove this method once all the data type limits of the unary
+// operations are specified in context.OpSupportLimits().
/**
* Validate a unary operation
* @param {String} operationName - An operation name
* @param {Array} supportedDataTypes - Test building with these data types
* succeeds and test building with all other data types fails
- * @param {Boolean} alsoBuildActivation - If test building this operation as an
- * activation
*/
-function validateUnaryOperation(
- operationName, supportedDataTypes, alsoBuildActivation = false) {
+function validateUnaryOperation(operationName, supportedDataTypes) {
promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
for (let dataType of supportedDataTypes) {
if (!context.opSupportLimits().input.dataTypes.includes(dataType)) {
assert_throws_js(
@@ -411,6 +421,7 @@ function validateUnaryOperation(
}
for (let dimensions of allWebNNDimensionsArray) {
const input = builder.input(`input`, {dataType, dimensions});
+ assert_equals(typeof builder[operationName], 'function');
const output = builder[operationName](input);
assert_equals(output.dataType(), dataType);
assert_array_equals(output.shape(), dimensions);
@@ -421,6 +432,7 @@ function validateUnaryOperation(
const unsupportedDataTypes =
new Set(allWebNNOperandDataTypes).difference(new Set(supportedDataTypes));
promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
for (let dataType of unsupportedDataTypes) {
if (!context.opSupportLimits().input.dataTypes.includes(dataType)) {
assert_throws_js(
@@ -431,16 +443,56 @@ function validateUnaryOperation(
}
for (let dimensions of allWebNNDimensionsArray) {
const input = builder.input(`input`, {dataType, dimensions});
+ assert_equals(typeof builder[operationName], 'function');
assert_throws_js(TypeError, () => builder[operationName](input));
}
}
}, `[${operationName}] Throw if the dataType is not supported for an unary operator.`);
+}
- if (alsoBuildActivation) {
- promise_test(async t => {
- builder[operationName]();
- }, `[${operationName}] Test building an activation`);
- }
+/**
+ * Validate a single input operation
+ * @param {String} operationName - An operation name
+ */
+function validateSingleInputOperation(operationName) {
+ promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
+ const supportedDataTypes =
+ context.opSupportLimits()[operationName].input.dataTypes;
+ for (let dataType of supportedDataTypes) {
+ if (!context.opSupportLimits().input.dataTypes.includes(dataType)) {
+ continue;
+ }
+ for (let dimensions of allWebNNDimensionsArray) {
+ const input = builder.input(`input`, {dataType, dimensions});
+ const output = builder[operationName](input);
+ assert_equals(output.dataType(), dataType);
+ assert_array_equals(output.shape(), dimensions);
+ }
+ }
+ }, `[${operationName}] Test building the operator with supported data type.`);
+
+ promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
+ const unsupportedDataTypes =
+ new Set(allWebNNOperandDataTypes)
+ .difference(new Set(
+ context.opSupportLimits()[operationName].input.dataTypes));
+ for (let dataType of unsupportedDataTypes) {
+ if (!context.opSupportLimits().input.dataTypes.includes(dataType)) {
+ assert_throws_js(
+ TypeError,
+ () => builder.input(
+ `inputA${++inputAIndex}`, {dataType, dimensions1D}));
+ continue;
+ }
+ for (let dimensions of allWebNNDimensionsArray) {
+ const input = builder.input(`input`, {dataType, dimensions});
+ assert_equals(typeof builder[operationName], 'function');
+ assert_throws_js(TypeError, () => builder[operationName](input));
+ }
+ }
+ }, `[${operationName}] Throw if the data type is not supported for the operator.`);
}
/**
@@ -457,6 +509,7 @@ function validateInputFromAnotherBuilder(operatorName, operatorDescriptor = {
multi_builder_test(async (t, builder, otherBuilder) => {
const inputFromOtherBuilder =
otherBuilder.input('input', operatorDescriptor);
+ assert_equals(typeof builder[operatorName], 'function');
assert_throws_js(
TypeError, () => builder[operatorName](inputFromOtherBuilder));
}, `[${operatorName}] throw if input is from another builder`);
@@ -475,6 +528,7 @@ function validateTwoInputsFromMultipleBuilders(operatorName) {
const inputFromOtherBuilder = otherBuilder.input('other', opDescriptor);
const input = builder.input('input', opDescriptor);
+ assert_equals(typeof builder[operatorName], 'function');
assert_throws_js(
TypeError, () => builder[operatorName](inputFromOtherBuilder, input));
}, `[${operatorName}] throw if first input is from another builder`);
@@ -483,6 +537,7 @@ function validateTwoInputsFromMultipleBuilders(operatorName) {
const inputFromOtherBuilder = otherBuilder.input('other', opDescriptor);
const input = builder.input('input', opDescriptor);
+ assert_equals(typeof builder[operatorName], 'function');
assert_throws_js(
TypeError, () => builder[operatorName](input, inputFromOtherBuilder));
}, `[${operatorName}] throw if second input is from another builder`);
diff --git a/tests/wpt/tests/webnn/validation_tests/argMinMax.https.any.js b/tests/wpt/tests/webnn/validation_tests/argMinMax.https.any.js
index 2d7b286c871..5d6806e5f4c 100644
--- a/tests/wpt/tests/webnn/validation_tests/argMinMax.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/argMinMax.https.any.js
@@ -9,140 +9,91 @@ const kArgMinMaxOperators = [
'argMax',
];
+const label = 'arg_min_max_1_!';
+
const tests = [
{
name: '[argMin/Max] Test with default options.',
input: {dataType: 'float32', dimensions: [1, 2, 3, 4]},
- output: {dimensions: []}
+ axis: 0,
+ output: {dimensions: [2, 3, 4]}
},
{
- name: '[argMin/Max] Test with axes=[].',
+ name: '[argMin/Max] Test with axes=1.',
input: {dataType: 'float32', dimensions: [1, 2, 3, 4]},
- options: {
- axes: [],
- },
- output: {dimensions: [1, 2, 3, 4]}
- },
- {
- name: '[argMin/Max] Test scalar input with empty axes.',
- input: {dataType: 'float32', dimensions: []},
- options: {
- axes: [],
- },
- output: {dimensions: []}
- },
- {
- name: '[argMin/Max] Test with axes=[1].',
- input: {dataType: 'float32', dimensions: [1, 2, 3, 4]},
- options: {
- axes: [1],
- },
+ axis: 1,
output: {dimensions: [1, 3, 4]}
},
{
- name: '[argMin/Max] Test with axes=[1, 3] and keepDimensions=true.',
- input: {dataType: 'float32', dimensions: [1, 2, 3, 4]},
- options: {
- axes: [1, 3],
- keepDimensions: true,
- },
- output: {dimensions: [1, 1, 3, 1]}
- },
- {
- name: '[argMin/Max] Test with axes=[1, 3] and keepDimensions=false.',
- input: {dataType: 'float32', dimensions: [1, 2, 3, 4]},
- options: {
- axes: [1, 3],
- keepDimensions: false,
- },
- output: {dimensions: [1, 3]}
- },
- {
- name: '[argMin/Max] Test with axes=[1] and selectLastIndex=true.',
+ name: '[argMin/Max] Test with outputDataType=int32',
input: {dataType: 'float32', dimensions: [1, 2, 3, 4]},
+ axis: 1,
options: {
- axes: [1],
- selectLastIndex: true,
+ outputDataType: 'int32',
},
output: {dimensions: [1, 3, 4]}
},
{
- name: '[argMin/Max] Test with axes=[1] and selectLastIndex=false.',
+ name: '[argMin/Max] Test with outputDataType=int64',
input: {dataType: 'float32', dimensions: [1, 2, 3, 4]},
+ axis: 1,
options: {
- axes: [1],
- selectLastIndex: false,
+ outputDataType: 'int64',
},
output: {dimensions: [1, 3, 4]}
},
{
name:
- '[argMin/Max] Throw if the value in axes is greater than or equal to input rank.',
+ '[argMin/Max] Throw if the value in axis is greater than or equal to input rank.',
input: {dataType: 'float32', dimensions: [1, 2, 3, 4]},
+ axis: 4,
options: {
- axes: [4],
+ label: label,
},
},
{
- name:
- '[argMin/Max] Throw if two or more values are same in the axes sequence.',
- input: {dataType: 'float32', dimensions: [1, 2, 3, 4]},
- options: {
- axes: [1, 1],
- },
- },
- {
- name: '[argMin/Max] Throw if input is a scalar and axes is non-empty.',
+ name: '[argMin/Max] Throw if input is a scalar and axis=0.',
input: {dataType: 'float32', dimensions: []},
+ axis: 0,
options: {
- axes: [1],
+ label: label,
},
},
- {
- name: '[argMin/Max] Test with outputDataType=int32',
- input: {dataType: 'float32', dimensions: [1, 2, 3, 4]},
- options: {
- axes: [1],
- outputDataType: 'int32',
- },
- output: {dimensions: [1, 3, 4]}
- },
- {
- name: '[argMin/Max] Test with outputDataType=int64',
- input: {dataType: 'float32', dimensions: [1, 2, 3, 4]},
- options: {
- axes: [1],
- outputDataType: 'int64',
- },
- output: {dimensions: [1, 3, 4]}
- },
];
function runTests(operatorName, tests) {
tests.forEach(test => {
promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
const input = builder.input(
- 'input',
- {dataType: test.input.dataType, dimensions: test.input.dimensions});
+ 'input',
+ { dataType: test.input.dataType, dimensions: test.input.dimensions });
+ const axis = test.axis;
if (test.options && test.options.outputDataType !== undefined) {
if (context.opSupportLimits()[operatorName].output.dataTypes.includes(
- test.options.outputDataType)) {
- const output = builder[operatorName](input, test.options);
+ test.options.outputDataType)) {
+ const output = builder[operatorName](input, axis, test.options);
assert_equals(output.dataType(), test.options.outputDataType);
assert_array_equals(output.shape(), test.output.dimensions);
} else {
assert_throws_js(
- TypeError, () => builder[operatorName](input, test.options));
+ TypeError, () => builder[operatorName](input, axis, test.options));
}
return;
}
if (test.output) {
- const output = builder[operatorName](input, test.options);
+ const output = builder[operatorName](input, axis, test.options);
assert_equals(output.dataType(), 'int32');
assert_array_equals(output.shape(), test.output.dimensions);
} else {
- assert_throws_js(
- TypeError, () => builder[operatorName](input, test.options));
+ try {
+ builder[operatorName](input, axis, test.options);
+ } catch (e) {
+ assert_equals(e.name, 'TypeError');
+ const error_message = e.message;
+ const regrexp = /\[arg_min_max_1_\!\]/;
+ assert_not_equals(error_message.match(regrexp), null);
+ }
}
}, test.name.replace('[argMin/Max]', `[${operatorName}]`));
});
diff --git a/tests/wpt/tests/webnn/validation_tests/batchNormalization.https.any.js b/tests/wpt/tests/webnn/validation_tests/batchNormalization.https.any.js
index 7a2755927ca..2fec37dcbf5 100644
--- a/tests/wpt/tests/webnn/validation_tests/batchNormalization.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/batchNormalization.https.any.js
@@ -76,6 +76,7 @@ multi_builder_test(async (t, builder, otherBuilder) => {
() => builder.batchNormalization(input, mean, variance, options));
}, '[batchNormalization] throw if bias option is from another builder');
+const label = `batchNormalization_?_123`;
const tests = [
{
name: '[batchNormalization] Test with default options.',
@@ -101,6 +102,9 @@ const tests = [
input: {dataType: 'int32', dimensions: [1, 2, 5, 5]},
mean: {dataType: 'int32', dimensions: [2]},
variance: {dataType: 'int32', dimensions: [2]},
+ options: {
+ label: label,
+ },
},
{
name:
@@ -108,12 +112,18 @@ const tests = [
input: {dataType: 'float32', dimensions: [1, 2, 5, 5]},
mean: {dataType: 'float16', dimensions: [2]},
variance: {dataType: 'float32', dimensions: [2]},
+ options: {
+ label: label,
+ },
},
{
name: '[batchNormalization] Throw if the mean operand is not a 1-D tensor.',
input: {dataType: 'float32', dimensions: [1, 2, 5, 5]},
mean: {dataType: 'float32', dimensions: [1, 2]},
variance: {dataType: 'float32', dimensions: [2]},
+ options: {
+ label: label,
+ },
},
{
name:
@@ -123,6 +133,7 @@ const tests = [
variance: {dataType: 'float32', dimensions: [2]},
options: {
axis: 1,
+ label: label,
},
},
{
@@ -131,6 +142,9 @@ const tests = [
input: {dataType: 'float32', dimensions: [1, 2, 5, 5]},
mean: {dataType: 'float32', dimensions: [2]},
variance: {dataType: 'float16', dimensions: [2]},
+ options: {
+ label: label,
+ },
},
{
name:
@@ -138,6 +152,9 @@ const tests = [
input: {dataType: 'float32', dimensions: [1, 2, 5, 5]},
mean: {dataType: 'float32', dimensions: [2]},
variance: {dataType: 'float32', dimensions: [2, 2]},
+ options: {
+ label: label,
+ },
},
{
name:
@@ -147,6 +164,7 @@ const tests = [
variance: {dataType: 'float32', dimensions: [2]},
options: {
axis: 2,
+ label: label,
},
},
{
@@ -157,6 +175,7 @@ const tests = [
variance: {dataType: 'float16', dimensions: [2]},
options: {
scale: {dataType: 'float32', dimensions: [2]},
+ label: label,
},
},
{
@@ -167,6 +186,7 @@ const tests = [
variance: {dataType: 'float32', dimensions: [2]},
options: {
scale: {dataType: 'float32', dimensions: [2, 1]},
+ label: label,
},
},
{
@@ -178,6 +198,7 @@ const tests = [
options: {
axis: 2,
scale: {dataType: 'float32', dimensions: [2]},
+ label: label,
},
},
{
@@ -188,6 +209,7 @@ const tests = [
variance: {dataType: 'float16', dimensions: [2]},
options: {
bias: {dataType: 'float32', dimensions: [2]},
+ label: label,
},
},
{
@@ -197,6 +219,7 @@ const tests = [
variance: {dataType: 'float32', dimensions: [2]},
options: {
bias: {dataType: 'float32', dimensions: [2, 1]},
+ label: label,
},
},
{
@@ -208,6 +231,7 @@ const tests = [
options: {
axis: 2,
bias: {dataType: 'float32', dimensions: [2]},
+ label: label,
},
},
{
@@ -218,12 +242,14 @@ const tests = [
variance: {dataType: 'float32', dimensions: [5]},
options: {
axis: 4,
+ label: label,
},
},
];
tests.forEach(
test => promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
const input = builder.input(
'input',
{dataType: test.input.dataType, dimensions: test.input.dimensions});
@@ -254,9 +280,13 @@ tests.forEach(
assert_equals(output.dataType(), test.output.dataType);
assert_array_equals(output.shape(), test.output.dimensions);
} else {
- assert_throws_js(
- TypeError,
- () => builder.batchNormalization(
- input, mean, variance, test.options));
+ try {
+ builder.batchNormalization(input, mean, variance, test.options);
+ } catch (e) {
+ assert_equals(e.name, 'TypeError');
+ const error_message = e.message;
+ const regrexp = /\[batchNormalization_\?_123\]/;
+ assert_not_equals(error_message.match(regrexp), null);
+ }
}
}, test.name));
diff --git a/tests/wpt/tests/webnn/validation_tests/build-more-than-once.https.any.js b/tests/wpt/tests/webnn/validation_tests/build-more-than-once.https.any.js
new file mode 100644
index 00000000000..d0d6800f682
--- /dev/null
+++ b/tests/wpt/tests/webnn/validation_tests/build-more-than-once.https.any.js
@@ -0,0 +1,95 @@
+// META: title=ensure MLMLGraphBuilder may build at most one MLGraph
+// META: global=window,dedicatedworker
+// META: script=../resources/utils_validation.js
+
+const kExampleInputDescriptor = {
+ dataType: 'float32',
+ dimensions: [2]
+};
+
+promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
+ const a = builder.input('a', kExampleInputDescriptor);
+ const b = builder.input('b', kExampleInputDescriptor);
+ const c = builder.add(a, b);
+ const graph = await builder.build({c});
+
+ await promise_rejects_dom(t, 'InvalidStateError', builder.build({c}));
+}, 'Throw if attempting to build a second graph with an MLGraphBuilder');
+
+promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
+ const a = builder.input('a', kExampleInputDescriptor);
+ const b = builder.input('b', kExampleInputDescriptor);
+ const c = builder.add(a, b);
+ const graph_promise_not_awaited = builder.build({c});
+
+ await promise_rejects_dom(t, 'InvalidStateError', builder.build({c}));
+}, 'Throw if attempting to build a second graph without awaiting the first');
+
+promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
+ const a = builder.input('a', kExampleInputDescriptor);
+ const b = builder.input('b', kExampleInputDescriptor);
+ const c = builder.add(a, b);
+ const graph = await builder.build({c});
+
+ assert_throws_dom('InvalidStateError', () => builder.sub(a, b));
+}, 'Throw if an operand-yielding method is called on a built MLGraphBuilder');
+
+promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
+ const a = builder.input('a', kExampleInputDescriptor);
+ const b = builder.input('b', kExampleInputDescriptor);
+ const c = builder.add(a, b);
+ const graph = await builder.build({c});
+
+ assert_throws_dom(
+ 'InvalidStateError', () => builder.input('d', kExampleInputDescriptor));
+}, 'Throw if adding an input operand to a built MLGraphBuilder');
+
+promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
+ const a = builder.input('a', kExampleInputDescriptor);
+ const b = builder.input('b', kExampleInputDescriptor);
+ const c = builder.add(a, b);
+ const graph = await builder.build({c});
+
+ const buffer = new ArrayBuffer(8);
+ const bufferView = new Float32Array(buffer);
+
+ assert_throws_dom(
+ 'InvalidStateError',
+ () => builder.constant(kExampleInputDescriptor, bufferView));
+}, 'Throw if adding a constant operand to a built MLGraphBuilder');
+
+promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
+ const a = builder.input('a', kExampleInputDescriptor);
+ const b = builder.input('b', kExampleInputDescriptor);
+ const c = builder.add(a, b);
+
+ // Call build() with invalid parameters.
+ await promise_rejects_js(t, TypeError, builder.build({a}));
+
+ // Passing valid parameters successfully creates the graph...
+ const graph = await builder.build({c});
+
+ // ...exactly once!
+ await promise_rejects_dom(t, 'InvalidStateError', builder.build({c}));
+}, 'An MLGraphBuilder remains unbuilt if build() is called with invalid paramaters');
+
+promise_test(async t => {
+ const builder1 = new MLGraphBuilder(context);
+ const builder2 = new MLGraphBuilder(context);
+
+ const a1 = builder1.input('a', kExampleInputDescriptor);
+ const b1 = builder1.input('b', kExampleInputDescriptor);
+ const c1 = builder1.add(a1, b1);
+ const graph1 = await builder1.build({c1});
+
+ const a2 = builder2.input('a', kExampleInputDescriptor);
+ const b2 = builder2.input('b', kExampleInputDescriptor);
+ const c2 = builder2.add(a2, b2);
+ const graph2 = await builder2.build({c2});
+}, 'Build two graphs with separate MLGraphBuilders');
diff --git a/tests/wpt/tests/webnn/validation_tests/clamp.https.any.js b/tests/wpt/tests/webnn/validation_tests/clamp.https.any.js
index 96600c22f8b..5a347bd230e 100644
--- a/tests/wpt/tests/webnn/validation_tests/clamp.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/clamp.https.any.js
@@ -9,6 +9,7 @@ validateInputFromAnotherBuilder('clamp');
validateUnaryOperation('clamp', allWebNNOperandDataTypes);
promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
const options = {minValue: 1.0, maxValue: 3.0};
if (!context.opSupportLimits().input.dataTypes.includes('uint32')) {
assert_throws_js(
@@ -22,9 +23,10 @@ promise_test(async t => {
const output = builder.clamp(input, options);
assert_equals(output.dataType(), 'uint32');
assert_array_equals(output.shape(), [1, 2, 3]);
-}, '[clamp] Test building an operator with options');
+}, '[clamp] Build with options');
promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
const options = {minValue: 0, maxValue: 0};
if (!context.opSupportLimits().input.dataTypes.includes('int32')) {
assert_throws_js(
@@ -38,10 +40,16 @@ promise_test(async t => {
const output = builder.clamp(input, options);
assert_equals(output.dataType(), 'int32');
assert_array_equals(output.shape(), [1, 2, 3, 4]);
-}, '[clamp] Test building an operator with options.minValue == options.maxValue');
+}, '[clamp] Build with options.minValue == options.maxValue');
+const label = '123_clamp';
promise_test(async t => {
- const options = {minValue: 3.0, maxValue: 1.0};
+ const builder = new MLGraphBuilder(context);
+ const options = {
+ minValue: 3.0,
+ maxValue: 1.0,
+ label: label,
+ };
if (!context.opSupportLimits().input.dataTypes.includes('uint8')) {
assert_throws_js(
TypeError,
@@ -51,13 +59,24 @@ promise_test(async t => {
}
const input =
builder.input('input', {dataType: 'uint8', dimensions: [1, 2, 3]});
- assert_throws_js(TypeError, () => builder.clamp(input, options));
-}, '[clamp] Throw if options.minValue > options.maxValue when building an operator');
+ try {
+ builder.clamp(input, options);
+ } catch (e) {
+ assert_equals(e.name, 'TypeError');
+ const error_message = e.message;
+ const regrexp = new RegExp('\\[' + label + '\\]');
+ assert_not_equals(error_message.match(regrexp), null);
+ }
+}, '[clamp] Throw if options.minValue > options.maxValue');
// To be removed once infinite `minValue` is allowed. Tracked in
// https://github.com/webmachinelearning/webnn/pull/647.
promise_test(async t => {
- const options = {minValue: -Infinity};
+ const builder = new MLGraphBuilder(context);
+ const options = {
+ minValue: -Infinity,
+ label: label,
+ };
const input = builder.input('input', {dataType: 'float16', dimensions: []});
assert_throws_js(TypeError, () => builder.clamp(input, options));
-}, '[clamp] Throw if options.minValue is -Infinity when building an operator');
+}, '[clamp] Throw if options.minValue is -Infinity');
diff --git a/tests/wpt/tests/webnn/validation_tests/compute-multiple-arraybufferviews-sharing-same-arraybuffer.https.any.js b/tests/wpt/tests/webnn/validation_tests/compute-multiple-arraybufferviews-sharing-same-arraybuffer.https.any.js
index 42b123a97e5..f7210e55d45 100644
--- a/tests/wpt/tests/webnn/validation_tests/compute-multiple-arraybufferviews-sharing-same-arraybuffer.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/compute-multiple-arraybufferviews-sharing-same-arraybuffer.https.any.js
@@ -5,46 +5,52 @@
// These tests are used to reproduce the Chromium issue:
// https://issues.chromium.org/issues/332002364
promise_test(async t => {
- const a = builder.input('a', {dataType: 'float32', dimensions: [2]});
- const b = builder.input('b', {dataType: 'float32', dimensions: [2]});
- const c = builder.add(a, b);
- const graph = await builder.build({c});
- const arraybuffer = new ArrayBuffer(100);
- const aBuffer = new Float32Array(arraybuffer, 0, 2);
- const bBuffer = new Float32Array(arraybuffer, 8, 2);
- const cBuffer = new Float32Array(2);
- const promise = context.compute(graph, {'a': aBuffer, 'b': bBuffer}, {'c': cBuffer});
- promise_rejects_js(t, TypeError, promise);
- }, 'Throw if two input ArrayBufferViews sharing the same ArrayBuffer');
+ const builder = new MLGraphBuilder(context);
+ const a = builder.input('a', {dataType: 'float32', dimensions: [2]});
+ const b = builder.input('b', {dataType: 'float32', dimensions: [2]});
+ const c = builder.add(a, b);
+ const graph = await builder.build({c});
+ const arraybuffer = new ArrayBuffer(100);
+ const aBuffer = new Float32Array(arraybuffer, 0, 2);
+ const bBuffer = new Float32Array(arraybuffer, 8, 2);
+ const cBuffer = new Float32Array(2);
+ const promise =
+ context.compute(graph, {'a': aBuffer, 'b': bBuffer}, {'c': cBuffer});
+ promise_rejects_js(t, TypeError, promise);
+}, 'Throw if two input ArrayBufferViews sharing the same ArrayBuffer');
promise_test(async t => {
- const a = builder.input('a', {dataType: 'float32', dimensions: [2]});
- const [b, c] = builder.split(a, 2);
- const graph = await builder.build({b, c});
- const aBuffer = new Float32Array(2);
- const arraybuffer = new ArrayBuffer(100);
- const bBuffer = new Float32Array(arraybuffer, 0, 1);
- const cBuffer = new Float32Array(arraybuffer, 4, 1);
- const promise = context.compute(graph, {'a': aBuffer}, {'b': bBuffer, 'c': cBuffer});
- promise_rejects_js(t, TypeError, promise);
+ const builder = new MLGraphBuilder(context);
+ const a = builder.input('a', {dataType: 'float32', dimensions: [2]});
+ const [b, c] = builder.split(a, 2);
+ const graph = await builder.build({b, c});
+ const aBuffer = new Float32Array(2);
+ const arraybuffer = new ArrayBuffer(100);
+ const bBuffer = new Float32Array(arraybuffer, 0, 1);
+ const cBuffer = new Float32Array(arraybuffer, 4, 1);
+ const promise =
+ context.compute(graph, {'a': aBuffer}, {'b': bBuffer, 'c': cBuffer});
+ promise_rejects_js(t, TypeError, promise);
}, 'Throw if two output ArrayBufferViews sharing the same ArrayBuffer');
promise_test(async t => {
- const a = builder.input('a', {dataType: 'float32', dimensions: [2]});
- const b = builder.relu(a);
- const graph = await builder.build({b});
- const arraybuffer = new ArrayBuffer(100);
- const aBuffer = new Float32Array(arraybuffer, 0, 2);
- const bBuffer = new Float32Array(arraybuffer, 8, 2);
- const promise = context.compute(graph, {'a': aBuffer}, {'b': bBuffer});
- promise_rejects_js(t, TypeError, promise);
+ const builder = new MLGraphBuilder(context);
+ const a = builder.input('a', {dataType: 'float32', dimensions: [2]});
+ const b = builder.relu(a);
+ const graph = await builder.build({b});
+ const arraybuffer = new ArrayBuffer(100);
+ const aBuffer = new Float32Array(arraybuffer, 0, 2);
+ const bBuffer = new Float32Array(arraybuffer, 8, 2);
+ const promise = context.compute(graph, {'a': aBuffer}, {'b': bBuffer});
+ promise_rejects_js(t, TypeError, promise);
}, 'Throw if input and output ArrayBufferViews sharing the same ArrayBuffer');
promise_test(async t => {
- const a = builder.input('a', {dataType: 'float32', dimensions: [2]});
- const b = builder.relu(a);
- const graph = await builder.build({b});
- const buffer = new Float32Array(2);
- const promise = context.compute(graph, {'a': buffer}, {'b': buffer});
- promise_rejects_js(t, TypeError, promise);
+ const builder = new MLGraphBuilder(context);
+ const a = builder.input('a', {dataType: 'float32', dimensions: [2]});
+ const b = builder.relu(a);
+ const graph = await builder.build({b});
+ const buffer = new Float32Array(2);
+ const promise = context.compute(graph, {'a': buffer}, {'b': buffer});
+ promise_rejects_js(t, TypeError, promise);
}, 'Throw if input and output are the same ArrayBufferView');
diff --git a/tests/wpt/tests/webnn/validation_tests/concat.https.any.js b/tests/wpt/tests/webnn/validation_tests/concat.https.any.js
index b61f2d2bc77..6fe22c02bcd 100644
--- a/tests/wpt/tests/webnn/validation_tests/concat.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/concat.https.any.js
@@ -4,32 +4,39 @@
'use strict';
+const label = `concate_123`;
const tests = [
{
name: '[concat] Test building Concat with one input.',
- inputs: [{dataType: 'float32', dimensions: [4,4,3]}],
+ inputs: [{dataType: 'float32', dimensions: [4, 4, 3]}],
axis: 2,
- output: {dataType: 'float32', dimensions: [4,4,3]}
+ output: {dataType: 'float32', dimensions: [4, 4, 3]}
},
{
name: '[concat] Test building Concat with two inputs',
- inputs: [{dataType: 'float32', dimensions: [3,1,5]},
- {dataType: 'float32', dimensions: [3,2,5]}],
+ inputs: [
+ {dataType: 'float32', dimensions: [3, 1, 5]},
+ {dataType: 'float32', dimensions: [3, 2, 5]}
+ ],
axis: 1,
- output: {dataType: 'float32', dimensions: [3,3,5]}
+ output: {dataType: 'float32', dimensions: [3, 3, 5]}
},
{
name: '[concat] Test building Concat with three inputs',
- inputs: [{dataType: 'float32', dimensions: [3,5,1]},
- {dataType: 'float32', dimensions: [3,5,2]},
- {dataType: 'float32', dimensions: [3,5,3]}],
+ inputs: [
+ {dataType: 'float32', dimensions: [3, 5, 1]},
+ {dataType: 'float32', dimensions: [3, 5, 2]},
+ {dataType: 'float32', dimensions: [3, 5, 3]}
+ ],
axis: 2,
- output: {dataType: 'float32', dimensions: [3,5,6]}
+ output: {dataType: 'float32', dimensions: [3, 5, 6]}
},
{
name: '[concat] Test building Concat with two 1D inputs.',
- inputs: [{dataType: 'float32', dimensions: [1]},
- {dataType: 'float32', dimensions: [1]}],
+ inputs: [
+ {dataType: 'float32', dimensions: [1]},
+ {dataType: 'float32', dimensions: [1]}
+ ],
axis: 0,
output: {dataType: 'float32', dimensions: [2]}
},
@@ -39,39 +46,52 @@ const tests = [
},
{
name: '[concat] Throw if the argument types are inconsistent.',
- inputs: [{dataType: 'float32', dimensions: [1,1]},
- {dataType: 'int32', dimensions: [1,1]}],
+ inputs: [
+ {dataType: 'float32', dimensions: [1, 1]},
+ {dataType: 'int32', dimensions: [1, 1]}
+ ],
axis: 0,
},
{
name: '[concat] Throw if the inputs have different ranks.',
- inputs: [{dataType: 'float32', dimensions: [1,1]},
- {dataType: 'float32', dimensions: [1,1,1]}],
+ inputs: [
+ {dataType: 'float32', dimensions: [1, 1]},
+ {dataType: 'float32', dimensions: [1, 1, 1]}
+ ],
axis: 0,
},
{
- name: '[concat] Throw if the axis is equal to or greater than the size of ranks',
- inputs: [{dataType: 'float32', dimensions: [1,1]},
- {dataType: 'float32', dimensions: [1,1]}],
+ name:
+ '[concat] Throw if the axis is equal to or greater than the size of ranks',
+ inputs: [
+ {dataType: 'float32', dimensions: [1, 1]},
+ {dataType: 'float32', dimensions: [1, 1]}
+ ],
axis: 2,
},
{
name: '[concat] Throw if concat with two 0-D scalars.',
- inputs: [{dataType: 'float32', dimensions: []},
- {dataType: 'float32', dimensions: []}],
+ inputs: [
+ {dataType: 'float32', dimensions: []},
+ {dataType: 'float32', dimensions: []}
+ ],
axis: 0,
},
{
- name: '[concat] Throw if the inputs have other axes with different sizes except on the axis.',
- inputs: [{dataType: 'float32', dimensions: [1,1,1]},
- {dataType: 'float32', dimensions: [1,2,3]}],
+ name:
+ '[concat] Throw if the inputs have other axes with different sizes except on the axis.',
+ inputs: [
+ {dataType: 'float32', dimensions: [1, 1, 1]},
+ {dataType: 'float32', dimensions: [1, 2, 3]}
+ ],
axis: 1,
},
];
-tests.forEach(test =>
- promise_test(async t => {
+tests.forEach(
+ test => promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
let inputs = [];
if (test.inputs) {
for (let i = 0; i < test.inputs.length; ++i) {
@@ -86,10 +106,17 @@ tests.forEach(test =>
assert_equals(output.dataType(), test.output.dataType);
assert_array_equals(output.shape(), test.output.dimensions);
} else {
- assert_throws_js(TypeError, () => builder.concat(inputs, test.axis));
+ const options = {label};
+ try {
+ builder.concat(inputs, test.axis, options);
+ } catch (e) {
+ assert_equals(e.name, 'TypeError');
+ const error_message = e.message;
+ const regrexp = new RegExp('\\[' + label + '\\]');
+ assert_not_equals(error_message.match(regrexp), null);
+ }
}
- }, test.name)
- );
+ }, test.name));
multi_builder_test(async (t, builder, otherBuilder) => {
const operandDescriptor = {dataType: 'float32', dimensions: [2, 2]};
diff --git a/tests/wpt/tests/webnn/validation_tests/constant-changed-buffer.https.any.js b/tests/wpt/tests/webnn/validation_tests/constant-changed-buffer.https.any.js
index 7840a83d947..a6a24a06865 100644
--- a/tests/wpt/tests/webnn/validation_tests/constant-changed-buffer.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/constant-changed-buffer.https.any.js
@@ -3,6 +3,7 @@
// META: script=../resources/utils_validation.js
promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
let backingBuffer = new ArrayBuffer(8);
let aBuffer = new Float32Array(backingBuffer, 0, 2);
aBuffer[0] = 2;
@@ -26,6 +27,7 @@ promise_test(async t => {
}, 'Constant data is unaffected by detaching the buffer');
promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
let aBuffer = new Float32Array([2, 3]);
const a = builder.constant({dataType: 'float32', dimensions: [2]}, aBuffer);
@@ -47,6 +49,7 @@ promise_test(async t => {
}, 'Constant data is unaffected by changes to the buffer contents');
promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
let backingBuffer = new ArrayBuffer(8);
const aBuffer = new Float32Array(backingBuffer, 0, 2);
// Detach `aBuffer` _before_ calling `constant()`. This should throw, since
diff --git a/tests/wpt/tests/webnn/validation_tests/constant.https.any.js b/tests/wpt/tests/webnn/validation_tests/constant.https.any.js
index 86a60ee209c..136f8bd764e 100644
--- a/tests/wpt/tests/webnn/validation_tests/constant.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/constant.https.any.js
@@ -128,6 +128,7 @@ const tests = [
tests.forEach(
test => promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
const buffer = new ArrayBuffer(test.bufferView.byteLength);
const bufferView = new test.bufferView.type(buffer);
if (test.output) {
diff --git a/tests/wpt/tests/webnn/validation_tests/conv2d.https.any.js b/tests/wpt/tests/webnn/validation_tests/conv2d.https.any.js
index 55615faed9d..cf8ed9a0d8f 100644
--- a/tests/wpt/tests/webnn/validation_tests/conv2d.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/conv2d.https.any.js
@@ -18,6 +18,7 @@ const kExampleBiasDescriptor = {
dataType: 'float32',
dimensions: [/* output channels */ 1]
};
+const label = `conv_2d_*`;
multi_builder_test(async (t, builder, otherBuilder) => {
const inputFromOtherBuilder =
@@ -200,22 +201,28 @@ const tests = [
name: '[conv2d] Throw if the input is not a 4-D tensor.',
input: {dataType: 'float32', dimensions: [1, 5, 5]},
filter: {dataType: 'float32', dimensions: [1, 2, 2, 1]},
+ options: {label},
},
{
name: '[conv2d] Throw if the input data type is not floating point.',
input: {dataType: 'int32', dimensions: [1, 1, 5, 5]},
filter: {dataType: 'int32', dimensions: [1, 1, 2, 2]},
+ options: {label},
},
{
name: '[conv2d] Throw if the filter is not a 4-D tensor.',
input: {dataType: 'float32', dimensions: [1, 1, 5, 5]},
filter: {dataType: 'float32', dimensions: [2, 2]},
+ options: {label},
},
{
name:
'[conv2d] Throw if the filter data type doesn\'t match the input data type.',
input: {dataType: 'float32', dimensions: [1, 1, 5, 5]},
filter: {dataType: 'int32', dimensions: [1, 1, 2, 2]},
+ options: {
+ label: label,
+ },
},
{
name: '[conv2d] Throw if the length of padding is not 4.',
@@ -223,6 +230,7 @@ const tests = [
filter: {dataType: 'float32', dimensions: [1, 1, 2, 2]},
options: {
padding: [2, 2],
+ label: label,
},
},
{
@@ -231,6 +239,7 @@ const tests = [
filter: {dataType: 'float32', dimensions: [1, 1, 2, 2]},
options: {
strides: [2],
+ label: label,
},
},
{
@@ -239,6 +248,7 @@ const tests = [
filter: {dataType: 'float32', dimensions: [1, 1, 2, 2]},
options: {
strides: [0, 1],
+ label: label,
},
},
{
@@ -247,6 +257,7 @@ const tests = [
filter: {dataType: 'float32', dimensions: [1, 1, 2, 2]},
options: {
strides: [1, 0],
+ label: label,
},
},
{
@@ -255,6 +266,7 @@ const tests = [
filter: {dataType: 'float32', dimensions: [1, 1, 2, 2]},
options: {
dilations: [1],
+ label: label,
},
},
{
@@ -263,6 +275,7 @@ const tests = [
filter: {dataType: 'float32', dimensions: [1, 1, 2, 2]},
options: {
dilations: [0, 1],
+ label: label,
},
},
{
@@ -271,6 +284,7 @@ const tests = [
filter: {dataType: 'float32', dimensions: [1, 1, 2, 2]},
options: {
dilations: [1, 0],
+ label: label,
},
},
{
@@ -279,6 +293,7 @@ const tests = [
filter: {dataType: 'float32', dimensions: [1, 1, 2, 2]},
options: {
groups: 3,
+ label: label,
},
},
{
@@ -288,6 +303,7 @@ const tests = [
filter: {dataType: 'float32', dimensions: [1, 1, 2, 2]},
options: {
groups: 2,
+ label: label,
},
},
{
@@ -296,6 +312,7 @@ const tests = [
filter: {dataType: 'float32', dimensions: [1, 1, 2, 2]},
options: {
groups: 0,
+ label: label,
},
},
{
@@ -305,6 +322,7 @@ const tests = [
filter: {dataType: 'float32', dimensions: [1, 1, 434983, 2]},
options: {
dilations: [328442, 1],
+ label: label,
},
},
{
@@ -314,6 +332,7 @@ const tests = [
filter: {dataType: 'float32', dimensions: [1, 1, 2, 234545]},
options: {
dilations: [2, 843452],
+ label: label,
},
},
{
@@ -322,6 +341,7 @@ const tests = [
filter: {dataType: 'float32', dimensions: [1, 1, 3, 3]},
options: {
dilations: [kMaxUnsignedLong, 1],
+ label: label,
},
},
{
@@ -330,6 +350,7 @@ const tests = [
filter: {dataType: 'float32', dimensions: [1, 1, 3, 3]},
options: {
dilations: [1, kMaxUnsignedLong],
+ label: label,
},
},
{
@@ -340,6 +361,7 @@ const tests = [
dilations: [4, 1],
padding: [1, 1, 1, 1],
strides: [2, 2],
+ label: label,
},
},
{
@@ -350,6 +372,7 @@ const tests = [
dilations: [1, 4],
padding: [1, 1, 1, 1],
strides: [2, 2],
+ label: label,
},
},
{
@@ -358,6 +381,7 @@ const tests = [
filter: {dataType: 'float32', dimensions: [1, 1, 2, 2]},
options: {
bias: {dataType: 'float32', dimensions: [1, 2]},
+ label: label,
},
},
{
@@ -367,6 +391,7 @@ const tests = [
filter: {dataType: 'float32', dimensions: [1, 1, 2, 2]},
options: {
bias: {dataType: 'float32', dimensions: [2]},
+ label: label,
},
},
{
@@ -376,6 +401,7 @@ const tests = [
filter: {dataType: 'float32', dimensions: [2, 2, 1, 1]},
options: {
bias: {dataType: 'float32', dimensions: [2]},
+ label: label,
},
},
{
@@ -385,6 +411,7 @@ const tests = [
filter: {dataType: 'float32', dimensions: [1, 2, 2, 1]},
options: {
bias: {dataType: 'float32', dimensions: [2]},
+ label: label,
},
},
{
@@ -394,6 +421,7 @@ const tests = [
filter: {dataType: 'float32', dimensions: [1, 2, 2, 1]},
options: {
bias: {dataType: 'float32', dimensions: [2]},
+ label: label,
},
},
{
@@ -403,6 +431,7 @@ const tests = [
filter: {dataType: 'float32', dimensions: [1, 1, 2, 2]},
options: {
bias: {dataType: 'int32', dimensions: [1]},
+ label: label,
},
},
{
@@ -414,6 +443,7 @@ const tests = [
inputLayout: 'nchw',
filterLayout: 'oihw',
groups: 2,
+ label: label,
},
},
{
@@ -425,6 +455,7 @@ const tests = [
inputLayout: 'nchw',
filterLayout: 'hwio',
groups: 2,
+ label: label,
},
},
{
@@ -436,6 +467,7 @@ const tests = [
inputLayout: 'nchw',
filterLayout: 'ohwi',
groups: 2,
+ label: label,
},
},
{
@@ -447,6 +479,7 @@ const tests = [
inputLayout: 'nchw',
filterLayout: 'ihwo',
groups: 2,
+ label: label,
},
},
@@ -459,6 +492,7 @@ const tests = [
inputLayout: 'nhwc',
filterLayout: 'oihw',
groups: 2,
+ label: label,
},
},
{
@@ -470,6 +504,7 @@ const tests = [
inputLayout: 'nhwc',
filterLayout: 'hwio',
groups: 2,
+ label: label,
},
},
{
@@ -481,6 +516,7 @@ const tests = [
inputLayout: 'nhwc',
filterLayout: 'ohwi',
groups: 2,
+ label: label,
},
},
{
@@ -492,12 +528,14 @@ const tests = [
inputLayout: 'nhwc',
filterLayout: 'ihwo',
groups: 2,
+ label: label,
},
},
];
tests.forEach(
test => promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
const input = builder.input(
'input',
{dataType: test.input.dataType, dimensions: test.input.dimensions});
@@ -517,7 +555,13 @@ tests.forEach(
assert_equals(output.dataType(), test.output.dataType);
assert_array_equals(output.shape(), test.output.dimensions);
} else {
- assert_throws_js(
- TypeError, () => builder.conv2d(input, filter, test.options));
+ try {
+ builder.conv2d(input, filter, test.options);
+ } catch (e) {
+ assert_equals(e.name, 'TypeError');
+ const error_message = e.message;
+ const regrexp = /\[conv_2d_\*\]/;
+ assert_not_equals(error_message.match(regrexp), null);
+ }
}
}, test.name));
diff --git a/tests/wpt/tests/webnn/validation_tests/convTranspose2d.https.any.js b/tests/wpt/tests/webnn/validation_tests/convTranspose2d.https.any.js
index f7cf4b3200c..6028d51c6c8 100644
--- a/tests/wpt/tests/webnn/validation_tests/convTranspose2d.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/convTranspose2d.https.any.js
@@ -48,6 +48,7 @@ multi_builder_test(async (t, builder, otherBuilder) => {
TypeError, () => builder.convTranspose2d(input, filter, options));
}, '[convTranspose2d] throw if bias option is from another builder');
+const label = 'conv_transpose_2d';
const tests = [
{
name: '[convTranspose2d] Test with default options.',
@@ -184,23 +185,29 @@ const tests = [
name: '[convTranspose2d] Throw if the input is not a 4-D tensor.',
input: {dataType: 'float32', dimensions: [1, 5, 5]},
filter: {dataType: 'float32', dimensions: [1, 1, 2, 2]},
+ options: {label},
},
{
name:
'[convTranspose2d] Throw if the input data type is not floating point.',
input: {dataType: 'int32', dimensions: [1, 1, 5, 5]},
filter: {dataType: 'int32', dimensions: [1, 1, 2, 2]},
+ options: {label},
},
{
name: '[convTranspose2d] Throw if the filter is not a 4-D tensor.',
input: {dataType: 'float32', dimensions: [1, 1, 5, 5]},
filter: {dataType: 'float32', dimensions: [2, 2]},
+ options: {label},
},
{
name:
'[convTranspose2d] Throw if the filter data type doesn\'t match the input data type.',
input: {dataType: 'float32', dimensions: [1, 1, 5, 5]},
filter: {dataType: 'int32', dimensions: [1, 1, 2, 2]},
+ options: {
+ label: label,
+ },
},
{
name: '[convTranspose2d] Throw if the length of padding is not 4.',
@@ -208,6 +215,7 @@ const tests = [
filter: {dataType: 'float32', dimensions: [1, 1, 2, 2]},
options: {
padding: [2, 2],
+ label: label,
},
},
{
@@ -216,6 +224,7 @@ const tests = [
filter: {dataType: 'float32', dimensions: [1, 1, 2, 2]},
options: {
strides: [2],
+ label: label,
},
},
{
@@ -224,6 +233,7 @@ const tests = [
filter: {dataType: 'float32', dimensions: [1, 1, 2, 2]},
options: {
strides: [1, 0],
+ label: label,
},
},
{
@@ -232,6 +242,7 @@ const tests = [
filter: {dataType: 'float32', dimensions: [1, 1, 2, 2]},
options: {
dilations: [1],
+ label: label,
},
},
{
@@ -241,6 +252,7 @@ const tests = [
filter: {dataType: 'float32', dimensions: [1, 1, 2, 2]},
options: {
dilations: [1, 0],
+ label: label,
},
},
{
@@ -252,6 +264,7 @@ const tests = [
filterLayout: 'iohw',
inputLayout: 'nchw',
groups: 1,
+ label: label,
},
},
{
@@ -262,6 +275,7 @@ const tests = [
options: {
filterLayout: 'hwoi',
inputLayout: 'nchw',
+ label: label,
},
},
{
@@ -272,6 +286,7 @@ const tests = [
options: {
filterLayout: 'ohwi',
inputLayout: 'nchw',
+ label: label,
},
},
{
@@ -282,6 +297,7 @@ const tests = [
options: {
filterLayout: 'iohw',
inputLayout: 'nhwc',
+ label: label,
},
},
{
@@ -292,6 +308,7 @@ const tests = [
options: {
filterLayout: 'hwoi',
inputLayout: 'nhwc',
+ label: label,
},
},
{
@@ -302,6 +319,7 @@ const tests = [
options: {
filterLayout: 'ohwi',
inputLayout: 'nhwc',
+ label: label,
},
},
{
@@ -310,6 +328,7 @@ const tests = [
filter: {dataType: 'float32', dimensions: [4, 2, 2, 2]},
options: {
groups: kMaxUnsignedLong,
+ label: label,
},
},
{
@@ -318,6 +337,7 @@ const tests = [
filter: {dataType: 'float32', dimensions: [1, 1, 2, 2]},
options: {
groups: 0,
+ label: label,
},
},
{
@@ -327,6 +347,7 @@ const tests = [
filter: {dataType: 'float32', dimensions: [1, 1, 434983, 2]},
options: {
dilations: [328443, 1],
+ label: label,
},
},
{
@@ -336,6 +357,7 @@ const tests = [
filter: {dataType: 'float32', dimensions: [1, 1, 2, 234545]},
options: {
dilations: [2, 843452],
+ label: label,
},
},
{
@@ -345,6 +367,7 @@ const tests = [
filter: {dataType: 'float32', dimensions: [1, 1, 3, 2]},
options: {
dilations: [kMaxUnsignedLong, 1],
+ label: label,
},
},
{
@@ -354,6 +377,7 @@ const tests = [
filter: {dataType: 'float32', dimensions: [1, 1, 3, 2]},
options: {
dilations: [1, kMaxUnsignedLong],
+ label: label,
},
},
{
@@ -362,6 +386,7 @@ const tests = [
filter: {dataType: 'float32', dimensions: [1, 1, 2, 2]},
options: {
bias: {dataType: 'float32', dimensions: [1, 2]},
+ label: label,
},
},
{
@@ -372,6 +397,7 @@ const tests = [
options: {
filterLayout: 'iohw',
bias: {dataType: 'float32', dimensions: [2]},
+ label: label,
},
},
{
@@ -382,6 +408,7 @@ const tests = [
options: {
filterLayout: 'hwoi',
bias: {dataType: 'float32', dimensions: [2]},
+ label: label,
},
},
{
@@ -392,6 +419,7 @@ const tests = [
options: {
filterLayout: 'ohwi',
bias: {dataType: 'float32', dimensions: [2]},
+ label: label,
},
},
{
@@ -401,6 +429,7 @@ const tests = [
filter: {dataType: 'float32', dimensions: [1, 1, 2, 2]},
options: {
bias: {dataType: 'int32', dimensions: [1]},
+ label: label,
},
},
{
@@ -411,6 +440,7 @@ const tests = [
options: {
strides: [3, 2],
outputPadding: [1, 1, 1, 1],
+ label: label,
},
},
{
@@ -422,6 +452,7 @@ const tests = [
padding: [0, 0, 3, 3],
strides: [2, 2],
outputPadding: [0, 2],
+ label: label,
},
},
{
@@ -433,6 +464,7 @@ const tests = [
padding: [0, 0, 3, 3],
strides: [2, 2],
outputPadding: [2, 0],
+ label: label,
},
},
{
@@ -443,26 +475,27 @@ const tests = [
options: {
strides: [3, 2],
outputSizes: [1, 2, 10, 8],
+ label: label,
},
},
{
- name:
- '[convTranspose2d] Throw if outputSizes[0] is not greater than 0.',
+ name: '[convTranspose2d] Throw if outputSizes[0] is not greater than 0.',
input: {dataType: 'float32', dimensions: [1, 1, 3, 3]},
filter: {dataType: 'float32', dimensions: [1, 2, 3, 3]},
options: {
strides: [3, 2],
outputSizes: [0, 7],
+ label: label,
},
},
{
- name:
- '[convTranspose2d] Throw if outputSizes[1] is not greater than 0.',
+ name: '[convTranspose2d] Throw if outputSizes[1] is not greater than 0.',
input: {dataType: 'float32', dimensions: [1, 1, 3, 3]},
filter: {dataType: 'float32', dimensions: [1, 2, 3, 3]},
options: {
strides: [3, 2],
outputSizes: [9, 0],
+ label: label,
},
},
{
@@ -473,6 +506,7 @@ const tests = [
padding: [4, 4, 0, 0],
strides: [2, 2],
outputPadding: [1, 0],
+ label: label,
},
},
{
@@ -483,6 +517,7 @@ const tests = [
padding: [0, 0, 4, 4],
strides: [2, 2],
outputPadding: [0, 1],
+ label: label,
},
},
{
@@ -495,6 +530,7 @@ const tests = [
strides: [2, 2],
outputSizes: [4, 4],
outputPadding: [1, 1],
+ label: label,
},
},
{
@@ -507,12 +543,14 @@ const tests = [
strides: [2, 2],
outputSizes: [6, 8],
outputPadding: [1, 1],
+ label: label,
},
},
];
tests.forEach(
test => promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
const input = builder.input(
'input',
{dataType: test.input.dataType, dimensions: test.input.dimensions});
@@ -532,8 +570,14 @@ tests.forEach(
assert_equals(output.dataType(), test.output.dataType);
assert_array_equals(output.shape(), test.output.dimensions);
} else {
- assert_throws_js(
- TypeError,
- () => builder.convTranspose2d(input, filter, test.options));
+ try {
+ builder.convTranspose2d(input, filter, test.options);
+ } catch (e) {
+ assert_equals(e.name, 'TypeError');
+ const error_message = e.message;
+ const regrexp = new RegExp('\\[' + label + '\\]');
+ ;
+ assert_not_equals(error_message.match(regrexp), null);
+ }
}
}, test.name));
diff --git a/tests/wpt/tests/webnn/validation_tests/createContext.https.any.js b/tests/wpt/tests/webnn/validation_tests/createContext.https.any.js
new file mode 100644
index 00000000000..52b99ff337d
--- /dev/null
+++ b/tests/wpt/tests/webnn/validation_tests/createContext.https.any.js
@@ -0,0 +1,47 @@
+// META: title=validation tests for WebNN API createContext()
+// META: global=window,dedicatedworker
+// META: script=../resources/utils_validation.js
+
+'use strict';
+
+promise_test(async t => {
+ const ml_context_options = {};
+ await navigator.ml.createContext(ml_context_options);
+}, 'Create context with default MLContextOptions.');
+
+promise_test(async t => {
+ const ml_context_options = { deviceType: 'cpu' };
+ await navigator.ml.createContext(ml_context_options);
+}, 'Create context with device type: cpu.');
+
+promise_test(async t => {
+ const ml_context_options = { deviceType: 'xpu' };
+ const promise = navigator.ml.createContext(ml_context_options);
+ promise_rejects_js(t, TypeError, promise);
+}, 'Throw if deviceType is not a valid enum value of type MLDeviceType when creating the context.');
+
+promise_test(async t => {
+ const ml_context_options = { powerPreference: 'default' };
+ await navigator.ml.createContext(ml_context_options);
+}, 'Create context with power preference: default.');
+
+promise_test(async t => {
+ const ml_context_options = { powerPreference: 'high-performance' };
+ await navigator.ml.createContext(ml_context_options);
+}, 'Create context with power preference: high-performance.');
+
+promise_test(async t => {
+ const ml_context_options = { powerPreference: 'low-power' };
+ await navigator.ml.createContext(ml_context_options);
+}, 'Create context with power preference: low-power.');
+
+promise_test(async t => {
+ const ml_context_options = { powerPreference: 'auto' };
+ const promise = navigator.ml.createContext(ml_context_options);
+ promise_rejects_js(t, TypeError, promise);
+}, 'Throw if powerPreference is not a valid enum value of type MLPowerPreference when creating the context.');
+
+promise_test(async t => {
+ const ml_context_options = { deviceType: 'cpu', powerPreference: 'high-performance' };
+ await navigator.ml.createContext(ml_context_options);
+}, '[createContext] Test creating context with deviceType=cpu, powerPreference=high-performance.');
diff --git a/tests/wpt/tests/webnn/validation_tests/elementwise-binary.https.any.js b/tests/wpt/tests/webnn/validation_tests/elementwise-binary.https.any.js
index 8e86731a0fd..369191dd7fd 100644
--- a/tests/wpt/tests/webnn/validation_tests/elementwise-binary.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/elementwise-binary.https.any.js
@@ -53,6 +53,7 @@ const tests = [
function runElementWiseBinaryTests(operatorName, tests) {
tests.forEach(test => {
promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
if (!context.opSupportLimits().input.dataTypes.includes(
test.a.dataType)) {
assert_throws_js(
diff --git a/tests/wpt/tests/webnn/validation_tests/elementwise-logical.https.any.js b/tests/wpt/tests/webnn/validation_tests/elementwise-logical.https.any.js
index 25d7b59924c..e5e5b5a5a81 100644
--- a/tests/wpt/tests/webnn/validation_tests/elementwise-logical.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/elementwise-logical.https.any.js
@@ -13,8 +13,10 @@ const kElementwiseLogicalBinaryOperators = [
];
kElementwiseLogicalBinaryOperators.forEach((operatorName) => {
+ validateTwoInputsOfSameDataType(operatorName);
validateTwoInputsFromMultipleBuilders(operatorName);
+ validateTwoInputsBroadcastable(operatorName);
});
-// The `not()` operator is unary.
-validateInputFromAnotherBuilder('not');
+// The `logicalNot()` operator is unary.
+validateInputFromAnotherBuilder('logicalNot');
diff --git a/tests/wpt/tests/webnn/validation_tests/elementwise-unary.https.any.js b/tests/wpt/tests/webnn/validation_tests/elementwise-unary.https.any.js
index c735183aab1..9380c766960 100644
--- a/tests/wpt/tests/webnn/validation_tests/elementwise-unary.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/elementwise-unary.https.any.js
@@ -13,27 +13,6 @@ kElementwiseUnaryOperators.forEach((operatorName) => {
validateInputFromAnotherBuilder(operatorName);
});
-const kElementwiseUnaryOperations = [
- {
- name: 'abs',
- supportedDataTypes: [...floatingPointTypes, 'int32', 'int8']
- },
- {name: 'ceil', supportedDataTypes: floatingPointTypes},
- {name: 'exp', supportedDataTypes: floatingPointTypes},
- {name: 'floor', supportedDataTypes: floatingPointTypes},
- {name: 'log', supportedDataTypes: floatingPointTypes}, {
- name: 'neg',
- supportedDataTypes: [...floatingPointTypes, 'int32', 'int8']
- },
- {name: 'sin', supportedDataTypes: floatingPointTypes},
- {name: 'tan', supportedDataTypes: floatingPointTypes},
- {name: 'erf', supportedDataTypes: floatingPointTypes},
- {name: 'identity', supportedDataTypes: allWebNNOperandDataTypes},
- {name: 'logicalNot', supportedDataTypes: ['uint8']},
- {name: 'reciprocal', supportedDataTypes: floatingPointTypes},
- {name: 'sqrt', supportedDataTypes: floatingPointTypes}
-];
-
-kElementwiseUnaryOperations.forEach((operation) => {
- validateUnaryOperation(operation.name, operation.supportedDataTypes);
+kElementwiseUnaryOperators.forEach((operatorName) => {
+ validateSingleInputOperation(operatorName);
});
diff --git a/tests/wpt/tests/webnn/validation_tests/elu.https.any.js b/tests/wpt/tests/webnn/validation_tests/elu.https.any.js
index 53ec5e54ae2..a84848c2c39 100644
--- a/tests/wpt/tests/webnn/validation_tests/elu.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/elu.https.any.js
@@ -6,42 +6,43 @@
validateInputFromAnotherBuilder('elu');
-validateUnaryOperation(
- 'elu', floatingPointTypes, /*alsoBuildActivation=*/ true);
+validateSingleInputOperation('elu');
promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
const options = {alpha: 1.0};
const input =
builder.input('input', {dataType: 'float32', dimensions: [1, 2, 3]});
const output = builder.elu(input, options);
assert_equals(output.dataType(), 'float32');
assert_array_equals(output.shape(), [1, 2, 3]);
-}, '[elu] Test building an operator with options');
-
-promise_test(async t => {
- const options = {alpha: 1.5};
- builder.elu(options);
-}, '[elu] Test building an activation with options');
+}, '[elu] Build with options');
promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
const options = {alpha: -1.0};
const input =
builder.input('input', {dataType: 'float32', dimensions: [1, 2, 3]});
assert_throws_js(TypeError, () => builder.elu(input, options));
-}, '[elu] Throw if options.alpha <= 0 when building an operator');
+}, '[elu] Throw if options.alpha < 0');
promise_test(async t => {
- const options = {alpha: NaN};
- const input = builder.input('input', {dataType: 'float16', dimensions: []});
+ const builder = new MLGraphBuilder(context);
+ const options = {alpha: 0};
+ const input = builder.input('input', {dataType: 'float32', dimensions: [1]});
assert_throws_js(TypeError, () => builder.elu(input, options));
-}, '[elu] Throw if options.alpha is NaN when building an operator');
+}, '[elu] Throw if options.alpha == 0');
promise_test(async t => {
- const options = {alpha: 0};
- assert_throws_js(TypeError, () => builder.elu(options));
-}, '[elu] Throw if options.alpha <= 0 when building an activation');
+ const builder = new MLGraphBuilder(context);
+ const options = {alpha: NaN};
+ const input = builder.input('input', {dataType: 'float16', dimensions: []});
+ assert_throws_js(TypeError, () => builder.elu(input, options));
+}, '[elu] Throw if options.alpha is NaN');
promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
const options = {alpha: Infinity};
- assert_throws_js(TypeError, () => builder.elu(options));
-}, '[elu] Throw if options.alpha is Infinity when building an activation');
+ const input = builder.input('input', {dataType: 'float32', dimensions: [1]});
+ assert_throws_js(TypeError, () => builder.elu(input, options));
+}, '[elu] Throw if options.alpha is Infinity');
diff --git a/tests/wpt/tests/webnn/validation_tests/expand.https.any.js b/tests/wpt/tests/webnn/validation_tests/expand.https.any.js
index 088d826df7a..b333b573ba1 100644
--- a/tests/wpt/tests/webnn/validation_tests/expand.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/expand.https.any.js
@@ -59,6 +59,7 @@ const tests = [
tests.forEach(
test => promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
const input = builder.input(
'input',
{dataType: test.input.dataType, dimensions: test.input.dimensions});
diff --git a/tests/wpt/tests/webnn/validation_tests/gather.https.any.js b/tests/wpt/tests/webnn/validation_tests/gather.https.any.js
index 4a2ab218f8d..74db3f15d0c 100644
--- a/tests/wpt/tests/webnn/validation_tests/gather.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/gather.https.any.js
@@ -60,6 +60,7 @@ const tests = [
tests.forEach(
test => promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
const input = builder.input(
'input',
{dataType: test.input.dataType, dimensions: test.input.dimensions});
diff --git a/tests/wpt/tests/webnn/validation_tests/gelu.https.any.js b/tests/wpt/tests/webnn/validation_tests/gelu.https.any.js
index c758c61f4c3..498dc509cee 100644
--- a/tests/wpt/tests/webnn/validation_tests/gelu.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/gelu.https.any.js
@@ -6,5 +6,4 @@
validateInputFromAnotherBuilder('gelu');
-validateUnaryOperation(
- 'gelu', floatingPointTypes, /*alsoBuildActivation=*/ true);
+validateSingleInputOperation('gelu');
diff --git a/tests/wpt/tests/webnn/validation_tests/gemm.https.any.js b/tests/wpt/tests/webnn/validation_tests/gemm.https.any.js
index abe0ba61936..117fd541a34 100644
--- a/tests/wpt/tests/webnn/validation_tests/gemm.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/gemm.https.any.js
@@ -141,6 +141,7 @@ const tests = [
tests.forEach(
test => promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
const a = builder.input(
'a', {dataType: test.a.dataType, dimensions: test.a.dimensions});
const b = builder.input(
diff --git a/tests/wpt/tests/webnn/validation_tests/gru.https.any.js b/tests/wpt/tests/webnn/validation_tests/gru.https.any.js
index 2b85ce23144..ac69fcf8302 100644
--- a/tests/wpt/tests/webnn/validation_tests/gru.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/gru.https.any.js
@@ -278,6 +278,7 @@ const tests = [
tests.forEach(
test => promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
const input = builder.input(
'input',
{dataType: test.input.dataType, dimensions: test.input.dimensions});
@@ -322,9 +323,7 @@ tests.forEach(
options.layout = test.options.layout;
}
if (test.options.activations) {
- options.activations = [];
- test.options.activations.forEach(
- activation => options.activations.push(builder[activation]()));
+ options.activations = test.options.activations;
}
}
@@ -428,18 +427,3 @@ multi_builder_test(async (t, builder, otherBuilder) => {
() => builder.gru(
input, weight, recurrentWeight, steps, hiddenSize, options));
}, '[gru] throw if initialHiddenState option is from another builder');
-
-multi_builder_test(async (t, builder, otherBuilder) => {
- const activation = builder.relu();
- const activationFromOtherBuilder = otherBuilder.relu();
- const options = {activations: [activation, activationFromOtherBuilder]};
-
- const input = builder.input('input', kExampleInputDescriptor);
- const weight = builder.input('weight', kExampleWeightDescriptor);
- const recurrentWeight =
- builder.input('recurrentWeight', kExampleRecurrentWeightDescriptor);
- assert_throws_js(
- TypeError,
- () => builder.gru(
- input, weight, recurrentWeight, steps, hiddenSize, options));
-}, '[gru] throw if any activation option is from another builder');
diff --git a/tests/wpt/tests/webnn/validation_tests/gruCell.https.any.js b/tests/wpt/tests/webnn/validation_tests/gruCell.https.any.js
index e37c9ec5209..98ba3eec62c 100644
--- a/tests/wpt/tests/webnn/validation_tests/gruCell.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/gruCell.https.any.js
@@ -299,63 +299,65 @@ const tests = [
];
tests.forEach(
- test => promise_test(async t => {
- const input = builder.input(
- 'input',
- { dataType: test.input.dataType, dimensions: test.input.dimensions });
- const weight = builder.input(
- 'weight',
- { dataType: test.weight.dataType, dimensions: test.weight.dimensions });
- const recurrentWeight = builder.input('recurrentWeight', {
+ test =>
+ promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
+ const input = builder.input('input', {
+ dataType: test.input.dataType,
+ dimensions: test.input.dimensions
+ });
+ const weight = builder.input('weight', {
+ dataType: test.weight.dataType,
+ dimensions: test.weight.dimensions
+ });
+ const recurrentWeight = builder.input('recurrentWeight', {
dataType: test.recurrentWeight.dataType,
dimensions: test.recurrentWeight.dimensions
- });
- const hiddenState = builder.input('hiddenState', {
+ });
+ const hiddenState = builder.input('hiddenState', {
dataType: test.hiddenState.dataType,
dimensions: test.hiddenState.dimensions
- });
+ });
- const options = {};
- if (test.options) {
+ const options = {};
+ if (test.options) {
if (test.options.bias) {
- options.bias = builder.input('bias', {
- dataType: test.options.bias.dataType,
- dimensions: test.options.bias.dimensions
- });
+ options.bias = builder.input('bias', {
+ dataType: test.options.bias.dataType,
+ dimensions: test.options.bias.dimensions
+ });
}
if (test.options.recurrentBias) {
- options.recurrentBias = builder.input('recurrentBias', {
- dataType: test.options.recurrentBias.dataType,
- dimensions: test.options.recurrentBias.dimensions
- });
+ options.recurrentBias = builder.input('recurrentBias', {
+ dataType: test.options.recurrentBias.dataType,
+ dimensions: test.options.recurrentBias.dimensions
+ });
}
if (test.options.resetAfter) {
- options.resetAfter = test.options.resetAfter;
+ options.resetAfter = test.options.resetAfter;
}
if (test.options.layout) {
- options.layout = test.options.layout;
+ options.layout = test.options.layout;
}
if (test.options.activations) {
- options.activations = [];
- test.options.activations.forEach(
- activation => options.activations.push(builder[activation]()));
+ options.activations = test.options.activations;
}
- }
+ }
- if (test.output) {
+ if (test.output) {
const output = builder.gruCell(
input, weight, recurrentWeight, hiddenState, test.hiddenSize,
options);
assert_equals(output.dataType(), test.output.dataType);
assert_array_equals(output.shape(), test.output.dimensions);
- } else {
+ } else {
assert_throws_js(
TypeError,
() => builder.gruCell(
input, weight, recurrentWeight, hiddenState, test.hiddenSize,
options));
- }
- }, test.name));
+ }
+ }, test.name));
multi_builder_test(async (t, builder, otherBuilder) => {
const inputFromOtherBuilder =
@@ -452,20 +454,3 @@ multi_builder_test(async (t, builder, otherBuilder) => {
() => builder.gruCell(
input, weight, recurrentWeight, hiddenState, hiddenSize, options));
}, '[gruCell] throw if recurrentBias option is from another builder');
-
-multi_builder_test(async (t, builder, otherBuilder) => {
- const activation = builder.relu();
- const activationFromOtherBuilder = otherBuilder.relu();
- const options = {activations: [activation, activationFromOtherBuilder]};
-
- const input = builder.input('input', kExampleInputDescriptor);
- const weight = builder.input('weight', kExampleWeightDescriptor);
- const recurrentWeight =
- builder.input('recurrentWeight', kExampleRecurrentWeightDescriptor);
- const hiddenState =
- builder.input('hiddenState', kExampleHiddenStateDescriptor);
- assert_throws_js(
- TypeError,
- () => builder.gruCell(
- input, weight, recurrentWeight, hiddenState, hiddenSize, options));
-}, '[gruCell] throw if any activation option is from another builder');
diff --git a/tests/wpt/tests/webnn/validation_tests/hardSigmoid.https.any.js b/tests/wpt/tests/webnn/validation_tests/hardSigmoid.https.any.js
index 2c55d0eb9df..154e82936f7 100644
--- a/tests/wpt/tests/webnn/validation_tests/hardSigmoid.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/hardSigmoid.https.any.js
@@ -6,30 +6,28 @@
validateInputFromAnotherBuilder('hardSigmoid');
-validateUnaryOperation(
- 'hardSigmoid', floatingPointTypes, /*alsoBuildActivation=*/ true);
+validateUnaryOperation('hardSigmoid', floatingPointTypes);
promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
const options = {alpha: 0.5, beta: 1.0};
const input =
builder.input('input', {dataType: 'float16', dimensions: [1, 2, 3]});
const output = builder.hardSigmoid(input, options);
assert_equals(output.dataType(), 'float16');
assert_array_equals(output.shape(), [1, 2, 3]);
-}, '[hardSigmoid] Test building an operator with options');
-
-promise_test(async t => {
- const options = {alpha: 0.2};
- builder.hardSigmoid(options);
-}, '[hardSigmoid] Test building an activation with options');
+}, '[hardSigmoid] Test building with options');
promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
const options = {beta: NaN};
const input = builder.input('input', {dataType: 'float32', dimensions: []});
assert_throws_js(TypeError, () => builder.hardSigmoid(input, options));
-}, '[hardSigmoid] Throw if options.beta is NaN when building an operator');
+}, '[hardSigmoid] Throw if options.beta is NaN');
promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
const options = {alpha: Infinity};
- assert_throws_js(TypeError, () => builder.hardSigmoid(options));
-}, '[hardSigmoid] Throw if options.alpha is Infinity when building an activation');
+ const input = builder.input('input', {dataType: 'float32', dimensions: [1]});
+ assert_throws_js(TypeError, () => builder.hardSigmoid(input, options));
+}, '[hardSigmoid] Throw if options.alpha is Infinity');
diff --git a/tests/wpt/tests/webnn/validation_tests/hardSwish.https.any.js b/tests/wpt/tests/webnn/validation_tests/hardSwish.https.any.js
index 97ecfb4142d..7bdf6eb1db3 100644
--- a/tests/wpt/tests/webnn/validation_tests/hardSwish.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/hardSwish.https.any.js
@@ -6,5 +6,4 @@
validateInputFromAnotherBuilder('hardSwish');
-validateUnaryOperation(
- 'hardSwish', floatingPointTypes, /*alsoBuildActivation=*/ true);
+validateUnaryOperation('hardSwish', floatingPointTypes);
diff --git a/tests/wpt/tests/webnn/validation_tests/input.https.any.js b/tests/wpt/tests/webnn/validation_tests/input.https.any.js
index a7561bf628b..443cd829461 100644
--- a/tests/wpt/tests/webnn/validation_tests/input.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/input.https.any.js
@@ -59,6 +59,7 @@ const tests = [
tests.forEach(
test => promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
if (test.output) {
const inputOperand = builder.input(test.name, test.descriptor);
assert_equals(inputOperand.dataType(), test.output.dataType);
diff --git a/tests/wpt/tests/webnn/validation_tests/instanceNormalization.https.any.js b/tests/wpt/tests/webnn/validation_tests/instanceNormalization.https.any.js
index 4fc26ec5ae6..78094dd8816 100644
--- a/tests/wpt/tests/webnn/validation_tests/instanceNormalization.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/instanceNormalization.https.any.js
@@ -163,6 +163,7 @@ const tests = [
tests.forEach(
test => promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
const input = builder.input(
'input',
{dataType: test.input.dataType, dimensions: test.input.dimensions});
diff --git a/tests/wpt/tests/webnn/validation_tests/layerNormalization.https.any.js b/tests/wpt/tests/webnn/validation_tests/layerNormalization.https.any.js
index 63f9c0dbc58..3b3636ba11d 100644
--- a/tests/wpt/tests/webnn/validation_tests/layerNormalization.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/layerNormalization.https.any.js
@@ -180,6 +180,7 @@ const tests = [
tests.forEach(
test => promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
const input = builder.input(
'input',
{dataType: test.input.dataType, dimensions: test.input.dimensions});
diff --git a/tests/wpt/tests/webnn/validation_tests/leakyRelu.https.any.js b/tests/wpt/tests/webnn/validation_tests/leakyRelu.https.any.js
index f250b0eda66..3a8ac892b98 100644
--- a/tests/wpt/tests/webnn/validation_tests/leakyRelu.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/leakyRelu.https.any.js
@@ -6,30 +6,28 @@
validateInputFromAnotherBuilder('leakyRelu');
-validateUnaryOperation(
- 'leakyRelu', floatingPointTypes, /*alsoBuildActivation=*/ true);
+validateSingleInputOperation('leakyRelu');
promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
const options = {alpha: 0.02};
const input =
builder.input('input', {dataType: 'float32', dimensions: [1, 2, 3]});
const output = builder.leakyRelu(input, options);
assert_equals(output.dataType(), 'float32');
assert_array_equals(output.shape(), [1, 2, 3]);
-}, '[leakyRelu] Test building an operator with options');
-
-promise_test(async t => {
- const options = {alpha: 0.03};
- builder.leakyRelu(options);
-}, '[leakyRelu] Test building an activation with options');
+}, '[leakyRelu] Build with options');
promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
const options = {alpha: Infinity};
const input = builder.input('input', {dataType: 'float16', dimensions: []});
assert_throws_js(TypeError, () => builder.leakyRelu(input, options));
-}, '[leakyRelu] Throw if options.alpha is Infinity when building an operator');
+}, '[leakyRelu] Throw if options.alpha is Infinity');
promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
const options = {alpha: -NaN};
- assert_throws_js(TypeError, () => builder.leakyRelu(options));
-}, '[leakyRelu] Throw if options.alpha is -NaN when building an activation');
+ const input = builder.input('input', {dataType: 'float32', dimensions: [1]});
+ assert_throws_js(TypeError, () => builder.leakyRelu(input, options));
+}, '[leakyRelu] Throw if options.alpha is -NaN');
diff --git a/tests/wpt/tests/webnn/validation_tests/linear.https.any.js b/tests/wpt/tests/webnn/validation_tests/linear.https.any.js
index 6ec0389fc36..05f88a34dc7 100644
--- a/tests/wpt/tests/webnn/validation_tests/linear.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/linear.https.any.js
@@ -6,30 +6,28 @@
validateInputFromAnotherBuilder('linear');
-validateUnaryOperation(
- 'linear', floatingPointTypes, /*alsoBuildActivation=*/ true);
+validateUnaryOperation('linear', floatingPointTypes);
promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
const options = {alpha: 1.5, beta: 0.3};
const input =
builder.input('input', {dataType: 'float32', dimensions: [1, 2, 3]});
const output = builder.linear(input, options);
assert_equals(output.dataType(), 'float32');
assert_array_equals(output.shape(), [1, 2, 3]);
-}, '[linear] Test building an operator with options');
-
-promise_test(async t => {
- const options = {beta: 1.5};
- builder.linear(options);
-}, '[linear] Test building an activation with options');
+}, '[linear] Build with options');
promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
const options = {beta: -Infinity};
const input = builder.input('input', {dataType: 'float16', dimensions: []});
assert_throws_js(TypeError, () => builder.linear(input, options));
-}, '[linear] Throw if options.beta is -Infinity when building an operator');
+}, '[linear] Throw if options.beta is -Infinity');
promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
const options = {alpha: NaN};
- assert_throws_js(TypeError, () => builder.linear(options));
-}, '[linear] Throw if options.alpha is NaN when building an activation');
+ const input = builder.input('input', {dataType: 'float32', dimensions: [1]});
+ assert_throws_js(TypeError, () => builder.linear(input, options));
+}, '[linear] Throw if options.alpha is NaN');
diff --git a/tests/wpt/tests/webnn/validation_tests/lstm.https.any.js b/tests/wpt/tests/webnn/validation_tests/lstm.https.any.js
index 06834b39604..00f6b129dfa 100644
--- a/tests/wpt/tests/webnn/validation_tests/lstm.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/lstm.https.any.js
@@ -264,6 +264,7 @@ const tests = [
tests.forEach(
test => promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
const input = builder.input(
'input',
{dataType: test.input.dataType, dimensions: test.input.dimensions});
@@ -317,9 +318,7 @@ tests.forEach(
options.layout = test.options.layout;
}
if (test.options.activations) {
- options.activations = [];
- test.options.activations.forEach(
- activation => options.activations.push(builder[activation]()));
+ options.activations = test.options.activations;
}
}
@@ -454,18 +453,3 @@ multi_builder_test(async (t, builder, otherBuilder) => {
() => builder.lstm(
input, weight, recurrentWeight, steps, hiddenSize, options));
}, '[lstm] throw if initialCellState option is from another builder');
-
-multi_builder_test(async (t, builder, otherBuilder) => {
- const activation = builder.relu();
- const activationFromOtherBuilder = otherBuilder.relu();
- const options = {activations: [activation, activationFromOtherBuilder]};
-
- const input = builder.input('input', kExampleInputDescriptor);
- const weight = builder.input('weight', kExampleWeightDescriptor);
- const recurrentWeight =
- builder.input('recurrentWeight', kExampleRecurrentWeightDescriptor);
- assert_throws_js(
- TypeError,
- () => builder.lstm(
- input, weight, recurrentWeight, steps, hiddenSize, options));
-}, '[lstm] throw if any activation option is from another builder');
diff --git a/tests/wpt/tests/webnn/validation_tests/lstmCell.https.any.js b/tests/wpt/tests/webnn/validation_tests/lstmCell.https.any.js
index 6b7bd1958b3..28a9cb8dd3f 100644
--- a/tests/wpt/tests/webnn/validation_tests/lstmCell.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/lstmCell.https.any.js
@@ -186,25 +186,6 @@ multi_builder_test(async (t, builder, otherBuilder) => {
options));
}, '[lstmCell] throw if peepholeWeight option is from another builder');
-multi_builder_test(async (t, builder, otherBuilder) => {
- const activation = builder.relu();
- const activationFromOtherBuilder = otherBuilder.relu();
- const options = {activations: [activation, activationFromOtherBuilder]};
-
- const input = builder.input('input', kExampleInputDescriptor);
- const weight = builder.input('weight', kExampleWeightDescriptor);
- const recurrentWeight =
- builder.input('recurrentWeight', kExampleRecurrentWeightDescriptor);
- const hiddenState =
- builder.input('hiddenState', kExampleHiddenStateDescriptor);
- const cellState = builder.input('cellState', kExampleCellStateDescriptor);
- assert_throws_js(
- TypeError,
- () => builder.lstmCell(
- input, weight, recurrentWeight, hiddenState, cellState, hiddenSize,
- options));
-}, '[lstmCell] throw if activation option is from another builder');
-
const tests = [
{
name: '[lstmCell] Test with default options',
@@ -532,6 +513,7 @@ const tests = [
tests.forEach(
test => promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
const input = builder.input(
'input',
{dataType: test.input.dataType, dimensions: test.input.dimensions});
@@ -575,9 +557,7 @@ tests.forEach(
options.layout = test.options.layout;
}
if (test.options.activations) {
- options.activations = [];
- test.options.activations.forEach(
- activation => options.activations.push(builder[activation]()));
+ options.activations = test.options.activations;
}
}
diff --git a/tests/wpt/tests/webnn/validation_tests/matmul.https.any.js b/tests/wpt/tests/webnn/validation_tests/matmul.https.any.js
index 8db16242c9e..c298c87388b 100644
--- a/tests/wpt/tests/webnn/validation_tests/matmul.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/matmul.https.any.js
@@ -101,6 +101,7 @@ const tests = [
];
tests.forEach(test => promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
const inputA = builder.input('a', {
dataType: test.inputs.a.dataType,
dimensions: test.inputs.a.dimensions
diff --git a/tests/wpt/tests/webnn/validation_tests/pad.https.any.js b/tests/wpt/tests/webnn/validation_tests/pad.https.any.js
index cc39bee4c0d..4971706e49d 100644
--- a/tests/wpt/tests/webnn/validation_tests/pad.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/pad.https.any.js
@@ -69,6 +69,7 @@ const tests = [
tests.forEach(
test => promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
const input = builder.input(
'input',
{dataType: test.input.dataType, dimensions: test.input.dimensions});
diff --git a/tests/wpt/tests/webnn/validation_tests/pooling-and-reduction-keep-dims.https.any.js b/tests/wpt/tests/webnn/validation_tests/pooling-and-reduction-keep-dims.https.any.js
index 9f6b9fb3384..ca9632a5f72 100644
--- a/tests/wpt/tests/webnn/validation_tests/pooling-and-reduction-keep-dims.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/pooling-and-reduction-keep-dims.https.any.js
@@ -18,6 +18,8 @@
// |
// [output]
promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
+
const avgPool2dInputShape = [1, 7, 7, 2048];
const avgPool2dInput = builder.input(
`avgPool2dInput`, {dataType: 'float32', dimensions: avgPool2dInputShape});
@@ -61,6 +63,8 @@ promise_test(async t => {
// |
// [output]
promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
+
const reduceMeanInputShape = [1, 7, 7, 2048];
const reduceMeanInput = builder.input(
`reduceMeanInput`,
diff --git a/tests/wpt/tests/webnn/validation_tests/pooling.https.any.js b/tests/wpt/tests/webnn/validation_tests/pooling.https.any.js
index 6d21f3d52f1..aca73de9488 100644
--- a/tests/wpt/tests/webnn/validation_tests/pooling.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/pooling.https.any.js
@@ -11,6 +11,7 @@ kPoolingOperators.forEach((operatorName) => {
operatorName, {dataType: 'float32', dimensions: [2, 2, 2, 2]});
});
+const label = 'pool_2d_xxx';
const tests = [
{
name: 'Test pool2d with default options.',
@@ -140,6 +141,7 @@ const tests = [
{
name: 'Throw if the input is not a 4-D tensor.',
input: {dataType: 'float32', dimensions: [1, 5, 5]},
+ options: {label},
},
{
name: 'Throw if the output sizes is incorrect.',
@@ -149,6 +151,7 @@ const tests = [
padding: [2, 2, 2, 2],
strides: [2, 2],
outputSizes: [3, 3],
+ label: label,
},
},
{
@@ -159,6 +162,7 @@ const tests = [
padding: [2, 2, 2, 2],
strides: [2, 2],
outputSizes: [1, 2, 4, 4],
+ label: label,
},
},
{
@@ -169,6 +173,7 @@ const tests = [
padding: [2, 2, 2, 2],
strides: [2, 2],
outputSizes: [0, 4],
+ label: label,
},
},
{
@@ -179,6 +184,7 @@ const tests = [
padding: [2, 2, 2, 2],
strides: [2, 2],
outputSizes: [4, 0],
+ label: label,
},
},
{
@@ -186,6 +192,7 @@ const tests = [
input: {dataType: 'float32', dimensions: [1, 2, 5, 5]},
options: {
windowDimensions: [1, 1, 1, 1],
+ label: label,
},
},
{
@@ -193,6 +200,7 @@ const tests = [
input: {dataType: 'float32', dimensions: [1, 2, 5, 5]},
options: {
windowDimensions: [0, 2],
+ label: label,
},
},
{
@@ -201,6 +209,7 @@ const tests = [
input: {dataType: 'float32', dimensions: [1, 2, 5, 5]},
options: {
windowDimensions: [8, 2],
+ label: label,
},
},
{
@@ -209,6 +218,7 @@ const tests = [
input: {dataType: 'float32', dimensions: [1, 2, 5, 5]},
options: {
windowDimensions: [2, 8],
+ label: label,
},
},
{
@@ -216,6 +226,7 @@ const tests = [
input: {dataType: 'float32', dimensions: [1, 2, 5, 5]},
options: {
windowDimensions: [6, 3],
+ label: label,
},
},
{
@@ -223,6 +234,7 @@ const tests = [
input: {dataType: 'float32', dimensions: [1, 2, 5, 5]},
options: {
windowDimensions: [3, 6],
+ label: label,
},
},
{
@@ -230,6 +242,7 @@ const tests = [
input: {dataType: 'float32', dimensions: [1, 2, 5, 5]},
options: {
padding: [2, 2],
+ label: label,
},
},
{
@@ -237,6 +250,7 @@ const tests = [
input: {dataType: 'float32', dimensions: [1, 2, 5, 5]},
options: {
strides: [2],
+ label: label,
},
},
{
@@ -244,6 +258,7 @@ const tests = [
input: {dataType: 'float32', dimensions: [1, 2, 5, 5]},
options: {
strides: [0, 2],
+ label: label,
},
},
{
@@ -251,6 +266,7 @@ const tests = [
input: {dataType: 'float32', dimensions: [1, 2, 5, 5]},
options: {
dilations: [1, 1, 2],
+ label: label,
},
},
{
@@ -258,6 +274,7 @@ const tests = [
input: {dataType: 'float32', dimensions: [1, 2, 5, 5]},
options: {
dilations: [1, 0],
+ label: label,
},
},
{
@@ -265,6 +282,7 @@ const tests = [
input: {dataType: 'float32', dimensions: [1, 3, 5, 5]},
options: {
padding: [kMaxUnsignedLong, kMaxUnsignedLong, 0, 0],
+ label: label,
},
},
{
@@ -272,12 +290,14 @@ const tests = [
input: {dataType: 'float32', dimensions: [1, 3, 5, 5]},
options: {
padding: [0, 0, kMaxUnsignedLong, kMaxUnsignedLong],
+ label: label,
},
},
];
tests.forEach(
test => promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
const input = builder.input(
'input',
{dataType: test.input.dataType, dimensions: test.input.dimensions});
@@ -287,14 +307,21 @@ tests.forEach(
assert_equals(output.dataType(), test.output.dataType);
assert_array_equals(output.shape(), test.output.dimensions);
} else {
- assert_throws_js(
- TypeError, () => builder[operatorName](input, test.options));
+ try {
+ builder[operatorName](input, test.options);
+ } catch (e) {
+ assert_equals(e.name, 'TypeError');
+ const error_message = e.message;
+ const regrexp = new RegExp('\\[' + label + '\\]');
+ assert_not_equals(error_message.match(regrexp), null);
+ }
}
});
}, test.name));
['int32', 'uint32', 'int8', 'uint8'].forEach(
dataType => promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
const input = builder.input(
'input', {dataType: dataType, dimensions: [1, 3, 4, 4]});
const output = builder.maxPool2d(input);
@@ -303,12 +330,14 @@ tests.forEach(
}, `[maxPool2d] Test maxPool2d with data type ${dataType}`));
promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
const input =
builder.input('input', {dataType: 'int64', dimensions: [1, 2, 3, 3]});
assert_throws_js(TypeError, () => builder.averagePool2d(input));
}, '[averagePool2d] Throw if the input data type is not floating point');
promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
const input =
builder.input('input', {dataType: 'uint8', dimensions: [1, 2, 4, 4]});
assert_throws_js(TypeError, () => builder.l2Pool2d(input));
diff --git a/tests/wpt/tests/webnn/validation_tests/prelu.https.any.js b/tests/wpt/tests/webnn/validation_tests/prelu.https.any.js
index fa89df9631b..a0741300735 100644
--- a/tests/wpt/tests/webnn/validation_tests/prelu.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/prelu.https.any.js
@@ -75,6 +75,7 @@ const tests = [
tests.forEach(
test => promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
const input = builder.input(
'input',
{dataType: test.input.dataType, dimensions: test.input.dimensions});
diff --git a/tests/wpt/tests/webnn/validation_tests/reduction.https.any.js b/tests/wpt/tests/webnn/validation_tests/reduction.https.any.js
index 219a60076af..0ffc9c309fd 100644
--- a/tests/wpt/tests/webnn/validation_tests/reduction.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/reduction.https.any.js
@@ -144,6 +144,7 @@ const kNoTypeRestrictOperatorsTests = [
function runReductionTests(operatorName, tests) {
tests.forEach(test => {
promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
const input = builder.input(
'input',
{dataType: test.input.dataType, dimensions: test.input.dimensions});
diff --git a/tests/wpt/tests/webnn/validation_tests/relu.https.any.js b/tests/wpt/tests/webnn/validation_tests/relu.https.any.js
index 61b0d1938fe..caebba9b316 100644
--- a/tests/wpt/tests/webnn/validation_tests/relu.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/relu.https.any.js
@@ -6,5 +6,4 @@
validateInputFromAnotherBuilder('relu');
-validateUnaryOperation(
- 'relu', [...floatingPointTypes, 'int32', 'int8'], /*alsoBuildActivation=*/ true);
+validateSingleInputOperation('relu');
diff --git a/tests/wpt/tests/webnn/validation_tests/resample2d.https.any.js b/tests/wpt/tests/webnn/validation_tests/resample2d.https.any.js
index 0c6a475e878..9558e2bf5a9 100644
--- a/tests/wpt/tests/webnn/validation_tests/resample2d.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/resample2d.https.any.js
@@ -168,6 +168,7 @@ const tests = [
tests.forEach(
test => promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
const input = builder.input(
'input',
{dataType: test.input.dataType, dimensions: test.input.dimensions});
diff --git a/tests/wpt/tests/webnn/validation_tests/reshape.https.any.js b/tests/wpt/tests/webnn/validation_tests/reshape.https.any.js
index 67491fbc168..57a5dde2c91 100644
--- a/tests/wpt/tests/webnn/validation_tests/reshape.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/reshape.https.any.js
@@ -65,6 +65,7 @@ const tests = [
tests.forEach(
test => promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
const input = builder.input(
'input',
{dataType: test.input.dataType, dimensions: test.input.dimensions});
diff --git a/tests/wpt/tests/webnn/validation_tests/sigmoid.https.any.js b/tests/wpt/tests/webnn/validation_tests/sigmoid.https.any.js
index b40ddc3fd4a..e76403eca3e 100644
--- a/tests/wpt/tests/webnn/validation_tests/sigmoid.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/sigmoid.https.any.js
@@ -6,5 +6,4 @@
validateInputFromAnotherBuilder('sigmoid');
-validateUnaryOperation(
- 'sigmoid', floatingPointTypes, /*alsoBuildActivation=*/ true);
+validateSingleInputOperation('sigmoid');
diff --git a/tests/wpt/tests/webnn/validation_tests/slice.https.any.js b/tests/wpt/tests/webnn/validation_tests/slice.https.any.js
index de426216101..3eb308ad2b8 100644
--- a/tests/wpt/tests/webnn/validation_tests/slice.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/slice.https.any.js
@@ -66,6 +66,7 @@ const tests = [
tests.forEach(
test => promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
const input = builder.input(
'input',
{dataType: test.input.dataType, dimensions: test.input.dimensions});
diff --git a/tests/wpt/tests/webnn/validation_tests/softmax.https.any.js b/tests/wpt/tests/webnn/validation_tests/softmax.https.any.js
index a75878307f6..94695e69c6c 100644
--- a/tests/wpt/tests/webnn/validation_tests/softmax.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/softmax.https.any.js
@@ -25,20 +25,20 @@ const tests_without_axis = [
}
];
-tests_without_axis.forEach(test =>
- promise_test(async t => {
- let input = builder.input(
- `input`, { dataType: test.input.dataType, dimensions: test.input.dimensions }
- );
- if (test.output) {
- const output = builder.softmax(input);
- assert_equals(output.dataType(), test.output.dataType);
- assert_array_equals(output.shape(), test.output.dimensions);
- } else {
- assert_throws_js(TypeError, () => builder.softmax(input));
- }
- }, test.name)
-);
+tests_without_axis.forEach(
+ test => promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
+ let input = builder.input(
+ `input`,
+ {dataType: test.input.dataType, dimensions: test.input.dimensions});
+ if (test.output) {
+ const output = builder.softmax(input);
+ assert_equals(output.dataType(), test.output.dataType);
+ assert_array_equals(output.shape(), test.output.dimensions);
+ } else {
+ assert_throws_js(TypeError, () => builder.softmax(input));
+ }
+ }, test.name));
multi_builder_test(async (t, builder, otherBuilder) => {
const operandDescriptor = { dataType: 'float32', dimensions: [2, 3] };
@@ -74,20 +74,20 @@ const tests = [
}
];
-tests.forEach(test =>
- promise_test(async t => {
- let input = builder.input(
- `input`, { dataType: test.input.dataType, dimensions: test.input.dimensions }
- );
- if (test.output) {
- const output = builder.softmax(input, test.axis);
- assert_equals(output.dataType(), test.output.dataType);
- assert_array_equals(output.shape(), test.output.dimensions);
- } else {
- assert_throws_js(TypeError, () => builder.softmax(input, test.axis));
- }
- }, test.name)
-);
+tests.forEach(
+ test => promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
+ let input = builder.input(
+ `input`,
+ {dataType: test.input.dataType, dimensions: test.input.dimensions});
+ if (test.output) {
+ const output = builder.softmax(input, test.axis);
+ assert_equals(output.dataType(), test.output.dataType);
+ assert_array_equals(output.shape(), test.output.dimensions);
+ } else {
+ assert_throws_js(TypeError, () => builder.softmax(input, test.axis));
+ }
+ }, test.name));
multi_builder_test(async (t, builder, otherBuilder) => {
const operandDescriptor = { dataType: 'float32', dimensions: [1, 2, 3] };
diff --git a/tests/wpt/tests/webnn/validation_tests/softplus.https.any.js b/tests/wpt/tests/webnn/validation_tests/softplus.https.any.js
index 3cf91d26ecb..2196c895f39 100644
--- a/tests/wpt/tests/webnn/validation_tests/softplus.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/softplus.https.any.js
@@ -6,5 +6,4 @@
validateInputFromAnotherBuilder('softplus');
-validateUnaryOperation(
- 'softplus', floatingPointTypes, /*alsoBuildActivation=*/ true);
+validateSingleInputOperation('softplus');
diff --git a/tests/wpt/tests/webnn/validation_tests/softsign.https.any.js b/tests/wpt/tests/webnn/validation_tests/softsign.https.any.js
index 58ec4871599..81b4b4fbe75 100644
--- a/tests/wpt/tests/webnn/validation_tests/softsign.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/softsign.https.any.js
@@ -6,5 +6,4 @@
validateInputFromAnotherBuilder('softsign');
-validateUnaryOperation(
- 'softsign', floatingPointTypes, /*alsoBuildActivation=*/ true);
+validateSingleInputOperation('softsign');
diff --git a/tests/wpt/tests/webnn/validation_tests/split.https.any.js b/tests/wpt/tests/webnn/validation_tests/split.https.any.js
index 91d00b0a6d7..9946df34ed8 100644
--- a/tests/wpt/tests/webnn/validation_tests/split.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/split.https.any.js
@@ -94,6 +94,7 @@ const tests = [
tests.forEach(
test => promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
const input = builder.input(
'input',
{dataType: test.input.dataType, dimensions: test.input.dimensions});
diff --git a/tests/wpt/tests/webnn/validation_tests/tanh.https.any.js b/tests/wpt/tests/webnn/validation_tests/tanh.https.any.js
index 4f9de919f61..deb9f3614eb 100644
--- a/tests/wpt/tests/webnn/validation_tests/tanh.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/tanh.https.any.js
@@ -6,5 +6,4 @@
validateInputFromAnotherBuilder('tanh');
-validateUnaryOperation(
- 'tanh', floatingPointTypes, /*alsoBuildActivation=*/ true);
+validateUnaryOperation('tanh', floatingPointTypes);
diff --git a/tests/wpt/tests/webnn/validation_tests/transpose.https.any.js b/tests/wpt/tests/webnn/validation_tests/transpose.https.any.js
index 3475a427d73..be9c9bd8a63 100644
--- a/tests/wpt/tests/webnn/validation_tests/transpose.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/transpose.https.any.js
@@ -44,6 +44,7 @@ const tests = [
tests.forEach(
test => promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
const input = builder.input(
'input',
{dataType: test.input.dataType, dimensions: test.input.dimensions});
diff --git a/tests/wpt/tests/webnn/validation_tests/triangular.https.any.js b/tests/wpt/tests/webnn/validation_tests/triangular.https.any.js
index 59694a42603..b6e2802b7c5 100644
--- a/tests/wpt/tests/webnn/validation_tests/triangular.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/triangular.https.any.js
@@ -5,6 +5,8 @@
'use strict';
promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
+
// The input tensor which is at least 2-D.
for (let dimensions of allWebNNDimensionsArray.slice(0, 2)) {
for (let dataType of allWebNNOperandDataTypes) {
@@ -12,6 +14,6 @@ promise_test(async t => {
assert_throws_js(TypeError, () => builder.triangular(input));
}
}
-}, "[triangular] TypeError is expected if input's rank is less than 2");
+}, '[triangular] TypeError is expected if input\'s rank is less than 2');
validateInputFromAnotherBuilder('triangular');
diff --git a/tests/wpt/tests/webnn/validation_tests/where.https.any.js b/tests/wpt/tests/webnn/validation_tests/where.https.any.js
index 33394f86322..f509971f69a 100644
--- a/tests/wpt/tests/webnn/validation_tests/where.https.any.js
+++ b/tests/wpt/tests/webnn/validation_tests/where.https.any.js
@@ -76,6 +76,7 @@ const tests = [
tests.forEach(
test => promise_test(async t => {
+ const builder = new MLGraphBuilder(context);
for (let operand of [test.condition, test.trueValue, test.falseValue]) {
if (!context.opSupportLimits().input.dataTypes.includes(
operand.dataType)) {
diff --git a/tests/wpt/tests/webrtc/RTCDataChannel-send-close.html b/tests/wpt/tests/webrtc/RTCDataChannel-send-close.html
index 1bcc96790d9..4ffe4a20197 100644
--- a/tests/wpt/tests/webrtc/RTCDataChannel-send-close.html
+++ b/tests/wpt/tests/webrtc/RTCDataChannel-send-close.html
@@ -36,7 +36,7 @@ for (const options of [{}, {negotiated: true, id: 0}]) {
}
try {
- while(true) {
+ while(sentSize < 20 * 1024 * 1024) {
channel1.send(largeString);
sentSize += largeString.length;
}
@@ -71,7 +71,7 @@ for (const options of [{}, {negotiated: true, id: 0}]) {
}
try {
- while(true) {
+ while(sentSize < 20 * 1024 * 1024) {
channel1.send(largeArrayBuffer);
sentSize += largeArrayBuffer.length;
}
@@ -106,7 +106,7 @@ for (const options of [{}, {negotiated: true, id: 0}]) {
}
try {
- while(true) {
+ while(sentSize < 20 * 1024 * 1024) {
channel1.send(largeBlob);
sentSize += largeBlob.size;
}
diff --git a/tests/wpt/tests/webrtc/idlharness.https.window.js b/tests/wpt/tests/webrtc/idlharness.https.window.js
index 58e696f73c1..611494f641d 100644
--- a/tests/wpt/tests/webrtc/idlharness.https.window.js
+++ b/tests/wpt/tests/webrtc/idlharness.https.window.js
@@ -108,7 +108,7 @@ function asyncInit() {
idl_test(
['webrtc'],
- ['webidl', 'mediacapture-streams', 'hr-time', 'dom', 'html'],
+ ['webidl', 'mediacapture-streams', 'hr-time', 'dom', 'html', 'websockets'],
async idlArray => {
idlArray.add_objects({
RTCPeerConnection: [`new RTCPeerConnection()`],
diff --git a/tests/wpt/tests/webtransport/close.https.any.js b/tests/wpt/tests/webtransport/close.https.any.js
index 0d8579584fb..d7271b61cfd 100644
--- a/tests/wpt/tests/webtransport/close.https.any.js
+++ b/tests/wpt/tests/webtransport/close.https.any.js
@@ -156,10 +156,33 @@ promise_test(async t => {
promise_test(async t => {
const wt = new WebTransport(webtransport_url('server-close.py'));
- promise_rejects_dom(t, "InvalidStateError", wt.createUnidirectionalStream());
+ await promise_rejects_dom(t, "InvalidStateError",
+ wt.createUnidirectionalStream());
}, 'server initiated closure while opening unidirectional stream before ready');
promise_test(async t => {
const wt = new WebTransport(webtransport_url('server-close.py'));
- promise_rejects_dom(t, "InvalidStateError", wt.createBidirectionalStream());
+ await promise_rejects_dom(t, "InvalidStateError",
+ wt.createBidirectionalStream());
}, 'server initiated closure while opening bidirectional stream before ready');
+
+// Regression test for https://crbug.com/347710668.
+promise_test(async t => {
+ const wt = new WebTransport(webtransport_url('server-read-then-close.py'));
+ add_completion_callback(() => wt.close());
+ await wt.ready;
+
+ const bidi_reader = wt.incomingBidirectionalStreams.getReader();
+ const { value: bidi } = await bidi_reader.read();
+
+ bidi.writable.getWriter().write(new TextEncoder().encode('some data'));
+ const reader = bidi.readable.getReader();
+ await reader.closed.catch(t.step_func(
+ e => assert_true(e instanceof WebTransportError)));
+
+ // The WebTransport session will already be closed.
+ const {reason, closeCode} = await wt.closed;
+
+ assert_equals(reason, '', 'reason should be default');
+ assert_equals(closeCode, 0, 'closeCode should be default');
+}, 'reading closed property after close should work');
diff --git a/tests/wpt/tests/webtransport/handlers/server-read-then-close.py b/tests/wpt/tests/webtransport/handlers/server-read-then-close.py
new file mode 100644
index 00000000000..7f992e0dcca
--- /dev/null
+++ b/tests/wpt/tests/webtransport/handlers/server-read-then-close.py
@@ -0,0 +1,9 @@
+def session_established(session):
+ stream_id = session.create_bidirectional_stream()
+
+
+def stream_data_received(session,
+ stream_id: int,
+ data: bytes,
+ stream_ended: bool):
+ session.close(None)
diff --git a/tests/wpt/tests/webusb/requestDevice/sandboxed_iframe.https.window.js b/tests/wpt/tests/webusb/requestDevice/sandboxed_iframe.https.window.js
index b63f4094803..0311db88491 100644
--- a/tests/wpt/tests/webusb/requestDevice/sandboxed_iframe.https.window.js
+++ b/tests/wpt/tests/webusb/requestDevice/sandboxed_iframe.https.window.js
@@ -13,10 +13,7 @@ promise_test(async (t) => {
window.addEventListener('message', t.step_func(messageEvent => {
// The failure message of no device chosen is expected. The point here is
// to validate not failing because of a sandboxed iframe.
- assert_equals(
- 'FAIL: NotFoundError: Failed to execute \'requestDevice\' on ' +
- '\'USB\': No device selected.',
- messageEvent.data);
+ assert_true(messageEvent.data.includes('NotFoundError'));
resolve();
}));
iframe.contentWindow.postMessage('RequestDevice', '*');