Bug 1469644 [wpt PR 11572] - XHR: Split up xmlhttprequest-timeout-worker-synconworker.html, a=testonly
authorSimon Pieters <zcorpan@gmail.com>
Fri, 24 Aug 2018 12:58:44 +0000
changeset 433819 350c6563f4c46fa4ced71ffc041d3a4008534a14
parent 433818 7e0f28182be1bc57837eefe879292cfb2fa22318
child 433820 9096b30319a50a96aa31b915773d267395c097b9
push id34523
push usercsabou@mozilla.com
push dateWed, 29 Aug 2018 17:34:43 +0000
treeherdermozilla-central@c2e3be6a1dd3 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewerstestonly
bugs1469644, 11572, 11571
milestone63.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1469644 [wpt PR 11572] - XHR: Split up xmlhttprequest-timeout-worker-synconworker.html, a=testonly Automatic update from web-platform-testsXHR: Split up xmlhttprequest-timeout-worker-synconworker.html Part of #11571. -- wpt-commits: 2e969bc4381dd98e7e0862b40561136d87d58dfe wpt-pr: 11572
testing/web-platform/meta/MANIFEST.json
testing/web-platform/tests/xhr/resources/xmlhttprequest-timeout-aborted.js
testing/web-platform/tests/xhr/resources/xmlhttprequest-timeout-abortedonmain.js
testing/web-platform/tests/xhr/resources/xmlhttprequest-timeout-overrides.js
testing/web-platform/tests/xhr/resources/xmlhttprequest-timeout-overridesexpires.js
testing/web-platform/tests/xhr/resources/xmlhttprequest-timeout-simple.js
testing/web-platform/tests/xhr/resources/xmlhttprequest-timeout-synconmain.js
testing/web-platform/tests/xhr/resources/xmlhttprequest-timeout-synconworker.js
testing/web-platform/tests/xhr/resources/xmlhttprequest-timeout-twice.js
testing/web-platform/tests/xhr/resources/xmlhttprequest-timeout.js
testing/web-platform/tests/xhr/xmlhttprequest-timeout-aborted.html
testing/web-platform/tests/xhr/xmlhttprequest-timeout-abortedonmain.html
testing/web-platform/tests/xhr/xmlhttprequest-timeout-overrides.html
testing/web-platform/tests/xhr/xmlhttprequest-timeout-overridesexpires.html
testing/web-platform/tests/xhr/xmlhttprequest-timeout-simple.html
testing/web-platform/tests/xhr/xmlhttprequest-timeout-synconmain.html
testing/web-platform/tests/xhr/xmlhttprequest-timeout-twice.html
testing/web-platform/tests/xhr/xmlhttprequest-timeout-worker-aborted.html
testing/web-platform/tests/xhr/xmlhttprequest-timeout-worker-overrides.html
testing/web-platform/tests/xhr/xmlhttprequest-timeout-worker-overridesexpires.html
testing/web-platform/tests/xhr/xmlhttprequest-timeout-worker-simple.html
testing/web-platform/tests/xhr/xmlhttprequest-timeout-worker-synconworker.html
testing/web-platform/tests/xhr/xmlhttprequest-timeout-worker-twice.html
--- a/testing/web-platform/meta/MANIFEST.json
+++ b/testing/web-platform/meta/MANIFEST.json
@@ -403743,121 +403743,265 @@
    "xhr/xmlhttprequest-sync-not-hang-scriptloader.html": [
     [
      "/xhr/xmlhttprequest-sync-not-hang-scriptloader.html",
      {}
     ]
    ],
    "xhr/xmlhttprequest-timeout-aborted.html": [
     [
-     "/xhr/xmlhttprequest-timeout-aborted.html",
+     "/xhr/xmlhttprequest-timeout-aborted.html?aborted immediately after send()",
+     {
+      "timeout": "long"
+     }
+    ],
+    [
+     "/xhr/xmlhttprequest-timeout-aborted.html?call abort() after TIME_NORMAL_LOAD",
+     {
+      "timeout": "long"
+     }
+    ],
+    [
+     "/xhr/xmlhttprequest-timeout-aborted.html?only open()ed, not aborted",
      {
       "timeout": "long"
      }
     ]
    ],
    "xhr/xmlhttprequest-timeout-abortedonmain.html": [
     [
-     "/xhr/xmlhttprequest-timeout-abortedonmain.html",
+     "/xhr/xmlhttprequest-timeout-abortedonmain.html?abort() from a 0ms timeout",
+     {
+      "timeout": "long"
+     }
+    ],
+    [
+     "/xhr/xmlhttprequest-timeout-abortedonmain.html?aborted after TIME_DELAY",
      {
       "timeout": "long"
      }
     ]
    ],
    "xhr/xmlhttprequest-timeout-overrides.html": [
     [
-     "/xhr/xmlhttprequest-timeout-overrides.html",
+     "/xhr/xmlhttprequest-timeout-overrides.html?timeout disabled after initially set",
+     {
+      "timeout": "long"
+     }
+    ],
+    [
+     "/xhr/xmlhttprequest-timeout-overrides.html?timeout enabled after initially disabled",
+     {
+      "timeout": "long"
+     }
+    ],
+    [
+     "/xhr/xmlhttprequest-timeout-overrides.html?timeout overrides load after a delay",
      {
       "timeout": "long"
      }
     ]
    ],
    "xhr/xmlhttprequest-timeout-overridesexpires.html": [
     [
-     "/xhr/xmlhttprequest-timeout-overridesexpires.html",
+     "/xhr/xmlhttprequest-timeout-overridesexpires.html?timeout set to expired value before load fires",
+     {
+      "timeout": "long"
+     }
+    ],
+    [
+     "/xhr/xmlhttprequest-timeout-overridesexpires.html?timeout set to expiring value after load fires",
+     {
+      "timeout": "long"
+     }
+    ],
+    [
+     "/xhr/xmlhttprequest-timeout-overridesexpires.html?timeout set to non-expiring value after timeout fires",
      {
       "timeout": "long"
      }
     ]
    ],
    "xhr/xmlhttprequest-timeout-reused.html": [
     [
      "/xhr/xmlhttprequest-timeout-reused.html",
      {
       "timeout": "long"
      }
     ]
    ],
    "xhr/xmlhttprequest-timeout-simple.html": [
     [
-     "/xhr/xmlhttprequest-timeout-simple.html",
+     "/xhr/xmlhttprequest-timeout-simple.html?load fires normally",
+     {
+      "timeout": "long"
+     }
+    ],
+    [
+     "/xhr/xmlhttprequest-timeout-simple.html?no time out scheduled, load fires normally",
+     {
+      "timeout": "long"
+     }
+    ],
+    [
+     "/xhr/xmlhttprequest-timeout-simple.html?timeout hit before load",
      {
       "timeout": "long"
      }
     ]
    ],
    "xhr/xmlhttprequest-timeout-synconmain.html": [
     [
-     "/xhr/xmlhttprequest-timeout-synconmain.html",
+     "/xhr/xmlhttprequest-timeout-synconmain.html?timeout after open",
+     {
+      "timeout": "long"
+     }
+    ],
+    [
+     "/xhr/xmlhttprequest-timeout-synconmain.html?timeout before open",
      {
       "timeout": "long"
      }
     ]
    ],
    "xhr/xmlhttprequest-timeout-twice.html": [
     [
-     "/xhr/xmlhttprequest-timeout-twice.html",
+     "/xhr/xmlhttprequest-timeout-twice.html?load fires normally with no timeout set, twice",
+     {
+      "timeout": "long"
+     }
+    ],
+    [
+     "/xhr/xmlhttprequest-timeout-twice.html?load fires normally with same timeout set twice",
+     {
+      "timeout": "long"
+     }
+    ],
+    [
+     "/xhr/xmlhttprequest-timeout-twice.html?timeout fires normally with same timeout set twice",
      {
       "timeout": "long"
      }
     ]
    ],
    "xhr/xmlhttprequest-timeout-worker-aborted.html": [
     [
-     "/xhr/xmlhttprequest-timeout-worker-aborted.html",
+     "/xhr/xmlhttprequest-timeout-worker-aborted.html?aborted immediately after send()",
+     {
+      "timeout": "long"
+     }
+    ],
+    [
+     "/xhr/xmlhttprequest-timeout-worker-aborted.html?call abort() after TIME_NORMAL_LOAD",
+     {
+      "timeout": "long"
+     }
+    ],
+    [
+     "/xhr/xmlhttprequest-timeout-worker-aborted.html?only open()ed, not aborted",
      {
       "timeout": "long"
      }
     ]
    ],
    "xhr/xmlhttprequest-timeout-worker-overrides.html": [
     [
-     "/xhr/xmlhttprequest-timeout-worker-overrides.html",
+     "/xhr/xmlhttprequest-timeout-worker-overrides.html?timeout disabled after initially set",
+     {
+      "timeout": "long"
+     }
+    ],
+    [
+     "/xhr/xmlhttprequest-timeout-worker-overrides.html?timeout enabled after initially disabled",
+     {
+      "timeout": "long"
+     }
+    ],
+    [
+     "/xhr/xmlhttprequest-timeout-worker-overrides.html?timeout overrides load after a delay",
      {
       "timeout": "long"
      }
     ]
    ],
    "xhr/xmlhttprequest-timeout-worker-overridesexpires.html": [
     [
-     "/xhr/xmlhttprequest-timeout-worker-overridesexpires.html",
+     "/xhr/xmlhttprequest-timeout-worker-overridesexpires.html?timeout set to expired value before load fires",
+     {
+      "timeout": "long"
+     }
+    ],
+    [
+     "/xhr/xmlhttprequest-timeout-worker-overridesexpires.html?timeout set to expiring value after load fires",
+     {
+      "timeout": "long"
+     }
+    ],
+    [
+     "/xhr/xmlhttprequest-timeout-worker-overridesexpires.html?timeout set to non-expiring value after timeout fires",
      {
       "timeout": "long"
      }
     ]
    ],
    "xhr/xmlhttprequest-timeout-worker-simple.html": [
     [
-     "/xhr/xmlhttprequest-timeout-worker-simple.html",
+     "/xhr/xmlhttprequest-timeout-worker-simple.html?load fires normally",
+     {
+      "timeout": "long"
+     }
+    ],
+    [
+     "/xhr/xmlhttprequest-timeout-worker-simple.html?no time out scheduled, load fires normally",
+     {
+      "timeout": "long"
+     }
+    ],
+    [
+     "/xhr/xmlhttprequest-timeout-worker-simple.html?timeout hit before load",
      {
       "timeout": "long"
      }
     ]
    ],
    "xhr/xmlhttprequest-timeout-worker-synconworker.html": [
     [
-     "/xhr/xmlhttprequest-timeout-worker-synconworker.html",
+     "/xhr/xmlhttprequest-timeout-worker-synconworker.html?load fires normally",
+     {
+      "timeout": "long"
+     }
+    ],
+    [
+     "/xhr/xmlhttprequest-timeout-worker-synconworker.html?no time out scheduled, load fires normally",
+     {
+      "timeout": "long"
+     }
+    ],
+    [
+     "/xhr/xmlhttprequest-timeout-worker-synconworker.html?timeout hit before load",
      {
       "timeout": "long"
      }
     ]
    ],
    "xhr/xmlhttprequest-timeout-worker-twice.html": [
     [
-     "/xhr/xmlhttprequest-timeout-worker-twice.html",
+     "/xhr/xmlhttprequest-timeout-worker-twice.html?load fires normally with no timeout set, twice",
+     {
+      "timeout": "long"
+     }
+    ],
+    [
+     "/xhr/xmlhttprequest-timeout-worker-twice.html?load fires normally with same timeout set twice",
+     {
+      "timeout": "long"
+     }
+    ],
+    [
+     "/xhr/xmlhttprequest-timeout-worker-twice.html?timeout fires normally with same timeout set twice",
      {
       "timeout": "long"
      }
     ]
    ],
    "xhr/xmlhttprequest-unsent.htm": [
     [
      "/xhr/xmlhttprequest-unsent.htm",
@@ -657049,53 +657193,53 @@
    "9bae5a5cabd34c9e038fe8365f9496508079f84b",
    "support"
   ],
   "xhr/resources/xmlhttprequest-event-order.js": [
    "b6bb6cdf3c3e03c2794865dc625ac50757b6cede",
    "support"
   ],
   "xhr/resources/xmlhttprequest-timeout-aborted.js": [
-   "056d77c0136079f7f4a851c9dceedbdce4180e05",
+   "dd0b6457854a097349a5efd8304d54362910caf9",
    "support"
   ],
   "xhr/resources/xmlhttprequest-timeout-abortedonmain.js": [
-   "8dde8ef573e6edae12bacfa4abe504864e6ec396",
+   "97477f97f8f78ef61ff7315aa08a6714db3b5527",
    "support"
   ],
   "xhr/resources/xmlhttprequest-timeout-overrides.js": [
-   "6dc2173b2e6fbb6d086d2132545a2c77467eb4bb",
+   "be8e4a95503c588b0bc8fec42784220f0e84aaef",
    "support"
   ],
   "xhr/resources/xmlhttprequest-timeout-overridesexpires.js": [
-   "bf251fa80535f3d6d1eef0be3da6e5360e70ef1f",
+   "5151b5d5610ac3f2fd34994d0d77a1aae3e3f764",
    "support"
   ],
   "xhr/resources/xmlhttprequest-timeout-runner.js": [
    "151226a94fb2687821ab96c58c15997ba80c2ffc",
    "support"
   ],
   "xhr/resources/xmlhttprequest-timeout-simple.js": [
-   "989a8d4bae85fc1c252331aab6e5912eeaecf242",
+   "ed45c8197db6a4a4a68084322488b12662bd06a5",
    "support"
   ],
   "xhr/resources/xmlhttprequest-timeout-synconmain.js": [
-   "7ca3caf93677a7dabf075b8f6d5b2129e5d935b0",
+   "e77d25b9032aad745339a9a0762df19c7c893cce",
    "support"
   ],
   "xhr/resources/xmlhttprequest-timeout-synconworker.js": [
-   "09244668e184200057ef92e0af1c019a9b352495",
+   "a3b56c8297c7a43652a376265ea5b93ca6c62800",
    "support"
   ],
   "xhr/resources/xmlhttprequest-timeout-twice.js": [
-   "92b7157b9db91903f938030e8d387c7d1bb4d43d",
+   "31111b6d5e9a0a6dd997663bec8dad01a9297d28",
    "support"
   ],
   "xhr/resources/xmlhttprequest-timeout.js": [
-   "ac35f48d5ab08e393f932b22d037e0a582756c05",
+   "9375bab7f3bce57d9b9d71ba661775700d31369a",
    "support"
   ],
   "xhr/resources/zlib.py": [
    "49ed69de79398828af12837e8d87ed8d1a3a7a3e",
    "support"
   ],
   "xhr/response-data-arraybuffer.htm": [
    "7eaf7198ae274d85a76528bca9028d3d08844642",
@@ -657553,69 +657697,69 @@
    "aeff2af97c8a3d415c95115c728d0464c4ca04c7",
    "support"
   ],
   "xhr/xmlhttprequest-sync-not-hang-scriptloader.html": [
    "bbec1eddcd8be2a6f4988ca17f2e1ee8ac27954b",
    "testharness"
   ],
   "xhr/xmlhttprequest-timeout-aborted.html": [
-   "0af6d9cf6991d6888997c4037c0f97c53578751c",
+   "199899c0ab6ab801c68e0b5bf7a06b9b47141577",
    "testharness"
   ],
   "xhr/xmlhttprequest-timeout-abortedonmain.html": [
-   "70cba4980fdf7a6bbdd9cb178779a88ebb516f67",
+   "1dfe595a8b1ae8307b6122d4baea94f30a71e5fc",
    "testharness"
   ],
   "xhr/xmlhttprequest-timeout-overrides.html": [
-   "61a32bb1af09fe04cf067b43e333fb1aa08eb756",
+   "afebfe7bc45e0cafb86b1dcf1d288b9932ef4a38",
    "testharness"
   ],
   "xhr/xmlhttprequest-timeout-overridesexpires.html": [
-   "d29cbbbff532258e29ecd448f07dc171729b4bd9",
+   "b7085939761f2ada21cafafcf57e9c6dd2625b9b",
    "testharness"
   ],
   "xhr/xmlhttprequest-timeout-reused.html": [
    "48a98932ca33a0d2108425da8052e655e7564131",
    "testharness"
   ],
   "xhr/xmlhttprequest-timeout-simple.html": [
-   "982cf552945a08ae796d76cac726cfecb271f68f",
+   "ac8984ff44974aa2449c74e1e8ff8208c978e732",
    "testharness"
   ],
   "xhr/xmlhttprequest-timeout-synconmain.html": [
-   "79430a9d32797032c56093af2f18fc6cecb85d79",
+   "eb9ecb75a04539a29454abd84dd728495e6f057b",
    "testharness"
   ],
   "xhr/xmlhttprequest-timeout-twice.html": [
-   "1423fd5dbd48b7772ab4a572b8d02c5bbc1b739e",
+   "ce3b10b7372b766e185d62da436c1cbccc48af85",
    "testharness"
   ],
   "xhr/xmlhttprequest-timeout-worker-aborted.html": [
-   "c3a4581f7569504e2cdf3ff90a953c4d9be48c13",
+   "91fdab37d12d473062b06094a0a7c84bfa6c4e46",
    "testharness"
   ],
   "xhr/xmlhttprequest-timeout-worker-overrides.html": [
-   "bf77d859c7f170cdeca8311c5c6b52910dc1e5e1",
+   "b2ad95287bb481a2abb3bacf69fd2e4266acb4fe",
    "testharness"
   ],
   "xhr/xmlhttprequest-timeout-worker-overridesexpires.html": [
-   "180db52eacc8880d00af3f77cf4c99ed93ca5745",
+   "07a8656dbe388626c9de9269bdf66d1e05e3ec83",
    "testharness"
   ],
   "xhr/xmlhttprequest-timeout-worker-simple.html": [
-   "135691fbd9cf64653df29daf6815deb185fc529e",
+   "fa5c899579de0b3c61ceb3b1f5bb40f5c39f036a",
    "testharness"
   ],
   "xhr/xmlhttprequest-timeout-worker-synconworker.html": [
-   "423dcc93cc4ac823688c35648ffdafa72aa02b2a",
+   "187db12a65f9e10f638431fe7cfcab9f691d5f41",
    "testharness"
   ],
   "xhr/xmlhttprequest-timeout-worker-twice.html": [
-   "7e7107d4b6f1439f940d81c29eb67103ac717fc5",
+   "f9ad25a50b05996864b73f0c7fe5472933bdd17e",
    "testharness"
   ],
   "xhr/xmlhttprequest-unsent.htm": [
    "eb52d63eef971895f69f1b0151baa457250dd452",
    "testharness"
   ]
  },
  "url_base": "/",
