<!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>.ancestor #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 id="target">
        <div><custom-element-outer id="c-e-outer"></custom-element-outer></div>
    </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("ancestor");
        const after = window.getComputedStyle(part).color;
        assert_not_equals(before, after);
      }, "Part in selected host changed color");
    </script>
  </body>
</html>
