<!doctype html>
<html>
<head>
<meta charset=utf-8>
<title>CSS Transitions Test: transitionend event for pseudo elements</title>
<meta name="assert" content="Test checks that TransitionEnd events are fired for pseudo-elements">
<link rel="help" title="5. Transition Events" href="http://www.w3.org/TR/css3-transitions/#transition-events">
<link rel="help" title="CSS21 - 12.1 The :before and :after pseudo-elements" href="http://www.w3.org/TR/CSS21/generate.html#before-after-content">
<link rel="help" title="CSS3 Generated and Replaced Content Module" href="http://www.w3.org/TR/css3-content/">
<link rel="author" title="Rodney Rehm" href="http://rodneyrehm.de/en/">

<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>

<style>
.before::before,
.after:after {
  content: '';
  transition: padding-left .01s;
  padding-left: 1px;
}
.before.active::before,
.after.active:after {
  padding-left: 10px;
}
</style>

</head>
<body>

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

<script>
promise_test(t => {
  const div = addDiv(t, { 'class': 'before' });
  getComputedStyle(div).paddingLeft;
  div.classList.add('active');

  const watcher = new EventWatcher(t, div, [ 'transitionend' ]);
  return watcher.wait_for('transitionend').then(evt => {
    assert_end_events_equal(evt, 'padding-left', 0.01, '::before');
  });
}, 'transition padding-left on ::before');

promise_test(t => {
  const div = addDiv(t, { 'class': 'after' });
  getComputedStyle(div).paddingLeft;
  div.classList.add('active');

  const watcher = new EventWatcher(t, div, [ 'transitionend' ]);
  return watcher.wait_for('transitionend').then(evt => {
    assert_end_events_equal(evt, 'padding-left', 0.01, '::after');
  });
}, 'transition padding-left on ::after');
</script>
</body>
</html>
