wpt / css / css-view-transitions / scoped / shadow-dom.html

Status: FAIL | Duration: 9ms | Subtests: 0/1 | Open test on wpt.live | Open ref on wpt.live | wpt.fyi

/css/css-view-transitions/scoped/shadow-dom.html

<!DOCTYPE html>
<html class=reftest-wait>
<head>
<link rel="help" href="https://drafts.csswg.org/css-view-transitions-2/">
<link rel="match" href="shadow-dom-ref.html">
<script src="/common/reftest-wait.js"></script>
<script src="/web-animations/testcommon.js"></script>
</head>
<body>
<my-el id=c></my-el>
<script>

  const ss = new CSSStyleSheet();
  ss.replaceSync(`
    #scope { contain: strict; position: relative;
             background: red; width: 100px; height: 100px;
             view-transition-name: none; }
    #part { view-transition-name: foo; background: blue;
            margin: 25px; width: 50px; height: 50px; }
    #scope::view-transition { background: lightgrey; }
    #scope::view-transition-group(foo) { animation-play-state: paused; }
    #scope::view-transition-new(foo) { animation: unset; opacity: 1; }
    #scope::view-transition-old(foo) { animation: unset; opacity: 0; }
  `);

  customElements.define('my-el', class extends HTMLElement {
    #shadow = this.attachShadow({ mode: "open" });
    connectedCallback() {
      this.#shadow.adoptedStyleSheets.push(ss);
      this.#shadow.innerHTML = `
        <div id=scope>
          <div id=part></div>
        </div>
      `;
    }
    play() {
      const scope = this.#shadow.querySelector("#scope");
      return scope.startViewTransition(() => {});
    }
  });

  onload = async () => {
    await waitForCompositorReady();
    await c.play().ready;
    requestAnimationFrame(takeScreenshot);
  }

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

/css/css-view-transitions/scoped/shadow-dom-ref.html

<!DOCTYPE html>
<style>

#scope { contain: strict; position: relative;
         background: lightgrey; width: 100px; height: 100px; }
#part { background: blue; margin: 25px; width: 50px; height: 50px; }

</style>
<div id=scope>
  <div id=part></div>
</div>