<!DOCTYPE html>
<html>
  <head>
    <title>CSS Selectors Invalidation: :defined</title>
    <link rel="help" href="https://drafts.csswg.org/selectors-4/#the-defined-pseudo">
    <meta name="assert" content="This tests that the :defined selector is effective">
    <link rel="help" href="https://html.spec.whatwg.org/multipage/semantics-other.html#selector-defined">
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
    <style>
      #container {
        color: gray;
      }

      #a1:defined {
        color: blue;
      }
      :defined + #b1 {
        color: green;
      }
      :defined > #c1 {
        color: red;
      }
      div + :defined + * #d1 {
        color: yellow;
      }
  </style>
  </head>
  <body>
    <section id="container">
      <elucidate-late id="a1"></elucidate-late>
      <div id="b1"></div>
      <elucidate-late>
        <div id="c1"></div>
      </elucidate-late>
      <div>
        <div id="d1"></div>
      </div>
    </section>

    <script>
      const gray = "rgb(128, 128, 128)";
      const blue = "rgb(0, 0, 255)";
      const green = "rgb(0, 128, 0)";
      const red = "rgb(255, 0, 0)";
      const yellow = "rgb(255, 255, 0)";

      function assertGray(a, b, c, d) {
        assert_equals(getComputedStyle(a).color, gray);
        assert_equals(getComputedStyle(b).color, gray);
        assert_equals(getComputedStyle(c).color, gray);
        assert_equals(getComputedStyle(d).color, gray);
      }

      function assertColorful(a, b, c, d) {
        assert_equals(getComputedStyle(a).color, blue);
        assert_equals(getComputedStyle(b).color, green);
        assert_equals(getComputedStyle(c).color, red);
        assert_equals(getComputedStyle(d).color, yellow);
      }

      class ElucidateLate extends HTMLElement {
        constructor() {
          super();
        }
      }

      test(() => {
        assertGray(a1, b1, c1, d1);
        customElements.define('elucidate-late', ElucidateLate);
        assertColorful(a1, b1, c1, d1);
      }, ":defined selector is effective");

    </script>
  </body>
</html>
