summaryrefslogtreecommitdiffstats
path: root/test/wpt/tests/fetch/fetch-later
diff options
context:
space:
mode:
Diffstat (limited to 'test/wpt/tests/fetch/fetch-later')
-rw-r--r--test/wpt/tests/fetch/fetch-later/META.yml3
-rw-r--r--test/wpt/tests/fetch/fetch-later/README.md3
-rw-r--r--test/wpt/tests/fetch/fetch-later/basic.tentative.https.window.js13
-rw-r--r--test/wpt/tests/fetch/fetch-later/non-secure.window.js8
-rw-r--r--test/wpt/tests/fetch/fetch-later/sendondiscard.tentative.https.window.js28
5 files changed, 55 insertions, 0 deletions
diff --git a/test/wpt/tests/fetch/fetch-later/META.yml b/test/wpt/tests/fetch/fetch-later/META.yml
new file mode 100644
index 0000000..f8fd46b
--- /dev/null
+++ b/test/wpt/tests/fetch/fetch-later/META.yml
@@ -0,0 +1,3 @@
+spec: https://whatpr.org/fetch/1647/094ea69...152d725.html#fetch-later-method
+suggested_reviewers:
+ - mingyc
diff --git a/test/wpt/tests/fetch/fetch-later/README.md b/test/wpt/tests/fetch/fetch-later/README.md
new file mode 100644
index 0000000..661e2b9
--- /dev/null
+++ b/test/wpt/tests/fetch/fetch-later/README.md
@@ -0,0 +1,3 @@
+# FetchLater Tests
+
+These tests cover [FetchLater method](https://whatpr.org/fetch/1647/094ea69...152d725.html#fetch-later-method) related behaviors.
diff --git a/test/wpt/tests/fetch/fetch-later/basic.tentative.https.window.js b/test/wpt/tests/fetch/fetch-later/basic.tentative.https.window.js
new file mode 100644
index 0000000..a8ca011
--- /dev/null
+++ b/test/wpt/tests/fetch/fetch-later/basic.tentative.https.window.js
@@ -0,0 +1,13 @@
+// META: script=/resources/testharness.js
+// META: script=/resources/testharnessreport.js
+
+'use strict';
+
+test(() => {
+ assert_throws_js(TypeError, () => fetchLater());
+}, `fetchLater() cannot be called without request.`);
+
+test(() => {
+ const result = fetchLater('/');
+ assert_false(result.sent);
+}, `fetchLater()'s return tells the deferred request is not yet sent.`);
diff --git a/test/wpt/tests/fetch/fetch-later/non-secure.window.js b/test/wpt/tests/fetch/fetch-later/non-secure.window.js
new file mode 100644
index 0000000..2f2c3ea
--- /dev/null
+++ b/test/wpt/tests/fetch/fetch-later/non-secure.window.js
@@ -0,0 +1,8 @@
+// META: script=/resources/testharness.js
+// META: script=/resources/testharnessreport.js
+
+'use strict';
+
+test(() => {
+ assert_false(window.hasOwnProperty('fetchLater'));
+}, `fetchLater() is not supported in non-secure context.`);
diff --git a/test/wpt/tests/fetch/fetch-later/sendondiscard.tentative.https.window.js b/test/wpt/tests/fetch/fetch-later/sendondiscard.tentative.https.window.js
new file mode 100644
index 0000000..0613d18
--- /dev/null
+++ b/test/wpt/tests/fetch/fetch-later/sendondiscard.tentative.https.window.js
@@ -0,0 +1,28 @@
+// META: script=/resources/testharness.js
+// META: script=/resources/testharnessreport.js
+// META: script=/common/utils.js
+// META: script=/pending-beacon/resources/pending_beacon-helper.js
+
+'use strict';
+
+parallelPromiseTest(async t => {
+ const uuid = token();
+ const url = generateSetBeaconURL(uuid);
+ const numPerMethod = 20;
+ const total = numPerMethod * 2;
+
+ // Loads an iframe that creates `numPerMethod` GET & POST fetchLater requests.
+ const iframe = await loadScriptAsIframe(`
+ const url = "${url}";
+ for (let i = 0; i < ${numPerMethod}; i++) {
+ let get = fetchLater(url);
+ let post = fetchLater(url, {method: 'POST'});
+ }
+ `);
+
+ // Delete the iframe to trigger deferred request sending.
+ document.body.removeChild(iframe);
+
+ // The iframe should have sent all requests.
+ await expectBeacon(uuid, {count: total});
+}, 'A discarded document sends all its fetchLater requests with default config.');