<!DOCTYPE html>
<title>Cyclic syncbase dependency with syncbase trigger - event dispatching</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<svg>
  <rect width="100" height="100" fill="blue">
    <animate attributeName="fill" from="yellow" to="blue" id="a"
             begin="c.end; b.begin" dur="10ms"/>
  </rect>
  <rect width="100" height="100" x="100" fill="blue">
    <animate attributeName="fill" from="yellow" to="blue" id="b"
             begin="c.end; a.begin" dur="10ms"/>
  </rect>
  <rect width="100" height="100" x="200" fill="blue">
    <animate attributeName="fill" from="yellow" to="blue" id="c"
             begin="0; 15ms" dur="10ms"/>
  </rect>
</svg>
<script>
  promise_test(function(t) {
    // Wait for two beginEvent/endEvent pairs on all the timed elements.
    let promises = ['a', 'b', 'c'].map(function(id) {
      return new EventWatcher(t, document.getElementById(id),
                              ['beginEvent', 'endEvent'])
        .wait_for(['beginEvent', 'endEvent',
                   'beginEvent', 'endEvent']);
    });
    return Promise.all(promises);
  });
</script>
