wpt / css / css-view-transitions / scoped / display-change-during-transition.html

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

/css/css-view-transitions/scoped/display-change-during-transition.html

<!DOCTYPE html>
<html class="reftest-wait">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <link rel="help" href="https://drafts.csswg.org/css-view-transitions-2/">
  <link rel="match" href="display-change-during-transition-ref.html">
  <meta name="fuzzy" content="maxDifference=0-2;totalPixels=0-14400">
  <style>
    .tr {
      view-transition-name: demo;
    }
    ::view-transition {
      pointer-events: none;
    }
    ::view-transition-group(demo) {
      /* freeze animation at midpoint */
      animation-duration: 10000s;
      animation-delay: -5000s;
      animation-timing-function: cubic-bezier(0, 1, 1, 0);
      display: block;
      outline: 5px solid red;
    }
    ::view-transition-image-pair(*),
    ::view-transition-old(*),
    ::view-transition-new(*) {
      /* No cross-fade */
      animation: unset;
    }
    .box {
      position: absolute;
      z-index: 0;
      will-change: transform;
      contain: strict;
    }
    #scope {
      position: absolute;
      background: #eee;
      left: 40px;
      top: 40px;
      width: 490px;
      height: 190px;
    }
    .part {
      left: 30px;
      top: 30px;
      width: 120px;
      height: 120px;
      background-color: purple;
    }
    .part.state2 {
      transform: translateX(300px);
    }
  </style>
</head>
<script src="/common/reftest-wait.js"></script>
<script src="/web-animations/testcommon.js"></script>
<body>
  <div id=scope class=box>
    <div class="part box tr state1"></div>
  </div>
</body>
<script>
  function animationStartPromise() {
    return new Promise(resolve => {
      const listener = event => {
        document.removeEventListener('animationstart', listener);
        resolve();
      };
      document.addEventListener('animationstart', listener);
    });
  }

  window.onload = async () => {
    const animationStarted = animationStartPromise();
    const vt = scope.startViewTransition(() => {
      scope.querySelector('.part').classList.toggle('state2');
    });
    await vt.ready;
    await animationStarted;
    await waitForNextFrame();
    await runAndWaitForFrameUpdate(() => {
      const new_style = document.createElement('style');
      new_style.innerText =
          "::view-transition-group(demo):not(:only-child) { " +
          "  display: flex;" +
          "  outline: 5px solid green;" +
          "}";
      document.head.appendChild(new_style);
    });
    takeScreenshot();
  };
</script>
</html>

/css/css-view-transitions/scoped/display-change-during-transition-ref.html

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <link rel="help" href="https://drafts.csswg.org/css-view-transitions-2/">
  <style>
    .box {
      position: absolute;
      z-index: 0;
      will-change: transform;
      contain: strict;
    }
    #scope {
      position: absolute;
      background: #eee;
      left: 40px;
      top: 40px;
      width: 490px;
      height: 190px;
    }
    .part {
      left: 30px;
      top: 30px;
      width: 120px;
      height: 120px;
      background-color: purple;
      transform: translateX(150px);
      outline: 5px solid green;
    }
  </style>
</head>
<body>
  <div id=scope class=box>
    <div class="part box"></div>
  </div>
</body>
</html>