Prerender: Split response code WPTs into multiple variants

response-code-(non-)successful.html run several test cases that involve
multiple navigations. This seems to cause test timeout. This CL splits
them into multiple logical test files using the WPT's variant feature:
https://web-platform-tests.org/writing-tests/testharness.html#variants

Bug: 1384671
Change-Id: Id25e5b27dabc8581669ef285fcec9a8a7c513fb6
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4060766
Commit-Queue: Hiroki Nakagawa <nhiroki@chromium.org>
Reviewed-by: Huanpo Lin <robertlin@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1076060}
diff --git a/speculation-rules/prerender/response-code-non-successful.html b/speculation-rules/prerender/response-code-non-successful.html
index 00701f1..1499717 100644
--- a/speculation-rules/prerender/response-code-non-successful.html
+++ b/speculation-rules/prerender/response-code-non-successful.html
@@ -1,5 +1,11 @@
 <!DOCTYPE html>
 <title>Check that non-successful responses result in discarding the prerender</title>
+<meta name="variant" content="?code=204">
+<meta name="variant" content="?code=205">
+<meta name="variant" content="?code=402">
+<meta name="variant" content="?code=404">
+<meta name="variant" content="?code=500">
+<meta name="variant" content="?code=503">
 <meta name="timeout" content="long">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
@@ -11,17 +17,14 @@
 
 setup(() => assertSpeculationRulesIsSupported());
 
-function test_prerender_response_code(code) {
-  promise_test(async t => {
-    const {exec, tryToActivate} = await create_prerendered_page(t, {code});
-    const result = await tryToActivate();
-    assert_equals(result, 'discarded');
-  },`Responses with code ${code} should be discarded`);
-}
+const params = new URLSearchParams(window.location.search);
+const code = params.get('code');
 
-for (const code of [204, 205, 402, 404, 500, 503]) {
-  test_prerender_response_code(code);
-}
+promise_test(async t => {
+  const {exec, tryToActivate} = await create_prerendered_page(t, {code});
+  const result = await tryToActivate();
+  assert_equals(result, 'discarded');
+},`Responses with code ${code} should be discarded`);
 
 </script>
 </body>
diff --git a/speculation-rules/prerender/response-code-successful.html b/speculation-rules/prerender/response-code-successful.html
index cc70b8c..adf8a89 100644
--- a/speculation-rules/prerender/response-code-successful.html
+++ b/speculation-rules/prerender/response-code-successful.html
@@ -1,5 +1,9 @@
 <!DOCTYPE html>
 <title>Check that successful responses result in activating the prerender</title>
+<meta name="variant" content="?code=200">
+<meta name="variant" content="?code=201">
+<meta name="variant" content="?code=202">
+<meta name="variant" content="?code=203">
 <meta name="timeout" content="long">
 <script src="/resources/testharness.js"></script>
 <script src="/resources/testharnessreport.js"></script>
@@ -11,17 +15,14 @@
 
 setup(() => assertSpeculationRulesIsSupported());
 
-function test_prerender_response_code(code) {
-  promise_test(async t => {
-    const {exec, tryToActivate} = await create_prerendered_page(t, {code});
-    const result = await tryToActivate();
-    assert_equals(result, 'activated');
-  },`Responses with code ${code} should be activated`);
-}
+const params = new URLSearchParams(window.location.search);
+const code = params.get('code');
 
-for (const code of [200, 201, 202, 203]) {
-  test_prerender_response_code(code);
-}
+promise_test(async t => {
+  const {exec, tryToActivate} = await create_prerendered_page(t, {code});
+  const result = await tryToActivate();
+  assert_equals(result, 'activated');
+},`Responses with code ${code} should be activated`);
 
 </script>
 </body>