forked from mirrors/gecko-dev
Automatic update from web-platform-tests [navigation-api] WPT variant name should not be an empty string An empty variant name can confuse Wptrunner about what are the tests intended to be run when passed in through command line args or --include. Unlike other variants, Wptrunner can not run the empty name variant alone. Update the existing tests to make it ready for a system side change. Bug: 1464004 Change-Id: I97e4afb8b1e59799eb8a6b693d3816381b360478 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4681912 Auto-Submit: Weizhong Xia <weizhong@google.com> Reviewed-by: Domenic Denicola <domenic@chromium.org> Commit-Queue: Domenic Denicola <domenic@chromium.org> Cr-Commit-Position: refs/heads/main@{#1169726} -- wpt-commits: 9cb8504068432940627a0662b41a6a67805f6f93 wpt-pr: 41002
60 lines
2.4 KiB
HTML
60 lines
2.4 KiB
HTML
<!doctype html>
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
<meta name="variant" content="?no-currententrychange">
|
|
<meta name="variant" content="?currententrychange">
|
|
|
|
<script type="module">
|
|
import { Recorder, hasVariant } from "./resources/helpers.mjs";
|
|
|
|
promise_test(async t => {
|
|
// Wait for after the load event so that the navigation doesn't get converted
|
|
// into a replace navigation.
|
|
await new Promise(resolve => window.onload = () => t.step_timeout(resolve, 0));
|
|
|
|
const from = navigation.currentEntry;
|
|
|
|
const recorder = new Recorder({
|
|
skipCurrentChange: !hasVariant("currententrychange"),
|
|
finalExpectedEvent: "transition.finished fulfilled"
|
|
});
|
|
|
|
recorder.setUpNavigationAPIListeners();
|
|
|
|
navigation.addEventListener("navigate", e => {
|
|
e.intercept({ commit: "after-transition",
|
|
async handler() {
|
|
recorder.record("handler start");
|
|
await new Promise(r => t.step_timeout(r, 0));
|
|
recorder.record("handler async step 1a");
|
|
e.commit();
|
|
recorder.record("handler async step 1b");
|
|
await new Promise(r => t.step_timeout(r, 0));
|
|
recorder.record("handler async step 2");
|
|
}
|
|
});
|
|
});
|
|
|
|
const result = navigation.navigate("#1");
|
|
recorder.setUpResultListeners(result);
|
|
|
|
Promise.resolve().then(() => recorder.record("promise microtask"));
|
|
|
|
await recorder.readyToAssert;
|
|
|
|
recorder.assert([
|
|
/* event name, location.hash value, navigation.transition properties */
|
|
["navigate", "", null],
|
|
["handler start", "", { from, navigationType: "push" }],
|
|
["promise microtask", "", { from, navigationType: "push" }],
|
|
["handler async step 1a", "", { from, navigationType: "push" }],
|
|
["currententrychange", "#1", { from, navigationType: "push" }],
|
|
["handler async step 1b", "#1", { from, navigationType: "push" }],
|
|
["committed fulfilled", "#1", { from, navigationType: "push" }],
|
|
["handler async step 2", "#1", { from, navigationType: "push" }],
|
|
["navigatesuccess", "#1", { from, navigationType: "push" }],
|
|
["finished fulfilled", "#1", null],
|
|
["transition.finished fulfilled", "#1", null],
|
|
]);
|
|
}, "event and promise ordering for same-document navigation.navigate() intercepted by intercept() with { commit: 'after-transition' }");
|
|
</script>
|