| <!doctype html> | |
| <title>CSS Selectors @nest 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 type="module"> | |
| let [ss] = document.styleSheets | |
| const beforeEach = () => { | |
| while (ss.rules.length) | |
| ss.removeRule(0) | |
| } | |
| const testRules = [ | |
| `.foo { & { color: green; } }`, // 🐰 | |
| `.foo { &.bar { color: green; } }`, | |
| `.foo { & .bar { color: green; } }`, | |
| `.foo { & > .bar { color: green; } }`, | |
| `.foo { &:is(.bar, &.baz) { color: green; } }`, | |
| `.foo { @nest .bar& { color: green; } }`, | |
| `.foo { @nest .bar & { color: green; } }`, | |
| `.foo { @nest .bar > & { color: green; } }`, | |
| `.foo, .bar { & + .baz, &.qux { color: green; } }`, | |
| `.foo { & .bar & .baz & .qux { color: green; } }`, | |
| `.foo { @media (min-width: 50px) { color: green; } }`, | |
| `main { & > section, & > article { & > header { color: green; } } }`, | |
| ] | |
| 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> |