--- a/testing/web-platform/tests/xhr/resources/xmlhttprequest-timeout-aborted.js
+++ b/testing/web-platform/tests/xhr/resources/xmlhttprequest-timeout-aborted.js
@@ -5,11 +5,11 @@ This sets up three requests:
 The first request will only be open()ed, not aborted, timeout will be TIME_REGULAR_TIMEOUT but will never triggered because send() isn't called.
 After TIME_NORMAL_LOAD, the test asserts that no load/error/timeout/abort events fired
 
 Second request will be aborted immediately after send(), test asserts that abort fired
 
 Third request is set up to call abort() after TIME_NORMAL_LOAD, but it also has a TIME_REGULAR_TIMEOUT timeout. Asserts that timeout fired.
 (abort() is called later and should not fire an abort event per spec. This is untested!)
 */
-runTestRequests([ new AbortedRequest(false),
-                  new AbortedRequest(true, -1),
-                  new AbortedRequest(true, TIME_NORMAL_LOAD) ]);
+runTestRequests([ ["AbortedRequest", false, "only open()ed, not aborted"],
+                  ["AbortedRequest", true, "aborted immediately after send()", -1],
+                  ["AbortedRequest", true, "call abort() after TIME_NORMAL_LOAD", TIME_NORMAL_LOAD] ]);
--- a/testing/web-platform/tests/xhr/resources/xmlhttprequest-timeout-abortedonmain.js
+++ b/testing/web-platform/tests/xhr/resources/xmlhttprequest-timeout-abortedonmain.js
@@ -1,8 +1,8 @@
 /*
 This test sets up two requests:
 one that gets abort()ed from a 0ms timeout (0ms will obviously be clamped to whatever the implementation's minimal value is), asserts abort event fires
 one that will be aborted after TIME_DELAY, (with a timeout at TIME_REGULAR_TIMEOUT) asserts abort event fires. Does not assert that the timeout event does *not* fire.
 */
 
