<!DOCTYPE html>
<html>
  <head>
    <title>CSS Shadow Parts - Invalidation with with class in descendant combinator and part forward</title>
    <link href="http://www.apple.com/" rel="author" title="Apple">
    <link href="https://drafts.csswg.org/css-shadow-parts/" rel="help">
    <script src="../../../resources/testharness.js"></script>
    <script src="../../../resources/testharnessreport.js"></script>
    <script src="../resources/shadow-helper.js"></script>
  </head>
  <body>
    <style>.sibling ~ #c-e-outer::part(part-forwarded) { color: green; }</style>
    <script>installCustomElement("custom-element-inner", "custom-element-inner-template");</script>
    <template id="custom-element-inner-template">
      <style>span { color: red; }</style>
      <span id="part" part="partp">This text</span>
    </template>
    <script>installCustomElement("custom-element-outer", "custom-element-outer-template");</script>
    <template id="custom-element-outer-template"><custom-element-inner id="c-e-inner" exportparts="partp: part-forwarded"></custom-element-inner></template>
    The following text should be green:
    <div>
      <div id="target"></div>
      <div></div>
      <custom-element-outer id="c-e-outer"></custom-element-outer>
    </div>
    <script>
      "use strict";
      test(function() {
        const part = getElementByShadowIds(document, ["c-e-outer", "c-e-inner", "part"]);
        const before = window.getComputedStyle(part).color;
        document.querySelector("#target").classList.add("sibling");
        const after = window.getComputedStyle(part).color;
        assert_not_equals(before, after);
      }, "Part in selected host changed color");
    </script>
  </body>
</html>
