mirror of
https://github.com/servo/servo.git
synced 2025-06-28 11:03:39 +01:00
Sync WPT with upstream (15-06-2025) (#37468)
Automated downstream sync of changes from upstream as of 15-06-2025 [no-wpt-sync] Signed-off-by: WPT Sync Bot <ghbot+wpt-sync@servo.org>
This commit is contained in:
parent
96adb1e959
commit
1eb62a1ffb
50 changed files with 1293 additions and 226 deletions
275
tests/wpt/meta/MANIFEST.json
vendored
275
tests/wpt/meta/MANIFEST.json
vendored
|
@ -38233,7 +38233,7 @@
|
|||
},
|
||||
"apng": {
|
||||
"animated-png-timeout.html": [
|
||||
"6975bd9c4e7339ceceb9f078bbf0c356f9949f3e",
|
||||
"2a10f8df06ccce550ebd642f7602c3b55dad9a8b",
|
||||
[
|
||||
null,
|
||||
[
|
||||
|
@ -188203,7 +188203,113 @@
|
|||
],
|
||||
{}
|
||||
]
|
||||
]
|
||||
],
|
||||
"subgrid": {
|
||||
"subgrid-gap-decorations-001.html": [
|
||||
"d5356ea5aa6de0bac341fb111b8c98734dde69da",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/reference/ref-filled-green-100px-square.xht",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"subgrid-gap-decorations-002.html": [
|
||||
"82df19b25fded7593aba75703c0ab050b7130256",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/reference/ref-filled-green-100px-square.xht",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"subgrid-gap-decorations-003.html": [
|
||||
"21199263380eae7aa5217fa6645b8ee5a930294d",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/reference/ref-filled-green-100px-square.xht",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"subgrid-gap-decorations-004.html": [
|
||||
"20fb1404fa24503bf70eebf297fbe77129910365",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-gaps/grid/grid-gap-decorations-006-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"subgrid-gap-decorations-005.html": [
|
||||
"7c92642b603bd8fcac55f6ac635390a3d7fb15df",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-gaps/grid/grid-gap-decorations-007-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"subgrid-gap-decorations-006.html": [
|
||||
"8ac8b7a9ad91e76c44bc1c7f1978fc27418455f0",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-gaps/grid/grid-gap-decorations-008-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"subgrid-gap-decorations-007.html": [
|
||||
"64a87d62d115ebdedb02fb15c446aed0be209193",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-gaps/grid/grid-gap-decorations-010-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"subgrid-gap-decorations-008.html": [
|
||||
"b43dea7114936d2b8ae718c0033ed9bcda27e200",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/css-gaps/grid/grid-gap-decorations-012-ref.html",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
"multicol": {
|
||||
"multicol-gap-decorations-001.html": [
|
||||
|
@ -334565,6 +334671,19 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"mq-invalid-media-type-006.html": [
|
||||
"430c3a36a37b097ca8db6d491c3f2f2fc82e227f",
|
||||
[
|
||||
null,
|
||||
[
|
||||
[
|
||||
"/css/reference/ref-filled-green-100px-square.xht",
|
||||
"=="
|
||||
]
|
||||
],
|
||||
{}
|
||||
]
|
||||
],
|
||||
"mq-invalid-media-type-layer-001.html": [
|
||||
"ef3fc48ca888810101ad196917022f6c378b52a9",
|
||||
[
|
||||
|
@ -378028,7 +378147,7 @@
|
|||
],
|
||||
"support": {
|
||||
"clear-cache-helper.sub.js": [
|
||||
"1e9f2c2c33a7c1394c9c813579bd41d4d6a51f38",
|
||||
"5db0caf834cbf6a598f02761beda267dc8f1bcf8",
|
||||
[]
|
||||
],
|
||||
"clear-site-data-cache.py": [
|
||||
|
@ -443915,7 +444034,7 @@
|
|||
[]
|
||||
],
|
||||
"position-sticky-fractional-offset-ref.html": [
|
||||
"8b7a1f8a195843b2b943e39813b5e24781955b8d",
|
||||
"37a087b7be7182c2bdefc3a39124132360c1bab0",
|
||||
[]
|
||||
],
|
||||
"position-sticky-grid-ref.html": [
|
||||
|
@ -517510,7 +517629,7 @@
|
|||
[]
|
||||
],
|
||||
"executorservodriver.py": [
|
||||
"e27b111ee8b7c4cdff4a0aee5c010d402efff263",
|
||||
"8176d15ea2a5bbc201618076d58c76b59bc42c47",
|
||||
[]
|
||||
],
|
||||
"executorwebdriver.py": [
|
||||
|
@ -564530,18 +564649,8 @@
|
|||
]
|
||||
},
|
||||
"clear-site-data": {
|
||||
"clear-cache-bfcache-partitioning.tentative.https.html": [
|
||||
"02a2f020cbca1a14088f60db27de61b61aae2cf8",
|
||||
[
|
||||
null,
|
||||
{
|
||||
"testdriver": true,
|
||||
"timeout": "long"
|
||||
}
|
||||
]
|
||||
],
|
||||
"clear-cache-bfcache.https.html": [
|
||||
"b9967c541f1d89f6343ea47df38b3cbdb722ecc1",
|
||||
"clear-cache-bfcache.sub.https.html": [
|
||||
"61d810f453b827946cb6ef943b4509b24e5f3246",
|
||||
[
|
||||
null,
|
||||
{
|
||||
|
@ -569474,7 +569583,7 @@
|
|||
]
|
||||
],
|
||||
"compute_pressure_duplicate_updates.https.window.js": [
|
||||
"abf53854b40637d17102132d39e8a5e0aeaa438d",
|
||||
"b2968375db06ad348bd92b403f56828b84ff5fb9",
|
||||
[
|
||||
"compute-pressure/compute_pressure_duplicate_updates.https.window.html?globalScope=dedicated_worker",
|
||||
{
|
||||
|
@ -585932,21 +586041,21 @@
|
|||
]
|
||||
],
|
||||
"corner-shape-computed.html": [
|
||||
"e1b458fd06eb512ccd12912ed96c464f8a29bf82",
|
||||
"e48fda86af2bb161f12e3144b160e55a324b65c8",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"corner-shape-invalid.html": [
|
||||
"6aee773f4a4005e1365ff7601b69cc4c08533e46",
|
||||
"5426a5ec704f4f74618d00c36afdf5846231f0f0",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
]
|
||||
],
|
||||
"corner-shape-valid.html": [
|
||||
"0ad14c81a74425ce905ea5f1b560e737fbff6d08",
|
||||
"c9c4421a46c0c33b96b6ea8b63edbb29640643c7",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -627392,7 +627501,7 @@
|
|||
]
|
||||
],
|
||||
"define.html": [
|
||||
"d3d923bd916fd04576d0de1d809e43a5395b9edb",
|
||||
"52193ebd17e4ea01e2dccf0656ad28915894d65b",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -627454,7 +627563,7 @@
|
|||
{}
|
||||
]
|
||||
],
|
||||
"valid-custom-element-names.tentative.html": [
|
||||
"valid-custom-element-names.html": [
|
||||
"72a5999e3a9a76bd35b3f17402cf13f6ef43dc4d",
|
||||
[
|
||||
null,
|
||||
|
@ -730920,7 +731029,7 @@
|
|||
]
|
||||
],
|
||||
"video-intrinsic-width-height.html": [
|
||||
"047c832da35246278ce58a255037c64bb1d8b723",
|
||||
"836fadb24fda2f90b5730babe801b212d3125fea",
|
||||
[
|
||||
null,
|
||||
{}
|
||||
|
@ -803178,6 +803287,28 @@
|
|||
}
|
||||
]
|
||||
],
|
||||
"lcp": {
|
||||
"tentative": {
|
||||
"broken-image-icon.html": [
|
||||
"fbfb2280dcfbad916b0b62d69e481b35256b0188",
|
||||
[
|
||||
null,
|
||||
{
|
||||
"testdriver": true
|
||||
}
|
||||
]
|
||||
],
|
||||
"contracted-image.html": [
|
||||
"46d359a87b3fe5e99e03879cf3801e4e358e1f67",
|
||||
[
|
||||
null,
|
||||
{
|
||||
"testdriver": true
|
||||
}
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
"load-classic-script-history-push.tentative.html": [
|
||||
"4e375b2164db87258132f4a6edba4b68c1c2b99b",
|
||||
[
|
||||
|
@ -883501,6 +883632,102 @@
|
|||
}
|
||||
]
|
||||
],
|
||||
"opSupportLimits.https.any.js": [
|
||||
"cd28df9b6938acfcfb0d09fbe52b3d0c0693ecf1",
|
||||
[
|
||||
"webnn/validation_tests/opSupportLimits.https.any.html?cpu",
|
||||
{
|
||||
"script_metadata": [
|
||||
[
|
||||
"title",
|
||||
"validation context.opSupportLimits() interface"
|
||||
],
|
||||
[
|
||||
"global",
|
||||
"window"
|
||||
],
|
||||
[
|
||||
"variant",
|
||||
"?cpu"
|
||||
],
|
||||
[
|
||||
"variant",
|
||||
"?gpu"
|
||||
],
|
||||
[
|
||||
"variant",
|
||||
"?npu"
|
||||
],
|
||||
[
|
||||
"script",
|
||||
"../resources/utils_validation.js"
|
||||
]
|
||||
]
|
||||
}
|
||||
],
|
||||
[
|
||||
"webnn/validation_tests/opSupportLimits.https.any.html?gpu",
|
||||
{
|
||||
"script_metadata": [
|
||||
[
|
||||
"title",
|
||||
"validation context.opSupportLimits() interface"
|
||||
],
|
||||
[
|
||||
"global",
|
||||
"window"
|
||||
],
|
||||
[
|
||||
"variant",
|
||||
"?cpu"
|
||||
],
|
||||
[
|
||||
"variant",
|
||||
"?gpu"
|
||||
],
|
||||
[
|
||||
"variant",
|
||||
"?npu"
|
||||
],
|
||||
[
|
||||
"script",
|
||||
"../resources/utils_validation.js"
|
||||
]
|
||||
]
|
||||
}
|
||||
],
|
||||
[
|
||||
"webnn/validation_tests/opSupportLimits.https.any.html?npu",
|
||||
{
|
||||
"script_metadata": [
|
||||
[
|
||||
"title",
|
||||
"validation context.opSupportLimits() interface"
|
||||
],
|
||||
[
|
||||
"global",
|
||||
"window"
|
||||
],
|
||||
[
|
||||
"variant",
|
||||
"?cpu"
|
||||
],
|
||||
[
|
||||
"variant",
|
||||
"?gpu"
|
||||
],
|
||||
[
|
||||
"variant",
|
||||
"?npu"
|
||||
],
|
||||
[
|
||||
"script",
|
||||
"../resources/utils_validation.js"
|
||||
]
|
||||
]
|
||||
}
|
||||
]
|
||||
],
|
||||
"pad.https.any.js": [
|
||||
"fb285ed8277fcf7ce04c6927b7173cc3b47b2544",
|
||||
[
|
||||
|
|
|
@ -28,3 +28,24 @@
|
|||
|
||||
[.test 16: space-around]
|
||||
expected: FAIL
|
||||
|
||||
[.test 1: start]
|
||||
expected: FAIL
|
||||
|
||||
[.test 4: baseline]
|
||||
expected: FAIL
|
||||
|
||||
[.test 6: flex-start]
|
||||
expected: FAIL
|
||||
|
||||
[.test 8: unsafe start]
|
||||
expected: FAIL
|
||||
|
||||
[.test 11: safe start]
|
||||
expected: FAIL
|
||||
|
||||
[.test 15: space-between]
|
||||
expected: FAIL
|
||||
|
||||
[.test 17: normal]
|
||||
expected: FAIL
|
||||
|
|
|
@ -112,3 +112,21 @@
|
|||
|
||||
[Property corner-shape value 'superellipse(-1) superellipse(3) superellipse(0) superellipse(infinity)']
|
||||
expected: FAIL
|
||||
|
||||
[Property corner-left-shape value 'round scoop']
|
||||
expected: FAIL
|
||||
|
||||
[Property corner-top-shape value 'round scoop']
|
||||
expected: FAIL
|
||||
|
||||
[Property corner-top-shape value 'superellipse(4)']
|
||||
expected: FAIL
|
||||
|
||||
[Property corner-right-shape value 'superellipse(-1.5) superellipse(3)']
|
||||
expected: FAIL
|
||||
|
||||
[Property corner-right-shape value 'superellipse(-1) superellipse(2)']
|
||||
expected: FAIL
|
||||
|
||||
[Property corner-bottom-shape value 'scoop scoop']
|
||||
expected: FAIL
|
||||
|
|
|
@ -478,3 +478,147 @@
|
|||
|
||||
[e.style['corner-shape'\] = "superellipse(-0.5) superellipse(3) square superellipse(-30)" should set the property value]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['corner-top-shape'\] = "scoop" should set corner-top-left-shape]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['corner-top-shape'\] = "scoop" should set corner-top-right-shape]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['corner-top-shape'\] = "scoop" should not set unrelated longhands]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['corner-top-shape'\] = "bevel notch" should set corner-top-left-shape]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['corner-top-shape'\] = "bevel notch" should set corner-top-right-shape]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['corner-top-shape'\] = "bevel notch" should not set unrelated longhands]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['corner-top-shape'\] = "superellipse(-2) squircle" should set corner-top-left-shape]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['corner-top-shape'\] = "superellipse(-2) squircle" should set corner-top-right-shape]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['corner-top-shape'\] = "superellipse(-2) squircle" should not set unrelated longhands]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['corner-top-shape'\] = "superellipse(3)" should set corner-top-left-shape]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['corner-top-shape'\] = "superellipse(3)" should set corner-top-right-shape]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['corner-top-shape'\] = "superellipse(3)" should not set unrelated longhands]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['corner-right-shape'\] = "scoop" should set corner-bottom-right-shape]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['corner-right-shape'\] = "scoop" should set corner-top-right-shape]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['corner-right-shape'\] = "scoop" should not set unrelated longhands]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['corner-right-shape'\] = "bevel notch" should set corner-bottom-right-shape]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['corner-right-shape'\] = "bevel notch" should set corner-top-right-shape]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['corner-right-shape'\] = "bevel notch" should not set unrelated longhands]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['corner-right-shape'\] = "superellipse(-2) squircle" should set corner-bottom-right-shape]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['corner-right-shape'\] = "superellipse(-2) squircle" should set corner-top-right-shape]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['corner-right-shape'\] = "superellipse(-2) squircle" should not set unrelated longhands]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['corner-right-shape'\] = "superellipse(3)" should set corner-bottom-right-shape]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['corner-right-shape'\] = "superellipse(3)" should set corner-top-right-shape]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['corner-right-shape'\] = "superellipse(3)" should not set unrelated longhands]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['corner-bottom-shape'\] = "scoop" should set corner-bottom-left-shape]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['corner-bottom-shape'\] = "scoop" should set corner-bottom-right-shape]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['corner-bottom-shape'\] = "scoop" should not set unrelated longhands]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['corner-bottom-shape'\] = "bevel notch" should set corner-bottom-left-shape]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['corner-bottom-shape'\] = "bevel notch" should set corner-bottom-right-shape]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['corner-bottom-shape'\] = "bevel notch" should not set unrelated longhands]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['corner-bottom-shape'\] = "superellipse(-2) squircle" should set corner-bottom-left-shape]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['corner-bottom-shape'\] = "superellipse(-2) squircle" should set corner-bottom-right-shape]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['corner-bottom-shape'\] = "superellipse(-2) squircle" should not set unrelated longhands]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['corner-bottom-shape'\] = "superellipse(3)" should set corner-bottom-left-shape]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['corner-bottom-shape'\] = "superellipse(3)" should set corner-bottom-right-shape]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['corner-bottom-shape'\] = "superellipse(3)" should not set unrelated longhands]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['corner-left-shape'\] = "scoop" should set corner-bottom-left-shape]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['corner-left-shape'\] = "scoop" should set corner-top-left-shape]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['corner-left-shape'\] = "scoop" should not set unrelated longhands]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['corner-left-shape'\] = "bevel notch" should set corner-bottom-left-shape]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['corner-left-shape'\] = "bevel notch" should set corner-top-left-shape]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['corner-left-shape'\] = "bevel notch" should not set unrelated longhands]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['corner-left-shape'\] = "superellipse(-2) squircle" should set corner-bottom-left-shape]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['corner-left-shape'\] = "superellipse(-2) squircle" should set corner-top-left-shape]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['corner-left-shape'\] = "superellipse(-2) squircle" should not set unrelated longhands]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['corner-left-shape'\] = "superellipse(3)" should set corner-bottom-left-shape]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['corner-left-shape'\] = "superellipse(3)" should set corner-top-left-shape]
|
||||
expected: FAIL
|
||||
|
||||
[e.style['corner-left-shape'\] = "superellipse(3)" should not set unrelated longhands]
|
||||
expected: FAIL
|
||||
|
|
2
tests/wpt/meta/css/css-gaps/grid/subgrid/subgrid-gap-decorations-002.html.ini
vendored
Normal file
2
tests/wpt/meta/css/css-gaps/grid/subgrid/subgrid-gap-decorations-002.html.ini
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
[subgrid-gap-decorations-002.html]
|
||||
expected: FAIL
|
2
tests/wpt/meta/css/css-gaps/grid/subgrid/subgrid-gap-decorations-003.html.ini
vendored
Normal file
2
tests/wpt/meta/css/css-gaps/grid/subgrid/subgrid-gap-decorations-003.html.ini
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
[subgrid-gap-decorations-003.html]
|
||||
expected: FAIL
|
2
tests/wpt/meta/css/css-gaps/grid/subgrid/subgrid-gap-decorations-004.html.ini
vendored
Normal file
2
tests/wpt/meta/css/css-gaps/grid/subgrid/subgrid-gap-decorations-004.html.ini
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
[subgrid-gap-decorations-004.html]
|
||||
expected: FAIL
|
2
tests/wpt/meta/css/css-gaps/grid/subgrid/subgrid-gap-decorations-005.html.ini
vendored
Normal file
2
tests/wpt/meta/css/css-gaps/grid/subgrid/subgrid-gap-decorations-005.html.ini
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
[subgrid-gap-decorations-005.html]
|
||||
expected: FAIL
|
2
tests/wpt/meta/css/css-gaps/grid/subgrid/subgrid-gap-decorations-006.html.ini
vendored
Normal file
2
tests/wpt/meta/css/css-gaps/grid/subgrid/subgrid-gap-decorations-006.html.ini
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
[subgrid-gap-decorations-006.html]
|
||||
expected: FAIL
|
2
tests/wpt/meta/css/css-gaps/grid/subgrid/subgrid-gap-decorations-007.html.ini
vendored
Normal file
2
tests/wpt/meta/css/css-gaps/grid/subgrid/subgrid-gap-decorations-007.html.ini
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
[subgrid-gap-decorations-007.html]
|
||||
expected: FAIL
|
2
tests/wpt/meta/css/css-gaps/grid/subgrid/subgrid-gap-decorations-008.html.ini
vendored
Normal file
2
tests/wpt/meta/css/css-gaps/grid/subgrid/subgrid-gap-decorations-008.html.ini
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
[subgrid-gap-decorations-008.html]
|
||||
expected: FAIL
|
|
@ -1,2 +0,0 @@
|
|||
[dynamic-available-size-iframe.html]
|
||||
expected: FAIL
|
9
tests/wpt/meta/custom-elements/registries/define.html.ini
vendored
Normal file
9
tests/wpt/meta/custom-elements/registries/define.html.ini
vendored
Normal file
|
@ -0,0 +1,9 @@
|
|||
[define.html]
|
||||
[Element names: defining an element named a-a× should succeed]
|
||||
expected: FAIL
|
||||
|
||||
[Element names: defining an element named a-a should succeed]
|
||||
expected: FAIL
|
||||
|
||||
[Element names: defining an element named a-a should succeed]
|
||||
expected: FAIL
|
|
@ -1,3 +1,3 @@
|
|||
[valid-custom-element-names.tentative.html]
|
||||
[valid-custom-element-names.html]
|
||||
[valid-custom-element-names]
|
||||
expected: FAIL
|
|
@ -1,5 +1,5 @@
|
|||
[max-payload.tentative.https.window.html]
|
||||
expected: ERROR
|
||||
expected: TIMEOUT
|
||||
[fetchLater() accepts max payload in a POST request body of String in same-origin iframe.]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -26,3 +26,6 @@
|
|||
|
||||
[sec-fetch-user - no options - updating]
|
||||
expected: NOTRUN
|
||||
|
||||
[sec-fetch-site - Same origin, no options - registration]
|
||||
expected: FAIL
|
||||
|
|
|
@ -4,3 +4,6 @@
|
|||
|
||||
[Navigating to a different document with form submission]
|
||||
expected: FAIL
|
||||
|
||||
[Navigating to a different document with link click]
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
[duplicate-name-order.html]
|
||||
[Duplicate name lookup order]
|
||||
expected: FAIL
|
|
@ -1,4 +1,3 @@
|
|||
[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]
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
[iframe_sandbox_popups_escaping-2.html]
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
|
||||
expected: FAIL
|
||||
expected: TIMEOUT
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
[iframe_sandbox_popups_nonescaping-1.html]
|
||||
expected: TIMEOUT
|
||||
[Check that popups from a sandboxed iframe do not escape the sandbox]
|
||||
expected: FAIL
|
||||
expected: NOTRUN
|
||||
|
|
|
@ -10,3 +10,12 @@
|
|||
|
||||
[Reload domInteractive > Original domInteractive]
|
||||
expected: FAIL
|
||||
|
||||
[Reload domContentLoadedEventEnd > Original domContentLoadedEventEnd]
|
||||
expected: FAIL
|
||||
|
||||
[Reload domContentLoadedEventStart > Original domContentLoadedEventStart]
|
||||
expected: FAIL
|
||||
|
||||
[Reload fetchStart > Original fetchStart]
|
||||
expected: FAIL
|
||||
|
|
|
@ -71,11 +71,11 @@
|
|||
[404 (script): main]
|
||||
expected: FAIL
|
||||
|
||||
[success (xhr): main]
|
||||
expected: FAIL
|
||||
|
||||
[404 (xhr): main]
|
||||
expected: FAIL
|
||||
|
||||
[Decode-error (style): main]
|
||||
expected: FAIL
|
||||
|
||||
[CORS (xhr): main]
|
||||
expected: FAIL
|
||||
|
|
|
@ -832,3 +832,15 @@
|
|||
|
||||
[X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[14650\]\t3.7113974459152624e-22\t8.6956524848937988e-1\t8.6956524848937988e-1\t1.0000000000000000e+0\t3.8985999999999999e-3\n\t[14651\]\t3.0547976493835449e-1\t8.9879405498504639e-1\t5.9331429004669189e-1\t6.6012262403823208e-1\t3.8985999999999999e-3\n\tMax AbsError of 8.6956524848937988e-1 at index of 14650.\n\tMax RelError of 1.0000000000000000e+0 at index of 14650.\n]
|
||||
expected: FAIL
|
||||
|
||||
[X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[14650\]\t2.9950560000000000e+7\t8.6956524848937988e-1\t2.9950559130434752e+7\t3.4443141768217228e+7\t3.8985999999999999e-3\n\t[14651\]\t3.0547976493835449e-1\t8.9879405498504639e-1\t5.9331429004669189e-1\t6.6012262403823208e-1\t3.8985999999999999e-3\n\tMax AbsError of 2.9950559130434752e+7 at index of 14650.\n\tMax RelError of 3.4443141768217228e+7 at index of 14650.\n]
|
||||
expected: FAIL
|
||||
|
||||
[X SNR (-106.09401274404922 dB) is not greater than or equal to 65.737. Got -106.09401274404922.]
|
||||
expected: FAIL
|
||||
|
||||
[X Stitched sine-wave buffers at sample rate 43800 does not equal [0,0.06264832615852356,0.12505052983760834,0.18696144223213196,0.24813786149024963,0.308339387178421,0.36732959747314453,0.4248766601085663,0.480754554271698,0.5347436666488647,0.5866320133209229,0.6362156271934509,0.6832997798919678,0.7276994585990906,0.7692402601242065,0.8077589869499207...\] with an element-wise tolerance of {"absoluteThreshold":0.0038986,"relativeThreshold":0}.\n\tIndex\tActual\t\t\tExpected\t\tAbsError\t\tRelError\t\tTest threshold\n\t[14650\]\t6.2262804267009756e-15\t8.6956524848937988e-1\t8.6956524848937367e-1\t9.9999999999999289e-1\t3.8985999999999999e-3\n\t[14651\]\t3.0547976493835449e-1\t8.9879405498504639e-1\t5.9331429004669189e-1\t6.6012262403823208e-1\t3.8985999999999999e-3\n\tMax AbsError of 8.6956524848937367e-1 at index of 14650.\n\tMax RelError of 9.9999999999999289e-1 at index of 14650.\n]
|
||||
expected: FAIL
|
||||
|
||||
[X SNR (42.96525288004429 dB) is not greater than or equal to 65.737. Got 42.96525288004429.]
|
||||
expected: FAIL
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
<html class="reftest-wait">
|
||||
<title>APNG: Second frame displays quickly, replacing red with green.</title>
|
||||
<link rel="match" href="animated-png-timeout-ref.html"/>
|
||||
<img src=../images/apng.png onload="loaded()"/>
|
||||
<script>
|
||||
function loaded() {
|
||||
setTimeout(function() {
|
||||
|
@ -9,3 +8,4 @@
|
|||
}, 1000);
|
||||
}
|
||||
</script>
|
||||
<img src=../images/apng.png onload="loaded()"/>
|
||||
|
|
|
@ -1,61 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset=utf-8>
|
||||
<meta name="timeout" content="long">
|
||||
<title>Clear-Site-Data: cache for bfcache</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="support/clear-cache-helper.sub.js"></script>
|
||||
<script src="/common/dispatcher/dispatcher.js"></script>
|
||||
<script src="/common/utils.js"></script>
|
||||
<script src="/html/browsers/browsing-the-web/back-forward-cache/resources/helper.sub.js"></script>
|
||||
<script type="module">
|
||||
|
||||
// cross-site: example.com (iframe: example.net) -> example.net (iframe example.net clear) -> in bfcache
|
||||
runBfCacheClearTest(
|
||||
{
|
||||
getUrlParams: {
|
||||
clear: "cache",
|
||||
secondOrigin: true,
|
||||
},
|
||||
targetOrigin: crossSiteOrigin,
|
||||
mode: "iframe",
|
||||
shouldBeCached: true,
|
||||
funcBeforeNavigation: async (url) => {
|
||||
await new Promise(resolve => {
|
||||
const iframe = document.createElement("iframe");
|
||||
iframe.src = url;
|
||||
document.body.appendChild(iframe);
|
||||
iframe.onload = resolve;
|
||||
});
|
||||
},
|
||||
argsBeforeNavigation: [crossSiteOrigin],
|
||||
},
|
||||
"BfCached document not be dropped when containing cross-site iframe and that cross-site received clear-cache header"
|
||||
);
|
||||
|
||||
// same-site: www.example.com (iframe: www2.example.com) -> www2.example.com (iframe www2.example.com clear) -> bfcache entry gets cleared
|
||||
runBfCacheClearTest(
|
||||
{
|
||||
getUrlParams: {
|
||||
clear: "cache",
|
||||
subdomain: true,
|
||||
},
|
||||
targetOrigin: subdomainOrigin,
|
||||
mode: "iframe",
|
||||
shouldBeCached: false,
|
||||
funcBeforeNavigation: async (url) => {
|
||||
await new Promise(resolve => {
|
||||
const iframe = document.createElement("iframe");
|
||||
iframe.src = url;
|
||||
document.body.appendChild(iframe);
|
||||
iframe.onload = resolve;
|
||||
});
|
||||
},
|
||||
argsBeforeNavigation: [subdomainOrigin],
|
||||
},
|
||||
"BfCached document should be dropped when containing same-site iframe and that same-site received clear-cache header"
|
||||
);
|
||||
|
||||
</script>
|
|
@ -1,63 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset=utf-8>
|
||||
<meta name="timeout" content="long">
|
||||
<title>Clear-Site-Data: cache for bfcache</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="support/clear-cache-helper.sub.js"></script>
|
||||
<script src="/common/dispatcher/dispatcher.js"></script>
|
||||
<script src="/common/utils.js"></script>
|
||||
<script src="/html/browsers/browsing-the-web/back-forward-cache/resources/helper.sub.js"></script>
|
||||
<script type="module">
|
||||
|
||||
runBfCacheClearTest(
|
||||
{
|
||||
getUrlParams: {
|
||||
clear: "cache",
|
||||
},
|
||||
mode: "iframe",
|
||||
shouldBeCached: false,
|
||||
},
|
||||
"BfCached document shouldn't be cached after receiving clear-cache header from the same origin."
|
||||
);
|
||||
|
||||
runBfCacheClearTest(
|
||||
{
|
||||
targetOrigin: subdomainOrigin,
|
||||
getUrlParams: {
|
||||
subdomain: true,
|
||||
clear: "cache",
|
||||
},
|
||||
mode: "iframe",
|
||||
shouldBeCached: true,
|
||||
},
|
||||
"BfCached document should be cached after receiving clear-cache header from a subdomain."
|
||||
);
|
||||
|
||||
runBfCacheClearTest(
|
||||
{
|
||||
targetOrigin: crossSiteOrigin,
|
||||
getUrlParams: {
|
||||
secondOrigin: true,
|
||||
clear: "cache",
|
||||
},
|
||||
mode: "iframe",
|
||||
shouldBeCached: true,
|
||||
},
|
||||
"BfCached document should be cached after receiving clear-cache header from another site."
|
||||
);
|
||||
|
||||
runBfCacheClearTest(
|
||||
{
|
||||
getUrlParams: {
|
||||
clear: "cache",
|
||||
},
|
||||
mode: "window",
|
||||
shouldBeCached: false,
|
||||
},
|
||||
"BfCached document shouldn't be cached after receiving clear-cache header from another window."
|
||||
);
|
||||
|
||||
</script>
|
115
tests/wpt/tests/clear-site-data/clear-cache-bfcache.sub.https.html
vendored
Normal file
115
tests/wpt/tests/clear-site-data/clear-cache-bfcache.sub.https.html
vendored
Normal file
|
@ -0,0 +1,115 @@
|
|||
<!DOCTYPE html>
|
||||
<meta charset=utf-8>
|
||||
<meta name="timeout" content="long">
|
||||
<title>Clear-Site-Data: cache for bfcache</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="support/clear-cache-helper.sub.js"></script>
|
||||
<script src="/common/dispatcher/dispatcher.js"></script>
|
||||
<script src="/common/utils.js"></script>
|
||||
<script src="/html/browsers/browsing-the-web/back-forward-cache/resources/helper.sub.js"></script>
|
||||
<script type="module">
|
||||
|
||||
const sameOrigin =
|
||||
'https://{{host}}:{{ports[https][0]}}';
|
||||
const subdomainOrigin =
|
||||
'https://{{hosts[][www2]}}:{{ports[https][0]}}';
|
||||
const crossSiteOrigin =
|
||||
'https://{{hosts[alt][]}}:{{ports[https][0]}}';
|
||||
|
||||
// The tests are built on top of the back-forward-cache test harness.
|
||||
// Here is the steps for the tests:
|
||||
// 1. Open a new window and navigate to a test URL.
|
||||
// 2. Navigate the window to a second page.
|
||||
// 3. Trigger the clear-site-data header either by window.open() or loading an
|
||||
// iframe from the second page.
|
||||
// 4. Navigate back to the first page.
|
||||
// 5. Assert that the first page is or is not cached.
|
||||
|
||||
function runBfCacheClearTest(params, description) {
|
||||
runBfcacheTest(
|
||||
{
|
||||
targetOrigin: sameOrigin,
|
||||
scripts: ["/clear-site-data/support/clear-cache-helper.sub.js"],
|
||||
funcBeforeBackNavigation: async (getUrlParams, mode) => {
|
||||
|
||||
const cacheHelper = self.crypto.randomUUID();
|
||||
const testUrl = getUrl(cacheHelper, getUrlParams);
|
||||
|
||||
let clearingPromise;
|
||||
if (mode === "window") {
|
||||
clearingPromise = new Promise(resolve => {
|
||||
window.addEventListener("message", resolve, {once: true});
|
||||
window.open(testUrl);
|
||||
});
|
||||
} else if (mode === "iframe") {
|
||||
clearingPromise = new Promise(resolve => {
|
||||
const iframe = document.createElement("iframe");
|
||||
iframe.src = testUrl;
|
||||
document.body.appendChild(iframe);
|
||||
iframe.onload = resolve;
|
||||
});
|
||||
} else {
|
||||
throw new Error("Unsupported mode");
|
||||
}
|
||||
|
||||
await clearingPromise;
|
||||
},
|
||||
argsBeforeBackNavigation: [params.getUrlParams, params.mode],
|
||||
...params,
|
||||
},
|
||||
description
|
||||
);
|
||||
}
|
||||
|
||||
runBfCacheClearTest(
|
||||
{
|
||||
getUrlParams: {
|
||||
clear: "cache",
|
||||
},
|
||||
mode: "iframe",
|
||||
shouldBeCached: false,
|
||||
},
|
||||
"BfCached document shouldn't be cached after receiving clear-cache header from the same origin."
|
||||
);
|
||||
|
||||
runBfCacheClearTest(
|
||||
{
|
||||
targetOrigin: subdomainOrigin,
|
||||
getUrlParams: {
|
||||
subdomain: true,
|
||||
clear: "cache",
|
||||
},
|
||||
mode: "iframe",
|
||||
shouldBeCached: true,
|
||||
},
|
||||
"BfCached document should be cached after receiving clear-cache header from a subdomain."
|
||||
);
|
||||
|
||||
runBfCacheClearTest(
|
||||
{
|
||||
targetOrigin: crossSiteOrigin,
|
||||
getUrlParams: {
|
||||
secondOrigin: true,
|
||||
clear: "cache",
|
||||
},
|
||||
mode: "iframe",
|
||||
shouldBeCached: true,
|
||||
},
|
||||
"BfCached document should be cached after receiving clear-cache header from another site."
|
||||
);
|
||||
|
||||
runBfCacheClearTest(
|
||||
{
|
||||
getUrlParams: {
|
||||
clear: "cache",
|
||||
},
|
||||
mode: "window",
|
||||
shouldBeCached: false,
|
||||
},
|
||||
"BfCached document shouldn't be cached after receiving clear-cache header from another window."
|
||||
);
|
||||
|
||||
</script>
|
|
@ -3,15 +3,6 @@
|
|||
|
||||
"use strict"
|
||||
|
||||
const sameOrigin =
|
||||
'https://{{host}}:{{ports[https][0]}}';
|
||||
const subdomainOrigin =
|
||||
'https://{{hosts[][www2]}}:{{ports[https][0]}}';
|
||||
const crossSiteOrigin =
|
||||
'https://{{hosts[alt][]}}:{{ports[https][0]}}';
|
||||
const subomdainCrossSiteOrigin =
|
||||
'https://{{hosts[alt][www2]}}:{{ports[https][0]}}';
|
||||
|
||||
/**
|
||||
* Constructs a url for an intermediate "bounce" hop which represents a tracker.
|
||||
* @param {string} cacheHelper - Unique uuid for this test
|
||||
|
@ -139,49 +130,3 @@ function testCacheClear(test, params, assert) {
|
|||
openTestPageHelper(test, null, testUrls, 0, assert, resolve)
|
||||
});
|
||||
}
|
||||
|
||||
// The tests are built on top of the back-forward-cache test harness.
|
||||
// Here is the steps for the tests:
|
||||
// 1. Open a new window and navigate to a test URL.
|
||||
// 2. Navigate the window to a second page.
|
||||
// 3. Trigger the clear-site-data header either by window.open() or loading an
|
||||
// iframe from the second page.
|
||||
// 4. Navigate back to the first page.
|
||||
// 5. Assert that the first page is or is not cached.
|
||||
|
||||
function runBfCacheClearTest(params, description) {
|
||||
runBfcacheTest(
|
||||
{
|
||||
targetOrigin: sameOrigin,
|
||||
scripts: ["/clear-site-data/support/clear-cache-helper.sub.js"],
|
||||
funcBeforeBackNavigation: async (getUrlParams, mode) => {
|
||||
|
||||
const cacheHelper = self.crypto.randomUUID();
|
||||
const testUrl = getUrl(cacheHelper, getUrlParams);
|
||||
|
||||
let clearingPromise;
|
||||
if (mode === "window") {
|
||||
clearingPromise = new Promise(resolve => {
|
||||
window.addEventListener("message", resolve, {once: true});
|
||||
window.open(testUrl);
|
||||
});
|
||||
} else if (mode === "iframe") {
|
||||
clearingPromise = new Promise(resolve => {
|
||||
const iframe = document.createElement("iframe");
|
||||
iframe.src = testUrl;
|
||||
document.body.appendChild(iframe);
|
||||
iframe.onload = resolve;
|
||||
});
|
||||
} else {
|
||||
throw new Error("Unsupported mode");
|
||||
}
|
||||
|
||||
await clearingPromise;
|
||||
},
|
||||
argsBeforeBackNavigation: [params.getUrlParams, params.mode],
|
||||
...params,
|
||||
},
|
||||
description
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -27,7 +27,7 @@ pressure_test(async (t) => {
|
|||
await new Promise(resolve => {t.step_timeout(resolve, 3000)});
|
||||
assert_equals(syncObserver.changes().length, 1);
|
||||
|
||||
await update_virtual_pressure_source('cpu', 'nominal'), 0.2;
|
||||
await update_virtual_pressure_source('cpu', 'nominal', 0.2);
|
||||
await syncObserver.waitForUpdate();
|
||||
assert_equals(syncObserver.changes()[1][0].state, 'nominal');
|
||||
|
||||
|
|
|
@ -37,5 +37,11 @@ test_computed_value("corner-shape", "superellipse(-1) superellipse(3) square", "
|
|||
test_computed_value("corner-shape", "superellipse(-1) superellipse(3) superellipse(0)", "scoop superellipse(3) bevel");
|
||||
test_computed_value("corner-shape", "bevel superellipse(1) squircle round", "bevel round squircle");
|
||||
test_computed_value("corner-shape", "superellipse(-1) superellipse(3) superellipse(0) superellipse(infinity)", "scoop superellipse(3) bevel square");
|
||||
test_computed_value("corner-left-shape", "round scoop");
|
||||
test_computed_value("corner-top-shape", "round scoop");
|
||||
test_computed_value("corner-top-shape", "superellipse(4)");
|
||||
test_computed_value("corner-right-shape", "superellipse(-1.5) superellipse(3)");
|
||||
test_computed_value("corner-right-shape", "superellipse(-1) superellipse(2)", "scoop squircle");
|
||||
test_computed_value("corner-bottom-shape", "scoop scoop", "scoop");
|
||||
|
||||
</script>
|
||||
|
|
|
@ -24,4 +24,16 @@ test_invalid_value("corner-shape", "superellipse(1 abc)");
|
|||
test_invalid_value("corner-shape", "superellipse(1) / bevel");
|
||||
test_invalid_value("corner-shape", "superellipse(1) / superellipse(3)");
|
||||
test_invalid_value("corner-shape", "superellipse(1), superellipse(3)");
|
||||
|
||||
for (const edge of ["left", "right", "top", "bottom"]) {
|
||||
const prop = `corner-${edge}-shape`;
|
||||
test_invalid_value(prop, "auto");
|
||||
test_invalid_value(prop, "none");
|
||||
test_invalid_value(prop, "superellipse(1 abc)");
|
||||
test_invalid_value(prop, "superellipse()");
|
||||
test_invalid_value(prop, "auto round");
|
||||
test_invalid_value(prop, "superellipse(--.3) squircle");
|
||||
test_invalid_value(prop, "superellipse(--.3) squircle bc");
|
||||
}
|
||||
|
||||
</script>
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/css/support/parsing-testcommon.js"></script>
|
||||
<script src="/css/support/shorthand-testcommon.js"></script>
|
||||
|
||||
<script>
|
||||
function test_values_for_prop(prop) {
|
||||
|
@ -29,6 +30,13 @@
|
|||
test_valid_value(prop, "superellipse(calc(0.5 * 4))", "superellipse(calc(2))");
|
||||
}
|
||||
|
||||
function test_corner_shape_shorthand(shorthand, longhand1, longhand2) {
|
||||
test_shorthand_value(shorthand, "scoop", {[longhand1]: "scoop", [longhand2]: "scoop"});
|
||||
test_shorthand_value(shorthand, "bevel notch", {[longhand1]: "bevel", [longhand2]: "notch"});
|
||||
test_shorthand_value(shorthand, "superellipse(-2) squircle", {[longhand1]: "superellipse(-2)", [longhand2]: "squircle"});
|
||||
test_shorthand_value(shorthand, "superellipse(3)", {[longhand1]: "superellipse(3)", [longhand2]: "superellipse(3)"});
|
||||
}
|
||||
|
||||
for (const v of ["top", "bottom"]) {
|
||||
for (const h of ["left", "right"]) {
|
||||
test_values_for_prop(`corner-${v}-${h}-shape`);
|
||||
|
@ -49,4 +57,8 @@
|
|||
test_valid_value("corner-shape", "bevel superellipse(2) squircle round", "bevel superellipse(2) squircle round");
|
||||
test_valid_value("corner-shape", "superellipse(0.5) superellipse(3) superellipse(1) superellipse(infinity)");
|
||||
|
||||
test_corner_shape_shorthand('corner-top-shape', 'corner-top-left-shape', 'corner-top-right-shape');
|
||||
test_corner_shape_shorthand('corner-right-shape', 'corner-top-right-shape', 'corner-bottom-right-shape');
|
||||
test_corner_shape_shorthand('corner-bottom-shape', 'corner-bottom-left-shape', 'corner-bottom-right-shape');
|
||||
test_corner_shape_shorthand('corner-left-shape', 'corner-top-left-shape', 'corner-bottom-left-shape');
|
||||
</script>
|
||||
|
|
48
tests/wpt/tests/css/css-gaps/grid/subgrid/subgrid-gap-decorations-001.html
vendored
Normal file
48
tests/wpt/tests/css/css-gaps/grid/subgrid/subgrid-gap-decorations-001.html
vendored
Normal file
|
@ -0,0 +1,48 @@
|
|||
<!DOCTYPE html>
|
||||
<title>
|
||||
CSS Gap Decorations: Gap decorations are painted with the grid subgridded on both axes.
|
||||
</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-gaps-1/">
|
||||
<link rel="match" href="../../../reference/ref-filled-green-100px-square.xht">
|
||||
<link rel="author" title="Sam Davis Omekara Jr." href="mailto:samomekarajr@microsoft.com">
|
||||
<style>
|
||||
.grid-container {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, 1fr);
|
||||
grid-template-rows: repeat(3, 1fr);
|
||||
gap: 10px;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
}
|
||||
.subgrid {
|
||||
display: grid;
|
||||
grid-template-columns: subgrid;
|
||||
grid-template-rows: subgrid;
|
||||
|
||||
background: red;
|
||||
grid-column: 1 / -1;
|
||||
grid-row: 1 / -1;
|
||||
column-rule: green solid 10px;
|
||||
row-rule: green solid 10px;
|
||||
}
|
||||
.subgrid-item {
|
||||
background: green;
|
||||
}
|
||||
</style>
|
||||
<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
|
||||
<div class="grid-container">
|
||||
<div class="subgrid">
|
||||
<div class="subgrid-item"></div>
|
||||
<div class="subgrid-item"></div>
|
||||
<div class="subgrid-item"></div>
|
||||
<div class="subgrid-item"></div>
|
||||
<div class="subgrid-item"></div>
|
||||
<div class="subgrid-item"></div>
|
||||
<div class="subgrid-item"></div>
|
||||
<div class="subgrid-item"></div>
|
||||
<div class="subgrid-item"></div>
|
||||
<div class="subgrid-item"></div>
|
||||
<div class="subgrid-item"></div>
|
||||
<div class="subgrid-item"></div>
|
||||
</div>
|
||||
</div>
|
47
tests/wpt/tests/css/css-gaps/grid/subgrid/subgrid-gap-decorations-002.html
vendored
Normal file
47
tests/wpt/tests/css/css-gaps/grid/subgrid/subgrid-gap-decorations-002.html
vendored
Normal file
|
@ -0,0 +1,47 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
<title>
|
||||
CSS Gap Decorations: Gap decorations are painted with the grid subgridded on column axis.
|
||||
</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-gaps-1/">
|
||||
<link rel="match" href="../../../reference/ref-filled-green-100px-square.xht">
|
||||
<link rel="author" title="Sam Davis Omekara Jr." href="mailto:samomekarajr@microsoft.com">
|
||||
<style>
|
||||
.grid-container {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, 1fr);
|
||||
grid-template-rows: repeat(3, 1fr);
|
||||
gap: 10px;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
}
|
||||
.subgrid {
|
||||
display: grid;
|
||||
grid-template-columns: subgrid;
|
||||
grid-template-rows: repeat(2, 1fr);
|
||||
|
||||
grid-column: 1 / -1;
|
||||
grid-row: 1 / -1;
|
||||
column-rule: green solid 10px;
|
||||
row-gap: 20px;
|
||||
row-rule: green solid 20px;
|
||||
|
||||
background: red;
|
||||
}
|
||||
.subgrid-item {
|
||||
background: green;
|
||||
}
|
||||
</style>
|
||||
<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
|
||||
<div class="grid-container">
|
||||
<div class="subgrid">
|
||||
<div class="subgrid-item"></div>
|
||||
<div class="subgrid-item"></div>
|
||||
<div class="subgrid-item"></div>
|
||||
<div class="subgrid-item"></div>
|
||||
<div class="subgrid-item"></div>
|
||||
<div class="subgrid-item"></div>
|
||||
<div class="subgrid-item"></div>
|
||||
<div class="subgrid-item"></div>
|
||||
</div>
|
||||
</div>
|
47
tests/wpt/tests/css/css-gaps/grid/subgrid/subgrid-gap-decorations-003.html
vendored
Normal file
47
tests/wpt/tests/css/css-gaps/grid/subgrid/subgrid-gap-decorations-003.html
vendored
Normal file
|
@ -0,0 +1,47 @@
|
|||
|
||||
<!DOCTYPE html>
|
||||
<title>
|
||||
CSS Gap Decorations: Gap decorations are painted with the grid subgridded on row axis.
|
||||
</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-gaps-1/">
|
||||
<link rel="match" href="../../../reference/ref-filled-green-100px-square.xht">
|
||||
<link rel="author" title="Sam Davis Omekara Jr." href="mailto:samomekarajr@microsoft.com">
|
||||
<style>
|
||||
.grid-container {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, 1fr);
|
||||
grid-template-rows: repeat(3, 1fr);
|
||||
gap: 10px;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
}
|
||||
.subgrid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
grid-template-rows: subgrid;
|
||||
|
||||
grid-column: 1 / -1;
|
||||
grid-row: 1 / -1;
|
||||
column-gap: 20px;
|
||||
column-rule: green solid 20px;
|
||||
row-rule: green solid 10px;
|
||||
|
||||
background: red;
|
||||
}
|
||||
.subgrid-item {
|
||||
background: green;
|
||||
}
|
||||
</style>
|
||||
<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
|
||||
<div class="grid-container">
|
||||
<div class="subgrid">
|
||||
<div class="subgrid-item"></div>
|
||||
<div class="subgrid-item"></div>
|
||||
<div class="subgrid-item"></div>
|
||||
<div class="subgrid-item"></div>
|
||||
<div class="subgrid-item"></div>
|
||||
<div class="subgrid-item"></div>
|
||||
<div class="subgrid-item"></div>
|
||||
<div class="subgrid-item"></div>
|
||||
</div>
|
||||
</div>
|
46
tests/wpt/tests/css/css-gaps/grid/subgrid/subgrid-gap-decorations-004.html
vendored
Normal file
46
tests/wpt/tests/css/css-gaps/grid/subgrid/subgrid-gap-decorations-004.html
vendored
Normal file
|
@ -0,0 +1,46 @@
|
|||
<!DOCTYPE html>
|
||||
<title>
|
||||
CSS Gap Decorations: *rule-break defaults to spanning-item and avoids painting behind spanners in subgrid.
|
||||
</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-gaps-1/#break">
|
||||
<link rel="match" href="../grid-gap-decorations-006-ref.html">
|
||||
<link rel="author" title="Sam Davis Omekara Jr." href="mailto:samomekarajr@microsoft.com">
|
||||
<style>
|
||||
body {
|
||||
margin: 0;
|
||||
}
|
||||
.grid-container {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, 1fr);
|
||||
grid-template-rows: repeat(4, 1fr);
|
||||
gap: 10px;
|
||||
width: 430px;
|
||||
height: 430px;
|
||||
}
|
||||
.subgrid {
|
||||
display: grid;
|
||||
grid-column: 1 / -1;
|
||||
grid-row: 1 / -1;
|
||||
grid-template-columns: subgrid;
|
||||
grid-template-rows: subgrid;
|
||||
column-rule: blue solid 5px;
|
||||
row-rule: red solid 5px;
|
||||
}
|
||||
.grid-item {
|
||||
background-color: gray;
|
||||
opacity: 0.5;
|
||||
border: 1px solid #000;
|
||||
}
|
||||
</style>
|
||||
<div class="grid-container">
|
||||
<div class="subgrid">
|
||||
<div class="grid-item" style="grid-column: 1 / 3; grid-row: 1 / 2;"></div>
|
||||
<div class="grid-item" style="grid-column: 3 / 4; grid-row: 1 / 3;"></div>
|
||||
<div class="grid-item" style="grid-row: 2 / 4;"></div>
|
||||
<div class="grid-item" style="grid-column: 2 / 4; grid-row: 3 / 4;"></div>
|
||||
<div class="grid-item" style="grid-column: 2 / 3; grid-row: 2 / 3;"></div>
|
||||
<div class="grid-item" style="grid-column: 4 / 5; grid-row: 1 / 4;"></div>
|
||||
<div class="grid-item" style="grid-column: 1 / 4; grid-row: 4 / 5;"></div>
|
||||
<div class="grid-item" style="grid-column: 4 / 5; grid-row: 4 / 5;"></div>
|
||||
</div>
|
||||
</div>
|
52
tests/wpt/tests/css/css-gaps/grid/subgrid/subgrid-gap-decorations-005.html
vendored
Normal file
52
tests/wpt/tests/css/css-gaps/grid/subgrid/subgrid-gap-decorations-005.html
vendored
Normal file
|
@ -0,0 +1,52 @@
|
|||
<!DOCTYPE html>
|
||||
<title>
|
||||
CSS Gap Decorations: setting *rule-break to intersection stops painting decorations at each intersection in subgrid.
|
||||
</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-gaps-1/#break">
|
||||
<link rel="match" href="../grid-gap-decorations-007-ref.html">
|
||||
<link rel="author" title="Sam Davis Omekara Jr." href="mailto:samomekarajr@microsoft.com">
|
||||
<style>
|
||||
body {
|
||||
margin: 0;
|
||||
}
|
||||
.grid-container {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, 1fr);
|
||||
grid-template-rows: repeat(4, 1fr);
|
||||
gap: 10px;
|
||||
width: 430px;
|
||||
height: 430px;
|
||||
}
|
||||
.subgrid {
|
||||
display: grid;
|
||||
grid-column: 1 / -1;
|
||||
grid-row: 1 / -1;
|
||||
grid-template-columns: subgrid;
|
||||
grid-template-rows: subgrid;
|
||||
column-rule: blue solid 5px;
|
||||
row-rule: red solid 5px;
|
||||
|
||||
column-rule-break: intersection;
|
||||
column-rule-outset: 0px;
|
||||
|
||||
row-rule-break: intersection;
|
||||
row-rule-outset: 0px;
|
||||
}
|
||||
.grid-item {
|
||||
background-color: gray;
|
||||
opacity: 0.5;
|
||||
border: 1px solid #000;
|
||||
}
|
||||
</style>
|
||||
<div class="grid-container">
|
||||
<div class="subgrid">
|
||||
<div class="grid-item" style="grid-column: 1 / 3; grid-row: 1 / 2;"></div>
|
||||
<div class="grid-item" style="grid-column: 3 / 4; grid-row: 1 / 3;"></div>
|
||||
<div class="grid-item" style="grid-row: 2 / 4;"></div>
|
||||
<div class="grid-item" style="grid-column: 2 / 4; grid-row: 3 / 4;"></div>
|
||||
<div class="grid-item" style="grid-column: 2 / 3; grid-row: 2 / 3;"></div>
|
||||
<div class="grid-item" style="grid-column: 4 / 5; grid-row: 1 / 4;"></div>
|
||||
<div class="grid-item" style="grid-column: 1 / 4; grid-row: 4 / 5;"></div>
|
||||
<div class="grid-item" style="grid-column: 4 / 5; grid-row: 4 / 5;"></div>
|
||||
</div>
|
||||
</div>
|
49
tests/wpt/tests/css/css-gaps/grid/subgrid/subgrid-gap-decorations-006.html
vendored
Normal file
49
tests/wpt/tests/css/css-gaps/grid/subgrid/subgrid-gap-decorations-006.html
vendored
Normal file
|
@ -0,0 +1,49 @@
|
|||
<!DOCTYPE html>
|
||||
<title>
|
||||
CSS Gap Decorations: setting *rule-break to none paints decorations from first grid line to last grid line in subgrid.
|
||||
</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-gaps-1/#break">
|
||||
<link rel="match" href="../grid-gap-decorations-008-ref.html">
|
||||
<link rel="author" title="Sam Davis Omekara Jr." href="mailto:samomekarajr@microsoft.com">
|
||||
<style>
|
||||
body {
|
||||
margin: 0;
|
||||
}
|
||||
.grid-container {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, 1fr);
|
||||
grid-template-rows: repeat(4, 1fr);
|
||||
gap: 10px;
|
||||
width: 430px;
|
||||
height: 430px;
|
||||
}
|
||||
.subgrid {
|
||||
display: grid;
|
||||
grid-column: 1 / -1;
|
||||
grid-row: 1 / -1;
|
||||
grid-template-columns: subgrid;
|
||||
grid-template-rows: subgrid;
|
||||
column-rule: blue solid 5px;
|
||||
row-rule: red solid 5px;
|
||||
|
||||
column-rule-break: none;
|
||||
row-rule-break: none;
|
||||
}
|
||||
.grid-item {
|
||||
background-color: gray;
|
||||
opacity: 0.5;
|
||||
border: 1px solid #000;
|
||||
}
|
||||
</style>
|
||||
<div class="grid-container">
|
||||
<div class="subgrid">
|
||||
<div class="grid-item" style="grid-column: 1 / 3; grid-row: 1 / 2;"></div>
|
||||
<div class="grid-item" style="grid-column: 3 / 4; grid-row: 1 / 3;"></div>
|
||||
<div class="grid-item" style="grid-row: 2 / 4;"></div>
|
||||
<div class="grid-item" style="grid-column: 2 / 4; grid-row: 3 / 4;"></div>
|
||||
<div class="grid-item" style="grid-column: 2 / 3; grid-row: 2 / 3;"></div>
|
||||
<div class="grid-item" style="grid-column: 4 / 5; grid-row: 1 / 4;"></div>
|
||||
<div class="grid-item" style="grid-column: 1 / 4; grid-row: 4 / 5;"></div>
|
||||
<div class="grid-item" style="grid-column: 4 / 5; grid-row: 4 / 5;"></div>
|
||||
</div>
|
||||
</div>
|
48
tests/wpt/tests/css/css-gaps/grid/subgrid/subgrid-gap-decorations-007.html
vendored
Normal file
48
tests/wpt/tests/css/css-gaps/grid/subgrid/subgrid-gap-decorations-007.html
vendored
Normal file
|
@ -0,0 +1,48 @@
|
|||
<!DOCTYPE html>
|
||||
<title>
|
||||
CSS Gap Decorations: An outset of 0px aligns the ends of gap decorations with adjacent item in subgrid.
|
||||
</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-gaps-1/">
|
||||
<link rel="match" href="../grid-gap-decorations-010-ref.html">
|
||||
<link rel="author" title="Sam Davis Omekara Jr." href="mailto:samomekarajr@microsoft.com">
|
||||
<style>
|
||||
body {
|
||||
margin: 0;
|
||||
}
|
||||
.grid-container {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 100px);
|
||||
grid-template-rows: repeat(3, 100px);
|
||||
gap: 10px;
|
||||
}
|
||||
.subgrid {
|
||||
display: grid;
|
||||
grid-column: 1 / -1;
|
||||
grid-row: 1 / -1;
|
||||
grid-template-columns: subgrid;
|
||||
grid-template-rows: subgrid;
|
||||
|
||||
column-rule: blue solid 5px;
|
||||
row-rule: red solid 5px;
|
||||
|
||||
column-rule-outset: 0px;
|
||||
column-rule-break: intersection;
|
||||
}
|
||||
.item {
|
||||
background: gray;
|
||||
opacity: 0.5;
|
||||
}
|
||||
</style>
|
||||
<div class="grid-container">
|
||||
<div class="subgrid">
|
||||
<div class="item"></div>
|
||||
<div class="item"></div>
|
||||
<div class="item"></div>
|
||||
<div class="item"></div>
|
||||
<div class="item"></div>
|
||||
<div class="item"></div>
|
||||
<div class="item"></div>
|
||||
<div class="item"></div>
|
||||
<div class="item"></div>
|
||||
</div>
|
||||
</div>
|
47
tests/wpt/tests/css/css-gaps/grid/subgrid/subgrid-gap-decorations-008.html
vendored
Normal file
47
tests/wpt/tests/css/css-gaps/grid/subgrid/subgrid-gap-decorations-008.html
vendored
Normal file
|
@ -0,0 +1,47 @@
|
|||
<!DOCTYPE html>
|
||||
<title>
|
||||
CSS Gap Decorations: An outset of 5px extends decorations slightly beyond the edges of adjacent items in subgrid.
|
||||
</title>
|
||||
<link rel="help" href="https://drafts.csswg.org/css-gaps-1/">
|
||||
<link rel="match" href="../grid-gap-decorations-012-ref.html">
|
||||
<link rel="author" title="Sam Davis Omekara Jr." href="mailto:samomekarajr@microsoft.com">
|
||||
<style>
|
||||
.grid-container {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 100px);
|
||||
grid-template-rows: repeat(3, 100px);
|
||||
gap: 10px;
|
||||
}
|
||||
.subgrid {
|
||||
display: grid;
|
||||
grid-column: 1 / -1;
|
||||
grid-row: 1 / -1;
|
||||
grid-template-columns: subgrid;
|
||||
grid-template-rows: subgrid;
|
||||
|
||||
column-rule: blue solid 5px;
|
||||
row-rule: red solid 5px;
|
||||
|
||||
column-rule-outset: 5px;
|
||||
column-rule-break: intersection;
|
||||
}
|
||||
.item {
|
||||
background: gray;
|
||||
opacity: 0.5;
|
||||
}
|
||||
</style>
|
||||
<body>
|
||||
<div class="grid-container">
|
||||
<div class="subgrid">
|
||||
<div class="item"></div>
|
||||
<div class="item"></div>
|
||||
<div class="item"></div>
|
||||
<div class="item"></div>
|
||||
<div class="item"></div>
|
||||
<div class="item"></div>
|
||||
<div class="item"></div>
|
||||
<div class="item"></div>
|
||||
<div class="item"></div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
|
@ -4,9 +4,16 @@
|
|||
width: 100px;
|
||||
height: 100px;
|
||||
overflow-y: scroll;
|
||||
background: lightgreen;
|
||||
/**
|
||||
* The scroll container background color can affect whether we use light
|
||||
* or dark scrollbars. Use the same color as the test to ensure they match
|
||||
**/
|
||||
background: red;
|
||||
display: inline-block;
|
||||
}
|
||||
.container div {
|
||||
background: lightgreen;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="container">
|
||||
|
|
63
tests/wpt/tests/css/mediaqueries/mq-invalid-media-type-006.html
vendored
Normal file
63
tests/wpt/tests/css/mediaqueries/mq-invalid-media-type-006.html
vendored
Normal file
|
@ -0,0 +1,63 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<link rel="help" href="https://drafts.csswg.org/mediaqueries4/#error-handling">
|
||||
<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
|
||||
<meta name="assert" content="Test if we ignore syntactically invalid media query lists with multiple media queries and missing media types.">
|
||||
<style>
|
||||
div {
|
||||
width: 100px;
|
||||
height: 20px;
|
||||
}
|
||||
|
||||
#valid1,
|
||||
#valid2,
|
||||
#valid3 {
|
||||
background-color: red;
|
||||
}
|
||||
|
||||
#invalid1,
|
||||
#invalid2 {
|
||||
background-color: green;
|
||||
}
|
||||
|
||||
@media screen and (min-width: 480px), screen and (device-width: 768px) {
|
||||
#valid1 {
|
||||
background-color: green;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen {
|
||||
#valid2 {
|
||||
background-color: green;
|
||||
}
|
||||
}
|
||||
|
||||
@media {
|
||||
#valid3 {
|
||||
background-color: green;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (min-width: 480px) screen and (device-width: 768px) {
|
||||
#invalid1 {
|
||||
background-color: red;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (min-width: 480px) and (device-width: 768px) {
|
||||
#invalid2 {
|
||||
background-color: red;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
|
||||
<div id="valid1"></div>
|
||||
<div id="valid2"></div>
|
||||
<div id="valid3"></div>
|
||||
<div id="invalid1"></div>
|
||||
<div id="invalid2"></div>
|
||||
</body>
|
||||
</html>
|
|
@ -70,6 +70,9 @@
|
|||
'a-0123456789',
|
||||
'a-\u6F22\u5B57', // Two CJK Unified Ideographs
|
||||
'a-\uD840\uDC0B', // Surrogate pair U+2000B
|
||||
'a-a\u00D7',
|
||||
'a-a\u3000',
|
||||
'a-a\uDB80\uDC00', // Surrogate pair U+F0000
|
||||
];
|
||||
let invalidCustomElementNames = [
|
||||
undefined,
|
||||
|
@ -85,9 +88,6 @@
|
|||
'a-A',
|
||||
'a-Z',
|
||||
'A-a',
|
||||
'a-a\u00D7',
|
||||
'a-a\u3000',
|
||||
'a-a\uDB80\uDC00', // Surrogate pair U+F0000
|
||||
// name must not be any of the hyphen-containing element names.
|
||||
'annotation-xml',
|
||||
'color-profile',
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<body style="width: 500px">
|
||||
<div id="log"></div>
|
||||
<video title="no width/height attributes"
|
||||
data-expected-width="300" data-expected-height="150"></video>
|
||||
|
|
78
tests/wpt/tests/soft-navigation-heuristics/lcp/tentative/broken-image-icon.html
vendored
Normal file
78
tests/wpt/tests/soft-navigation-heuristics/lcp/tentative/broken-image-icon.html
vendored
Normal file
|
@ -0,0 +1,78 @@
|
|||
<!doctype html>
|
||||
<!--
|
||||
The soft navigation version of the identically named test in
|
||||
/largest-contentful-paint/broken-image-icon.html.
|
||||
Notes:
|
||||
- Awaits trivial soft navigation with same page contents as original test.
|
||||
- Viewport is very small so that the small icon below (16x8) is
|
||||
sufficiently large to trigger a soft navigation.
|
||||
- Original test was awaiting FCP, but we don't support that yet
|
||||
for soft navs; so now we await LCP for the hard navigation, and then
|
||||
LCP and soft nav for the soft navigation, with the promise set up prior
|
||||
to the click.
|
||||
-->
|
||||
<meta name="viewport" content="width=50, height=50, initial-scale=1" />
|
||||
<title>Broken Image Icon Should Not Be LCP after soft navigation</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="/soft-navigation-heuristics/resources/soft-navigation-test-helper.js"></script>
|
||||
<script>
|
||||
function clickHandler() {
|
||||
document.body.innerHTML = `
|
||||
<img src="../non-existent-image.jpg">
|
||||
<img src="/css/css-images/support/colors-16x8.png">
|
||||
`;
|
||||
history.pushState({}, "", "/test");
|
||||
}
|
||||
</script>
|
||||
<body>
|
||||
<div id="click-target" onclick="clickHandler()">Click!</div>
|
||||
</body>
|
||||
<script>
|
||||
promise_test(async (t) => {
|
||||
assert_implements(window.LargestContentfulPaint, "LargestContentfulPaint is not implemented");
|
||||
const helper = new SoftNavigationTestHelper(t);
|
||||
const lcpEntries = await helper.getBufferedPerformanceEntriesWithTimeout(
|
||||
/*type=*/ "largest-contentful-paint",
|
||||
/*includeSoftNavigationObservations=*/ false,
|
||||
/*minNumEntries=*/ 1,
|
||||
);
|
||||
assert_equals(lcpEntries.length, 1);
|
||||
assert_equals(lcpEntries[0].id, "click-target", "The first entry should be the button");
|
||||
|
||||
const promise = Promise.all([
|
||||
SoftNavigationTestHelper.getPerformanceEntries(
|
||||
/*type=*/ "largest-contentful-paint",
|
||||
/*includeSoftNavigationObservations=*/ true,
|
||||
/*minNumEntries=*/ 1,
|
||||
),
|
||||
SoftNavigationTestHelper.getPerformanceEntries(
|
||||
/*type=*/ "soft-navigation",
|
||||
/*includeSoftNavigationObservations=*/ true,
|
||||
/*minNumEntries=*/ 1,
|
||||
),
|
||||
]);
|
||||
|
||||
if (test_driver) {
|
||||
test_driver.click(document.getElementById("click-target"));
|
||||
}
|
||||
|
||||
const [softLcpEntries, softNavigationEntries] = await promise;
|
||||
assert_equals(softNavigationEntries.length, 1, "One soft navigation entry.");
|
||||
assert_true(
|
||||
softNavigationEntries[0].name.endsWith("test"),
|
||||
"Soft navigation should be to test page.",
|
||||
);
|
||||
|
||||
// There should be only 1 LCP entry and it should be the colors-16x8.png though
|
||||
// being smaller than the broken image icon. The broken image icon should not
|
||||
// emit an LCP entry.
|
||||
assert_equals(softLcpEntries.length, 1, "There should be one and only one LCP entry.");
|
||||
assert_true(
|
||||
softLcpEntries[0].url.includes("colors-16x8.png"),
|
||||
"The LCP entry should be the colors-16x8.png",
|
||||
);
|
||||
}, "The broken image icon should not emit an LCP entry after soft navigation.");
|
||||
</script>
|
63
tests/wpt/tests/soft-navigation-heuristics/lcp/tentative/contracted-image.html
vendored
Normal file
63
tests/wpt/tests/soft-navigation-heuristics/lcp/tentative/contracted-image.html
vendored
Normal file
|
@ -0,0 +1,63 @@
|
|||
<!doctype html>
|
||||
<!--
|
||||
The soft navigation version of the identically named
|
||||
test in /largest-contentful-paint/contracted-image.html.
|
||||
Notes:
|
||||
- Awaits trivial soft navigation with same page contents as original test.
|
||||
- Uses promise_test and slightly revised HTML tags, to make it easy to
|
||||
observe the initial LCP before the soft navigation (the click target)
|
||||
and distinguish it from the interesting LCP after the soft navigation.
|
||||
-->
|
||||
<meta charset="utf-8" />
|
||||
<title>
|
||||
Largest Contentful Paint: contracted image bounded by display size after soft navigation.
|
||||
</title>
|
||||
<style type="text/css">
|
||||
#image_id {
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
}
|
||||
</style>
|
||||
<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="/largest-contentful-paint/resources/largest-contentful-paint-helpers.js"></script>
|
||||
<script src="/soft-navigation-heuristics/resources/soft-navigation-test-helper.js"></script>
|
||||
<script>
|
||||
function clickHandler() {
|
||||
document.body.innerHTML = `<img src="/images/black-rectangle.png" id="image_id" />`;
|
||||
history.pushState({}, "", "/test");
|
||||
}
|
||||
</script>
|
||||
<body>
|
||||
<div id="click-target" onclick="clickHandler()">Click!</div>
|
||||
</body>
|
||||
<script>
|
||||
promise_test(async (t) => {
|
||||
assert_implements(window.LargestContentfulPaint, "LargestContentfulPaint is not implemented");
|
||||
if (test_driver) {
|
||||
test_driver.click(document.getElementById("click-target"));
|
||||
}
|
||||
const beforeLoad = performance.now();
|
||||
const helper = new SoftNavigationTestHelper(t);
|
||||
await helper.getBufferedPerformanceEntriesWithTimeout(
|
||||
/*type=*/ "soft-navigation",
|
||||
/*includeSoftNavigationObservations=*/ false,
|
||||
/*minNumEntries=*/ 1,
|
||||
);
|
||||
const entries = await helper.getBufferedPerformanceEntriesWithTimeout(
|
||||
/*type=*/ "largest-contentful-paint",
|
||||
/*includeSoftNavigationObservations=*/ true,
|
||||
/*minNumEntries=*/ 2,
|
||||
);
|
||||
assert_equals(entries.length, 2);
|
||||
assert_equals(entries[0].id, "click-target", "The first entry should be the button");
|
||||
|
||||
const entry = entries[1];
|
||||
const url = window.location.origin + "/images/black-rectangle.png";
|
||||
// black-rectangle.png is 100 x 50. It occupies 50 x 50 so size will be bounded by the displayed size.
|
||||
const size = 50 * 50;
|
||||
checkImage(entry, url, "image_id", size, beforeLoad);
|
||||
}, "Largest Contentful Paint: |size| attribute is bounded by display size after soft navigation.");
|
||||
</script>
|
|
@ -20,17 +20,14 @@ def do_delayed_imports():
|
|||
def __init__(self, session):
|
||||
self.session = session
|
||||
|
||||
@webdriver.client.command
|
||||
def get_prefs(self, *prefs):
|
||||
body = {"prefs": list(prefs)}
|
||||
return self.session.send_session_command("POST", "servo/prefs/get", body)
|
||||
|
||||
@webdriver.client.command
|
||||
def set_prefs(self, prefs):
|
||||
body = {"prefs": prefs}
|
||||
return self.session.send_session_command("POST", "servo/prefs/set", body)
|
||||
|
||||
@webdriver.client.command
|
||||
def reset_prefs(self, *prefs):
|
||||
body = {"prefs": list(prefs)}
|
||||
return self.session.send_session_command("POST", "servo/prefs/reset", body)
|
||||
|
|
54
tests/wpt/tests/webnn/validation_tests/opSupportLimits.https.any.js
vendored
Normal file
54
tests/wpt/tests/webnn/validation_tests/opSupportLimits.https.any.js
vendored
Normal file
|
@ -0,0 +1,54 @@
|
|||
// META: title=validation context.opSupportLimits() interface
|
||||
// META: global=window
|
||||
// META: variant=?cpu
|
||||
// META: variant=?gpu
|
||||
// META: variant=?npu
|
||||
// META: script=../resources/utils_validation.js
|
||||
|
||||
'use strict';
|
||||
|
||||
|
||||
const tests = [
|
||||
{
|
||||
operator: 'logicalAnd',
|
||||
limits: {
|
||||
a: {dataTypes: ['uint8']},
|
||||
b: {dataTypes: ['uint8']},
|
||||
output: {dataTypes: ['uint8']},
|
||||
}
|
||||
},
|
||||
{
|
||||
operator: 'logicalOr',
|
||||
limits: {
|
||||
a: {dataTypes: ['uint8']},
|
||||
b: {dataTypes: ['uint8']},
|
||||
output: {dataTypes: ['uint8']},
|
||||
}
|
||||
},
|
||||
{
|
||||
operator: 'logicalXor',
|
||||
limits: {
|
||||
a: {dataTypes: ['uint8']},
|
||||
b: {dataTypes: ['uint8']},
|
||||
output: {dataTypes: ['uint8']},
|
||||
}
|
||||
},
|
||||
{
|
||||
operator: 'logicalNot',
|
||||
limits: {
|
||||
a: {dataTypes: ['uint8']},
|
||||
output: {dataTypes: ['uint8']},
|
||||
}
|
||||
}
|
||||
];
|
||||
|
||||
tests.forEach(test => promise_test(async t => {
|
||||
const limits = context.opSupportLimits()[test.operator];
|
||||
for (let [name, expected] of Object.entries(test.limits)) {
|
||||
for (let actualDataType of limits[name].dataTypes) {
|
||||
assert_in_array(
|
||||
actualDataType, expected.dataTypes,
|
||||
`${test.operator}.${name}.dataTypes`);
|
||||
}
|
||||
}
|
||||
}, `check opSupportLimits data types of ${test.operator}`));
|
Loading…
Add table
Add a link
Reference in a new issue