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