<!doctype html>
<html>
<head>
<meta charset=utf-8>
<title>CSS Transitions Test: Transitions do not run for a pseudo-element that is not being rendered</title>
<link rel="help" title="Starting transitions"
  href="https://drafts.csswg.org/css-transitions/#starting">

<script src="/resources/testharness.js" type="text/javascript"></script>
<script src="/resources/testharnessreport.js" type="text/javascript"></script>
<script src="./support/helper.js" type="text/javascript"></script>

</head>
<body>
<div id="log"></div>

<script>

promise_test(async t => {
  for (const pseudoType of ['before', 'after']) {
    const style = addStyle(t, {
      [`.init::${pseudoType}`]: 'content: ""; width: 0px; transition: width 100s;',
      [`.change::${pseudoType}`]: 'width: 100px;',
      [`.cancel::${pseudoType}`]: 'content: none',
    });

    // Create element (and pseudo-element) and attach event listeners
    const div = addDiv(t);
    div.classList.add('init');

    const eventWatcher = new EventWatcher(t, div, [
      'transitionrun',
      'transitioncancel',
    ]);

    // Trigger transition
    getComputedStyle(div).width;
    div.classList.add('change');
    getComputedStyle(div).width;

    await eventWatcher.wait_for('transitionrun');

    // Make the pseudo-element no longer rendered
    div.classList.add('cancel');

    await eventWatcher.wait_for('transitioncancel');

    div.remove();
    style.remove();
  }
}, 'Transitions on ::before/::after pseudo-elements are canceled when the'
   + ' content property is cleared');

</script>

</body>
</html>
