summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/css/css-nesting/parsing.html
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 01:47:29 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 01:47:29 +0000
commit0ebf5bdf043a27fd3dfb7f92e0cb63d88954c44d (patch)
treea31f07c9bcca9d56ce61e9a1ffd30ef350d513aa /testing/web-platform/tests/css/css-nesting/parsing.html
parentInitial commit. (diff)
downloadfirefox-esr-0ebf5bdf043a27fd3dfb7f92e0cb63d88954c44d.tar.xz
firefox-esr-0ebf5bdf043a27fd3dfb7f92e0cb63d88954c44d.zip
Adding upstream version 115.8.0esr.upstream/115.8.0esr
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/css/css-nesting/parsing.html')
-rw-r--r--testing/web-platform/tests/css/css-nesting/parsing.html47
1 files changed, 47 insertions, 0 deletions
diff --git a/testing/web-platform/tests/css/css-nesting/parsing.html b/testing/web-platform/tests/css/css-nesting/parsing.html
new file mode 100644
index 0000000000..c22eaada3c
--- /dev/null
+++ b/testing/web-platform/tests/css/css-nesting/parsing.html
@@ -0,0 +1,47 @@
+<!doctype html>
+<title>CSS Selectors parsing</title>
+<link rel="author" title="Adam Argyle" href="mailto:argyle@google.com">
+<link rel="help" href="https://drafts.csswg.org/css-nesting-1/">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+
+<style id="test-sheet"></style>
+<script>
+ let [ss] = document.styleSheets
+
+ const beforeEach = () => {
+ while (ss.rules.length)
+ ss.removeRule(0)
+ }
+
+ const testRules = [
+ `.foo {\n & { color: green; }\n}`, // 🐰
+ `.foo {\n &.bar { color: green; }\n}`,
+ `.foo {\n & .bar { color: green; }\n}`,
+ `.foo {\n & > .bar { color: green; }\n}`,
+ `.foo {\n > .bar { color: green; }\n}`,
+ `.foo {\n > & .bar { color: green; }\n}`,
+ `.foo {\n + .bar & { color: green; }\n}`,
+ `.foo {\n .test > & .bar { color: green; }\n}`,
+ `.foo {\n + .bar, .foo, > .lol { color: green; }\n}`,
+ `.foo {\n &:is(.bar, &.baz) { color: green; }\n}`,
+ `.foo {\n .bar& { color: green; }\n}`,
+ `.foo {\n .bar & { color: green; }\n}`,
+ `.foo {\n .bar > & { color: green; }\n}`,
+ `.foo, .bar {\n & + .baz, &.qux { color: green; }\n}`,
+ `.foo {\n & .bar & .baz & .qux { color: green; }\n}`,
+ `.foo {\n @media (min-width: 50px) { color: green; }\n}`,
+ `main {\n & > section, & > article {\n & > header { color: green; }\n}\n}`,
+ ]
+
+ testRules.forEach(testRule => {
+ test(function() {
+ beforeEach()
+ ss.insertRule(testRule)
+ // todo?
+ // when parsing is being ready/prototyped,
+ // switch to crawling nested rules instead of comparing text
+ assert_equals(ss.rules[0].cssText, testRule)
+ }, testRule)
+ })
+</script>