1<!DOCTYPE html>
2<meta charset="utf-8">
3<title>Listeners are invoked in correct order (AT_TARGET phase)</title>
4<script src="/resources/testharness.js"></script>
5<script src="/resources/testharnessreport.js"></script>
6<div id="log"></div>
7<script>
8"use strict";
9
10test(() => {
11    const el = document.createElement("div");
12    const expectedOrder = ["capturing", "bubbling"];
13
14    let actualOrder = [];
15    el.addEventListener("click", evt => {
16        assert_equals(evt.eventPhase, Event.AT_TARGET);
17        actualOrder.push("bubbling");
18    }, false);
19    el.addEventListener("click", evt => {
20        assert_equals(evt.eventPhase, Event.AT_TARGET);
21        actualOrder.push("capturing");
22    }, true);
23
24    el.dispatchEvent(new Event("click", {bubbles: true}));
25    assert_array_equals(actualOrder, expectedOrder, "bubbles: true");
26
27    actualOrder = [];
28    el.dispatchEvent(new Event("click", {bubbles: false}));
29    assert_array_equals(actualOrder, expectedOrder, "bubbles: false");
30}, "Listeners are invoked in correct order (AT_TARGET phase)");
31</script>
32