summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/css/css-lists/parsing
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/css/css-lists/parsing')
-rw-r--r--testing/web-platform/tests/css/css-lists/parsing/content-invalid.html41
-rw-r--r--testing/web-platform/tests/css/css-lists/parsing/counter-increment-invalid.html29
-rw-r--r--testing/web-platform/tests/css/css-lists/parsing/counter-increment-valid.html20
-rw-r--r--testing/web-platform/tests/css/css-lists/parsing/counter-reset-invalid.html31
-rw-r--r--testing/web-platform/tests/css/css-lists/parsing/counter-reset-valid.html26
-rw-r--r--testing/web-platform/tests/css/css-lists/parsing/counter-set-computed.html23
-rw-r--r--testing/web-platform/tests/css/css-lists/parsing/counter-set-invalid.html29
-rw-r--r--testing/web-platform/tests/css/css-lists/parsing/counter-set-valid.html20
-rw-r--r--testing/web-platform/tests/css/css-lists/parsing/list-style-computed.sub.html24
-rw-r--r--testing/web-platform/tests/css/css-lists/parsing/list-style-image-computed.sub.html32
-rw-r--r--testing/web-platform/tests/css/css-lists/parsing/list-style-image-invalid.html18
-rw-r--r--testing/web-platform/tests/css/css-lists/parsing/list-style-image-valid.html23
-rw-r--r--testing/web-platform/tests/css/css-lists/parsing/list-style-invalid.html18
-rw-r--r--testing/web-platform/tests/css/css-lists/parsing/list-style-position-computed.html19
-rw-r--r--testing/web-platform/tests/css/css-lists/parsing/list-style-position-invalid.html18
-rw-r--r--testing/web-platform/tests/css/css-lists/parsing/list-style-position-valid.html18
-rw-r--r--testing/web-platform/tests/css/css-lists/parsing/list-style-shorthand.sub.html21
-rw-r--r--testing/web-platform/tests/css/css-lists/parsing/list-style-type-computed.html52
-rw-r--r--testing/web-platform/tests/css/css-lists/parsing/list-style-type-invalid.html28
-rw-r--r--testing/web-platform/tests/css/css-lists/parsing/list-style-type-valid.html52
-rw-r--r--testing/web-platform/tests/css/css-lists/parsing/list-style-valid.html35
21 files changed, 577 insertions, 0 deletions
diff --git a/testing/web-platform/tests/css/css-lists/parsing/content-invalid.html b/testing/web-platform/tests/css/css-lists/parsing/content-invalid.html
new file mode 100644
index 0000000000..54fe99c0f0
--- /dev/null
+++ b/testing/web-platform/tests/css/css-lists/parsing/content-invalid.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Lists: parsing counter()/counters() values for the 'content' property</title>
+<link rel="help" href="https://drafts.csswg.org/css-lists-3/#counter-functions">
+<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('content', 'counter(foo, none)');
+test_invalid_value('content', 'counters(foo, "", none)');
+test_invalid_value('content', 'counter(foo, unset)');
+test_invalid_value('content', 'counters(foo, "", unset)');
+test_invalid_value('content', 'counter(foo, initial)');
+test_invalid_value('content', 'counters(foo, "", initial)');
+test_invalid_value('content', 'counter(foo, inherit)');
+test_invalid_value('content', 'counters(foo, "", inherit)');
+
+test_invalid_value('content', '"z" counter(foo, none)');
+test_invalid_value('content', '"z" counters(foo, "", none)');
+test_invalid_value('content', '"z" counter(foo, unset)');
+test_invalid_value('content', '"z" counters(foo, "", unset)');
+test_invalid_value('content', '"z" counter(foo, initial)');
+test_invalid_value('content', '"z" counters(foo, "", initial)');
+test_invalid_value('content', '"z" counter(foo, inherit)');
+test_invalid_value('content', '"z" counters(foo, "", inherit)');
+
+test_invalid_value('content', 'counter(foo, none) "z"');
+test_invalid_value('content', 'counters(foo, "", none) "z"');
+test_invalid_value('content', 'counter(foo, unset) "z"');
+test_invalid_value('content', 'counters(foo, "", unset) "z"');
+test_invalid_value('content', 'counter(foo, initial) "z"');
+test_invalid_value('content', 'counters(foo, "", initial) "z"');
+test_invalid_value('content', 'counter(foo, inherit) "z"');
+test_invalid_value('content', 'counters(foo, "", inherit) "z"');
+</script>
+</body>
+</html>
diff --git a/testing/web-platform/tests/css/css-lists/parsing/counter-increment-invalid.html b/testing/web-platform/tests/css/css-lists/parsing/counter-increment-invalid.html
new file mode 100644
index 0000000000..b893d537ce
--- /dev/null
+++ b/testing/web-platform/tests/css/css-lists/parsing/counter-increment-invalid.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Lists: parsing counter-increment with invalid values</title>
+<link rel="help" href="https://drafts.csswg.org/css-lists-3/#propdef-counter-increment">
+<meta name="assert" content="counter-increment supports only the grammar '[ <counter-name> <integer>? ]+ | none'.">
+<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('counter-increment', 'none chapter');
+test_invalid_value('counter-increment', 'reversed(none)');
+test_invalid_value('counter-increment', 'reversed(chapter)');
+test_invalid_value('counter-increment', '3');
+test_invalid_value('counter-increment', '99 imagenum');
+test_invalid_value('counter-increment', 'section -1, imagenum 99');
+test_invalid_value('counter-increment', 'section 3.14');
+test_invalid_value('counter-increment', 'inherit 1');
+test_invalid_value('counter-increment', 'initial 1');
+test_invalid_value('counter-increment', 'unset 1');
+test_invalid_value('counter-increment', 'default 1');
+test_invalid_value('counter-increment', 'revert 1');
+test_invalid_value('counter-increment', 'revert-layer 1');
+</script>
+</body>
+</html>
diff --git a/testing/web-platform/tests/css/css-lists/parsing/counter-increment-valid.html b/testing/web-platform/tests/css/css-lists/parsing/counter-increment-valid.html
new file mode 100644
index 0000000000..277269000a
--- /dev/null
+++ b/testing/web-platform/tests/css/css-lists/parsing/counter-increment-valid.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Lists: parsing counter-increment with valid values</title>
+<link rel="help" href="https://drafts.csswg.org/css-lists-3/#propdef-counter-increment">
+<meta name="assert" content="counter-increment supports the full grammar '[ <counter-name> <integer>? ]+ | none'.">
+<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('counter-increment', 'none');
+test_valid_value('counter-increment', 'chapter', 'chapter 1');
+test_valid_value('counter-increment', 'section -1');
+test_valid_value('counter-increment', 'first -1 second third 99', 'first -1 second 1 third 99');
+</script>
+</body>
+</html>
diff --git a/testing/web-platform/tests/css/css-lists/parsing/counter-reset-invalid.html b/testing/web-platform/tests/css/css-lists/parsing/counter-reset-invalid.html
new file mode 100644
index 0000000000..18e406bd17
--- /dev/null
+++ b/testing/web-platform/tests/css/css-lists/parsing/counter-reset-invalid.html
@@ -0,0 +1,31 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Lists: parsing counter-reset with invalid values</title>
+<link rel="help" href="https://drafts.csswg.org/css-lists-3/#propdef-counter-reset">
+<meta name="assert" content="counter-reset supports only the grammar '[ <counter-name> <integer>? | <reversed-counter-name> <integer>? ]+ | none'.">
+<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('counter-reset', 'none chapter');
+test_invalid_value('counter-reset', 'reversed(none)');
+test_invalid_value('counter-reset', 'reversed(chapter) none');
+test_invalid_value('counter-reset', '3');
+test_invalid_value('counter-reset', 'reversed(3)');
+test_invalid_value('counter-reset', '99 imagenum');
+test_invalid_value('counter-reset', '99 reversed(imagenum)');
+test_invalid_value('counter-reset', 'section -1, imagenum 99');
+test_invalid_value('counter-reset', 'section 3.14');
+test_invalid_value('counter-reset', 'inherit 0');
+test_invalid_value('counter-reset', 'initial 0');
+test_invalid_value('counter-reset', 'unset 0');
+test_invalid_value('counter-reset', 'default 0');
+test_invalid_value('counter-reset', 'revert 0');
+test_invalid_value('counter-reset', 'revert-layer 0');
+</script>
+</body>
+</html>
diff --git a/testing/web-platform/tests/css/css-lists/parsing/counter-reset-valid.html b/testing/web-platform/tests/css/css-lists/parsing/counter-reset-valid.html
new file mode 100644
index 0000000000..2e6b37d0fc
--- /dev/null
+++ b/testing/web-platform/tests/css/css-lists/parsing/counter-reset-valid.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Lists: parsing counter-reset with valid values</title>
+<link rel="help" href="https://drafts.csswg.org/css-lists-3/#propdef-counter-reset">
+<meta name="assert" content="counter-reset supports the full grammar '[ <counter-name> <integer>? | <reversed-counter-name> <integer>? ]+ | none'.">
+<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('counter-reset', 'none');
+test_valid_value('counter-reset', 'chapter', 'chapter 0');
+test_valid_value('counter-reset', 'chapter chapter 9', 'chapter 0 chapter 9');
+test_valid_value('counter-reset', 'reversed(chapter)');
+test_valid_value('counter-reset', 'chapter reversed(chapter)', 'chapter 0 reversed(chapter)');
+test_valid_value('counter-reset', 'reversed(chapter) 9 chapter', 'reversed(chapter) 9 chapter 0');
+test_valid_value('counter-reset', 'section -1');
+test_valid_value('counter-reset', 'reversed(section) -1');
+test_valid_value('counter-reset', 'first -1 second third 99', 'first -1 second 0 third 99');
+test_valid_value('counter-reset', 'reversed(first) -1 reversed(second) third 99', 'reversed(first) -1 reversed(second) third 99');
+</script>
+</body>
+</html>
diff --git a/testing/web-platform/tests/css/css-lists/parsing/counter-set-computed.html b/testing/web-platform/tests/css/css-lists/parsing/counter-set-computed.html
new file mode 100644
index 0000000000..d0a92896ed
--- /dev/null
+++ b/testing/web-platform/tests/css/css-lists/parsing/counter-set-computed.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Lists: getComputedStyle().counterSet</title>
+<link rel="help" href="https://drafts.csswg.org/css-lists-3/#propdef-counter-set">
+<meta name="assert" content="tests that counter-set grammar is supported.">
+<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('counter-set', 'none');
+test_computed_value('counter-set', 'myCounter', 'myCounter 0');
+test_computed_value('counter-set', 'myCounter 5');
+test_computed_value('counter-set', 'myCounter 7 otherCounter 8');
+test_computed_value('counter-set', 'myCounter otherCounter 8', 'myCounter 0 otherCounter 8');
+test_computed_value('counter-set', 'myCounter 7 otherCounter', 'myCounter 7 otherCounter 0');
+</script>
+</body>
+</html>
diff --git a/testing/web-platform/tests/css/css-lists/parsing/counter-set-invalid.html b/testing/web-platform/tests/css/css-lists/parsing/counter-set-invalid.html
new file mode 100644
index 0000000000..7b2f500fa4
--- /dev/null
+++ b/testing/web-platform/tests/css/css-lists/parsing/counter-set-invalid.html
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Lists: parsing counter-set with invalid values</title>
+<link rel="help" href="https://drafts.csswg.org/css-lists-3/#propdef-counter-set">
+<meta name="assert" content="counter-set supports only the grammar '[ <counter-name> <integer>? ]+ | none'.">
+<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('counter-set', 'none chapter');
+test_invalid_value('counter-set', 'reversed(none)');
+test_invalid_value('counter-set', 'reversed(chapter)');
+test_invalid_value('counter-set', '3');
+test_invalid_value('counter-set', '99 imagenum');
+test_invalid_value('counter-set', 'section -1, imagenum 99');
+test_invalid_value('counter-set', 'section 3.14');
+test_invalid_value('counter-set', 'inherit 2');
+test_invalid_value('counter-set', 'initial 2');
+test_invalid_value('counter-set', 'unset 2');
+test_invalid_value('counter-set', 'default 2');
+test_invalid_value('counter-set', 'revert 2');
+test_invalid_value('counter-set', 'revert-layer 2');
+</script>
+</body>
+</html>
diff --git a/testing/web-platform/tests/css/css-lists/parsing/counter-set-valid.html b/testing/web-platform/tests/css/css-lists/parsing/counter-set-valid.html
new file mode 100644
index 0000000000..3a4a16af92
--- /dev/null
+++ b/testing/web-platform/tests/css/css-lists/parsing/counter-set-valid.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Lists: parsing counter-set with valid values</title>
+<link rel="help" href="https://drafts.csswg.org/css-lists-3/#propdef-counter-set">
+<meta name="assert" content="counter-set supports the full grammar '[ <counter-name> <integer>? ]+ | none'.">
+<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('counter-set', 'none');
+test_valid_value('counter-set', 'chapter', 'chapter 0');
+test_valid_value('counter-set', 'section -1');
+test_valid_value('counter-set', 'first -1 second third 99', 'first -1 second 0 third 99');
+</script>
+</body>
+</html>
diff --git a/testing/web-platform/tests/css/css-lists/parsing/list-style-computed.sub.html b/testing/web-platform/tests/css/css-lists/parsing/list-style-computed.sub.html
new file mode 100644
index 0000000000..f86915831e
--- /dev/null
+++ b/testing/web-platform/tests/css/css-lists/parsing/list-style-computed.sub.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Lists: getComputedStyle().listStyle</title>
+<link rel="help" href="https://drafts.csswg.org/css-lists-3/#propdef-list-style">
+<meta name="assert" content="list-style computed value is 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>
+test_computed_value('list-style', 'outside none none', 'none');
+
+test_computed_value('list-style', 'inside none disc', 'inside');
+test_computed_value('list-style', 'outside url("https://{{host}}/") disc', 'url("https://{{host}}/")');
+test_computed_value('list-style', 'outside none square', 'square');
+
+test_computed_value('list-style', 'inside url("https://{{host}}/") square');
+</script>
+</body>
+</html>
diff --git a/testing/web-platform/tests/css/css-lists/parsing/list-style-image-computed.sub.html b/testing/web-platform/tests/css/css-lists/parsing/list-style-image-computed.sub.html
new file mode 100644
index 0000000000..a39b0f0912
--- /dev/null
+++ b/testing/web-platform/tests/css/css-lists/parsing/list-style-image-computed.sub.html
@@ -0,0 +1,32 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Lists: getComputedStyle().listStyleImage</title>
+<link rel="help" href="https://drafts.csswg.org/css-lists-3/#propdef-list-style-image">
+<meta name="assert" content="list-style-image computed value is as specified.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/computed-testcommon.js"></script>
+<style>
+ #target {
+ font-size: 40px;
+ }
+</style>
+</head>
+<body>
+<div id="target"></div>
+<script>
+test_computed_value('list-style-image', 'none');
+
+test_computed_value('list-style-image', 'url("https://{{host}}/")');
+
+test_computed_value('list-style-image', 'linear-gradient(to left bottom, red , blue )', 'linear-gradient(to left bottom, rgb(255, 0, 0), rgb(0, 0, 255))');
+
+test_computed_value('list-style-image', 'radial-gradient(10px at 20px 30px, rgb(255, 0, 0), rgb(0, 0, 255))');
+test_computed_value('list-style-image', 'radial-gradient(circle calc(-0.5em + 10px) at calc(-1em + 10px) calc(-2em + 10px), rgb(255, 0, 0), rgb(0, 0, 255))', 'radial-gradient(0px at -30px -70px, rgb(255, 0, 0), rgb(0, 0, 255))');
+test_computed_value('list-style-image', 'radial-gradient(ellipse calc(-0.5em + 10px) calc(0.5em + 10px) at 20px 30px, rgb(255, 0, 0), rgb(0, 0, 255))', 'radial-gradient(0px 30px at 20px 30px, rgb(255, 0, 0), rgb(0, 0, 255))');
+test_computed_value('list-style-image', 'radial-gradient(ellipse calc(0.5em + 10px) calc(-0.5em + 10px) at 20px 30px, rgb(255, 0, 0), rgb(0, 0, 255))', 'radial-gradient(30px 0px at 20px 30px, rgb(255, 0, 0), rgb(0, 0, 255))');
+</script>
+</body>
+</html>
diff --git a/testing/web-platform/tests/css/css-lists/parsing/list-style-image-invalid.html b/testing/web-platform/tests/css/css-lists/parsing/list-style-image-invalid.html
new file mode 100644
index 0000000000..ea8bb8ca96
--- /dev/null
+++ b/testing/web-platform/tests/css/css-lists/parsing/list-style-image-invalid.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Lists: parsing list-style-image with invalid values</title>
+<link rel="help" href="https://drafts.csswg.org/css-lists-3/#propdef-list-style-image">
+<meta name="assert" content="list-style-image supports only the grammar '<image> | none'.">
+<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('list-style-image', 'auto');
+test_invalid_value('list-style-image', 'url("https://example.com/") none');
+</script>
+</body>
+</html>
diff --git a/testing/web-platform/tests/css/css-lists/parsing/list-style-image-valid.html b/testing/web-platform/tests/css/css-lists/parsing/list-style-image-valid.html
new file mode 100644
index 0000000000..7b7d43e4bf
--- /dev/null
+++ b/testing/web-platform/tests/css/css-lists/parsing/list-style-image-valid.html
@@ -0,0 +1,23 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Lists: parsing list-style-image with valid values</title>
+<link rel="help" href="https://drafts.csswg.org/css-lists-3/#propdef-list-style-image">
+<meta name="assert" content="list-style-image supports the full grammar '<image> | none'.">
+<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('list-style-image', 'none');
+
+test_valid_value('list-style-image', 'url("https://example.com/")');
+
+test_valid_value('list-style-image', 'linear-gradient(to left bottom, red, blue)');
+
+// TODO: Add cross-fade tests when browsers add support.
+</script>
+</body>
+</html>
diff --git a/testing/web-platform/tests/css/css-lists/parsing/list-style-invalid.html b/testing/web-platform/tests/css/css-lists/parsing/list-style-invalid.html
new file mode 100644
index 0000000000..0dda1630ad
--- /dev/null
+++ b/testing/web-platform/tests/css/css-lists/parsing/list-style-invalid.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Lists: parsing list-style with invalid values</title>
+<link rel="help" href="https://drafts.csswg.org/css-lists-3/#propdef-list-style">
+<meta name="assert" content="list-style supports only the grammar '<'list-style-position'> || <'list-style-image'> || <'list-style-type'>'.">
+<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('list-style', 'inside disc outside');
+test_invalid_value('list-style', 'square circle');
+</script>
+</body>
+</html>
diff --git a/testing/web-platform/tests/css/css-lists/parsing/list-style-position-computed.html b/testing/web-platform/tests/css/css-lists/parsing/list-style-position-computed.html
new file mode 100644
index 0000000000..07d9161fc0
--- /dev/null
+++ b/testing/web-platform/tests/css/css-lists/parsing/list-style-position-computed.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Lists: getComputedStyle().listStylePosition</title>
+<link rel="help" href="https://drafts.csswg.org/css-lists-3/#propdef-list-style-position">
+<meta name="assert" content="list-style-position computed value is 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>
+test_computed_value('list-style-position', 'inside');
+test_computed_value('list-style-position', 'outside');
+</script>
+</body>
+</html>
diff --git a/testing/web-platform/tests/css/css-lists/parsing/list-style-position-invalid.html b/testing/web-platform/tests/css/css-lists/parsing/list-style-position-invalid.html
new file mode 100644
index 0000000000..3cf596135a
--- /dev/null
+++ b/testing/web-platform/tests/css/css-lists/parsing/list-style-position-invalid.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Lists: parsing list-style-position with invalid values</title>
+<link rel="help" href="https://drafts.csswg.org/css-lists-3/#propdef-list-style-position">
+<meta name="assert" content="list-style-position supports only the grammar 'inside | outside'.">
+<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('list-style-position', 'auto');
+test_invalid_value('list-style-position', 'inside outside');
+</script>
+</body>
+</html>
diff --git a/testing/web-platform/tests/css/css-lists/parsing/list-style-position-valid.html b/testing/web-platform/tests/css/css-lists/parsing/list-style-position-valid.html
new file mode 100644
index 0000000000..ff0c8366bb
--- /dev/null
+++ b/testing/web-platform/tests/css/css-lists/parsing/list-style-position-valid.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Lists: parsing list-style-position with valid values</title>
+<link rel="help" href="https://drafts.csswg.org/css-lists-3/#propdef-list-style-position">
+<meta name="assert" content="list-style-position supports the full grammar 'inside | outside'.">
+<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('list-style-position', 'inside');
+test_valid_value('list-style-position', 'outside');
+</script>
+</body>
+</html>
diff --git a/testing/web-platform/tests/css/css-lists/parsing/list-style-shorthand.sub.html b/testing/web-platform/tests/css/css-lists/parsing/list-style-shorthand.sub.html
new file mode 100644
index 0000000000..140df208aa
--- /dev/null
+++ b/testing/web-platform/tests/css/css-lists/parsing/list-style-shorthand.sub.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Lists: list-style sets longhands</title>
+<link rel="help" href="https://drafts.csswg.org/css-lists-3/#propdef-list-style">
+<meta name="assert" content="list-style supports the full grammar '<'list-style-position'> || <'list-style-image'> || <'list-style-type'>'.">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/css/support/shorthand-testcommon.js"></script>
+</head>
+<body>
+<script>
+test_shorthand_value('list-style', 'square url("https://{{host}}/") inside', {
+ 'list-style-position': 'inside',
+ 'list-style-image': 'url("https://{{host}}/")',
+ 'list-style-type': 'square'
+});
+</script>
+</body>
+</html>
diff --git a/testing/web-platform/tests/css/css-lists/parsing/list-style-type-computed.html b/testing/web-platform/tests/css/css-lists/parsing/list-style-type-computed.html
new file mode 100644
index 0000000000..1f25e52001
--- /dev/null
+++ b/testing/web-platform/tests/css/css-lists/parsing/list-style-type-computed.html
@@ -0,0 +1,52 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Lists: getComputedStyle().listStyleType</title>
+<link rel="help" href="https://drafts.csswg.org/css-lists-3/#propdef-list-style-type">
+<meta name="assert" content="list-style-type computed value is 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>
+test_computed_value('list-style-type', 'none');
+
+test_computed_value('list-style-type', 'disc');
+test_computed_value('list-style-type', 'circle');
+test_computed_value('list-style-type', 'square');
+test_computed_value('list-style-type', 'disclosure-open');
+test_computed_value('list-style-type', 'disclosure-closed');
+test_computed_value('list-style-type', 'decimal');
+test_computed_value('list-style-type', 'decimal-leading-zero');
+test_computed_value('list-style-type', 'lower-roman');
+test_computed_value('list-style-type', 'upper-roman');
+test_computed_value('list-style-type', 'lower-greek');
+test_computed_value('list-style-type', 'lower-latin');
+test_computed_value('list-style-type', 'upper-latin');
+test_computed_value('list-style-type', 'armenian');
+test_computed_value('list-style-type', 'georgian');
+test_computed_value('list-style-type', 'lower-alpha');
+test_computed_value('list-style-type', 'upper-alpha');
+
+// <string>
+test_computed_value('list-style-type', '"marker string"');
+test_computed_value('list-style-type', '"Note: "');
+
+// <counter-style> = <counter-style-name> | symbols();
+test_computed_value('list-style-type', 'counter-Style-Name');
+test_computed_value('list-style-type', 'CounterStyleName');
+
+// symbols() = symbols( <symbols-type>? [ <string> | <image> ]+ );
+// <symbols-type> = cyclic | numeric | alphabetic | symbolic | fixed;
+test_computed_value('list-style-type', 'symbols(cyclic "string")');
+test_computed_value('list-style-type', 'symbols(cyclic "○" "●")');
+test_computed_value('list-style-type', 'symbols(fixed "1")');
+test_computed_value('list-style-type', 'symbols("string")');
+test_computed_value('list-style-type', 'symbols(alphabetic "first" "second")');
+test_computed_value('list-style-type', 'symbols(numeric "first" "second")');
+</script>
+</body>
+</html>
diff --git a/testing/web-platform/tests/css/css-lists/parsing/list-style-type-invalid.html b/testing/web-platform/tests/css/css-lists/parsing/list-style-type-invalid.html
new file mode 100644
index 0000000000..c49f61ca70
--- /dev/null
+++ b/testing/web-platform/tests/css/css-lists/parsing/list-style-type-invalid.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Lists: parsing list-style-type with invalid values</title>
+<link rel="help" href="https://drafts.csswg.org/css-lists-3/#propdef-list-style-type">
+<meta name="assert" content="list-style-type supports only the grammar '<counter-style> | <string> | none'.">
+<meta name="assert" content="If the system is alphabetic or numeric, there must be at least two <string>s or <image>s, or else the function is invalid.">
+<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('list-style-type', '"marker string" none');
+test_invalid_value('list-style-type', 'counter-Style-Name "marker string"');
+test_invalid_value('list-style-type', 'symbols(cyclic)');
+test_invalid_value('list-style-type', 'symbols(numeric "n")');
+test_invalid_value('list-style-type', 'symbols(alphabetic "a")');
+test_invalid_value('list-style-type', 'symbols("s" symbolic)');
+test_invalid_value('list-style-type', 'symbols(fixed url("https://example.com"))');
+
+// Example in an early spec.
+test_invalid_value('list-style-type', "symbols(repeating '○' '●')");
+
+</script>
+</body>
+</html>
diff --git a/testing/web-platform/tests/css/css-lists/parsing/list-style-type-valid.html b/testing/web-platform/tests/css/css-lists/parsing/list-style-type-valid.html
new file mode 100644
index 0000000000..dde0bee8dd
--- /dev/null
+++ b/testing/web-platform/tests/css/css-lists/parsing/list-style-type-valid.html
@@ -0,0 +1,52 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Lists: parsing list-style-type with valid values</title>
+<link rel="help" href="https://drafts.csswg.org/css-lists-3/#propdef-list-style-type">
+<link rel="help" href="https://www.w3.org/TR/CSS2/generate.html#propdef-list-style-type">
+<meta name="assert" content="list-style-type supports the full grammar '<counter-style> | <string> | none'.">
+<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('list-style-type', 'none');
+
+test_valid_value('list-style-type', 'disc');
+test_valid_value('list-style-type', 'circle');
+test_valid_value('list-style-type', 'square');
+test_valid_value('list-style-type', 'disclosure-open');
+test_valid_value('list-style-type', 'disclosure-closed');
+test_valid_value('list-style-type', 'decimal');
+test_valid_value('list-style-type', 'decimal-leading-zero');
+test_valid_value('list-style-type', 'lower-roman');
+test_valid_value('list-style-type', 'upper-roman');
+test_valid_value('list-style-type', 'lower-greek');
+test_valid_value('list-style-type', 'lower-latin');
+test_valid_value('list-style-type', 'upper-latin');
+test_valid_value('list-style-type', 'armenian');
+test_valid_value('list-style-type', 'georgian');
+test_valid_value('list-style-type', 'lower-alpha');
+test_valid_value('list-style-type', 'upper-alpha');
+
+// <string>
+test_valid_value('list-style-type', '"marker string"');
+test_valid_value('list-style-type', '"Note: "');
+
+// <counter-style> = <counter-style-name> | symbols();
+test_valid_value('list-style-type', 'counter-Style-Name');
+test_valid_value('list-style-type', 'CounterStyleName');
+
+// symbols() = symbols( <symbols-type>? [ <string> | <image> ]+ );
+// <symbols-type> = cyclic | numeric | alphabetic | symbolic | fixed;
+test_valid_value('list-style-type', 'symbols(cyclic "string")');
+test_valid_value('list-style-type', 'symbols(cyclic "○" "●")');
+test_valid_value('list-style-type', 'symbols(fixed "1")');
+test_valid_value('list-style-type', 'symbols(symbolic "string")', 'symbols("string")');
+test_valid_value('list-style-type', 'symbols(alphabetic "first" "second")');
+test_valid_value('list-style-type', 'symbols(numeric "first" "second")');
+</script>
+</body>
+</html>
diff --git a/testing/web-platform/tests/css/css-lists/parsing/list-style-valid.html b/testing/web-platform/tests/css/css-lists/parsing/list-style-valid.html
new file mode 100644
index 0000000000..55124521f8
--- /dev/null
+++ b/testing/web-platform/tests/css/css-lists/parsing/list-style-valid.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<title>CSS Lists: parsing list-style with valid values</title>
+<link rel="help" href="https://drafts.csswg.org/css-lists-3/#propdef-list-style">
+<meta name="assert" content="list-style supports the full grammar '<'list-style-position'> || <'list-style-image'> || <'list-style-type'>'.">
+<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('list-style', 'none');
+test_valid_value('list-style', 'disc outside none', 'outside');
+
+test_valid_value('list-style', 'inside');
+test_valid_value('list-style', 'inside disc', 'inside');
+test_valid_value('list-style', 'inside none');
+test_valid_value('list-style', 'inside none none', 'inside none');
+test_valid_value('list-style', 'none inside none', 'inside none');
+test_valid_value('list-style', 'none none inside', 'inside none');
+test_valid_value('list-style', 'none inside', 'inside none');
+test_valid_value('list-style', 'url("https://example.com/")');
+test_valid_value('list-style', 'none url("https://example.com/")', 'url("https://example.com/") none');
+test_valid_value('list-style', 'url("https://example.com/") disc', 'url("https://example.com/")');
+test_valid_value('list-style', 'url("https://example.com/") disc outside', 'url("https://example.com/")');
+test_valid_value('list-style', 'square');
+
+test_valid_value('list-style', 'square url("https://example.com/") inside', 'inside url("https://example.com/") square');
+test_valid_value('list-style', 'square linear-gradient(red,blue) inside', 'inside linear-gradient(red, blue) square');
+test_valid_value('list-style', 'disc radial-gradient(circle, #006, #00a 90%, #0000af 100%,white 100%) inside', 'inside radial-gradient(circle, rgb(0, 0, 102), rgb(0, 0, 170) 90%, rgb(0, 0, 175) 100%, white 100%)');
+</script>
+</body>
+</html>