Test case: no reset-style-inheritance. color value should be inherited from the shadow host.
PASS window.getComputedStyle(document.getElementById("no-reset-style-inheritance").firstChild).color is "rgb(255, 238, 238)"
PASS window.getComputedStyle(document.getElementById("no-reset-style-inheritance").firstChild).backgroundColor is "rgba(0, 0, 0, 0)"
Test case: reset-style-inhertiace basic test. color value should be initial because insertion point's resetStyleInheritance is true.
PASS window.getComputedStyle(document.getElementById("reset-style-inheritance").firstChild).color is "rgb(0, 0, 0)"
PASS window.getComputedStyle(document.getElementById("reset-style-inheritance").firstChild).backgroundColor is "rgba(0, 0, 0, 0)"
Test case: make a content element reset-style-inhertiace by using its attribute. color value should be initial because insertion point's resetStyleInheritance is true.
PASS window.getComputedStyle(document.getElementById("reset-style-inheritance").firstChild).color is "rgb(0, 0, 0)"
PASS window.getComputedStyle(document.getElementById("reset-style-inheritance").firstChild).backgroundColor is "rgba(0, 0, 0, 0)"
Test case: make a shadow element reset-style-inhertiace by using its attribute. color value should be initial because insertion point's resetStyleInheritance is true.
PASS window.getComputedStyle(document.getElementById("reset-style-inheritance").firstChild).color is "rgb(0, 0, 0)"
PASS window.getComputedStyle(document.getElementById("reset-style-inheritance").firstChild).backgroundColor is "rgba(0, 0, 0, 0)"
Test case: reset-style-inhertiace changes dynamically. Firstly color value should be inherited. Next, initial. At last, inherited.
PASS window.getComputedStyle(document.getElementById("reset-style-inheritance-dynamic").firstChild).color is "rgb(255, 238, 238)"
PASS window.getComputedStyle(document.getElementById("reset-style-inheritance-dynamic").firstChild).backgroundColor is "rgba(0, 0, 0, 0)"
PASS window.getComputedStyle(document.getElementById("reset-style-inheritance-dynamic").firstChild).color is "rgb(0, 0, 0)"
PASS window.getComputedStyle(document.getElementById("reset-style-inheritance-dynamic").firstChild).backgroundColor is "rgba(0, 0, 0, 0)"
PASS window.getComputedStyle(document.getElementById("reset-style-inheritance-dynamic").firstChild).color is "rgb(255, 238, 238)"
PASS window.getComputedStyle(document.getElementById("reset-style-inheritance-dynamic").firstChild).backgroundColor is "rgba(0, 0, 0, 0)"
Test case: the parent node of the distributed node is in the same shadow dom subtree as the insertion point. color value should be initial. reset-style-inheritance doesn't depend on whether parent style node is in the same treescope or not.
PASS window.getComputedStyle(document.getElementById("reset-but-not-cross-upper-boundary").firstChild).color is "rgb(0, 0, 0)"
PASS window.getComputedStyle(document.getElementById("reset-but-not-cross-upper-boundary").firstChild).backgroundColor is "rgba(0, 0, 0, 0)"
Test case: reset-style-inheritance with multiple shadow roots. color value should be initial, because reset-style-inheritance of the insertion point in the youngest shadow root is true.
PASS window.getComputedStyle(document.getElementById("multiple-shadow-roots").firstChild).color is "rgb(0, 0, 0)"
PASS window.getComputedStyle(document.getElementById("multiple-shadow-roots").firstChild).backgroundColor is "rgba(0, 0, 0, 0)"
Test case: multiple insertion points in the same shadow dom subtree.. Each reset-style-inheritance should be checked.
PASS window.getComputedStyle(document.getElementById("multiple-insertion-points").firstChild).color is "rgb(255, 238, 238)"
PASS window.getComputedStyle(document.getElementById("multiple-insertion-points").firstChild).backgroundColor is "rgba(0, 0, 0, 0)"
PASS window.getComputedStyle(document.getElementById("multiple-insertion-points").lastChild).color is "rgb(0, 0, 0)"
PASS window.getComputedStyle(document.getElementById("multiple-insertion-points").lastChild).backgroundColor is "rgba(0, 0, 0, 0)"
DONE