-runTestRequests([ new AbortedRequest(true, 0),
-                  new AbortedRequest(true, TIME_DELAY) ]);
+runTestRequests([ ["AbortedRequest", true, "abort() from a 0ms timeout", 0],
+                  ["AbortedRequest", true, "aborted after TIME_DELAY", TIME_DELAY] ]);
--- a/testing/web-platform/tests/xhr/resources/xmlhttprequest-timeout-overrides.js
+++ b/testing/web-platform/tests/xhr/resources/xmlhttprequest-timeout-overrides.js
@@ -1,11 +1,12 @@
 if (this.document === undefined)
   importScripts("xmlhttprequest-timeout.js");
 /*
 Sets up three requests to a resource that will take 0.6 seconds to load:
 1) timeout first set to TIME_NORMAL_LOAD, after TIME_REGULAR_TIMEOUT timeout is set to 0, asserts load fires
 2) timeout first set to TIME_NORMAL_LOAD, after TIME_DELAY timeout is set to TIME_REGULAR_TIMEOUT, asserts load fires (race condition..?!?)
 3) timeout first set to 0, after TIME_REGULAR_TIMEOUT it is set to TIME_REGULAR_TIMEOUT * 10, asserts load fires
 */
-runTestRequests([ new RequestTracker(true, "timeout disabled after initially set", TIME_NORMAL_LOAD, TIME_REGULAR_TIMEOUT, 0),
-                  new RequestTracker(true, "timeout overrides load after a delay", TIME_NORMAL_LOAD, TIME_DELAY, TIME_REGULAR_TIMEOUT),
-                  new RequestTracker(true, "timeout enabled after initially disabled", 0, TIME_REGULAR_TIMEOUT, TIME_NORMAL_LOAD * 10) ]);
+
+runTestRequests([ ["RequestTracker", true, "timeout disabled after initially set", TIME_NORMAL_LOAD, TIME_REGULAR_TIMEOUT, 0],
+                  ["RequestTracker", true, "timeout overrides load after a delay", TIME_NORMAL_LOAD, TIME_DELAY, TIME_REGULAR_TIMEOUT],
+                  ["RequestTracker", true, "timeout enabled after initially disabled", 0, TIME_REGULAR_TIMEOUT, TIME_NORMAL_LOAD * 10] ]);
--- a/testing/web-platform/tests/xhr/resources/xmlhttprequest-timeout-overridesexpires.js
+++ b/testing/web-platform/tests/xhr/resources/xmlhttprequest-timeout-overridesexpires.js
@@ -2,11 +2,11 @@ if (this.document === undefined)
   importScripts("xmlhttprequest-timeout.js");
 /*
         Starts three requests:
         1) XHR to resource which will take a least TIME_XHR_LOAD ms with timeout initially set to TIME_NORMAL_LOAD ms. After TIME_LATE_TIMEOUT ms timeout is supposedly reset to TIME_DELAY ms,
            but the resource should have finished loading already. Asserts "load" fires.
         2) XHR with initial timeout set to TIME_NORMAL_LOAD, after TIME_REGULAR_TIMEOUT sets timeout to TIME_DELAY+100. Asserts "timeout" fires.
         3) XHR with initial timeout set to TIME_DELAY, after TIME_REGULAR_TIMEOUT sets timeout to 500ms. Asserts "timeout" fires (the change happens when timeout already fired and the request is done).
 */
