blob: f751a7bb68646e58aa20b87badb416d3bd7d29bc [file] [log] [blame]
<!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>