<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>CSS Selectors :only-child</title>
<link rel="help" href="https://drafts.csswg.org/selectors-4/#the-only-child-pseudo">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<!--
  See also child-indexed-pseudo-class.html.
-->
<body>

<div>
  <div id="target1">Whitespace nodes should be ignored.</div>
</div>

<div>
  <div id="target2">A comment node should be ignored.</div>
  <!-- -->
</div>

<div>
  <div id="target3">Non-whitespace text node should be ignored.</div>
  .
</div>

<div>
  <blockquote></blockquote>
  <div id="target4" data-expected="false">There is another child element.</div>
</div>

<div>
  <div id="target5"></div>
</div>

<script>
for (let i = 1; i <= 4; ++i) {
  let target = document.querySelector(`#target${i}`);
  test(() => {
    if (target.dataset.expected == 'false')
      assert_false(target.matches(':only-child'));
    else
      assert_true(target.matches(':only-child'));
  }, target.textContent);
}

test(() => {
  const target = document.querySelector('#target5');
  assert_true(target.matches(':only-child'));

  const another = target.parentNode.appendChild(document.createElement('div'));
  assert_false(target.matches(':only-child'));
  assert_false(another.matches(':only-child'));

  another.remove();
  assert_true(target.matches(':only-child'));
}, 'Dynamic addition and removal');

</script>