-runTestRequests([ new RequestTracker(true, "timeout set to expiring value after load fires", TIME_NORMAL_LOAD, TIME_LATE_TIMEOUT, TIME_DELAY),
-                  new RequestTracker(true, "timeout set to expired value before load fires", TIME_NORMAL_LOAD, TIME_REGULAR_TIMEOUT, TIME_DELAY+100),
-                  new RequestTracker(true, "timeout set to non-expiring value after timeout fires", TIME_DELAY, TIME_REGULAR_TIMEOUT, 500) ]);
+runTestRequests([ ["RequestTracker", true, "timeout set to expiring value after load fires", TIME_NORMAL_LOAD, TIME_LATE_TIMEOUT, TIME_DELAY],
+                  ["RequestTracker", true, "timeout set to expired value before load fires", TIME_NORMAL_LOAD, TIME_REGULAR_TIMEOUT, TIME_DELAY+100],
+                  ["RequestTracker", true, "timeout set to non-expiring value after timeout fires", TIME_DELAY, TIME_REGULAR_TIMEOUT, 500] ]);
--- a/testing/web-platform/tests/xhr/resources/xmlhttprequest-timeout-simple.js
+++ b/testing/web-platform/tests/xhr/resources/xmlhttprequest-timeout-simple.js
@@ -1,6 +1,6 @@
 if (this.document === undefined)
   importScripts("xmlhttprequest-timeout.js");
 
-runTestRequests([ new RequestTracker(true, "no time out scheduled, load fires normally", 0),
-                  new RequestTracker(true, "load fires normally", TIME_NORMAL_LOAD),
-                  new RequestTracker(true, "timeout hit before load", TIME_REGULAR_TIMEOUT) ]);
+runTestRequests([ ["RequestTracker", true, "no time out scheduled, load fires normally", 0],
+                  ["RequestTracker", true, "load fires normally", TIME_NORMAL_LOAD],
+                  ["RequestTracker", true, "timeout hit before load", TIME_REGULAR_TIMEOUT] ]);
--- a/testing/web-platform/tests/xhr/resources/xmlhttprequest-timeout-synconmain.js
+++ b/testing/web-platform/tests/xhr/resources/xmlhttprequest-timeout-synconmain.js
@@ -1,2 +1,2 @@
-runTestRequests([ SyncRequestSettingTimeoutAfterOpen,
-                  SyncRequestSettingTimeoutBeforeOpen ]);
+runTestRequests([ ["SyncRequestSettingTimeoutAfterOpen", null, "timeout after open"],
+                  ["SyncRequestSettingTimeoutBeforeOpen", null, "timeout before open"] ]);
--- a/testing/web-platform/tests/xhr/resources/xmlhttprequest-timeout-synconworker.js
+++ b/testing/web-platform/tests/xhr/resources/xmlhttprequest-timeout-synconworker.js
@@ -1,11 +1,11 @@
 if (this.document === undefined){
   importScripts("xmlhttprequest-timeout.js");
 }else{
   throw "This test expects to be run as a Worker";
 }
 
 /* NOT TESTED: setting timeout before calling open( ... , false) in a worker context. The test code always calls open() first. */
 
-runTestRequests([ new RequestTracker(false, "no time out scheduled, load fires normally", 0),
-                  new RequestTracker(false, "load fires normally", TIME_NORMAL_LOAD),
-                  new RequestTracker(false, "timeout hit before load", TIME_REGULAR_TIMEOUT) ]);
+runTestRequests([ ["RequestTracker", false, "no time out scheduled, load fires normally", 0],
+                  ["RequestTracker", false, "load fires normally", TIME_NORMAL_LOAD],
+                  ["RequestTracker", false, "timeout hit before load", TIME_REGULAR_TIMEOUT] ]);
--- a/testing/web-platform/tests/xhr/resources/xmlhttprequest-timeout-twice.js
+++ b/testing/web-platform/tests/xhr/resources/xmlhttprequest-timeout-twice.js
@@ -1,6 +1,6 @@
 if (this.document === undefined)
   importScripts("xmlhttprequest-timeout.js");
 
