<!DOCTYPE html>
<title>@scope - deeply nested</title>
<link rel="help" href="https://drafts.csswg.org/css-cascade-6/#scope-atrule">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<style>
  main * { background-color: black; }
</style>
<main id=main></main>
<script>

// @scope (.s0) { @scope (.s1) { ... span {} ... } }
function createStyleSheet(length, i) {
  if (length == 0)
    return 'span { background-color: green; }';
  if (i === undefined)
    i = 0;
  return `
    @scope (.s${i}) {
      ${createStyleSheet(length - 1, i + 1)}
    }
  `.trim();
}

// <div class=s0><div class=s1>...<span></span>...</div></div>
function createElementChain(length, i) {
  if (length < 1)
    throw 'Invalid length';
  if (i === undefined)
    i = 0;
  let e = document.createElement('div');
  e.classList.add(`s${i}`);
  if (length > 1)
    e.append(createElementChain(length - 1, i + 1));
  else
    e.append(document.createElement('span'));
  return e;
}

const COUNT = 90;

let style_node = document.createElement('style');
style_node.textContent = createStyleSheet(COUNT);
main.append(style_node);

main.append(createElementChain(COUNT));

test(() => {
  for (let span of main.querySelectorAll('span'))
    assert_equals(getComputedStyle(span).backgroundColor, 'rgb(0, 128, 0)');
}, 'Deep @scope nesting');
</script>
