Bug 1757847 [wpt PR 33036] - Update wpt metadata, a=testonly
[gecko.git] / testing / web-platform / tests / app-history / ordering-and-transition / location-href-transitionWhile-reject.html
blobe3f65e81d44e0dc1fe53532953f40d4fc767ce6d
1 <!doctype html>
2 <script src="/resources/testharness.js"></script>
3 <script src="/resources/testharnessreport.js"></script>
4 <meta name="variant" content="">
5 <meta name="variant" content="?currententrychange">
7 <script type="module">
8 import { Recorder, hasVariant } from "./resources/helpers.mjs";
10 promise_test(async t => {
11 // Wait for after the load event so that the navigation doesn't get converted
12 // into a replace navigation.
13 await new Promise(resolve => window.onload = () => t.step_timeout(resolve, 0));
15 const from = navigation.currentEntry;
16 const expectedError = new Error("boo");
18 const recorder = new Recorder({
19 skipCurrentChange: !hasVariant("currententrychange"),
20 finalExpectedEvent: "transition.finished rejected"
21 });
23 recorder.setUpAppHistoryListeners();
25 navigation.addEventListener("navigate", e => {
26 e.transitionWhile(Promise.reject(expectedError));
27 });
29 location.href = "/common/blank.html#1";
31 Promise.resolve().then(() => recorder.record("promise microtask"));
33 await recorder.readyToAssert;
35 recorder.assert([
36 /* event name, location.hash value, navigation.transition properties */
37 ["navigate", "", null],
38 ["currententrychange", "#1", { from, navigationType: "push" }],
39 ["promise microtask", "#1", { from, navigationType: "push" }],
40 ["navigateerror", "#1", { from, navigationType: "push" }],
41 ["transition.finished rejected", "#1", null],
42 ]);
44 recorder.assertErrorsAre(expectedError);
45 }, "event and promise ordering for location.href setter intercepted by passing a rejected promise to transitionWhile()");
46 </script>