-runTestRequests([ new RequestTracker(true, "load fires normally with no timeout set, twice", 0, TIME_REGULAR_TIMEOUT, 0),
-                  new RequestTracker(true, "load fires normally with same timeout set twice", TIME_NORMAL_LOAD, TIME_REGULAR_TIMEOUT, TIME_NORMAL_LOAD),
-                  new RequestTracker(true, "timeout fires normally with same timeout set twice", TIME_REGULAR_TIMEOUT, TIME_DELAY, TIME_REGULAR_TIMEOUT) ]);
+runTestRequests([ ["RequestTracker", true, "load fires normally with no timeout set, twice", 0, TIME_REGULAR_TIMEOUT, 0],
+                  ["RequestTracker", true, "load fires normally with same timeout set twice", TIME_NORMAL_LOAD, TIME_REGULAR_TIMEOUT, TIME_NORMAL_LOAD],
+                  ["RequestTracker", true, "timeout fires normally with same timeout set twice", TIME_REGULAR_TIMEOUT, TIME_DELAY, TIME_REGULAR_TIMEOUT] ]);
--- a/testing/web-platform/tests/xhr/resources/xmlhttprequest-timeout.js
+++ b/testing/web-platform/tests/xhr/resources/xmlhttprequest-timeout.js
@@ -170,17 +170,17 @@ RequestTracker.prototype = {
 };
 
 /**
  * Generate and track XMLHttpRequests which will have abort() called on.
  *
  * @param shouldAbort {Boolean} True if we should call abort at all.
  * @param abortDelay  {Number}  The time in ms to wait before calling abort().
  */
-function AbortedRequest(shouldAbort, abortDelay) {
+function AbortedRequest(shouldAbort, id, abortDelay) {
   this.shouldAbort = shouldAbort;
   this.abortDelay  = abortDelay;
   this.hasFired    = false;
 }
 AbortedRequest.prototype = {
   /**
    * Start the XMLHttpRequest!
    */
@@ -259,46 +259,48 @@ AbortedRequest.prototype = {
 
     var expectedEvent = (this.abortDelay >= TIME_REGULAR_TIMEOUT && !this.hasFired) ? "timeout" : "abort";
     this.hasFired = true;
     is(evt.type, expectedEvent, this.getMessage());
     TestCounter.testComplete();
   }
 };
 
-var SyncRequestSettingTimeoutAfterOpen = {
-  startXHR: function() {
+function SyncRequestSettingTimeoutAfterOpen() {
+  this.startXHR = function() {
     var pass = false;
     var req = new XMLHttpRequest();
     req.open("GET", STALLED_REQUEST_URL, false);
     try {
       req.timeout = TIME_SYNC_TIMEOUT;
     }
     catch (e) {
       pass = true;
     }
     ok(pass, "Synchronous XHR must not allow a timeout to be set - setting timeout must throw");
     TestCounter.testComplete();
-  }
+  };
+  return this;
 };
 
-var SyncRequestSettingTimeoutBeforeOpen = {
-  startXHR: function() {
+function SyncRequestSettingTimeoutBeforeOpen() {
+  this.startXHR = function() {
     var pass = false;
     var req = new XMLHttpRequest();
     req.timeout = TIME_SYNC_TIMEOUT;
     try {
       req.open("GET", STALLED_REQUEST_URL, false);
     }
     catch (e) {
       pass = true;
     }
     ok(pass, "Synchronous XHR must not allow a timeout to be set - calling open() after timeout is set must throw");
     TestCounter.testComplete();
   }
+  return this;
 };
 
 var TestRequests = [];
 
 // This code controls moving from one test to another.
 var TestCounter = {
   testComplete: function() {
     // Allow for the possibility there are other events coming.
@@ -315,11 +317,17 @@ var TestCounter = {
     }
     else {
       message("done");
     }
   }
 };
 
 function runTestRequests(testRequests) {
-    TestRequests = testRequests;
-    TestCounter.next();
+  if (location.search) {
+    testRequests = testRequests.filter(test => test[2] == decodeURIComponent(location.search.substr(1)));
+  }
+  TestRequests = testRequests.map(test => {
+    var constructor = test.shift();
+    return new self[constructor](...test)
+  });
+  TestCounter.next();
 }
--- a/testing/web-platform/tests/xhr/xmlhttprequest-timeout-aborted.html
+++ b/testing/web-platform/tests/xhr/xmlhttprequest-timeout-aborted.html
@@ -7,16 +7,19 @@
     <link rel="help" href="https://xhr.spec.whatwg.org/#the-timeout-attribute" data-tested-assertations="following-sibling::ol/li[2]" />
     <link rel="help" href="https://xhr.spec.whatwg.org/#abort-error" data-tested-assertations=".."/>
     <link rel="help" href="https://xhr.spec.whatwg.org/#event-xhr-abort" data-tested-assertations="../.." />
     <link rel="help" href="https://xhr.spec.whatwg.org/#timeout-error" data-tested-assertations=".."/>
     <link rel="help" href="https://xhr.spec.whatwg.org/#event-xhr-timeout" data-tested-assertations="../.." />
     <link rel="help" href="https://xhr.spec.whatwg.org/#request-error" data-tested-assertations="following::ol/li[9]"/>
     <link rel="help" href="https://xhr.spec.whatwg.org/#infrastructure-for-the-send()-method" data-tested-assertations="following-sibling::dl//code[contains(@title,'dom-XMLHttpRequest-timeout')]/.. following-sibling::dl//code[contains(@title,'dom-XMLHttpRequest-timeout')]/../following-sibling::dd following::dt[1] following::dd[1]" />
     <meta name=timeout content=long>
+    <meta name=variant content="?only open()ed, not aborted">
+    <meta name=variant content="?aborted immediately after send()">
+    <meta name=variant content="?call abort() after TIME_NORMAL_LOAD">
     <script src="/resources/testharness.js"></script>
     <script src="/resources/testharnessreport.js"></script>
     <script src="resources/xmlhttprequest-timeout.js"></script>
     <script src="resources/xmlhttprequest-timeout-runner.js"></script>
 </head>
 <body>
     <h1>Description</h1>
     <p>This test validates that the XHR2 timeout property behaves as expected in async cases in document (i.e. non-worker) context.</p>
--- a/testing/web-platform/tests/xhr/xmlhttprequest-timeout-abortedonmain.html
+++ b/testing/web-platform/tests/xhr/xmlhttprequest-timeout-abortedonmain.html
@@ -3,16 +3,18 @@
 <head>
     <meta charset="utf-8" />
     <title>XHR2 Timeout Property Tests</title>
     <link rel="help" href="https://xhr.spec.whatwg.org/#the-abort()-method" data-tested-assertations="following-sibling::ol/li[4] following-sibling::ol/li[4]/ol/li[5]" />
     <link rel="help" href="https://xhr.spec.whatwg.org/#abort-error" data-tested-assertations=".."/>
     <link rel="help" href="https://xhr.spec.whatwg.org/#event-xhr-abort" data-tested-assertations="../.." />
     <link rel="help" href="https://xhr.spec.whatwg.org/#request-error" data-tested-assertations="following::ol/li[9]"/>
     <meta name=timeout content=long>
+    <meta name=variant content="?abort() from a 0ms timeout">
+    <meta name=variant content="?aborted after TIME_DELAY">
     <script src="/resources/testharness.js"></script>
     <script src="/resources/testharnessreport.js"></script>
     <script src="resources/xmlhttprequest-timeout.js"></script>
     <script src="resources/xmlhttprequest-timeout-runner.js"></script>
 </head>
 <body>
     <h1>Description</h1>
     <p>This test validates that the XHR2 timeout property behaves as expected in async cases in document (i.e. non-worker) context.</p>
--- a/testing/web-platform/tests/xhr/xmlhttprequest-timeout-overrides.html
+++ b/testing/web-platform/tests/xhr/xmlhttprequest-timeout-overrides.html
@@ -3,16 +3,19 @@
 <head>
     <meta charset="utf-8" />
     <title>XHR2 Timeout Property Tests</title>
     <link rel="help" href="https://xhr.spec.whatwg.org/#the-timeout-attribute" data-tested-assertations="following::ol[1]/li[2]" />
     <link rel="help" href="https://xhr.spec.whatwg.org/#handler-xhr-ontimeout" data-tested-assertations="../.."/>
     <link rel="help" href="https://xhr.spec.whatwg.org/#timeout-error" data-tested-assertations=".."/>
     <link rel="help" href="https://xhr.spec.whatwg.org/#request-error" data-tested-assertations="following::ol[1]/li[9]"/>
     <meta name=timeout content=long>
+    <meta name=variant content="?timeout disabled after initially set">
+    <meta name=variant content="?timeout overrides load after a delay">
+    <meta name=variant content="?timeout enabled after initially disabled">
     <script src="/resources/testharness.js"></script>
     <script src="/resources/testharnessreport.js"></script>
     <script src="resources/xmlhttprequest-timeout.js"></script>
     <script src="resources/xmlhttprequest-timeout-runner.js"></script>
 </head>
 <body>
     <h1>Description</h1>
     <p>This test validates that the XHR2 timeout property behaves as expected in async cases in document (i.e. non-worker) context.</p>
--- a/testing/web-platform/tests/xhr/xmlhttprequest-timeout-overridesexpires.html
+++ b/testing/web-platform/tests/xhr/xmlhttprequest-timeout-overridesexpires.html
@@ -4,16 +4,19 @@
     <meta charset="utf-8" />
     <title>XHR2 Timeout Property Tests</title>
     <link rel="help" href="https://xhr.spec.whatwg.org/#the-timeout-attribute" data-tested-assertations="following::ol[1]/li[2]" />
     <link rel="help" href="https://xhr.spec.whatwg.org/#handler-xhr-ontimeout" data-tested-assertations="../.."/>
     <link rel="help" href="https://xhr.spec.whatwg.org/#timeout-error" data-tested-assertations=".."/>
     <link rel="help" href="https://xhr.spec.whatwg.org/#request-error" data-tested-assertations="following::ol[1]/li[9]"/>
     <link rel="help" href="https://xhr.spec.whatwg.org/#infrastructure-for-the-send()-method" data-tested-assertations="following-sibling::dl//code[contains(@title,'dom-XMLHttpRequest-timeout')]/.. following-sibling::dl//code[contains(@title,'dom-XMLHttpRequest-timeout')]/../following-sibling::dd following::dt[1] following::dd[1]" />
     <meta name=timeout content=long>
+    <meta name=variant content="?timeout set to expiring value after load fires">
+    <meta name=variant content="?timeout set to expired value before load fires">
+    <meta name=variant content="?timeout set to non-expiring value after timeout fires">
     <script src="/resources/testharness.js"></script>
     <script src="/resources/testharnessreport.js"></script>
     <script src="resources/xmlhttprequest-timeout.js"></script>
     <script src="resources/xmlhttprequest-timeout-runner.js"></script>
 </head>
 <body>
     <h1>Description</h1>
     <p>This test validates that the XHR2 timeout property behaves as expected in async cases in document (i.e. non-worker) context.</p>
--- a/testing/web-platform/tests/xhr/xmlhttprequest-timeout-simple.html
+++ b/testing/web-platform/tests/xhr/xmlhttprequest-timeout-simple.html
@@ -4,16 +4,19 @@
     <meta charset="utf-8" />
     <title>XHR2 Timeout Property Tests</title>
     <link rel="help" href="https://xhr.spec.whatwg.org/#the-timeout-attribute" data-tested-assertations="following::ol[1]/li[2]" />
     <link rel="help" href="https://xhr.spec.whatwg.org/#handler-xhr-ontimeout" data-tested-assertations="../.."/>
     <link rel="help" href="https://xhr.spec.whatwg.org/#timeout-error" data-tested-assertations=".."/>
     <link rel="help" href="https://xhr.spec.whatwg.org/#request-error" data-tested-assertations="following::ol[1]/li[9]"/>
     <link rel="help" href="https://xhr.spec.whatwg.org/#infrastructure-for-the-send()-method" data-tested-assertations="following-sibling::dl//code[contains(@title,'dom-XMLHttpRequest-timeout')]/.. following-sibling::dl//code[contains(@title,'dom-XMLHttpRequest-timeout')]/../following-sibling::dd following::dt[1] following::dd[1]" />
     <meta name=timeout content=long>
+    <meta name=variant content="?no time out scheduled, load fires normally">
+    <meta name=variant content="?load fires normally">
+    <meta name=variant content="?timeout hit before load">
     <script src="/resources/testharness.js"></script>
     <script src="/resources/testharnessreport.js"></script>
     <script src="resources/xmlhttprequest-timeout.js"></script>
     <script src="resources/xmlhttprequest-timeout-runner.js"></script>
 </head>
 <body>
     <h1>Description</h1>
     <p>This test validates that the XHR2 timeout property behaves as expected in async cases in document (i.e. non-worker) context.</p>
--- a/testing/web-platform/tests/xhr/xmlhttprequest-timeout-synconmain.html
+++ b/testing/web-platform/tests/xhr/xmlhttprequest-timeout-synconmain.html
@@ -1,16 +1,18 @@
  <!DOCTYPE html>
 <html>
 <head>
     <meta charset="utf-8" />
     <title>XHR2 Timeout Property Tests</title>
     <link rel="help" href="https://xhr.spec.whatwg.org/#the-timeout-attribute" data-tested-assertations="following::ol[1]/li[1]" />
     <link rel="help" href="https://xhr.spec.whatwg.org/#the-open()-method" data-tested-assertations="following::ol[1]/li[10]" />
     <meta name=timeout content=long>
+    <meta name=variant content="?timeout after open">
+    <meta name=variant content="?timeout before open">
     <script src="/resources/testharness.js"></script>
     <script src="/resources/testharnessreport.js"></script>
     <script src="resources/xmlhttprequest-timeout.js"></script>
     <script src="resources/xmlhttprequest-timeout-runner.js"></script>
 </head>
 <body>
     <h1>Description</h1>
     <p>This test validates that the XHR2 timeout property behaves as expected in async cases in document (i.e. non-worker) context.</p>
--- a/testing/web-platform/tests/xhr/xmlhttprequest-timeout-twice.html
+++ b/testing/web-platform/tests/xhr/xmlhttprequest-timeout-twice.html
@@ -5,16 +5,19 @@
     <title>XHR2 Timeout Property Tests</title>
     <link rel="help" href="https://xhr.spec.whatwg.org/#timeout-error" />
     <link rel="help" href="https://xhr.spec.whatwg.org/#the-timeout-attribute" data-tested-assertations="following::ol[1]/li[2]" />
     <link rel="help" href="https://xhr.spec.whatwg.org/#handler-xhr-ontimeout" data-tested-assertations="../.."/>
     <link rel="help" href="https://xhr.spec.whatwg.org/#timeout-error" data-tested-assertations=".."/>
     <link rel="help" href="https://xhr.spec.whatwg.org/#request-error" data-tested-assertations="following::ol[1]/li[9]"/>
     <link rel="help" href="https://xhr.spec.whatwg.org/#infrastructure-for-the-send()-method" data-tested-assertations="following-sibling::dl//code[contains(@title,'dom-XMLHttpRequest-timeout')]/.. following-sibling::dl//code[contains(@title,'dom-XMLHttpRequest-timeout')]/../following-sibling::dd following::dt[1] following::dd[1]" />
     <meta name=timeout content=long>
+    <meta name=variant content="?load fires normally with no timeout set, twice">
+    <meta name=variant content="?load fires normally with same timeout set twice">
+    <meta name=variant content="?timeout fires normally with same timeout set twice">
     <script src="/resources/testharness.js"></script>
     <script src="/resources/testharnessreport.js"></script>
     <script src="resources/xmlhttprequest-timeout.js"></script>
     <script src="resources/xmlhttprequest-timeout-runner.js"></script>
 </head>
 <body>
     <h1>Description</h1>
     <p>This test validates that the XHR2 timeout property behaves as expected in async cases in document (i.e. non-worker) context.</p>
--- a/testing/web-platform/tests/xhr/xmlhttprequest-timeout-worker-aborted.html
+++ b/testing/web-platform/tests/xhr/xmlhttprequest-timeout-worker-aborted.html
@@ -7,16 +7,19 @@
     <link rel="help" href="https://xhr.spec.whatwg.org/#the-timeout-attribute" data-tested-assertations="following-sibling::ol/li[2]" />
     <link rel="help" href="https://xhr.spec.whatwg.org/#abort-error" data-tested-assertations=".."/>
     <link rel="help" href="https://xhr.spec.whatwg.org/#event-xhr-abort" data-tested-assertations="../.." />
     <link rel="help" href="https://xhr.spec.whatwg.org/#timeout-error" data-tested-assertations=".."/>
     <link rel="help" href="https://xhr.spec.whatwg.org/#event-xhr-timeout" data-tested-assertations="../.." />
     <link rel="help" href="https://xhr.spec.whatwg.org/#request-error" data-tested-assertations="following::ol/li[9]"/>
     <link rel="help" href="https://xhr.spec.whatwg.org/#infrastructure-for-the-send()-method" data-tested-assertations="following-sibling::dl//code[contains(@title,'dom-XMLHttpRequest-timeout')]/.. following-sibling::dl//code[contains(@title,'dom-XMLHttpRequest-timeout')]/../following-sibling::dd following::dt[1] following::dd[1]" />
     <meta name=timeout content=long>
+    <meta name=variant content="?only open()ed, not aborted">
+    <meta name=variant content="?aborted immediately after send()">
+    <meta name=variant content="?call abort() after TIME_NORMAL_LOAD">
     <script src="/resources/testharness.js"></script>
     <script src="/resources/testharnessreport.js"></script>
     <script src="resources/xmlhttprequest-timeout-runner.js"></script>
 </head>
 <body>
     <h1>Description</h1>
     <p>This test validates that the XHR2 timeout property behaves as expected in in a worker context.</p>
     <div id="log"></div>
--- a/testing/web-platform/tests/xhr/xmlhttprequest-timeout-worker-overrides.html
+++ b/testing/web-platform/tests/xhr/xmlhttprequest-timeout-worker-overrides.html
@@ -3,22 +3,25 @@
 <head>
     <meta charset="utf-8" />
     <title>XHR2 Timeout Property Tests in Worker</title>
     <link rel="help" href="https://xhr.spec.whatwg.org/#the-timeout-attribute" data-tested-assertations="following::ol[1]/li[2]" />
     <link rel="help" href="https://xhr.spec.whatwg.org/#handler-xhr-ontimeout" data-tested-assertations="../.."/>
     <link rel="help" href="https://xhr.spec.whatwg.org/#timeout-error" data-tested-assertations=".."/>
     <link rel="help" href="https://xhr.spec.whatwg.org/#request-error" data-tested-assertations="following::ol[1]/li[9]"/>
     <meta name=timeout content=long>
+    <meta name=variant content="?timeout disabled after initially set">
+    <meta name=variant content="?timeout overrides load after a delay">
+    <meta name=variant content="?timeout enabled after initially disabled">
     <script src="/resources/testharness.js"></script>
     <script src="/resources/testharnessreport.js"></script>
     <script src="resources/xmlhttprequest-timeout-runner.js"></script>
 </head>
 <body>
     <h1>Description</h1>
     <p>This test validates that the XHR2 timeout property behaves as expected in in a worker context.</p>
     <div id="log"></div>
     <script type="text/javascript">
-        var worker = new Worker("resources/xmlhttprequest-timeout-overrides.js");
+        var worker = new Worker("resources/xmlhttprequest-timeout-overrides.js" + location.search);
         worker.addEventListener("message", testResultCallbackHandler);
     </script>
 </body>
 </html>
--- a/testing/web-platform/tests/xhr/xmlhttprequest-timeout-worker-overridesexpires.html
+++ b/testing/web-platform/tests/xhr/xmlhttprequest-timeout-worker-overridesexpires.html
@@ -4,16 +4,19 @@
     <meta charset="utf-8" />
     <title>XHR2 Timeout Property Tests in Worker</title>
     <link rel="help" href="https://xhr.spec.whatwg.org/#the-timeout-attribute" data-tested-assertations="following::ol[1]/li[2]" />
     <link rel="help" href="https://xhr.spec.whatwg.org/#handler-xhr-ontimeout" data-tested-assertations="../.."/>
     <link rel="help" href="https://xhr.spec.whatwg.org/#timeout-error" data-tested-assertations=".."/>
     <link rel="help" href="https://xhr.spec.whatwg.org/#request-error" data-tested-assertations="following::ol[1]/li[9]"/>
     <link rel="help" href="https://xhr.spec.whatwg.org/#infrastructure-for-the-send()-method" data-tested-assertations="following-sibling::dl//code[contains(@title,'dom-XMLHttpRequest-timeout')]/.. following-sibling::dl//code[contains(@title,'dom-XMLHttpRequest-timeout')]/../following-sibling::dd following::dt[1] following::dd[1]" />
     <meta name=timeout content=long>
+    <meta name=variant content="?timeout set to expiring value after load fires">
+    <meta name=variant content="?timeout set to expired value before load fires">
+    <meta name=variant content="?timeout set to non-expiring value after timeout fires">
     <script src="/resources/testharness.js"></script>
     <script src="/resources/testharnessreport.js"></script>
     <script src="resources/xmlhttprequest-timeout-runner.js"></script>
 </head>
 <body>
     <h1>Description</h1>
     <p>This test validates that the XHR2 timeout property behaves as expected in in a worker context.</p>
     <div id="log"></div>
--- a/testing/web-platform/tests/xhr/xmlhttprequest-timeout-worker-simple.html
+++ b/testing/web-platform/tests/xhr/xmlhttprequest-timeout-worker-simple.html
@@ -4,23 +4,26 @@
     <meta charset="utf-8" />
     <title>XHR2 Timeout Property Tests in Worker</title>
     <link rel="help" href="https://xhr.spec.whatwg.org/#the-timeout-attribute" data-tested-assertations="following::ol[1]/li[2]" />
     <link rel="help" href="https://xhr.spec.whatwg.org/#handler-xhr-ontimeout" data-tested-assertations="../.."/>
     <link rel="help" href="https://xhr.spec.whatwg.org/#timeout-error" data-tested-assertations=".."/>
     <link rel="help" href="https://xhr.spec.whatwg.org/#request-error" data-tested-assertations="following::ol[1]/li[9]"/>
     <link rel="help" href="https://xhr.spec.whatwg.org/#infrastructure-for-the-send()-method" data-tested-assertations="following-sibling::dl//code[contains(@title,'dom-XMLHttpRequest-timeout')]/.. following-sibling::dl//code[contains(@title,'dom-XMLHttpRequest-timeout')]/../following-sibling::dd following::dt[1] following::dd[1]" />
     <meta name=timeout content=long>
+    <meta name=variant content="?no time out scheduled, load fires normally">
+    <meta name=variant content="?load fires normally">
+    <meta name=variant content="?timeout hit before load">
     <script src="/resources/testharness.js"></script>
     <script src="/resources/testharnessreport.js"></script>
     <script src="resources/xmlhttprequest-timeout-runner.js"></script>
 </head>
 <body>
     <h1>Description</h1>
     <p>This test validates that the XHR2 timeout property behaves as expected in in a worker context.</p>
     <div id="log"></div>
     <script type="text/javascript">
-        var worker = new Worker("resources/xmlhttprequest-timeout-simple.js");
+        var worker = new Worker("resources/xmlhttprequest-timeout-simple.js" + location.search);
         worker.onmessage = testResultCallbackHandler;
     </script>
 </body>
 </html>
 
--- a/testing/web-platform/tests/xhr/xmlhttprequest-timeout-worker-synconworker.html
+++ b/testing/web-platform/tests/xhr/xmlhttprequest-timeout-worker-synconworker.html
@@ -4,22 +4,25 @@
     <meta charset="utf-8" />
     <title>XHR2 Timeout Property Tests in Worker</title>
     <link rel="help" href="https://xhr.spec.whatwg.org/#the-timeout-attribute" data-tested-assertations="following::ol[1]/li[2]" />
     <link rel="help" href="https://xhr.spec.whatwg.org/#handler-xhr-ontimeout" data-tested-assertations="../.."/>
     <link rel="help" href="https://xhr.spec.whatwg.org/#timeout-error" data-tested-assertations=".."/>
     <link rel="help" href="https://xhr.spec.whatwg.org/#request-error" data-tested-assertations="following::ol[1]/li[9]"/>
     <link rel="help" href="https://xhr.spec.whatwg.org/#infrastructure-for-the-send()-method" data-tested-assertations="following-sibling::dl//code[contains(@title,'dom-XMLHttpRequest-timeout')]/.. following-sibling::dl//code[contains(@title,'dom-XMLHttpRequest-timeout')]/../following-sibling::dd following::dt[1] following::dd[1]" />
     <meta name=timeout content=long>
+    <meta name=variant content="?no time out scheduled, load fires normally">
+    <meta name=variant content="?load fires normally">
+    <meta name=variant content="?timeout hit before load">
     <script src="/resources/testharness.js"></script>
     <script src="/resources/testharnessreport.js"></script>
     <script src="resources/xmlhttprequest-timeout-runner.js"></script>
 </head>
 <body>
     <h1>Description</h1>
     <p>This test validates that the XHR2 timeout property behaves as expected in in a worker context.</p>
     <div id="log"></div>
     <script type="text/javascript">
-        var worker = new Worker("resources/xmlhttprequest-timeout-synconworker.js");
+        var worker = new Worker("resources/xmlhttprequest-timeout-synconworker.js" + location.search);
         worker.addEventListener("message", testResultCallbackHandler);
     </script>
 </body>
 </html>
--- a/testing/web-platform/tests/xhr/xmlhttprequest-timeout-worker-twice.html
+++ b/testing/web-platform/tests/xhr/xmlhttprequest-timeout-worker-twice.html
@@ -4,23 +4,26 @@
     <meta charset="utf-8" />
     <title>XHR2 Timeout Property Tests in Worker</title>
     <link rel="help" href="https://xhr.spec.whatwg.org/#the-timeout-attribute" data-tested-assertations="following::ol[1]/li[2]" />
     <link rel="help" href="https://xhr.spec.whatwg.org/#handler-xhr-ontimeout" data-tested-assertations="../.."/>
     <link rel="help" href="https://xhr.spec.whatwg.org/#timeout-error" data-tested-assertations=".."/>
     <link rel="help" href="https://xhr.spec.whatwg.org/#request-error" data-tested-assertations="following::ol[1]/li[9]"/>
     <link rel="help" href="https://xhr.spec.whatwg.org/#infrastructure-for-the-send()-method" data-tested-assertations="following-sibling::dl//code[contains(@title,'dom-XMLHttpRequest-timeout')]/.. following-sibling::dl//code[contains(@title,'dom-XMLHttpRequest-timeout')]/../following-sibling::dd following::dt[1] following::dd[1]" />
     <meta name=timeout content=long>
+    <meta name=variant content="?load fires normally with no timeout set, twice">
+    <meta name=variant content="?load fires normally with same timeout set twice">
+    <meta name=variant content="?timeout fires normally with same timeout set twice">
     <script src="/resources/testharness.js"></script>
     <script src="/resources/testharnessreport.js"></script>
     <script src="resources/xmlhttprequest-timeout-runner.js"></script>
 </head>
 <body>
     <h1>Description</h1>
     <p>This test validates that the XHR2 timeout property behaves as expected in in a worker context.</p>
     <div id="log"></div>
     <script type="text/javascript">
-        var worker = new Worker("resources/xmlhttprequest-timeout-twice.js");
+        var worker = new Worker("resources/xmlhttprequest-timeout-twice.js" + location.search);
         worker.addEventListener("message", testResultCallbackHandler);
     </script>
 </body>
 </html>